SPU/Debugger: Use bitset for breakpoints

This commit is contained in:
Eladash 2024-04-12 16:06:56 +03:00 committed by Elad Ashkenazi
parent 7dc4ccc87d
commit 12bfc7d56a
4 changed files with 19 additions and 5 deletions

View file

@ -1839,7 +1839,10 @@ void spu_thread::cpu_work()
if (has_active_local_bps)
{
if (local_breakpoints[pc / 4])
const u32 pos_at = pc / 4;
const u32 pos_bit = 1u << (pos_at % 8);
if (local_breakpoints[pos_at] & pos_bit)
{
// Ignore repeatations until a different instruction is issued
if (pc != current_bp_pc)

View file

@ -816,7 +816,7 @@ public:
atomic_t<spu_debugger_mode> debugger_mode{};
// PC-based breakpoint list
std::array<atomic_t<bool>, SPU_LS_SIZE / 4> local_breakpoints{};
std::array<atomic_t<u8>, SPU_LS_SIZE / 4 / 8> local_breakpoints{};
atomic_t<bool> has_active_local_bps = false;
u32 current_bp_pc = umax;
bool stop_flag_removal_protection = false;