RFR: 8348853: Fold layout helper check for objects implementing non-array interfaces [v3]
duke
duke at openjdk.org
Wed Apr 9 09:19:40 UTC 2025
On Wed, 9 Apr 2025 07:20:00 GMT, Marc Chevalier <mchevalier at openjdk.org> wrote:
>> If `TypeInstKlassPtr` represents an array type, it has to be `java.lang.Object`. From contraposition, if it is not `java.lang.Object`, we can conclude it is not an array, and we can skip some array checks, for instance.
>>
>> In this PR, we improve this deduction with an interface base reasoning: arrays implements only Cloneable and Serializable, so if a type implements anything else, it cannot be an array.
>>
>> This change partially reverts the changes from [JDK-8348631](https://bugs.openjdk.org/browse/JDK-8348631) (#23331) (in `LibraryCallKit::generate_array_guard_common`) and the test still passes.
>>
>> The way interfaces are check might be done differently. The current situation is a balance between visibility (not to leak too much things explicitly private), having not overly general methods for one use-case and avoiding too concrete (and brittle) interfaces.
>>
>> Tested with tier1..3, hs-precheckin-comp and hs-comp-stress
>>
>> Thanks,
>> Marc
>
> Marc Chevalier 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 branch 'master' into feat/Fold-layout-helper-check-for-objects-implementing-non-array-interfaces
> - Merge branch 'master' into feat/Fold-layout-helper-check-for-objects-implementing-non-array-interfaces
> - not reinventing the wheel
> - Revert now useless fix
> - Generalize the not-array proof
@marc-chevalier
Your change (at version b1fb82a28a4f6c3f126d312727cb9f89a9f51669) is now ready to be sponsored by a Committer.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/24245#issuecomment-2788951877
More information about the graal-dev
mailing list