On Thu, 10 Mar 2022 19:35:16 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 one additional > commit since the last revision: > > Leave public for the time being src/java.base/share/classes/java/lang/runtime/Carrier.java line 48: > 46: > 47: /** > 48: * This class is used to create anonymous objects that have number and > types of This is a bit ambiguous: anonymous "objects that have number and types of objects determined at runtime" almost seems like the clients have no control. I think what you want to say is that the shape is given by the client (e.g. how many longs, int, objects) - but the underlying implementation can vary. Maybe something like: A <em>carrier</em> is an anonymous objects that can store component values. Valid component value types are [...]. Clients can create new carrier instances by describing a carrier <em>shape</em>, that is, a MethodType whose parameter types describe the types of the carrier component values. src/java.base/share/classes/java/lang/runtime/Carrier.java line 57: > 55: * @since 19 > 56: */ > 57: /*non-public*/ What does this non-public comment mean? src/java.base/share/classes/java/lang/runtime/Carrier.java line 146: > 144: * @return constructor with arguments recasted and reordered > 145: */ > 146: private static MethodHandle reshapeConstructor(CarrierShape > carrierShape, I like how reshape constructors and components is now shared across both implementations ------------- PR: https://git.openjdk.java.net/jdk/pull/7744