On Thu, 5 Mar 2026 17:29:46 GMT, Chen Liang <[email protected]> wrote:
>> The bootstrap methods in java.lang.runtime do not have explicit requirements
>> for the lookup; they largely ignored it until they suddenly start using the
>> lookups.
>>
>> Currently, the unprivileged lookup behavior is as follows:
>> 1. `ObjectMethods.bootstrap` for `equals` and `hashCode` may fail with
>> `IllegalAccessException` if the lookup is used to generate hidden classes;
>> it may be ignored if no hidden class is needed.
>> 2. `ObjectMethods.bootstrap` for `toString` fails with a `RuntimeException`
>> caused by a `StringConcatException`.
>> 3. `SwitchBootstraps` methods fail with `IllegalArgumentException` caused by
>> `IllegalAccessException`.
>>
>> In contrast, `LambdaMetafactory` and `StringConcatFactory` throw their own
>> types of exceptions.
>>
>> In this patch, I decided to make all these java.lang.runtime BSMs throw
>> `IllegalArgumentException` without a cause for any unprivileged lookup that
>> cannot support bytecode generation. Future BSMs should also reject
>> unprivileged lookup eagerly to allow implementations to have bytecode
>> generation freedom. The `IllegalArgumentException` is consistent with other
>> consistency checks done by these BSMs.
>
> Chen Liang has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Omitted
This is good enough for me. The specification for IAE is flexible:
* @throws IllegalArgumentException if the bootstrap arguments are invalid
* or inconsistent
-------------
Marked as reviewed by jvernee (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/30067#pullrequestreview-3899906059