diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-05-31 18:21:42 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-05-31 18:21:42 +0200 |
| commit | c5e8aaff4a73665ad9ee0231713a7b6068bf2547 (patch) | |
| tree | 580fbdb15a94a17f469f1e85b4850ff32c3e8851 /src | |
| parent | 2017ef192f49715783e0108d8d0ac4b826b0ac45 (diff) | |
| download | box64-c5e8aaff4a73665ad9ee0231713a7b6068bf2547.tar.gz box64-c5e8aaff4a73665ad9ee0231713a7b6068bf2547.zip | |
[DYNAREC] Addeddetection of libjvm (and an option to disable it) to apply conservative settings when loaded (should help #813) and probably other java based games/apps)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/include/debug.h | 1 | ||||
| -rwxr-xr-x | src/librarian/library.c | 5 | ||||
| -rwxr-xr-x | src/main.c | 10 | ||||
| -rw-r--r-- | src/tools/rcfile.c | 2 |
4 files changed, 18 insertions, 0 deletions
diff --git a/src/include/debug.h b/src/include/debug.h index 2d899beb..352e9b12 100755 --- a/src/include/debug.h +++ b/src/include/debug.h @@ -23,6 +23,7 @@ extern int box64_dynarec_x87double; extern int box64_dynarec_safeflags; extern int box64_dynarec_callret; extern int box64_dynarec_bleeding_edge; +extern int box64_dynarec_jvm; extern int box64_dynarec_hotpage; extern int box64_dynarec_fastpage; extern int box64_dynarec_wait; diff --git a/src/librarian/library.c b/src/librarian/library.c index eb28ecb5..a74dea23 100755 --- a/src/librarian/library.c +++ b/src/librarian/library.c @@ -301,6 +301,11 @@ static int loadEmulatedLib(const char* libname, library_t *lib, box64context_t* box64_dynarec_bigblock = 0; box64_dynarec_strongmem = 1; } + if(libname && box64_dynarec_jvm && strstr(libname, "libjvm.so")) { + printf_log(LOG_INFO, "libjvm detected, disable Dynarec BigBlock and enable Dynarec StrongMem\n"); + box64_dynarec_bigblock = 0; + box64_dynarec_strongmem = 1; + } #endif if(libname && box64_libcef && strstr(libname, "libcef.so")) { printf_log(LOG_INFO, "libcef detected, using malloc_hack_2\n"); diff --git a/src/main.c b/src/main.c index e6d22201..b3983abd 100755 --- a/src/main.c +++ b/src/main.c @@ -61,6 +61,7 @@ int box64_dynarec_callret = 0; int box64_dynarec_hotpage = 0; int box64_dynarec_fastpage = 0; int box64_dynarec_bleeding_edge = 1; +int box64_dynarec_jvm = 1; int box64_dynarec_wait = 1; int box64_dynarec_test = 0; int box64_dynarec_missing = 0; @@ -575,6 +576,15 @@ void LoadLogEnv() if(!box64_dynarec_bleeding_edge) printf_log(LOG_INFO, "Dynarec will not detect MonoBleedingEdge\n"); } + p = getenv("BOX64_DYNAREC_JVM"); + if(p) { + if(strlen(p)==1) { + if(p[0]>='0' && p[0]<='1') + box64_dynarec_jvm = p[0]-'0'; + } + if(!box64_dynarec_jvm) + printf_log(LOG_INFO, "Dynarec will not detect libjvm\n"); + } p = getenv("BOX64_DYNAREC_WAIT"); if(p) { if(strlen(p)==1) { diff --git a/src/tools/rcfile.c b/src/tools/rcfile.c index e0aae458..7e13f60f 100644 --- a/src/tools/rcfile.c +++ b/src/tools/rcfile.c @@ -126,6 +126,7 @@ ENTRYBOOL(BOX64_DYNAREC_FASTROUND, box64_dynarec_fastround) \ ENTRYINT(BOX64_DYNAREC_SAFEFLAGS, box64_dynarec_safeflags, 0, 2, 2) \ ENTRYBOOL(BOX64_DYNAREC_CALLRET, box64_dynarec_callret) \ ENTRYBOOL(BOX64_DYNAREC_BLEEDING_EDGE, box64_dynarec_bleeding_edge) \ +ENTRYBOOL(BOX64_DYNAREC_JVM, box64_dynarec_jvm) \ ENTRYINT(BOX64_DYNAREC_HOTPAGE, box64_dynarec_hotpage, 0, 255, 8) \ ENTRYBOOL(BOX64_DYNAREC_FASTPAGE, box64_dynarec_fastpage) \ ENTRYBOOL(BOX64_DYNAREC_WAIT, box64_dynarec_wait) \ @@ -147,6 +148,7 @@ IGNORE(BOX64_DYNAREC_FASTROUND) \ IGNORE(BOX64_DYNAREC_SAFEFLAGS) \ IGNORE(BOX64_DYNAREC_CALLRET) \ IGNORE(BOX64_DYNAREC_BLEEDING_EDGE) \ +IGNORE(BOX64_DYNAREC_JVM) \ IGNORE(BOX64_DYNAREC_HOTPAGE) \ IGNORE(BOX64_DYNAREC_FASTPAGE) \ IGNORE(BOX64_DYNAREC_WAIT) \ |