From: whitequark Date: Thu, 13 Dec 2018 18:34:44 +0000 (+0000) Subject: back.pysim: collect handlers before running (-5% runtime). X-Git-Tag: working~286 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b09f4b10ee681808a7ae1b16084a7b04636bdf2c;p=nmigen.git back.pysim: collect handlers before running (-5% runtime). --- diff --git a/nmigen/back/pysim.py b/nmigen/back/pysim.py index 5b0f352..7dfda13 100644 --- a/nmigen/back/pysim.py +++ b/nmigen/back/pysim.py @@ -306,11 +306,14 @@ class Simulator: self._vcd_writer.change(vcd_signal, self._timestamp * 1e10, new.value) def _handle_event(self): + handlers = set() while self._state.curr_dirty: signal = self._state.curr_dirty.pop() if signal in self._handlers: - for handler in self._handlers[signal]: - handler(self._state) + handlers.update(self._handlers[signal]) + + for handler in handlers: + handler(self._state) for signal in self._state.next_dirty: if signal in self._comb_signals or signal in self._user_signals: