RFR: 8266550: C2: mirror TypeOopPtr/TypeInstPtr/TypeAryPtr with TypeKlassPtr/TypeInstKlassPtr/TypeAryKlassPtr

Roland Westrelin roland at openjdk.java.net
Wed May 5 11:52:06 UTC 2021


This is some refactoring in another attempt to fix JDK-6312651
(Compiler should only use verified interface types for
optimization). Rather than propose the patch from:

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

as a single big patch. I've been working on splitting it. The plan is
to have this and another refactoring patch that include no change to
the way interfaces are handled as preparation. Then only, in a third
patch, interface support along the lines of the patch I proposed 2
years ago would be introduces.

This patch changes the class hierarchy of types that C2 uses and
introduces TypeInstKlassPtr/TypeAryKlassPtr that mirror
TypeInstPtr/TypeAryPtr. The motivation for this is that a single:

ciKlass* _klass;

is no longer sufficient to describe a type (a set of interfaces must
also be carried around). That's not possible with TypeKlassPtr.

The meet methods for TypeInstPtr/TypeInstKlassPtr and
TypeAryPtr/TypeAryKlassPtr are largely similar. I moved the most
complicated logic in helper methods:

meet_instptr() and meet_aryptr()

(Thanks to Vladimir I for testing the refactoring patches)

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

Commit messages:
 - whitespaces
 - instklassptr/aryklassptr

Changes: https://git.openjdk.java.net/jdk/pull/3880/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3880&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8266550
  Stats: 1187 lines in 15 files changed: 762 ins; 242 del; 183 mod
  Patch: https://git.openjdk.java.net/jdk/pull/3880.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/3880/head:pull/3880

PR: https://git.openjdk.java.net/jdk/pull/3880


More information about the hotspot-compiler-dev mailing list