On Jun 21, 2017, at 8:46 AM, Remi Forax <fo...@univ-mlv.fr> wrote:
> 
> but i do not like with this proposal as is, i will explain why and how to fix 
> it:
> - condy is linked to a static final field but unlike invokedynamic which is a 
> link from an invokedynamic instruction to a CONSTANT_InvokeDynamic_info,
>  there is no link from the static final field to the 
> CONSTANT_ConstantDynamic_info.
>  Why not reuse the ConstantValue attribute [1] to reference the 
> CONSTANT_ConstantDynamic_info instead (the constantvalue_index can be 
> extended to allow a CONSTANT_ConstantDynamic).
> 
> - condy if a 'dy' like indy, so it should do late late binding, i.e. being 
> initialized (run the bootstrap method) only the first time someone access to 
> the static field exactly like with indy the bsm is called the first time you 
> try to access the instruction. 
> 
> 
> In term of semantics, my proposal does not introduce an item in the constant 
> pool which is resolved only by the virtue of being in the constant pool 
> unlike any other items. If condy is linked to the ConstantValue of a field, 
> the condy item is resolved when necessary as usual. With my ASM hat, i see 
> how to implement it easily without having to surface the constant pool itself 
> (at least until the items are pointed by the j.l.i.BootstrapCallInfo).

Indeed, repurposing ConstantValue in the way you describe is an add-on to this 
proposal.
I almost threw it in, but didn't want to muddy the basic proposal.
In the basic proposal, condy is *not* linked to static finals.
It only repurposes the concept of field names and field types
(as if from Fieldref but not using Fieldref) but does not actually link to 
fields.

— John

Reply via email to