< prev index next >

src/hotspot/share/opto/lcm.cpp

Print this page




 670       lrg_ends = true;
 671       for (DUIterator_Fast jmax, j = src_n->fast_outs(jmax); j < jmax; j++) {
 672         Node* m = src_n->fast_out(j); // Get user
 673         if (m == n) continue;
 674         if (!m->is_Mach()) continue;
 675         MachNode *mach = m->as_Mach();
 676         bool src_matches = false;
 677         int iop = mach->ideal_Opcode();
 678 
 679         switch (iop) {
 680         case Op_StoreB:
 681         case Op_StoreC:
 682         case Op_StoreCM:
 683         case Op_StoreD:
 684         case Op_StoreF:
 685         case Op_StoreI:
 686         case Op_StoreL:
 687         case Op_StoreP:
 688         case Op_StoreN:
 689         case Op_StoreVector:

 690         case Op_StoreNKlass:
 691           for (uint k = 1; k < m->req(); k++) {
 692             Node *in = m->in(k);
 693             if (in == src_n) {
 694               src_matches = true;
 695               break;
 696             }
 697           }
 698           break;
 699 
 700         default:
 701           src_matches = true;
 702           break;
 703         }
 704 
 705         // If we have a store as our use, ignore the non source operands
 706         if (src_matches == false) continue;
 707 
 708         // Mark every unscheduled use which is not n with a recalculation
 709         if ((get_block_for_node(m) == block) && (!m->is_scheduled())) {




 670       lrg_ends = true;
 671       for (DUIterator_Fast jmax, j = src_n->fast_outs(jmax); j < jmax; j++) {
 672         Node* m = src_n->fast_out(j); // Get user
 673         if (m == n) continue;
 674         if (!m->is_Mach()) continue;
 675         MachNode *mach = m->as_Mach();
 676         bool src_matches = false;
 677         int iop = mach->ideal_Opcode();
 678 
 679         switch (iop) {
 680         case Op_StoreB:
 681         case Op_StoreC:
 682         case Op_StoreCM:
 683         case Op_StoreD:
 684         case Op_StoreF:
 685         case Op_StoreI:
 686         case Op_StoreL:
 687         case Op_StoreP:
 688         case Op_StoreN:
 689         case Op_StoreVector:
 690         case Op_StoreVectorScatter:
 691         case Op_StoreNKlass:
 692           for (uint k = 1; k < m->req(); k++) {
 693             Node *in = m->in(k);
 694             if (in == src_n) {
 695               src_matches = true;
 696               break;
 697             }
 698           }
 699           break;
 700 
 701         default:
 702           src_matches = true;
 703           break;
 704         }
 705 
 706         // If we have a store as our use, ignore the non source operands
 707         if (src_matches == false) continue;
 708 
 709         // Mark every unscheduled use which is not n with a recalculation
 710         if ((get_block_for_node(m) == block) && (!m->is_scheduled())) {


< prev index next >