On Fri, 10 Mar 2023 14:14:55 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 > > Jorn Vernee has updated the pull request incrementally with one additional > commit since the last revision: > > RISCV changes Thanks for the reviews. I'm running one more round of tests before integrating. ------------- PR: https://git.openjdk.org/jdk/pull/12908