hotspot/src/share/vm/gc/cms/compactibleFreeListSpace.cpp
changeset 35168 927833845cf6
parent 33587 c04a7462b0e6
child 35169 e75913632d00
--- a/hotspot/src/share/vm/gc/cms/compactibleFreeListSpace.cpp	Mon Dec 07 17:16:13 2015 +0000
+++ b/hotspot/src/share/vm/gc/cms/compactibleFreeListSpace.cpp	Mon Dec 14 17:06:06 2015 -0500
@@ -2517,7 +2517,11 @@
   // Lacking sufficient experience, CMSOldPLABResizeQuicker is disabled by
   // default.
   if (ResizeOldPLAB && CMSOldPLABResizeQuicker) {
-    size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks);
+    //
+    // On a 32-bit VM, the denominator can become zero because of integer overflow,
+    // which is why there is a cast to double.
+    //
+    size_t multiple = (size_t) (_num_blocks[word_sz]/(((double)CMSOldPLABToleranceFactor)*CMSOldPLABNumRefills*n_blks));
     n_blks +=  CMSOldPLABReactivityFactor*multiple*n_blks;
     n_blks = MIN2(n_blks, CMSOldPLABMax);
   }