hotspot/src/share/vm/ci/ciInstanceKlass.hpp
changeset 217 c646ef2f5d58
parent 1 489c9b5090e2
child 360 21d113ecbf6a
equal deleted inserted replaced
216:9d2d32d9828f 217:c646ef2f5d58
    44   bool                   _is_linked;
    44   bool                   _is_linked;
    45   bool                   _has_finalizer;
    45   bool                   _has_finalizer;
    46   bool                   _has_subklass;
    46   bool                   _has_subklass;
    47   ciFlags                _flags;
    47   ciFlags                _flags;
    48   jint                   _nonstatic_field_size;
    48   jint                   _nonstatic_field_size;
       
    49   jint                   _nonstatic_oop_map_size;
    49 
    50 
    50   // Lazy fields get filled in only upon request.
    51   // Lazy fields get filled in only upon request.
    51   ciInstanceKlass*       _super;
    52   ciInstanceKlass*       _super;
    52   ciInstance*            _java_mirror;
    53   ciInstance*            _java_mirror;
    53 
    54 
    55   GrowableArray<ciField*>* _nonstatic_fields;
    56   GrowableArray<ciField*>* _nonstatic_fields;
    56 
    57 
    57   enum { implementors_limit = instanceKlass::implementors_limit };
    58   enum { implementors_limit = instanceKlass::implementors_limit };
    58   ciInstanceKlass*       _implementors[implementors_limit];
    59   ciInstanceKlass*       _implementors[implementors_limit];
    59   jint                   _nof_implementors;
    60   jint                   _nof_implementors;
       
    61 
       
    62   GrowableArray<ciField*>* _non_static_fields;
    60 
    63 
    61 protected:
    64 protected:
    62   ciInstanceKlass(KlassHandle h_k);
    65   ciInstanceKlass(KlassHandle h_k);
    63   ciInstanceKlass(ciSymbol* name, jobject loader, jobject protection_domain);
    66   ciInstanceKlass(ciSymbol* name, jobject loader, jobject protection_domain);
    64 
    67 
   127             >> LogHeapWordSize);
   130             >> LogHeapWordSize);
   128   }
   131   }
   129   jint                   nonstatic_field_size()  {
   132   jint                   nonstatic_field_size()  {
   130     assert(is_loaded(), "must be loaded");
   133     assert(is_loaded(), "must be loaded");
   131     return _nonstatic_field_size; }
   134     return _nonstatic_field_size; }
       
   135   jint                   nonstatic_oop_map_size()  {
       
   136     assert(is_loaded(), "must be loaded");
       
   137     return _nonstatic_oop_map_size; }
   132   ciInstanceKlass*       super();
   138   ciInstanceKlass*       super();
   133   jint                   nof_implementors()  {
   139   jint                   nof_implementors()  {
   134     assert(is_loaded(), "must be loaded");
   140     assert(is_loaded(), "must be loaded");
   135     if (_is_shared)  return compute_shared_nof_implementors();
   141     if (_is_shared)  return compute_shared_nof_implementors();
   136     return _nof_implementors;
   142     return _nof_implementors;
   137   }
   143   }
   138 
   144 
   139   ciInstanceKlass* get_canonical_holder(int offset);
   145   ciInstanceKlass* get_canonical_holder(int offset);
   140   ciField* get_field_by_offset(int field_offset, bool is_static);
   146   ciField* get_field_by_offset(int field_offset, bool is_static);
       
   147 
       
   148   GrowableArray<ciField*>* non_static_fields();
       
   149 
   141   // total number of nonstatic fields (including inherited):
   150   // total number of nonstatic fields (including inherited):
   142   int nof_nonstatic_fields() {
   151   int nof_nonstatic_fields() {
   143     if (_nonstatic_fields == NULL)
   152     if (_nonstatic_fields == NULL)
   144       return compute_nonstatic_fields();
   153       return compute_nonstatic_fields();
   145     else
   154     else