1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-24 07:41:54 -07:00

Remove call to pause_end from tracedestroy; see <https://info.ravenbrook.com/mail/2018/10/12/10-20-07/0/>

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
This commit is contained in:
Gareth Rees 2018-10-12 12:35:55 +01:00
parent aa9f8bef8a
commit 882d86bac1
4 changed files with 15 additions and 14 deletions

View file

@ -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;

View file

@ -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);

View file

@ -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)

View file

@ -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