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