283 unswitches++; 284 } 285 286 public int getInversionCount() { 287 return inversionCount; 288 } 289 290 public void setInversionCount(int count) { 291 inversionCount = count; 292 } 293 294 @Override 295 public void simplify(SimplifierTool tool) { 296 canonicalizePhis(tool); 297 } 298 299 public boolean isLoopExit(AbstractBeginNode begin) { 300 return begin instanceof LoopExitNode && ((LoopExitNode) begin).loopBegin() == this; 301 } 302 303 public void removeExits() { 304 for (LoopExitNode loopexit : loopExits().snapshot()) { 305 loopexit.removeProxies(); 306 FrameState loopStateAfter = loopexit.stateAfter(); 307 graph().replaceFixedWithFixed(loopexit, graph().add(new BeginNode())); 308 if (loopStateAfter != null) { 309 GraphUtil.tryKillUnused(loopStateAfter); 310 } 311 } 312 } 313 314 public GuardingNode getOverflowGuard() { 315 return overflowGuard; 316 } 317 318 public void setOverflowGuard(GuardingNode overflowGuard) { 319 updateUsagesInterface(this.overflowGuard, overflowGuard); 320 this.overflowGuard = overflowGuard; 321 } 322 | 283 unswitches++; 284 } 285 286 public int getInversionCount() { 287 return inversionCount; 288 } 289 290 public void setInversionCount(int count) { 291 inversionCount = count; 292 } 293 294 @Override 295 public void simplify(SimplifierTool tool) { 296 canonicalizePhis(tool); 297 } 298 299 public boolean isLoopExit(AbstractBeginNode begin) { 300 return begin instanceof LoopExitNode && ((LoopExitNode) begin).loopBegin() == this; 301 } 302 303 public LoopExitNode getSingleLoopExit() { 304 assert loopExits().count() == 1; 305 return loopExits().first(); 306 } 307 308 public LoopEndNode getSingleLoopEnd() { 309 assert loopEnds().count() == 1; 310 return loopEnds().first(); 311 } 312 313 public void removeExits() { 314 for (LoopExitNode loopexit : loopExits().snapshot()) { 315 loopexit.removeProxies(); 316 FrameState loopStateAfter = loopexit.stateAfter(); 317 graph().replaceFixedWithFixed(loopexit, graph().add(new BeginNode())); 318 if (loopStateAfter != null) { 319 GraphUtil.tryKillUnused(loopStateAfter); 320 } 321 } 322 } 323 324 public GuardingNode getOverflowGuard() { 325 return overflowGuard; 326 } 327 328 public void setOverflowGuard(GuardingNode overflowGuard) { 329 updateUsagesInterface(this.overflowGuard, overflowGuard); 330 this.overflowGuard = overflowGuard; 331 } 332 |