Mercurial > hg > truffle
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); |