> 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.
Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision: - Merge - Merge branch 'master' of https://github.com/openjdk/jdk into feature/classentry-equalssym - Reuse cache for arrays, replace some use cases - Merge branch 'master' of https://github.com/openjdk/jdk into feature/classentry-equalssym - 8342206: Convenience method to check if a ClassEntry matches a ClassDesc ------------- Changes: - all: https://git.openjdk.org/jdk/pull/21526/files - new: https://git.openjdk.org/jdk/pull/21526/files/54139eae..7f5a7ac4 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=21526&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=21526&range=01-02 Stats: 100400 lines in 564 files changed: 97301 ins; 2208 del; 891 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