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

Reply via email to