debug: better handling of duplicate memory access

Don't remove and reinsert nodes that correspond to a duplicate memory
access, because tree rebalancing kills performances. Update the node's
element content instead.
This commit is contained in:
Fabrice Bellet 2014-12-12 13:47:25 +01:00 committed by Olivier Galibert
parent 47ba3927db
commit d77c58794b
2 changed files with 8 additions and 5 deletions

View File

@ -1995,11 +1995,11 @@ void device_debug::memory_write_hook(address_space &space, offs_t address, UINT6
if (m_track_mem)
{
dasm_memory_access newAccess(space.spacenum(), address, data, history_pc(0));
if (!m_track_mem_set.insert(newAccess))
{
m_track_mem_set.remove(newAccess);
dasm_memory_access* trackedAccess = m_track_mem_set.find(newAccess);
if (trackedAccess)
trackedAccess->m_pc = newAccess.m_pc;
else
m_track_mem_set.insert(newAccess);
}
}
watchpoint_check(space, WATCHPOINT_WRITE, address, data, mem_mask);
}

View File

@ -418,7 +418,10 @@ private:
{
if ((m_address == rhs.m_address) && (m_address_space == rhs.m_address_space))
return m_data < rhs.m_data;
return (m_address < rhs.m_address) && (m_address_space == rhs.m_address_space);
else if (m_address_space == rhs.m_address_space)
return m_address < rhs.m_address;
else
return m_address_space < rhs.m_address_space;
}
// Stores the PC for a given address, memory region, and data value