Mercurial > hg > truffle
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. |