< prev index next >

src/hotspot/share/classfile/javaClasses.hpp

Print this page
rev 50339 : 8203824: Chain exception from initialization in later NoClassDefFoundErrors.


 187 
 188  private:
 189   // The fake offsets are added by the class loader when java.lang.Class is loaded
 190 
 191   static int _klass_offset;
 192   static int _array_klass_offset;
 193 
 194   static int _oop_size_offset;
 195   static int _static_oop_field_count_offset;
 196 
 197   static int _protection_domain_offset;
 198   static int _init_lock_offset;
 199   static int _signers_offset;
 200   static int _class_loader_offset;
 201   static int _module_offset;
 202   static int _component_mirror_offset;
 203 
 204   static bool offsets_computed;
 205   static int classRedefinedCount_offset;
 206 


 207   static GrowableArray<Klass*>* _fixup_mirror_list;
 208   static GrowableArray<Klass*>* _fixup_module_field_list;
 209 

 210   static void set_init_lock(oop java_class, oop init_lock);
 211   static void set_protection_domain(oop java_class, oop protection_domain);
 212   static void set_class_loader(oop java_class, oop class_loader);
 213   static void set_component_mirror(oop java_class, oop comp_mirror);
 214   static void initialize_mirror_fields(Klass* k, Handle mirror, Handle protection_domain, TRAPS);
 215   static void set_mirror_module_field(Klass* K, Handle mirror, Handle module, TRAPS);
 216  public:
 217   static void allocate_fixup_lists();
 218   static void compute_offsets();
 219 
 220   // Instance creation
 221   static void create_mirror(Klass* k, Handle class_loader, Handle module,
 222                             Handle protection_domain, TRAPS);
 223   static void fixup_mirror(Klass* k, TRAPS);
 224   static oop  create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS);
 225 
 226   // Archiving
 227   static void serialize(SerializeClosure* f) NOT_CDS_RETURN;
 228   static void archive_basic_type_mirrors(TRAPS) NOT_CDS_JAVA_HEAP_RETURN;
 229   static oop  archive_mirror(Klass* k, TRAPS) NOT_CDS_JAVA_HEAP_RETURN_(NULL);


 251   static Klass* array_klass_acquire(oop java_class);
 252   static void release_set_array_klass(oop java_class, Klass* klass);
 253   // compiler support for class operations
 254   static int klass_offset_in_bytes()                { return _klass_offset; }
 255   static int array_klass_offset_in_bytes()          { return _array_klass_offset; }
 256   // Support for classRedefinedCount field
 257   static int classRedefinedCount(oop the_class_mirror);
 258   static void set_classRedefinedCount(oop the_class_mirror, int value);
 259 
 260   // Support for embedded per-class oops
 261   static oop  protection_domain(oop java_class);
 262   static oop  init_lock(oop java_class);
 263   static oop  component_mirror(oop java_class);
 264   static objArrayOop  signers(oop java_class);
 265   static void set_signers(oop java_class, objArrayOop signers);
 266 
 267   static oop class_loader(oop java_class);
 268   static void set_module(oop java_class, oop module);
 269   static oop module(oop java_class);
 270 



 271   static int oop_size(oop java_class);
 272   static void set_oop_size(oop java_class, int size);
 273   static int static_oop_field_count(oop java_class);
 274   static void set_static_oop_field_count(oop java_class, int size);
 275 
 276   static GrowableArray<Klass*>* fixup_mirror_list() {
 277     return _fixup_mirror_list;
 278   }
 279   static void set_fixup_mirror_list(GrowableArray<Klass*>* v) {
 280     _fixup_mirror_list = v;
 281   }
 282 
 283   static GrowableArray<Klass*>* fixup_module_field_list() {
 284     return _fixup_module_field_list;
 285   }
 286   static void set_fixup_module_field_list(GrowableArray<Klass*>* v) {
 287     _fixup_module_field_list = v;
 288   }
 289 
 290   // Debugging


 455   // Offsets
 456   enum {
 457     hc_backtrace_offset     =  0,
 458     hc_detailMessage_offset =  1,
 459     hc_cause_offset         =  2,  // New since 1.4
 460     hc_stackTrace_offset    =  3   // New since 1.4
 461   };
 462   // Trace constants
 463   enum {
 464     trace_methods_offset = 0,
 465     trace_bcis_offset    = 1,
 466     trace_mirrors_offset = 2,
 467     trace_names_offset   = 3,
 468     trace_next_offset    = 4,
 469     trace_size           = 5,
 470     trace_chunk_size     = 32
 471   };
 472 
 473   static int backtrace_offset;
 474   static int detailMessage_offset;

 475   static int stackTrace_offset;
 476   static int depth_offset;
 477   static int static_unassigned_stacktrace_offset;
 478 
 479   // StackTrace (programmatic access, new since 1.4)
 480   static void clear_stacktrace(oop throwable);
 481   // Stacktrace (post JDK 1.7.0 to allow immutability protocol to be followed)
 482   static void set_stacktrace(oop throwable, oop st_element_array);
 483   static oop unassigned_stacktrace();
 484 
 485  public:
 486   // Backtrace
 487   static oop backtrace(oop throwable);
 488   static void set_backtrace(oop throwable, oop value);
 489   static int depth(oop throwable);
 490   static void set_depth(oop throwable, int value);
 491   // Needed by JVMTI to filter out this internal field.
 492   static int get_backtrace_offset() { return backtrace_offset;}
 493   static int get_detailMessage_offset() { return detailMessage_offset;}
 494   // Message
 495   static oop message(oop throwable);
 496   static void set_message(oop throwable, oop value);
 497   static Symbol* detail_message(oop throwable);

 498   static void print_stack_element(outputStream *st, const methodHandle& method, int bci);
 499   static void print_stack_usage(Handle stream);
 500 
 501   static void compute_offsets();
 502   static void serialize(SerializeClosure* f) NOT_CDS_RETURN;
 503 
 504   // Allocate space for backtrace (created but stack trace not filled in)
 505   static void allocate_backtrace(Handle throwable, TRAPS);
 506   // Fill in current stack trace for throwable with preallocated backtrace (no GC)
 507   static void fill_in_stack_trace_of_preallocated_backtrace(Handle throwable);
 508   // Fill in current stack trace, can cause GC
 509   static void fill_in_stack_trace(Handle throwable, const methodHandle& method, TRAPS);
 510   static void fill_in_stack_trace(Handle throwable, const methodHandle& method = methodHandle());
 511   // Programmatic access to stack trace
 512   static void get_stack_trace_elements(Handle throwable, objArrayHandle stack_trace, TRAPS);
 513   // Printing
 514   static void print(oop throwable, outputStream* st);
 515   static void print_stack_trace(Handle throwable, outputStream* st);
 516   static void java_printStackTrace(Handle throwable, TRAPS);
 517   // Debugging




 187 
 188  private:
 189   // The fake offsets are added by the class loader when java.lang.Class is loaded
 190 
 191   static int _klass_offset;
 192   static int _array_klass_offset;
 193 
 194   static int _oop_size_offset;
 195   static int _static_oop_field_count_offset;
 196 
 197   static int _protection_domain_offset;
 198   static int _init_lock_offset;
 199   static int _signers_offset;
 200   static int _class_loader_offset;
 201   static int _module_offset;
 202   static int _component_mirror_offset;
 203 
 204   static bool offsets_computed;
 205   static int classRedefinedCount_offset;
 206 
 207   static int _exceptionThrownDuringClinit_offset;
 208 
 209   static GrowableArray<Klass*>* _fixup_mirror_list;
 210   static GrowableArray<Klass*>* _fixup_module_field_list;
 211 
 212 
 213   static void set_init_lock(oop java_class, oop init_lock);
 214   static void set_protection_domain(oop java_class, oop protection_domain);
 215   static void set_class_loader(oop java_class, oop class_loader);
 216   static void set_component_mirror(oop java_class, oop comp_mirror);
 217   static void initialize_mirror_fields(Klass* k, Handle mirror, Handle protection_domain, TRAPS);
 218   static void set_mirror_module_field(Klass* K, Handle mirror, Handle module, TRAPS);
 219  public:
 220   static void allocate_fixup_lists();
 221   static void compute_offsets();
 222 
 223   // Instance creation
 224   static void create_mirror(Klass* k, Handle class_loader, Handle module,
 225                             Handle protection_domain, TRAPS);
 226   static void fixup_mirror(Klass* k, TRAPS);
 227   static oop  create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS);
 228 
 229   // Archiving
 230   static void serialize(SerializeClosure* f) NOT_CDS_RETURN;
 231   static void archive_basic_type_mirrors(TRAPS) NOT_CDS_JAVA_HEAP_RETURN;
 232   static oop  archive_mirror(Klass* k, TRAPS) NOT_CDS_JAVA_HEAP_RETURN_(NULL);


 254   static Klass* array_klass_acquire(oop java_class);
 255   static void release_set_array_klass(oop java_class, Klass* klass);
 256   // compiler support for class operations
 257   static int klass_offset_in_bytes()                { return _klass_offset; }
 258   static int array_klass_offset_in_bytes()          { return _array_klass_offset; }
 259   // Support for classRedefinedCount field
 260   static int classRedefinedCount(oop the_class_mirror);
 261   static void set_classRedefinedCount(oop the_class_mirror, int value);
 262 
 263   // Support for embedded per-class oops
 264   static oop  protection_domain(oop java_class);
 265   static oop  init_lock(oop java_class);
 266   static oop  component_mirror(oop java_class);
 267   static objArrayOop  signers(oop java_class);
 268   static void set_signers(oop java_class, objArrayOop signers);
 269 
 270   static oop class_loader(oop java_class);
 271   static void set_module(oop java_class, oop module);
 272   static oop module(oop java_class);
 273 
 274   // Accessor for field containing exception thrown during class initialization.
 275   static oop exceptionThrownDuringClinit(oop java_class);
 276 
 277   static int oop_size(oop java_class);
 278   static void set_oop_size(oop java_class, int size);
 279   static int static_oop_field_count(oop java_class);
 280   static void set_static_oop_field_count(oop java_class, int size);
 281 
 282   static GrowableArray<Klass*>* fixup_mirror_list() {
 283     return _fixup_mirror_list;
 284   }
 285   static void set_fixup_mirror_list(GrowableArray<Klass*>* v) {
 286     _fixup_mirror_list = v;
 287   }
 288 
 289   static GrowableArray<Klass*>* fixup_module_field_list() {
 290     return _fixup_module_field_list;
 291   }
 292   static void set_fixup_module_field_list(GrowableArray<Klass*>* v) {
 293     _fixup_module_field_list = v;
 294   }
 295 
 296   // Debugging


 461   // Offsets
 462   enum {
 463     hc_backtrace_offset     =  0,
 464     hc_detailMessage_offset =  1,
 465     hc_cause_offset         =  2,  // New since 1.4
 466     hc_stackTrace_offset    =  3   // New since 1.4
 467   };
 468   // Trace constants
 469   enum {
 470     trace_methods_offset = 0,
 471     trace_bcis_offset    = 1,
 472     trace_mirrors_offset = 2,
 473     trace_names_offset   = 3,
 474     trace_next_offset    = 4,
 475     trace_size           = 5,
 476     trace_chunk_size     = 32
 477   };
 478 
 479   static int backtrace_offset;
 480   static int detailMessage_offset;
 481   static int cause_offset;
 482   static int stackTrace_offset;
 483   static int depth_offset;
 484   static int static_unassigned_stacktrace_offset;
 485 
 486   // StackTrace (programmatic access, new since 1.4)
 487   static void clear_stacktrace(oop throwable);
 488   // Stacktrace (post JDK 1.7.0 to allow immutability protocol to be followed)
 489   static void set_stacktrace(oop throwable, oop st_element_array);
 490   static oop unassigned_stacktrace();
 491 
 492  public:
 493   // Backtrace
 494   static oop backtrace(oop throwable);
 495   static void set_backtrace(oop throwable, oop value);
 496   static int depth(oop throwable);
 497   static void set_depth(oop throwable, int value);
 498   // Needed by JVMTI to filter out this internal field.
 499   static int get_backtrace_offset() { return backtrace_offset;}
 500   static int get_detailMessage_offset() { return detailMessage_offset;}
 501   // Message
 502   static oop message(oop throwable);
 503   static void set_message(oop throwable, oop value);
 504   static Symbol* detail_message(oop throwable);
 505   static void set_cause(oop throwable, oop cause);
 506   static void print_stack_element(outputStream *st, const methodHandle& method, int bci);
 507   static void print_stack_usage(Handle stream);
 508 
 509   static void compute_offsets();
 510   static void serialize(SerializeClosure* f) NOT_CDS_RETURN;
 511 
 512   // Allocate space for backtrace (created but stack trace not filled in)
 513   static void allocate_backtrace(Handle throwable, TRAPS);
 514   // Fill in current stack trace for throwable with preallocated backtrace (no GC)
 515   static void fill_in_stack_trace_of_preallocated_backtrace(Handle throwable);
 516   // Fill in current stack trace, can cause GC
 517   static void fill_in_stack_trace(Handle throwable, const methodHandle& method, TRAPS);
 518   static void fill_in_stack_trace(Handle throwable, const methodHandle& method = methodHandle());
 519   // Programmatic access to stack trace
 520   static void get_stack_trace_elements(Handle throwable, objArrayHandle stack_trace, TRAPS);
 521   // Printing
 522   static void print(oop throwable, outputStream* st);
 523   static void print_stack_trace(Handle throwable, outputStream* st);
 524   static void java_printStackTrace(Handle throwable, TRAPS);
 525   // Debugging


< prev index next >