< prev index next >

src/share/vm/utilities/numberSeq.cpp

Print this page
rev 10576 : [backport] Trace and report total allocation latency and sizes

@@ -357,17 +357,20 @@
 BinaryMagnitudeSeq::BinaryMagnitudeSeq() {
   _mags = NEW_C_HEAP_ARRAY(jlong, BitsPerJavaLong, mtInternal);
   for (int c = 0; c < BitsPerJavaLong; c++) {
     _mags[c] = 0;
   }
+  _sum = 0;
 }
 
 BinaryMagnitudeSeq::~BinaryMagnitudeSeq() {
   FREE_C_HEAP_ARRAY(size_t, _mags, mtInternal);
 }
 
 void BinaryMagnitudeSeq::add(size_t val) {
+  Atomic::add(val, &_sum);
+
   int mag = log2_intptr(val) + 1;
 
   // Defensively saturate for product bits:
   if (mag < 0) {
     assert (false, err_msg("bucket index (%d) underflow for value (" SIZE_FORMAT ")", mag, val));

@@ -396,10 +399,14 @@
     r += _mags[c];
   }
   return r;
 }
 
+size_t BinaryMagnitudeSeq::sum() const {
+  return _sum;
+}
+
 int BinaryMagnitudeSeq::min_level() const {
   for (int c = 0; c < BitsPerJavaLong; c++) {
     if (_mags[c] != 0) {
       return c;
     }
< prev index next >