summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-08-27 11:15:24 -0400
committerLioncash <mathew1800@gmail.com>2018-08-27 11:30:19 -0400
commit7aa305ea358ee1574f1036493411aa2cdf86458f (patch)
treef3f0701b6e7744d95176587f9f23e426016ee9e8 /Source/Core
parent88a91562b542f2066f14a0205aeea50f6d1d6125 (diff)
Profiler: Migrate global g_ProfileBlocks boolean to JitOptions
This global belongs in the JitOptions structure, as it's a conditional setting (A.K.A. option) that changes the behavior of what the JIT does. Plus it keeps the scope of the variable constrained to the general area it's intended to be used and nothing further.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/PowerPC/Jit64/Jit.cpp6
-rw-r--r--Source/Core/Core/PowerPC/JitArm64/Jit.cpp4
-rw-r--r--Source/Core/Core/PowerPC/JitCommon/JitBase.h1
-rw-r--r--Source/Core/Core/PowerPC/JitInterface.cpp8
-rw-r--r--Source/Core/Core/PowerPC/JitInterface.h7
-rw-r--r--Source/Core/Core/PowerPC/Profiler.cpp4
-rw-r--r--Source/Core/Core/PowerPC/Profiler.h2
7 files changed, 22 insertions, 10 deletions
diff --git a/Source/Core/Core/PowerPC/Jit64/Jit.cpp b/Source/Core/Core/PowerPC/Jit64/Jit.cpp
index 55dda966c5..44f1b8566f 100644
--- a/Source/Core/Core/PowerPC/Jit64/Jit.cpp
+++ b/Source/Core/Core/PowerPC/Jit64/Jit.cpp
@@ -382,7 +382,7 @@ bool Jit64::Cleanup()
did_something = true;
}
- if (Profiler::g_ProfileBlocks)
+ if (jo.profile_blocks)
{
ABI_PushRegistersAndAdjustStack({}, 0);
// get end tic
@@ -608,7 +608,7 @@ void Jit64::Jit(u32 em_address)
EnableOptimization();
// Comment out the following to disable breakpoints (speed-up)
- if (!Profiler::g_ProfileBlocks)
+ if (!jo.profile_blocks)
{
if (CPU::IsStepping())
{
@@ -680,7 +680,7 @@ u8* Jit64::DoJit(u32 em_address, JitBlock* b, u32 nextPC)
}
// Conditionally add profiling code.
- if (Profiler::g_ProfileBlocks)
+ if (jo.profile_blocks)
{
// get start tic
MOV(64, R(ABI_PARAM1), ImmPtr(&b->profile_data.ticStart));
diff --git a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp
index 05dee817b6..faee0210ff 100644
--- a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp
+++ b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp
@@ -510,7 +510,7 @@ void JitArm64::BeginTimeProfile(JitBlock* b)
void JitArm64::EndTimeProfile(JitBlock* b)
{
- if (!Profiler::g_ProfileBlocks)
+ if (!jo.profile_blocks)
return;
// Fetch the current counter register
@@ -622,7 +622,7 @@ void JitArm64::DoJit(u32 em_address, JitBlock* b, u32 nextPC)
b->normalEntry = GetWritableCodePtr();
// Conditionally add profiling code.
- if (Profiler::g_ProfileBlocks)
+ if (jo.profile_blocks)
{
// get start tic
BeginTimeProfile(b);
diff --git a/Source/Core/Core/PowerPC/JitCommon/JitBase.h b/Source/Core/Core/PowerPC/JitCommon/JitBase.h
index db906dd995..90cd71ac87 100644
--- a/Source/Core/Core/PowerPC/JitCommon/JitBase.h
+++ b/Source/Core/Core/PowerPC/JitCommon/JitBase.h
@@ -53,6 +53,7 @@ protected:
bool accurateSinglePrecision;
bool fastmem;
bool memcheck;
+ bool profile_blocks;
};
struct JitState
{
diff --git a/Source/Core/Core/PowerPC/JitInterface.cpp b/Source/Core/Core/PowerPC/JitInterface.cpp
index 7ca7ebaeb5..07db190f29 100644
--- a/Source/Core/Core/PowerPC/JitInterface.cpp
+++ b/Source/Core/Core/PowerPC/JitInterface.cpp
@@ -79,6 +79,14 @@ CPUCoreBase* GetCore()
return g_jit;
}
+void SetProfilingState(ProfilingState state)
+{
+ if (!g_jit)
+ return;
+
+ g_jit->jo.profile_blocks = state == ProfilingState::Enabled;
+}
+
void WriteProfileResults(const std::string& filename)
{
Profiler::ProfileStats prof_stats;
diff --git a/Source/Core/Core/PowerPC/JitInterface.h b/Source/Core/Core/PowerPC/JitInterface.h
index 913e34148a..6fb88fe1d1 100644
--- a/Source/Core/Core/PowerPC/JitInterface.h
+++ b/Source/Core/Core/PowerPC/JitInterface.h
@@ -37,6 +37,13 @@ CPUCoreBase* InitJitCore(PowerPC::CPUCore core);
CPUCoreBase* GetCore();
// Debugging
+enum class ProfilingState
+{
+ Enabled,
+ Disabled
+};
+
+void SetProfilingState(ProfilingState state);
void WriteProfileResults(const std::string& filename);
void GetProfileResults(Profiler::ProfileStats* prof_stats);
int GetHostCode(u32* address, const u8** code, u32* code_size);
diff --git a/Source/Core/Core/PowerPC/Profiler.cpp b/Source/Core/Core/PowerPC/Profiler.cpp
index 0378c4a5b5..56038e039c 100644
--- a/Source/Core/Core/PowerPC/Profiler.cpp
+++ b/Source/Core/Core/PowerPC/Profiler.cpp
@@ -10,11 +10,9 @@
namespace Profiler
{
-bool g_ProfileBlocks = false;
-
void WriteProfileResults(const std::string& filename)
{
JitInterface::WriteProfileResults(filename);
}
-} // namespace
+} // namespace Profiler
diff --git a/Source/Core/Core/PowerPC/Profiler.h b/Source/Core/Core/PowerPC/Profiler.h
index 019dd7865c..dee4a24194 100644
--- a/Source/Core/Core/PowerPC/Profiler.h
+++ b/Source/Core/Core/PowerPC/Profiler.h
@@ -12,8 +12,6 @@
namespace Profiler
{
-extern bool g_ProfileBlocks;
-
struct BlockStat
{
BlockStat(u32 _addr, u64 c, u64 ticks, u64 run, u32 size)