RFR: Fix ShHeap::notify_alloc usages: it accepts words, not bytes
Roman Kennke
roman at kennke.org
Wed Aug 22 09:57:02 UTC 2018
Yup. Good find.
Am 22. August 2018 11:24:23 MESZ schrieb Aleksey Shipilev <shade at redhat.com>:
>There is a little bug in tracking the current allocated size, which
>trips the new alloc-rate-based
>heuristics off. The argument for notify_alloc is words, not bytes. Fix:
>
>diff -r a98f127f8c22
>src/hotspot/share/gc/shenandoah/shenandoahFreeSet.cpp
>--- a/src/hotspot/share/gc/shenandoah/shenandoahFreeSet.cpp Wed Aug
>22 10:50:28 2018 +0200
>+++ b/src/hotspot/share/gc/shenandoah/shenandoahFreeSet.cpp Wed Aug
>22 11:22:41 2018 +0200
>@@ -218,5 +218,5 @@
> if (waste > 0) {
> increase_used(waste);
>- _heap->notify_alloc(waste, true);
>+ _heap->notify_alloc_words(waste >> LogHeapWordSize, true);
> }
>
>@@ -329,5 +329,5 @@
> if (remainder != 0) {
> // Record this remainder as allocation waste
>- _heap->notify_alloc(ShenandoahHeapRegion::region_size_words() -
>remainder, true);
>+
>_heap->notify_alloc_words(ShenandoahHeapRegion::region_size_words() -
>remainder, true);
> }
>
>diff -r a98f127f8c22 src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp
>--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Wed Aug
>22 10:50:28 2018 +0200
>+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Wed Aug
>22 11:22:41 2018 +0200
>@@ -648,5 +648,5 @@
> }
>
>-void ShenandoahHeap::notify_alloc(size_t words, bool waste) {
>+void ShenandoahHeap::notify_alloc_words(size_t words, bool waste) {
> size_t bytes = words * HeapWordSize;
> if (!waste) {
>@@ -865,5 +865,5 @@
> alloc_type_to_string(req.type()), requested, actual);
>
>- notify_alloc(actual, false);
>+ notify_alloc_words(actual, false);
>
>// If we requested more than we were granted, give the rest back to
>pacer.
>diff -r a98f127f8c22 src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp
>--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp Wed Aug
>22 10:50:28 2018 +0200
>+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp Wed Aug
>22 11:22:41 2018 +0200
>@@ -515,5 +515,5 @@
> void increase_allocated(size_t bytes);
>
>- void notify_alloc(size_t words, bool waste);
>+ void notify_alloc_words(size_t words, bool waste);
>
>
>Testing: misbehaving heuristics, tier1_gc_shenandoah
>
>Thanks,
>-Aleksey
--
Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.
More information about the shenandoah-dev
mailing list