< prev index next >

src/share/vm/opto/subnode.hpp

Print this page

        

*** 43,57 **** init_class_id(Class_Sub); } // Handle algebraic identities here. If we have an identity, return the Node // we are equivalent to. We look for "add of zero" as an identity. ! virtual Node *Identity( PhaseTransform *phase ); // Compute a new Type for this node. Basically we just do the pre-check, // then call the virtual add() to set the type. ! virtual const Type *Value( PhaseTransform *phase ) const; const Type* Value_common( PhaseTransform *phase ) const; // Supplied function returns the subtractend of the inputs. // This also type-checks the inputs for sanity. Guaranteed never to // be passed a TOP or BOTTOM type, these are filtered out by a pre-check. --- 43,57 ---- init_class_id(Class_Sub); } // Handle algebraic identities here. If we have an identity, return the Node // we are equivalent to. We look for "add of zero" as an identity. ! virtual Node* Identity(PhaseGVN* phase); // Compute a new Type for this node. Basically we just do the pre-check, // then call the virtual add() to set the type. ! virtual const Type* Value(PhaseGVN* phase) const; const Type* Value_common( PhaseTransform *phase ) const; // Supplied function returns the subtractend of the inputs. // This also type-checks the inputs for sanity. Guaranteed never to // be passed a TOP or BOTTOM type, these are filtered out by a pre-check.
*** 95,105 **** // Subtract 2 floats or doubles class SubFPNode : public SubNode { protected: SubFPNode( Node *in1, Node *in2 ) : SubNode(in1,in2) {} public: ! const Type *Value( PhaseTransform *phase ) const; }; // NOTE: SubFNode should be taken away and replaced by add and negate //------------------------------SubFNode--------------------------------------- // Subtract 2 doubles --- 95,105 ---- // Subtract 2 floats or doubles class SubFPNode : public SubNode { protected: SubFPNode( Node *in1, Node *in2 ) : SubNode(in1,in2) {} public: ! const Type* Value(PhaseGVN* phase) const; }; // NOTE: SubFNode should be taken away and replaced by add and negate //------------------------------SubFNode--------------------------------------- // Subtract 2 doubles
*** 133,143 **** class CmpNode : public SubNode { public: CmpNode( Node *in1, Node *in2 ) : SubNode(in1,in2) { init_class_id(Class_Cmp); } ! virtual Node *Identity( PhaseTransform *phase ); const Type *add_id() const { return TypeInt::ZERO; } const Type *bottom_type() const { return TypeInt::CC; } virtual uint ideal_reg() const { return Op_RegFlags; } #ifndef PRODUCT --- 133,143 ---- class CmpNode : public SubNode { public: CmpNode( Node *in1, Node *in2 ) : SubNode(in1,in2) { init_class_id(Class_Cmp); } ! virtual Node* Identity(PhaseGVN* phase); const Type *add_id() const { return TypeInt::ZERO; } const Type *bottom_type() const { return TypeInt::CC; } virtual uint ideal_reg() const { return Op_RegFlags; } #ifndef PRODUCT
*** 163,173 **** class CmpUNode : public CmpNode { public: CmpUNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {} virtual int Opcode() const; virtual const Type *sub( const Type *, const Type * ) const; ! const Type *Value( PhaseTransform *phase ) const; bool is_index_range_check() const; }; //------------------------------CmpPNode--------------------------------------- // Compare 2 pointer values, returning condition codes (-1, 0 or 1). --- 163,173 ---- class CmpUNode : public CmpNode { public: CmpUNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {} virtual int Opcode() const; virtual const Type *sub( const Type *, const Type * ) const; ! const Type* Value(PhaseGVN* phase) const; bool is_index_range_check() const; }; //------------------------------CmpPNode--------------------------------------- // Compare 2 pointer values, returning condition codes (-1, 0 or 1).
*** 217,227 **** class CmpFNode : public CmpNode { public: CmpFNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {} virtual int Opcode() const; virtual const Type *sub( const Type *, const Type * ) const { ShouldNotReachHere(); return NULL; } ! const Type *Value( PhaseTransform *phase ) const; }; //------------------------------CmpF3Node-------------------------------------- // Compare 2 float values, returning integer value (-1, 0 or 1). // This implements the Java bytecode fcmpl, so unordered returns -1. --- 217,227 ---- class CmpFNode : public CmpNode { public: CmpFNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {} virtual int Opcode() const; virtual const Type *sub( const Type *, const Type * ) const { ShouldNotReachHere(); return NULL; } ! const Type* Value(PhaseGVN* phase) const; }; //------------------------------CmpF3Node-------------------------------------- // Compare 2 float values, returning integer value (-1, 0 or 1). // This implements the Java bytecode fcmpl, so unordered returns -1.
*** 245,255 **** class CmpDNode : public CmpNode { public: CmpDNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {} virtual int Opcode() const; virtual const Type *sub( const Type *, const Type * ) const { ShouldNotReachHere(); return NULL; } ! const Type *Value( PhaseTransform *phase ) const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); }; //------------------------------CmpD3Node-------------------------------------- // Compare 2 double values, returning integer value (-1, 0 or 1). --- 245,255 ---- class CmpDNode : public CmpNode { public: CmpDNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {} virtual int Opcode() const; virtual const Type *sub( const Type *, const Type * ) const { ShouldNotReachHere(); return NULL; } ! const Type* Value(PhaseGVN* phase) const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); }; //------------------------------CmpD3Node-------------------------------------- // Compare 2 double values, returning integer value (-1, 0 or 1).
*** 307,317 **** Node* as_int_value(PhaseGVN* phase); // Invert sense of self, returning new Bool. BoolNode* negate(PhaseGVN* phase); virtual int Opcode() const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); ! virtual const Type *Value( PhaseTransform *phase ) const; virtual const Type *bottom_type() const { return TypeInt::BOOL; } uint match_edge(uint idx) const { return 0; } virtual uint ideal_reg() const { return Op_RegI; } bool is_counted_loop_exit_test(); --- 307,317 ---- Node* as_int_value(PhaseGVN* phase); // Invert sense of self, returning new Bool. BoolNode* negate(PhaseGVN* phase); virtual int Opcode() const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); ! virtual const Type* Value(PhaseGVN* phase) const; virtual const Type *bottom_type() const { return TypeInt::BOOL; } uint match_edge(uint idx) const { return 0; } virtual uint ideal_reg() const { return Op_RegI; } bool is_counted_loop_exit_test();
*** 417,427 **** C->add_expensive_node(this); } virtual int Opcode() const; const Type *bottom_type() const { return Type::DOUBLE; } virtual uint ideal_reg() const { return Op_RegD; } ! virtual const Type *Value( PhaseTransform *phase ) const; }; //------------------------------CosDNode--------------------------------------- // Sinus of a double class SinDNode : public Node { --- 417,427 ---- C->add_expensive_node(this); } virtual int Opcode() const; const Type *bottom_type() const { return Type::DOUBLE; } virtual uint ideal_reg() const { return Op_RegD; } ! virtual const Type* Value(PhaseGVN* phase) const; }; //------------------------------CosDNode--------------------------------------- // Sinus of a double class SinDNode : public Node {
*** 431,441 **** C->add_expensive_node(this); } virtual int Opcode() const; const Type *bottom_type() const { return Type::DOUBLE; } virtual uint ideal_reg() const { return Op_RegD; } ! virtual const Type *Value( PhaseTransform *phase ) const; }; //------------------------------TanDNode--------------------------------------- // tangens of a double --- 431,441 ---- C->add_expensive_node(this); } virtual int Opcode() const; const Type *bottom_type() const { return Type::DOUBLE; } virtual uint ideal_reg() const { return Op_RegD; } ! virtual const Type* Value(PhaseGVN* phase) const; }; //------------------------------TanDNode--------------------------------------- // tangens of a double
*** 446,456 **** C->add_expensive_node(this); } virtual int Opcode() const; const Type *bottom_type() const { return Type::DOUBLE; } virtual uint ideal_reg() const { return Op_RegD; } ! virtual const Type *Value( PhaseTransform *phase ) const; }; //------------------------------AtanDNode-------------------------------------- // arcus tangens of a double --- 446,456 ---- C->add_expensive_node(this); } virtual int Opcode() const; const Type *bottom_type() const { return Type::DOUBLE; } virtual uint ideal_reg() const { return Op_RegD; } ! virtual const Type* Value(PhaseGVN* phase) const; }; //------------------------------AtanDNode-------------------------------------- // arcus tangens of a double
*** 472,482 **** C->add_expensive_node(this); } virtual int Opcode() const; const Type *bottom_type() const { return Type::DOUBLE; } virtual uint ideal_reg() const { return Op_RegD; } ! virtual const Type *Value( PhaseTransform *phase ) const; }; //------------------------------Log10DNode--------------------------------------- // Log_10 of a double class Log10DNode : public Node { --- 472,482 ---- C->add_expensive_node(this); } virtual int Opcode() const; const Type *bottom_type() const { return Type::DOUBLE; } virtual uint ideal_reg() const { return Op_RegD; } ! virtual const Type* Value(PhaseGVN* phase) const; }; //------------------------------Log10DNode--------------------------------------- // Log_10 of a double class Log10DNode : public Node {
*** 486,496 **** C->add_expensive_node(this); } virtual int Opcode() const; const Type *bottom_type() const { return Type::DOUBLE; } virtual uint ideal_reg() const { return Op_RegD; } ! virtual const Type *Value( PhaseTransform *phase ) const; }; //-------------------------------ReverseBytesINode-------------------------------- // reverse bytes of an integer class ReverseBytesINode : public Node { --- 486,496 ---- C->add_expensive_node(this); } virtual int Opcode() const; const Type *bottom_type() const { return Type::DOUBLE; } virtual uint ideal_reg() const { return Op_RegD; } ! virtual const Type* Value(PhaseGVN* phase) const; }; //-------------------------------ReverseBytesINode-------------------------------- // reverse bytes of an integer class ReverseBytesINode : public Node {
< prev index next >