From e973236203292637eb7bd009a4cfbd6fd785181f Mon Sep 17 00:00:00 2001 From: Jesse Talavera-Greenberg Date: Tue, 28 Nov 2023 17:16:41 -0500 Subject: Refactor `NDS` and `DSi` to be objects (#1893) * First crack at refactoring NDS and DSi into objects - Remove all global/`static` variables in `NDS` and related classes - Rely more on virtual dispatch when we need to pick methods at runtime - Pass `NDS&` or `DSi&` to its constituent components where necessary - Introduce some headers or move some definitions to break `#include` cycles * Refactor the frontend to accommodate the core's changes * Move up `SchedList`'s declaration - Move it to before the components are initialized so the `map`s inside are initialized - Fields in C++ are initialized in the order they're declared * Fix a crash when allocating memory * Fix JIT-free builds * Fix GDB-free builds * Fix Linux builds - Explicitly qualify some member types in NDS, since they share the same name as their classes * Remove an unnecessary template argument - This was causing the build to fail on macOS * Fix ARM and Android builds * Rename `Constants.h` to `MemConstants.h` * Add `NDS::IsRunning()` * Use an `#include` guard instead of `#pragma once` --- src/ARMJIT_x64/ARMJIT_Compiler.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/ARMJIT_x64/ARMJIT_Compiler.h') diff --git a/src/ARMJIT_x64/ARMJIT_Compiler.h b/src/ARMJIT_x64/ARMJIT_Compiler.h index f38a6c3..fa6d78a 100644 --- a/src/ARMJIT_x64/ARMJIT_Compiler.h +++ b/src/ARMJIT_x64/ARMJIT_Compiler.h @@ -35,6 +35,7 @@ namespace melonDS { class ARMJIT; class ARMJIT_Memory; +class NDS; const Gen::X64Reg RCPU = Gen::RBP; const Gen::X64Reg RCPSR = Gen::R15; @@ -81,9 +82,9 @@ class Compiler : public Gen::XEmitter { public: #ifdef JIT_ENABLED - explicit Compiler(ARMJIT& jit); + explicit Compiler(melonDS::NDS& nds); #else - explicit Compiler(ARMJIT& jit) : XEmitter(), JIT(jit) {} + explicit Compiler(melonDS::NDS& nds) : XEmitter(), NDS(nds) {} #endif void Reset(); @@ -243,7 +244,7 @@ public: void CreateMethod(const char* namefmt, void* start, ...); #endif - ARMJIT& JIT; + melonDS::NDS& NDS; u8* FarCode {}; u8* NearCode {}; u32 FarSize {}; -- cgit v1.2.3