src/share/vm/opto/valuetypenode.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File valhalla-experimental Cdiff src/share/vm/opto/valuetypenode.hpp

src/share/vm/opto/valuetypenode.hpp

Print this page

        

*** 38,53 **** : TypeNode(t, Values + t->value_klass()->nof_declared_nonstatic_fields()) { init_class_id(Class_ValueType); init_req(Oop, oop); } // 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, ciInstanceKlass* holder, Node* base, int base_offset = 0); - // Store the field values to memory - void store_values(GraphKit* kit, ciInstanceKlass* holder, Node* base, int base_offset = 0) const; 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 --- 38,57 ---- : TypeNode(t, Values + t->value_klass()->nof_declared_nonstatic_fields()) { init_class_id(Class_ValueType); init_req(Oop, oop); } + ValueTypeNode(const TypeValueType* t, Node* oop, int field_count) + : TypeNode(t, Values + field_count) { + init_class_id(Class_ValueType); + init_req(Oop, oop); + } + // 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, ciInstanceKlass* holder, Node* base, int base_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
*** 69,90 **** // 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, ciInstanceKlass* holder, Node* obj, int field_offset) 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); } // Value type fields uint field_count() const { return req() - Values; } ! Node* get_field_value(uint index) const; ! Node* get_field_value_by_offset(int offset, bool recursive = false) const; void set_field_value(uint index, Node* value); ! int get_field_offset(uint index) const; ! ciType* get_field_type(uint index) const; // Replace ValueTypeNodes in debug info at safepoints with SafePointScalarObjectNodes void make_scalar_in_safepoints(Compile* C); uint set_arguments_for_java_call(CallJavaNode* call, int base_input, const GraphKit& kit, ciValueKlass* base_vk = NULL, int base_offset = 0); virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); --- 73,96 ---- // 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, ciInstanceKlass* holder, Node* obj, int field_offset) const; + // Store the field values to memory + void store_values(GraphKit* kit, ciInstanceKlass* holder, Node* base, int base_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); } // Value type fields uint field_count() const { return req() - Values; } ! Node* field_value(uint index) const; ! Node* field_value_by_offset(int offset, bool recursive = false) const; void set_field_value(uint index, Node* value); ! int field_offset(uint index) const; ! ciType* field_type(uint index) const; // Replace ValueTypeNodes in debug info at safepoints with SafePointScalarObjectNodes void make_scalar_in_safepoints(Compile* C); uint set_arguments_for_java_call(CallJavaNode* call, int base_input, const GraphKit& kit, ciValueKlass* base_vk = NULL, int base_offset = 0); virtual Node* Ideal(PhaseGVN* phase, bool can_reshape);
src/share/vm/opto/valuetypenode.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File