< prev index next >

src/share/vm/opto/castnode.hpp

Print this page

        

*** 45,60 **** init_req(1, n); } virtual Node* Identity(PhaseGVN* phase); virtual const Type* Value(PhaseGVN* phase) const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); ! virtual int Opcode() const; ! virtual uint ideal_reg() const = 0; virtual bool depends_only_on_test() const { return !_carry_dependency; } bool carry_dependency() const { return _carry_dependency; } TypeNode* dominating_cast(PhaseTransform *phase) const; ! static Node* make_cast(int opcode, Node* c, Node *n, const Type *t, bool carry_dependency); #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; #endif }; --- 45,60 ---- init_req(1, n); } virtual Node* Identity(PhaseGVN* phase); virtual const Type* Value(PhaseGVN* phase) const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); ! virtual Opcodes Opcode() const; ! virtual Opcodes ideal_reg() const = 0; virtual bool depends_only_on_test() const { return !_carry_dependency; } bool carry_dependency() const { return _carry_dependency; } TypeNode* dominating_cast(PhaseTransform *phase) const; ! static Node* make_cast(Opcodes opcode, Node* c, Node *n, const Type *t, bool carry_dependency); #ifndef PRODUCT virtual void dump_spec(outputStream *st) const; #endif };
*** 71,82 **** public: CastIINode(Node* n, const Type* t, bool carry_dependency = false, bool range_check_dependency = false) : ConstraintCastNode(n, t, carry_dependency), _range_check_dependency(range_check_dependency) { init_class_id(Class_CastII); } ! virtual int Opcode() const; ! virtual uint ideal_reg() const { return Op_RegI; } virtual const Type* Value(PhaseGVN* phase) const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); const bool has_range_check() { #ifdef _LP64 return _range_check_dependency; --- 71,82 ---- public: CastIINode(Node* n, const Type* t, bool carry_dependency = false, bool range_check_dependency = false) : ConstraintCastNode(n, t, carry_dependency), _range_check_dependency(range_check_dependency) { init_class_id(Class_CastII); } ! virtual Opcodes Opcode() const; ! virtual Opcodes ideal_reg() const { return Opcodes::Op_RegI; } virtual const Type* Value(PhaseGVN* phase) const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); const bool has_range_check() { #ifdef _LP64 return _range_check_dependency;
*** 96,107 **** class CastPPNode: public ConstraintCastNode { public: CastPPNode (Node *n, const Type *t, bool carry_dependency = false) : ConstraintCastNode(n, t, carry_dependency) { } ! virtual int Opcode() const; ! virtual uint ideal_reg() const { return Op_RegP; } }; //------------------------------CheckCastPPNode-------------------------------- // for _checkcast, cast pointer to pointer (different type), without JOIN, class CheckCastPPNode: public ConstraintCastNode { --- 96,107 ---- class CastPPNode: public ConstraintCastNode { public: CastPPNode (Node *n, const Type *t, bool carry_dependency = false) : ConstraintCastNode(n, t, carry_dependency) { } ! virtual Opcodes Opcode() const; ! virtual Opcodes ideal_reg() const { return Opcodes::Op_RegP; } }; //------------------------------CheckCastPPNode-------------------------------- // for _checkcast, cast pointer to pointer (different type), without JOIN, class CheckCastPPNode: public ConstraintCastNode {
*** 112,150 **** init_req(0, c); } virtual Node* Identity(PhaseGVN* phase); virtual const Type* Value(PhaseGVN* phase) const; ! virtual int Opcode() const; ! virtual uint ideal_reg() const { return Op_RegP; } }; //------------------------------CastX2PNode------------------------------------- // convert a machine-pointer-sized integer to a raw pointer class CastX2PNode : public Node { public: CastX2PNode( Node *n ) : Node(NULL, n) {} ! virtual int Opcode() const; virtual const Type* Value(PhaseGVN* phase) const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); virtual Node* Identity(PhaseGVN* phase); ! virtual uint ideal_reg() const { return Op_RegP; } virtual const Type *bottom_type() const { return TypeRawPtr::BOTTOM; } }; //------------------------------CastP2XNode------------------------------------- // Used in both 32-bit and 64-bit land. // Used for card-marks and unsafe pointer math. class CastP2XNode : public Node { public: CastP2XNode( Node *ctrl, Node *n ) : Node(ctrl, n) {} ! virtual int Opcode() const; virtual const Type* Value(PhaseGVN* phase) const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); virtual Node* Identity(PhaseGVN* phase); ! virtual uint ideal_reg() const { return Op_RegX; } virtual const Type *bottom_type() const { return TypeX_X; } // Return false to keep node from moving away from an associated card mark. virtual bool depends_only_on_test() const { return false; } }; --- 112,150 ---- init_req(0, c); } virtual Node* Identity(PhaseGVN* phase); virtual const Type* Value(PhaseGVN* phase) const; ! virtual Opcodes Opcode() const; ! virtual Opcodes ideal_reg() const { return Opcodes::Op_RegP; } }; //------------------------------CastX2PNode------------------------------------- // convert a machine-pointer-sized integer to a raw pointer class CastX2PNode : public Node { public: CastX2PNode( Node *n ) : Node(NULL, n) {} ! virtual Opcodes Opcode() const; virtual const Type* Value(PhaseGVN* phase) const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); virtual Node* Identity(PhaseGVN* phase); ! virtual Opcodes ideal_reg() const { return Opcodes::Op_RegP; } virtual const Type *bottom_type() const { return TypeRawPtr::BOTTOM; } }; //------------------------------CastP2XNode------------------------------------- // Used in both 32-bit and 64-bit land. // Used for card-marks and unsafe pointer math. class CastP2XNode : public Node { public: CastP2XNode( Node *ctrl, Node *n ) : Node(ctrl, n) {} ! virtual Opcodes Opcode() const; virtual const Type* Value(PhaseGVN* phase) const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); virtual Node* Identity(PhaseGVN* phase); ! virtual Opcodes ideal_reg() const { return Opcodes::Op_RegX; } virtual const Type *bottom_type() const { return TypeX_X; } // Return false to keep node from moving away from an associated card mark. virtual bool depends_only_on_test() const { return false; } };
< prev index next >