Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/g1/concurrentMark.cpp @ 17635:cb7ec2423207
8027454: Do not traverse string table during G1 remark when treating them as strong roots during initial mark
Summary: Do not try to unlink string table entries unconditionally during remark. This is without side effects as the preceding initial mark always uses the string table as strong roots. Needs to be fixed with class unloading during concurrent mark.
Reviewed-by: brutisso, mgerdin
author | tschatzl |
---|---|
date | Mon, 20 Jan 2014 11:47:29 +0100 |
parents | 5a32d2a3cc1e |
children | 63a4eb8bcd23 58fc1b1523dc |
comparison
equal
deleted
inserted
replaced
17634:5a32d2a3cc1e | 17635:cb7ec2423207 |
---|---|
2526 | 2526 |
2527 rp->verify_no_references_recorded(); | 2527 rp->verify_no_references_recorded(); |
2528 assert(!rp->discovery_enabled(), "Post condition"); | 2528 assert(!rp->discovery_enabled(), "Post condition"); |
2529 } | 2529 } |
2530 | 2530 |
2531 g1h->unlink_string_and_symbol_table(&g1_is_alive); | 2531 g1h->unlink_string_and_symbol_table(&g1_is_alive, |
2532 /* process_strings */ false, // currently strings are always roots | |
2533 /* process_symbols */ true); | |
2532 } | 2534 } |
2533 | 2535 |
2534 void ConcurrentMark::swapMarkBitMaps() { | 2536 void ConcurrentMark::swapMarkBitMaps() { |
2535 CMBitMapRO* temp = _prevMarkBitMap; | 2537 CMBitMapRO* temp = _prevMarkBitMap; |
2536 _prevMarkBitMap = (CMBitMapRO*)_nextMarkBitMap; | 2538 _prevMarkBitMap = (CMBitMapRO*)_nextMarkBitMap; |