これらは, C2 JIT Compiler 用の補助クラス. より具体的に言うと, StackWalkCompPolicy クラスの処理で使用される一時オブジェクト (See: here for details).
StackWalkCompPolicy クラス内で使用される補助クラス(の基底クラス).
StackWalkCompPolicy が (処理対象のメソッドを決めるために) スタックフレームを調べる処理で使用される一時オブジェクト(ResourceObjクラス).
1つの RFrame オブジェクトが 1つのスタックフレームに対応する.
なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.
((cite: hotspot/src/share/vm/runtime/rframe.hpp))
// rframes ("recompiler frames") decorate stack frames with some extra information
// needed by the recompiler. The recompiler views the stack (at the time of recompilation)
// as a list of rframes.
class RFrame : public ResourceObj {
See: here for details
RFrame クラスの具象サブクラスの1つ (= StackWalkCompPolicy クラス内で使用される一時オブジェクト(ResourceObjクラス)).
このクラスは JIT コンパイルされたメソッドのスタックフレームを表す.
1つの CompiledRFrame オブジェクトが 1つのスタックフレームに対応する. ただし, インライン展開された場合は実際のスタックフレームが Java レベルのメソッドと1対1対応しないことがある (実際のスタックフレーム 1 に対して Java レベルのメソッド n 個が対応). CompiledRFrame は Java レベルのメソッドと 1対1対応するような論理的なスタックフレームを表す (つまり, 実際のスタックフレームとは1対1対応しないことがある).
((cite: hotspot/src/share/vm/runtime/rframe.hpp))
class CompiledRFrame : public RFrame { // frame containing a compiled method
RFrame::new_RFrame() 内で(のみ)生成されている. そして, この関数は現在は以下のパスで(のみ)呼び出されている.
(ただし, ResourceObjクラスなので一時的なオブジェクト)
(略) (See: here for details) -> StackWalkCompPolicy::method_invocation_event() -> StackWalkCompPolicy::findTopInlinableFrame() -> StackWalkCompPolicy::senderOf() -> RFrame::caller() -> RFrame::new_RFrame()
See: here for details
RFrame クラスの具象サブクラスの1つ (= StackWalkCompPolicy クラス内で使用される一時オブジェクト(ResourceObjクラス)).
このクラスはインタープリタで実行されているメソッドのスタックフレームを表す.
1つの InterpretedRFrame オブジェクトが 1つのスタックフレームに対応する.
((cite: hotspot/src/share/vm/runtime/rframe.hpp))
class InterpretedRFrame : public RFrame { // interpreter frame
以下の箇所で(のみ)生成されている (See: here for details).
(ただし, ResourceObjクラスなので一時的なオブジェクト)
なお, RFrame::new_RFrame() は現在は以下のパスで(のみ)呼び出されている.
(略) (See: here for details) -> StackWalkCompPolicy::method_invocation_event() -> StackWalkCompPolicy::findTopInlinableFrame() -> StackWalkCompPolicy::senderOf() -> RFrame::caller() -> RFrame::new_RFrame()
See: here for details
?? (このクラスは使用箇所が見当たらない...)
((cite: hotspot/src/share/vm/runtime/rframe.hpp))
// treat deoptimized frames as interpreted
class DeoptimizedRFrame : public InterpretedRFrame {
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.