From b113d0c26d8214b8820a152f5bc20496c564b7d3 Mon Sep 17 00:00:00 2001 From: couriersud Date: Thu, 14 Feb 2019 21:34:30 +0100 Subject: netlist: memory pool now supports aligned storage. (nw) Set USE_MEMPOOL to 1 to try this (max 5% performance increase). For mingw, there is no alignment support. This triggers -Wattribute errors which due to -Werror crash the build. --- src/lib/netlist/nl_setup.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'src/lib/netlist/nl_setup.cpp') diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index 829bfde1b1a..3cdc598afbc 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -80,7 +80,7 @@ void setup_t::namespace_pop() void setup_t::register_lib_entry(const pstring &name, const pstring &sourcefile) { - factory().register_device(plib::make_unique_base(*this, name, name, "", sourcefile)); + factory().register_device(plib::make_unique(*this, name, name, "", sourcefile)); } void setup_t::register_dev(const pstring &classname, const pstring &name) @@ -593,7 +593,7 @@ void setup_t::connect_terminals(detail::core_terminal_t &t1, detail::core_termin { log().debug("adding analog net ...\n"); // FIXME: Nets should have a unique name - auto anet = plib::owned_ptr::Create(netlist(),"net." + t1.name()); + auto anet = pool().make_poolptr(netlist(),"net." + t1.name()); auto anetp = anet.get(); netlist().register_net(std::move(anet)); t1.set_net(anetp); @@ -890,19 +890,19 @@ class logic_family_std_proxy_t : public logic_family_desc_t { public: logic_family_std_proxy_t() = default; - plib::owned_ptr create_d_a_proxy(netlist_state_t &anetlist, + poolptr create_d_a_proxy(netlist_state_t &anetlist, const pstring &name, logic_output_t *proxied) const override; - plib::owned_ptr create_a_d_proxy(netlist_state_t &anetlist, const pstring &name, logic_input_t *proxied) const override; + poolptr create_a_d_proxy(netlist_state_t &anetlist, const pstring &name, logic_input_t *proxied) const override; }; -plib::owned_ptr logic_family_std_proxy_t::create_d_a_proxy(netlist_state_t &anetlist, +poolptr logic_family_std_proxy_t::create_d_a_proxy(netlist_state_t &anetlist, const pstring &name, logic_output_t *proxied) const { - return plib::owned_ptr::Create(anetlist, name, proxied); + return pool().make_poolptr(anetlist, name, proxied); } -plib::owned_ptr logic_family_std_proxy_t::create_a_d_proxy(netlist_state_t &anetlist, const pstring &name, logic_input_t *proxied) const +poolptr logic_family_std_proxy_t::create_a_d_proxy(netlist_state_t &anetlist, const pstring &name, logic_input_t *proxied) const { - return plib::owned_ptr::Create(anetlist, name, proxied); + return pool().make_poolptr(anetlist, name, proxied); } @@ -920,7 +920,7 @@ const logic_family_desc_t *setup_t::family_from_model(const pstring &model) if (e.first == model) return e.second.get(); - auto ret = plib::make_unique_base(); + auto ret = plib::make_unique(); ret->m_fixed_V = model_value(map, "FV"); ret->m_low_thresh_PCNT = model_value(map, "IVL"); @@ -994,7 +994,7 @@ void setup_t::delete_empty_nets() { netlist().nets().erase( std::remove_if(netlist().nets().begin(), netlist().nets().end(), - [](plib::owned_ptr &x) + [](poolptr &x) { if (x->num_cons() == 0) { @@ -1024,7 +1024,7 @@ void setup_t::prepare_to_run() if ( factory().is_class(e.second) || factory().is_class(e.second)) { - m_netlist.nlstate().add_dev(e.first, plib::owned_ptr(e.second->Create(netlist(), e.first))); + m_netlist.nlstate().add_dev(e.first, poolptr(e.second->Create(netlist(), e.first))); } } @@ -1041,7 +1041,7 @@ void setup_t::prepare_to_run() if ( !factory().is_class(e.second) && !factory().is_class(e.second)) { - auto dev = plib::owned_ptr(e.second->Create(netlist(), e.first)); + auto dev = poolptr(e.second->Create(netlist(), e.first)); m_netlist.nlstate().add_dev(dev->name(), std::move(dev)); } } @@ -1135,19 +1135,19 @@ bool source_t::parse(const pstring &name) std::unique_ptr source_string_t::stream(const pstring &name) { plib::unused_var(name); - return plib::make_unique_base(m_str.c_str(), std::strlen(m_str.c_str())); + return plib::make_unique(m_str.c_str(), std::strlen(m_str.c_str())); } std::unique_ptr source_mem_t::stream(const pstring &name) { plib::unused_var(name); - return plib::make_unique_base(m_str.c_str(), std::strlen(m_str.c_str())); + return plib::make_unique(m_str.c_str(), std::strlen(m_str.c_str())); } std::unique_ptr source_file_t::stream(const pstring &name) { plib::unused_var(name); - return plib::make_unique_base(m_filename); + return plib::make_unique(m_filename); } bool source_proc_t::parse(const pstring &name) -- cgit v1.2.3-70-g09d2