AbstractInterpreterGenerator クラスの具象サブクラス. ビルド時の #ifdef によって TemplateInterpreterGenerator か CppInterpreterGenerator のどちらかのサブクラスになる.
実質的な役割としては, 使用する Interpreter 種別を隠蔽するためのラッパークラス.
実際の InterpreterGenerator クラスとしての機能は TemplateInterpreterGenerator クラスもしくは CppInterpreterGenerator クラスに定義されているが, 実際の使用箇所では Interpreter 種別の違いを隠蔽したコードにするため InterpreterGenerator クラスとして使用されている模様 (See: here for details).
((cite: hotspot/src/share/vm/interpreter/interpreterGenerator.hpp))
// This file contains the platform-independent parts
// of the interpreter generator.
class InterpreterGenerator: public CC_INTERP_ONLY(CppInterpreterGenerator)
NOT_CC_INTERP(TemplateInterpreterGenerator) {
以下の箇所で(のみ)使用されている.
InterpreterGenerator の機能はほとんどが cpu 依存なので, share/ 以下に書かれていることはほとんどない (cpu/ 以下のファイルを #include しているだけ).
((cite: hotspot/src/share/vm/interpreter/interpreterGenerator.hpp))
InterpreterGenerator(StubQueue* _code);
#ifdef TARGET_ARCH_x86
# include "interpreterGenerator_x86.hpp"
#endif
#ifdef TARGET_ARCH_sparc
# include "interpreterGenerator_sparc.hpp"
#endif
#ifdef TARGET_ARCH_zero
# include "interpreterGenerator_zero.hpp"
#endif
#ifdef TARGET_ARCH_arm
# include "interpreterGenerator_arm.hpp"
#endif
#ifdef TARGET_ARCH_ppc
# include "interpreterGenerator_ppc.hpp"
#endif
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.