changes that affect post checkpoint runs.
cpu/exec_context.cc:
you can't delete an element of an array that you newed. oops.
kern/tru64/tru64_events.cc:
changes to reflect .ini changes, and also b/c es_intr and ipintr can happen at ANY point, even within a current calling path being tracked.
sim/system.cc:
can't delete an element of a newed array. must new them separately.
--HG--
extra : convert_revision : 21573327b7b7f20bf9a3fcfb5854526433e17e17
This commit is contained in:
@@ -147,14 +147,18 @@ ExecContext::unserialize(Checkpoint *cp, const std::string §ion)
|
||||
UNSERIALIZE_SCALAR(swCtx->calls);
|
||||
int size;
|
||||
UNSERIALIZE_SCALAR(size);
|
||||
fnCall *call = new fnCall[size];
|
||||
|
||||
vector<fnCall *> calls;
|
||||
fnCall *call;
|
||||
for (int i=0; i<size; ++i) {
|
||||
paramIn(cp, section, csprintf("stackpos[%d]",i), call[i].name);
|
||||
call[i].myBin = system->getBin(call[i].name);
|
||||
call = new fnCall;
|
||||
paramIn(cp, section, csprintf("stackpos[%d]",i), call->name);
|
||||
call->myBin = system->getBin(call->name);
|
||||
calls.push_back(call);
|
||||
}
|
||||
|
||||
for (int i=size-1; i>=0; --i) {
|
||||
swCtx->callStack.push(&(call[i]));
|
||||
swCtx->callStack.push(calls[i]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -130,7 +130,9 @@ FnEvent::process(ExecContext *xc)
|
||||
if (last->name == "idle_thread")
|
||||
ctx->calls++;
|
||||
|
||||
if (!xc->system->findCaller(myname(), last->name)) {
|
||||
if (!xc->system->findCaller(myname(), "" ) &&
|
||||
!xc->system->findCaller(myname(), last->name)) {
|
||||
|
||||
DPRINTF(TCPIP, "but can't find parent %s\n", last->name);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -164,26 +164,31 @@ System::unserialize(Checkpoint *cp, const std::string §ion)
|
||||
int numCtxs;
|
||||
UNSERIALIZE_SCALAR(numCtxs);
|
||||
|
||||
SWContext *ctxs = new SWContext[numCtxs];
|
||||
SWContext *ctx;
|
||||
Addr addr;
|
||||
int size;
|
||||
for(int i = 0; i < numCtxs; ++i) {
|
||||
ctx = new SWContext;
|
||||
paramIn(cp, section, csprintf("Addr[%d]",i), addr);
|
||||
paramIn(cp, section, csprintf("calls[%d]",i), ctxs[i].calls);
|
||||
paramIn(cp, section, csprintf("calls[%d]",i), ctx->calls);
|
||||
|
||||
paramIn(cp, section, csprintf("stacksize[%d]",i), size);
|
||||
fnCall *call = new fnCall[size];
|
||||
|
||||
vector<fnCall *> calls;
|
||||
fnCall *call;
|
||||
for (int j = 0; j < size; ++j) {
|
||||
call = new fnCall;
|
||||
paramIn(cp, section, csprintf("ctx[%d].stackpos[%d]",i,j),
|
||||
call[j].name);
|
||||
call[j].myBin = getBin(call[j].name);
|
||||
call->name);
|
||||
call->myBin = getBin(call->name);
|
||||
calls.push_back(call);
|
||||
}
|
||||
|
||||
for (int j=size-1; j>=0; --j) {
|
||||
ctxs[i].callStack.push(&(call[j]));
|
||||
ctx->callStack.push(calls[j]);
|
||||
}
|
||||
|
||||
addContext(addr, &(ctxs[i]));
|
||||
addContext(addr, ctx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user