On Mon, 28 Mar 2022 20:32:02 GMT, ExE Boss <d...@openjdk.java.net> wrote:
>> Jim Laskey has updated the pull request incrementally with one additional >> commit since the last revision: >> >> Clean up @return > > src/java.base/share/classes/java/lang/runtime/Carrier.java line 330: > >> 328: * Constructor. >> 329: * >> 330: * @param primitiveCount slot count required for primitives > > This isn’t the slot count, but the `long[]` array length, which is half the > slot count for `long`s. Thanks for pointing this out. It is the slot count, but I was over-allocating the long array. diff --git a/src/java.base/share/classes/java/lang/runtime/Carrier.java b/src/java.base/share/classes/java/lang/runtime/Carrier.java index 50a32346417..775df6cb4c3 100644 --- a/src/java.base/share/classes/java/lang/runtime/Carrier.java +++ b/src/java.base/share/classes/java/lang/runtime/Carrier.java @@ -331,7 +331,7 @@ public final class Carrier { * @param objectCount slot count required for objects */ CarrierArray(int primitiveCount, int objectCount) { - this.primitives = new long[primitiveCount]; + this.primitives = new long[(primitiveCount + 1) / 2]; this.objects = new Object[objectCount]; } @@ -432,10 +432,10 @@ public final class Carrier { int longCount = carrierShape.longCount(); int intCount = carrierShape.intCount(); int objectCount = carrierShape.objectCount(); - int primitiveSlots = longCount * LONG_SLOTS + intCount; + int primitiveCount = longCount * LONG_SLOTS + intCount; MethodHandle constructor = MethodHandles.insertArguments(CONSTRUCTOR, - 0, primitiveSlots, objectCount); + 0, primitiveCount, objectCount); // long array index int index = 0; ------------- PR: https://git.openjdk.java.net/jdk/pull/7744