inorder: replace schedEvent() code with reschedule().

There were several copies of similar functions that looked
like they all replicated reschedule(), so I replaced them
with direct calls.  Keeping this separate from the previous
cset since there may be some subtle functional differences
if the code ever reschedules an event that is scheduled but
not squashed (though none were detected in the regressions).
This commit is contained in:
Steve Reinhardt 2011-01-07 21:50:29 -08:00
parent 214cc0fafc
commit d60c293bbc
4 changed files with 9 additions and 26 deletions

View file

@ -157,12 +157,8 @@ InOrderCPU::CPUEvent::description()
void
InOrderCPU::CPUEvent::scheduleEvent(int delay)
{
Tick when = cpu->nextCycle(curTick + cpu->ticks(delay));
if (squashed())
cpu->reschedule(this, when);
else if (!scheduled())
cpu->schedule(this, when);
assert(!scheduled() || squashed());
cpu->reschedule(this, cpu->nextCycle(curTick + cpu->ticks(delay)), true);
}
void

View file

@ -156,12 +156,8 @@ class InOrderCPU : public BaseCPU
/** Schedule tick event, regardless of its current state. */
void scheduleTickEvent(int delay)
{
Tick when = nextCycle(curTick + ticks(delay));
if (tickEvent.squashed())
reschedule(&tickEvent, when);
else if (!tickEvent.scheduled())
schedule(&tickEvent, when);
assert(!tickEvent.scheduled() || tickEvent.squashed());
reschedule(&tickEvent, nextCycle(curTick + ticks(delay)), true);
}
/** Unschedule tick event, regardless of its current state. */

View file

@ -502,11 +502,7 @@ ResourceEvent::description()
void
ResourceEvent::scheduleEvent(int delay)
{
InOrderCPU *cpu = resource->cpu;
Tick when = curTick + resource->ticks(delay);
if (squashed())
cpu->reschedule(this, when);
else if (!scheduled())
cpu->schedule(this, when);
assert(!scheduled() || squashed());
resource->cpu->reschedule(this,
curTick + resource->ticks(delay), true);
}

View file

@ -541,13 +541,8 @@ void
ResourcePool::ResPoolEvent::scheduleEvent(int delay)
{
InOrderCPU *cpu = resPool->cpu;
Tick when = cpu->nextCycle(curTick + cpu->ticks(delay));
if (squashed()) {
cpu->reschedule(this, when);
} else if (!scheduled()) {
cpu->schedule(this, when);
}
assert(!scheduled() || squashed());
cpu->reschedule(this, cpu->nextCycle(curTick + cpu->ticks(delay)), true);
}
/** Unschedule resource event, regardless of its current state. */