RFR: 8265756: AArch64: initialize memory allocated for locals according to Windows AArch64 stack page growth requirement in template interpreter

Andrew Haley aph at openjdk.java.net
Fri Apr 23 08:53:33 UTC 2021


On Thu, 22 Apr 2021 15:55:40 GMT, Aleksei Voitylov <avoitylov at openjdk.org> wrote:

> Hi,
> 
> please review this PR which fixes several JCK test failures on Windows AArch64. On Windows AArch64, the order in which the pages are touched during stack allocation, matters. Here is a quote: "Functions that allocate 4k or more worth of stack must ensure that each page prior to the final page is touched in order" [1]. Since on Linux and Mac the order does not matter, the suggested fix reverses the order in which memory pages are touched during stack allocation for locals in template interpreter for all platforms.
> 
> Testing: JCK, jtreg, newly developed regression test on Linux AArch64, Windows AArch64, Mac AArch64, Pre-submit tests (which includes the newly developed test).
> 
> [1] https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-160#stack

test/hotspot/jtreg/runtime/LocalVariableTable/TestLongLVTHelper.jasm line 31:

> 29: 
> 30: public static Method tst:"()I"
> 31:     stack 3 locals 30000

Looks good. You might as well make locals = 65535 for a better stress test.

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

PR: https://git.openjdk.java.net/jdk/pull/3633


More information about the hotspot-dev mailing list