Analysis on JDK-8022321 java/lang/ref/OOMEInReferenceHandler.java fails intermittently
Peter Levart
peter.levart at gmail.com
Wed Jan 29 13:09:45 UTC 2014
On 01/28/2014 04:46 PM, Alan Bateman wrote:
> On 28/01/2014 08:44, Peter Levart wrote:
>>
>> Yes, I tried that too and it results in even more unsafe casts.
>>
>> It's odd yes, since the compile-time error is not present when
>> building via OpenJDK build system make files (using "make images" in
>> top directory for example) but only if I compile the class from
>> command line (using javac directly) or from IDEA. I use JDK 8 ea-b121
>> in all cases as a build JDK. Are there any special options passed to
>> javac for compiling those classes in JDK build system that allow such
>> code?
>>
> jdk/make/Setup.gmk has the -Xlint options that are used in the build
> but I suspect it more than that all the classes in java/lang/ref are
> compiled together.
>
> -Alan
That's right. If I add the source for ReferenceQueue.java into a
directory where Reference.java resides and then compile with:
javac -d /tmp Reference.java
...then Reference as well as ReferenceQueue gets compiled and there's no
error. If there is sole Reference.java in the directory, a compile time
error is emitted. I checked the source of ReferenceQueue.java in JDK 8
ea-b121 (the JDK used for compiling) and it only differs in copyright
year from the source in jdk9-dev. So there seems to be inconsistency in
javac's handling of types that are read from .class vs. .java files.
I'll try to create a reproducer example and post it to compiler-dev.
Since I don't know what should be the correct behaviour of javac, I can
leave the Reference.java changes as proposed since it compiles in both
cases. Or should I revert the change to declaration of local variable 'q' ?
Regards, Peter
More information about the core-libs-dev
mailing list