874 // Result of Escape Analysis 875 bool _is_scalar_replaceable; 876 bool _is_non_escaping; 877 // True when MemBar for new is redundant with MemBar at initialzer exit 878 bool _is_allocation_MemBar_redundant; 879 880 virtual uint size_of() const; // Size is bigger 881 AllocateNode(Compile* C, const TypeFunc *atype, Node *ctrl, Node *mem, Node *abio, 882 Node *size, Node *klass_node, Node *initial_test, ValueTypeBaseNode* value_node = NULL); 883 // Expansion modifies the JVMState, so we need to clone it 884 virtual void clone_jvms(Compile* C) { 885 if (jvms() != NULL) { 886 set_jvms(jvms()->clone_deep(C)); 887 jvms()->set_map_deep(this); 888 } 889 } 890 virtual int Opcode() const; 891 virtual uint ideal_reg() const { return Op_RegP; } 892 virtual bool guaranteed_safepoint() { return false; } 893 894 // allocations do not modify their arguments 895 virtual bool may_modify(const TypeOopPtr *t_oop, PhaseTransform *phase) { return false;} 896 897 // Pattern-match a possible usage of AllocateNode. 898 // Return null if no allocation is recognized. 899 // The operand is the pointer produced by the (possible) allocation. 900 // It must be a projection of the Allocate or its subsequent CastPP. 901 // (Note: This function is defined in file graphKit.cpp, near 902 // GraphKit::new_instance/new_array, whose output it recognizes.) 903 // The 'ptr' may not have an offset unless the 'offset' argument is given. 904 static AllocateNode* Ideal_allocation(Node* ptr, PhaseTransform* phase); 905 906 // Fancy version which uses AddPNode::Ideal_base_and_offset to strip 907 // an offset, which is reported back to the caller. 908 // (Note: AllocateNode::Ideal_allocation is defined in graphKit.cpp.) 909 static AllocateNode* Ideal_allocation(Node* ptr, PhaseTransform* phase, 910 intptr_t& offset); 911 912 // Dig the klass operand out of a (possible) allocation site. 913 static Node* Ideal_klass(Node* ptr, PhaseTransform* phase) { | 874 // Result of Escape Analysis 875 bool _is_scalar_replaceable; 876 bool _is_non_escaping; 877 // True when MemBar for new is redundant with MemBar at initialzer exit 878 bool _is_allocation_MemBar_redundant; 879 880 virtual uint size_of() const; // Size is bigger 881 AllocateNode(Compile* C, const TypeFunc *atype, Node *ctrl, Node *mem, Node *abio, 882 Node *size, Node *klass_node, Node *initial_test, ValueTypeBaseNode* value_node = NULL); 883 // Expansion modifies the JVMState, so we need to clone it 884 virtual void clone_jvms(Compile* C) { 885 if (jvms() != NULL) { 886 set_jvms(jvms()->clone_deep(C)); 887 jvms()->set_map_deep(this); 888 } 889 } 890 virtual int Opcode() const; 891 virtual uint ideal_reg() const { return Op_RegP; } 892 virtual bool guaranteed_safepoint() { return false; } 893 894 virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); 895 896 // allocations do not modify their arguments 897 virtual bool may_modify(const TypeOopPtr *t_oop, PhaseTransform *phase) { return false;} 898 899 // Pattern-match a possible usage of AllocateNode. 900 // Return null if no allocation is recognized. 901 // The operand is the pointer produced by the (possible) allocation. 902 // It must be a projection of the Allocate or its subsequent CastPP. 903 // (Note: This function is defined in file graphKit.cpp, near 904 // GraphKit::new_instance/new_array, whose output it recognizes.) 905 // The 'ptr' may not have an offset unless the 'offset' argument is given. 906 static AllocateNode* Ideal_allocation(Node* ptr, PhaseTransform* phase); 907 908 // Fancy version which uses AddPNode::Ideal_base_and_offset to strip 909 // an offset, which is reported back to the caller. 910 // (Note: AllocateNode::Ideal_allocation is defined in graphKit.cpp.) 911 static AllocateNode* Ideal_allocation(Node* ptr, PhaseTransform* phase, 912 intptr_t& offset); 913 914 // Dig the klass operand out of a (possible) allocation site. 915 static Node* Ideal_klass(Node* ptr, PhaseTransform* phase) { |