< prev index next >

src/hotspot/share/runtime/thread.cpp

Print this page
rev 48920 : [backport] Use PLAB for evacuations instead of TLAB

*** 306,315 **** --- 306,316 ---- "bug in forced alignment of thread objects"); } #endif // ASSERT _oom_during_evac = 0; + _gclab = NULL; } void Thread::set_oom_during_evac(bool oom) { if (oom) { _oom_during_evac |= 1;
*** 2042,2053 **** // card marks have been flushed (above) so that any entries that are // added to the thread's dirty card queue as a result are not lost. if (UseG1GC || (UseShenandoahGC && (ShenandoahSATBBarrier || ShenandoahKeepAliveBarrier || ShenandoahStoreValEnqueueBarrier))) { flush_barrier_queues(); } ! if (UseShenandoahGC && UseTLAB && gclab().is_initialized()) { ! gclab().make_parsable(true); } #endif // INCLUDE_ALL_GCS log_info(os, thread)("JavaThread %s (tid: " UINTX_FORMAT ").", exit_type == JavaThread::normal_exit ? "exiting" : "detaching", --- 2043,2054 ---- // card marks have been flushed (above) so that any entries that are // added to the thread's dirty card queue as a result are not lost. if (UseG1GC || (UseShenandoahGC && (ShenandoahSATBBarrier || ShenandoahKeepAliveBarrier || ShenandoahStoreValEnqueueBarrier))) { flush_barrier_queues(); } ! if (UseShenandoahGC && gclab() != NULL) { ! ShenandoahHeap::heap()->finalize_mutator_gclab(this); } #endif // INCLUDE_ALL_GCS log_info(os, thread)("JavaThread %s (tid: " UINTX_FORMAT ").", exit_type == JavaThread::normal_exit ? "exiting" : "detaching",
*** 2103,2112 **** --- 2104,2117 ---- // The dirty card queue should have been constructed with its // active field set to true. assert(dirty_queue.is_active(), "dirty card queue should be active"); _gc_state = _gc_state_global; + + if (UseShenandoahGC) { + ShenandoahHeap::heap()->initialize_gclab(this); + } } #endif // INCLUDE_ALL_GCS void JavaThread::cleanup_failed_attach_current_thread() { if (active_handles() != NULL) {
*** 2130,2141 **** #if INCLUDE_ALL_GCS if (UseG1GC || (UseShenandoahGC && (ShenandoahSATBBarrier || ShenandoahKeepAliveBarrier || ShenandoahStoreValEnqueueBarrier))) { flush_barrier_queues(); } ! if (UseShenandoahGC && UseTLAB && gclab().is_initialized()) { ! gclab().make_parsable(true); } #endif // INCLUDE_ALL_GCS Threads::remove(this); this->smr_delete(); --- 2135,2146 ---- #if INCLUDE_ALL_GCS if (UseG1GC || (UseShenandoahGC && (ShenandoahSATBBarrier || ShenandoahKeepAliveBarrier || ShenandoahStoreValEnqueueBarrier))) { flush_barrier_queues(); } ! if (UseShenandoahGC && gclab() != NULL) { ! gclab()->flush_and_retire_stats(ShenandoahHeap::heap()->mutator_gclab_stats()); } #endif // INCLUDE_ALL_GCS Threads::remove(this); this->smr_delete();
< prev index next >