ConstantDynamic bootstrap specifier resolution
john.r.rose at oracle.com
Thu Aug 31 21:12:55 UTC 2017
On Aug 31, 2017, at 1:36 PM, Karen Kinnear <karen.kinnear at oracle.com> wrote:
> So today we re-resolve the callsite specifier for EACH BCI.
Yes, for invokedynamic. In order to make this work we have to allocate
a distinct CP cache cell for each individual indy instruction. This is
done in the Rewriter, and uses all 4 of the operand fields of indy.
(None of this is true for condy.)
> I presume that an invoke dynamic that has a static argument which is a constant dynamic will use the shared
> resolved bootstrap specifier for that constant dynamic, just as other static arguments that reference
> constant pool entries such as String, MethodType, MethodHandle, Class use shared resolution based on constant-pool entry.
Yes. That is a basic behavior of the CP. To do anything else would
require explicit language in the spec. and special code in the JVM,
as for indy.
More information about the valhalla-spec-observers