< prev index next >

src/share/vm/opto/callnode.hpp

Print this page

        

*** 70,89 **** StartNode( Node *root, const TypeTuple *domain ) : MultiNode(2), _domain(domain) { init_class_id(Class_Start); init_req(0,this); init_req(1,root); } ! virtual int Opcode() const; virtual bool pinned() const { return true; }; virtual const Type *bottom_type() const; virtual const TypePtr *adr_type() const { return TypePtr::BOTTOM; } virtual const Type* Value(PhaseGVN* phase) const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); virtual void calling_convention( BasicType* sig_bt, VMRegPair *parm_reg, uint length ) const; virtual const RegMask &in_RegMask(uint) const; virtual Node *match( const ProjNode *proj, const Matcher *m ); ! virtual uint ideal_reg() const { return 0; } #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; virtual void dump_compact_spec(outputStream *st) const; #endif }; --- 70,89 ---- StartNode( Node *root, const TypeTuple *domain ) : MultiNode(2), _domain(domain) { init_class_id(Class_Start); init_req(0,this); init_req(1,root); } ! virtual Opcodes Opcode() const; virtual bool pinned() const { return true; }; virtual const Type *bottom_type() const; virtual const TypePtr *adr_type() const { return TypePtr::BOTTOM; } virtual const Type* Value(PhaseGVN* phase) const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); virtual void calling_convention( BasicType* sig_bt, VMRegPair *parm_reg, uint length ) const; virtual const RegMask &in_RegMask(uint) const; virtual Node *match( const ProjNode *proj, const Matcher *m ); ! virtual Opcodes ideal_reg() const { return Opcodes::Op_Node; } #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; virtual void dump_compact_spec(outputStream *st) const; #endif };
*** 91,101 **** //------------------------------StartOSRNode----------------------------------- // The method start node for on stack replacement code class StartOSRNode : public StartNode { public: StartOSRNode( Node *root, const TypeTuple *domain ) : StartNode(root, domain) {} ! virtual int Opcode() const; static const TypeTuple *osr_domain(); }; //------------------------------ParmNode--------------------------------------- --- 91,101 ---- //------------------------------StartOSRNode----------------------------------- // The method start node for on stack replacement code class StartOSRNode : public StartNode { public: StartOSRNode( Node *root, const TypeTuple *domain ) : StartNode(root, domain) {} ! virtual Opcodes Opcode() const; static const TypeTuple *osr_domain(); }; //------------------------------ParmNode---------------------------------------
*** 104,116 **** static const char * const names[TypeFunc::Parms+1]; public: ParmNode( StartNode *src, uint con ) : ProjNode(src,con) { init_class_id(Class_Parm); } ! virtual int Opcode() const; virtual bool is_CFG() const { return (_con == TypeFunc::Control); } ! virtual uint ideal_reg() const; #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; virtual void dump_compact_spec(outputStream *st) const; virtual void related(GrowableArray<Node*> *in_rel, GrowableArray<Node*> *out_rel, bool compact) const; #endif --- 104,116 ---- static const char * const names[TypeFunc::Parms+1]; public: ParmNode( StartNode *src, uint con ) : ProjNode(src,con) { init_class_id(Class_Parm); } ! virtual Opcodes Opcode() const; virtual bool is_CFG() const { return (_con == TypeFunc::Control); } ! virtual Opcodes ideal_reg() const; #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; virtual void dump_compact_spec(outputStream *st) const; virtual void related(GrowableArray<Node*> *in_rel, GrowableArray<Node*> *out_rel, bool compact) const; #endif
*** 120,136 **** //------------------------------ReturnNode------------------------------------- // Return from subroutine node class ReturnNode : public Node { public: ReturnNode( uint edges, Node *cntrl, Node *i_o, Node *memory, Node *retadr, Node *frameptr ); ! virtual int Opcode() const; virtual bool is_CFG() const { return true; } virtual uint hash() const { return NO_HASH; } // CFG nodes do not hash virtual bool depends_only_on_test() const { return false; } virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); virtual const Type* Value(PhaseGVN* phase) const; ! virtual uint ideal_reg() const { return NotAMachineReg; } virtual uint match_edge(uint idx) const; #ifndef PRODUCT virtual void dump_req(outputStream *st = tty) const; #endif }; --- 120,136 ---- //------------------------------ReturnNode------------------------------------- // Return from subroutine node class ReturnNode : public Node { public: ReturnNode( uint edges, Node *cntrl, Node *i_o, Node *memory, Node *retadr, Node *frameptr ); ! virtual Opcodes Opcode() const; virtual bool is_CFG() const { return true; } virtual uint hash() const { return NO_HASH; } // CFG nodes do not hash virtual bool depends_only_on_test() const { return false; } virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); virtual const Type* Value(PhaseGVN* phase) const; ! virtual Opcodes ideal_reg() const { return Opcodes::NotAMachineReg; } virtual uint match_edge(uint idx) const; #ifndef PRODUCT virtual void dump_req(outputStream *st = tty) const; #endif };
*** 141,158 **** // ends the current basic block like a ReturnNode. Restores registers and // unwinds stack. Rethrow happens in the caller's method. class RethrowNode : public Node { public: RethrowNode( Node *cntrl, Node *i_o, Node *memory, Node *frameptr, Node *ret_adr, Node *exception ); ! virtual int Opcode() const; virtual bool is_CFG() const { return true; } virtual uint hash() const { return NO_HASH; } // CFG nodes do not hash virtual bool depends_only_on_test() const { return false; } virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); virtual const Type* Value(PhaseGVN* phase) const; virtual uint match_edge(uint idx) const; ! virtual uint ideal_reg() const { return NotAMachineReg; } #ifndef PRODUCT virtual void dump_req(outputStream *st = tty) const; #endif }; --- 141,158 ---- // ends the current basic block like a ReturnNode. Restores registers and // unwinds stack. Rethrow happens in the caller's method. class RethrowNode : public Node { public: RethrowNode( Node *cntrl, Node *i_o, Node *memory, Node *frameptr, Node *ret_adr, Node *exception ); ! virtual Opcodes Opcode() const; virtual bool is_CFG() const { return true; } virtual uint hash() const { return NO_HASH; } // CFG nodes do not hash virtual bool depends_only_on_test() const { return false; } virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); virtual const Type* Value(PhaseGVN* phase) const; virtual uint match_edge(uint idx) const; ! virtual Opcodes ideal_reg() const { return Opcodes::NotAMachineReg; } #ifndef PRODUCT virtual void dump_req(outputStream *st = tty) const; #endif };
*** 165,175 **** : ReturnNode( TypeFunc::Parms+2, cntrl, i_o, memory, frameptr, retadr ) { init_req(TypeFunc::Parms, target); init_req(TypeFunc::Parms+1, moop); } ! virtual int Opcode() const; virtual uint match_edge(uint idx) const; }; //------------------------------TailJumpNode----------------------------------- // Pop stack frame and jump indirect --- 165,175 ---- : ReturnNode( TypeFunc::Parms+2, cntrl, i_o, memory, frameptr, retadr ) { init_req(TypeFunc::Parms, target); init_req(TypeFunc::Parms+1, moop); } ! virtual Opcodes Opcode() const; virtual uint match_edge(uint idx) const; }; //------------------------------TailJumpNode----------------------------------- // Pop stack frame and jump indirect
*** 179,189 **** : ReturnNode(TypeFunc::Parms+2, cntrl, i_o, memory, frameptr, Compile::current()->top()) { init_req(TypeFunc::Parms, target); init_req(TypeFunc::Parms+1, ex_oop); } ! virtual int Opcode() const; virtual uint match_edge(uint idx) const; }; //-------------------------------JVMState------------------------------------- // A linked list of JVMState nodes captures the whole interpreter state, --- 179,189 ---- : ReturnNode(TypeFunc::Parms+2, cntrl, i_o, memory, frameptr, Compile::current()->top()) { init_req(TypeFunc::Parms, target); init_req(TypeFunc::Parms+1, ex_oop); } ! virtual Opcodes Opcode() const; virtual uint match_edge(uint idx) const; }; //-------------------------------JVMState------------------------------------- // A linked list of JVMState nodes captures the whole interpreter state,
*** 461,478 **** bool has_replaced_nodes() const { return !_replaced_nodes.is_empty(); } // Standard Node stuff ! virtual int Opcode() const; virtual bool pinned() const { return true; } virtual const Type* Value(PhaseGVN* phase) const; virtual const Type *bottom_type() const { return Type::CONTROL; } virtual const TypePtr *adr_type() const { return _adr_type; } virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); virtual Node* Identity(PhaseGVN* phase); ! virtual uint ideal_reg() const { return 0; } virtual const RegMask &in_RegMask(uint) const; virtual const RegMask &out_RegMask() const; virtual uint match_edge(uint idx) const; static bool needs_polling_address_input(); --- 461,478 ---- bool has_replaced_nodes() const { return !_replaced_nodes.is_empty(); } // Standard Node stuff ! virtual Opcodes Opcode() const; virtual bool pinned() const { return true; } virtual const Type* Value(PhaseGVN* phase) const; virtual const Type *bottom_type() const { return Type::CONTROL; } virtual const TypePtr *adr_type() const { return _adr_type; } virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); virtual Node* Identity(PhaseGVN* phase); ! virtual Opcodes ideal_reg() const { return Opcodes::Op_Node; } virtual const RegMask &in_RegMask(uint) const; virtual const RegMask &out_RegMask() const; virtual uint match_edge(uint idx) const; static bool needs_polling_address_input();
*** 503,514 **** SafePointScalarObjectNode(const TypeOopPtr* tp, #ifdef ASSERT AllocateNode* alloc, #endif uint first_index, uint n_fields); ! virtual int Opcode() const; ! virtual uint ideal_reg() const; virtual const RegMask &in_RegMask(uint) const; virtual const RegMask &out_RegMask() const; virtual uint match_edge(uint idx) const; uint first_index(JVMState* jvms) const { --- 503,514 ---- SafePointScalarObjectNode(const TypeOopPtr* tp, #ifdef ASSERT AllocateNode* alloc, #endif uint first_index, uint n_fields); ! virtual Opcodes Opcode() const; ! virtual Opcodes ideal_reg() const; virtual const RegMask &in_RegMask(uint) const; virtual const RegMask &out_RegMask() const; virtual uint match_edge(uint idx) const; uint first_index(JVMState* jvms) const {
*** 598,608 **** virtual Node* Identity(PhaseGVN* phase) { return this; } virtual uint cmp( const Node &n ) const; virtual uint size_of() const = 0; virtual void calling_convention( BasicType* sig_bt, VMRegPair *parm_regs, uint argcnt ) const; virtual Node *match( const ProjNode *proj, const Matcher *m ); ! virtual uint ideal_reg() const { return NotAMachineReg; } // Are we guaranteed that this node is a safepoint? Not true for leaf calls and // for some macro nodes whose expansion does not have a safepoint on the fast path. virtual bool guaranteed_safepoint() { return true; } // For macro nodes, the JVMState gets modified during expansion. If calls // use MachConstantBase, it gets modified during matching. So when cloning --- 598,608 ---- virtual Node* Identity(PhaseGVN* phase) { return this; } virtual uint cmp( const Node &n ) const; virtual uint size_of() const = 0; virtual void calling_convention( BasicType* sig_bt, VMRegPair *parm_regs, uint argcnt ) const; virtual Node *match( const ProjNode *proj, const Matcher *m ); ! virtual Opcodes ideal_reg() const { return Opcodes::NotAMachineReg; } // Are we guaranteed that this node is a safepoint? Not true for leaf calls and // for some macro nodes whose expansion does not have a safepoint on the fast path. virtual bool guaranteed_safepoint() { return true; } // For macro nodes, the JVMState gets modified during expansion. If calls // use MachConstantBase, it gets modified during matching. So when cloning
*** 669,679 **** _override_symbolic_info(false) { init_class_id(Class_CallJava); } ! virtual int Opcode() const; ciMethod* method() const { return _method; } void set_method(ciMethod *m) { _method = m; } void set_optimized_virtual(bool f) { _optimized_virtual = f; } bool is_optimized_virtual() const { return _optimized_virtual; } void set_method_handle_invoke(bool f) { _method_handle_invoke = f; } --- 669,679 ---- _override_symbolic_info(false) { init_class_id(Class_CallJava); } ! virtual Opcodes Opcode() const; ciMethod* method() const { return _method; } void set_method(ciMethod *m) { _method = m; } void set_optimized_virtual(bool f) { _optimized_virtual = f; } bool is_optimized_virtual() const { return _optimized_virtual; } void set_method_handle_invoke(bool f) { _method_handle_invoke = f; }
*** 734,744 **** set_jvms(jvms()->clone_deep(C)); jvms()->set_map_deep(this); } } ! virtual int Opcode() const; #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; virtual void dump_compact_spec(outputStream *st) const; #endif }; --- 734,744 ---- set_jvms(jvms()->clone_deep(C)); jvms()->set_map_deep(this); } } ! virtual Opcodes Opcode() const; #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; virtual void dump_compact_spec(outputStream *st) const; #endif };
*** 752,762 **** CallDynamicJavaNode( const TypeFunc *tf , address addr, ciMethod* method, int vtable_index, int bci ) : CallJavaNode(tf,addr,method,bci), _vtable_index(vtable_index) { init_class_id(Class_CallDynamicJava); } int _vtable_index; ! virtual int Opcode() const; #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; #endif }; --- 752,762 ---- CallDynamicJavaNode( const TypeFunc *tf , address addr, ciMethod* method, int vtable_index, int bci ) : CallJavaNode(tf,addr,method,bci), _vtable_index(vtable_index) { init_class_id(Class_CallDynamicJava); } int _vtable_index; ! virtual Opcodes Opcode() const; #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; #endif };
*** 772,782 **** { init_class_id(Class_CallRuntime); _name = name; } ! virtual int Opcode() const; virtual void calling_convention( BasicType* sig_bt, VMRegPair *parm_regs, uint argcnt ) const; #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; #endif --- 772,782 ---- { init_class_id(Class_CallRuntime); _name = name; } ! virtual Opcodes Opcode() const; virtual void calling_convention( BasicType* sig_bt, VMRegPair *parm_regs, uint argcnt ) const; #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; #endif
*** 791,801 **** const TypePtr* adr_type) : CallRuntimeNode(tf, addr, name, adr_type) { init_class_id(Class_CallLeaf); } ! virtual int Opcode() const; virtual bool guaranteed_safepoint() { return false; } #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; #endif }; --- 791,801 ---- const TypePtr* adr_type) : CallRuntimeNode(tf, addr, name, adr_type) { init_class_id(Class_CallLeaf); } ! virtual Opcodes Opcode() const; virtual bool guaranteed_safepoint() { return false; } #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; #endif };
*** 808,818 **** CallLeafNoFPNode(const TypeFunc* tf, address addr, const char* name, const TypePtr* adr_type) : CallLeafNode(tf, addr, name, adr_type) { } ! virtual int Opcode() const; }; //------------------------------Allocate--------------------------------------- // High-level memory allocation --- 808,818 ---- CallLeafNoFPNode(const TypeFunc* tf, address addr, const char* name, const TypePtr* adr_type) : CallLeafNode(tf, addr, name, adr_type) { } ! virtual Opcodes Opcode() const; }; //------------------------------Allocate--------------------------------------- // High-level memory allocation
*** 869,880 **** if (jvms() != NULL) { set_jvms(jvms()->clone_deep(C)); jvms()->set_map_deep(this); } } ! virtual int Opcode() const; ! virtual uint ideal_reg() const { return Op_RegP; } virtual bool guaranteed_safepoint() { return false; } // allocations do not modify their arguments virtual bool may_modify(const TypeOopPtr *t_oop, PhaseTransform *phase) { return false;} --- 869,880 ---- if (jvms() != NULL) { set_jvms(jvms()->clone_deep(C)); jvms()->set_map_deep(this); } } ! virtual Opcodes Opcode() const; ! virtual Opcodes ideal_reg() const { return Opcodes::Op_RegP; } virtual bool guaranteed_safepoint() { return false; } // allocations do not modify their arguments virtual bool may_modify(const TypeOopPtr *t_oop, PhaseTransform *phase) { return false;}
*** 948,958 **** initial_test) { init_class_id(Class_AllocateArray); set_req(AllocateNode::ALength, count_val); } ! virtual int Opcode() const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); // Dig the length operand out of a array allocation site. Node* Ideal_length() { return in(AllocateNode::ALength); --- 948,958 ---- initial_test) { init_class_id(Class_AllocateArray); set_req(AllocateNode::ALength, count_val); } ! virtual Opcodes Opcode() const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); // Dig the length operand out of a array allocation site. Node* Ideal_length() { return in(AllocateNode::ALength);
*** 1007,1017 **** { #ifndef PRODUCT _counter = NULL; #endif } ! virtual int Opcode() const = 0; Node * obj_node() const {return in(TypeFunc::Parms + 0); } Node * box_node() const {return in(TypeFunc::Parms + 1); } Node * fastlock_node() const {return in(TypeFunc::Parms + 2); } void set_box_node(Node* box) { set_req(TypeFunc::Parms + 1, box); } --- 1007,1017 ---- { #ifndef PRODUCT _counter = NULL; #endif } ! virtual Opcodes Opcode() const = 0; Node * obj_node() const {return in(TypeFunc::Parms + 0); } Node * box_node() const {return in(TypeFunc::Parms + 1); } Node * fastlock_node() const {return in(TypeFunc::Parms + 2); } void set_box_node(Node* box) { set_req(TypeFunc::Parms + 1, box); }
*** 1069,1079 **** const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0,fields); return TypeFunc::make(domain,range); } ! virtual int Opcode() const; virtual uint size_of() const; // Size is bigger LockNode(Compile* C, const TypeFunc *tf) : AbstractLockNode( tf ) { init_class_id(Class_Lock); init_flags(Flag_is_macro); C->add_macro_node(this); --- 1069,1079 ---- const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0,fields); return TypeFunc::make(domain,range); } ! virtual Opcodes Opcode() const; virtual uint size_of() const; // Size is bigger LockNode(Compile* C, const TypeFunc *tf) : AbstractLockNode( tf ) { init_class_id(Class_Lock); init_flags(Flag_is_macro); C->add_macro_node(this);
*** 1099,1109 **** private: #ifdef ASSERT JVMState* const _dbg_jvms; // Pointer to list of JVM State objects #endif public: ! virtual int Opcode() const; virtual uint size_of() const; // Size is bigger UnlockNode(Compile* C, const TypeFunc *tf) : AbstractLockNode( tf ) #ifdef ASSERT , _dbg_jvms(NULL) #endif --- 1099,1109 ---- private: #ifdef ASSERT JVMState* const _dbg_jvms; // Pointer to list of JVM State objects #endif public: ! virtual Opcodes Opcode() const; virtual uint size_of() const; // Size is bigger UnlockNode(Compile* C, const TypeFunc *tf) : AbstractLockNode( tf ) #ifdef ASSERT , _dbg_jvms(NULL) #endif
< prev index next >