hotspot/src/share/vm/ci/ciInstanceKlass.hpp
changeset 360 21d113ecbf6a
parent 217 c646ef2f5d58
child 670 ddf3e9583f2f
equal deleted inserted replaced
357:f4edb0d9f109 360:21d113ecbf6a
    33   friend class ciMethod;
    33   friend class ciMethod;
    34   friend class ciField;
    34   friend class ciField;
    35   friend class ciBytecodeStream;
    35   friend class ciBytecodeStream;
    36 
    36 
    37 private:
    37 private:
    38   bool                   _is_shared;
       
    39 
       
    40   jobject                _loader;
    38   jobject                _loader;
    41   jobject                _protection_domain;
    39   jobject                _protection_domain;
    42 
    40 
       
    41   bool                   _is_shared;
    43   bool                   _is_initialized;
    42   bool                   _is_initialized;
    44   bool                   _is_linked;
    43   bool                   _is_linked;
    45   bool                   _has_finalizer;
    44   bool                   _has_finalizer;
    46   bool                   _has_subklass;
    45   bool                   _has_subklass;
       
    46   bool                   _has_nonstatic_fields;
       
    47 
    47   ciFlags                _flags;
    48   ciFlags                _flags;
    48   jint                   _nonstatic_field_size;
    49   jint                   _nonstatic_field_size;
    49   jint                   _nonstatic_oop_map_size;
    50   jint                   _nonstatic_oop_map_size;
    50 
    51 
    51   // Lazy fields get filled in only upon request.
    52   // Lazy fields get filled in only upon request.
   130             >> LogHeapWordSize);
   131             >> LogHeapWordSize);
   131   }
   132   }
   132   jint                   nonstatic_field_size()  {
   133   jint                   nonstatic_field_size()  {
   133     assert(is_loaded(), "must be loaded");
   134     assert(is_loaded(), "must be loaded");
   134     return _nonstatic_field_size; }
   135     return _nonstatic_field_size; }
       
   136   jint                   has_nonstatic_fields()  {
       
   137     assert(is_loaded(), "must be loaded");
       
   138     return _has_nonstatic_fields; }
   135   jint                   nonstatic_oop_map_size()  {
   139   jint                   nonstatic_oop_map_size()  {
   136     assert(is_loaded(), "must be loaded");
   140     assert(is_loaded(), "must be loaded");
   137     return _nonstatic_oop_map_size; }
   141     return _nonstatic_oop_map_size; }
   138   ciInstanceKlass*       super();
   142   ciInstanceKlass*       super();
   139   jint                   nof_implementors()  {
   143   jint                   nof_implementors()  {
   162 
   166 
   163   ciInstanceKlass* unique_concrete_subklass();
   167   ciInstanceKlass* unique_concrete_subklass();
   164   bool has_finalizable_subclass();
   168   bool has_finalizable_subclass();
   165 
   169 
   166   bool contains_field_offset(int offset) {
   170   bool contains_field_offset(int offset) {
   167       return (offset/wordSize) >= instanceOopDesc::header_size()
   171     return instanceOopDesc::contains_field_offset(offset, nonstatic_field_size());
   168              && (offset/wordSize)-instanceOopDesc::header_size() < nonstatic_field_size();
       
   169   }
   172   }
   170 
   173 
   171   // Get the instance of java.lang.Class corresponding to
   174   // Get the instance of java.lang.Class corresponding to
   172   // this klass.  This instance is used for locking of
   175   // this klass.  This instance is used for locking of
   173   // synchronized static methods of this klass.
   176   // synchronized static methods of this klass.