RFR: 8342206: Convenience method to check if a ClassEntry matches a ClassDesc [v3]
ExE Boss
duke at openjdk.org
Tue Oct 22 23:01:06 UTC 2024
On Tue, 22 Oct 2024 14:43:14 GMT, Chen Liang <liach at openjdk.org> wrote:
>> 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
I think it might be a good idea to also have `equalsSymbol(…)` methods for the other pool entries.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/21526#issuecomment-2430466270
More information about the core-libs-dev
mailing list