hotspot/src/share/vm/runtime/frame.cpp
void frame::gc_prologue() {
{- -------------------------------------------
(1) もしこのフレームがインタープリタのフレームであれば,
フレーム中の bcp (byte code pointer, バイトコードを指すポインタ) を格納している箇所については
methodOop が GC で移動すると不正になってしまうので,
代わりに bci (byte code index, そのバイトコードのメソッド先頭からのオフセット値) に変えておく.
(frame::interpreter_frame_bci() で bcp から bci に変換した値を取得し,
それを frame::interpreter_frame_set_bcx() で元の場所に書き戻している.)
---------------------------------------- -}
if (is_interpreted_frame()) {
// set bcx to bci to become methodOop position independent during GC
interpreter_frame_set_bcx(interpreter_frame_bci());
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.