# HG changeset patch # User Doug Simon # Date 1405081317 -7200 # Node ID d8d90184ec6625ac6f68f977653974aa5211f57a # Parent b45bb90c0192cb0762f70e74e3cc6b00c92f1be1# Parent 6ce37ad3ea477e08f3f55c7df990a9b10bc37be3 Merge. diff -r b45bb90c0192 -r d8d90184ec66 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java Fri Jul 11 14:19:21 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java Fri Jul 11 14:21:57 2014 +0200 @@ -26,6 +26,9 @@ import com.oracle.graal.graph.*; import com.oracle.graal.nodes.extended.*; +/** + * Guard {@link PhiNode}s merge guard dependencies at control flow merges. + */ @NodeInfo(nameTemplate = "GuardPhi({i#values})", allowedUsageTypes = {InputType.Guard}) public class GuardPhiNode extends PhiNode implements GuardingNode { diff -r b45bb90c0192 -r d8d90184ec66 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java Fri Jul 11 14:19:21 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java Fri Jul 11 14:21:57 2014 +0200 @@ -28,7 +28,7 @@ import com.oracle.graal.nodes.extended.*; /** - * The {@code PhiNode} represents the merging of dataflow in the memory graph. + * Memory {@code PhiNode}s merge memory dependencies at control flow merges. */ @NodeInfo(nameTemplate = "MemoryPhi({i#values}) {p#locationIdentity/s}", allowedUsageTypes = {InputType.Memory}) public class MemoryPhiNode extends PhiNode implements MemoryNode { diff -r b45bb90c0192 -r d8d90184ec66 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java Fri Jul 11 14:19:21 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java Fri Jul 11 14:21:57 2014 +0200 @@ -27,7 +27,13 @@ import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodes.calc.*; -public abstract class PhiNode extends FloatingNode { +/** + * {@code PhiNode}s represent the merging of edges at a control flow merges ({@link MergeNode} or + * {@link LoopBeginNode}). For a {@link MergeNode}, the order of the values corresponds to the order + * of the ends. For {@link LoopBeginNode}s, the first value corresponds to the loop's predecessor, + * while the rest of the values correspond to the {@link LoopEndNode}s. + */ +public abstract class PhiNode extends FloatingNode implements Simplifiable { @Input(InputType.Association) private MergeNode merge; diff -r b45bb90c0192 -r d8d90184ec66 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java Fri Jul 11 14:19:21 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java Fri Jul 11 14:21:57 2014 +0200 @@ -28,8 +28,7 @@ import com.oracle.graal.nodes.type.*; /** - * The {@code PhiNode} represents the merging of dataflow in the graph. It refers to a merge and a - * variable. + * Value {@link PhiNode}s merge data flow values at control flow merges. */ @NodeInfo(nameTemplate = "ValuePhi({i#values})") public class ValuePhiNode extends PhiNode implements Simplifiable { diff -r b45bb90c0192 -r d8d90184ec66 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 Fri Jul 11 14:19:21 2014 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Fri Jul 11 14:21:57 2014 +0200 @@ -202,7 +202,7 @@ } StructuredGraph inlineGraph = replacements.getMethodSubstitution(methodCallTargetNode.targetMethod()); - if (inlineGraph == null && canBeInlined(methodCallTargetNode)) { + if (inlineGraph == null && !methodCallTargetNode.targetMethod().isNative() && methodCallTargetNode.targetMethod().canBeInlined()) { inlineGraph = parseGraph(methodCallTargetNode.targetMethod(), methodCallTargetNode.arguments(), assumptions, phaseContext, false); } @@ -242,10 +242,6 @@ } } - private static boolean canBeInlined(MethodCallTargetNode methodCallTargetNode) { - return !methodCallTargetNode.targetMethod().isNative() && methodCallTargetNode.targetMethod().getAnnotation(TruffleCallBoundary.class) == null; - } - private StructuredGraph parseGraph(final ResolvedJavaMethod targetMethod, final NodeInputList arguments, final Assumptions assumptions, final PhaseContext phaseContext, boolean ignoreSlowPath) {