From d60c293bbc9125eb939a08831b86a3f38920cdd4 Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Fri, 7 Jan 2011 21:50:29 -0800 Subject: [PATCH] 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). --- src/cpu/inorder/cpu.cc | 8 ++------ src/cpu/inorder/cpu.hh | 8 ++------ src/cpu/inorder/resource.cc | 10 +++------- 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. */ -- 2.30.2