< prev index next >

src/share/vm/opto/matcher.cpp

Print this page




2299       switch( n->Opcode() ) {       // Handle some opcodes special
2300       case Op_StorePConditional:
2301       case Op_StoreIConditional:
2302       case Op_StoreLConditional:
2303       case Op_CompareAndSwapI:
2304       case Op_CompareAndSwapL:
2305       case Op_CompareAndSwapP:
2306       case Op_CompareAndSwapN: {   // Convert trinary to binary-tree
2307         Node *newval = n->in(MemNode::ValueIn );
2308         Node *oldval  = n->in(LoadStoreConditionalNode::ExpectedIn);
2309         Node *pair = new BinaryNode( oldval, newval );
2310         n->set_req(MemNode::ValueIn,pair);
2311         n->del_req(LoadStoreConditionalNode::ExpectedIn);
2312         break;
2313       }
2314       case Op_CMoveD:              // Convert trinary to binary-tree
2315       case Op_CMoveF:
2316       case Op_CMoveI:
2317       case Op_CMoveL:
2318       case Op_CMoveN:
2319       case Op_CMoveP: {

2320         // Restructure into a binary tree for Matching.  It's possible that
2321         // we could move this code up next to the graph reshaping for IfNodes
2322         // or vice-versa, but I do not want to debug this for Ladybird.
2323         // 10/2/2000 CNC.
2324         Node *pair1 = new BinaryNode(n->in(1),n->in(1)->in(1));
2325         n->set_req(1,pair1);
2326         Node *pair2 = new BinaryNode(n->in(2),n->in(3));
2327         n->set_req(2,pair2);
2328         n->del_req(3);
2329         break;
2330       }
2331       case Op_LoopLimit: {
2332         Node *pair1 = new BinaryNode(n->in(1),n->in(2));
2333         n->set_req(1,pair1);
2334         n->set_req(2,n->in(3));
2335         n->del_req(3);
2336         break;
2337       }
2338       case Op_StrEquals: {
2339         Node *pair1 = new BinaryNode(n->in(2),n->in(3));




2299       switch( n->Opcode() ) {       // Handle some opcodes special
2300       case Op_StorePConditional:
2301       case Op_StoreIConditional:
2302       case Op_StoreLConditional:
2303       case Op_CompareAndSwapI:
2304       case Op_CompareAndSwapL:
2305       case Op_CompareAndSwapP:
2306       case Op_CompareAndSwapN: {   // Convert trinary to binary-tree
2307         Node *newval = n->in(MemNode::ValueIn );
2308         Node *oldval  = n->in(LoadStoreConditionalNode::ExpectedIn);
2309         Node *pair = new BinaryNode( oldval, newval );
2310         n->set_req(MemNode::ValueIn,pair);
2311         n->del_req(LoadStoreConditionalNode::ExpectedIn);
2312         break;
2313       }
2314       case Op_CMoveD:              // Convert trinary to binary-tree
2315       case Op_CMoveF:
2316       case Op_CMoveI:
2317       case Op_CMoveL:
2318       case Op_CMoveN:
2319       case Op_CMoveP:
2320       case Op_CMoveVD:  {
2321         // Restructure into a binary tree for Matching.  It's possible that
2322         // we could move this code up next to the graph reshaping for IfNodes
2323         // or vice-versa, but I do not want to debug this for Ladybird.
2324         // 10/2/2000 CNC.
2325         Node *pair1 = new BinaryNode(n->in(1),n->in(1)->in(1));
2326         n->set_req(1,pair1);
2327         Node *pair2 = new BinaryNode(n->in(2),n->in(3));
2328         n->set_req(2,pair2);
2329         n->del_req(3);
2330         break;
2331       }
2332       case Op_LoopLimit: {
2333         Node *pair1 = new BinaryNode(n->in(1),n->in(2));
2334         n->set_req(1,pair1);
2335         n->set_req(2,n->in(3));
2336         n->del_req(3);
2337         break;
2338       }
2339       case Op_StrEquals: {
2340         Node *pair1 = new BinaryNode(n->in(2),n->in(3));


< prev index next >