hg: valhalla/valhalla: 8222711: [lworld] Initial skeletal implementation of inline class instance construction via <init>
John Rose
john.r.rose at oracle.com
Sat Apr 20 18:48:09 UTC 2019
I've been wanting to do this for some time. I'll take a crack at it.
> On Apr 20, 2019, at 8:19 AM, Srikanth <srikanth.adayapalam at oracle.com> wrote:
>
> JVM folk:
>
> I have raised https://bugs.openjdk.java.net/browse/JDK-8222787 ([lworld] JVM should be enhanced to work with static <init> factory methods for inline types) in connection with this.
>
> I have pushed an initial implementation for JDK-8222711 that alters the way code is generated by javac for inline classes. Rather than emit synthetic $makeValue$ methods that embody the construction, now with the option -XDstaticInitValueFactory emits source level constructors into class file level static factories that
>
> - have the name <init>
> - are static methods
> - have a return type that matches the class
> - are invoked via invokestatic at the new V() construction site.
>
> All 4 are potential irritants to the JVM and need to be addressed before JDK-8222711 can be tested at all.
>
> I have eyeballed the code generated by this changeset and it passes muster, but real testing is possible only after the VM stops choking with:
>
> Error: LinkageError occurred while loading main class X
> java.lang.ClassFormatError: Method "<init>" in class X has illegal signature "(Ljava/lang/String;)QX;"
>
> Thanks for looking into this.
> Srikanth
>
>
> On 20/04/19 8:35 PM, srikanth.adayapalam at oracle.com wrote:
>> Changeset: cc473d393abf
>> Author: sadayapalam
>> Date: 2019-04-20 20:35 +0530
>> URL: http://hg.openjdk.java.net/valhalla/valhalla/rev/cc473d393abf
>>
>> 8222711: [lworld] Initial skeletal implementation of inline class instance construction via <init>
>>
>> ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java
>> ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java
>> ! src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/TransValues.java
>> ! src/jdk.jdeps/share/classes/com/sun/tools/javap/ClassWriter.java
>>
>
More information about the valhalla-dev
mailing list