[10] RFR(L): 8132547: [AOT] support invokedynamic instructions

Dean Long dean.long at oracle.com
Tue Sep 12 02:21:36 UTC 2017


https://bugs.openjdk.java.net/browse/JDK-8132547

http://cr.openjdk.java.net/~dlong/8132547/

This enhancement is a first step in supporting invokedynamic 
instructions in AOT.  Previously, when we saw an invokedynamic 
instruction, or any anonymous class, we would generate code to bail out 
and deoptimize.  With this changeset we go a little further and call 
into the runtime to resolve the dynamic constant pool entry, running the 
bootstrap method, and returning the adapter method and appendix object.  
Like class initialization in AOT, we only do this the first time 
through.  Because AOT double-checks classes using fingerprints and 
symbolic names, special care was required to handle anonymous class 
names.  The solution I chose was to name anonymous types with aliases 
based on their constant pool location ("adapter<classid:cpi>" and 
appendix<classid:cpi>").

Future work is needed to AOT-compile the anonymous classes and/or inline 
through them, so this change is not expected to affect AOT performance.  
In my tests I was not able to measure any difference.

Upstream Graal changes have already been pushed.  I broke the JVMCI and 
hotspot changes into separate webrevs.

dl



More information about the hotspot-compiler-dev mailing list