src/share/vm/opto/phaseX.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 8042786 Sdiff src/share/vm/opto

src/share/vm/opto/phaseX.cpp

Print this page




1376       }
1377     }
1378 
1379     uint use_op = use->Opcode();
1380     // If changed Cast input, check Phi users for simple cycles
1381     if( use->is_ConstraintCast() || use->is_CheckCastPP() ) {
1382       for (DUIterator_Fast i2max, i2 = use->fast_outs(i2max); i2 < i2max; i2++) {
1383         Node* u = use->fast_out(i2);
1384         if (u->is_Phi())
1385           _worklist.push(u);
1386       }
1387     }
1388     // If changed LShift inputs, check RShift users for useless sign-ext
1389     if( use_op == Op_LShiftI ) {
1390       for (DUIterator_Fast i2max, i2 = use->fast_outs(i2max); i2 < i2max; i2++) {
1391         Node* u = use->fast_out(i2);
1392         if (u->Opcode() == Op_RShiftI)
1393           _worklist.push(u);
1394       }
1395     }









1396     // If changed AddP inputs, check Stores for loop invariant
1397     if( use_op == Op_AddP ) {
1398       for (DUIterator_Fast i2max, i2 = use->fast_outs(i2max); i2 < i2max; i2++) {
1399         Node* u = use->fast_out(i2);
1400         if (u->is_Mem())
1401           _worklist.push(u);
1402       }
1403     }
1404     // If changed initialization activity, check dependent Stores
1405     if (use_op == Op_Allocate || use_op == Op_AllocateArray) {
1406       InitializeNode* init = use->as_Allocate()->initialization();
1407       if (init != NULL) {
1408         Node* imem = init->proj_out(TypeFunc::Memory);
1409         if (imem != NULL)  add_users_to_worklist0(imem);
1410       }
1411     }
1412     if (use_op == Op_Initialize) {
1413       Node* imem = use->as_Initialize()->proj_out(TypeFunc::Memory);
1414       if (imem != NULL)  add_users_to_worklist0(imem);
1415     }




1376       }
1377     }
1378 
1379     uint use_op = use->Opcode();
1380     // If changed Cast input, check Phi users for simple cycles
1381     if( use->is_ConstraintCast() || use->is_CheckCastPP() ) {
1382       for (DUIterator_Fast i2max, i2 = use->fast_outs(i2max); i2 < i2max; i2++) {
1383         Node* u = use->fast_out(i2);
1384         if (u->is_Phi())
1385           _worklist.push(u);
1386       }
1387     }
1388     // If changed LShift inputs, check RShift users for useless sign-ext
1389     if( use_op == Op_LShiftI ) {
1390       for (DUIterator_Fast i2max, i2 = use->fast_outs(i2max); i2 < i2max; i2++) {
1391         Node* u = use->fast_out(i2);
1392         if (u->Opcode() == Op_RShiftI)
1393           _worklist.push(u);
1394       }
1395     }
1396     // If changed AddI/SubI inputs, check CmpU for range check optimization.
1397     if (use_op == Op_AddI || use_op == Op_SubI) {
1398       for (DUIterator_Fast i2max, i2 = use->fast_outs(i2max); i2 < i2max; i2++) {
1399         Node* u = use->fast_out(i2);
1400         if (u->is_Cmp() && (u->Opcode() == Op_CmpU)) {
1401           _worklist.push(u);
1402         }
1403       }
1404     }
1405     // If changed AddP inputs, check Stores for loop invariant
1406     if( use_op == Op_AddP ) {
1407       for (DUIterator_Fast i2max, i2 = use->fast_outs(i2max); i2 < i2max; i2++) {
1408         Node* u = use->fast_out(i2);
1409         if (u->is_Mem())
1410           _worklist.push(u);
1411       }
1412     }
1413     // If changed initialization activity, check dependent Stores
1414     if (use_op == Op_Allocate || use_op == Op_AllocateArray) {
1415       InitializeNode* init = use->as_Allocate()->initialization();
1416       if (init != NULL) {
1417         Node* imem = init->proj_out(TypeFunc::Memory);
1418         if (imem != NULL)  add_users_to_worklist0(imem);
1419       }
1420     }
1421     if (use_op == Op_Initialize) {
1422       Node* imem = use->as_Initialize()->proj_out(TypeFunc::Memory);
1423       if (imem != NULL)  add_users_to_worklist0(imem);
1424     }


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