[lworld] RFR: 8237072: [lworld] Add support for denoting and deriving the reference projection

Maurizio Cimadamore mcimadamore at openjdk.java.net
Fri May 1 11:24:04 UTC 2020


On Fri, 1 May 2020 10:53:14 GMT, Srikanth Adayapalam <sadayapalam at openjdk.org> wrote:

>> src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java line 2605:
>> 
>>> 2604:         readClassFileInternal(c);
>>> 2605:         if (c.isValue()) {
>>> 2606:             /* http://cr.openjdk.java.net/~briangoetz/valhalla/sov/04-translation.html
>> 
>> This approach leads to very compact code - but in javac-land it's a bit odd that we have to prune away members at this
>> late stage. I wonder if some of the pruning could happen earlier (e.g. in TransValues?)
>
> Actually, this code is trying to remove V$ref.class from its owner (the package symbol). The class finder would have
> from the class path found V.class and V$ref.class and added them to the known classes. When V.class is completed and we
> find that it is a value class, V.class has a "wrong" super type from javac pov. It needs to read V$ref.class and pick
> up the "real" super type from there. In that process it needs to remove V$ref.class from the package owner as it not a
> top level class at all (very similar to what happens for nested classes)

Actually I meant to comment on ClassWriter and clicked on the wrong thing!

-------------

PR: https://git.openjdk.java.net/valhalla/pull/32


More information about the valhalla-dev mailing list