From ec9fd145fbeedaf48fea2db3e2f7d4e66ca0521c Mon Sep 17 00:00:00 2001 From: Richard Kistruck Date: Mon, 26 Apr 2010 16:06:36 +0100 Subject: [PATCH] Mps br/vmem arenavm.c: (diagnostic variety only) fix floating point exception after a collection with 0 bytes condemned The VMCompact diag was calculating the live percentage by dividing by condemned size. Don't do this if condemned is zero. Copied from Perforce Change: 170441 ServerID: perforce.ravenbrook.com --- mps/code/arenavm.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mps/code/arenavm.c b/mps/code/arenavm.c index e675f9a58c3..40a4d28a9b7 100644 --- a/mps/code/arenavm.c +++ b/mps/code/arenavm.c @@ -1676,8 +1676,11 @@ static void VMCompact(Arena arena, Trace trace) Size vmem2 = VMArenaReserved(arena); Size vmemD = vmem1 - vmem2; Size live = trace->forwardedSize + trace->preservedInPlaceSize; - Size livePerc = live / (trace->condemned / 100); - + Size livePerc = 0; + + if(trace->condemned / 100 != 0) + livePerc = live / (trace->condemned / 100); + /* VMCompact diag: emit for all client-requested collections, */ /* plus any others where chunks were gained or lost during the */ /* collection. */