changeset 13532:85b485b1e8e1

Truffle-DSL: removed support for implicit parameters. not needed anymore.
author Christian Humer <christian.humer@gmail.com>
date Tue, 07 Jan 2014 20:06:27 +0100
parents 1f870eaf1e96
children b466199f19e1
files graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeMethodParser.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationData.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/template/ActualParameter.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/template/TemplateMethodParser.java
diffstat 5 files changed, 24 insertions(+), 52 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java	Tue Jan 07 20:05:55 2014 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java	Tue Jan 07 20:06:27 2014 +0100
@@ -125,7 +125,7 @@
         }
     }
 
-    private void addInternalValueParameterNames(CodeTreeBuilder builder, TemplateMethod source, TemplateMethod specialization, String unexpectedValueName, boolean forceFrame, boolean includeImplicit,
+    private void addInternalValueParameterNames(CodeTreeBuilder builder, TemplateMethod source, TemplateMethod specialization, String unexpectedValueName, boolean forceFrame,
                     Map<String, String> customNames) {
         if (forceFrame && specialization.getSpecification().findParameterSpec("frame") != null) {
             builder.string("frameValue");
@@ -136,9 +136,6 @@
                 continue;
             }
 
-            if (!includeImplicit && (parameter.isImplicit())) {
-                continue;
-            }
             if (parameter.getSpecification().isLocal()) {
                 continue;
             }
@@ -240,11 +237,6 @@
                 valueParameter = targetParameter;
             }
             TypeMirror targetType = targetParameter.getType();
-
-            if (targetParameter.isImplicit() || valueParameter.isImplicit()) {
-                continue;
-            }
-
             TypeMirror valueType = null;
             if (valueParameter != null) {
                 valueType = valueParameter.getType();
@@ -342,7 +334,7 @@
         builder.startThrow().startNew(getContext().getType(UnsupportedOperationException.class));
         builder.startCall("createInfo0");
         builder.doubleQuote("Unsupported values");
-        addInternalValueParameterNames(builder, current, current, null, false, true, null);
+        addInternalValueParameterNames(builder, current, current, null, false, null);
         builder.end().end().end();
     }
 
@@ -1284,7 +1276,7 @@
             }
 
             builder.startStatement().string("String message = ").startCall("createInfo0").string("reason");
-            addInternalValueParameterNames(builder, node.getGenericSpecialization(), node.getGenericSpecialization(), null, false, true, null);
+            addInternalValueParameterNames(builder, node.getGenericSpecialization(), node.getGenericSpecialization(), null, false, null);
             builder.end().end();
 
             final String currentNodeVar = currentNode;
@@ -1749,7 +1741,7 @@
             }
             if (current.isGeneric()) {
                 builder.startReturn().tree(replace).string(".").startCall(EXECUTE_GENERIC_NAME);
-                addInternalValueParameterNames(builder, source, current, null, current.getNode().needsFrame(getContext()), true, null);
+                addInternalValueParameterNames(builder, source, current, null, current.getNode().needsFrame(getContext()), null);
                 builder.end().end();
             } else if (current.getMethod() == null) {
                 if (replaceCall != null) {
@@ -1808,7 +1800,7 @@
 
             builder.startReturn();
             builder.startCall("currentCopy.next0", EXECUTE_POLYMORPHIC_NAME);
-            addInternalValueParameterNames(builder, node.getGenericSpecialization(), node.getGenericSpecialization(), null, true, true, null);
+            addInternalValueParameterNames(builder, node.getGenericSpecialization(), node.getGenericSpecialization(), null, true, null);
             builder.end();
             builder.end();
 
@@ -2270,7 +2262,7 @@
 
             CodeTreeBuilder execute = new CodeTreeBuilder(builder);
             execute.startCall("next0", EXECUTE_POLYMORPHIC_NAME);
-            addInternalValueParameterNames(execute, specialization, polymorphic, param.getLocalName(), true, true, null);
+            addInternalValueParameterNames(execute, specialization, polymorphic, param.getLocalName(), true, null);
             execute.end();
 
             TypeData sourceType = polymorphic.getReturnType().getTypeSystemType();
@@ -2404,7 +2396,7 @@
             CodeTreeBuilder specializeCall = new CodeTreeBuilder(parent);
             specializeCall.startCall(EXECUTE_SPECIALIZE_NAME);
             specializeCall.string(String.valueOf(node.getSpecializations().indexOf(current)));
-            addInternalValueParameterNames(specializeCall, generic, node.getGenericSpecialization(), exceptionParam != null ? exceptionParam.getLocalName() : null, true, true, null);
+            addInternalValueParameterNames(specializeCall, generic, node.getGenericSpecialization(), exceptionParam != null ? exceptionParam.getLocalName() : null, true, null);
             specializeCall.doubleQuote(reason);
             specializeCall.end().end();
 
@@ -2683,7 +2675,7 @@
             } else {
                 CodeTreeBuilder elseBuilder = new CodeTreeBuilder(builder);
                 elseBuilder.startReturn().startCall("this.next0", EXECUTE_POLYMORPHIC_NAME);
-                addInternalValueParameterNames(elseBuilder, polymorphic, polymorphic, null, true, true, null);
+                addInternalValueParameterNames(elseBuilder, polymorphic, polymorphic, null, true, null);
                 elseBuilder.end().end();
 
                 boolean forceElse = specialization.getExceptions().size() > 0;
@@ -2724,7 +2716,7 @@
             CodeTreeBuilder specializeCall = new CodeTreeBuilder(builder);
             specializeCall.startCall(EXECUTE_SPECIALIZE_NAME);
             specializeCall.string("0");
-            addInternalValueParameterNames(specializeCall, specialization, node.getGenericSpecialization(), null, true, true, null);
+            addInternalValueParameterNames(specializeCall, specialization, node.getGenericSpecialization(), null, true, null);
             specializeCall.startGroup().doubleQuote("Uninitialized polymorphic (").string(" + depth + ").doubleQuote("/" + node.getPolymorphicDepth() + ")").end();
             specializeCall.end().end();
 
@@ -2904,19 +2896,19 @@
             CodeTreeBuilder returnBuilder = new CodeTreeBuilder(parent);
             if (specialization.isPolymorphic()) {
                 returnBuilder.startCall("next0", EXECUTE_POLYMORPHIC_NAME);
-                addInternalValueParameterNames(returnBuilder, specialization, specialization, null, true, true, null);
+                addInternalValueParameterNames(returnBuilder, specialization, specialization, null, true, null);
                 returnBuilder.end();
             } else if (specialization.isUninitialized()) {
                 returnBuilder.startCall("super", EXECUTE_SPECIALIZE_NAME);
                 returnBuilder.string("0");
-                addInternalValueParameterNames(returnBuilder, specialization, specialization, null, true, true, null);
+                addInternalValueParameterNames(returnBuilder, specialization, specialization, null, true, null);
                 returnBuilder.doubleQuote("Uninitialized monomorphic");
                 returnBuilder.end();
             } else if (specialization.getMethod() == null && !node.needsRewrites(context)) {
                 emitEncounteredSynthetic(builder, specialization);
             } else if (specialization.isGeneric()) {
                 returnBuilder.startCall("super", EXECUTE_GENERIC_NAME);
-                addInternalValueParameterNames(returnBuilder, specialization, specialization, null, node.needsFrame(getContext()), true, null);
+                addInternalValueParameterNames(returnBuilder, specialization, specialization, null, node.needsFrame(getContext()), null);
                 returnBuilder.end();
             } else {
                 returnBuilder.tree(createTemplateMethodCall(returnBuilder, null, specialization, specialization, null));
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeMethodParser.java	Tue Jan 07 20:05:55 2014 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeMethodParser.java	Tue Jan 07 20:06:27 2014 +0100
@@ -76,7 +76,6 @@
         MethodSpec methodSpec = new MethodSpec(createReturnParameterSpec());
 
         addDefaultFrame(methodSpec);
-        addDefaultImplicitThis(method, methodSpec);
         addDefaultFieldMethodSpec(methodSpec);
         addDefaultChildren(shortCircuitsEnabled, shortCircuitName, methodSpec);
 
@@ -117,17 +116,6 @@
         }
     }
 
-    protected void addDefaultImplicitThis(ExecutableElement method, MethodSpec methodSpec) {
-        if (method == null) {
-            return;
-        }
-        TypeMirror declaredType = Utils.findNearestEnclosingType(method).asType();
-
-        if (!method.getModifiers().contains(Modifier.STATIC) && !Utils.isAssignable(getContext(), declaredType, getContext().getTruffleTypes().getNode())) {
-            methodSpec.addImplicitRequiredType(getNode().getTemplateType().asType());
-        }
-    }
-
     private static String shortCircuitValueName(String valueName) {
         return "has" + Utils.firstLetterUpperCase(valueName);
     }
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationData.java	Tue Jan 07 20:05:55 2014 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationData.java	Tue Jan 07 20:06:27 2014 +0100
@@ -241,7 +241,7 @@
         if (getParameters().isEmpty() || !Utils.typeEquals(getParameters().get(0).getType(), frameType)) {
             ParameterSpec frameSpec = getSpecification().findParameterSpec("frame");
             if (frameSpec != null) {
-                getParameters().add(0, new ActualParameter(frameSpec, frameType, -1, -1, false));
+                getParameters().add(0, new ActualParameter(frameSpec, frameType, -1, -1));
             }
         }
     }
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/template/ActualParameter.java	Tue Jan 07 20:05:55 2014 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/template/ActualParameter.java	Tue Jan 07 20:06:27 2014 +0100
@@ -35,32 +35,30 @@
     private final String localName;
     private final int specificationVarArgsIndex;
     private final int typeVarArgsIndex;
