8266466: [lworld] Enhance javac to consume unified primitive class files generated under the option -XDunifiedValRefClass #421
Post the integration of https://bugs.openjdk.java.net/browse/JDK-8244227,
This is no longer possible under the unified class file generation scheme we are
Likewise when we see QFoo; we have an ambiguity whether this is the primitive class
Completing class Foo every time we see a type descriptor LFoo; or QFoo; is wasteful
I suggest the review be started with Type.java in ClassType#Flavor enumeration to gather
Please note, while this patch puts together the infrastructure and layes the groundwork
As of now javac knows only about primitive class and their reference projections and
The text was updated successfully, but these errors were encountered:
@sadayapalam This change now passes all automated pre-integration checks.
After integration, the commit message for the final commit will be:
At the time when this comment was updated there had been 1 new commit pushed to the
Please see this link for an up-to-date comparison between the source branch of this pull request and the
You are right that this is not the end of the story. The implementation deals with just a single bit ACC_PRIMITIVE and weaves that into the type system - so as of this patch, we can have plain old L_TypeOf_L, L_Typeof_Q and Q_TypeOf_Q as fully "evolved forms" and X_Typeof_X, Q_Typeof_X and L_Typeof_X as the "larval forms".
BUT, the ambiguity you right about i.e "In particular, when it comes to LFoo; ... (is it a regular reference Foo or a projection Foo.ref of some primitive type?)" is handled already in this patch. The single bit ACC_PRIMITIVE is enough for this.
See com.sun.tools.javac.code.Type.ClassType#isReferenceProjection which disambiguates L_TypeOf_X into one of L_TypeOf_Q or L_TypeOf_L.
I plan to take up work on JDK-8244231 right after this, at which point, a larval form may see other evolutions.
@sadayapalam Since your change was applied there has been 1 commit pushed to the
Your commit was automatically rebased without conflicts.
Pushed as commit f9806a4.