RFR: 8326615: C1/C2 don't handle allocation failure properly during initialization (RuntimeStub::new_runtime_stub fatal crash) [v5]

Damon Fenacci dfenacci at openjdk.org
Tue Jul 2 07:00:20 UTC 2024


On Tue, 11 Jun 2024 17:27:56 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:

> I suggest instead adjust CodeCache minimal size check when JIT compilers are enabled in `CompilerConfig::check_args_consistency()`. We check `CodeCacheMinimumUseSpace` value their which is 400Kb only. It could be enough to run with `-Xint` (Interpreter only). But it is definitely not enough to run with JIT compilers.

@vnkozlov thanks for your insights!
I've tried to figure out an estimate of a bare minimum code cache size for interpreter/C1/C2/both for a couple of architectures (basically by running `java -version`):
|                | Int  | C1 only | C2 only | C1/C2 tiered |
|----------------|------|---------|---------|--------------|
| linux-x64      | 680k | 4m      | 900k    | 2.2m         |
| macosx-aarch64 | 580k | 3m      | 800k    | 1.5m         |
| linux-aarch64  | 520k | 3.8m    | 800k    | 1.5m         |

(interesting that C2 needs less code cache than C1 but I guess it could also be due to the fact that its thread might actually exit before it properly starts)

800k for the interpreter alone and 5 times as much (4m) when C1 or C2 are running might be good minima. What do you think?

-------------

PR Comment: https://git.openjdk.org/jdk/pull/19280#issuecomment-2202101118


More information about the hotspot-compiler-dev mailing list