[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