132 virtual uint ideal_reg() const { return Op_RegP; } 133 virtual const Type *bottom_type() const { return TypeRawPtr::BOTTOM; } 134 }; 135 136 //------------------------------CastP2XNode------------------------------------- 137 // Used in both 32-bit and 64-bit land. 138 // Used for card-marks and unsafe pointer math. 139 class CastP2XNode : public Node { 140 public: 141 CastP2XNode( Node *ctrl, Node *n ) : Node(ctrl, n) {} 142 virtual int Opcode() const; 143 virtual const Type* Value(PhaseGVN* phase) const; 144 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); 145 virtual Node* Identity(PhaseGVN* phase); 146 virtual uint ideal_reg() const { return Op_RegX; } 147 virtual const Type *bottom_type() const { return TypeX_X; } 148 // Return false to keep node from moving away from an associated card mark. 149 virtual bool depends_only_on_test() const { return false; } 150 }; 151 152 153 154 #endif // SHARE_OPTO_CASTNODE_HPP | 132 virtual uint ideal_reg() const { return Op_RegP; } 133 virtual const Type *bottom_type() const { return TypeRawPtr::BOTTOM; } 134 }; 135 136 //------------------------------CastP2XNode------------------------------------- 137 // Used in both 32-bit and 64-bit land. 138 // Used for card-marks and unsafe pointer math. 139 class CastP2XNode : public Node { 140 public: 141 CastP2XNode( Node *ctrl, Node *n ) : Node(ctrl, n) {} 142 virtual int Opcode() const; 143 virtual const Type* Value(PhaseGVN* phase) const; 144 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); 145 virtual Node* Identity(PhaseGVN* phase); 146 virtual uint ideal_reg() const { return Op_RegX; } 147 virtual const Type *bottom_type() const { return TypeX_X; } 148 // Return false to keep node from moving away from an associated card mark. 149 virtual bool depends_only_on_test() const { return false; } 150 }; 151 152 // convert between a 32 bit integer and a compressed pointer 153 class CastI2NNode : public TypeNode { 154 public: 155 CastI2NNode(Node *n, const Type *t) : TypeNode(t, 2) { 156 init_req(1, n); 157 } 158 virtual int Opcode() const; 159 virtual uint ideal_reg() const { return Op_RegN; } 160 }; 161 162 class CastN2INode : public Node { 163 public: 164 CastN2INode(Node *n) : Node(NULL, n) {} 165 virtual int Opcode() const; 166 virtual uint ideal_reg() const { return Op_RegI; } 167 virtual const Type *bottom_type() const { return TypeInt::INT; } 168 }; 169 170 171 #endif // SHARE_OPTO_CASTNODE_HPP |