RFR: Fix unsigned comparison in plab.cpp

Aleksey Shipilev shade at redhat.com
Fri May 18 12:23:12 UTC 2018


32-bit builds started to fail with:

/pool/buildbot/slaves/sobornost/shenandoah-jdkX/build/src/hotspot/share/gc/shared/plab.cpp:87:29:
error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
     assert(_hard_end - _top >= oopDesc::header_size() + Universe::heap()->oop_extra_words(),
            ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Fix:

diff -r 19704db7c2c2 src/hotspot/share/gc/shared/plab.cpp
--- a/src/hotspot/share/gc/shared/plab.cpp	Fri May 18 14:02:15 2018 +0200
+++ b/src/hotspot/share/gc/shared/plab.cpp	Fri May 18 14:19:41 2018 +0200
@@ -84,7 +84,7 @@
 size_t PLAB::retire_internal() {
   size_t result = 0;
   if (_top < _hard_end) {
-    assert(_hard_end - _top >= oopDesc::header_size() + Universe::heap()->oop_extra_words(),
+    assert(pointer_delta(_hard_end, _top) >= (size_t)(oopDesc::header_size() +
Universe::heap()->oop_extra_words()),
            "better have enough space left to fill with dummy");
     HeapWord* obj = Universe::heap()->tlab_post_allocation_setup(_top);
     CollectedHeap::fill_with_object(obj, _hard_end);


Testing: x86_32, x86_64 builds

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list