diff options
Diffstat (limited to 'src/systemc/core/event.cc')
-rw-r--r-- | src/systemc/core/event.cc | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/src/systemc/core/event.cc b/src/systemc/core/event.cc index 0daca12e1..e7132e083 100644 --- a/src/systemc/core/event.cc +++ b/src/systemc/core/event.cc @@ -134,6 +134,27 @@ Event::getParentObject() const } void +Event::notify(StaticSensitivities &senses) +{ + for (auto s: senses) + s->notify(this); +} + +void +Event::notify(DynamicSensitivities &senses) +{ + int size = senses.size(); + int pos = 0; + while (pos < size) { + if (senses[pos]->notify(this)) + senses[pos] = senses[--size]; + else + pos++; + } + senses.resize(size); +} + +void Event::notify() { if (scheduler.inUpdate()) { @@ -145,18 +166,10 @@ Event::notify() if (delayedNotify.scheduled()) scheduler.deschedule(&delayedNotify); - for (auto s: staticSensitivities) - s->notify(this); - DynamicSensitivities &ds = dynamicSensitivities; - int size = ds.size(); - int pos = 0; - while (pos < size) { - if (ds[pos]->notify(this)) - ds[pos] = ds[--size]; - else - pos++; - } - ds.resize(size); + notify(staticSenseMethod); + notify(dynamicSenseMethod); + notify(staticSenseThread); + notify(dynamicSenseThread); } void |