224 int _nonstatic_oop_map_size;// size in words of nonstatic oop map blocks |
224 int _nonstatic_oop_map_size;// size in words of nonstatic oop map blocks |
225 |
225 |
226 // _is_marked_dependent can be set concurrently, thus cannot be part of the |
226 // _is_marked_dependent can be set concurrently, thus cannot be part of the |
227 // _misc_flags. |
227 // _misc_flags. |
228 bool _is_marked_dependent; // used for marking during flushing and deoptimization |
228 bool _is_marked_dependent; // used for marking during flushing and deoptimization |
|
229 bool _has_unloaded_dependent; |
229 |
230 |
230 enum { |
231 enum { |
231 _misc_rewritten = 1 << 0, // methods rewritten. |
232 _misc_rewritten = 1 << 0, // methods rewritten. |
232 _misc_has_nonstatic_fields = 1 << 1, // for sizing with UseCompressedOops |
233 _misc_has_nonstatic_fields = 1 << 1, // for sizing with UseCompressedOops |
233 _misc_should_verify_class = 1 << 2, // allow caching of preverification |
234 _misc_should_verify_class = 1 << 2, // allow caching of preverification |
471 |
472 |
472 // marking |
473 // marking |
473 bool is_marked_dependent() const { return _is_marked_dependent; } |
474 bool is_marked_dependent() const { return _is_marked_dependent; } |
474 void set_is_marked_dependent(bool value) { _is_marked_dependent = value; } |
475 void set_is_marked_dependent(bool value) { _is_marked_dependent = value; } |
475 |
476 |
|
477 bool has_unloaded_dependent() const { return _has_unloaded_dependent; } |
|
478 void set_has_unloaded_dependent(bool value) { _has_unloaded_dependent = value; } |
|
479 |
476 // initialization (virtuals from Klass) |
480 // initialization (virtuals from Klass) |
477 bool should_be_initialized() const; // means that initialize should be called |
481 bool should_be_initialized() const; // means that initialize should be called |
478 void initialize(TRAPS); |
482 void initialize(TRAPS); |
479 void link_class(TRAPS); |
483 void link_class(TRAPS); |
480 bool link_class_or_fail(TRAPS); // returns false on failure |
484 bool link_class_or_fail(TRAPS); // returns false on failure |
944 void oop_follow_contents(oop obj); |
948 void oop_follow_contents(oop obj); |
945 int oop_adjust_pointers(oop obj); |
949 int oop_adjust_pointers(oop obj); |
946 |
950 |
947 void clean_implementors_list(BoolObjectClosure* is_alive); |
951 void clean_implementors_list(BoolObjectClosure* is_alive); |
948 void clean_method_data(BoolObjectClosure* is_alive); |
952 void clean_method_data(BoolObjectClosure* is_alive); |
|
953 void clean_dependent_nmethods(); |
949 |
954 |
950 // Explicit metaspace deallocation of fields |
955 // Explicit metaspace deallocation of fields |
951 // For RedefineClasses and class file parsing errors, we need to deallocate |
956 // For RedefineClasses and class file parsing errors, we need to deallocate |
952 // instanceKlasses and the metadata they point to. |
957 // instanceKlasses and the metadata they point to. |
953 void deallocate_contents(ClassLoaderData* loader_data); |
958 void deallocate_contents(ClassLoaderData* loader_data); |
1232 _next = next; |
1237 _next = next; |
1233 _count = 1; |
1238 _count = 1; |
1234 } |
1239 } |
1235 int count() { return _count; } |
1240 int count() { return _count; } |
1236 int increment() { _count += 1; return _count; } |
1241 int increment() { _count += 1; return _count; } |
1237 int decrement() { _count -= 1; assert(_count >= 0, "don't underflow"); return _count; } |
1242 int decrement(); |
1238 nmethodBucket* next() { return _next; } |
1243 nmethodBucket* next() { return _next; } |
1239 void set_next(nmethodBucket* b) { _next = b; } |
1244 void set_next(nmethodBucket* b) { _next = b; } |
1240 nmethod* get_nmethod() { return _nmethod; } |
1245 nmethod* get_nmethod() { return _nmethod; } |
1241 }; |
1246 }; |
1242 |
1247 |