back.pysim: collect handlers before running (-5% runtime).

This commit is contained in:
whitequark 2018-12-13 18:34:44 +00:00
parent a7ebc02bdd
commit b09f4b10ee

View file

@ -306,11 +306,14 @@ class Simulator:
self._vcd_writer.change(vcd_signal, self._timestamp * 1e10, new.value) self._vcd_writer.change(vcd_signal, self._timestamp * 1e10, new.value)
def _handle_event(self): def _handle_event(self):
handlers = set()
while self._state.curr_dirty: while self._state.curr_dirty:
signal = self._state.curr_dirty.pop() signal = self._state.curr_dirty.pop()
if signal in self._handlers: if signal in self._handlers:
for handler in self._handlers[signal]: handlers.update(self._handlers[signal])
handler(self._state)
for handler in handlers:
handler(self._state)
for signal in self._state.next_dirty: for signal in self._state.next_dirty:
if signal in self._comb_signals or signal in self._user_signals: if signal in self._comb_signals or signal in self._user_signals: