diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/ExecutableTypeMethodParser.java @ 16820:0370880ac9ce

Truffle-DSL: better caching for type checks.
author Christian Humer <christian.humer@gmail.com>
date Wed, 13 Aug 2014 18:06:26 +0200
parents 23415229349b
children 2db61eddcb97
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/ExecutableTypeMethodParser.java	Wed Aug 13 18:06:18 2014 +0200
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/ExecutableTypeMethodParser.java	Wed Aug 13 18:06:26 2014 +0200
@@ -47,20 +47,31 @@
         spec.getRequired().clear();
 
         List<TypeMirror> allowedTypes = getNode().getTypeSystem().getPrimitiveTypeMirrors();
+        Set<String> allowedIdentifiers = getNode().getTypeSystem().getTypeIdentifiers();
         for (ParameterSpec originalSpec : requiredSpecs) {
-            spec.addRequired(new ParameterSpec(originalSpec, allowedTypes));
+            spec.addRequired(new ParameterSpec(originalSpec, allowedTypes, allowedIdentifiers));
         }
         spec.setIgnoreAdditionalSpecifications(true);
         spec.setIgnoreAdditionalParameters(true);
         spec.setVariableRequiredParameters(true);
         // varargs
-        ParameterSpec otherParameters = new ParameterSpec("other", allowedTypes);
+        ParameterSpec otherParameters = new ParameterSpec("other", allowedTypes, allowedIdentifiers);
         otherParameters.setSignature(true);
         spec.addRequired(otherParameters);
         return spec;
     }
 
     @Override
+    protected List<TypeMirror> nodeTypeMirrors(NodeData nodeData) {
+        return getNode().getTypeSystem().getPrimitiveTypeMirrors();
+    }
+
+    @Override
+    protected Set<String> nodeTypeIdentifiers(NodeData nodeData) {
+        return getNode().getTypeSystem().getTypeIdentifiers();
+    }
+
+    @Override
     public final boolean isParsable(ExecutableElement method) {
         if (method.getModifiers().contains(Modifier.STATIC)) {
             return false;
@@ -71,13 +82,6 @@
     }
 
     @Override
-    protected List<TypeMirror> nodeTypeMirrors(NodeData nodeData) {
-        List<TypeMirror> types = new ArrayList<>(getNode().getTypeSystem().getPrimitiveTypeMirrors());
-        types.add(getNode().getTypeSystem().getVoidType().getPrimitiveType());
-        return types;
-    }
-
-    @Override
     public ExecutableTypeData create(TemplateMethod method, boolean invalid) {
         TypeData resolvedType = method.getReturnType().getTypeSystemType();
         return new ExecutableTypeData(method, method.getMethod(), getNode().getTypeSystem(), resolvedType);