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