hotspot/src/share/vm/runtime/virtualspace.cpp
ReservedHeapSpace::ReservedHeapSpace(size_t size, size_t alignment,
bool large, char* requested_address) :
{- -------------------------------------------
(1) スーパークラスの初期化
---------------------------------------- -}
ReservedSpace(size, alignment, large,
requested_address,
(UseCompressedOops && (Universe::narrow_oop_base() != NULL) &&
Universe::narrow_oop_use_implicit_null_checks()) ?
lcm(os::vm_page_size(), alignment) : 0) {
{- -------------------------------------------
(1) protect_noaccess_prefix() を呼び出す.
(protect_noaccess_prefix() 内の処理により,
もし Compressed Oop オプションが有効で (UseCompressedOops),
かつヒープの開始アドレスが 0 でなく (= Universe::narrow_oop_base() != NULL) ,
さらに null check を暗黙的に行うことになっていれば (= Universe::narrow_oop_use_implicit_null_checks() が true),
確保したヒープの先頭ページがアクセス禁止にされる.
これにより Null Pointer アクセスがシグナルハンドラで検出できるようになる.
See: protect_noaccess_prefix())
---------------------------------------- -}
// Only reserved space for the java heap should have a noaccess_prefix
// if using compressed oops.
protect_noaccess_prefix(size);
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.