# HG changeset patch # User Thomas Wuerthinger # Date 1424645675 -3600 # Node ID c99fb69e93c74a609e8cd1ea74343901f19abd53 # Parent 353669a8428748d4e4a3b1aa5d0901931fb74b8c Perform deoptimize to guard conversion for fast partial evaluation. diff -r 353669a84287 -r c99fb69e93c7 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BranchProbabilityNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BranchProbabilityNode.java Sun Feb 22 23:44:37 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BranchProbabilityNode.java Sun Feb 22 23:54:35 2015 +0100 @@ -100,6 +100,10 @@ couldSet = true; ifNodeUsages.setTrueSuccessorProbability(probabilityToSet); } + + if (!couldSet && node.usages().filter(FixedGuardNode.class).isNotEmpty()) { + couldSet = true; + } } } } diff -r 353669a84287 -r c99fb69e93c7 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Sun Feb 22 23:44:37 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Sun Feb 22 23:54:35 2015 +0100 @@ -253,6 +253,9 @@ new GraphBuilderPhase.Instance(providers.getMetaAccess(), providers.getStampProvider(), this.snippetReflection, providers.getConstantReflection(), newConfig, TruffleCompilerImpl.Optimizations).apply(graph); Debug.dump(graph, "After FastPE"); + // Perform deoptimize to guard conversion. + new ConvertDeoptimizeToGuardPhase().apply(graph, tierContext); + for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.TYPE)) { Class macroSubstitution = providers.getReplacements().getMacroSubstitution(methodCallTargetNode.targetMethod()); if (macroSubstitution != null) {