Mercurial > hg > truffle
comparison graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java @ 18995:a2cb19764970
Rename MergeNode to AbstractMergeNode.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Wed, 28 Jan 2015 01:04:20 +0100 |
parents | 8b4ef818169c |
children | 46c2e70d54ad |
comparison
equal
deleted
inserted
replaced
18994:8b4ef818169c | 18995:a2cb19764970 |
---|---|
342 } else { | 342 } else { |
343 ArrayList<ReturnNode> returnDuplicates = new ArrayList<>(returnNodes.size()); | 343 ArrayList<ReturnNode> returnDuplicates = new ArrayList<>(returnNodes.size()); |
344 for (ReturnNode returnNode : returnNodes) { | 344 for (ReturnNode returnNode : returnNodes) { |
345 returnDuplicates.add((ReturnNode) duplicates.get(returnNode)); | 345 returnDuplicates.add((ReturnNode) duplicates.get(returnNode)); |
346 } | 346 } |
347 MergeNode merge = graph.add(new MergeNode()); | 347 AbstractMergeNode merge = graph.add(new AbstractMergeNode()); |
348 merge.setStateAfter(stateAfter); | 348 merge.setStateAfter(stateAfter); |
349 ValueNode returnValue = mergeReturns(merge, returnDuplicates, canonicalizedNodes); | 349 ValueNode returnValue = mergeReturns(merge, returnDuplicates, canonicalizedNodes); |
350 invokeNode.replaceAtUsages(returnValue); | 350 invokeNode.replaceAtUsages(returnValue); |
351 merge.setNext(n); | 351 merge.setNext(n); |
352 } | 352 } |
446 if (usage instanceof FrameState) { | 446 if (usage instanceof FrameState) { |
447 workList.add(usage); | 447 workList.add(usage); |
448 } else { | 448 } else { |
449 StateSplit stateSplit = (StateSplit) usage; | 449 StateSplit stateSplit = (StateSplit) usage; |
450 FixedNode fixedStateSplit = stateSplit.asNode(); | 450 FixedNode fixedStateSplit = stateSplit.asNode(); |
451 if (fixedStateSplit instanceof MergeNode) { | 451 if (fixedStateSplit instanceof AbstractMergeNode) { |
452 MergeNode merge = (MergeNode) fixedStateSplit; | 452 AbstractMergeNode merge = (AbstractMergeNode) fixedStateSplit; |
453 while (merge.isAlive()) { | 453 while (merge.isAlive()) { |
454 AbstractEndNode end = merge.forwardEnds().first(); | 454 AbstractEndNode end = merge.forwardEnds().first(); |
455 DeoptimizeNode deoptimizeNode = graph.add(new DeoptimizeNode(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.NotCompiledExceptionHandler)); | 455 DeoptimizeNode deoptimizeNode = graph.add(new DeoptimizeNode(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.NotCompiledExceptionHandler)); |
456 end.replaceAtPredecessor(deoptimizeNode); | 456 end.replaceAtPredecessor(deoptimizeNode); |
457 GraphUtil.killCFG(end); | 457 GraphUtil.killCFG(end); |
467 } | 467 } |
468 } | 468 } |
469 } | 469 } |
470 } | 470 } |
471 | 471 |
472 public static ValueNode mergeReturns(MergeNode merge, List<? extends ReturnNode> returnNodes, List<Node> canonicalizedNodes) { | 472 public static ValueNode mergeReturns(AbstractMergeNode merge, List<? extends ReturnNode> returnNodes, List<Node> canonicalizedNodes) { |
473 PhiNode returnValuePhi = null; | 473 PhiNode returnValuePhi = null; |
474 | 474 |
475 for (ReturnNode returnNode : returnNodes) { | 475 for (ReturnNode returnNode : returnNodes) { |
476 // create and wire up a new EndNode | 476 // create and wire up a new EndNode |
477 EndNode endNode = merge.graph().add(new EndNode()); | 477 EndNode endNode = merge.graph().add(new EndNode()); |