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