197 do_klass(StackWalker_klass, java_lang_StackWalker, Opt ) \ |
197 do_klass(StackWalker_klass, java_lang_StackWalker, Opt ) \ |
198 do_klass(AbstractStackWalker_klass, java_lang_StackStreamFactory_AbstractStackWalker, Opt ) \ |
198 do_klass(AbstractStackWalker_klass, java_lang_StackStreamFactory_AbstractStackWalker, Opt ) \ |
199 do_klass(StackFrameInfo_klass, java_lang_StackFrameInfo, Opt ) \ |
199 do_klass(StackFrameInfo_klass, java_lang_StackFrameInfo, Opt ) \ |
200 do_klass(LiveStackFrameInfo_klass, java_lang_LiveStackFrameInfo, Opt ) \ |
200 do_klass(LiveStackFrameInfo_klass, java_lang_LiveStackFrameInfo, Opt ) \ |
201 \ |
201 \ |
|
202 /* support for stack dump lock analysis */ \ |
|
203 do_klass(java_util_concurrent_locks_AbstractOwnableSynchronizer_klass, java_util_concurrent_locks_AbstractOwnableSynchronizer, Pre ) \ |
|
204 \ |
202 /* Preload boxing klasses */ \ |
205 /* Preload boxing klasses */ \ |
203 do_klass(Boolean_klass, java_lang_Boolean, Pre ) \ |
206 do_klass(Boolean_klass, java_lang_Boolean, Pre ) \ |
204 do_klass(Character_klass, java_lang_Character, Pre ) \ |
207 do_klass(Character_klass, java_lang_Character, Pre ) \ |
205 do_klass(Float_klass, java_lang_Float, Pre ) \ |
208 do_klass(Float_klass, java_lang_Float, Pre ) \ |
206 do_klass(Double_klass, java_lang_Double, Pre ) \ |
209 do_klass(Double_klass, java_lang_Double, Pre ) \ |
447 assert((uint)t < T_VOID+1, "range check"); |
450 assert((uint)t < T_VOID+1, "range check"); |
448 return check_klass(_box_klasses[t]); |
451 return check_klass(_box_klasses[t]); |
449 } |
452 } |
450 static BasicType box_klass_type(Klass* k); // inverse of box_klass |
453 static BasicType box_klass_type(Klass* k); // inverse of box_klass |
451 |
454 |
452 // methods returning lazily loaded klasses |
|
453 // The corresponding method to load the class must be called before calling them. |
|
454 static InstanceKlass* abstract_ownable_synchronizer_klass() { return check_klass(_abstract_ownable_synchronizer_klass); } |
|
455 |
|
456 static void load_abstract_ownable_synchronizer_klass(TRAPS); |
|
457 |
|
458 protected: |
455 protected: |
459 // Returns the class loader data to be used when looking up/updating the |
456 // Returns the class loader data to be used when looking up/updating the |
460 // system dictionary. |
457 // system dictionary. |
461 static ClassLoaderData *class_loader_data(Handle class_loader) { |
458 static ClassLoaderData *class_loader_data(Handle class_loader) { |
462 return ClassLoaderData::class_loader_data(class_loader()); |
459 return ClassLoaderData::class_loader_data(class_loader()); |
727 TRAPS); |
724 TRAPS); |
728 |
725 |
729 // Variables holding commonly used klasses (preloaded) |
726 // Variables holding commonly used klasses (preloaded) |
730 static InstanceKlass* _well_known_klasses[]; |
727 static InstanceKlass* _well_known_klasses[]; |
731 |
728 |
732 // Lazily loaded klasses |
|
733 static InstanceKlass* volatile _abstract_ownable_synchronizer_klass; |
|
734 |
|
735 // table of box klasses (int_klass, etc.) |
729 // table of box klasses (int_klass, etc.) |
736 static InstanceKlass* _box_klasses[T_VOID+1]; |
730 static InstanceKlass* _box_klasses[T_VOID+1]; |
737 |
731 |
738 private: |
732 private: |
739 static oop _java_system_loader; |
733 static oop _java_system_loader; |