Mercurial > hg > graal-compiler
diff src/share/vm/oops/klass.hpp @ 1941:79d04223b8a5
Added caching for resolved types and resolved fields.
This is crucial, because the local load elimination will lead to wrong results, if field equality (of two RiField objects with the same object and the same RiType) is not given. The caching makes sure that the default equals implementation is sufficient.
author | Thomas Wuerthinger <wuerthinger@ssw.jku.at> |
---|---|
date | Tue, 28 Dec 2010 18:33:26 +0100 |
parents | 126ea7725993 |
children | 06f017f7daa7 |
line wrap: on
line diff
--- a/src/share/vm/oops/klass.hpp Mon Dec 27 20:35:47 2010 +0100 +++ b/src/share/vm/oops/klass.hpp Tue Dec 28 18:33:26 2010 +0100 @@ -215,6 +215,8 @@ klassOop _primary_supers[_primary_super_limit]; // java/lang/Class instance mirroring this class oop _java_mirror; + // com/sun/hotspot/c1x/HotSpotTypeResolved mirroring this class + oop _c1x_mirror; // Superclass klassOop _super; // Class name. Instance classes: java/lang/String, etc. Array classes: [I, @@ -315,6 +317,10 @@ oop java_mirror() const { return _java_mirror; } void set_java_mirror(oop m) { oop_store((oop*) &_java_mirror, m); } + // c1x mirror + oop c1x_mirror() const { return _c1x_mirror; } + void set_c1x_mirror(oop m) { oop_store((oop*) &_c1x_mirror, m); } + // modifier flags jint modifier_flags() const { return _modifier_flags; } void set_modifier_flags(jint flags) { _modifier_flags = flags; } @@ -343,6 +349,7 @@ oop* adr_secondary_super_cache() const { return (oop*)&_secondary_super_cache; } oop* adr_secondary_supers()const { return (oop*)&_secondary_supers; } oop* adr_java_mirror() const { return (oop*)&_java_mirror; } + oop* adr_c1x_mirror() const { return (oop*)&_c1x_mirror; } oop* adr_name() const { return (oop*)&_name; } oop* adr_subklass() const { return (oop*)&_subklass; } oop* adr_next_sibling() const { return (oop*)&_next_sibling; }