diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationData.java @ 10602:b8fe1fe004ec

Truffle-DSL: fixed bugs in the generated polymorphic code generation.
author Christian Humer <christian.humer@gmail.com>
date Tue, 02 Jul 2013 19:21:59 +0200
parents 79041ab43660
children 6879565ee10b
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationData.java	Tue Jul 02 14:51:22 2013 +0200
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationData.java	Tue Jul 02 19:21:59 2013 +0200
@@ -107,7 +107,8 @@
             if (child == null) {
                 continue;
             }
-            if (!parameter.getTypeSystemType().isGeneric()) {
+            ActualParameter genericParameter = getNode().getGenericSpecialization().findParameter(parameter.getLocalName());
+            if (!parameter.getTypeSystemType().equals(genericParameter.getTypeSystemType())) {
                 return false;
             }
         }
@@ -223,6 +224,16 @@
         this.assumptions = assumptions;
     }
 
+    public SpecializationData findPreviousSpecialization() {
+        List<SpecializationData> specializations = node.getSpecializations();
+        for (int i = 0; i < specializations.size() - 1; i++) {
+            if (specializations.get(i) == this && i > 0) {
+                return specializations.get(i - 1);
+            }
+        }
+        return null;
+    }
+
     public SpecializationData findNextSpecialization() {
         List<SpecializationData> specializations = node.getSpecializations();
         for (int i = 0; i < specializations.size() - 1; i++) {