changeset 19769:e773cc48d3e8

Truffle-DSL: make specialization types mergable with other specialization types.
author Christian Humer <christian.humer@gmail.com>
date Wed, 11 Mar 2015 11:30:20 +0100
parents 8caabd6cf363
children 7108d2319169
files graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/MergeSpecializationsTest.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java
diffstat 2 files changed, 15 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/MergeSpecializationsTest.java	Tue Mar 10 21:13:07 2015 +0100
+++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/MergeSpecializationsTest.java	Wed Mar 11 11:30:20 2015 +0100
@@ -84,27 +84,37 @@
 
     @Test
     public void testMultithreadedMergeInOrder() {
-        multithreadedMerge(TestNodeFactory.getInstance(), new Executions(1, 1L << 32, 1.0), 1, 2, 3);
+        for (int i = 0; i < 100; i++) {
+            multithreadedMerge(TestNodeFactory.getInstance(), new Executions(1, 1L << 32, 1.0), 1, 2, 3);
+        }
     }
 
     @Test
     public void testMultithreadedMergeReverse() {
-        multithreadedMerge(TestNodeFactory.getInstance(), new Executions(1.0, 1L << 32, 1), 3, 2, 1);
+        for (int i = 0; i < 100; i++) {
+            multithreadedMerge(TestNodeFactory.getInstance(), new Executions(1.0, 1L << 32, 1), 3, 2, 1);
+        }
     }
 
     @Test
     public void testMultithreadedMergeCachedInOrder() {
-        multithreadedMerge(TestCachedNodeFactory.getInstance(), new Executions(1, 1L << 32, 1.0), 1, 2, 3);
+        for (int i = 0; i < 100; i++) {
+            multithreadedMerge(TestCachedNodeFactory.getInstance(), new Executions(1, 1L << 32, 1.0), 1, 2, 3);
+        }
     }
 
     @Test
     public void testMultithreadedMergeCachedTwoEntries() {
-        multithreadedMerge(TestCachedNodeFactory.getInstance(), new Executions(1, 2, 1.0), 1, 1, 3);
+        for (int i = 0; i < 100; i++) {
+            multithreadedMerge(TestCachedNodeFactory.getInstance(), new Executions(1, 2, 1.0), 1, 1, 3);
+        }
     }
 
     @Test
     public void testMultithreadedMergeCachedThreeEntries() {
-        multithreadedMerge(TestCachedNodeFactory.getInstance(), new Executions(1, 2, 3), 1, 1, 1);
+        for (int i = 0; i < 100; i++) {
+            multithreadedMerge(TestCachedNodeFactory.getInstance(), new Executions(1, 2, 3), 1, 1, 1);
+        }
     }
 
     private static <T extends ValueNode> void multithreadedMerge(NodeFactory<T> factory, final Executions executions, int... order) {
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java	Tue Mar 10 21:13:07 2015 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java	Wed Mar 11 11:30:20 2015 +0100
@@ -517,9 +517,7 @@
             }
         };
 
-        builder.startIf().string("isSame(other)").end().startBlock();
         builder.tree(createGuardAndCast(group, typeSystem.getGenericTypeData(), currentLocals, executionFactory));
-        builder.end();
         builder.returnFalse();
         return method;
     }