diff options
author | Steve Reinhardt <steve.reinhardt@amd.com> | 2011-01-07 21:50:29 -0800 |
---|---|---|
committer | Steve Reinhardt <steve.reinhardt@amd.com> | 2011-01-07 21:50:29 -0800 |
commit | d60c293bbc9125eb939a08831b86a3f38920cdd4 (patch) | |
tree | 06291cb8c39407adb71d30e29008649de443e124 /src | |
parent | 214cc0fafce09dbee6aedafa5e1148476cc6463f (diff) | |
download | gem5-d60c293bbc9125eb939a08831b86a3f38920cdd4.tar.xz |
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).
Diffstat (limited to 'src')
-rw-r--r-- | src/cpu/inorder/cpu.cc | 8 | ||||
-rw-r--r-- | src/cpu/inorder/cpu.hh | 8 | ||||
-rw-r--r-- | src/cpu/inorder/resource.cc | 10 | ||||
-rw-r--r-- | src/cpu/inorder/resource_pool.cc | 9 |
4 files changed, 9 insertions, 26 deletions
diff --git a/src/cpu/inorder/cpu.cc b/src/cpu/inorder/cpu.cc index bb324ce64..5b5f524f2 100644 --- a/src/cpu/inorder/cpu.cc +++ b/src/cpu/inorder/cpu.cc @@ -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 diff --git a/src/cpu/inorder/cpu.hh b/src/cpu/inorder/cpu.hh index 42bae0d31..38978dbd7 100644 --- a/src/cpu/inorder/cpu.hh +++ b/src/cpu/inorder/cpu.hh @@ -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. */ diff --git a/src/cpu/inorder/resource.cc b/src/cpu/inorder/resource.cc index 4eab89687..0d8dbb3e4 100644 --- a/src/cpu/inorder/resource.cc +++ b/src/cpu/inorder/resource.cc @@ -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); } diff --git a/src/cpu/inorder/resource_pool.cc b/src/cpu/inorder/resource_pool.cc index 97ea889fd..e199d2bc2 100644 --- a/src/cpu/inorder/resource_pool.cc +++ b/src/cpu/inorder/resource_pool.cc @@ -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. */ |