< prev index next >
src/hotspot/share/opto/valuetypenode.hpp
Print this page
*** 37,52 ****
init_class_id(Class_ValueTypeBase);
Compile::current()->add_value_type(this);
}
enum { Control, // Control input
! Oop, // Oop of TypeValueTypePtr
Values // Nodes corresponding to values of the value type's fields.
// Nodes are connected in increasing order of the index of the field they correspond to.
};
! virtual const TypeValueTypePtr* value_type_ptr() const = 0;
// Get the klass defining the field layout of the value type
virtual ciValueKlass* value_klass() const = 0;
int make_scalar_in_safepoint(Unique_Node_List& worklist, SafePointNode* sfpt, Node* root, PhaseGVN* gvn);
--- 37,52 ----
init_class_id(Class_ValueTypeBase);
Compile::current()->add_value_type(this);
}
enum { Control, // Control input
! Oop, // Oop of TypeInstPtr
Values // Nodes corresponding to values of the value type's fields.
// Nodes are connected in increasing order of the index of the field they correspond to.
};
! virtual const TypeInstPtr* value_ptr() const = 0;
// Get the klass defining the field layout of the value type
virtual ciValueKlass* value_klass() const = 0;
int make_scalar_in_safepoint(Unique_Node_List& worklist, SafePointNode* sfpt, Node* root, PhaseGVN* gvn);
*** 108,118 ****
Node* is_loaded(PhaseGVN* phase, ciValueKlass* vk = NULL, Node* base = NULL, int holder_offset = 0);
// Checks if the value type fields are all set to default values
bool is_default(PhaseGVN& gvn) const;
! const TypeValueTypePtr* value_type_ptr() const { return TypeValueTypePtr::make(TypePtr::BotPTR, value_klass()); }
ciValueKlass* value_klass() const { return type()->is_valuetype()->value_klass(); }
public:
// Create uninitialized
static ValueTypeNode* make_uninitialized(PhaseGVN& gvn, ciValueKlass* klass);
--- 108,118 ----
Node* is_loaded(PhaseGVN* phase, ciValueKlass* vk = NULL, Node* base = NULL, int holder_offset = 0);
// Checks if the value type fields are all set to default values
bool is_default(PhaseGVN& gvn) const;
! const TypeInstPtr* value_ptr() const { return TypeInstPtr::make(TypePtr::BotPTR, value_klass()); }
ciValueKlass* value_klass() const { return type()->is_valuetype()->value_klass(); }
public:
// Create uninitialized
static ValueTypeNode* make_uninitialized(PhaseGVN& gvn, ciValueKlass* klass);
*** 146,160 ****
//------------------------------ValueTypePtrNode-------------------------------------
// Node representing a value type as a pointer in C2 IR
class ValueTypePtrNode : public ValueTypeBaseNode {
private:
! const TypeValueTypePtr* value_type_ptr() const { return type()->isa_valuetypeptr(); }
! ciValueKlass* value_klass() const { return value_type_ptr()->value_klass(); }
ValueTypePtrNode(ciValueKlass* vk, Node* oop)
! : ValueTypeBaseNode(TypeValueTypePtr::make(TypePtr::NotNull, vk), Values + vk->nof_declared_nonstatic_fields()) {
init_class_id(Class_ValueTypePtr);
init_req(Oop, oop);
}
public:
--- 146,160 ----
//------------------------------ValueTypePtrNode-------------------------------------
// Node representing a value type as a pointer in C2 IR
class ValueTypePtrNode : public ValueTypeBaseNode {
private:
! const TypeInstPtr* value_ptr() const { return type()->isa_instptr(); }
! ciValueKlass* value_klass() const { return value_ptr()->value_klass(); }
ValueTypePtrNode(ciValueKlass* vk, Node* oop)
! : ValueTypeBaseNode(TypeInstPtr::make(TypePtr::NotNull, vk), Values + vk->nof_declared_nonstatic_fields()) {
init_class_id(Class_ValueTypePtr);
init_req(Oop, oop);
}
public:
< prev index next >