On Mon, 28 Mar 2022 20:32:02 GMT, ExE Boss <[email protected]> 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