constant-dynamic specification, updated

Brian Goetz brian.goetz at
Fri Jul 7 00:13:24 UTC 2017

>> One thing that readers will wonder (doesn't belong in JVMS, but belongs somewhere) is what suggested practice are for using invocation name / constant name.  I don't see the name widely used in indy, but I could imagine it more widely used in condy, because constants often have names (like Pi.)  For a BSM that effectively has a single String parameter, I think we'll get more compact classfiles if we use the name and a shared no-arg BootstrapMethods entry, but is that a good reason?
> Combined with one other reason it is good enough.  The other reason is that invokedynamic
> BSMs already take a method name.  It is helpful to keep indy and condy BSMs similar, where
> possible.  The similarity allows similar parts to be factored together, in both spec. and
> implementation.  The similarity, in brief, condy:indy :: Fieldref:Methodref.  In all cases,
> you have a NameAndType (field or method) accompanied by either a Class or a BSM.

I was asking a slightly different question; not “why should condy support an invocation name”, but, “given that condy supports an invocation name, how and when should a bootstrap writer choose to use it vs one (or more) String parameters?”  

More information about the valhalla-spec-observers mailing list