ConstantDynamic bootstrap specifier resolution

John Rose john.r.rose at
Thu Aug 31 21:12:55 UTC 2017

On Aug 31, 2017, at 1:36 PM, Karen Kinnear <karen.kinnear at> 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.

— John

More information about the valhalla-spec-observers mailing list