RFR: 8342206: Convenience method to check if a ClassEntry matches a ClassDesc

Chen Liang liach at openjdk.org
Tue Oct 15 17:39:40 UTC 2024


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 [Appendix](https://openjdk.org/jeps/486#Appendix)):

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.

-------------

Commit messages:
 - 8342206: Convenience method to check if a ClassEntry matches a ClassDesc

Changes: https://git.openjdk.org/jdk/pull/21526/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21526&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8342206
  Stats: 75 lines in 3 files changed: 74 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/21526.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21526/head:pull/21526

PR: https://git.openjdk.org/jdk/pull/21526


More information about the core-libs-dev mailing list