[lworld] RFR: JDK-8271556: [lworld] java.lang.BootstrapMethodError in .equals() for primitive record

Jesper Steen Møller jespersm at openjdk.java.net
Sun Aug 15 11:32:53 UTC 2021

On Thu, 12 Aug 2021 18:05:18 GMT, Mandy Chung <mchung at openjdk.org> wrote:

> We want the default choice is to use the primary L-type mirror and only
> when there is a contextual need to make a distinction, the Q-type mirror will be an option.
> The proposal is to always pass the primary mirror to the `recordClass` argument
> and adjust the bootstrap code to drive method handle creation off of the primitive
> value type of the record class instead of `recordClass`, using `recordClass` only
> for getting the class name for `toString`.

The patch also works here. Just a minor stylistic suggestion where a pattern could save a few casts.

src/java.base/share/classes/java/lang/runtime/ObjectMethods.java line 340:

> 338:         Class<?> receiverType = recordClass.isPrimitiveClass() ? recordClass.asValueType() : recordClass;
> 339: 
> 340:         if (type instanceof MethodType) {

Nitpicking: Perhaps

if (type instanceof MethodType mType) {
    methodType = mType;
    if (mType.parameterType(0) != receiverType) {



PR: https://git.openjdk.java.net/valhalla/pull/528

More information about the valhalla-dev mailing list