これらは, methodDataOopDesc 用の ciObject クラス.
なお ciProfileData という型も使われるが, これは ProfileData の別名.
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
typedef ProfileData ciProfileData;
ciMethodData クラス用の補助クラス.
ciMethodData クラスから BitData オブジェクト内のプロファイル情報を扱うためのラッパークラス. 1つの ciBitData オブジェクトが 1つの BitData オブジェクトに対応する.
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
class ciBitData : public BitData {
以下の箇所で(のみ)生成されている.
何も定義されていない (なので中身はスーパークラスである BitData と全く同じ).
See: here for details
ciMethodData クラス用の補助クラス.
ciMethodData クラスから CounterData オブジェクト内のプロファイル情報を扱うためのラッパークラス. 1つの ciCounterData オブジェクトが 1つの CounterData オブジェクトに対応する.
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
class ciCounterData : public CounterData {
ciMethodData::data_at() 内で(のみ)生成されている.
何も定義されていない (なので中身はスーパークラスである CounterData と全く同じ).
See: here for details
ciMethodData クラス用の補助クラス.
ciMethodData クラスから JumpData オブジェクト内のプロファイル情報を扱うためのラッパークラス. 1つの ciJumpData オブジェクトが 1つの JumpData オブジェクトに対応する.
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
class ciJumpData : public JumpData {
ciMethodData::data_at() 内で(のみ)生成されている.
何も定義されていない (なので中身はスーパークラスである JumpData と全く同じ).
See: here for details
ciMethodData クラス用の補助クラス.
ciMethodData クラスから ReceiverTypeData オブジェクト内のプロファイル情報を扱うためのラッパークラス. 1つの ciReceiverTypeData オブジェクトが 1つの ReceiverTypeData オブジェクトに対応する.
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
class ciReceiverTypeData : public ReceiverTypeData {
ciMethodData::data_at() 内で(のみ)生成されている.
このクラスは内部にポインタ情報を含むため, ProfileData::translate_from() をオーバーライドしている (See: ciReceiverTypeData::translate_from()).
使用時には, ciReceiverTypeData::receiver() で型情報を (ciKlass オブジェクトとして) 取得できる. また, ciReceiverTypeData::set_receiver() で型情報を変更することもできる.
See: here for details
ciMethodData クラス用の補助クラス.
ciMethodData クラスから VirtualCallData オブジェクト内のプロファイル情報を扱うためのラッパークラス. 1つの ciVirtualCallData オブジェクトが 1つの VirtualCallData オブジェクトに対応する.
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
class ciVirtualCallData : public VirtualCallData {
ciMethodData::data_at() 内で(のみ)生成されている.
実際の処理は ciReceiverTypeData に丸投げしている
(スーパークラスである VirtualCallData と同様, 現状では ciReceiverTypeData クラスと全く同じ. ただし, VirtualCallData と違って ciReceiverTypeData がスーパークラスではないので, 無理矢理 ciReceiverTypeData にキャストして呼び出している).
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
// Fake multiple inheritance... It's a ciReceiverTypeData also.
ciReceiverTypeData* rtd_super() { return (ciReceiverTypeData*) this; }
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
void set_receiver(uint row, ciKlass* recv) {
rtd_super()->set_receiver(row, recv);
}
ciKlass* receiver(uint row) {
return rtd_super()->receiver(row);
}
// Copy & translate from oop based VirtualCallData
virtual void translate_from(ProfileData* data) {
rtd_super()->translate_receiver_data_from(data);
}
See: here for details
ciMethodData クラス用の補助クラス.
ciMethodData クラスから RetData オブジェクト内のプロファイル情報を扱うためのラッパークラス. 1つの ciRetData オブジェクトが 1つの RetData オブジェクトに対応する.
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
class ciRetData : public RetData {
ciMethodData::data_at() 内で(のみ)生成されている.
何も定義されていない (なので中身はスーパークラスである RetData と全く同じ).
See: here for details
ciMethodData クラス用の補助クラス.
ciMethodData クラスから BranchData オブジェクト内のプロファイル情報を扱うためのラッパークラス. 1つの ciBranchData オブジェクトが 1つの BranchData オブジェクトに対応する.
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
class ciBranchData : public BranchData {
ciMethodData::data_at() 内で(のみ)生成されている.
何も定義されていない (なので中身はスーパークラスである BranchData と全く同じ).
See: here for details
?? (このクラスは使用箇所が見当たらない...)
ciMethodData クラスから ArrayData オブジェクト内のプロファイル情報を扱うためのラッパークラスだと思われるが, ArrayData クラス自体が abstract class なので, このクラスは使用されない (ArrayData 自体にはサブクラスがいるがこのクラスにはサブクラスはない. ArrayData のサブクラスに対応する ci* クラスは, このクラスからではなく対応する ArrayData のサブクラス自身から派生している.)
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
class ciArrayData : public ArrayData {
何も定義されていない (なので中身はスーパークラスである ArrayData と全く同じ).
See: here for details
ciMethodData クラス用の補助クラス.
ciMethodData クラスから MultiBranchData オブジェクト内のプロファイル情報を扱うためのラッパークラス. 1つの ciMultiBranchData オブジェクトが 1つの MultiBranchData オブジェクトに対応する.
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
class ciMultiBranchData : public MultiBranchData {
ciMethodData::data_at() 内で(のみ)生成されている.
何も定義されていない (なので中身はスーパークラスである MultiBranchData と全く同じ).
See: here for details
ciMethodData クラス用の補助クラス.
ciMethodData クラスから ArgInfoData オブジェクト内のプロファイル情報を扱うためのラッパークラス. 1つの ciArgInfoData オブジェクトが 1つの ArgInfoData オブジェクトに対応する.
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
class ciArgInfoData : public ArgInfoData {
以下の箇所で(のみ)生成されている.
何も定義されていない (なので中身はスーパークラスである ArgInfoData と全く同じ).
See: here for details
ciObject クラスの具象サブクラスの1つ. methodDataOopDesc 用の ciObject クラス.
((cite: hotspot/src/share/vm/ci/ciMethodData.hpp))
// ciMethodData
//
// This class represents a methodDataOop in the HotSpot virtual
// machine.
class ciMethodData : public ciObject {
以下の箇所に格納されている (#TODO 他の箇所).
unloaded/unfound なメソッドを表す ciMethod オブジェクトが格納されている.
(正確には, このフィールドは ciMethod の GrowableArray を格納するフィールド. この中に, ciObjectFactory::get_unloaded_method() で生成された全ての ciMethod オブジェクトが格納されている)
以下の箇所で(のみ)生成されている.
(ファクトリメソッド)
(こちらは, methodDataOopDesc が存在しないメソッドのために, ダミーの(= 空の) ciMethodData オブジェクトを生成する関数)
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.