On Tue, 7 Mar 2023 18:02:41 GMT, Jorn Vernee <jver...@openjdk.org> wrote:
> The issue is that the size of the code buffer is not large enough to hold the > whole stub. > > Proposed solution is to scale the size of the stub with the number of > arguments. I've adjusted sizes for both downcall and upcall stubs. I've also > dropped the number of relocations, since we're not really using any for > downcalls, and for upcalls we only have 1 AFAICS. (the size of the > relocations can not be zero however, as that leads to the relocation section > [not being initialized][1], and triggering [an assert][2] later when the code > blob is copied). > > The way I've determined the new base size and per-argument size for stubs, is > by first linking a stub without any arguments to get the required base size, > and by then adding 20 `double` arguments to get a rough per-argument size. > Both values have wiggle room as well. The sizes can be printed using e.g. > `-XX:+LogCompilation`, and then looking for `nep_invoker_blob` and > `upcall_stub*` in the log file. This experiment was done on a fastdebug build > to account for additional debug code being generated. The included test is > designed to try and maximize the size of the generated stub. > > I've also updated `CodeBuffer::log_section_sizes` to print the in-use size, > rather than just the capacity and free space. > > [1]: > https://github.com/openjdk/jdk/blob/56512cfe1f0682c98ba3488af3d03ccef632c016/src/hotspot/share/asm/codeBuffer.cpp#L119-L121 > [2]: > https://github.com/openjdk/jdk/blob/56512cfe1f0682c98ba3488af3d03ccef632c016/src/hotspot/share/asm/codeBuffer.cpp#L675 This pull request has now been integrated. Changeset: 2b81faeb Author: Jorn Vernee <jver...@openjdk.org> URL: https://git.openjdk.org/jdk/commit/2b81faeb3514060e6c8c950ef4e39e299c43199d Stats: 102 lines in 8 files changed: 81 ins; 0 del; 21 mod 8303022: "assert(allocates2(pc)) failed: not in CodeBuffer memory" When linking downcall handle Reviewed-by: kvn, vlivanov ------------- PR: https://git.openjdk.org/jdk/pull/12908