mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-03 02:31:03 -08:00
Eliminating closure_size from area scanners and root registration functions, as it isn't all that useful.
Copied from Perforce Change: 189491 ServerID: perforce.ravenbrook.com
This commit is contained in:
parent
f9743bb9f4
commit
07a1290f3e
29 changed files with 105 additions and 149 deletions
|
|
@ -475,7 +475,7 @@ extern double TraceWorkFactor;
|
|||
|
||||
extern Res TraceScanArea(ScanState ss, Word *base, Word *limit,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size);
|
||||
void *closure);
|
||||
extern void TraceScanSingleRef(TraceSet ts, Rank rank, Arena arena,
|
||||
Seg seg, Ref *refIO);
|
||||
|
||||
|
|
@ -966,7 +966,7 @@ extern Res RootCreateArea(Root *rootReturn, Arena arena,
|
|||
Rank rank, RootMode mode,
|
||||
Word *base, Word *limit,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size);
|
||||
void *closure);
|
||||
extern Res RootCreateAreaTagged(Root *rootReturn, Arena arena,
|
||||
Rank rank, RootMode mode,
|
||||
Word *base, Word *limit,
|
||||
|
|
@ -975,7 +975,7 @@ extern Res RootCreateAreaTagged(Root *rootReturn, Arena arena,
|
|||
extern Res RootCreateThread(Root *rootReturn, Arena arena,
|
||||
Rank rank, Thread thread,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size,
|
||||
void *closure,
|
||||
Word *stackCold);
|
||||
extern Res RootCreateThreadTagged(Root *rootReturn, Arena arena,
|
||||
Rank rank, Thread thread,
|
||||
|
|
|
|||
|
|
@ -109,8 +109,7 @@ typedef struct mps_scan_tag_s {
|
|||
} mps_scan_tag_s;
|
||||
|
||||
typedef mps_res_t (*mps_root_scan_t)(mps_ss_t, void *, size_t);
|
||||
typedef mps_res_t (*mps_area_scan_t)(mps_ss_t, void *, void *,
|
||||
void *, size_t);
|
||||
typedef mps_res_t (*mps_area_scan_t)(mps_ss_t, void *, void *, void *);
|
||||
typedef mps_res_t (*mps_fmt_scan_t)(mps_ss_t, mps_addr_t, mps_addr_t);
|
||||
typedef mps_res_t (*mps_reg_scan_t)(mps_ss_t, mps_thr_t,
|
||||
void *, size_t);
|
||||
|
|
@ -682,7 +681,7 @@ extern mps_res_t mps_root_create_table_masked(mps_root_t *, mps_arena_t,
|
|||
extern mps_res_t mps_root_create_area(mps_root_t *, mps_arena_t,
|
||||
mps_rank_t, mps_rm_t,
|
||||
void *, void *,
|
||||
mps_area_scan_t, void *, size_t);
|
||||
mps_area_scan_t, void *);
|
||||
extern mps_res_t mps_root_create_area_tagged(mps_root_t *, mps_arena_t,
|
||||
mps_rank_t, mps_rm_t,
|
||||
void *, void *,
|
||||
|
|
@ -700,7 +699,7 @@ extern mps_res_t mps_root_create_thread(mps_root_t *, mps_arena_t,
|
|||
extern mps_res_t mps_root_create_thread_scanned(mps_root_t *, mps_arena_t,
|
||||
mps_rank_t, mps_rm_t, mps_thr_t,
|
||||
mps_area_scan_t,
|
||||
void *, size_t,
|
||||
void *,
|
||||
void *);
|
||||
extern mps_res_t mps_root_create_thread_tagged(mps_root_t *, mps_arena_t,
|
||||
mps_rank_t, mps_rm_t, mps_thr_t,
|
||||
|
|
@ -820,18 +819,10 @@ extern void mps_pool_check_free_space(mps_pool_t);
|
|||
|
||||
/* Scanner Support */
|
||||
|
||||
extern mps_res_t mps_scan_area(mps_ss_t,
|
||||
void *, void *,
|
||||
void *, size_t);
|
||||
extern mps_res_t mps_scan_area_masked(mps_ss_t,
|
||||
void *, void *,
|
||||
void *, size_t);
|
||||
extern mps_res_t mps_scan_area_tagged(mps_ss_t,
|
||||
void *, void *,
|
||||
void *, size_t);
|
||||
extern mps_res_t mps_scan_area_tagged_or_zero(mps_ss_t,
|
||||
void *, void *,
|
||||
void *, size_t);
|
||||
extern mps_res_t mps_scan_area(mps_ss_t, void *, void *, void *);
|
||||
extern mps_res_t mps_scan_area_masked(mps_ss_t, void *, void *, void *);
|
||||
extern mps_res_t mps_scan_area_tagged(mps_ss_t, void *, void *, void *);
|
||||
extern mps_res_t mps_scan_area_tagged_or_zero(mps_ss_t, void *, void *, void *);
|
||||
|
||||
extern mps_res_t mps_fix(mps_ss_t, mps_addr_t *);
|
||||
|
||||
|
|
|
|||
|
|
@ -1302,7 +1302,7 @@ mps_res_t mps_root_create_table(mps_root_t *mps_root_o, mps_arena_t arena,
|
|||
|
||||
res = RootCreateArea(&root, arena, rank, mode,
|
||||
(void *)base, (void *)(base + size),
|
||||
mps_scan_area, NULL, 0);
|
||||
mps_scan_area, NULL);
|
||||
|
||||
ArenaLeave(arena);
|
||||
|
||||
|
|
@ -1317,7 +1317,7 @@ mps_res_t mps_root_create_area(mps_root_t *mps_root_o,
|
|||
mps_rank_t mps_rank, mps_rm_t mps_rm,
|
||||
void *base, void *limit,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
Rank rank = (Rank)mps_rank;
|
||||
Root root;
|
||||
|
|
@ -1335,7 +1335,7 @@ mps_res_t mps_root_create_area(mps_root_t *mps_root_o,
|
|||
|
||||
res = RootCreateArea(&root, arena, rank, mode,
|
||||
base, limit,
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
|
||||
ArenaLeave(arena);
|
||||
|
||||
|
|
@ -1478,7 +1478,6 @@ mps_res_t mps_root_create_thread_scanned(mps_root_t *mps_root_o,
|
|||
mps_thr_t thread,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure,
|
||||
size_t closure_size,
|
||||
void *cold)
|
||||
{
|
||||
Rank rank = (Rank)mps_rank;
|
||||
|
|
@ -1497,7 +1496,7 @@ mps_res_t mps_root_create_thread_scanned(mps_root_t *mps_root_o,
|
|||
|
||||
/* See .root-mode. */
|
||||
res = RootCreateThread(&root, arena, rank, thread,
|
||||
scan_area, closure, closure_size,
|
||||
scan_area, closure,
|
||||
(Word *)cold);
|
||||
|
||||
ArenaLeave(arena);
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ Addr MutatorFaultContextSP(MutatorFaultContext mfc)
|
|||
|
||||
Res MutatorFaultContextScan(ScanState ss, MutatorFaultContext mfc,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
Res res;
|
||||
|
||||
|
|
@ -51,7 +51,7 @@ Res MutatorFaultContextScan(ScanState ss, MutatorFaultContext mfc,
|
|||
ss,
|
||||
(Word *)mfc->ucontext,
|
||||
(Word *)((char *)mfc->ucontext + sizeof(*(mfc->ucontext))),
|
||||
scan_area, closure, closure_size
|
||||
scan_area, closure
|
||||
);
|
||||
|
||||
return res;
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ Addr MutatorFaultContextSP(MutatorFaultContext mfc)
|
|||
|
||||
Res MutatorFaultContextScan(ScanState ss, MutatorFaultContext mfc,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
mcontext_t *mc;
|
||||
Res res;
|
||||
|
|
@ -115,7 +115,7 @@ Res MutatorFaultContextScan(ScanState ss, MutatorFaultContext mfc,
|
|||
res = TraceScanArea(ss,
|
||||
(Word *)mc,
|
||||
(Word *)((char *)mc + sizeof(*mc)),
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ Addr MutatorFaultContextSP(MutatorFaultContext mfc)
|
|||
|
||||
Res MutatorFaultContextScan(ScanState ss, MutatorFaultContext mfc,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
x86_thread_state32_t *mc;
|
||||
Res res;
|
||||
|
|
@ -110,7 +110,7 @@ Res MutatorFaultContextScan(ScanState ss, MutatorFaultContext mfc,
|
|||
res = TraceScanArea(ss,
|
||||
(Word *)mc,
|
||||
(Word *)((char *)mc + sizeof(*mc)),
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ Addr MutatorFaultContextSP(MutatorFaultContext mfc)
|
|||
|
||||
Res MutatorFaultContextScan(ScanState ss, MutatorFaultContext mfc,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
Res res;
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ Res MutatorFaultContextScan(ScanState ss, MutatorFaultContext mfc,
|
|||
ss,
|
||||
(Word *)mfc->ucontext,
|
||||
(Word *)((char *)mfc->ucontext + sizeof(*(mfc->ucontext))),
|
||||
scan_area, closure, closure_size
|
||||
scan_area, closure
|
||||
);
|
||||
|
||||
return res;
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ Addr MutatorFaultContextSP(MutatorFaultContext mfc)
|
|||
|
||||
Res MutatorFaultContextScan(ScanState ss, MutatorFaultContext mfc,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
mcontext_t *mc;
|
||||
Res res;
|
||||
|
|
@ -119,7 +119,7 @@ Res MutatorFaultContextScan(ScanState ss, MutatorFaultContext mfc,
|
|||
res = TraceScanArea(ss,
|
||||
(Word *)mc,
|
||||
(Word *)((char *)mc + sizeof(*mc)),
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ Addr MutatorFaultContextSP(MutatorFaultContext mfc)
|
|||
|
||||
Res MutatorFaultContextScan(ScanState ss, MutatorFaultContext mfc,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
x86_thread_state64_t *mc;
|
||||
Res res;
|
||||
|
|
@ -113,7 +113,7 @@ Res MutatorFaultContextScan(ScanState ss, MutatorFaultContext mfc,
|
|||
res = TraceScanArea(ss,
|
||||
(Word *)mc,
|
||||
(Word *)((char *)mc + sizeof(*mc)),
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ extern Res ProtStepInstruction(MutatorFaultContext context);
|
|||
extern Addr MutatorFaultContextSP(MutatorFaultContext mfc);
|
||||
extern Res MutatorFaultContextScan(ScanState ss, MutatorFaultContext mfc,
|
||||
mps_area_scan_t scan,
|
||||
void *closure, size_t closure_size);
|
||||
void *closure);
|
||||
|
||||
|
||||
#endif /* prot_h */
|
||||
|
|
|
|||
|
|
@ -17,13 +17,8 @@ SRCID(root, "$Id$");
|
|||
|
||||
#define RootSig ((Sig)0x51960029) /* SIGnature ROOT */
|
||||
|
||||
typedef struct ClosureStruct {
|
||||
void *p;
|
||||
size_t s;
|
||||
} ClosureStruct;
|
||||
|
||||
typedef union AreaScanUnion {
|
||||
ClosureStruct closure;
|
||||
void *closure;
|
||||
mps_scan_tag_s tag; /* tag for scanning */
|
||||
} AreaScanUnion;
|
||||
|
||||
|
|
@ -44,7 +39,8 @@ typedef struct RootStruct {
|
|||
union RootUnion {
|
||||
struct {
|
||||
mps_root_scan_t scan; /* the function which does the scanning */
|
||||
ClosureStruct closure; /* closure for scan function */
|
||||
void *p; /* closure for scan function */
|
||||
size_t s; /* closure for scan function */
|
||||
} fun;
|
||||
struct {
|
||||
Word *base; /* beginning of area */
|
||||
|
|
@ -274,7 +270,7 @@ Res RootCreateArea(Root *rootReturn, Arena arena,
|
|||
Rank rank, RootMode mode,
|
||||
Word *base, Word *limit,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
Res res;
|
||||
union RootUnion theUnion;
|
||||
|
|
@ -292,8 +288,7 @@ Res RootCreateArea(Root *rootReturn, Arena arena,
|
|||
theUnion.area.base = base;
|
||||
theUnion.area.limit = limit;
|
||||
theUnion.area.scan_area = scan_area;
|
||||
theUnion.area.the.closure.p = closure;
|
||||
theUnion.area.the.closure.s = closure_size;
|
||||
theUnion.area.the.closure = closure;
|
||||
|
||||
res = rootCreateProtectable(rootReturn, arena, rank, mode,
|
||||
RootAREA, (Addr)base, (Addr)limit, &theUnion);
|
||||
|
|
@ -327,7 +322,7 @@ Res RootCreateAreaTagged(Root *rootReturn, Arena arena,
|
|||
Res RootCreateThread(Root *rootReturn, Arena arena,
|
||||
Rank rank, Thread thread,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size,
|
||||
void *closure,
|
||||
Word *stackCold)
|
||||
{
|
||||
union RootUnion theUnion;
|
||||
|
|
@ -342,8 +337,7 @@ Res RootCreateThread(Root *rootReturn, Arena arena,
|
|||
|
||||
theUnion.thread.thread = thread;
|
||||
theUnion.thread.scan_area = scan_area;
|
||||
theUnion.thread.the.closure.p = closure;
|
||||
theUnion.thread.the.closure.s = closure_size;
|
||||
theUnion.thread.the.closure = closure;
|
||||
theUnion.thread.stackCold = stackCold;
|
||||
|
||||
return rootCreate(rootReturn, arena, rank, (RootMode)0, RootTHREAD,
|
||||
|
|
@ -416,8 +410,8 @@ Res RootCreateFun(Root *rootReturn, Arena arena, Rank rank,
|
|||
AVER(FUNCHECK(scan));
|
||||
|
||||
theUnion.fun.scan = scan;
|
||||
theUnion.fun.closure.p = p;
|
||||
theUnion.fun.closure.s = s;
|
||||
theUnion.fun.p = p;
|
||||
theUnion.fun.s = s;
|
||||
|
||||
return rootCreate(rootReturn, arena, rank, (RootMode)0, RootFUN, &theUnion);
|
||||
}
|
||||
|
|
@ -535,8 +529,7 @@ Res RootScan(ScanState ss, Root root)
|
|||
root->the.area.base,
|
||||
root->the.area.limit,
|
||||
root->the.area.scan_area,
|
||||
root->the.area.the.closure.p,
|
||||
root->the.area.the.closure.s);
|
||||
root->the.area.the.closure);
|
||||
if (res != ResOK)
|
||||
goto failScan;
|
||||
break;
|
||||
|
|
@ -546,16 +539,15 @@ Res RootScan(ScanState ss, Root root)
|
|||
root->the.area.base,
|
||||
root->the.area.limit,
|
||||
root->the.area.scan_area,
|
||||
&root->the.area.the.tag,
|
||||
sizeof(root->the.area.the.tag));
|
||||
&root->the.area.the.tag);
|
||||
if (res != ResOK)
|
||||
goto failScan;
|
||||
break;
|
||||
|
||||
case RootFUN:
|
||||
res = root->the.fun.scan(&ss->ss_s,
|
||||
root->the.fun.closure.p,
|
||||
root->the.fun.closure.s);
|
||||
root->the.fun.p,
|
||||
root->the.fun.s);
|
||||
if (res != ResOK)
|
||||
goto failScan;
|
||||
break;
|
||||
|
|
@ -564,8 +556,7 @@ Res RootScan(ScanState ss, Root root)
|
|||
res = ThreadScan(ss, root->the.thread.thread,
|
||||
root->the.thread.stackCold,
|
||||
root->the.thread.scan_area,
|
||||
root->the.thread.the.closure.p,
|
||||
root->the.thread.the.closure.s);
|
||||
root->the.thread.the.closure);
|
||||
if (res != ResOK)
|
||||
goto failScan;
|
||||
break;
|
||||
|
|
@ -574,8 +565,7 @@ Res RootScan(ScanState ss, Root root)
|
|||
res = ThreadScan(ss, root->the.thread.thread,
|
||||
root->the.thread.stackCold,
|
||||
root->the.thread.scan_area,
|
||||
&root->the.thread.the.tag,
|
||||
sizeof(root->the.thread.the.tag));
|
||||
&root->the.thread.the.tag);
|
||||
if (res != ResOK)
|
||||
goto failScan;
|
||||
break;
|
||||
|
|
@ -706,11 +696,10 @@ Res RootDescribe(Root root, mps_lib_FILE *stream, Count depth)
|
|||
switch(root->var) {
|
||||
case RootAREA:
|
||||
res = WriteF(stream, depth + 2,
|
||||
"area base $A limit $A scan_area closure $P closure_size $U\n",
|
||||
"area base $A limit $A scan_area closure $P\n",
|
||||
(WriteFA)root->the.area.base,
|
||||
(WriteFA)root->the.area.limit,
|
||||
(WriteFP)root->the.area.the.closure.p,
|
||||
(WriteFP)root->the.area.the.closure.s,
|
||||
(WriteFP)root->the.area.the.closure,
|
||||
NULL);
|
||||
if (res != ResOK)
|
||||
return res;
|
||||
|
|
@ -732,8 +721,8 @@ Res RootDescribe(Root root, mps_lib_FILE *stream, Count depth)
|
|||
res = WriteF(stream, depth + 2,
|
||||
"scan function $F\n", (WriteFF)root->the.fun.scan,
|
||||
"environment p $P s $W\n",
|
||||
(WriteFP)root->the.fun.closure.p,
|
||||
(WriteFW)root->the.fun.closure.s,
|
||||
(WriteFP)root->the.fun.p,
|
||||
(WriteFW)root->the.fun.s,
|
||||
NULL);
|
||||
if (res != ResOK)
|
||||
return res;
|
||||
|
|
@ -742,9 +731,8 @@ Res RootDescribe(Root root, mps_lib_FILE *stream, Count depth)
|
|||
case RootTHREAD:
|
||||
res = WriteF(stream, depth + 2,
|
||||
"thread $P\n", (WriteFP)root->the.thread.thread,
|
||||
"closure $P size $U\n",
|
||||
(WriteFP)root->the.thread.the.closure.p,
|
||||
(WriteFU)root->the.thread.the.closure.s,
|
||||
"closure $P\n",
|
||||
(WriteFP)root->the.thread.the.closure,
|
||||
"stackCold $P\n", (WriteFP)root->the.thread.stackCold,
|
||||
NULL);
|
||||
if (res != ResOK)
|
||||
|
|
|
|||
|
|
@ -27,10 +27,9 @@
|
|||
|
||||
mps_res_t mps_scan_area(mps_ss_t ss,
|
||||
void *base, void *limit,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
(void)closure; /* unused */
|
||||
(void)closure_size; /* unused */
|
||||
|
||||
MPS_SCAN_BEGIN(ss) {
|
||||
mps_word_t *p = base;
|
||||
|
|
@ -86,11 +85,10 @@ mps_res_t mps_scan_area(mps_ss_t ss,
|
|||
|
||||
mps_res_t mps_scan_area_masked(mps_ss_t ss,
|
||||
void *base, void *limit,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
mps_scan_tag_t tag = closure;
|
||||
mps_word_t mask = tag->mask;
|
||||
(void)closure_size; /* unused */
|
||||
|
||||
MPS_SCAN_AREA_TAGGED(1);
|
||||
|
||||
|
|
@ -109,12 +107,11 @@ mps_res_t mps_scan_area_masked(mps_ss_t ss,
|
|||
|
||||
mps_res_t mps_scan_area_tagged(mps_ss_t ss,
|
||||
void *base, void *limit,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
mps_scan_tag_t tag = closure;
|
||||
mps_word_t mask = tag->mask;
|
||||
mps_word_t pattern = tag->pattern;
|
||||
(void)closure_size; /* unused */
|
||||
|
||||
MPS_SCAN_AREA_TAGGED(tag_bits == pattern);
|
||||
|
||||
|
|
@ -139,12 +136,11 @@ mps_res_t mps_scan_area_tagged(mps_ss_t ss,
|
|||
|
||||
mps_res_t mps_scan_area_tagged_or_zero(mps_ss_t ss,
|
||||
void *base, void *limit,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
mps_scan_tag_t tag = closure;
|
||||
mps_word_t mask = tag->mask;
|
||||
mps_word_t pattern = tag->pattern;
|
||||
(void)closure_size; /* unused */
|
||||
|
||||
MPS_SCAN_AREA_TAGGED(tag_bits == 0 || tag_bits == pattern);
|
||||
|
||||
|
|
|
|||
|
|
@ -26,8 +26,7 @@ SRCID(ss, "$Id$");
|
|||
|
||||
Res StackScanInner(ScanState ss, Word *stackCold, Word *stackHot,
|
||||
Count nSavedRegs,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
mps_area_scan_t scan_area, void *closure)
|
||||
{
|
||||
Arena arena;
|
||||
Res res;
|
||||
|
|
@ -50,16 +49,16 @@ Res StackScanInner(ScanState ss, Word *stackCold, Word *stackHot,
|
|||
AVER(stackHot < arena->stackAtArenaEnter);
|
||||
AVER(arena->stackAtArenaEnter < stackCold);
|
||||
res = TraceScanArea(ss, stackHot, stackHot + nSavedRegs,
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
if (res != ResOK)
|
||||
return res;
|
||||
res = TraceScanArea(ss, arena->stackAtArenaEnter, stackCold,
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
if (res != ResOK)
|
||||
return res;
|
||||
} else {
|
||||
res = TraceScanArea(ss, stackHot, stackCold,
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
if (res != ResOK)
|
||||
return res;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,11 +33,10 @@
|
|||
*/
|
||||
|
||||
extern Res StackScan(ScanState ss, Word *stackCold,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size);
|
||||
mps_area_scan_t scan_area, void *closure);
|
||||
extern Res StackScanInner(ScanState ss, Word *stackCold, Word *stackHot,
|
||||
Count nSavedRegs, mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size);
|
||||
Count nSavedRegs,
|
||||
mps_area_scan_t scan_area, void *closure);
|
||||
|
||||
#endif /* ss_h */
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ SRCID(ssan, "$Id$");
|
|||
|
||||
Res StackScan(ScanState ss, Word *stackCold,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
jmp_buf jb;
|
||||
Word *stackHot = (void *)&jb;
|
||||
|
|
@ -38,7 +38,7 @@ Res StackScan(ScanState ss, Word *stackCold,
|
|||
(void)setjmp(jb);
|
||||
|
||||
return StackScanInner(ss, stackCold, stackHot, sizeof jb / sizeof(Word),
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ SRCID(ssixi3, "$Id$");
|
|||
|
||||
Res StackScan(ScanState ss, Word *stackCold,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
Word calleeSaveRegs[4];
|
||||
|
||||
|
|
@ -65,7 +65,7 @@ Res StackScan(ScanState ss, Word *stackCold,
|
|||
ASMV("mov %%ebp, %0" : "=m" (calleeSaveRegs[3]));
|
||||
|
||||
return StackScanInner(ss, stackCold, calleeSaveRegs, NELEMS(calleeSaveRegs),
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ SRCID(ssixi6, "$Id$");
|
|||
|
||||
Res StackScan(ScanState ss, Word *stackCold,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
Word calleeSaveRegs[6];
|
||||
|
||||
|
|
@ -65,7 +65,7 @@ Res StackScan(ScanState ss, Word *stackCold,
|
|||
ASMV("mov %%r15, %0" : "=m" (calleeSaveRegs[5]));
|
||||
|
||||
return StackScanInner(ss, stackCold, calleeSaveRegs, NELEMS(calleeSaveRegs),
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ SRCID(ssw3i3mv, "$Id$");
|
|||
|
||||
Res StackScan(ScanState ss, Word *stackCold,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
jmp_buf jb;
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ Res StackScan(ScanState ss, Word *stackCold,
|
|||
AVER(offsetof(_JUMP_BUFFER, Esi) == offsetof(_JUMP_BUFFER, Ebx) + 8);
|
||||
|
||||
return StackScanInner(ss, stackCold, (Word *)&((_JUMP_BUFFER *)jb)->Ebx, 3,
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
}
|
||||
|
||||
/* C. COPYRIGHT AND LICENSE
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ typedef struct __JUMP_BUFFER {
|
|||
|
||||
Res StackScan(ScanState ss, Word *stackCold,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
jmp_buf jb;
|
||||
|
||||
|
|
@ -68,7 +68,7 @@ Res StackScan(ScanState ss, Word *stackCold,
|
|||
AVER(offsetof(_JUMP_BUFFER, Esi) == offsetof(_JUMP_BUFFER, Ebx) + 8);
|
||||
|
||||
return StackScanInner(ss, stackCold, (Word *)&((_JUMP_BUFFER *)jb)->Ebx, 3,
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -31,8 +31,8 @@ SRCID(ssw3i6mv, "$Id$");
|
|||
|
||||
|
||||
Res StackScan(ScanState ss, Word *stackCold,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
mps_area_scan_t scan_area
|
||||
void *closure)
|
||||
{
|
||||
jmp_buf jb;
|
||||
|
||||
|
|
@ -64,7 +64,7 @@ Res StackScan(ScanState ss, Word *stackCold,
|
|||
AVER(offsetof(_JUMP_BUFFER, R15) == offsetof(_JUMP_BUFFER, Rbx) + 64);
|
||||
|
||||
return StackScanInner(ss, stackCold, (Word *)&((_JUMP_BUFFER *)jb)->Rbx, 9,
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
}
|
||||
|
||||
/* C. COPYRIGHT AND LICENSE
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ extern Arena ThreadArena(Thread thread);
|
|||
|
||||
extern Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size);
|
||||
void *closure);
|
||||
|
||||
|
||||
#endif /* th_h */
|
||||
|
|
|
|||
|
|
@ -119,10 +119,10 @@ Arena ThreadArena(Thread thread)
|
|||
|
||||
Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
UNUSED(thread);
|
||||
return StackScan(ss, stackCold, scan_area, closure, closure_size);
|
||||
return StackScan(ss, stackCold, scan_area, closure);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ Arena ThreadArena(Thread thread)
|
|||
|
||||
Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
pthread_t self;
|
||||
Res res;
|
||||
|
|
@ -251,7 +251,7 @@ Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
|||
if(pthread_equal(self, thread->id)) {
|
||||
/* scan this thread's stack */
|
||||
AVER(thread->alive);
|
||||
res = StackScan(ss, stackCold, scan_area, closure, closure_size);
|
||||
res = StackScan(ss, stackCold, scan_area, closure);
|
||||
if(res != ResOK)
|
||||
return res;
|
||||
} else if (thread->alive) {
|
||||
|
|
@ -273,12 +273,12 @@ Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
|||
* stackCold (.stack.full-descend)
|
||||
*/
|
||||
res = TraceScanArea(ss, stackBase, stackLimit,
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
if(res != ResOK)
|
||||
return res;
|
||||
|
||||
/* scan the registers in the mutator fault context */
|
||||
res = MutatorFaultContextScan(ss, mfc, scan_area, closure, closure_size);
|
||||
res = MutatorFaultContextScan(ss, mfc, scan_area, closure);
|
||||
if(res != ResOK)
|
||||
return res;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,8 +68,7 @@ SRCID(thw3i3, "$Id$");
|
|||
|
||||
|
||||
Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
mps_area_scan_t scan_area, void *closure)
|
||||
{
|
||||
DWORD id;
|
||||
Res res;
|
||||
|
|
@ -107,7 +106,7 @@ Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
|||
* stackCold (.stack.full-descend)
|
||||
*/
|
||||
res = TraceScanArea(ss, stackBase, stackLimit,
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
if(res != ResOK)
|
||||
return res;
|
||||
|
||||
|
|
@ -118,12 +117,12 @@ Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
|||
*/
|
||||
res = TraceScanArea(ss, (Word *)&context,
|
||||
(Word *)((char *)&context + sizeof(CONTEXT)),
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
if(res != ResOK)
|
||||
return res;
|
||||
|
||||
} else { /* scan this thread's stack */
|
||||
res = StackScan(ss, stackCold, scan_area, closure, closure_size);
|
||||
res = StackScan(ss, stackCold, scan_area, closure);
|
||||
if(res != ResOK)
|
||||
return res;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ SRCID(thw3i6, "$Id$");
|
|||
|
||||
Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
DWORD id;
|
||||
Res res;
|
||||
|
|
@ -107,7 +107,7 @@ Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
|||
* stackCold (.stack.full-descend)
|
||||
*/
|
||||
res = TraceScanArea(ss, stackBase, stackLimit,
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
if(res != ResOK)
|
||||
return res;
|
||||
|
||||
|
|
@ -118,12 +118,12 @@ Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
|||
*/
|
||||
res = TraceScanArea(ss, (Word *)&context,
|
||||
(Word *)((char *)&context + sizeof(CONTEXT)),
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
if(res != ResOK)
|
||||
return res;
|
||||
|
||||
} else { /* scan this thread's stack */
|
||||
res = StackScan(ss, stackCold, scan_area, closure, closure_size);
|
||||
res = StackScan(ss, stackCold, scan_area, closure);
|
||||
if(res != ResOK)
|
||||
return res;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -211,8 +211,7 @@ Arena ThreadArena(Thread thread)
|
|||
#include "prmcxc.h"
|
||||
|
||||
Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
mps_area_scan_t scan_area, void *closure)
|
||||
{
|
||||
mach_port_t self;
|
||||
Res res;
|
||||
|
|
@ -223,7 +222,7 @@ Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
|||
if (thread->port == self) {
|
||||
/* scan this thread's stack */
|
||||
AVER(thread->alive);
|
||||
res = StackScan(ss, stackCold, scan_area, closure, closure_size);
|
||||
res = StackScan(ss, stackCold, scan_area, closure);
|
||||
if(res != ResOK)
|
||||
return res;
|
||||
} else if (thread->alive) {
|
||||
|
|
@ -261,12 +260,12 @@ Res ThreadScan(ScanState ss, Thread thread, Word *stackCold,
|
|||
* stackCold (.stack.full-descend)
|
||||
*/
|
||||
res = TraceScanArea(ss, stackBase, stackLimit,
|
||||
scan_area, closure, closure_size);
|
||||
scan_area, closure);
|
||||
if(res != ResOK)
|
||||
return res;
|
||||
|
||||
/* scan the registers in the mutator fault context */
|
||||
res = MutatorFaultContextScan(ss, &mfcStruct, scan_area, closure, closure_size);
|
||||
res = MutatorFaultContextScan(ss, &mfcStruct, scan_area, closure);
|
||||
if(res != ResOK)
|
||||
return res;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1432,7 +1432,7 @@ void TraceScanSingleRef(TraceSet ts, Rank rank, Arena arena,
|
|||
|
||||
Res TraceScanArea(ScanState ss, Word *base, Word *limit,
|
||||
mps_area_scan_t scan_area,
|
||||
void *closure, size_t closure_size)
|
||||
void *closure)
|
||||
{
|
||||
AVERT(ScanState, ss);
|
||||
AVER(base != NULL);
|
||||
|
|
@ -1446,7 +1446,7 @@ Res TraceScanArea(ScanState ss, Word *base, Word *limit,
|
|||
scan_area. */
|
||||
ss->scannedSize += AddrOffset(base, limit);
|
||||
|
||||
return scan_area(&ss->ss_s, base, limit, closure, closure_size);
|
||||
return scan_area(&ss->ss_s, base, limit, closure);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue