これらは, C2 JIT Compiler 内の処理フェーズを表すクラス. より具体的に言うと, 高レベル中間語(Ideal)の生成処理を表すクラス.
Phase クラスの具象サブクラスの1つ.
バイトコードから高レベル中間語(Ideal)への変換を行う.
((cite: hotspot/src/share/vm/opto/parse.hpp))
//-----------------------------------------------------------------------------
//------------------------------Parse------------------------------------------
// Parse bytecodes, build a Graph
class Parse : public GraphKit {
ParseGenerator::generate() 内で(のみ)使用されている.
See: here for details
Parse クラス及び Compile クラス用の補助クラス(ResourceObjクラス).
メソッドのインライン展開処理用の補助クラス. 1つの InlineTree オブジェクトが 1つのメソッドに対応する.
((cite: hotspot/src/share/vm/opto/parse.hpp))
//------------------------------InlineTree-------------------------------------
class InlineTree : public ResourceObj {
InlineTree::ok_to_inline() でインライン展開すべきかどうかを判定できる (?? #TODO).
以下の箇所に(のみ)格納されている.
各 Compile オブジェクトの _ilt フィールド
各 InlineTree オブジェクトの _subtrees フィールド
以下の箇所で(のみ)生成されている.
そして, これらの関数は現在は以下のパスで(のみ)呼び出されている.
Compile::Compile() -> InlineTree::build_inline_tree_root() Parse::Parse() -> Parse::do_all_blocks() -> Parse::do_one_block() -> Parse::do_call() -> Compile::call_generator() -> CallGenerator::for_method_handle_inline() -> Compile::call_generator() -> InlineTree::ok_to_inline() -> InlineTree::build_inline_tree_for_callee() -> InlineTree::find_subtree_from_root() -> InlineTree::build_inline_tree_for_callee() Parse::Parse() -> InlineTree::find_subtree_from_root() (ただし #ifndef PRODUCT 時にのみ呼び出す) -> (同上) Parse::show_parse_info() (ただし, これは #ifndef PRODUCT 時にのみ定義される関数) -> InlineTree::find_subtree_from_root() -> (同上)
See: here for details
Parse クラス内で使用される補助クラス.
メソッド内の各基本ブロックの情報を管理するクラス. 1つの Parse::Block オブジェクトが 1つの基本ブロックに対応する.
((cite: hotspot/src/share/vm/opto/parse.hpp))
// Per-block information needed by the parser:
class Block {
各 Parse オブジェクトの _blocks フィールドに(のみ)格納されている.
(正確には, このフィールドは Parse::Block の配列を格納するフィールド. この中に, その Parse 内で使用される全ての Parse::Block オブジェクトが格納されている)
配列用のメモリ領域は Parse::init_blocks() 内で(のみ)確保されている.
See: here for details
デバッグ用(開発時用)のクラス (#ifndef PRODUCT 時にしか定義されない).
Parse クラス内で使用される補助クラス. パース処理に関する統計情報を記録するためのクラス.
((cite: hotspot/src/share/vm/opto/parse.hpp))
#ifndef PRODUCT
// BytecodeParseHistogram collects number of bytecodes parsed, nodes constructed, and transformations.
class BytecodeParseHistogram : public ResourceObj {
各 Parse オブジェクトの _parse_histogram フィールドに(のみ)格納されている.
Parse::Parse() 内で(のみ)生成されている.
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.