constant-dynamic specification, updated
brian.goetz at oracle.com
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