77 Node* store_to_memory(GraphKit* kit);
78 // Store the value type to a flattened value type field or array
79 void store(GraphKit* kit, Node* obj, Node* ptr, ciInstanceKlass* holder = NULL, int holder_offset = 0) const;
80 // Store the field values to memory
81 void store_values(GraphKit* kit, Node* base, Node* ptr, ciInstanceKlass* holder, int holder_offset = 0) const;
82
83 // Get oop for heap allocated value type (may be TypePtr::NULL_PTR)
84 Node* get_oop() const { return in(Oop); }
85 void set_oop(Node* oop) { set_req(Oop, oop); }
86
87 // Value type fields
88 uint field_count() const { return req() - Values; }
89 Node* field_value(uint index) const;
90 Node* field_value_by_offset(int offset, bool recursive = false) const;
91 void set_field_value(uint index, Node* value);
92 int field_offset(uint index) const;
93 ciType* field_type(uint index) const;
94
95 // Replace ValueTypeNodes in debug info at safepoints with SafePointScalarObjectNodes
96 void make_scalar_in_safepoints(Compile* C);
97 uint set_arguments_for_java_call(CallJavaNode* call, int base_input, const GraphKit& kit, ciValueKlass* base_vk = NULL, int base_offset = 0);
98 virtual Node* Ideal(PhaseGVN* phase, bool can_reshape);
99 virtual int Opcode() const;
100
101 #ifndef PRODUCT
102 virtual void dump_spec(outputStream* st) const;
103 #endif
104 };
105
106 #endif // SHARE_VM_OPTO_VALUETYPENODE_HPP
|
77 Node* store_to_memory(GraphKit* kit);
78 // Store the value type to a flattened value type field or array
79 void store(GraphKit* kit, Node* obj, Node* ptr, ciInstanceKlass* holder = NULL, int holder_offset = 0) const;
80 // Store the field values to memory
81 void store_values(GraphKit* kit, Node* base, Node* ptr, ciInstanceKlass* holder, int holder_offset = 0) const;
82
83 // Get oop for heap allocated value type (may be TypePtr::NULL_PTR)
84 Node* get_oop() const { return in(Oop); }
85 void set_oop(Node* oop) { set_req(Oop, oop); }
86
87 // Value type fields
88 uint field_count() const { return req() - Values; }
89 Node* field_value(uint index) const;
90 Node* field_value_by_offset(int offset, bool recursive = false) const;
91 void set_field_value(uint index, Node* value);
92 int field_offset(uint index) const;
93 ciType* field_type(uint index) const;
94
95 // Replace ValueTypeNodes in debug info at safepoints with SafePointScalarObjectNodes
96 void make_scalar_in_safepoints(Compile* C);
97 void pass_klass(Node* n, uint pos, const GraphKit& kit);
98 uint pass_fields(Node* call, int base_input, const GraphKit& kit, ciValueKlass* base_vk = NULL, int base_offset = 0);
99 void replace_call_results(Node* call, Compile* C);
100
101
102 virtual Node* Ideal(PhaseGVN* phase, bool can_reshape);
103 virtual int Opcode() const;
104
105 #ifndef PRODUCT
106 virtual void dump_spec(outputStream* st) const;
107 #endif
108 };
109
110 #endif // SHARE_VM_OPTO_VALUETYPENODE_HPP
|