src/hotspot/share/opto/loopopts.cpp
changeset 58470 8991796c17d4
parent 58351 d322bf161e31
child 58516 d376d86b0a01
equal deleted inserted replaced
58469:ccbb5a2bf3ab 58470:8991796c17d4
  1073   // ConvI2LNode may become TOP if the input Value() does not
  1073   // ConvI2LNode may become TOP if the input Value() does not
  1074   // overlap the ConvI2L range, leaving a node which may not dominate its
  1074   // overlap the ConvI2L range, leaving a node which may not dominate its
  1075   // uses.
  1075   // uses.
  1076   // A better fix for this problem can be found in the BugTraq entry, but
  1076   // A better fix for this problem can be found in the BugTraq entry, but
  1077   // expediency for Mantis demands this hack.
  1077   // expediency for Mantis demands this hack.
  1078   // 6855164: If the merge point has a FastLockNode with a PhiNode input, we stop
  1078 #ifdef _LP64
  1079   // split_if_with_blocks from splitting a block because we could not move around
       
  1080   // the FastLockNode.
       
  1081   for (DUIterator_Fast imax, i = region->fast_outs(imax); i < imax; i++) {
  1079   for (DUIterator_Fast imax, i = region->fast_outs(imax); i < imax; i++) {
  1082     Node* n = region->fast_out(i);
  1080     Node* n = region->fast_out(i);
  1083     if (n->is_Phi()) {
  1081     if (n->is_Phi()) {
  1084       for (DUIterator_Fast jmax, j = n->fast_outs(jmax); j < jmax; j++) {
  1082       for (DUIterator_Fast jmax, j = n->fast_outs(jmax); j < jmax; j++) {
  1085         Node* m = n->fast_out(j);
  1083         Node* m = n->fast_out(j);
  1086         if (m->is_FastLock())
       
  1087           return false;
       
  1088 #ifdef _LP64
       
  1089         if (m->Opcode() == Op_ConvI2L)
  1084         if (m->Opcode() == Op_ConvI2L)
  1090           return false;
  1085           return false;
  1091         if (m->is_CastII() && m->isa_CastII()->has_range_check()) {
  1086         if (m->is_CastII() && m->isa_CastII()->has_range_check()) {
  1092           return false;
  1087           return false;
  1093         }
  1088         }
       
  1089       }
       
  1090     }
       
  1091   }
  1094 #endif
  1092 #endif
  1095       }
       
  1096     }
       
  1097   }
       
  1098   return true;
  1093   return true;
  1099 }
  1094 }
  1100 
  1095 
  1101 
  1096 
  1102 //------------------------------place_near_use---------------------------------
  1097 //------------------------------place_near_use---------------------------------