From b9525773700243f29de378992327d1c7dc3b6ba2 Mon Sep 17 00:00:00 2001 From: couriersud Date: Fri, 1 Feb 2019 08:45:32 +0100 Subject: [PATCH] netlist: remove trampoline code. (nw) --- src/lib/netlist/analog/nld_opamps.cpp | 12 ++++++------ src/lib/netlist/analog/nlid_twoterm.h | 4 +++- src/lib/netlist/devices/nld_4066.cpp | 4 ++-- src/lib/netlist/devices/nld_4316.cpp | 2 +- src/lib/netlist/devices/nld_74123.cpp | 16 ++++++++-------- src/lib/netlist/devices/nld_74153.cpp | 6 +++--- src/lib/netlist/devices/nld_74ls629.cpp | 6 +++--- src/lib/netlist/devices/nld_9310.cpp | 4 ++-- src/lib/netlist/devices/nld_9322.cpp | 8 ++++---- src/lib/netlist/devices/nld_mm5837.cpp | 2 +- src/lib/netlist/devices/nld_ne555.cpp | 12 ++++++------ src/lib/netlist/devices/nld_schmitt.cpp | 8 ++++---- src/lib/netlist/devices/nld_system.cpp | 4 ++-- src/lib/netlist/devices/nlid_proxy.cpp | 4 ++-- src/lib/netlist/nl_base.cpp | 8 ++++---- src/lib/netlist/nl_base.h | 20 ++++---------------- src/lib/netlist/solver/nld_solver.cpp | 2 +- 17 files changed, 56 insertions(+), 66 deletions(-) diff --git a/src/lib/netlist/analog/nld_opamps.cpp b/src/lib/netlist/analog/nld_opamps.cpp index 5f55a26f5d0..416fdbd76ee 100644 --- a/src/lib/netlist/analog/nld_opamps.cpp +++ b/src/lib/netlist/analog/nld_opamps.cpp @@ -201,7 +201,7 @@ namespace netlist NETLIB_RESET(opamp) { - m_G1.do_reset(); + m_G1.reset(); m_G1.m_RI.setTo(m_model.m_RI); if (m_type == 1) @@ -213,11 +213,11 @@ namespace netlist } else if (m_type == 3) { - m_EBUF->do_reset(); - m_DP->do_reset(); - m_DN->do_reset(); - m_CP->do_reset(); - m_RP.do_reset(); + m_EBUF->reset(); + m_DP->reset(); + m_DN->reset(); + m_CP->reset(); + m_RP.reset(); m_EBUF->m_G.setTo(1.0); m_EBUF->m_RO.setTo(m_model.m_RO); diff --git a/src/lib/netlist/analog/nlid_twoterm.h b/src/lib/netlist/analog/nlid_twoterm.h index ad59246643d..486efdc0add 100644 --- a/src/lib/netlist/analog/nlid_twoterm.h +++ b/src/lib/netlist/analog/nlid_twoterm.h @@ -78,9 +78,11 @@ NETLIB_OBJECT(twoterm) //NETLIB_UPDATE_TERMINALSI() { } //NETLIB_RESETI() { } - NETLIB_UPDATEI(); public: + + NETLIB_UPDATEI(); + void solve_now(); void set(const nl_double G, const nl_double V, const nl_double I) diff --git a/src/lib/netlist/devices/nld_4066.cpp b/src/lib/netlist/devices/nld_4066.cpp index 2871e4898ae..25b001b5151 100644 --- a/src/lib/netlist/devices/nld_4066.cpp +++ b/src/lib/netlist/devices/nld_4066.cpp @@ -67,14 +67,14 @@ namespace netlist // We only need to update the net first if this is a time stepping net if ((1)) // m_R.m_P.net().as_analog().solver().is_timestep()) { - m_R.update_dev(); + m_R.update(); m_R.set_R(R); m_R.m_P.schedule_solve_after(NLTIME_FROM_NS(1)); } else { m_R.set_R(R); - m_R.update_dev(); + m_R.update(); } } } diff --git a/src/lib/netlist/devices/nld_4316.cpp b/src/lib/netlist/devices/nld_4316.cpp index 4290c65670c..a95cc67bfc3 100644 --- a/src/lib/netlist/devices/nld_4316.cpp +++ b/src/lib/netlist/devices/nld_4316.cpp @@ -43,7 +43,7 @@ namespace netlist { namespace devices { NETLIB_UPDATE(CD4316_GATE) { - m_R.update_dev(); + m_R.update(); if (m_S() && !m_E()) m_R.set_R(m_base_r()); else diff --git a/src/lib/netlist/devices/nld_74123.cpp b/src/lib/netlist/devices/nld_74123.cpp index ebc8eeebc83..24b79971062 100644 --- a/src/lib/netlist/devices/nld_74123.cpp +++ b/src/lib/netlist/devices/nld_74123.cpp @@ -257,8 +257,8 @@ namespace netlist { m_KP = 1.0 / (1.0 + exp(m_K())); - m_RP.do_reset(); - m_RN.do_reset(); + m_RP.reset(); + m_RN.reset(); //m_RP.set_R(R_OFF); //m_RN.set_R(R_OFF); @@ -276,8 +276,8 @@ namespace netlist NETLIB_RESET(74123_dip) { - //m_1.do_reset(); - //m_2.do_reset(); + //m_1.reset(); + //m_2.reset(); } NETLIB_UPDATE(9602_dip) @@ -289,8 +289,8 @@ namespace netlist NETLIB_RESET(9602_dip) { - //m_1.do_reset(); - //m_2.do_reset(); + //m_1.reset(); + //m_2.reset(); } NETLIB_UPDATE(4538_dip) @@ -302,8 +302,8 @@ namespace netlist NETLIB_RESET(4538_dip) { - m_1.do_reset(); - m_2.do_reset(); + m_1.reset(); + m_2.reset(); } NETLIB_DEVICE_IMPL_DEPRECATED(74123) diff --git a/src/lib/netlist/devices/nld_74153.cpp b/src/lib/netlist/devices/nld_74153.cpp index ee52ceb0721..b44b7c8a3de 100644 --- a/src/lib/netlist/devices/nld_74153.cpp +++ b/src/lib/netlist/devices/nld_74153.cpp @@ -120,15 +120,15 @@ namespace netlist NETLIB_UPDATE(74153) { m_sub.m_chan = (m_A() | (m_B()<<1)); - m_sub.update_dev(); + m_sub.update(); } NETLIB_UPDATE(74153_dip) { m_2.m_chan = m_1.m_chan = (m_A() | (m_B()<<1)); - m_1.update_dev(); - m_2.update_dev(); + m_1.update(); + m_2.update(); } NETLIB_DEVICE_IMPL(74153, "TTL_74153", "+C0,+C1,+C2,+C3,+A,+B,+G") diff --git a/src/lib/netlist/devices/nld_74ls629.cpp b/src/lib/netlist/devices/nld_74ls629.cpp index b08654c5e40..7017774266f 100644 --- a/src/lib/netlist/devices/nld_74ls629.cpp +++ b/src/lib/netlist/devices/nld_74ls629.cpp @@ -100,7 +100,7 @@ namespace netlist { m_R_FC.set_R(90000.0); m_R_RNG.set_R(90000.0); - m_clock.do_reset(); + m_clock.reset(); } NETLIB_UPDATEI(); @@ -148,8 +148,8 @@ namespace netlist NETLIB_RESETI() { - m_1.do_reset(); - m_2.do_reset(); + m_1.reset(); + m_2.reset(); } private: diff --git a/src/lib/netlist/devices/nld_9310.cpp b/src/lib/netlist/devices/nld_9310.cpp index 11929741aed..ff708924a37 100644 --- a/src/lib/netlist/devices/nld_9310.cpp +++ b/src/lib/netlist/devices/nld_9310.cpp @@ -140,8 +140,8 @@ namespace netlist NETLIB_RESET(9310) { - sub.do_reset(); - subABCD.do_reset(); + sub.reset(); + subABCD.reset(); } NETLIB_RESET(9310_subABCD) diff --git a/src/lib/netlist/devices/nld_9322.cpp b/src/lib/netlist/devices/nld_9322.cpp index d27386dd05f..d72b9a561df 100644 --- a/src/lib/netlist/devices/nld_9322.cpp +++ b/src/lib/netlist/devices/nld_9322.cpp @@ -105,10 +105,10 @@ namespace netlist NETLIB_UPDATE(9322) { - m_1.update_dev(); - m_2.update_dev(); - m_3.update_dev(); - m_4.update_dev(); + m_1.update(); + m_2.update(); + m_3.update(); + m_4.update(); } NETLIB_DEVICE_IMPL_DEPRECATED(9322) diff --git a/src/lib/netlist/devices/nld_mm5837.cpp b/src/lib/netlist/devices/nld_mm5837.cpp index 9bc678598d4..223c37c35af 100644 --- a/src/lib/netlist/devices/nld_mm5837.cpp +++ b/src/lib/netlist/devices/nld_mm5837.cpp @@ -107,7 +107,7 @@ namespace netlist // We only need to update the net first if this is a time stepping net if (m_is_timestep) - m_RV.update_dev(); + m_RV.update(); m_RV.set(NL_FCONST(1.0) / R, V, 0.0); m_RV.m_P.schedule_solve_after(NLTIME_FROM_NS(1)); } diff --git a/src/lib/netlist/devices/nld_ne555.cpp b/src/lib/netlist/devices/nld_ne555.cpp index cb29f8b3e82..e357afa6947 100644 --- a/src/lib/netlist/devices/nld_ne555.cpp +++ b/src/lib/netlist/devices/nld_ne555.cpp @@ -128,10 +128,10 @@ namespace netlist NETLIB_RESET(NE555) { - m_R1.do_reset(); - m_R2.do_reset(); - m_R3.do_reset(); - m_RDIS.do_reset(); + m_R1.reset(); + m_R2.reset(); + m_R3.reset(); + m_RDIS.reset(); /* FIXME make resistance a parameter, properly model other variants */ m_R1.set_R(5000); @@ -163,13 +163,13 @@ namespace netlist if (m_last_out && !out) { - m_RDIS.update_dev(); + m_RDIS.update(); m_OUT.push(m_R3.m_N()); m_RDIS.set_R(R_ON); } else if (!m_last_out && out) { - m_RDIS.update_dev(); + m_RDIS.update(); // FIXME: Should be delayed by 100ns m_OUT.push(m_R1.m_P()); m_RDIS.set_R(R_OFF); diff --git a/src/lib/netlist/devices/nld_schmitt.cpp b/src/lib/netlist/devices/nld_schmitt.cpp index 43ba4573681..394513d63a4 100644 --- a/src/lib/netlist/devices/nld_schmitt.cpp +++ b/src/lib/netlist/devices/nld_schmitt.cpp @@ -82,8 +82,8 @@ namespace netlist NETLIB_RESETI() { m_last_state = 1; - m_RVI.do_reset(); - m_RVO.do_reset(); + m_RVI.reset(); + m_RVO.reset(); m_is_timestep = m_RVO.m_P.net().solver()->has_timestep_devices(); m_RVI.set(NL_FCONST(1.0) / m_model.m_RI, m_model.m_VI, 0.0); m_RVO.set(NL_FCONST(1.0) / m_model.m_ROL, m_model.m_VOL, 0.0); @@ -97,7 +97,7 @@ namespace netlist { m_last_state = 0; if (m_is_timestep) - m_RVO.update_dev(); + m_RVO.update(); m_RVO.set(NL_FCONST(1.0) / m_model.m_ROH, m_model.m_VOH, 0.0); m_RVO.m_P.schedule_solve_after(NLTIME_FROM_NS(1)); } @@ -108,7 +108,7 @@ namespace netlist { m_last_state = 1; if (m_is_timestep) - m_RVO.update_dev(); + m_RVO.update(); m_RVO.set(NL_FCONST(1.0) / m_model.m_ROL, m_model.m_VOL, 0.0); m_RVO.m_P.schedule_solve_after(NLTIME_FROM_NS(1)); } diff --git a/src/lib/netlist/devices/nld_system.cpp b/src/lib/netlist/devices/nld_system.cpp index 864362de783..bfc6f71e38f 100644 --- a/src/lib/netlist/devices/nld_system.cpp +++ b/src/lib/netlist/devices/nld_system.cpp @@ -72,7 +72,7 @@ namespace netlist // We only need to update the net first if this is a time stepping net if ((0)) // m_R->m_P.net().as_analog().solver()->is_timestep()) { - m_R.update_dev(); + m_R.update(); m_R.set_R(R); m_R.m_P.schedule_solve_after(NLTIME_FROM_NS(1)); } @@ -80,7 +80,7 @@ namespace netlist { m_R.set_R(R); m_R.m_P.schedule_solve_after(NLTIME_FROM_NS(1)); - //m_R->update_dev(); + //m_R->update(); } } } diff --git a/src/lib/netlist/devices/nlid_proxy.cpp b/src/lib/netlist/devices/nlid_proxy.cpp index 24396bb54d7..38a77c71423 100644 --- a/src/lib/netlist/devices/nlid_proxy.cpp +++ b/src/lib/netlist/devices/nlid_proxy.cpp @@ -137,7 +137,7 @@ namespace netlist //m_Q.initial(0.0); m_last_state = -1; - m_RV.do_reset(); + m_RV.reset(); m_is_timestep = m_RV.m_P.net().solver()->has_timestep_devices(); m_RV.set(NL_FCONST(1.0) / logic_family()->R_low(), logic_family()->low_V(0.0, supply_V), 0.0); @@ -158,7 +158,7 @@ namespace netlist // We only need to update the net first if this is a time stepping net if (m_is_timestep) { - m_RV.update_dev(); + m_RV.update(); } m_RV.set(NL_FCONST(1.0) / R, V, 0.0); m_RV.m_P.schedule_solve_after(NLTIME_FROM_NS(1)); diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index f878be1e48a..14807111ff2 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -341,7 +341,7 @@ void netlist_t::reset() if (m_mainclock != nullptr) m_mainclock->m_Q.net().set_time(netlist_time::zero()); //if (m_solver != nullptr) - // m_solver->do_reset(); + // m_solver->reset(); m_state->reset(); } @@ -359,7 +359,7 @@ void netlist_state_t::reset() // Reset all devices once ! log().verbose("Call reset on all devices:"); for (auto & dev : m_devices) - dev->do_reset(); + dev->reset(); // Make sure everything depending on parameters is set // Currently analog input and logic input also @@ -409,14 +409,14 @@ void netlist_state_t::reset() log().verbose("Using brute force backward startup strategy"); std::size_t i = m_devices.size(); while (i>0) - m_devices[--i]->update_dev(); + m_devices[--i]->update(); } break; case 2: // brute force forward { log().verbose("Using brute force forward startup strategy"); for (auto &d : m_devices) - d->update_dev(); + d->update(); } break; } diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h index 69e7ede2b80..ca75046b3e5 100644 --- a/src/lib/netlist/nl_base.h +++ b/src/lib/netlist/nl_base.h @@ -129,9 +129,9 @@ class NETLIB_NAME(name) : public device_t #define NETLIB_UPDATE_TERMINALSI() public: virtual void update_terminals() override #define NETLIB_HANDLERI(name) private: virtual void name() NL_NOEXCEPT -#define NETLIB_UPDATEI() protected: virtual void update() NL_NOEXCEPT override +#define NETLIB_UPDATEI() public: virtual void update() NL_NOEXCEPT override #define NETLIB_UPDATE_PARAMI() public: virtual void update_param() override -#define NETLIB_RESETI() protected: virtual void reset() override +#define NETLIB_RESETI() public: virtual void reset() override #define NETLIB_TIMESTEP(chip) void NETLIB_NAME(chip) :: timestep(const nl_double step) @@ -1080,12 +1080,6 @@ namespace netlist virtual ~core_device_t(); - // FIXME: useless trampoline - void update_dev() NL_NOEXCEPT - { - do_update(); - } - void do_inc_active() NL_NOEXCEPT { if (m_hint_deactivate) @@ -1101,7 +1095,6 @@ namespace netlist dec_active(); } - void do_reset() { reset(); } void set_hint_deactivate(bool v) { m_hint_deactivate = v; } bool get_hint_deactivate() { return m_hint_deactivate; } @@ -1112,18 +1105,13 @@ namespace netlist nperfcount_t m_stat_call_count; nperfcount_t m_stat_inc_active; + virtual void update() NL_NOEXCEPT { } + virtual void reset() { } protected: - virtual void update() NL_NOEXCEPT { } virtual void inc_active() NL_NOEXCEPT { } virtual void dec_active() NL_NOEXCEPT { } - virtual void reset() { } - - void do_update() NL_NOEXCEPT - { - update(); - } log_type & log(); diff --git a/src/lib/netlist/solver/nld_solver.cpp b/src/lib/netlist/solver/nld_solver.cpp index ac7f9155feb..372919814d9 100644 --- a/src/lib/netlist/solver/nld_solver.cpp +++ b/src/lib/netlist/solver/nld_solver.cpp @@ -71,7 +71,7 @@ namespace netlist NETLIB_RESET(solver) { for (std::size_t i = 0; i < m_mat_solvers.size(); i++) - m_mat_solvers[i]->do_reset(); + m_mat_solvers[i]->reset(); } void NETLIB_NAME(solver)::stop()