< prev index next >
src/share/vm/utilities/numberSeq.cpp
Print this page
rev 10576 : [backport] Trace and report total allocation latency and sizes
*** 357,373 ****
--- 357,376 ----
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,405 ****
--- 399,412 ----
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 >