250 virtual bool supports_tlab_allocation() const; |
250 virtual bool supports_tlab_allocation() const; |
251 virtual size_t tlab_capacity(Thread* thr) const; |
251 virtual size_t tlab_capacity(Thread* thr) const; |
252 virtual size_t unsafe_max_tlab_alloc(Thread* thr) const; |
252 virtual size_t unsafe_max_tlab_alloc(Thread* thr) const; |
253 virtual HeapWord* allocate_new_tlab(size_t size); |
253 virtual HeapWord* allocate_new_tlab(size_t size); |
254 |
254 |
|
255 // Can a compiler initialize a new object without store barriers? |
|
256 // This permission only extends from the creation of a new object |
|
257 // via a TLAB up to the first subsequent safepoint. |
|
258 virtual bool can_elide_tlab_store_barriers() const { |
|
259 return true; |
|
260 } |
|
261 |
|
262 // Can a compiler elide a store barrier when it writes |
|
263 // a permanent oop into the heap? Applies when the compiler |
|
264 // is storing x to the heap, where x->is_perm() is true. |
|
265 virtual bool can_elide_permanent_oop_store_barriers() const { |
|
266 // CMS needs to see all, even intra-generational, ref updates. |
|
267 return !UseConcMarkSweepGC; |
|
268 } |
|
269 |
255 // The "requestor" generation is performing some garbage collection |
270 // The "requestor" generation is performing some garbage collection |
256 // action for which it would be useful to have scratch space. The |
271 // action for which it would be useful to have scratch space. The |
257 // requestor promises to allocate no more than "max_alloc_words" in any |
272 // requestor promises to allocate no more than "max_alloc_words" in any |
258 // older generation (via promotion say.) Any blocks of space that can |
273 // older generation (via promotion say.) Any blocks of space that can |
259 // be provided are returned as a list of ScratchBlocks, sorted by |
274 // be provided are returned as a list of ScratchBlocks, sorted by |