Mercurial > hg > graal-jvmci-8
comparison src/share/vm/oops/instanceKlass.hpp @ 975:83c29a26f67c
6879572: SA fails _is_marked_dependent not found
Reviewed-by: kamg, dcubed
author | acorn |
---|---|
date | Wed, 16 Sep 2009 15:42:46 -0400 |
parents | 26b774d693aa |
children | 74a5db69c1fe |
comparison
equal
deleted
inserted
replaced
974:26b774d693aa | 975:83c29a26f67c |
---|---|
133 linked, // successfully linked/verified (but not initialized yet) | 133 linked, // successfully linked/verified (but not initialized yet) |
134 being_initialized, // currently running class initializer | 134 being_initialized, // currently running class initializer |
135 fully_initialized, // initialized (successfull final state) | 135 fully_initialized, // initialized (successfull final state) |
136 initialization_error // error happened during initialization | 136 initialization_error // error happened during initialization |
137 }; | 137 }; |
138 | |
139 // smaller footprint for boolean flags | |
140 enum ClassFlags { | |
141 _noflags = 0, // initial value | |
142 _rewritten = 0x00000001U, // rewritten | |
143 _should_verify = 0x00000002U, // defineClass specified conditional verification | |
144 _has_nonstatic_fields = 0x00000004U, // for sizing with UseCompressedOops | |
145 _is_marked_dependent = 0x00000008U // used for marking during flushing and deoptimization | |
146 }; | |
147 | 138 |
148 public: | 139 public: |
149 oop* oop_block_beg() const { return adr_array_klasses(); } | 140 oop* oop_block_beg() const { return adr_array_klasses(); } |
150 oop* oop_block_end() const { return adr_methods_default_annotations() + 1; } | 141 oop* oop_block_end() const { return adr_methods_default_annotations() + 1; } |
151 | 142 |
221 // (including inherited fields but after header_size()). | 212 // (including inherited fields but after header_size()). |
222 int _nonstatic_field_size; | 213 int _nonstatic_field_size; |
223 int _static_field_size; // number words used by static fields (oop and non-oop) in this klass | 214 int _static_field_size; // number words used by static fields (oop and non-oop) in this klass |
224 int _static_oop_field_size;// number of static oop fields in this klass | 215 int _static_oop_field_size;// number of static oop fields in this klass |
225 int _nonstatic_oop_map_size;// size in words of nonstatic oop map blocks | 216 int _nonstatic_oop_map_size;// size in words of nonstatic oop map blocks |
226 int _class_flags; // internal class state flags | 217 bool _is_marked_dependent; // used for marking during flushing and deoptimization |
218 bool _rewritten; // methods rewritten. | |
219 bool _has_nonstatic_fields; // for sizing with UseCompressedOops | |
220 bool _should_verify_class; // allow caching of preverification | |
227 u2 _minor_version; // minor version number of class file | 221 u2 _minor_version; // minor version number of class file |
228 u2 _major_version; // major version number of class file | 222 u2 _major_version; // major version number of class file |
229 ClassState _init_state; // state of class | 223 ClassState _init_state; // state of class |
230 Thread* _init_thread; // Pointer to current thread doing initialization (to handle recusive initialization) | 224 Thread* _init_thread; // Pointer to current thread doing initialization (to handle recusive initialization) |
231 int _vtable_len; // length of Java vtable (in words) | 225 int _vtable_len; // length of Java vtable (in words) |
257 | 251 |
258 friend class instanceKlassKlass; | 252 friend class instanceKlassKlass; |
259 friend class SystemDictionary; | 253 friend class SystemDictionary; |
260 | 254 |
261 public: | 255 public: |
262 bool has_nonstatic_fields() const { return (_class_flags & _has_nonstatic_fields) != 0; } | 256 bool has_nonstatic_fields() const { return _has_nonstatic_fields; } |
263 void set_has_nonstatic_fields() { _class_flags |= _has_nonstatic_fields; } | 257 void set_has_nonstatic_fields(bool b) { _has_nonstatic_fields = b; } |
264 | 258 |
265 // field sizes | 259 // field sizes |
266 int nonstatic_field_size() const { return _nonstatic_field_size; } | 260 int nonstatic_field_size() const { return _nonstatic_field_size; } |
267 void set_nonstatic_field_size(int size) { _nonstatic_field_size = size; } | 261 void set_nonstatic_field_size(int size) { _nonstatic_field_size = size; } |
268 | 262 |
365 bool is_not_initialized() const { return _init_state < being_initialized; } | 359 bool is_not_initialized() const { return _init_state < being_initialized; } |
366 bool is_being_initialized() const { return _init_state == being_initialized; } | 360 bool is_being_initialized() const { return _init_state == being_initialized; } |
367 bool is_in_error_state() const { return _init_state == initialization_error; } | 361 bool is_in_error_state() const { return _init_state == initialization_error; } |
368 bool is_reentrant_initialization(Thread *thread) { return thread == _init_thread; } | 362 bool is_reentrant_initialization(Thread *thread) { return thread == _init_thread; } |
369 int get_init_state() { return _init_state; } // Useful for debugging | 363 int get_init_state() { return _init_state; } // Useful for debugging |
370 bool is_rewritten() const { return (_class_flags & _rewritten) != 0; } | 364 bool is_rewritten() const { return _rewritten; } |
371 | 365 |
372 // defineClass specified verification | 366 // defineClass specified verification |
373 bool should_verify_class() const { return (_class_flags & _should_verify) != 0; } | 367 bool should_verify_class() const { return _should_verify_class; } |
374 void set_should_verify_class() { _class_flags |= _should_verify; } | 368 void set_should_verify_class(bool value) { _should_verify_class = value; } |
375 | 369 |
376 // marking | 370 // marking |
377 bool is_marked_dependent() const { return (_class_flags & _is_marked_dependent) != 0; } | 371 bool is_marked_dependent() const { return _is_marked_dependent; } |
378 void set_is_marked_dependent() { _class_flags |= _is_marked_dependent; } | 372 void set_is_marked_dependent(bool value) { _is_marked_dependent = value; } |
379 void clear_is_marked_dependent() { _class_flags &= ~_is_marked_dependent; } | |
380 | 373 |
381 // initialization (virtuals from Klass) | 374 // initialization (virtuals from Klass) |
382 bool should_be_initialized() const; // means that initialize should be called | 375 bool should_be_initialized() const; // means that initialize should be called |
383 void initialize(TRAPS); | 376 void initialize(TRAPS); |
384 void link_class(TRAPS); | 377 void link_class(TRAPS); |
755 #ifdef ASSERT | 748 #ifdef ASSERT |
756 void set_init_state(ClassState state); | 749 void set_init_state(ClassState state); |
757 #else | 750 #else |
758 void set_init_state(ClassState state) { _init_state = state; } | 751 void set_init_state(ClassState state) { _init_state = state; } |
759 #endif | 752 #endif |
760 void clear_class_flags() { _class_flags = _noflags; } | 753 void set_rewritten() { _rewritten = true; } |
761 void set_rewritten() { _class_flags |= _rewritten; } | |
762 void set_init_thread(Thread *thread) { _init_thread = thread; } | 754 void set_init_thread(Thread *thread) { _init_thread = thread; } |
763 | 755 |
764 u2 idnum_allocated_count() const { return _idnum_allocated_count; } | 756 u2 idnum_allocated_count() const { return _idnum_allocated_count; } |
765 jmethodID* methods_jmethod_ids_acquire() const | 757 jmethodID* methods_jmethod_ids_acquire() const |
766 { return (jmethodID*)OrderAccess::load_ptr_acquire(&_methods_jmethod_ids); } | 758 { return (jmethodID*)OrderAccess::load_ptr_acquire(&_methods_jmethod_ids); } |