src/share/vm/oops/instanceKlass.hpp

changeset 6992
2c6ef90f030a
parent 6632
386dd1c71858
child 7089
6e0cb14ce59b
equal deleted inserted replaced
6991:882004b9e7e1 6992:2c6ef90f030a
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

mercurial