Permalink
Browse files

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.
  • Loading branch information...
lioncash committed Aug 27, 2018
1 parent 88a9156 commit 7aa305ea358ee1574f1036493411aa2cdf86458f
@@ -498,7 +498,8 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetProfiling
std::lock_guard<std::mutex> guard(s_host_identity_lock);
Core::SetState(Core::State::Paused);
JitInterface::ClearCache();
Profiler::g_ProfileBlocks = enable;
JitInterface::SetProfilingState(enable ? JitInterface::ProfilingState::Enabled :
JitInterface::ProfilingState::Disabled);
Core::SetState(Core::State::Running);
}
@@ -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));
@@ -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);
@@ -53,6 +53,7 @@ class JitBase : public CPUCoreBase
bool accurateSinglePrecision;
bool fastmem;
bool memcheck;
bool profile_blocks;
};
struct JitState
{
@@ -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;
@@ -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);
@@ -10,11 +10,9 @@
namespace Profiler
{
bool g_ProfileBlocks = false;
void WriteProfileResults(const std::string& filename)
{
JitInterface::WriteProfileResults(filename);
}
} // namespace
} // namespace Profiler
@@ -12,8 +12,6 @@
namespace Profiler
{
extern bool g_ProfileBlocks;
struct BlockStat
{
BlockStat(u32 _addr, u64 c, u64 ticks, u64 run, u32 size)

0 comments on commit 7aa305e

Please sign in to comment.