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

Reply via email to