RFR: 8338544: Dedicated Array class descriptor implementation
ExE Boss
duke at openjdk.org
Wed Sep 25 18:54:03 UTC 2024
On Wed, 21 Aug 2024 20:25:07 GMT, Chen Liang <liach at openjdk.org> wrote:
> @cl4es discovered that Stack Map generation in ClassFile API uses `componentType` and `arrayType` for `aaload` `aastore` instructions, which are currently quite slow. We can split out array class descriptors from class or interfaces to support faster `arrayType` and `componentType` operations.
>
> Tentative, as I currently have no way to measure the actual impact of this patch on the startup performance; however, this made the `ClassDesc` implementations much cleaner.
Apparently, changing method `default`‑ness requires a CSR (even for fully sealed hierarchies), but I can’t find the PR where I was informed of this.
--------------------------------------------------------------------------------
Using `return this instanceof <type>ClassDescImpl` might allow **C2** to better avoid megamorphic virtual invocations (see [GH‑17488]), but this needs to be benchmarked:
[GH‑17488]: https://github.com/openjdk/jdk/pull/17488
src/java.base/share/classes/java/lang/constant/ClassDesc.java line 237:
> 235: */
> 236: default boolean isArray() {
> 237: return false;
Suggestion:
return this instanceof ArrayClassDescImpl;
src/java.base/share/classes/java/lang/constant/ClassDesc.java line 246:
> 244: */
> 245: default boolean isPrimitive() {
> 246: return false;
Suggestion:
return this instanceof PrimitiveClassDescImpl;
src/java.base/share/classes/java/lang/constant/ClassDesc.java line 255:
> 253: */
> 254: default boolean isClassOrInterface() {
> 255: return false;
Suggestion:
return this instanceof ReferenceClassDescImpl;
-------------
PR Review: https://git.openjdk.org/jdk/pull/20665#pullrequestreview-2263259130
PR Review Comment: https://git.openjdk.org/jdk/pull/20665#discussion_r1732794261
PR Review Comment: https://git.openjdk.org/jdk/pull/20665#discussion_r1732794721
PR Review Comment: https://git.openjdk.org/jdk/pull/20665#discussion_r1732795070
More information about the core-libs-dev
mailing list