Condy bsm should be idempotent

Brian Goetz brian.goetz at oracle.com
Thu Aug 17 18:07:28 UTC 2017


So, this is more of a purity requirement -- that the result of the 
bootstrap be consistently derived from its arguments and no other 
state.  But you are not asking for heroic interning -- just that the 
bootstraps not do anything "funny".  (This is in the same category as 
"the result should be a constant", though neither the language nor VM 
can enforce this.)   Right?

On 8/17/2017 1:50 PM, forax at univ-mlv.fr wrote:
> ----- Mail original -----
>> De: "Brian Goetz" <brian.goetz at oracle.com>
>> À: forax at univ-mlv.fr
>> Cc: "amber-spec-experts" <amber-spec-experts at openjdk.java.net>
>> Envoyé: Jeudi 17 Août 2017 19:35:33
>> Objet: Re: Condy bsm should be idempotent
>> This is going to be problematic for bootstraps that produce, e.g.,
>> arrays; their equals() method delegates to Object.equals(), which means
>> such bootstraps would have to maintain an (expensive!) cache for interning.
> fully agree,
> i've forget the case of array,
> structurally equivalent <=> == for primitives, Object.equals for objects and Arrays.equals() for arrays.
>
>> It is an old problem that constant resolution can be racy, but we would
>> like for the JVM to manage the race, not the bootstraps.
> either we specify that the BSM has to be idempotent and the VM doesn't have to enforce that,
> the other solution is to say that the semantics of condy allow the resolved constant to be a result of a previous call of the BSM with the same arguments.
>
> also, if we want to be able to resolve condy at jlink time, we also need the same kind of wordings, because currently a BSM can depend on the daytime.
>
> Rémi
>
>> On 8/17/2017 1:30 PM, forax at univ-mlv.fr wrote:
>>> equals,
>>> if they are structurally equivalent, same name, same descriptor, same bsm and
>>> same bsm arguments,
>>> they should produce the same result.
>>>
>>> Rémi
>>>
>>> ----- Mail original -----
>>>> De: "Brian Goetz" <brian.goetz at oracle.com>
>>>> À: "Remi Forax" <forax at univ-mlv.fr>, "amber-spec-experts"
>>>> <amber-spec-experts at openjdk.java.net>
>>>> Envoyé: Jeudi 17 Août 2017 19:22:21
>>>> Objet: Re: Condy bsm should be idempotent
>>>> Can you clarify what you mean by "same"?  According to equals(), or ==?
>>>>
>>>> On 8/17/2017 12:15 PM, Remi Forax wrote:
>>>>> There is a way to solve that, mandate the the BSM of a Condy as to be
>>>>> idempotent, i.e. a call to a BSM with the same arguments should provide the
>>>>> same result.



More information about the amber-spec-experts mailing list