comparison src/share/vm/opto/library_call.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 62001a362ce9
children cd37471eaecc
comparison
equal deleted inserted replaced
1025:1ee412f7fec9 1027:39b01ab7035a
4158 result_val->init_req(_objArray_path, alloc_obj); 4158 result_val->init_req(_objArray_path, alloc_obj);
4159 result_i_o ->set_req(_objArray_path, i_o()); 4159 result_i_o ->set_req(_objArray_path, i_o());
4160 result_mem ->set_req(_objArray_path, reset_memory()); 4160 result_mem ->set_req(_objArray_path, reset_memory());
4161 } 4161 }
4162 } 4162 }
4163 // We can dispense with card marks if we know the allocation
4164 // comes out of eden (TLAB)... In fact, ReduceInitialCardMarks
4165 // causes the non-eden paths to simulate a fresh allocation,
4166 // insofar that no further card marks are required to initialize
4167 // the object.
4168
4169 // Otherwise, there are no card marks to worry about. 4163 // Otherwise, there are no card marks to worry about.
4164 // (We can dispense with card marks if we know the allocation
4165 // comes out of eden (TLAB)... In fact, ReduceInitialCardMarks
4166 // causes the non-eden paths to take compensating steps to
4167 // simulate a fresh allocation, so that no further
4168 // card marks are required in compiled code to initialize
4169 // the object.)
4170 4170
4171 if (!stopped()) { 4171 if (!stopped()) {
4172 copy_to_clone(obj, alloc_obj, obj_size, true, false); 4172 copy_to_clone(obj, alloc_obj, obj_size, true, false);
4173 4173
4174 // Present the results of the copy. 4174 // Present the results of the copy.