これらは, JIT コンパイラが生成したコードについて, ソースコードレベルでのデバッグに必要な情報を覚えておくためのクラス.
なお, SimpleScopeDesc は ScopeDesc の簡易版.
nmethod オブジェクトについて, ソースコードレベルでのデバッグに必要な情報を記録したクラス.
("method activation" と書かれているので, 1つの ScopeDesc がソースコードレベルでの 1つの関数フレームに対応する模様?? #TODO)
((cite: hotspot/src/share/vm/code/scopeDesc.hpp))
// ScopeDescs contain the information that makes source-level debugging of
// nmethods possible; each scopeDesc describes a method activation
class ScopeDesc : public ResourceObj {
コンストラクタ引数で nmethod とその中の pc(というか命令のアドレス) を指定する. 生成した ScopeDesc オブジェクトからは, 以下のような情報が取り出せる.
See: here for details
ScopeDesc の簡易版.
欲しい情報が methodOop と bci だけであれば高速なこちらのクラスも利用可能, とのこと.
((cite: hotspot/src/share/vm/code/scopeDesc.hpp))
// SimpleScopeDesc is used when all you need to extract from
// a given pc,nmethod pair is a methodOop and a bci. This is
// quite a bit faster than allocating a full ScopeDesc, but
// very limited in abilities.
class SimpleScopeDesc : public StackObj {
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.