mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
Code simplification
This commit is contained in:
parent
bd1123dc30
commit
c2fb41964c
@ -300,8 +300,7 @@ void netlist_mame_device_t::device_start()
|
||||
//printf("clock is %d\n", clock());
|
||||
|
||||
m_netlist = global_alloc(netlist_mame_t(*this, "netlist"));
|
||||
m_setup = global_alloc(netlist::setup_t(m_netlist));
|
||||
m_setup->init();
|
||||
m_setup = global_alloc(netlist::setup_t(*m_netlist));
|
||||
|
||||
// register additional devices
|
||||
|
||||
@ -353,9 +352,9 @@ void netlist_mame_device_t::device_reset()
|
||||
void netlist_mame_device_t::device_stop()
|
||||
{
|
||||
LOG_DEV_CALLS(("device_stop\n"));
|
||||
m_setup->print_stats();
|
||||
netlist().print_stats();
|
||||
|
||||
m_netlist->stop();
|
||||
netlist().stop();
|
||||
|
||||
global_free(m_setup);
|
||||
m_setup = nullptr;
|
||||
|
@ -379,6 +379,21 @@ ATTR_HOT void netlist_t::process_queue(const netlist_time &delta)
|
||||
}
|
||||
}
|
||||
|
||||
void netlist_t::print_stats() const
|
||||
{
|
||||
#if (NL_KEEP_STATISTICS)
|
||||
{
|
||||
for (std::size_t i = 0; i < m_started_devices.size(); i++)
|
||||
{
|
||||
core_device_t *entry = m_started_devices[i];
|
||||
printf("Device %20s : %12d %12d %15ld\n", entry->name().cstr(), entry->stat_call_count, entry->stat_update_count, (long int) entry->stat_total_time / (entry->stat_update_count + 1));
|
||||
}
|
||||
printf("Queue Pushes %15d\n", queue().m_prof_call);
|
||||
printf("Queue Moves %15d\n", queue().m_prof_sortmove);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
// Default netlist elements ...
|
||||
// ----------------------------------------------------------------------------------------
|
||||
@ -409,7 +424,7 @@ ATTR_COLD core_device_t::~core_device_t()
|
||||
ATTR_COLD void core_device_t::start_dev()
|
||||
{
|
||||
#if (NL_KEEP_STATISTICS)
|
||||
netlist().m_started_devices.add(this, false);
|
||||
netlist().m_started_devices.push_back(this);
|
||||
#endif
|
||||
#if (NL_PMF_TYPE == NL_PMF_TYPE_GNUC_PMF)
|
||||
void (core_device_t::* pFunc)() = &core_device_t::update;
|
||||
@ -656,7 +671,7 @@ ATTR_HOT /* inline */ void net_t::update_devs()
|
||||
|
||||
for (core_terminal_t *p = m_list_active.first(); p != nullptr; p = p->next())
|
||||
{
|
||||
inc_stat(p->netdev().stat_call_count);
|
||||
inc_stat(p->device().stat_call_count);
|
||||
if ((p->state() & mask) != 0)
|
||||
p->device().update_dev();
|
||||
}
|
||||
|
@ -1269,7 +1269,7 @@ namespace netlist
|
||||
pvector_t<device_t *> m_devices;
|
||||
net_t::list_t m_nets;
|
||||
#if (NL_KEEP_STATISTICS)
|
||||
pnamedlist_t<core_device_t *> m_started_devices;
|
||||
pvector_t<core_device_t *> m_started_devices;
|
||||
#endif
|
||||
|
||||
ATTR_COLD plog_base<NL_DEBUG> &log() { return m_log; }
|
||||
@ -1279,6 +1279,8 @@ namespace netlist
|
||||
|
||||
ATTR_COLD pdynlib &lib() { return *m_lib; }
|
||||
|
||||
void print_stats() const;
|
||||
|
||||
protected:
|
||||
|
||||
#if (NL_KEEP_STATISTICS)
|
||||
|
@ -50,22 +50,17 @@ NETLIST_END()
|
||||
|
||||
namespace netlist
|
||||
{
|
||||
setup_t::setup_t(netlist_t *netlist)
|
||||
setup_t::setup_t(netlist_t &netlist)
|
||||
: m_netlist(netlist)
|
||||
, m_factory(*this)
|
||||
, m_proxy_cnt(0)
|
||||
, m_frontier_cnt(0)
|
||||
{
|
||||
netlist->set_setup(this);
|
||||
m_factory = palloc(factory_list_t(*this));
|
||||
}
|
||||
|
||||
void setup_t::init()
|
||||
{
|
||||
initialize_factory(factory());
|
||||
netlist.set_setup(this);
|
||||
initialize_factory(m_factory);
|
||||
NETLIST_NAME(base)(*this);
|
||||
}
|
||||
|
||||
|
||||
setup_t::~setup_t()
|
||||
{
|
||||
m_links.clear();
|
||||
@ -75,7 +70,6 @@ setup_t::~setup_t()
|
||||
m_param_values.clear();
|
||||
|
||||
netlist().set_setup(nullptr);
|
||||
pfree(m_factory);
|
||||
m_sources.clear_and_free();
|
||||
|
||||
pstring::resetmem();
|
||||
@ -880,21 +874,6 @@ void setup_t::start_devices()
|
||||
netlist().start();
|
||||
}
|
||||
|
||||
void setup_t::print_stats() const
|
||||
{
|
||||
#if (NL_KEEP_STATISTICS)
|
||||
{
|
||||
for (std::size_t i = 0; i < netlist().m_started_devices.size(); i++)
|
||||
{
|
||||
core_device_t *entry = netlist().m_started_devices[i];
|
||||
printf("Device %20s : %12d %12d %15ld\n", entry->name(), entry->stat_call_count, entry->stat_update_count, (long int) entry->stat_total_time / (entry->stat_update_count + 1));
|
||||
}
|
||||
printf("Queue Pushes %15d\n", netlist().queue().m_prof_call);
|
||||
printf("Queue Moves %15d\n", netlist().queue().m_prof_sortmove);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
// Model / family
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
@ -102,16 +102,15 @@ namespace netlist
|
||||
|
||||
using link_t = std::pair<pstring, pstring>;
|
||||
|
||||
setup_t(netlist_t *netlist);
|
||||
setup_t(netlist_t &netlist);
|
||||
~setup_t();
|
||||
|
||||
void init();
|
||||
|
||||
netlist_t &netlist() { return *m_netlist; }
|
||||
const netlist_t &netlist() const { return *m_netlist; }
|
||||
netlist_t &netlist() { return m_netlist; }
|
||||
const netlist_t &netlist() const { return m_netlist; }
|
||||
|
||||
pstring build_fqn(const pstring &obj_name) const;
|
||||
|
||||
void register_object(device_t &dev, const pstring &name, object_t &obj);
|
||||
void register_dev(device_t *dev);
|
||||
void register_dev(const pstring &classname, const pstring &name);
|
||||
|
||||
@ -134,7 +133,6 @@ namespace netlist
|
||||
|
||||
void remove_connections(const pstring attach);
|
||||
|
||||
void register_object(device_t &dev, const pstring &name, object_t &obj);
|
||||
bool connect(core_terminal_t &t1, core_terminal_t &t2);
|
||||
|
||||
bool device_exists(const pstring name) const;
|
||||
@ -157,13 +155,11 @@ namespace netlist
|
||||
|
||||
void register_source(source_t *src) { m_sources.push_back(src); }
|
||||
|
||||
factory_list_t &factory() { return *m_factory; }
|
||||
const factory_list_t &factory() const { return *m_factory; }
|
||||
factory_list_t &factory() { return m_factory; }
|
||||
const factory_list_t &factory() const { return m_factory; }
|
||||
|
||||
bool is_library_item(const pstring &name) const { return m_lib.contains(name); }
|
||||
|
||||
void print_stats() const;
|
||||
|
||||
/* model / family related */
|
||||
|
||||
logic_family_desc_t *family_from_model(const pstring &model);
|
||||
@ -194,7 +190,7 @@ namespace netlist
|
||||
const pstring resolve_alias(const pstring &name) const;
|
||||
devices::nld_base_proxy *get_d_a_proxy(core_terminal_t &out);
|
||||
|
||||
netlist_t *m_netlist;
|
||||
netlist_t &m_netlist;
|
||||
|
||||
phashmap_t<pstring, pstring> m_alias;
|
||||
phashmap_t<pstring, param_t *> m_params;
|
||||
@ -204,7 +200,7 @@ namespace netlist
|
||||
pvector_t<link_t> m_links;
|
||||
pvector_t<std::pair<pstring, base_factory_t *>> m_device_factory;
|
||||
|
||||
factory_list_t *m_factory;
|
||||
factory_list_t m_factory;
|
||||
|
||||
phashmap_t<pstring, pstring> m_models;
|
||||
|
||||
|
@ -103,8 +103,7 @@ public:
|
||||
|
||||
void init()
|
||||
{
|
||||
m_setup = palloc(netlist::setup_t(this));
|
||||
m_setup->init();
|
||||
m_setup = palloc(netlist::setup_t(*this));
|
||||
}
|
||||
|
||||
void read_netlist(const pstring &filename, const pstring &name)
|
||||
|
Loading…
Reference in New Issue
Block a user