Let's do a similar job as in https://github.com/openjdk/valhalla/pull/1509 and see what evolved since [JDK-8350209: Preserve adapters in AOT cache](https://bugs.openjdk.org/browse/JDK-8350209) landed in Valhalla.
For each tick in the list, I give a range that behaves homogeneously, and compare it to a Mainline and/or Valhalla range of https://github.com/openjdk/valhalla/pull/1509 - [4, 24] ~ Mainline [4, 28] ``` # There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (malloc) failed to allocate 3000 bytes. Error detail: `CodeCache: no room for StubRoutines` (continuation stubs) ``` - [25, 28] ~ Mainline [29, 32] | Valhalla [29, 32] `fatal error: Initial size of CodeCache is too small` - [29, 1164] ~ Mainline [33, 1112] | Valhalla [33, 1164] ``` # There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (malloc) failed to allocate 1108928 bytes. Error detail: CodeCache: no room for Interpreter ``` - [1165, 1172] ~ Mainline [1117, 1128] | Valhalla [1165, 1172] `fatal error: Initial size of CodeCache is too small` - [1173, 1176] ~ Valhalla [1225, 1228] (out of order, weird, uh!) SIGSEGV in `CodeSection::emit_int8(unsigned char)` - [1177, 1224] ~ Mainline [1129, 1144] | Valhalla [1173, 1220] `assert(_buffer != nullptr) failed: should be initialized` - [1225, 1228] ~ Mainline [1145, 1148] | Valhalla [1221, 1224] `assert(_no_arg_handler != nullptr && _obj_arg_handler != nullptr && _int_arg_handler != nullptr && _obj_int_arg_handler != nullptr && _obj_obj_arg_handler != nullptr) failed: Initial adapter handlers must be properly created` - [1229, ~1250] ~ Mainline [1149, ~1700] Often works, sometimes ``` java.lang.OutOfMemoryError: Out of space in CodeCache for adapters ``` - [~1250, 1276] Mostly works - [1277, 1432] ``` java.lang.OutOfMemoryError: Out of space in CodeCache for adapters ``` - [1433, 1438] ~ Valhalla [1301, 1308] ``` java.lang.InternalError: java.lang.NoSuchMethodException: no such method: java.lang.invoke.MethodHandle.linkToStatic(Object,Object,MemberName)Object/invokeStatic Caused by: java.lang.NoSuchMethodException: no such method: java.lang.invoke.MethodHandle.linkToStatic(Object,Object,MemberName)Object/invokeStatic ``` - [1439, ~1600] works but ``` CodeCache is full. Compiler has been disabled. ``` - Above 1600, compiler shutdown starts to be rare, but again around 2800k Like it was for Valhalla before above 1994k, and we saw it around 3700k. It used to be: > [1994, ...] mostly works, but sometimes the same error as above, witnessed until 3780k (and especially between 3640 and 3780). Interestingly, at 3700k, we also see some fine runs, with, or without compiler shutdown. Starting 3800k, I never saw a failure, and starting 3900k, no compiler shutdown. Overall, the behavior for small amount of memory is similar as in previous Valhalla and mainline. The behavior for larger amounts got much better, more similar to mainline where it mostly works from 1149k, and up, except in some pathological islands. So, it looks good to reduce the `2000` in `compiler/startup/StartupOutput.java` (was increased from `800`). So, I just tried... If locally, I could indeed make it run with quite smaller amount of memory, some more testing shows that `1300` is a better bound: it crashes significantly starting under `1200` but seems to pass all tests with `1300`. That is still an increase from `800`, but less radical than `2000`. Thanks, Marc ------------- Commit messages: - 1300 - 800 Changes: https://git.openjdk.org/valhalla/pull/1749/files Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=1749&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8364107 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/valhalla/pull/1749.diff Fetch: git fetch https://git.openjdk.org/valhalla.git pull/1749/head:pull/1749 PR: https://git.openjdk.org/valhalla/pull/1749
