diff options
Diffstat (limited to 'Source/Android')
| -rw-r--r-- | Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java | 11 | ||||
| -rw-r--r-- | Source/Android/jni/MainAndroid.cpp | 43 |
2 files changed, 28 insertions, 26 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java index a3d02e31ee..8abec6927b 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java @@ -385,16 +385,9 @@ public final class NativeLibrary public static native boolean IsRunningAndUnpaused(); /** - * Enables or disables CPU block profiling - * - * @param enable - */ - public static native void SetProfiling(boolean enable); - - /** - * Writes out the block profile results + * Writes out the JitBlock Cache log dump */ - public static native void WriteProfileResults(); + public static native void WriteJitBlockLogDump(); /** * Native EGL functions not exposed by Java bindings diff --git a/Source/Android/jni/MainAndroid.cpp b/Source/Android/jni/MainAndroid.cpp index e07b1bd275..389bb815fc 100644 --- a/Source/Android/jni/MainAndroid.cpp +++ b/Source/Android/jni/MainAndroid.cpp @@ -6,6 +6,7 @@ #include <android/native_window_jni.h> #include <cstdio> #include <cstdlib> +#include <fmt/format.h> #include <jni.h> #include <memory> #include <mutex> @@ -22,6 +23,7 @@ #include "Common/Event.h" #include "Common/FileUtil.h" #include "Common/Flag.h" +#include "Common/IOFile.h" #include "Common/IniFile.h" #include "Common/Logging/LogManager.h" #include "Common/MsgHandler.h" @@ -42,7 +44,6 @@ #include "Core/Host.h" #include "Core/PowerPC/JitInterface.h" #include "Core/PowerPC/PowerPC.h" -#include "Core/PowerPC/Profiler.h" #include "Core/State.h" #include "Core/System.h" @@ -404,26 +405,34 @@ JNIEXPORT jint JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetMaxLogLev return static_cast<jint>(Common::Log::MAX_LOGLEVEL); } -JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetProfiling(JNIEnv*, jclass, - jboolean enable) +JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_WriteJitBlockLogDump( + JNIEnv* env, jclass native_library_class) { HostThreadLock guard; auto& system = Core::System::GetInstance(); auto& jit_interface = system.GetJitInterface(); - const Core::CPUThreadGuard cpu_guard(system); - jit_interface.ClearCache(cpu_guard); - jit_interface.SetProfilingState(enable ? JitInterface::ProfilingState::Enabled : - JitInterface::ProfilingState::Disabled); -} - -JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_WriteProfileResults(JNIEnv*, - jclass) -{ - HostThreadLock guard; - std::string filename = File::GetUserPath(D_DUMP_IDX) + "Debug/profiler.txt"; - File::CreateFullPath(filename); - auto& jit_interface = Core::System::GetInstance().GetJitInterface(); - jit_interface.WriteProfileResults(filename); + if (jit_interface.GetCore() == nullptr) + { + env->CallStaticVoidMethod(native_library_class, IDCache::GetDisplayToastMsg(), + ToJString(env, Common::GetStringT("JIT is not active")), + static_cast<jboolean>(false)); + return; + } + const std::string filename = fmt::format("{}{}.txt", File::GetUserPath(D_DUMPDEBUG_JITBLOCKS_IDX), + SConfig::GetInstance().GetGameID()); + File::IOFile f(filename, "w"); + if (!f) + { + env->CallStaticVoidMethod( + native_library_class, IDCache::GetDisplayToastMsg(), + ToJString(env, Common::FmtFormatT("Failed to open \"{0}\" for writing.", filename)), + static_cast<jboolean>(false)); + return; + } + jit_interface.JitBlockLogDump(Core::CPUThreadGuard{system}, f.GetHandle()); + env->CallStaticVoidMethod(native_library_class, IDCache::GetDisplayToastMsg(), + ToJString(env, Common::FmtFormatT("Wrote to \"{0}\".", filename)), + static_cast<jboolean>(false)); } // Surface Handling |