-    private final boolean implicit;
     private final TypeMirror actualType;
 
-    public ActualParameter(ParameterSpec specification, TypeMirror actualType, int specificationVarArgsIndex, int typeVarArgsIndex, boolean implicit) {
+    public ActualParameter(ParameterSpec specification, TypeMirror actualType, int specificationVarArgsIndex, int typeVarArgsIndex) {
         this.specification = specification;
         this.actualType = actualType;
         this.typeSystemType = null;
 
         this.specificationVarArgsIndex = specificationVarArgsIndex;
-        this.implicit = implicit;
 
         String valueName = specification.getName() + "Value";
         if (specificationVarArgsIndex > -1) {
-            valueName += "_" + specificationVarArgsIndex;
+            valueName += specificationVarArgsIndex;
         }
         this.typeVarArgsIndex = typeVarArgsIndex;
         this.localName = valueName;
     }
 
-    public ActualParameter(ParameterSpec specification, TypeData actualType, int specificationIndex, int varArgsIndex, boolean implicit) {
-        this(specification, actualType.getPrimitiveType(), specificationIndex, varArgsIndex, implicit);
+    public ActualParameter(ParameterSpec specification, TypeData actualType, int specificationIndex, int varArgsIndex) {
+        this(specification, actualType.getPrimitiveType(), specificationIndex, varArgsIndex);
         this.typeSystemType = actualType;
     }
 
     public ActualParameter(ActualParameter parameter, TypeData otherType) {
-        this(parameter.specification, otherType, parameter.specificationVarArgsIndex, parameter.typeVarArgsIndex, parameter.implicit);
+        this(parameter.specification, otherType, parameter.specificationVarArgsIndex, parameter.typeVarArgsIndex);
     }
 
     public ActualParameter(ActualParameter parameter) {
@@ -68,7 +66,6 @@
         this.actualType = parameter.actualType;
         this.typeSystemType = parameter.typeSystemType;
         this.specificationVarArgsIndex = parameter.specificationVarArgsIndex;
-        this.implicit = parameter.implicit;
         this.localName = parameter.localName;
         this.typeVarArgsIndex = parameter.typeVarArgsIndex;
     }
@@ -77,10 +74,6 @@
         return typeVarArgsIndex;
     }
 
-    public boolean isImplicit() {
-        return implicit;
-    }
-
     public int getSpecificationVarArgsIndex() {
         return specificationVarArgsIndex;
     }
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/template/TemplateMethodParser.java	Tue Jan 07 20:05:55 2014 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/template/TemplateMethodParser.java	Tue Jan 07 20:06:27 2014 +0100
@@ -151,7 +151,7 @@
 
     private E parseImpl(MethodSpec methodSpecification, String id, ExecutableElement method, AnnotationMirror annotation, TypeMirror returnType, List<TypeMirror> parameterTypes) {
         ParameterSpec returnTypeSpec = methodSpecification.getReturnType();
-        ActualParameter returnTypeMirror = matchParameter(returnTypeSpec, returnType, template, -1, -1, false);
+        ActualParameter returnTypeMirror = matchParameter(returnTypeSpec, returnType, template, -1, -1);
         if (returnTypeMirror == null) {
             if (emitErrors) {
                 E invalidMethod = create(new TemplateMethod(id, template, methodSpecification, method, annotation, returnTypeMirror, Collections.<ActualParameter> emptyList()), true);
@@ -248,7 +248,7 @@
             ParameterSpec specification = specifications.get(specIndex);
             for (int typeIndex = typeStartIndex; typeIndex < types.size(); typeIndex++) {
                 TypeMirror actualType = types.get(typeIndex);
-                ActualParameter optionalParam = matchParameter(specification, actualType, template, -1, -1, false);
+                ActualParameter optionalParam = matchParameter(specification, actualType, template, -1, -1);
                 if (optionalParam != null) {
                     parsedParams.add(optionalParam);
                     typeStartIndex = typeIndex + 1;
@@ -281,7 +281,6 @@
                 return null;
             }
 
-            boolean implicit = typeIndex < spec.getImplicitRequiredTypes().size();
             int typeVarArgsIndex = typeVarArgs ? typeIndex - types.size() + 1 : -1;
             int specVarArgsIndex = specVarArgs ? specificationIndex - specifications.size() + 1 : -1;
 
@@ -291,7 +290,7 @@
                 break;
             }
 
-            ActualParameter resolvedParameter = matchParameter(specification, actualType, template, specVarArgsIndex, typeVarArgsIndex, implicit);
+            ActualParameter resolvedParameter = matchParameter(specification, actualType, template, specVarArgsIndex, typeVarArgsIndex);
             if (resolvedParameter == null) {
                 return null;
             }
@@ -337,7 +336,7 @@
         }
     }
 
-    protected final ActualParameter matchParameter(ParameterSpec specification, TypeMirror mirror, Template originalTemplate, int specificationIndex, int varArgsIndex, boolean implicit) {
+    protected final ActualParameter matchParameter(ParameterSpec specification, TypeMirror mirror, Template originalTemplate, int specificationIndex, int varArgsIndex) {
         TypeMirror resolvedType = mirror;
         if (hasError(resolvedType)) {
             resolvedType = context.resolveNotYetCompiledType(mirror, originalTemplate);
@@ -349,9 +348,9 @@
 
         TypeData resolvedTypeData = getTypeSystem().findTypeData(resolvedType);
         if (resolvedTypeData != null) {
-            return new ActualParameter(specification, resolvedTypeData, specificationIndex, varArgsIndex, implicit);
+            return new ActualParameter(specification, resolvedTypeData, specificationIndex, varArgsIndex);
         } else {
-            return new ActualParameter(specification, resolvedType, specificationIndex, varArgsIndex, implicit);
+            return new ActualParameter(specification, resolvedType, specificationIndex, varArgsIndex);
         }
     }