Condy bsm should be idempotent

Brian Goetz brian.goetz at
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 wrote:
> ----- Mail original -----
>> De: "Brian Goetz" <brian.goetz at>
>> À: forax at
>> Cc: "amber-spec-experts" <amber-spec-experts at>
>> 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 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>
>>>> À: "Remi Forax" <forax at>, "amber-spec-experts"
>>>> <amber-spec-experts at>
>>>> 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