notes from Valhalla meeting 5/24/17
forax at univ-mlv.fr
forax at univ-mlv.fr
Wed Jun 21 19:20:00 UTC 2017
> De: "Paul Sandoz" <paul.sandoz at oracle.com>
> À: "John Rose" <john.r.rose at oracle.com>
> Cc: "Rémi Forax" <forax at univ-mlv.fr>, valhalla-spec-experts at openjdk.java.net
> Envoyé: Mercredi 21 Juin 2017 20:24:52
> Objet: Re: notes from Valhalla meeting 5/24/17
>> On 21 Jun 2017, at 09:03, John Rose < john.r.rose at oracle.com > wrote:
>> On Jun 21, 2017, at 8:46 AM, Remi Forax < forax at univ-mlv.fr > wrote:
>>> but i do not like with this proposal as is, i will explain why and how to fix
>>> - 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
>>> Why not reuse the ConstantValue attribute  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
> Can we get away with changing all static final fields to be lazily initialized
> without some explicit opt-in?
I think it's too late for Java (the language). As far as i remember, this is by default in Dart.
> It would be nice but it might induce subtle changes in behaviour and
> expectations (especially for where exceptions may occur).
the order of the side effects will be different and how you see non initialized field (when you have recursion) but introducing a new keyword like lazy or stable is possible.
>> 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
>> — John
More information about the valhalla-spec-observers