RFR(L): 8132547: [AOT] support invokedynamic instructions
igor.veresov at oracle.com
Fri Sep 22 21:12:57 UTC 2017
Looks good to me.
> On Sep 11, 2017, at 7:21 PM, Dean Long <dean.long at oracle.com> wrote:
> 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.
More information about the hotspot-compiler-dev