On Tue, 22 Oct 2024 14:43:14 GMT, Chen Liang <li...@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

Reply via email to