[DYNAREC] BOX64_DYNAREC_STRONGMEM tuning for libjvm Hi, The weak memory model architectures[1] reproduced less memory barrier related issue after tuning `BOX64_DYNAREC_STRONGMEM` to bigger one: | BOX64_DYNAREC_STRONGMEM | SPECjvm2008[2] derby Reproduced SIGSEGV (run 10 times) smaller is better | | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------- | | 1 | 80% | | 3 | 20% | So is it OK tuning `BOX64_DYNAREC_STRONGMEM` to bigger one for libjvm? ``` diff --git a/src/librarian/library.c b/src/librarian/library.c index bf922d60..c206d365 100644 --- a/src/librarian/library.c +++ b/src/librarian/library.c @@ -371,7 +371,7 @@ static int loadEmulatedLib(const char* libname, library_t *lib, box64context_t* #ifdef DYNAREC printf_dump(LOG_INFO, "libjvm detected, disable Dynarec BigBlock and enable Dynarec StrongMem, hide SSE 4.2\n"); box64_dynarec_bigblock = 0; - box64_dynarec_strongmem = 1; + box64_dynarec_strongmem = 3; #else printf_dump(LOG_INFO, "libjvm detected, hide SSE 4.2\n"); #endif ``` [1] Synchronization Overview and Case Study on Arm Architecture https://community.arm.com/arm-community-blogs/b/infrastructure-solutions-blog/posts/synchronization-overview-and-case-study-on-arm-architecture-563085493 [2] SPECjvm2008 https://www.spec.org/jvm2008/ Thanks, Leslie Zhai