Mercurial > hg > graal-jvmci-8
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/ExecutableTypeMethodParser.java @ 18776:c0fb70634640
Truffle-DSL: support for frame types Frame, MaterializedFrame. Added validation for frame type consistency. Some refactorings along the way.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Mon, 05 Jan 2015 01:31:08 +0100 |
parents | a069a87b9a02 |
children | 906367e494ca |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/ExecutableTypeMethodParser.java Mon Jan 05 01:31:08 2015 +0100 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/ExecutableTypeMethodParser.java Mon Jan 05 01:31:08 2015 +0100 @@ -35,8 +35,11 @@ public class ExecutableTypeMethodParser extends NodeMethodParser<ExecutableTypeData> { - public ExecutableTypeMethodParser(ProcessorContext context, NodeData node) { + private final List<TypeMirror> frameTypes; + + public ExecutableTypeMethodParser(ProcessorContext context, NodeData node, List<TypeMirror> frameTypes) { super(context, node); + this.frameTypes = frameTypes; setParseNullOnError(false); getParser().setEmitErrors(false); getParser().setUseVarArgs(true); @@ -48,8 +51,9 @@ List<ParameterSpec> requiredSpecs = new ArrayList<>(spec.getRequired()); spec.getRequired().clear(); - List<TypeMirror> allowedTypes = getNode().getTypeSystem().getPrimitiveTypeMirrors(); - Set<String> allowedIdentifiers = getNode().getTypeSystem().getTypeIdentifiers(); + TypeSystemData typeSystem = getNode().getTypeSystem(); + List<TypeMirror> allowedTypes = typeSystem.getPrimitiveTypeMirrors(); + Set<String> allowedIdentifiers = typeSystem.getTypeIdentifiers(); for (ParameterSpec originalSpec : requiredSpecs) { spec.addRequired(new ParameterSpec(originalSpec, allowedTypes, allowedIdentifiers)); } @@ -64,6 +68,11 @@ } @Override + protected void addDefaultFrame(MethodSpec methodSpec) { + methodSpec.addOptional(new ParameterSpec("frame", frameTypes)); + } + + @Override protected List<TypeMirror> nodeTypeMirrors(NodeData nodeData) { return getNode().getTypeSystem().getPrimitiveTypeMirrors(); }