Top


定義場所(file name)

hotspot/src/os/windows/vm/os_windows.inline.hpp

説明(description)

// Bang the shadow pages if they need to be touched to be mapped.

名前(function name)

inline void os::bang_stack_shadow_pages() {

本体部(body)

  {- -------------------------------------------
  (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.