-
Enhancement
-
Resolution: Unresolved
-
P4
-
24
-
None
Currently, to efficiently check if a `ClassEntry`, such as one from an `InvokeInstruction`, is of a particular class, we use such a pattern (as seen in JEP 486 demo):
inst.owner().name().equalsString("java/lang/System")
This pattern has a few issues:
1. This is not straightforward. Users may be tempted to write
inst.owner().asSymbol().equals(CD_System)
unaware of the degraded performance from extra conversions.
2. We aim to reduce the use of "internal names" with encapsulation. Direct use of "java/lang/System" goes against this, and we have no constants offered to reduce such error-prone use of internal name.
Thus, I propose a new API in ClassEntry:
boolean equalsSymbol(ClassDesc)
that can be used conveniently to check the identity of a class entry with a clean syntax and better performance.
In addition, this applies to Method type/class name matching for UTF8, and other structures; for example, matching a method type for utf8 can be as simple as testing the initial `(` for the fast path. We should add these series of convenience methods to promote better usage habbits.
inst.owner().name().equalsString("java/lang/System")
This pattern has a few issues:
1. This is not straightforward. Users may be tempted to write
inst.owner().asSymbol().equals(CD_System)
unaware of the degraded performance from extra conversions.
2. We aim to reduce the use of "internal names" with encapsulation. Direct use of "java/lang/System" goes against this, and we have no constants offered to reduce such error-prone use of internal name.
Thus, I propose a new API in ClassEntry:
boolean equalsSymbol(ClassDesc)
that can be used conveniently to check the identity of a class entry with a clean syntax and better performance.
In addition, this applies to Method type/class name matching for UTF8, and other structures; for example, matching a method type for utf8 can be as simple as testing the initial `(` for the fast path. We should add these series of convenience methods to promote better usage habbits.
- csr for
-
JDK-8342210 Convenience method to check if a ClassEntry matches a ClassDesc
-
- Draft
-
- links to
-
Review(master) openjdk/jdk/21526