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;      }