Mercurial > hg > graal-compiler
comparison src/share/vm/memory/genCollectedHeap.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 | 30c99d8e0f02 |
children | 439f0d76cff3 |
comparison
equal
deleted
inserted
replaced
20277:882004b9e7e1 | 20278:2c6ef90f030a |
---|---|
76 | 76 |
77 // In support of ExplicitGCInvokesConcurrent functionality | 77 // In support of ExplicitGCInvokesConcurrent functionality |
78 unsigned int _full_collections_completed; | 78 unsigned int _full_collections_completed; |
79 | 79 |
80 // Data structure for claiming the (potentially) parallel tasks in | 80 // Data structure for claiming the (potentially) parallel tasks in |
81 // (gen-specific) strong roots processing. | 81 // (gen-specific) roots processing. |
82 SubTasksDone* _gen_process_strong_tasks; | 82 SubTasksDone* _gen_process_roots_tasks; |
83 SubTasksDone* gen_process_strong_tasks() { return _gen_process_strong_tasks; } | 83 SubTasksDone* gen_process_roots_tasks() { return _gen_process_roots_tasks; } |
84 | 84 |
85 // In block contents verification, the number of header words to skip | 85 // In block contents verification, the number of header words to skip |
86 NOT_PRODUCT(static size_t _skip_header_HeapWords;) | 86 NOT_PRODUCT(static size_t _skip_header_HeapWords;) |
87 | 87 |
88 protected: | 88 protected: |
409 // explicitly mark reachable objects in younger generations, to avoid | 409 // explicitly mark reachable objects in younger generations, to avoid |
410 // excess storage retention.) | 410 // excess storage retention.) |
411 // The "so" argument determines which of the roots | 411 // The "so" argument determines which of the roots |
412 // the closure is applied to: | 412 // the closure is applied to: |
413 // "SO_None" does none; | 413 // "SO_None" does none; |
414 // "SO_AllClasses" applies the closure to all entries in the SystemDictionary; | 414 private: |
415 // "SO_SystemClasses" to all the "system" classes and loaders; | 415 void gen_process_roots(int level, |
416 // "SO_Strings" applies the closure to all entries in the StringTable. | 416 bool younger_gens_as_roots, |
417 void gen_process_strong_roots(int level, | 417 bool activate_scope, |
418 bool younger_gens_as_roots, | 418 SharedHeap::ScanningOption so, |
419 // The remaining arguments are in an order | 419 OopsInGenClosure* not_older_gens, |
420 // consistent with SharedHeap::process_strong_roots: | 420 OopsInGenClosure* weak_roots, |
421 bool activate_scope, | 421 OopsInGenClosure* older_gens, |
422 SharedHeap::ScanningOption so, | 422 CLDClosure* cld_closure, |
423 OopsInGenClosure* not_older_gens, | 423 CLDClosure* weak_cld_closure, |
424 OopsInGenClosure* older_gens, | 424 CodeBlobClosure* code_closure); |
425 KlassClosure* klass_closure); | 425 |
426 public: | |
427 static const bool StrongAndWeakRoots = false; | |
428 static const bool StrongRootsOnly = true; | |
429 | |
430 void gen_process_roots(int level, | |
431 bool younger_gens_as_roots, | |
432 bool activate_scope, | |
433 SharedHeap::ScanningOption so, | |
434 bool only_strong_roots, | |
435 OopsInGenClosure* not_older_gens, | |
436 OopsInGenClosure* older_gens, | |
437 CLDClosure* cld_closure); | |
426 | 438 |
427 // Apply "root_closure" to all the weak roots of the system. | 439 // Apply "root_closure" to all the weak roots of the system. |
428 // These include JNI weak roots, string table, | 440 // These include JNI weak roots, string table, |
429 // and referents of reachable weak refs. | 441 // and referents of reachable weak refs. |
430 void gen_process_weak_roots(OopClosure* root_closure); | 442 void gen_process_weak_roots(OopClosure* root_closure); |