summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/emumem.cpp
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2020-05-21 10:46:01 +0200
committer Olivier Galibert <galibert@pobox.com>2020-05-21 10:46:20 +0200
commit941e06150bef625cb8bf1d58139563bb5c828b2d (patch)
tree19faca21365d66e5480a9cf349d502cc676ca802 /src/emu/emumem.cpp
parentf739a74f08bdbdd2d45abb5f9fca2418ef4ab0f7 (diff)
emumem: Another slight speedup. masking before dispatch at top level is not needed because it's already done at the global mask level. [O. Galibert]
Diffstat (limited to 'src/emu/emumem.cpp')
-rw-r--r--src/emu/emumem.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/emu/emumem.cpp b/src/emu/emumem.cpp
index 1881bbbc013..af2aae5c104 100644
--- a/src/emu/emumem.cpp
+++ b/src/emu/emumem.cpp
@@ -80,7 +80,7 @@ void handler_entry::enumerate_references(handler_entry::reflist &refs) const
{
}
-template<int Width, int AddrShift, int Endian> void handler_entry_read<Width, AddrShift, Endian>::get_dispatch(handler_entry_read<Width, AddrShift, Endian> *const *&dispatch, offs_t &mask, u8 &shift) const
+template<int Width, int AddrShift, int Endian> void handler_entry_read<Width, AddrShift, Endian>::get_dispatch(handler_entry_read<Width, AddrShift, Endian> *const *&dispatch, u8 &shift) const
{
fatalerror("get_dispatch called on non-dispatching class\n");
}
@@ -131,7 +131,7 @@ template<int Width, int AddrShift, int Endian> void handler_entry_read<Width, Ad
}
-template<int Width, int AddrShift, int Endian> void handler_entry_write<Width, AddrShift, Endian>::get_dispatch(handler_entry_write<Width, AddrShift, Endian> *const *&dispatch, offs_t &mask, u8 &shift) const
+template<int Width, int AddrShift, int Endian> void handler_entry_write<Width, AddrShift, Endian>::get_dispatch(handler_entry_write<Width, AddrShift, Endian> *const *&dispatch, u8 &shift) const
{
fatalerror("get_dispatch called on non-dispatching class\n");
}
@@ -301,8 +301,6 @@ class address_space_specific : public address_space
public:
handler_entry_read<Width, AddrShift, Endian> *const *m_dispatch_read;
handler_entry_write<Width, AddrShift, Endian> *const *m_dispatch_write;
- offs_t m_mask_read;
- offs_t m_mask_write;
u8 m_shift_read;
u8 m_shift_write;
@@ -521,8 +519,8 @@ public:
default: fatalerror("Unhandled address bus width %d\n", address_width);
}
- m_root_read->get_dispatch(m_dispatch_read, m_mask_read, m_shift_read);
- m_root_write->get_dispatch(m_dispatch_write, m_mask_write, m_shift_write);
+ m_root_read->get_dispatch(m_dispatch_read, m_shift_read);
+ m_root_write->get_dispatch(m_dispatch_write, m_shift_write);
}
void *create_cache() override {
@@ -530,7 +528,7 @@ public:
}
void *create_specific() override {
- return new memory_access_specific<Width, AddrShift, Endian>(*this, m_dispatch_read, m_mask_read, m_shift_read, m_dispatch_write, m_mask_write, m_shift_write);
+ return new memory_access_specific<Width, AddrShift, Endian>(*this, m_dispatch_read, m_shift_read, m_dispatch_write, m_shift_write);
}
void delayed_ref(handler_entry *e) {
@@ -597,25 +595,25 @@ public:
// native read
NativeType read_native(offs_t offset, NativeType mask)
{
- return dispatch_read<Width, AddrShift, Endian>(m_mask_read, m_shift_read, offset, mask, m_dispatch_read);;
+ return dispatch_read<Width, AddrShift, Endian>(offs_t(-1), m_shift_read, offset, mask, m_dispatch_read);;
}
// mask-less native read
NativeType read_native(offs_t offset)
{
- return dispatch_read<Width, AddrShift, Endian>(m_mask_read, m_shift_read, offset, uX(0xffffffffffffffffU), m_dispatch_read);;
+ return dispatch_read<Width, AddrShift, Endian>(offs_t(-1), m_shift_read, offset, uX(0xffffffffffffffffU), m_dispatch_read);;
}
// native write
void write_native(offs_t offset, NativeType data, NativeType mask)
{
- dispatch_write<Width, AddrShift, Endian>(m_mask_write, m_shift_write, offset, data, mask, m_dispatch_write);;
+ dispatch_write<Width, AddrShift, Endian>(offs_t(-1), m_shift_write, offset, data, mask, m_dispatch_write);;
}
// mask-less native write
void write_native(offs_t offset, NativeType data)
{
- dispatch_write<Width, AddrShift, Endian>(m_mask_write, m_shift_write, offset, data, uX(0xffffffffffffffffU), m_dispatch_write);;
+ dispatch_write<Width, AddrShift, Endian>(offs_t(-1), m_shift_write, offset, data, uX(0xffffffffffffffffU), m_dispatch_write);;
}
// virtual access to these functions