StackValueCollection クラス用の補助クラス.
スタックフレーム上の値を参照する処理で使用される一時オブジェクト(ResourceObjクラス). スタックフレーム上にある値を表す.
1つの StackValue オブジェクトは以下のどれかに対応する.
((cite: hotspot/src/share/vm/runtime/stackValue.hpp))
class StackValue : public ResourceObj {
各 StackValueCollection オブジェクトの _values フィールドに(のみ)格納されている.
(正確には, このフィールドは StackValue の GrowableArray を格納するフィールド. この中に, その StackValueCollection 用の全ての StackValue オブジェクトが格納されている)
以下の箇所で(のみ)生成されている (ただし, ResourceObjクラスなので一時的なオブジェクト).
そして, これらの関数は現在は以下のパスで(のみ)呼び出されている.
* 脱最適化処理 (Deoptimization 処理) Deoptimization::fetch_unroll_info_helper() -> Deoptimization::reassign_fields() -> instanceKlass::do_nonstatic_fields() -> FieldReassigner::do_field() -> StackValue::create_stack_value() -> Deoptimization::reassign_type_array_elements() -> StackValue::create_stack_value() -> Deoptimization::reassign_object_array_elements() -> StackValue::create_stack_value() -> Deoptimization::create_vframeArray() -> vframeArray::allocate() -> vframeArray::fill_in() -> vframeArrayElement::fill_in() * interpretedVFrame/compiledVFrame 関係の処理 (#TODO) interpretedVFrame::locals() interpretedVFrame::expressions() compiledVFrame::locals() -> compiledVFrame::create_stack_value() -> StackValue::create_stack_value() compiledVFrame::expressions() -> compiledVFrame::create_stack_value() -> StackValue::create_stack_value() compiledVFrame::monitors() -> compiledVFrame::create_stack_value() -> StackValue::create_stack_value()
なお, StackValueCollection::_values フィールドの GrowableArray 自体は StackValueCollection::StackValueCollection() 内で(のみ)確保されている.
定義されているフィールドは以下の通り.
((cite: hotspot/src/share/vm/runtime/stackValue.hpp))
BasicType _type;
intptr_t _i; // Blank java stack slot value
Handle _o; // Java stack slot value interpreted as a Handle
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.