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:
parent
aa9f8bef8a
commit
882d86bac1
4 changed files with 15 additions and 14 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue