これらは, Template Interpreter 用のクラス (#ifndef CC_INTERP 時にしか定義されない).
より具体的に言うと, 実際の Template Interpreter として働く Interpreter クラス. (See: here for details)
((cite: hotspot/src/share/vm/interpreter/templateInterpreter.hpp))
// This file contains the platform-independent parts
// of the template interpreter and the template interpreter generator.
#ifndef CC_INTERP
Template Interpreter 用のクラス (#ifndef CC_INTERP 時にしか定義されない).
Template Interpreter において Interpreter の初期化や生成されたコードの管理を行うためのクラス (= Template Interpreter 用の Interpreter クラス). (See: here for details)
((cite: hotspot/src/share/vm/interpreter/templateInterpreter.hpp))
class TemplateInterpreter: public AbstractInterpreter {
See: here for details
TemplateInterpreter クラス内で使用される補助クラス.
TemplateInterpreter 用のコードレットのエントリポイントの管理を担当する (Template Interpreter のコードレットは TOS に応じたエントリーポイントを持つ. これら number_of_states 個のエントリーポイントを管理するためのクラス).
((cite: hotspot/src/share/vm/interpreter/templateInterpreter.hpp))
//------------------------------------------------------------------------------------------------------------------------
// A little wrapper class to group tosca-specific entry points into a unit.
// (tosca = Top-Of-Stack CAche)
class EntryPoint VALUE_OBJ_CLASS_SPEC {
内部的には本当に number_of_states 個分の address 配列を持っているだけ.
((cite: hotspot/src/share/vm/interpreter/templateInterpreter.hpp))
address _entry[number_of_states];
See: here for details
TemplateInterpreter クラス内で使用される補助クラス.
Template Interpreter の dispatch table を管理するためのクラス.
(なお dispatch table とはメモリアドレスの二次元配列. 各バイトコードと TosState を index とし, コードレットのエントリポイントを格納している. 各バイトコードを各 TOS 状態で実行する際にどこにジャンプすればいいか, という情報を表す)
((cite: hotspot/src/share/vm/interpreter/templateInterpreter.hpp))
//------------------------------------------------------------------------------------------------------------------------
// A little wrapper class to group tosca-specific dispatch tables into a unit.
class DispatchTable VALUE_OBJ_CLASS_SPEC {
以下の箇所に(のみ)格納されている (See: here for details).
((cite: hotspot/src/share/vm/interpreter/templateInterpreter.hpp))
static DispatchTable _active_table; // the active dispatch table (used by the interpreter for dispatch)
static DispatchTable _normal_table; // the normal dispatch table (used to set the active table in normal mode)
static DispatchTable _safept_table; // the safepoint dispatch table (used to set the active table for safepoints)
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.