JIT Compiler 内で定数を扱うためのユーティリティ・クラス(ValueObjクラス). 1つの ciConstant オブジェクトが 1つの定数値に対応する.
((cite: hotspot/src/share/vm/ci/ciConstant.hpp))
// ciConstant
//
// This class represents a constant value.
class ciConstant VALUE_OBJ_CLASS_SPEC {
(フィールド内に格納されているインスタンスも存在する)
以下の箇所で(のみ)生成されている (ValueObj クラスなので「生成」というのは少し違和感があるが, 以下の箇所でのみ新しい値を持ったインスタンスが生成されている. 他の使用箇所はコピーコンストラクタ, あるいは既に生成済みの値へのポインタ).
ciEnv::get_constant_by_index_impl()
ciInstance::field_value()
ciField::initialize_from()
(ciField::_constant_value フィールドの初期化用)
定義されているフィールドは以下の通り (定数値の型と値を格納しているだけ).
((cite: hotspot/src/share/vm/ci/ciConstant.hpp))
BasicType _type;
union {
jint _int;
jlong _long;
jint _long_half[2];
jfloat _float;
jdouble _double;
ciObject* _object;
} _value;
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.