Mercurial > hg > graal-jvmci-8
comparison src/share/vm/oops/instanceKlass.hpp @ 20278:2c6ef90f030a
8049421: G1 Class Unloading after completing a concurrent mark cycle
Reviewed-by: tschatzl, ehelin, brutisso, coleenp, roland, iveresov
Contributed-by: stefan.karlsson@oracle.com, mikael.gerdin@oracle.com
author | stefank |
---|---|
date | Mon, 07 Jul 2014 10:12:40 +0200 |
parents | 386dd1c71858 |
children | 6e0cb14ce59b |
comparison
equal
deleted
inserted
replaced
20277:882004b9e7e1 | 20278: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 |