summary refs log tree commit diff stats
path: root/results/scraper/box64/2041
blob: ad9fadc13528ea3efe85c0e70c6532eb101ea225 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[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