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

Roland Westrelin roland at openjdk.java.net
Mon Jun 7 12:38:29 UTC 2021


On Wed, 5 May 2021 11:29:44 GMT, Roland Westrelin <roland at openjdk.org> wrote:

> 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)

rebased to latest jdk code. Anyone for this?

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

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


More information about the hotspot-compiler-dev mailing list