Mercurial > hg > graal-compiler
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java @ 20984:6361fa2e3321
Truffle-DSL: further fixes for polymorphic execute signatures.
author | Christian Humer <christian.humer@oracle.com> |
---|---|
date | Wed, 15 Apr 2015 21:13:43 +0200 |
parents | 476374f3fe9a |
children |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java Wed Apr 15 21:35:51 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java Wed Apr 15 21:13:43 2015 +0200 @@ -153,6 +153,14 @@ newParameter.setMethod(this); } + public Iterable<Parameter> getDynamicParameters() { + return new FilteredIterable<>(getParameters(), new Predicate<Parameter>() { + public boolean evaluate(Parameter value) { + return !value.getSpecification().isLocal() && !value.getSpecification().isAnnotated(); + } + }); + } + public Iterable<Parameter> getSignatureParameters() { return new FilteredIterable<>(getParameters(), new Predicate<Parameter>() { public boolean evaluate(Parameter value) { @@ -291,8 +299,8 @@ } public int compareBySignature(TemplateMethod compareMethod) { - List<TypeMirror> signature1 = getSignatureTypes(this); - List<TypeMirror> signature2 = getSignatureTypes(compareMethod); + List<TypeMirror> signature1 = getDynamicTypes(); + List<TypeMirror> signature2 = compareMethod.getDynamicTypes(); int result = 0; for (int i = 0; i < Math.max(signature1.size(), signature2.size()); i++) { @@ -307,9 +315,9 @@ return result; } - public static List<TypeMirror> getSignatureTypes(TemplateMethod method) { + public List<TypeMirror> getDynamicTypes() { List<TypeMirror> types = new ArrayList<>(); - for (Parameter param : method.getSignatureParameters()) { + for (Parameter param : getDynamicParameters()) { types.add(param.getType()); } return types;