changeset 16591:86eee6794713

BitScanReverseNode stamp tests should only be used with BitScanReverseNode
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Wed, 23 Jul 2014 17:39:26 -0700
parents c62c1e0060cc
children 8084d44c78d3
files graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.java
diffstat 1 files changed, 22 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.java	Wed Jul 23 17:36:15 2014 -0700
+++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.java	Wed Jul 23 17:39:26 2014 -0700
@@ -33,6 +33,7 @@
 import com.oracle.graal.phases.common.*;
 import com.oracle.graal.phases.common.inlining.*;
 import com.oracle.graal.phases.tiers.*;
+import com.oracle.graal.replacements.nodes.*;
 
 public class BitOpNodesTest extends GraalCompilerTest {
 
@@ -186,8 +187,10 @@
 
     @Test
     public void testScanReverseInt() {
-        ValueNode result = parseAndInline("scanReverseIntSnippet");
-        Assert.assertEquals(StampFactory.forInteger(Kind.Int, 16, 20), result.stamp());
+        ValueNode result = parseAndInline("scanReverseIntSnippet", BitScanReverseNode.class);
+        if (result != null) {
+            Assert.assertEquals(StampFactory.forInteger(Kind.Int, 16, 20), result.stamp());
+        }
     }
 
     public static int scanReverseLongConstantSnippet() {
@@ -208,8 +211,10 @@
 
     @Test
     public void testScanReverseLong() {
-        ValueNode result = parseAndInline("scanReverseLongSnippet");
-        Assert.assertEquals(StampFactory.forInteger(Kind.Int, 48, 64), result.stamp());
+        ValueNode result = parseAndInline("scanReverseLongSnippet", BitScanReverseNode.class);
+        if (result != null) {
+            Assert.assertEquals(StampFactory.forInteger(Kind.Int, 48, 64), result.stamp());
+        }
     }
 
     public static int scanReverseLongEmptySnippet(long v) {
@@ -220,11 +225,17 @@
 
     @Test
     public void testScanReverseLongEmpty() {
-        ValueNode result = parseAndInline("scanReverseLongEmptySnippet");
-        Assert.assertEquals(StampFactory.forInteger(Kind.Int, 24, 64), result.stamp());
+        ValueNode result = parseAndInline("scanReverseLongEmptySnippet", BitScanReverseNode.class);
+        if (result != null) {
+            Assert.assertEquals(StampFactory.forInteger(Kind.Int, 24, 64), result.stamp());
+        }
     }
 
     private ValueNode parseAndInline(String name) {
+        return parseAndInline(name, null);
+    }
+
+    private ValueNode parseAndInline(String name, Class<? extends ValueNode> requiredClass) {
         StructuredGraph graph = parse(name);
         HighTierContext context = new HighTierContext(getProviders(), new Assumptions(false), null, getDefaultGraphBuilderSuite(), OptimisticOptimizations.NONE);
         CanonicalizerPhase canonicalizer = new CanonicalizerPhase(true);
@@ -232,6 +243,11 @@
         new InliningPhase(canonicalizer).apply(graph, context);
         canonicalizer.apply(graph, context);
         Assert.assertEquals(1, graph.getNodes(ReturnNode.class).count());
+        if (requiredClass != null) {
+            if (graph.getNodes().filter(requiredClass).count() == 0) {
+                return null;
+            }
+        }
         return graph.getNodes(ReturnNode.class).first().result();
     }
 }