New constant API addition proposals for Classfile API
Remi Forax
forax at univ-mlv.fr
Mon Mar 13 19:09:22 UTC 2023
As a data point, i've never used classData() directly from a condy, mostly because either
- I had some other constraints to check,
- the requirement that the name is "_" make it uneasy to read the generated bytecode,
- classData() is called in the static block.
regards,
Rémi
> From: "Brian Goetz" <brian.goetz at oracle.com>
> To: "-" <liangchenblue at gmail.com>, "classfile-api-dev"
> <classfile-api-dev at openjdk.org>
> Sent: Monday, March 13, 2023 6:54:23 PM
> Subject: Re: New constant API addition proposals for Classfile API
> (1) and (2) make total sense; (3) seems a little much, since it is just
> defaulting in a single argument?
> On 3/13/2023 1:49 PM, - wrote:
>> Hi,
>> After migrating 26/30 classes in test/jdk/java to Classfile API
>> ( [
>> https://github.com/liachmodded/jdk/commit/65ca55bc2e838823471de40f0e16f9770d932117
>> |
>> https://github.com/liachmodded/jdk/commit/65ca55bc2e838823471de40f0e16f9770d932117
>> ] ),
>> I suggest to add these new APIs to constant API for ease of Classfile
>> API usage:
>> 1. In ConstantDescs:
>> public static final String CONSTRUCTOR_NAME = "<init>";
>> public static final String CLASS_INITIALIZER_NAME = "<clinit>";
>> public static final MethodTypeDesc MTD_void = MethodTypeDesc.of(CD_void);
>> Since every instance class always has a constructor, and most likely,
>> its constructor has to call Object's no-arg constructor. The same
>> method type descriptor is shared for the static initializer too.
>> 2. In ConstantDescs:
>> public static final DirectMethodHandleDesc BSM_CLASS_DATA = ...
>> public static final DirectMethodHandleDesc BSM_CLASS_DATA_AT = ...
>> Representing MethodHandles.classData and MethodHandles.classDataAt,
>> used by hidden classes frequently.
>> 3. In DynamicConstantDesc:
>> public static DynamicConstantDesc ofTyped(DirectMethodHandleDesc
>> bootstrapMethod, ClassDesc constantType, ConstantDesc...
>> bootstrapArgs)
>> This is equivalent to calling ofNamed with ConstantDescs.DEFAULT_NAME,
>> useful for classData and classDataAt bootstrap methods.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/classfile-api-dev/attachments/20230313/126653b4/attachment.htm>
More information about the classfile-api-dev
mailing list