1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-04-06 22:31:13 -07:00

Passing mutatorfaultcontext down through to pool class specific method

Copied from Perforce
 Change: 19435
 ServerID: perforce.ravenbrook.com
This commit is contained in:
David Jones 1998-04-20 11:25:18 +01:00
parent 33075407c2
commit 4aa634eceb
4 changed files with 25 additions and 18 deletions

View file

@ -1,6 +1,6 @@
/* impl.c.arena: ARENA IMPLEMENTATION
*
* $HopeName: MMsrc!arena.c(trunk.35) $
* $HopeName: MMsrc!arena.c(trunk.36) $
* Copyright (C) 1998. Harlequin Group plc. All rights reserved.
*
* .readership: Any MPS developer
@ -36,7 +36,7 @@
#include "poolmrg.h"
#include "mps.h"
SRCID(arena, "$HopeName: MMsrc!arena.c(trunk.35) $");
SRCID(arena, "$HopeName: MMsrc!arena.c(trunk.36) $");
/* All static data objects are declared here. See .static */
@ -474,8 +474,6 @@ Bool ArenaAccess(Addr addr, AccessSet mode, MutatorFaultContext context)
Seg seg;
Ring node, nextNode;
UNUSED(context);
LockClaim(&arenaRingLock); /* design.mps.arena.lock.ring */
RING_FOR(node, &arenaRing, nextNode) {
Arena arena = RING_ELT(Arena, globalRing, node);
@ -496,7 +494,7 @@ Bool ArenaAccess(Addr addr, AccessSet mode, MutatorFaultContext context)
*/
mode &= SegPM(seg);
if(mode != AccessSetEMPTY)
PoolAccess(SegPool(seg), seg, addr, mode);
PoolAccess(SegPool(seg), seg, addr, mode, context);
ArenaLeave(arena);
return TRUE;
} else if(RootOfAddr(&root, arena, addr)) {

View file

@ -1,6 +1,6 @@
/* impl.h.mpm: MEMORY POOL MANAGER DEFINITIONS
*
* $HopeName: MMsrc!mpm.h(trunk.81) $
* $HopeName: MMsrc!mpm.h(trunk.82) $
* Copyright (C) 1998. Harlequin Group plc. All rights reserved.
*/
@ -278,7 +278,8 @@ extern void PoolDestroy(Pool pool);
extern Res PoolAlloc(Addr *pReturn, Pool pool, Size size);
extern void PoolFree(Pool pool, Addr old, Size size);
extern Res PoolTraceBegin(Pool pool, Trace trace);
extern Res PoolAccess(Pool pool, Seg seg, Addr addr, AccessSet mode);
extern Res PoolAccess(Pool pool, Seg seg, Addr addr,
AccessSet mode, MutatorFaultContext context);
extern Res PoolWhiten(Pool pool, Trace trace, Seg seg);
extern void PoolGrey(Pool pool, Trace trace, Seg seg);
extern void PoolBlacken(Pool pool, TraceSet traceSet, Seg seg);
@ -313,8 +314,10 @@ extern Res PoolNoDescribe(Pool pool, mps_lib_FILE *stream);
extern Res PoolTrivDescribe(Pool pool, mps_lib_FILE *stream);
extern Res PoolNoTraceBegin(Pool pool, Trace trace);
extern Res PoolTrivTraceBegin(Pool pool, Trace trace);
extern Res PoolNoAccess(Pool pool, Seg seg, Addr addr, AccessSet mode);
extern Res PoolSegAccess(Pool pool, Seg seg, Addr addr, AccessSet mode);
extern Res PoolNoAccess(Pool pool, Seg seg, Addr addr,
AccessSet mode, MutatorFaultContext context);
extern Res PoolSegAccess(Pool pool, Seg seg, Addr addr,
AccessSet mode, MutatorFaultContext context);
extern Res PoolNoWhiten(Pool pool, Trace trace, Seg seg);
extern Res PoolTrivWhiten(Pool pool, Trace trace, Seg seg);
extern void PoolNoGrey(Pool pool, Trace trace, Seg seg);

View file

@ -1,6 +1,6 @@
/* impl.h.mpmtypes: MEMORY POOL MANAGER TYPES
*
* $HopeName: MMsrc!mpmtypes.h(trunk.45) $
* $HopeName: MMsrc!mpmtypes.h(trunk.46) $
* Copyright (C) 1997 The Harlequin Group Limited. All rights reserved.
*
* .readership: MM developers.
@ -129,7 +129,7 @@ typedef void (*PoolBufferEmptyMethod)(Pool pool, Buffer buffer);
typedef void (*PoolBufferFinishMethod)(Pool pool, Buffer buf);
typedef Res (*PoolTraceBeginMethod)(Pool pool, Trace trace);
typedef Res (*PoolAccessMethod)(Pool pool, Seg seg, Addr addr,
AccessSet mode);
AccessSet mode, MutatorFaultContext context);
typedef Res (*PoolWhitenMethod)(Pool pool, Trace trace, Seg seg);
typedef void (*PoolGreyMethod)(Pool pool, Trace trace, Seg seg);
typedef void (*PoolBlackenMethod)(Pool pool, TraceSet traceSet, Seg seg);

View file

@ -1,6 +1,6 @@
/* impl.c.pool: POOL IMPLEMENTATION
*
* $HopeName: MMsrc!pool.c(trunk.49) $
* $HopeName: MMsrc!pool.c(trunk.50) $
* Copyright (C) 1997. Harlequin Group plc. All rights reserved.
*
* READERSHIP
@ -37,7 +37,7 @@
#include "mpm.h"
SRCID(pool, "$HopeName: MMsrc!pool.c(trunk.49) $");
SRCID(pool, "$HopeName: MMsrc!pool.c(trunk.50) $");
Bool PoolClassCheck(PoolClass class)
@ -301,15 +301,17 @@ Res PoolTraceBegin(Pool pool, Trace trace)
return (*pool->class->traceBegin)(pool, trace);
}
Res PoolAccess(Pool pool, Seg seg, Addr addr, AccessSet mode)
Res PoolAccess(Pool pool, Seg seg, Addr addr,
AccessSet mode, MutatorFaultContext context)
{
AVERT(Pool, pool);
AVERT(Seg, seg);
AVER(SegBase(seg) <= addr);
AVER(addr < SegLimit(seg));
/* Can't check mode as there is no check method */
/* Can't check MutatorFaultContext as there is no check method */
return (*pool->class->access)(pool, seg, addr, mode);
return (*pool->class->access)(pool, seg, addr, mode, context);
}
Res PoolWhiten(Pool pool, Trace trace, Seg seg)
@ -734,14 +736,17 @@ Res PoolTrivTraceBegin(Pool pool, Trace trace)
* That is, no protected pages, or only pages which are inaccessible
* by the mutator are protected.
*/
Res PoolNoAccess(Pool pool, Seg seg, Addr addr, AccessSet mode)
Res PoolNoAccess(Pool pool, Seg seg, Addr addr,
AccessSet mode, MutatorFaultContext context)
{
AVERT(Pool, pool);
AVERT(Seg, seg);
AVER(SegBase(seg) <= addr);
AVER(addr < SegLimit(seg));
/* can't check AccessSet as there is no Check method */
/* can't check context as there is no Check method */
UNUSED(mode);
UNUSED(context);
NOTREACHED;
return ResUNIMPL;
@ -753,7 +758,8 @@ Res PoolNoAccess(Pool pool, Seg seg, Addr addr, AccessSet mode)
* to handle page faults by scanning the entire segment and lowering
* the barrier.
*/
Res PoolSegAccess(Pool pool, Seg seg, Addr addr, AccessSet mode)
Res PoolSegAccess(Pool pool, Seg seg, Addr addr,
AccessSet mode, MutatorFaultContext context)
{
AVERT(Pool, pool);
AVERT(Seg, seg);
@ -763,7 +769,7 @@ Res PoolSegAccess(Pool pool, Seg seg, Addr addr, AccessSet mode)
/* can't check AccessSet as there is no Check method */
UNUSED(addr);
UNUSED(pool);
UNUSED(context);
TraceSegAccess(PoolArena(pool), seg, mode);
return ResOK;
}