diff options
Diffstat (limited to 'src/lib/netlist/nl_base.cpp')
-rw-r--r-- | src/lib/netlist/nl_base.cpp | 28 |
1 files changed, 6 insertions, 22 deletions
diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index 52357f29041..168ec65ebc3 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -313,7 +313,7 @@ void netlist_t::start() } } - log().debug("Searching for mainclock and solver ...\n"); + log().debug("Searching for solver and parameters ...\n"); m_solver = get_single_device<devices::NETLIB_NAME(solver)>("solver"); m_params = get_single_device<devices::NETLIB_NAME(netlistparams)>("parameter"); @@ -784,7 +784,6 @@ detail::net_t::net_t(netlist_t &nl, const pstring &aname, core_terminal_t *mr) , m_new_Q(*this, "m_new_Q", 0) , m_cur_Q (*this, "m_cur_Q", 0) , m_in_queue(*this, "m_in_queue", QS_DELIVERED) - , m_active(*this, "m_active", 0) , m_time(*this, "m_time", netlist_time::zero()) , m_railterminal(mr) { @@ -797,10 +796,9 @@ detail::net_t::~net_t() void detail::net_t::inc_active(core_terminal_t &term) NL_NOEXCEPT { + const bool was_empty = m_list_active.empty(); m_list_active.push_front(&term); - ++m_active; - nl_assert(m_active <= static_cast<int>(num_cons())); - if (m_active == 1) + if (was_empty) { railterminal().device().do_inc_active(); if (m_in_queue == QS_DELAYED_DUE_TO_INACTIVE) @@ -821,10 +819,8 @@ void detail::net_t::inc_active(core_terminal_t &term) NL_NOEXCEPT void detail::net_t::dec_active(core_terminal_t &term) NL_NOEXCEPT { - --m_active; - nl_assert(m_active >= 0); m_list_active.remove(&term); - if (m_active == 0) + if (m_list_active.empty()) railterminal().device().do_dec_active(); } @@ -832,15 +828,12 @@ void detail::net_t::rebuild_list() { /* rebuild m_list */ - int cnt = 0; m_list_active.clear(); for (auto & term : m_core_terms) if (term->state() != logic_t::STATE_INP_PASSIVE) { m_list_active.push_back(term); - cnt++; } - m_active = cnt; } void detail::net_t::process(const unsigned &mask) @@ -883,7 +876,6 @@ void detail::net_t::update_devs() NL_NOEXCEPT void detail::net_t::reset() { m_time = netlist_time::zero(); - m_active = 0; m_in_queue = QS_DELIVERED; m_new_Q = 0; @@ -898,14 +890,12 @@ void detail::net_t::reset() m_list_active.clear(); for (core_terminal_t *ct : m_core_terms) - m_list_active.push_back(ct); + if (ct->state() != logic_t::STATE_INP_PASSIVE) + m_list_active.push_back(ct); for (core_terminal_t *ct : m_core_terms) ct->reset(); - for (core_terminal_t *ct : m_core_terms) - if (ct->state() != logic_t::STATE_INP_PASSIVE) - m_active++; } void detail::net_t::add_terminal(detail::core_terminal_t &terminal) @@ -918,9 +908,6 @@ void detail::net_t::add_terminal(detail::core_terminal_t &terminal) terminal.set_net(this); m_core_terms.push_back(&terminal); - - if (terminal.state() != logic_t::STATE_INP_PASSIVE) - m_active++; } void detail::net_t::remove_terminal(detail::core_terminal_t &terminal) @@ -933,8 +920,6 @@ void detail::net_t::remove_terminal(detail::core_terminal_t &terminal) else netlist().log().fatal(MF_2_REMOVE_TERMINAL_1_FROM_NET_2, terminal.name(), this->name()); - if (terminal.state() != logic_t::STATE_INP_PASSIVE) - m_active--; } void detail::net_t::move_connections(detail::net_t &dest_net) @@ -942,7 +927,6 @@ void detail::net_t::move_connections(detail::net_t &dest_net) for (auto &ct : m_core_terms) dest_net.add_terminal(*ct); m_core_terms.clear(); - m_active = 0; } // ---------------------------------------------------------------------------------------- |