< prev index next >

src/share/vm/opto/matcher.cpp

Print this page

        

*** 975,985 **** Node *Matcher::transform( Node *n ) { ShouldNotCallThis(); return n; } Node *Matcher::xform( Node *n, int max_stack ) { // Use one stack to keep both: child's node/state and parent's node/index MStack mstack(max_stack * 2 * 2); // usually: C->live_nodes() * 2 * 2 mstack.push(n, Visit, NULL, -1); // set NULL as parent to indicate root - while (mstack.is_nonempty()) { C->check_node_count(NodeLimitFudgeFactor, "too many nodes matching instructions"); if (C->failing()) return NULL; n = mstack.node(); // Leave node on stack Node_State nstate = mstack.state(); --- 975,984 ----
*** 2120,2129 **** --- 2119,2130 ---- case Op_StrInflatedCopy: case Op_StrCompressedCopy: case Op_EncodeISOArray: case Op_FmaD: case Op_FmaF: + case Op_FmaVD: + case Op_FmaVF: set_shared(n); // Force result into register (it will be anyways) break; case Op_ConP: { // Convert pointers above the centerline to NUL TypeNode *tn = n->as_Type(); // Constants derive from type nodes const TypePtr* tp = tn->type()->is_ptr();
*** 2309,2319 **** n->set_req(3, pair); n->del_req(4); break; } case Op_FmaD: ! case Op_FmaF: { // Restructure into a binary tree for Matching. Node* pair = new BinaryNode(n->in(1), n->in(2)); n->set_req(2, pair); n->set_req(1, n->in(3)); n->del_req(3); --- 2310,2322 ---- n->set_req(3, pair); n->del_req(4); break; } case Op_FmaD: ! case Op_FmaF: ! case Op_FmaVD: ! case Op_FmaVF: { // Restructure into a binary tree for Matching. Node* pair = new BinaryNode(n->in(1), n->in(2)); n->set_req(2, pair); n->set_req(1, n->in(3)); n->del_req(3);
< prev index next >