42a43,49
> SimLoopExitEvent::SimLoopExitEvent(const std::string &_cause, int c, Tick r)
> : Event(Sim_Exit_Pri), cause(_cause), code(c), repeat(r)
> {
> setFlags(IsExitEvent);
> }
>
>
52c59
< if (queue() != &mainEventQueue) {
---
> if (!getFlags(IsMainQueue)) {
62c69,70
< schedule(curTick + repeat);
---
> assert(getFlags(IsMainQueue));
> mainEventQueue.schedule(this, curTick + repeat);
73,82d80
< SimLoopExitEvent *
< schedExitSimLoop(const std::string &message, Tick when, Tick repeat,
< EventQueue *q, int exit_code)
< {
< if (q == NULL)
< q = &mainEventQueue;
<
< return new SimLoopExitEvent(q, when, repeat, message, exit_code);
< }
<
86c84,85
< schedExitSimLoop(message, curTick, 0, NULL, exit_code);
---
> Event *event = new SimLoopExitEvent(message, exit_code);
> mainEventQueue.schedule(event, curTick);
88a88,91
> CountedDrainEvent::CountedDrainEvent()
> : SimLoopExitEvent("Finished drain", 0), count(0)
> { }
>
92,94c95,96
< if (--count == 0) {
< exitSimLoop("Finished drain");
< }
---
> if (--count == 0)
> exitSimLoop(cause, code);
100,104c102,103
< CountedExitEvent::CountedExitEvent(EventQueue *q, const std::string &_cause,
< Tick _when, int &_downCounter)
< : Event(q, Sim_Exit_Pri),
< cause(_cause),
< downCounter(_downCounter)
---
> CountedExitEvent::CountedExitEvent(const std::string &_cause, int &counter)
> : Event(Sim_Exit_Pri), cause(_cause), downCounter(counter)
108,109d106
<
< schedule(_when);
131,133c128,132
< #ifdef CHECK_SWAP_CYCLES
< new CheckSwapEvent(&mainEventQueue, CHECK_SWAP_CYCLES);
< #endif
---
> CheckSwapEvent::CheckSwapEvent(int ival)
> : interval(ival)
> {
> mainEventQueue.schedule(this, curTick + interval);
> }
152c151,152
< schedule(curTick + interval);
---
> assert(getFlags(IsMainQueue));
> mainEventQueue.schedule(this, curTick + interval);