On Fri, 11 Mar 2022 15:17:30 GMT, Jim Laskey <jlas...@openjdk.org> wrote:

>> We propose to provide a runtime anonymous carrier class object generator; 
>> java.lang.runtime.Carrier. This generator class is designed to share 
>> anonymous classes when shapes are similar. For example, if several clients 
>> require objects containing two integer fields, then Carrier will ensure that 
>> each client generates carrier objects using the same underlying anonymous 
>> class. 
>> 
>> See JBS for details.
>
> Jim Laskey has updated the pull request incrementally with two additional 
> commits since the last revision:
> 
>  - Use long array for primitives
>  - Use long arrays for primitives

Marked as reviewed by mcimadamore (Reviewer).

src/java.base/share/classes/java/lang/runtime/Carrier.java line 51:

> 49:  * while avoiding primitive boxing associated with collection objects. 
> Component values
> 50:  * can be primitive or Object. Clients can create new carrier instances 
> by describing a
> 51:  * carrier <em>shape</em>, that is, a MethodType whose parameter types 
> describe the

Suggestion:

 * carrier <em>shape</em>, that is, a {@linkplain MethodType method type} whose 
parameter types describe the

src/java.base/share/classes/java/lang/runtime/Carrier.java line 380:

> 378:                 }
> 379: 
> 380:                 return Unsafe.ARRAY_LONG_BASE_OFFSET +

Shouldn't you add the offset of the first `int` value in the array to the 
resulting expression? E.g. I'm assuming we're storing `long`s first and `int`s 
after? If so, `int` values will be located at an offset from the start of the 
array.

-------------

PR: https://git.openjdk.java.net/jdk/pull/7744

Reply via email to