diff --git a/mps/src/buffer.c b/mps/src/buffer.c index 24b549fc18f..55bcefeb858 100644 --- a/mps/src/buffer.c +++ b/mps/src/buffer.c @@ -1,6 +1,6 @@ /* impl.c.buffer: ALLOCATION BUFFER IMPLEMENTATION * - * $HopeName: MMsrc!buffer.c(trunk.61) $ + * $HopeName: MMsrc!buffer.c(trunk.62) $ * Copyright (C) 2000 Harlequin Limited. All rights reserved. * * .purpose: This is (part of) the implementation of allocation buffers. @@ -26,7 +26,7 @@ #include "mpm.h" -SRCID(buffer, "$HopeName: MMsrc!buffer.c(trunk.61) $"); +SRCID(buffer, "$HopeName: MMsrc!buffer.c(trunk.62) $"); /* forward declarations */ @@ -334,12 +334,12 @@ void BufferDetach(Buffer buffer, Pool pool) buffer->emptySize += spare; if (buffer->isMutator) { buffer->pool->emptyMutatorSize += spare; - buffer->arena->emptyMutatorSize += spare; - buffer->arena->allocMutatorSize += + ArenaGlobals(buffer->arena)->emptyMutatorSize += spare; + ArenaGlobals(buffer->arena)->allocMutatorSize += AddrOffset(buffer->base, init); } else { buffer->pool->emptyInternalSize += spare; - buffer->arena->emptyInternalSize += spare; + ArenaGlobals(buffer->arena)->emptyInternalSize += spare; } /* Reset the buffer. */ @@ -661,13 +661,13 @@ void BufferAttach(Buffer buffer, Addr base, Addr limit, if (buffer->isMutator) { if (base != init) { /* see design.mps.buffer.count.alloc.how */ Size prealloc = AddrOffset(base, init); - buffer->arena->allocMutatorSize -= prealloc; + ArenaGlobals(buffer->arena)->allocMutatorSize -= prealloc; } buffer->pool->fillMutatorSize += filled; - buffer->arena->fillMutatorSize += filled; + ArenaGlobals(buffer->arena)->fillMutatorSize += filled; } else { buffer->pool->fillInternalSize += filled; - buffer->arena->fillInternalSize += filled; + ArenaGlobals(buffer->arena)->fillInternalSize += filled; } /* run any class-specific attachment method */ diff --git a/mps/src/pool.c b/mps/src/pool.c index 8b74fba50d1..b02f41f638b 100644 --- a/mps/src/pool.c +++ b/mps/src/pool.c @@ -1,6 +1,6 @@ /* impl.c.pool: POOL IMPLEMENTATION * - * $HopeName: MMsrc!pool.c(trunk.74) $ + * $HopeName: MMsrc!pool.c(trunk.75) $ * Copyright (C) 2001 Harlequin Limited. All rights reserved. * * DESIGN @@ -31,7 +31,7 @@ #include "mpm.h" -SRCID(pool, "$HopeName: MMsrc!pool.c(trunk.74) $"); +SRCID(pool, "$HopeName: MMsrc!pool.c(trunk.75) $"); /* PoolClassCheck -- check a pool class */ @@ -300,7 +300,7 @@ Res PoolAlloc(Addr *pReturn, Pool pool, Size size, /* All PoolAllocs should advance the allocation clock, so we count */ /* it all in the fillMutatorSize field. */ pool->fillMutatorSize += size; - PoolArena(pool)->fillMutatorSize += size; + ArenaGlobals(PoolArena(pool))->fillMutatorSize += size; EVENT_PAW(PoolAlloc, pool, *pReturn, size); @@ -540,6 +540,12 @@ Bool PoolFormat(Format *formatReturn, Pool pool) } +/* PoolOfAddr -- return the pool containing the given address + * + * If the address points to a page assigned to a pool, this returns TRUE + * and sets *poolReturn to that pool. Otherwise, it returns FALSE, and + * *poolReturn is unchanged. */ + Bool PoolOfAddr(Pool *poolReturn, Arena arena, Addr addr) { Tract tract; @@ -568,10 +574,3 @@ Bool PoolHasAddr(Pool pool, Addr addr) managed = PoolOfAddr(&addrPool, arena, addr); return (managed && addrPool == pool); } - - -double PoolMutatorAllocSize(Pool pool) -{ - AVERT(Pool, pool); - return pool->fillMutatorSize - pool->emptyMutatorSize; -} diff --git a/mps/src/walk.c b/mps/src/walk.c index a5d87a6444a..9a3bd0122e3 100644 --- a/mps/src/walk.c +++ b/mps/src/walk.c @@ -1,13 +1,13 @@ /* impl.c.walk: OBJECT WALKER * - * $HopeName: MMsrc!walk.c(trunk.5) $ + * $HopeName: MMsrc!walk.c(trunk.6) $ * Copyright (C) 2001 Harlequin Limited. All rights reserved. */ #include "mpm.h" #include "mps.h" -SRCID(walk, "$HopeName: MMsrc!walk.c(trunk.5) $"); +SRCID(walk, "$HopeName: MMsrc!walk.c(trunk.6) $"); /* Heap Walking @@ -354,7 +354,7 @@ void mps_arena_roots_walk(mps_arena_t mps_arena, mps_roots_stepper_t f, AVER(FUNCHECK(f)); /* p and s are arbitrary closures, hence can't be checked */ - AVER(arena->clamped); /* .assume.parked */ + AVER(ArenaGlobals(arena)->clamped); /* .assume.parked */ AVER(arena->busyTraces == TraceSetEMPTY); /* .assume.parked */ res = ArenaRootsWalk(ArenaGlobals(arena), f, p, s);