hotspot/src/share/vm/oops/instanceKlass.hpp
changeset 18940 d39d4765e6cb
parent 18687 5a0543c157c9
child 19326 14cb6cf26a96
equal deleted inserted replaced
18938:ff8f8cec9434 18940:d39d4765e6cb
   131  private:
   131  private:
   132   int  _offset;
   132   int  _offset;
   133   uint _count;
   133   uint _count;
   134 };
   134 };
   135 
   135 
       
   136 struct JvmtiCachedClassFileData;
       
   137 
   136 class InstanceKlass: public Klass {
   138 class InstanceKlass: public Klass {
   137   friend class VMStructs;
   139   friend class VMStructs;
   138   friend class ClassFileParser;
   140   friend class ClassFileParser;
   139   friend class CompileReplay;
   141   friend class CompileReplay;
   140 
   142 
   247   BreakpointInfo* _breakpoints;          // bpt lists, managed by Method*
   249   BreakpointInfo* _breakpoints;          // bpt lists, managed by Method*
   248   // Array of interesting part(s) of the previous version(s) of this
   250   // Array of interesting part(s) of the previous version(s) of this
   249   // InstanceKlass. See PreviousVersionWalker below.
   251   // InstanceKlass. See PreviousVersionWalker below.
   250   GrowableArray<PreviousVersionNode *>* _previous_versions;
   252   GrowableArray<PreviousVersionNode *>* _previous_versions;
   251   // JVMTI fields can be moved to their own structure - see 6315920
   253   // JVMTI fields can be moved to their own structure - see 6315920
   252   unsigned char * _cached_class_file_bytes;       // JVMTI: cached class file, before retransformable agent modified it in CFLH
   254   // JVMTI: cached class file, before retransformable agent modified it in CFLH
   253   jint            _cached_class_file_len;         // JVMTI: length of above
   255   JvmtiCachedClassFileData* _cached_class_file;
   254 
   256 
   255   volatile u2     _idnum_allocated_count;         // JNI/JVMTI: increments with the addition of methods, old ids don't change
   257   volatile u2     _idnum_allocated_count;         // JNI/JVMTI: increments with the addition of methods, old ids don't change
   256 
   258 
   257   // Class states are defined as ClassState (see above).
   259   // Class states are defined as ClassState (see above).
   258   // Place the _init_state here to utilize the unused 2-byte after
   260   // Place the _init_state here to utilize the unused 2-byte after
   613   }
   615   }
   614 
   616 
   615   static void purge_previous_versions(InstanceKlass* ik);
   617   static void purge_previous_versions(InstanceKlass* ik);
   616 
   618 
   617   // JVMTI: Support for caching a class file before it is modified by an agent that can do retransformation
   619   // JVMTI: Support for caching a class file before it is modified by an agent that can do retransformation
   618   void set_cached_class_file(unsigned char *class_file_bytes,
   620   void set_cached_class_file(JvmtiCachedClassFileData *data) {
   619                              jint class_file_len)     { _cached_class_file_len = class_file_len;
   621     _cached_class_file = data;
   620                                                         _cached_class_file_bytes = class_file_bytes; }
   622   }
   621   jint get_cached_class_file_len()                    { return _cached_class_file_len; }
   623   JvmtiCachedClassFileData * get_cached_class_file() { return _cached_class_file; }
   622   unsigned char * get_cached_class_file_bytes()       { return _cached_class_file_bytes; }
   624   jint get_cached_class_file_len();
       
   625   unsigned char * get_cached_class_file_bytes();
   623 
   626 
   624   // JVMTI: Support for caching of field indices, types, and offsets
   627   // JVMTI: Support for caching of field indices, types, and offsets
   625   void set_jvmti_cached_class_field_map(JvmtiCachedClassFieldMap* descriptor) {
   628   void set_jvmti_cached_class_field_map(JvmtiCachedClassFieldMap* descriptor) {
   626     _jvmti_cached_class_field_map = descriptor;
   629     _jvmti_cached_class_field_map = descriptor;
   627   }
   630   }