< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahPacer.inline.hpp

Print this page
rev 59716 : 8247367: Shenandoah: pacer should wait on lock instead of exponential backoff
Reviewed-by: XXX

*** 46,56 **** } inline void ShenandoahPacer::report_internal(size_t words) { assert(ShenandoahPacing, "Only be here when pacing is enabled"); STATIC_ASSERT(sizeof(size_t) <= sizeof(intptr_t)); ! Atomic::add(&_budget, (intptr_t)words); } inline void ShenandoahPacer::report_progress_internal(size_t words) { assert(ShenandoahPacing, "Only be here when pacing is enabled"); STATIC_ASSERT(sizeof(size_t) <= sizeof(intptr_t)); --- 46,63 ---- } inline void ShenandoahPacer::report_internal(size_t words) { assert(ShenandoahPacing, "Only be here when pacing is enabled"); STATIC_ASSERT(sizeof(size_t) <= sizeof(intptr_t)); ! intptr_t inc = (intptr_t) words; ! intptr_t new_budget = Atomic::add(&_budget, inc); ! ! // Was the budget replenished beyond zero? Then all pacing claims ! // are satisfied, notify the waiters. ! if (new_budget >= 0 && (new_budget - inc) < 0) { ! notify_waiters(); ! } } inline void ShenandoahPacer::report_progress_internal(size_t words) { assert(ShenandoahPacing, "Only be here when pacing is enabled"); STATIC_ASSERT(sizeof(size_t) <= sizeof(intptr_t));
< prev index next >