summaryrefslogtreecommitdiff
path: root/m68k_debugging.cpp
diff options
context:
space:
mode:
authorOxore <oxore@protonmail.com>2024-05-22 23:44:38 +0300
committerOxore <oxore@protonmail.com>2024-05-22 23:44:38 +0300
commitda7bab98907a700d1e525ccafe8f623d0927a724 (patch)
treeb27773247c227003c8a68f7f7c3c2c1ac201bc19 /m68k_debugging.cpp
parent71b89bc9ceb59f2603cf4b0635849269597a4823 (diff)
Optimize compile times by removing find_if usage
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: {