213c213,214
< void reschedule(Tick t);
---
> // always parameter means to schedule if not already scheduled
> void reschedule(Tick t, bool always = false);
405c406
< Event::reschedule(Tick t)
---
> Event::reschedule(Tick t, bool always)
407,408c408
< assert(scheduled());
< clearFlags(Squashed);
---
> assert(scheduled() || always);
414c414,421
< queue->reschedule(this);
---
>
> if (scheduled()) {
> clearFlags(Squashed);
> queue->reschedule(this);
> } else {
> setFlags(Scheduled);
> queue->schedule(this);
> }