comparison src/share/vm/runtime/thread.cpp @ 1027:39b01ab7035a

6888898: CMS: ReduceInitialCardMarks unsafe in the presence of cms precleaning 6889757: G1: enable card mark elision for initializing writes from compiled code (ReduceInitialCardMarks) Summary: Defer the (compiler-elided) card-mark upon a slow-path allocation until after the store and before the next subsequent safepoint; G1 now answers yes to can_elide_tlab_write_barriers(). Reviewed-by: jcoomes, kvn, never
author ysr
date Fri, 16 Oct 2009 02:05:46 -0700
parents 46b819ba120b
children 4b966d9946a3 e66fd840cb6b
comparison
equal deleted inserted replaced
1025:1ee412f7fec9 1027:39b01ab7035a
1211 _dirty_card_queue(&_dirty_card_queue_set) 1211 _dirty_card_queue(&_dirty_card_queue_set)
1212 #endif // !SERIALGC 1212 #endif // !SERIALGC
1213 { 1213 {
1214 initialize(); 1214 initialize();
1215 _is_attaching = is_attaching; 1215 _is_attaching = is_attaching;
1216 assert(_deferred_card_mark.is_empty(), "Default MemRegion ctor");
1216 } 1217 }
1217 1218
1218 bool JavaThread::reguard_stack(address cur_sp) { 1219 bool JavaThread::reguard_stack(address cur_sp) {
1219 if (_stack_guard_state != stack_guard_yellow_disabled) { 1220 if (_stack_guard_state != stack_guard_yellow_disabled) {
1220 return true; // Stack already guarded or guard pages not needed. 1221 return true; // Stack already guarded or guard pages not needed.
2316 frames_do(frame_gc_prologue); 2317 frames_do(frame_gc_prologue);
2317 } 2318 }
2318 2319
2319 2320
2320 void JavaThread::oops_do(OopClosure* f, CodeBlobClosure* cf) { 2321 void JavaThread::oops_do(OopClosure* f, CodeBlobClosure* cf) {
2322 // Flush deferred store-barriers, if any, associated with
2323 // initializing stores done by this JavaThread in the current epoch.
2324 Universe::heap()->flush_deferred_store_barrier(this);
2325
2321 // The ThreadProfiler oops_do is done from FlatProfiler::oops_do 2326 // The ThreadProfiler oops_do is done from FlatProfiler::oops_do
2322 // since there may be more than one thread using each ThreadProfiler. 2327 // since there may be more than one thread using each ThreadProfiler.
2323 2328
2324 // Traverse the GCHandles 2329 // Traverse the GCHandles
2325 Thread::oops_do(f, cf); 2330 Thread::oops_do(f, cf);