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