equal
deleted
inserted
replaced
233 } |
233 } |
234 } |
234 } |
235 |
235 |
236 void CollectedHeap::set_barrier_set(BarrierSet* barrier_set) { |
236 void CollectedHeap::set_barrier_set(BarrierSet* barrier_set) { |
237 _barrier_set = barrier_set; |
237 _barrier_set = barrier_set; |
238 oopDesc::set_bs(_barrier_set); |
238 BarrierSet::set_bs(barrier_set); |
239 } |
239 } |
240 |
240 |
241 void CollectedHeap::pre_initialize() { |
241 void CollectedHeap::pre_initialize() { |
242 // Used for ReduceInitialCardMarks (when COMPILER2 is used); |
242 // Used for ReduceInitialCardMarks (when COMPILER2 is used); |
243 // otherwise remains unused. |
243 // otherwise remains unused. |
244 #if defined(COMPILER2) || INCLUDE_JVMCI |
244 #if COMPILER2_OR_JVMCI |
245 _defer_initial_card_mark = is_server_compilation_mode_vm() && ReduceInitialCardMarks && can_elide_tlab_store_barriers() |
245 _defer_initial_card_mark = is_server_compilation_mode_vm() && ReduceInitialCardMarks && can_elide_tlab_store_barriers() |
246 && (DeferInitialCardMark || card_mark_must_follow_store()); |
246 && (DeferInitialCardMark || card_mark_must_follow_store()); |
247 #else |
247 #else |
248 assert(_defer_initial_card_mark == false, "Who would set it?"); |
248 assert(_defer_initial_card_mark == false, "Who would set it?"); |
249 #endif |
249 #endif |
311 HeapWord* obj = Universe::heap()->allocate_new_tlab(new_tlab_size); |
311 HeapWord* obj = Universe::heap()->allocate_new_tlab(new_tlab_size); |
312 if (obj == NULL) { |
312 if (obj == NULL) { |
313 return NULL; |
313 return NULL; |
314 } |
314 } |
315 |
315 |
316 AllocTracer::send_allocation_in_new_tlab_event(klass, new_tlab_size * HeapWordSize, size * HeapWordSize); |
316 AllocTracer::send_allocation_in_new_tlab(klass, obj, new_tlab_size * HeapWordSize, size * HeapWordSize, thread); |
317 |
317 |
318 if (ZeroTLAB) { |
318 if (ZeroTLAB) { |
319 // ..and clear it. |
319 // ..and clear it. |
320 Copy::zero_to_words(obj, new_tlab_size); |
320 Copy::zero_to_words(obj, new_tlab_size); |
321 } else { |
321 } else { |
543 assert(!use_tlab || Threads::first() != NULL, |
543 assert(!use_tlab || Threads::first() != NULL, |
544 "Attempt to fill tlabs before main thread has been added" |
544 "Attempt to fill tlabs before main thread has been added" |
545 " to threads list is doomed to failure!"); |
545 " to threads list is doomed to failure!"); |
546 for (JavaThread *thread = Threads::first(); thread; thread = thread->next()) { |
546 for (JavaThread *thread = Threads::first(); thread; thread = thread->next()) { |
547 if (use_tlab) thread->tlab().make_parsable(retire_tlabs); |
547 if (use_tlab) thread->tlab().make_parsable(retire_tlabs); |
548 #if defined(COMPILER2) || INCLUDE_JVMCI |
548 #if COMPILER2_OR_JVMCI |
549 // The deferred store barriers must all have been flushed to the |
549 // The deferred store barriers must all have been flushed to the |
550 // card-table (or other remembered set structure) before GC starts |
550 // card-table (or other remembered set structure) before GC starts |
551 // processing the card-table (or other remembered set). |
551 // processing the card-table (or other remembered set). |
552 if (deferred) flush_deferred_store_barrier(thread); |
552 if (deferred) flush_deferred_store_barrier(thread); |
553 #else |
553 #else |