New constant API addition proposals for Classfile API

- liangchenblue at gmail.com
Mon Mar 13 17:49:02 UTC 2023


Hi,
After migrating 26/30 classes in test/jdk/java to Classfile API
(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.


More information about the classfile-api-dev mailing list