diff options
-rw-r--r-- | src/lib/netlist/nl_base.cpp | 29 | ||||
-rw-r--r-- | src/lib/netlist/nl_base.h | 2 |
2 files changed, 15 insertions, 16 deletions
diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index d984285b000..52357f29041 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -843,12 +843,12 @@ void detail::net_t::rebuild_list() m_active = cnt; } -void detail::net_t::process(unsigned Mask) +void detail::net_t::process(const unsigned &mask) { for (auto & p : m_list_active) { p.device().m_stat_call_count.inc(); - if ((p.state() & Mask) != 0) + if ((p.state() & mask) != 0) { p.device().m_stat_total_time.start(); p.m_delegate(); @@ -861,23 +861,22 @@ void detail::net_t::update_devs() NL_NOEXCEPT { nl_assert(this->isRailNet()); - const unsigned mask((m_new_Q << core_terminal_t::INP_LH_SHIFT) - | (m_cur_Q<<core_terminal_t::INP_HL_SHIFT)); + const auto new_Q(m_new_Q); + + const unsigned mask((new_Q << core_terminal_t::INP_LH_SHIFT) + | (m_cur_Q << core_terminal_t::INP_HL_SHIFT)); m_in_queue = QS_DELIVERED; /* mark as taken ... */ - switch (mask) + if (mask == core_terminal_t::STATE_INP_HL) + { + m_cur_Q = new_Q; + process(core_terminal_t::STATE_INP_HL | core_terminal_t::STATE_INP_ACTIVE); + } + else if (mask == core_terminal_t::STATE_INP_LH) { - case core_terminal_t::STATE_INP_HL: - m_cur_Q = m_new_Q; - process(core_terminal_t::STATE_INP_HL | core_terminal_t::STATE_INP_ACTIVE); - break; - case core_terminal_t::STATE_INP_LH: - m_cur_Q = m_new_Q; - process(core_terminal_t::STATE_INP_LH | core_terminal_t::STATE_INP_ACTIVE); - break; - default: - break; + m_cur_Q = new_Q; + process(core_terminal_t::STATE_INP_LH | core_terminal_t::STATE_INP_ACTIVE); } } diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h index 60294afedc8..0ea0168f38a 100644 --- a/src/lib/netlist/nl_base.h +++ b/src/lib/netlist/nl_base.h @@ -765,7 +765,7 @@ namespace netlist plib::linkedlist_t<core_terminal_t> m_list_active; core_terminal_t * m_railterminal; - void process(unsigned Mask); + void process(const unsigned &mask); }; class logic_net_t : public detail::net_t |