Mercurial > hg > truffle
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java @ 11445:5fbd1ba4a5f3
Truffle-DSL: execute evaluated methods can now be declared using any type in the typesystem as parameters.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Wed, 28 Aug 2013 18:45:32 +0200 |
parents | b33783cbd8ce |
children | e6645c18d154 |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Wed Aug 28 18:18:40 2013 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Wed Aug 28 18:45:32 2013 +0200 @@ -1765,9 +1765,15 @@ } } + // execute names are enforced no cast + String[] executeParameterNames = new String[executeParameters.size()]; + for (int i = 0; i < executeParameterNames.length; i++) { + executeParameterNames[i] = valueName(executeParameters.get(i)); + } + builder.tree(createExecuteChildren(builder, executable, specialization, executeParameters, null, true)); - CodeTree primaryExecuteCall = createTemplateMethodCall(builder, null, executable, castExecutable, null); + CodeTree primaryExecuteCall = createTemplateMethodCall(builder, null, executable, castExecutable, null, executeParameterNames); if (needsTry) { if (!returnVoid) { builder.declaration(primaryType.getPrimitiveType(), "value"); @@ -1858,6 +1864,7 @@ ActualParameter sourceParameter = sourceExecutable.findParameter(targetParameter.getLocalName()); String targetVariableName = valueName(targetParameter); + CodeTree executionExpression = null; if ((sourceParameter != null && cast) || sourceParameter != null) { TypeData sourceType = sourceParameter.getTypeSystemType(); @@ -1867,7 +1874,7 @@ } builder.startStatement(); builder.type(targetParameter.getType()).string(" "); - builder.string(valueName(targetParameter)).string(" = "); + builder.string(targetVariableName).string(" = "); builder.tree(CodeTreeBuilder.singleString(valueNameEvaluated(targetParameter))); builder.end(); continue; @@ -1902,10 +1909,6 @@ cast = true; } - if (specialization.isGeneric() && unexpected) { - throw new AssertionError("Generic has unexpected parameters. " + specialization.toString()); - } - builder.startStatement(); if (!shortCircuit) {