RFR: 6312651: Compiler should only use verified interface types for optimization

Roland Westrelin roland at openjdk.org
Fri Oct 28 12:42:29 UTC 2022


This change is mostly the same I sent for review 3 years ago but was
never integrated:

https://mail.openjdk.org/pipermail/hotspot-compiler-dev/2019-May/033803.html

The main difference is that, in the meantime, I submitted a couple of
refactoring changes extracted from the 2019 patch:

8266550: C2: mirror TypeOopPtr/TypeInstPtr/TypeAryPtr with TypeKlassPtr/TypeInstKlassPtr/TypeAryKlassPtr
8275201: C2: hide klass() accessor from TypeOopPtr and typeKlassPtr subclasses

As a result, the current patch is much smaller (but still not small).

The implementation is otherwise largely the same as in the 2019
patch. I tried to remove some of the code duplication between the
TypeOopPtr and TypeKlassPtr hierarchies by having some of the logic
shared in template methods. In the 2019 patch, interfaces were trusted
when types were constructed and I had added code to drop interfaces
from a type where they couldn't be trusted. This new patch proceeds
the other way around: interfaces are not trusted when a type is
constructed and code that uses the type must explicitly request that
they are included (this was suggested as an improvement by Vladimir
Ivanov I think).

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

Commit messages:
 - whitespaces
 - interfaces

Changes: https://git.openjdk.org/jdk/pull/10901/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10901&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-6312651
  Stats: 1542 lines in 20 files changed: 702 ins; 491 del; 349 mod
  Patch: https://git.openjdk.org/jdk/pull/10901.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/10901/head:pull/10901

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


More information about the hotspot-compiler-dev mailing list