Merge pull request #7371 from lioncash/global

Profiler: Migrate global g_ProfileBlocks to JitOptions
This commit is contained in:
Pierre Bourdon 2018-08-27 18:02:59 +02:00 committed by GitHub
commit f7b334817d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 24 additions and 11 deletions

View File

@ -498,7 +498,8 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetProfiling
std::lock_guard<std::mutex> guard(s_host_identity_lock); std::lock_guard<std::mutex> guard(s_host_identity_lock);
Core::SetState(Core::State::Paused); Core::SetState(Core::State::Paused);
JitInterface::ClearCache(); JitInterface::ClearCache();
Profiler::g_ProfileBlocks = enable; JitInterface::SetProfilingState(enable ? JitInterface::ProfilingState::Enabled :
JitInterface::ProfilingState::Disabled);
Core::SetState(Core::State::Running); Core::SetState(Core::State::Running);
} }

View File

@ -382,7 +382,7 @@ bool Jit64::Cleanup()
did_something = true; did_something = true;
} }
if (Profiler::g_ProfileBlocks) if (jo.profile_blocks)
{ {
ABI_PushRegistersAndAdjustStack({}, 0); ABI_PushRegistersAndAdjustStack({}, 0);
// get end tic // get end tic
@ -608,7 +608,7 @@ void Jit64::Jit(u32 em_address)
EnableOptimization(); EnableOptimization();
// Comment out the following to disable breakpoints (speed-up) // Comment out the following to disable breakpoints (speed-up)
if (!Profiler::g_ProfileBlocks) if (!jo.profile_blocks)
{ {
if (CPU::IsStepping()) if (CPU::IsStepping())
{ {
@ -680,7 +680,7 @@ u8* Jit64::DoJit(u32 em_address, JitBlock* b, u32 nextPC)
} }
// Conditionally add profiling code. // Conditionally add profiling code.
if (Profiler::g_ProfileBlocks) if (jo.profile_blocks)
{ {
// get start tic // get start tic
MOV(64, R(ABI_PARAM1), ImmPtr(&b->profile_data.ticStart)); MOV(64, R(ABI_PARAM1), ImmPtr(&b->profile_data.ticStart));

View File

@ -510,7 +510,7 @@ void JitArm64::BeginTimeProfile(JitBlock* b)
void JitArm64::EndTimeProfile(JitBlock* b) void JitArm64::EndTimeProfile(JitBlock* b)
{ {
if (!Profiler::g_ProfileBlocks) if (!jo.profile_blocks)
return; return;
// Fetch the current counter register // Fetch the current counter register
@ -622,7 +622,7 @@ void JitArm64::DoJit(u32 em_address, JitBlock* b, u32 nextPC)
b->normalEntry = GetWritableCodePtr(); b->normalEntry = GetWritableCodePtr();
// Conditionally add profiling code. // Conditionally add profiling code.
if (Profiler::g_ProfileBlocks) if (jo.profile_blocks)
{ {
// get start tic // get start tic
BeginTimeProfile(b); BeginTimeProfile(b);

View File

@ -53,6 +53,7 @@ protected:
bool accurateSinglePrecision; bool accurateSinglePrecision;
bool fastmem; bool fastmem;
bool memcheck; bool memcheck;
bool profile_blocks;
}; };
struct JitState struct JitState
{ {

View File

@ -79,6 +79,14 @@ CPUCoreBase* GetCore()
return g_jit; 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) void WriteProfileResults(const std::string& filename)
{ {
Profiler::ProfileStats prof_stats; Profiler::ProfileStats prof_stats;

View File

@ -37,6 +37,13 @@ CPUCoreBase* InitJitCore(PowerPC::CPUCore core);
CPUCoreBase* GetCore(); CPUCoreBase* GetCore();
// Debugging // Debugging
enum class ProfilingState
{
Enabled,
Disabled
};
void SetProfilingState(ProfilingState state);
void WriteProfileResults(const std::string& filename); void WriteProfileResults(const std::string& filename);
void GetProfileResults(Profiler::ProfileStats* prof_stats); void GetProfileResults(Profiler::ProfileStats* prof_stats);
int GetHostCode(u32* address, const u8** code, u32* code_size); int GetHostCode(u32* address, const u8** code, u32* code_size);

View File

@ -10,11 +10,9 @@
namespace Profiler namespace Profiler
{ {
bool g_ProfileBlocks = false;
void WriteProfileResults(const std::string& filename) void WriteProfileResults(const std::string& filename)
{ {
JitInterface::WriteProfileResults(filename); JitInterface::WriteProfileResults(filename);
} }
} // namespace } // namespace Profiler

View File

@ -12,8 +12,6 @@
namespace Profiler namespace Profiler
{ {
extern bool g_ProfileBlocks;
struct BlockStat struct BlockStat
{ {
BlockStat(u32 _addr, u64 c, u64 ticks, u64 run, u32 size) BlockStat(u32 _addr, u64 c, u64 ticks, u64 run, u32 size)