RFR: 8280152: AArch64: Reuse runtime call trampolines in C2
Evgeny Astigeevich
duke at openjdk.org
Thu Jul 7 12:48:51 UTC 2022
On Thu, 7 Jul 2022 04:10:57 GMT, Yi-Fan Tsai <duke at openjdk.org> wrote:
> A trampoline stub could be generated for each runtime call. These trampolines could be duplication if the callees are the same. This change delays the stub generation and generates one stub for a distinct callee.
>
> Benchmark als, chi-square, dec-tree, gauss-mix, log-regression, movie-lens, naive-bayes, page-rank, fj-means, reactors, future-genetic, mnemonics, dotty, scala-kmeans, and finagle-http in Renaissance (0.14.1) are tested. The sum of the used size of CodeHeap 'non-profiled nmethods' and CodeHeap 'profiled nmethods' shows ~4.7% reduction on average.
Changes requested by eastig at github.com (no known OpenJDK username).
src/hotspot/cpu/aarch64/codeBuffer_aarch64.cpp line 29:
> 27: #include "asm/macroAssembler.hpp"
> 28:
> 29: void CodeBuffer::shared_stub_to_runtime_for(address dest, int caller_offset) {
We create shared trampolines. I recommend to use `shared_trampoline_for` instead.
src/hotspot/cpu/aarch64/codeBuffer_aarch64.hpp line 30:
> 28:
> 29: public:
> 30: class SharedStubToRuntimeCallRequest {
Please rename to `SharedTrampolineRequest`.
src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp line 651:
> 649: #endif
> 650: if (!in_scratch_emit_size) {
> 651: if (CodeBuffer::supports_shared_stubs() && entry.rspec().type() == relocInfo::runtime_call_type) {
No need for `CodeBuffer::supports_shared_stubs()` because we know we have an implementation.
Please convert it to `assert`.
-------------
PR: https://git.openjdk.org/jdk/pull/9405
More information about the hotspot-dev
mailing list