Mercurial > hg > graal-compiler
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);