comparison src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @ 10940:d85bdcb38fa2

Apply patch by Mikael Gerdin which fixes filtered strong marking of nmethods
author Christos Kotselidis <christos.kotselidis@oracle.com>
date Fri, 02 Aug 2013 13:35:13 +0200
parents 836a62f43af9
children d0aeaf72c7bd
comparison
equal deleted inserted replaced
10939:f22cbff51c12 10940:d85bdcb38fa2
5125 5125
5126 BufferingOopClosure buf_scan_non_heap_roots(scan_non_heap_roots); 5126 BufferingOopClosure buf_scan_non_heap_roots(scan_non_heap_roots);
5127 5127
5128 // Walk the code cache w/o buffering, because StarTask cannot handle 5128 // Walk the code cache w/o buffering, because StarTask cannot handle
5129 // unaligned oop locations. 5129 // unaligned oop locations.
5130 G1FilteredCodeBlobToOopClosure eager_scan_code_roots(this, scan_non_heap_roots); 5130 G1FilteredCodeBlobToOopClosure eager_scan_cs_code_roots(this, scan_non_heap_roots);
5131
5132 // Scan all code roots from stack
5133 CodeBlobToOopClosure eager_scan_all_code_roots(scan_non_heap_roots, true);
5134 CodeBlobToOopClosure* blobs = &eager_scan_cs_code_roots;
5135 if (UseNewCode && g1_policy()->during_initial_mark_pause()) {
5136 // during initial-mark we need to take care to follow all code roots
5137 blobs = &eager_scan_all_code_roots;
5138 }
5131 5139
5132 process_strong_roots(false, // no scoping; this is parallel code 5140 process_strong_roots(false, // no scoping; this is parallel code
5133 is_scavenging, so, 5141 is_scavenging, so,
5134 &buf_scan_non_heap_roots, 5142 &buf_scan_non_heap_roots,
5135 &eager_scan_code_roots, 5143 blobs,
5136 scan_klasses 5144 scan_klasses
5137 ); 5145 );
5138 5146
5139 // Now the CM ref_processor roots. 5147 // Now the CM ref_processor roots.
5140 if (!_process_strong_tasks->is_task_claimed(G1H_PS_refProcessor_oops_do)) { 5148 if (!_process_strong_tasks->is_task_claimed(G1H_PS_refProcessor_oops_do)) {