Javac generates duplicate name_and_type constant pool entry for class BinaryOpValueExp.java (original) (raw)

Fredrik Öhrström fredrik.ohrstrom at oracle.com
Fri Sep 14 03:28:57 PDT 2012


but >>only<< if StringValueExp.java is put on the same command line. If StringValueExp.java is left out from the comman dline, the generated class file for BinaryOpValueExp.java is fine.

Erik Joelsson found this bug while comparing the build results between the old build and the new build.

How to reproduce, first build a full jdk using the old buildsystem, then: cd jdk/make/javax/management /bin/java -Xbootclasspath/p:../../../../build/linux-amd64/langtools/dist/bootstrap/lib/javac.jar -jar ../../../../build/linux-amd64/langtools/dist/bootstrap/lib/javac.jar -Xlint:-path -source 7 -target 7 -encoding ascii -Xbootclasspath:../../../../build/linux-amd64/classes -sourcepath ../../../src/closed/solaris/classes:../../../src/closed/share/classes:../../../../build/linux-amd64/gensrc:../../../src/solaris/classes:../../../src/share/classes -d /tmp/classes ../../../src/share/classes/javax/management/BinaryOpValueExp.java

A correct BinaryOpValueExp.class can be found below /tmp/classes

/bin/java -Xbootclasspath/p:../../../../build/linux-amd64/langtools/dist/bootstrap/lib/javac.jar -jar ../../../../build/linux-amd64/langtools/dist/bootstrap/lib/javac.jar -Xlint:-path -source 7 -target 7 -encoding ascii -Xbootclasspath:../../../../build/linux-amd64/classes -sourcepath ../../../src/closed/solaris/classes:../../../src/closed/share/classes:../../../../build/linux-amd64/gensrc:../../../src/solaris/classes:../../../src/share/classes -d /tmp/classes2 ../../../src/share/classes/javax/management/BinaryOpValueExp.java ../../../src/share/classes/javax/management/StringValueExp.java

A BinaryOpValueExp.class with duplicate "":(Ljava/lang/String;)V is created below /tmp/classes2

Javaps of the good and bad BinaryOpValueExp.class are attached.

Erik has found the commit in javac that causes this behaviour:

7181320: javac NullPointerException for switch labels with cast to String expressions Reviewed-by: mcimadamore

--- a/src/share/classes/com/sun/tools/javac/code/Types.java Fri Aug 17 17:30:03 2012 -0700 +++ b/src/share/classes/com/sun/tools/javac/code/Types.java Mon Aug 20 21:24:10 2012 +0530 @@ -1589,9 +1589,16 @@ public class Types { * type parameters in t are deleted. */ public Type erasure(Type t) {

//Fredrik -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: binop.bad Url: http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20120914/b71b4de1/binop.bad -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: binop.good Url: http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20120914/b71b4de1/binop.good



More information about the compiler-dev mailing list