< prev index next >
src/hotspot/share/opto/valuetypenode.hpp
Print this page
*** 30,42 ****
class GraphKit;
class ValueTypeBaseNode : public TypeNode {
protected:
! ValueTypeBaseNode(const Type* t, int nb_fields)
: TypeNode(t, nb_fields) {
init_class_id(Class_ValueTypeBase);
}
enum { Control, // Control input
Oop, // Oop of TypeValueTypePtr
Values // Nodes corresponding to values of the value type's fields.
--- 30,43 ----
class GraphKit;
class ValueTypeBaseNode : public TypeNode {
protected:
! ValueTypeBaseNode(const Type* t, int nb_fields, Compile* C)
: TypeNode(t, nb_fields) {
init_class_id(Class_ValueTypeBase);
+ C->add_value_type(this);
}
enum { Control, // Control input
Oop, // Oop of TypeValueTypePtr
Values // Nodes corresponding to values of the value type's fields.
*** 91,102 ****
//------------------------------ValueTypeNode-------------------------------------
// Node representing a value type in C2 IR
class ValueTypeNode : public ValueTypeBaseNode {
friend class ValueTypeBaseNode;
private:
! ValueTypeNode(const TypeValueType* t, Node* oop)
! : ValueTypeBaseNode(t, Values + t->value_klass()->nof_declared_nonstatic_fields()) {
init_class_id(Class_ValueType);
init_req(Oop, oop);
}
// Checks if the value type is loaded from memory and if so returns the oop
--- 92,103 ----
//------------------------------ValueTypeNode-------------------------------------
// Node representing a value type in C2 IR
class ValueTypeNode : public ValueTypeBaseNode {
friend class ValueTypeBaseNode;
private:
! ValueTypeNode(const TypeValueType* t, Node* oop, Compile* C)
! : ValueTypeBaseNode(t, Values + t->value_klass()->nof_declared_nonstatic_fields(), C) {
init_class_id(Class_ValueType);
init_req(Oop, oop);
}
// Checks if the value type is loaded from memory and if so returns the oop
*** 144,168 ****
private:
ciValueKlass* value_klass() const { return type()->is_valuetypeptr()->value_type()->value_klass(); }
const TypeValueTypePtr* value_type_ptr() const { return bottom_type()->isa_valuetypeptr(); }
ValueTypePtrNode(ciValueKlass* vk, Node* oop, Compile* C)
! : ValueTypeBaseNode(TypeValueTypePtr::make(TypePtr::NotNull, vk), Values + vk->nof_declared_nonstatic_fields()) {
init_class_id(Class_ValueTypePtr);
init_req(Oop, oop);
- C->add_value_type_ptr(this);
}
public:
ValueTypePtrNode(ValueTypeNode* vt, Node* oop, Compile* C)
! : ValueTypeBaseNode(TypeValueTypePtr::make(vt->type()->is_valuetype())->cast_to_ptr_type(TypePtr::NotNull), vt->req()) {
init_class_id(Class_ValueTypePtr);
for (uint i = Oop+1; i < vt->req(); i++) {
init_req(i, vt->in(i));
}
init_req(Oop, oop);
- C->add_value_type_ptr(this);
}
static ValueTypePtrNode* make(GraphKit* kit, ciValueKlass* vk, CallNode* call);
static ValueTypePtrNode* make(PhaseGVN& gvn, Node*& ctl, Node* mem, Node* oop);
virtual int Opcode() const;
--- 145,167 ----
private:
ciValueKlass* value_klass() const { return type()->is_valuetypeptr()->value_type()->value_klass(); }
const TypeValueTypePtr* value_type_ptr() const { return bottom_type()->isa_valuetypeptr(); }
ValueTypePtrNode(ciValueKlass* vk, Node* oop, Compile* C)
! : ValueTypeBaseNode(TypeValueTypePtr::make(TypePtr::NotNull, vk), Values + vk->nof_declared_nonstatic_fields(), C) {
init_class_id(Class_ValueTypePtr);
init_req(Oop, oop);
}
public:
ValueTypePtrNode(ValueTypeNode* vt, Node* oop, Compile* C)
! : ValueTypeBaseNode(TypeValueTypePtr::make(vt->type()->is_valuetype())->cast_to_ptr_type(TypePtr::NotNull), vt->req(), C) {
init_class_id(Class_ValueTypePtr);
for (uint i = Oop+1; i < vt->req(); i++) {
init_req(i, vt->in(i));
}
init_req(Oop, oop);
}
static ValueTypePtrNode* make(GraphKit* kit, ciValueKlass* vk, CallNode* call);
static ValueTypePtrNode* make(PhaseGVN& gvn, Node*& ctl, Node* mem, Node* oop);
virtual int Opcode() const;
< prev index next >