< 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]: graal
*** 22,40 ****
--- 22,43 ----
*/
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,156 ****
* 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) {
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);
}
@SuppressWarnings("try")
protected void prepareGraph(String snippet, boolean iterativeEscapeAnalysis) {
ResolvedJavaMethod method = getResolvedJavaMethod(snippet);
--- 140,165 ----
* 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(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 >