< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ea/EATestBase.java
Print this page
rev 52509 : [mq]: graal2
@@ -22,19 +22,22 @@
*/
package org.graalvm.compiler.core.test.ea;
+import static org.graalvm.compiler.graph.iterators.NodePredicates.isA;
+
import java.util.List;
import org.graalvm.compiler.core.test.GraalCompilerTest;
import org.graalvm.compiler.debug.DebugContext;
import org.graalvm.compiler.nodes.ReturnNode;
import org.graalvm.compiler.nodes.StructuredGraph;
import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions;
import org.graalvm.compiler.nodes.java.NewArrayNode;
import org.graalvm.compiler.nodes.java.NewInstanceNode;
+import org.graalvm.compiler.nodes.virtual.AllocatedObjectNode;
import org.graalvm.compiler.nodes.virtual.CommitAllocationNode;
import org.graalvm.compiler.phases.common.CanonicalizerPhase;
import org.graalvm.compiler.phases.common.DeadCodeEliminationPhase;
import org.graalvm.compiler.phases.common.inlining.InliningPhase;
import org.graalvm.compiler.phases.tiers.HighTierContext;
@@ -137,20 +140,26 @@
* given constant return value
* @param iterativeEscapeAnalysis true if escape analysis should be run for more than one
* iteration
*/
protected void testEscapeAnalysis(String snippet, JavaConstant expectedConstantResult, boolean iterativeEscapeAnalysis) {
+ testEscapeAnalysis(snippet, expectedConstantResult, iterativeEscapeAnalysis, 0);
+ }
+
+ protected void testEscapeAnalysis(String snippet, JavaConstant expectedConstantResult, boolean iterativeEscapeAnalysis, int expectedAllocationCount) {
prepareGraph(snippet, iterativeEscapeAnalysis);
if (expectedConstantResult != null) {
for (ReturnNode returnNode : returnNodes) {
Assert.assertTrue(returnNode.result().toString(), returnNode.result().isConstant());
Assert.assertEquals(expectedConstantResult, returnNode.result().asConstant());
}
}
- int newInstanceCount = graph.getNodes().filter(NewInstanceNode.class).count() + graph.getNodes().filter(NewArrayNode.class).count() +
- graph.getNodes().filter(CommitAllocationNode.class).count();
- Assert.assertEquals(0, newInstanceCount);
+ int newInstanceCount = graph.getNodes().filter(isA(NewInstanceNode.class).or(NewArrayNode.class).or(AllocatedObjectNode.class)).count();
+ Assert.assertEquals("Expected allocation count does not match", expectedAllocationCount, newInstanceCount);
+ if (expectedAllocationCount == 0) {
+ Assert.assertTrue("Unexpected CommitAllocationNode", graph.getNodes().filter(CommitAllocationNode.class).isEmpty());
+ }
}
@SuppressWarnings("try")
protected void prepareGraph(String snippet, boolean iterativeEscapeAnalysis) {
ResolvedJavaMethod method = getResolvedJavaMethod(snippet);
< prev index next >