< prev index next >

src/hotspot/share/opto/lcm.cpp

Print this page

 685       lrg_ends = true;
 686       for (DUIterator_Fast jmax, j = src_n->fast_outs(jmax); j < jmax; j++) {
 687         Node* m = src_n->fast_out(j); // Get user
 688         if (m == n) continue;
 689         if (!m->is_Mach()) continue;
 690         MachNode *mach = m->as_Mach();
 691         bool src_matches = false;
 692         int iop = mach->ideal_Opcode();
 693 
 694         switch (iop) {
 695         case Op_StoreB:
 696         case Op_StoreC:
 697         case Op_StoreCM:
 698         case Op_StoreD:
 699         case Op_StoreF:
 700         case Op_StoreI:
 701         case Op_StoreL:
 702         case Op_StoreP:
 703         case Op_StoreN:
 704         case Op_StoreVector:
 705         case Op_StoreVectorScatter:
 706         case Op_StoreVectorMasked:


 707         case Op_StoreNKlass:
 708           for (uint k = 1; k < m->req(); k++) {
 709             Node *in = m->in(k);
 710             if (in == src_n) {
 711               src_matches = true;
 712               break;
 713             }
 714           }
 715           break;
 716 
 717         default:
 718           src_matches = true;
 719           break;
 720         }
 721 
 722         // If we have a store as our use, ignore the non source operands
 723         if (src_matches == false) continue;
 724 
 725         // Mark every unscheduled use which is not n with a recalculation
 726         if ((get_block_for_node(m) == block) && (!m->is_scheduled())) {

 685       lrg_ends = true;
 686       for (DUIterator_Fast jmax, j = src_n->fast_outs(jmax); j < jmax; j++) {
 687         Node* m = src_n->fast_out(j); // Get user
 688         if (m == n) continue;
 689         if (!m->is_Mach()) continue;
 690         MachNode *mach = m->as_Mach();
 691         bool src_matches = false;
 692         int iop = mach->ideal_Opcode();
 693 
 694         switch (iop) {
 695         case Op_StoreB:
 696         case Op_StoreC:
 697         case Op_StoreCM:
 698         case Op_StoreD:
 699         case Op_StoreF:
 700         case Op_StoreI:
 701         case Op_StoreL:
 702         case Op_StoreP:
 703         case Op_StoreN:
 704         case Op_StoreVector:

 705         case Op_StoreVectorMasked:
 706         case Op_StoreVectorScatter:
 707         case Op_StoreVectorScatterMasked:
 708         case Op_StoreNKlass:
 709           for (uint k = 1; k < m->req(); k++) {
 710             Node *in = m->in(k);
 711             if (in == src_n) {
 712               src_matches = true;
 713               break;
 714             }
 715           }
 716           break;
 717 
 718         default:
 719           src_matches = true;
 720           break;
 721         }
 722 
 723         // If we have a store as our use, ignore the non source operands
 724         if (src_matches == false) continue;
 725 
 726         // Mark every unscheduled use which is not n with a recalculation
 727         if ((get_block_for_node(m) == block) && (!m->is_scheduled())) {
< prev index next >