src/share/vm/opto/mathexactnode.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/mathexactnode.hpp	Fri Oct 18 10:43:06 2013
--- new/src/share/vm/opto/mathexactnode.hpp	Fri Oct 18 10:43:06 2013

*** 37,46 **** --- 37,47 ---- class PhaseGVN; class PhaseTransform; class MathExactNode : public MultiNode { public: + MathExactNode(Node* ctrl, Node* n1); MathExactNode(Node* ctrl, Node* in1, Node* in2); enum { result_proj_node = 0, flags_proj_node = 1 };
*** 50,78 **** --- 51,146 ---- virtual const Type* Value(PhaseTransform* phase) const { return bottom_type(); } virtual uint hash() const { return Node::hash(); } virtual bool is_CFG() const { return false; } virtual uint ideal_reg() const { return NotAMachineReg; } + static bool is_MathExactOpcode(int opcode); + ProjNode* result_node() const { return proj_out(result_proj_node); } ProjNode* flags_node() const { return proj_out(flags_proj_node); } Node* control_node() const; Node* non_throwing_branch() const; protected: IfNode* if_node() const; BoolNode* bool_node() const; Node* no_overflow(PhaseGVN *phase, Node* new_result); }; ! class AddExactINode : public MathExactNode { ! public: ! AddExactINode(Node* ctrl, Node* in1, Node* in2) : MathExactNode(ctrl, in1, in2) {} ! class MathExactINode : public MathExactNode { ! public: ! MathExactINode(Node* ctrl, Node* in1) : MathExactNode(ctrl, in1) {} + MathExactINode(Node* ctrl, Node* in1, Node* in2) : MathExactNode(ctrl, in1, in2) {} virtual int Opcode() const; + virtual Node* match(const ProjNode* proj, const Matcher* m); virtual const Type* bottom_type() const { return TypeTuple::INT_CC_PAIR; } + }; + + class MathExactLNode : public MathExactNode { + public: + MathExactLNode(Node* ctrl, Node* in1) : MathExactNode(ctrl, in1) {} + MathExactLNode(Node* ctrl, Node* in1, Node* in2) : MathExactNode(ctrl, in1, in2) {} + virtual int Opcode() const; virtual Node* match(const ProjNode* proj, const Matcher* m); + virtual const Type* bottom_type() const { return TypeTuple::LONG_CC_PAIR; } + }; + + class AddExactINode : public MathExactINode { + public: + AddExactINode(Node* ctrl, Node* in1, Node* in2) : MathExactINode(ctrl, in1, in2) {} + virtual int Opcode() const; virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); }; + class AddExactLNode : public MathExactLNode { + public: + AddExactLNode(Node* ctrl, Node* in1, Node* in2) : MathExactLNode(ctrl, in1, in2) {} + virtual int Opcode() const; + virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); + }; + + class SubExactINode : public MathExactINode { + public: + SubExactINode(Node* ctrl, Node* in1, Node* in2) : MathExactINode(ctrl, in1, in2) {} + virtual int Opcode() const; + virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); + }; + + class SubExactLNode : public MathExactLNode { + public: + SubExactLNode(Node* ctrl, Node* in1, Node* in2) : MathExactLNode(ctrl, in1, in2) {} + virtual int Opcode() const; + virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); + }; + + class NegExactINode : public MathExactINode { + public: + NegExactINode(Node* ctrl, Node* in1) : MathExactINode(ctrl, in1) {} + virtual int Opcode() const; + virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); + }; + + class NegExactLNode : public MathExactLNode { + public: + NegExactLNode(Node* ctrl, Node* in1) : MathExactLNode(ctrl, in1) {} + virtual int Opcode() const; + virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); + }; + + class MulExactINode : public MathExactINode { + public: + MulExactINode(Node* ctrl, Node* in1, Node* in2) : MathExactINode(ctrl, in1, in2) {} + virtual int Opcode() const; + virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); + }; + + class MulExactLNode : public MathExactLNode { + public: + MulExactLNode(Node* ctrl, Node* in1, Node* in2) : MathExactLNode(ctrl, in1, in2) {} + virtual int Opcode() const; + virtual Node* Ideal(PhaseGVN* phase, bool can_reshape); + }; + class FlagsProjNode : public ProjNode { public: FlagsProjNode(Node* src, uint con) : ProjNode(src, con) { init_class_id(Class_FlagsProj); }

src/share/vm/opto/mathexactnode.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File