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
|