RFR: [backport] overflow integer during size calculation

Roman Kennke rkennke at redhat.com
Thu Jun 21 09:02:12 UTC 2018


This backports the following patch to shenandoah/jdk10. Applied without
complaints. Ok?

Roman


# HG changeset patch
# User zgu
# Date 1529419060 14400
#      Tue Jun 19 10:37:40 2018 -0400
# Node ID 245b02119412698ef8ca5f5af201c83e790c01da
# Parent  5d2c21fb8e4be5c3e7a709be1d55bbe2ffbd07b0
[backport] overflow integer during size calculation

diff --git
a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.inline.hpp
b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.inline.hpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.inline.hpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.inline.hpp
@@ -96,10 +96,12 @@
 inline void ShenandoahConcurrentMark::count_liveness_humongous(oop obj) {
   shenandoah_assert_in_correct_region(NULL, obj);
   size_t region_idx = _heap->heap_region_index_containing(obj);
-  int size = obj->size() + BrooksPointer::word_size();
+  size_t size = obj->size() + BrooksPointer::word_size();
   size_t num_regions = ShenandoahHeapRegion::required_regions(size *
HeapWordSize);
+
   for (size_t i = region_idx; i < region_idx + num_regions; i++) {
     ShenandoahHeapRegion* chain_reg = _heap->get_region(i);
+    assert(chain_reg->is_humongous(), "Expecting a humongous region");
     chain_reg->increase_live_data_gc_words(chain_reg->used() >>
LogHeapWordSize);
   }
 }



More information about the shenandoah-dev mailing list