src/share/vm/opto/mathexactnode.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/mathexactnode.cpp	Tue Oct 22 14:52:26 2013
--- new/src/share/vm/opto/mathexactnode.cpp	Tue Oct 22 14:52:26 2013

*** 29,42 **** --- 29,49 ---- #include "opto/machnode.hpp" #include "opto/matcher.hpp" #include "opto/mathexactnode.hpp" #include "opto/subnode.hpp" ! MathExactNode::MathExactNode(Node* ctrl, Node* n1, Node* n2) : MultiNode(3) { ! MathExactNode::MathExactNode(Node* ctrl, Node* in1) : MultiNode(2) { + init_class_id(Class_MathExact); init_req(0, ctrl); ! init_req(1, in1); init_req(2, n2); + } + + MathExactNode::MathExactNode(Node* ctrl, Node* in1, Node* in2) : MultiNode(3) { + init_class_id(Class_MathExact); + init_req(0, ctrl); + init_req(1, in1); + init_req(2, in2); } BoolNode* MathExactNode::bool_node() const { Node* flags = flags_node(); BoolNode* boolnode = flags->unique_out()->as_Bool();
*** 62,76 **** --- 69,78 ---- return ifnode->proj_out(0); } return ifnode->proj_out(1); } MathExactNode::MathExactNode(Node* ctrl, Node* n1) : MultiNode(2) { init_req(0, ctrl); init_req(1, n1); } // If the MathExactNode won't overflow we have to replace the // FlagsProjNode and ProjNode that is generated by the MathExactNode Node* MathExactNode::no_overflow(PhaseGVN* phase, Node* new_result) { PhaseIterGVN* igvn = phase->is_IterGVN(); if (igvn) {
*** 100,125 **** --- 102,111 ---- } } return new_result; } bool MathExactNode::is_MathExactOpcode(int opcode) { switch (opcode) { case Op_AddExactI: case Op_AddExactL: case Op_SubExactI: case Op_SubExactL: case Op_MulExactI: case Op_MulExactL: case Op_NegExactI: case Op_NegExactL: return true; default: return false; } } Node* MathExactINode::match(const ProjNode* proj, const Matcher* m) { uint ideal_reg = proj->ideal_reg(); RegMask rm; if (proj->_con == result_proj_node) { rm = m->mathExactI_result_proj_mask();

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