summaryrefslogtreecommitdiff
path: root/m68k_debugging.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'm68k_debugging.cpp')
-rw-r--r--m68k_debugging.cpp106
1 files changed, 56 insertions, 50 deletions
diff --git a/m68k_debugging.cpp b/m68k_debugging.cpp
index 5bae0d0..bcad0e2 100644
--- a/m68k_debugging.cpp
+++ b/m68k_debugging.cpp
@@ -6,7 +6,6 @@
#include "bus.hpp"
#include "utils.hpp"
-#include <algorithm>
#include <cassert>
#include <cstdlib>
#include <vector>
@@ -158,38 +157,41 @@ void M68KDebuggingControl::SetBreakpoint(
switch (type) {
case BreakpointType::kSoftwareBreakpoint:
case BreakpointType::kHardwareBreakpoint: {
- const auto it = std::find_if(
- code_bkpts.begin(),
- code_bkpts.end(),
- [&](const Breakpoint& b) { return b.offset == address && b.length == length; });
- if (it == code_bkpts.end())
- code_bkpts.push_back(Breakpoint{address, length});
+ for (size_t bi = 0; bi < code_bkpts.size(); bi++) {
+ const auto& b = code_bkpts[bi];
+ if (b.offset == address && b.length == length) {
+ return;
+ }
+ }
+ code_bkpts.push_back(Breakpoint{address, length});
} break;
case BreakpointType::kWriteWatchpoint: {
- const auto it = std::find_if(
- write_bkpts.begin(),
- write_bkpts.end(),
- [&](const Breakpoint& b) { return b.offset == address && b.length == length; });
- if (it == write_bkpts.end())
- write_bkpts.push_back(Breakpoint{address, length});
+ for (size_t bi = 0; bi < write_bkpts.size(); bi++) {
+ const auto& b = write_bkpts[bi];
+ if (b.offset == address && b.length == length) {
+ return;
+ }
+ }
+ write_bkpts.push_back(Breakpoint{address, length});
} break;
case BreakpointType::kReadWatchpoint: {
- const auto it = std::find_if(
- read_bkpts.begin(),
- read_bkpts.end(),
- [&](const Breakpoint& b) { return b.offset == address && b.length == length; });
- if (it == read_bkpts.end())
- read_bkpts.push_back(Breakpoint{address, length});
+ for (size_t bi = 0; bi < read_bkpts.size(); bi++) {
+ const auto& b = read_bkpts[bi];
+ if (b.offset == address && b.length == length) {
+ return;
+ }
+ }
+ read_bkpts.push_back(Breakpoint{address, length});
} break;
case BreakpointType::kAccessWatchpoint: {
- const auto it = std::find_if(
- access_bkpts.begin(),
- access_bkpts.end(),
- [&](const Breakpoint& b) { return b.offset == address && b.length == length; });
- if (it == access_bkpts.end())
- access_bkpts.push_back(Breakpoint{address, length});
+ for (size_t bi = 0; bi < access_bkpts.size(); bi++) {
+ const auto& b = access_bkpts[bi];
+ if (b.offset == address && b.length == length) {
+ return;
+ }
+ }
+ access_bkpts.push_back(Breakpoint{address, length});
} break;
- break;
case BreakpointType::kUnsupported: {
UNREACHABLE;
} break;
@@ -205,36 +207,40 @@ void M68KDebuggingControl::RemoveBreakpoint(
switch (type) {
case BreakpointType::kSoftwareBreakpoint:
case BreakpointType::kHardwareBreakpoint: {
- const auto it = std::find_if(
- code_bkpts.begin(),
- code_bkpts.end(),
- [&](const Breakpoint& b) { return b.offset == address && b.length == length; });
- if (it != code_bkpts.end())
- code_bkpts.erase(it);
+ for (size_t bi = 0; bi < code_bkpts.size(); bi++) {
+ const auto& b = code_bkpts[bi];
+ if (b.offset == address && b.length == length) {
+ code_bkpts.erase(code_bkpts.begin() + bi);
+ break;
+ }
+ }
} break;
case BreakpointType::kWriteWatchpoint: {
- const auto it = std::find_if(
- write_bkpts.begin(),
- write_bkpts.end(),
- [&](const Breakpoint& b) { return b.offset == address && b.length == length; });
- if (it != write_bkpts.end())
- write_bkpts.erase(it);
+ for (size_t bi = 0; bi < write_bkpts.size(); bi++) {
+ const auto& b = write_bkpts[bi];
+ if (b.offset == address && b.length == length) {
+ write_bkpts.erase(write_bkpts.begin() + bi);
+ break;
+ }
+ }
} break;
case BreakpointType::kReadWatchpoint: {
- const auto it = std::find_if(
- read_bkpts.begin(),
- read_bkpts.end(),
- [&](const Breakpoint& b) { return b.offset == address && b.length == length; });
- if (it != read_bkpts.end())
- read_bkpts.erase(it);
+ for (size_t bi = 0; bi < read_bkpts.size(); bi++) {
+ const auto& b = read_bkpts[bi];
+ if (b.offset == address && b.length == length) {
+ read_bkpts.erase(read_bkpts.begin() + bi);
+ break;
+ }
+ }
} break;
case BreakpointType::kAccessWatchpoint: {
- const auto it = std::find_if(
- access_bkpts.begin(),
- access_bkpts.end(),
- [&](const Breakpoint& b) { return b.offset == address && b.length == length; });
- if (it != access_bkpts.end())
- access_bkpts.erase(it);
+ for (size_t bi = 0; bi < access_bkpts.size(); bi++) {
+ const auto& b = access_bkpts[bi];
+ if (b.offset == address && b.length == length) {
+ access_bkpts.erase(access_bkpts.begin() + bi);
+ break;
+ }
+ }
} break;
break;
case BreakpointType::kUnsupported: {