From 882d86bac10deeffe62a7cca748dc2b5ce236aea Mon Sep 17 00:00:00 2001 From: Gareth Rees Date: Fri, 12 Oct 2018 12:35:55 +0100 Subject: [PATCH] Remove call to pause_end from tracedestroy; see The MPS passes the number of system pools to the monitor via the ArenaCreate events, to avoid the monitor having to know how many this is. Copied from Perforce Change: 195227 --- mps/code/arenacl.c | 5 +++-- mps/code/arenavm.c | 5 +++-- mps/code/eventdef.h | 8 +++++--- mps/tool/monitor | 11 ++++------- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/mps/code/arenacl.c b/mps/code/arenacl.c index f6d262b6e04..2dd5564acec 100644 --- a/mps/code/arenacl.c +++ b/mps/code/arenacl.c @@ -305,8 +305,9 @@ static Res ClientArenaCreate(Arena *arenaReturn, ArgList args) arena->zoneShift = SizeFloorLog2(size >> MPS_WORD_SHIFT); AVER(ArenaGrainSize(arena) == ChunkPageSize(arena->primary)); - EVENT6(ArenaCreateCL, arena, size, base, grainSize, - ClassOfPoly(Arena, arena), arena->serial); + EVENT7(ArenaCreateCL, arena, size, base, grainSize, + ClassOfPoly(Arena, arena), ArenaGlobals(arena)->systemPools, + arena->serial); AVERT(ClientArena, clientArena); *arenaReturn = arena; return ResOK; diff --git a/mps/code/arenavm.c b/mps/code/arenavm.c index 35224680106..d928b056539 100644 --- a/mps/code/arenavm.c +++ b/mps/code/arenavm.c @@ -659,8 +659,9 @@ static Res VMArenaCreate(Arena *arenaReturn, ArgList args) AVER(ChunkPageSize(chunk) == ArenaGrainSize(arena)); AVERT(VMArena, vmArena); - EVENT6(ArenaCreateVM, arena, size, chunkSize, grainSize, - ClassOfPoly(Arena, arena), arena->serial); + EVENT7(ArenaCreateVM, arena, size, chunkSize, grainSize, + ClassOfPoly(Arena, arena), ArenaGlobals(arena)->systemPools, + arena->serial); vmArena->extended(arena, chunk->base, chunkSize); diff --git a/mps/code/eventdef.h b/mps/code/eventdef.h index a58599f4086..2a5ab969ffe 100644 --- a/mps/code/eventdef.h +++ b/mps/code/eventdef.h @@ -36,7 +36,7 @@ */ #define EVENT_VERSION_MAJOR ((unsigned)2) -#define EVENT_VERSION_MEDIAN ((unsigned)3) +#define EVENT_VERSION_MEDIAN ((unsigned)4) #define EVENT_VERSION_MINOR ((unsigned)0) @@ -243,7 +243,8 @@ PARAM(X, 2, W, chunkSize) /* arena's chunk size in bytes */ \ PARAM(X, 3, W, grainSize) /* arena's grain size in bytes */ \ PARAM(X, 4, P, arenaClass) /* arena's class */ \ - PARAM(X, 5, U, serial) /* arena's serial number */ + PARAM(X, 5, W, systemPools) /* number of system pools */ \ + PARAM(X, 6, U, serial) /* arena's serial number */ #define EVENT_ArenaWriteFaults_PARAMS(PARAM, X) \ PARAM(X, 0, P, arena) \ @@ -287,7 +288,8 @@ PARAM(X, 2, A, base) /* base address of memory given to arena */ \ PARAM(X, 3, W, grainSize) /* arena's grain size in bytes */ \ PARAM(X, 4, P, arenaClass) /* arena's class */ \ - PARAM(X, 5, U, serial) /* arena's serial number */ + PARAM(X, 5, W, systemPools) /* number of system pools */ \ + PARAM(X, 6, U, serial) /* arena's serial number */ #define EVENT_ArenaDestroy_PARAMS(PARAM, X) \ PARAM(X, 0, P, arena) diff --git a/mps/tool/monitor b/mps/tool/monitor index e6080404c62..aed77a7a111 100755 --- a/mps/tool/monitor +++ b/mps/tool/monitor @@ -619,7 +619,6 @@ class Trace(EventHandler): def TraceDestroy(self, t, event): self.add_time("destroy", t, event) - self.pause_end(t, event) def TraceStatScan(self, t, event): self.add_count('roots scanned', event.rootScanCount) @@ -719,16 +718,13 @@ class Trace(EventHandler): class Arena(EventHandler): "Model of an MPS arena." - # Number of pools that are internal to the arena; see the list in - # global.c:GlobalsPrepareToDestroy. - _internal_pools = 4 - def __init__(self, model, pointer, t): "Create Arena owned by model, at pointer, at time t." self.model = model # Owning model. self._pointer = pointer # Arena's pointer. self._arena_class = None # Arena's class pointer. self._serial = None # Arena's serial number. + self._system_pools = 0 # Number of system pools. self._pools = [] # List of Pools ever belonging to arena. self._pool = {} # Pointer -> Pool (for live pools). self._gens = [] # List of Gens ever belonging to arena. @@ -795,12 +791,12 @@ class Arena(EventHandler): def ArenaAlloc(self, t, event): self.delegate_to_pool(t, event) - if self._pool[event.pool]._serial >= self._internal_pools: + if self._pool[event.pool]._serial >= self._system_pools: self._alloc.add(t, event.size) def ArenaFree(self, t, event): self.delegate_to_pool(t, event) - if self._pool[event.pool]._serial >= self._internal_pools: + if self._pool[event.pool]._serial >= self._system_pools: self._alloc.sub(t, event.size) PoolInit = \ @@ -824,6 +820,7 @@ class Arena(EventHandler): def ArenaCreateVM(self, t, event): self._arena_class = event.arenaClass self._serial = event.serial + self._system_pools = event.systemPools ArenaCreateCL = ArenaCreateVM