From e2d346aa6701d8abc3fda16cc958bac8481e8976 Mon Sep 17 00:00:00 2001 From: Gareth Rees Date: Sun, 18 May 2014 22:27:07 +0100 Subject: [PATCH] No need to store primary chunk in the closure: can get it via the arena. Copied from Perforce Change: 186164 ServerID: perforce.ravenbrook.com --- mps/code/arena.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mps/code/arena.c b/mps/code/arena.c index 8a70303386f..2453769fca9 100644 --- a/mps/code/arena.c +++ b/mps/code/arena.c @@ -609,7 +609,6 @@ Res ControlDescribe(Arena arena, mps_lib_FILE *stream) typedef struct ArenaAllocPageClosureStruct { Arena arena; Pool pool; - Chunk avoid; Addr base; } ArenaAllocPageClosureStruct, *ArenaAllocPageClosure; @@ -628,7 +627,8 @@ static Bool arenaAllocPageInChunk(Tree tree, void *closureP, Size closureS) AVER(cl->arena == ChunkArena(chunk)); UNUSED(closureS); - if (chunk == cl->avoid) + /* Already searched in arenaAllocPage. */ + if (chunk == cl->arena->primary) return TRUE; if (!BTFindShortResRange(&basePageIndex, &limitPageIndex, @@ -663,7 +663,6 @@ static Res arenaAllocPage(Addr *baseReturn, Arena arena, Pool pool) if (arenaAllocPageInChunk(&arena->primary->chunkTree, &closure, 0) == FALSE) goto found; - closure.avoid = arena->primary; if (SplayTreeTraverse(ArenaChunkTree(arena), arenaAllocPageInChunk, &closure, 0) == FALSE) goto found;