hotspot/src/os/windows/vm/os_windows.inline.hpp
// Bang the shadow pages if they need to be touched to be mapped.
inline void os::bang_stack_shadow_pages() {
{- -------------------------------------------
(1) os::current_stack_pointer() で現在のスタックポインタの値を取得し,
そこから StackShadowPages 枚のメモリページに 0 を書き込む.
(これにより, その領域に物理メモリを貼り付けておく)
---------------------------------------- -}
// Write to each page of our new frame to force OS mapping.
// If we decrement stack pointer more than one page
// the OS may not map an intervening page into our space
// and may fault on a memory access to interior of our frame.
address sp = current_stack_pointer();
for (int pages = 1; pages <= StackShadowPages; pages++) {
*((int *)(sp - (pages * vm_page_size()))) = 0;
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.