RFR: JDK-8282798 java.lang.runtime.Carrier [v16]

Jim Laskey jlaskey at openjdk.java.net
Tue Mar 29 12:16:46 UTC 2022


On Mon, 28 Mar 2022 20:32:02 GMT, ExE Boss <duke at 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


More information about the core-libs-dev mailing list