Mercurial > hg > graal-compiler
diff src/share/vm/gc_implementation/shared/allocationStats.hpp @ 3775:f75137faa7fe
6916968: CMS: freeList.cpp:304 assert(_allocation_stats.prevSweep() + ..., "Conservation Principle")
Summary: Fix assert and adjust demand volume computation by adding missing factor.
Reviewed-by: jmasa, tonyp
author | ysr |
---|---|
date | Mon, 20 Jun 2011 09:42:26 -0700 |
parents | c69b1043dfb1 |
children | f69a5d43dc19 |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/shared/allocationStats.hpp Thu Jun 16 15:51:57 2011 -0400 +++ b/src/share/vm/gc_implementation/shared/allocationStats.hpp Mon Jun 20 09:42:26 2011 -0700 @@ -99,14 +99,16 @@ // vulnerable to noisy glitches. In such cases, we // ignore the current sample and use currently available // historical estimates. - // XXX NEEDS TO BE FIXED - // assert(prevSweep() + splitBirths() >= splitDeaths() + (ssize_t)count, "Conservation Principle"); - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - // "Total Stock" "Not used at this block size" + assert(prevSweep() + splitBirths() + coalBirths() // "Total Production Stock" + >= splitDeaths() + coalDeaths() + (ssize_t)count, // "Current stock + depletion" + "Conservation Principle"); if (inter_sweep_current > _threshold) { - ssize_t demand = prevSweep() - (ssize_t)count + splitBirths() - splitDeaths(); - // XXX NEEDS TO BE FIXED - // assert(demand >= 0, "Demand should be non-negative"); + ssize_t demand = prevSweep() - (ssize_t)count + splitBirths() + coalBirths() + - splitDeaths() - coalDeaths(); + assert(demand >= 0, + err_msg("Demand (" SSIZE_FORMAT ") should be non-negative for " + PTR_FORMAT " (size=" SIZE_FORMAT ")", + demand, this, count)); // Defensive: adjust for imprecision in event counting if (demand < 0) { demand = 0;