diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/template/ParameterSpec.java @ 13527:25ecb47a6d0e

Truffle-DSL: Added support for references to child arrays in @ShortCircuit; Introduced new layer NodeExecutionData to the implementation model which is in between NodeChildData and the actual parameters..
author Christian Humer <christian.humer@gmail.com>
date Tue, 07 Jan 2014 12:22:47 +0100
parents 79041ab43660
children b466199f19e1
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/template/ParameterSpec.java	Thu Dec 26 12:37:28 2013 -0800
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/template/ParameterSpec.java	Tue Jan 07 12:22:47 2014 +0100
@@ -27,44 +27,46 @@
 import javax.lang.model.type.*;
 
 import com.oracle.truffle.dsl.processor.*;
-import com.oracle.truffle.dsl.processor.node.NodeChildData.*;
-import com.oracle.truffle.dsl.processor.template.MethodSpec.*;
+import com.oracle.truffle.dsl.processor.node.*;
+import com.oracle.truffle.dsl.processor.template.MethodSpec.TypeDef;
 
 public class ParameterSpec {
 
     private final String name;
     private final List<TypeMirror> allowedTypes;
 
-    /** Cardinality one or multiple. */
-    private Cardinality cardinality = Cardinality.ONE;
-    /** Type is part of the method signature. Relevant for comparisons. */
-    private boolean signature;
-    /** Type must be indexed when parsing. */
-    private boolean indexed;
     /** Type is bound to local final variable. */
     private boolean local;
 
+    /** Optional bound execution of node. */
+    private NodeExecutionData execution;
     private TypeDef typeDefinition;
 
-    public ParameterSpec(String name, TypeMirror... allowedTypes) {
-        this(name, Arrays.asList(allowedTypes));
-    }
-
     public ParameterSpec(String name, List<TypeMirror> allowedTypes) {
         this.name = name;
         this.allowedTypes = allowedTypes;
     }
 
+    public ParameterSpec(String name, TypeMirror type) {
+        this(name, Arrays.asList(type));
+    }
+
     public ParameterSpec(ParameterSpec o, List<TypeMirror> allowedTypes) {
         this.name = o.name;
-        this.cardinality = o.cardinality;
-        this.signature = o.signature;
-        this.indexed = o.indexed;
         this.local = o.local;
         this.typeDefinition = o.typeDefinition;
+        this.execution = o.execution;
         this.allowedTypes = allowedTypes;
     }
 
+    public NodeExecutionData getExecution() {
+        return execution;
+    }
+
+    public void setExecution(NodeExecutionData executionData) {
+        this.execution = executionData;
+    }
+
     void setTypeDefinition(TypeDef typeDefinition) {
         this.typeDefinition = typeDefinition;
     }
@@ -73,42 +75,22 @@
         return typeDefinition;
     }
 
-    public void setSignature(boolean signature) {
-        this.signature = signature;
-    }
-
     public void setLocal(boolean local) {
         this.local = local;
     }
 
     public boolean isSignature() {
-        return signature;
+        return execution != null;
     }
 
     public boolean isLocal() {
         return local;
     }
 
-    public boolean isIndexed() {
-        return indexed;
-    }
-
-    public void setIndexed(boolean indexed) {
-        this.indexed = indexed;
-    }
-
-    public void setCardinality(Cardinality cardinality) {
-        this.cardinality = cardinality;
-    }
-
     public String getName() {
         return name;
     }
 
-    public Cardinality getCardinality() {
-        return cardinality;
-    }
-
     public List<TypeMirror> getAllowedTypes() {
         return allowedTypes;
     }