< prev index next >
src/share/vm/opto/valuetypenode.hpp
Print this page
*** 47,57 ****
}
// Get the klass defining the field layout of the value type
ciValueKlass* value_klass() const { return type()->is_valuetype()->value_klass(); }
// Initialize the value type by loading its field values from memory
! void load_values(PhaseGVN& gvn, Node* mem, Node* base, Node* ptr, ciKlass* holder = NULL, int f_offset = 0);
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
--- 47,57 ----
}
// Get the klass defining the field layout of the value type
ciValueKlass* value_klass() const { return type()->is_valuetype()->value_klass(); }
// Initialize the value type by loading its field values from memory
! void load_values(PhaseGVN& gvn, Node* mem, Node* base, Node* ptr, ciInstanceKlass* holder, int holder_offset = 0);
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
*** 64,86 ****
// Create a new ValueTypeNode with default values
static Node* make_default(PhaseGVN& gvn, ciValueKlass* vk);
// Create a new ValueTypeNode and load its values from an oop
static Node* make(PhaseGVN& gvn, Node* mem, Node* oop);
// Create a new ValueTypeNode and load its values from a flattened value type field or array
! static Node* make(PhaseGVN& gvn, ciValueKlass* vk, Node* mem, Node* obj, Node* ptr, ciKlass* holder, int field_offset = 0);
// Support for control flow merges
ValueTypeNode* clone_with_phis(PhaseGVN& gvn, Node* region);
bool has_phi_inputs(Node* region);
Node* merge_with(GraphKit* kit, const ValueTypeNode* other, int pnum);
// Store the value type to memory if not yet allocated and returns the oop
Node* store_to_memory(GraphKit* kit);
! // Store the value type in a field of an object
! void store_to_field(GraphKit* kit, Node* obj, Node* ptr, ciInstanceKlass* instance_type, int field_offset) const;
// Store the field values to memory
! void store_values(GraphKit* kit, Node* base, Node* ptr, ciKlass* holder = NULL, int holder_offset = 0) const;
// Get oop for heap allocated value type (may be TypePtr::NULL_PTR)
Node* get_oop() const { return in(Oop); }
void set_oop(Node* oop) { set_req(Oop, oop); }
--- 64,86 ----
// Create a new ValueTypeNode with default values
static Node* make_default(PhaseGVN& gvn, ciValueKlass* vk);
// Create a new ValueTypeNode and load its values from an oop
static Node* make(PhaseGVN& gvn, Node* mem, Node* oop);
// Create a new ValueTypeNode and load its values from a flattened value type field or array
! static Node* make(PhaseGVN& gvn, ciValueKlass* vk, Node* mem, Node* obj, Node* ptr, ciInstanceKlass* holder = NULL, int holder_offset = 0);
// Support for control flow merges
ValueTypeNode* clone_with_phis(PhaseGVN& gvn, Node* region);
bool has_phi_inputs(Node* region);
Node* merge_with(GraphKit* kit, const ValueTypeNode* other, int pnum);
// Store the value type to memory if not yet allocated and returns the oop
Node* store_to_memory(GraphKit* kit);
! // Store the value type to a flattened value type field or array
! void store(GraphKit* kit, Node* obj, Node* ptr, ciInstanceKlass* holder = NULL, int holder_offset = 0) const;
// Store the field values to memory
! void store_values(GraphKit* kit, Node* base, Node* ptr, ciInstanceKlass* holder, int holder_offset = 0) const;
// Get oop for heap allocated value type (may be TypePtr::NULL_PTR)
Node* get_oop() const { return in(Oop); }
void set_oop(Node* oop) { set_req(Oop, oop); }
< prev index next >