--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Mon May 27 12:56:34 2013 +0200
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Mon May 27 12:58:42 2013 +0200
@@ -450,11 +450,9 @@
reference_processor()->enqueue_discovered_references(NULL);
}
- // Unlink any dead interned Strings
- StringTable::unlink(&_is_alive_closure);
- // Process the remaining live ones
- PSScavengeRootsClosure root_closure(promotion_manager);
- StringTable::oops_do(&root_closure);
+ // Unlink any dead interned Strings and process the remaining live ones.
+ PSScavengeRootsClosure root_closure(promotion_manager);
+ StringTable::unlink_or_oops_do(&_is_alive_closure, &root_closure);
// Finally, flush the promotion_manager's labs, and deallocate its stacks.
PSPromotionManager::post_scavenge();