comparison src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp @ 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 148e5441d916
children 7b0e9cba0307
comparison
equal deleted inserted replaced
1025:1ee412f7fec9 1027:39b01ab7035a
127 127
128 bool is_permanent(const void *p) const { // committed part 128 bool is_permanent(const void *p) const { // committed part
129 return perm_gen()->is_in(p); 129 return perm_gen()->is_in(p);
130 } 130 }
131 131
132 static bool is_in_young(oop *p); // reserved part 132 inline bool is_in_young(oop p); // reserved part
133 static bool is_in_old_or_perm(oop *p); // reserved part 133 inline bool is_in_old_or_perm(oop p); // reserved part
134 134
135 // Memory allocation. "gc_time_limit_was_exceeded" will 135 // Memory allocation. "gc_time_limit_was_exceeded" will
136 // be set to true if the adaptive size policy determine that 136 // be set to true if the adaptive size policy determine that
137 // an excessive amount of time is being spent doing collections 137 // an excessive amount of time is being spent doing collections
138 // and caused a NULL to be returned. If a NULL is not returned, 138 // and caused a NULL to be returned. If a NULL is not returned,
189 // via a TLAB up to the first subsequent safepoint. 189 // via a TLAB up to the first subsequent safepoint.
190 virtual bool can_elide_tlab_store_barriers() const { 190 virtual bool can_elide_tlab_store_barriers() const {
191 return true; 191 return true;
192 } 192 }
193 193
194 // Return true if we don't we need a store barrier for
195 // initializing stores to an object at this address.
196 virtual bool can_elide_initializing_store_barrier(oop new_obj);
197
194 // Can a compiler elide a store barrier when it writes 198 // Can a compiler elide a store barrier when it writes
195 // a permanent oop into the heap? Applies when the compiler 199 // a permanent oop into the heap? Applies when the compiler
196 // is storing x to the heap, where x->is_perm() is true. 200 // is storing x to the heap, where x->is_perm() is true.
197 virtual bool can_elide_permanent_oop_store_barriers() const { 201 virtual bool can_elide_permanent_oop_store_barriers() const {
198 return true; 202 return true;