diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java @ 20984:6361fa2e3321

Truffle-DSL: further fixes for polymorphic execute signatures.
author Christian Humer <christian.humer@oracle.com>
date Wed, 15 Apr 2015 21:13:43 +0200
parents 476374f3fe9a
children
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java	Wed Apr 15 21:35:51 2015 +0200
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java	Wed Apr 15 21:13:43 2015 +0200
@@ -153,6 +153,14 @@
         newParameter.setMethod(this);
     }
 
+    public Iterable<Parameter> getDynamicParameters() {
+        return new FilteredIterable<>(getParameters(), new Predicate<Parameter>() {
+            public boolean evaluate(Parameter value) {
+                return !value.getSpecification().isLocal() && !value.getSpecification().isAnnotated();
+            }
+        });
+    }
+
     public Iterable<Parameter> getSignatureParameters() {
         return new FilteredIterable<>(getParameters(), new Predicate<Parameter>() {
             public boolean evaluate(Parameter value) {
@@ -291,8 +299,8 @@
     }
 
     public int compareBySignature(TemplateMethod compareMethod) {
-        List<TypeMirror> signature1 = getSignatureTypes(this);
-        List<TypeMirror> signature2 = getSignatureTypes(compareMethod);
+        List<TypeMirror> signature1 = getDynamicTypes();
+        List<TypeMirror> signature2 = compareMethod.getDynamicTypes();
 
         int result = 0;
         for (int i = 0; i < Math.max(signature1.size(), signature2.size()); i++) {
@@ -307,9 +315,9 @@
         return result;
     }
 
-    public static List<TypeMirror> getSignatureTypes(TemplateMethod method) {
+    public List<TypeMirror> getDynamicTypes() {
         List<TypeMirror> types = new ArrayList<>();
-        for (Parameter param : method.getSignatureParameters()) {
+        for (Parameter param : getDynamicParameters()) {
             types.add(param.getType());
         }
         return types;