21 * questions. |
21 * questions. |
22 * |
22 * |
23 */ |
23 */ |
24 |
24 |
25 #include "precompiled.hpp" |
25 #include "precompiled.hpp" |
|
26 #include "classfile/symbolTable.hpp" |
26 #include "gc_implementation/parallelScavenge/cardTableExtension.hpp" |
27 #include "gc_implementation/parallelScavenge/cardTableExtension.hpp" |
27 #include "gc_implementation/parallelScavenge/gcTaskManager.hpp" |
28 #include "gc_implementation/parallelScavenge/gcTaskManager.hpp" |
28 #include "gc_implementation/parallelScavenge/generationSizer.hpp" |
29 #include "gc_implementation/parallelScavenge/generationSizer.hpp" |
29 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp" |
30 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp" |
30 #include "gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp" |
31 #include "gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp" |
437 reference_processor()->enqueue_discovered_references(&task_executor); |
438 reference_processor()->enqueue_discovered_references(&task_executor); |
438 } else { |
439 } else { |
439 reference_processor()->enqueue_discovered_references(NULL); |
440 reference_processor()->enqueue_discovered_references(NULL); |
440 } |
441 } |
441 |
442 |
|
443 if (!JavaObjectsInPerm) { |
|
444 // Unlink any dead interned Strings |
|
445 StringTable::unlink(&_is_alive_closure); |
|
446 // Process the remaining live ones |
|
447 PSScavengeRootsClosure root_closure(promotion_manager); |
|
448 StringTable::oops_do(&root_closure); |
|
449 } |
|
450 |
442 // Finally, flush the promotion_manager's labs, and deallocate its stacks. |
451 // Finally, flush the promotion_manager's labs, and deallocate its stacks. |
443 PSPromotionManager::post_scavenge(); |
452 PSPromotionManager::post_scavenge(); |
444 |
453 |
445 promotion_failure_occurred = promotion_failed(); |
454 promotion_failure_occurred = promotion_failed(); |
446 if (promotion_failure_occurred) { |
455 if (promotion_failure_occurred) { |