Mercurial > hg > graal-jvmci-8
comparison graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TemplateMethod.java @ 19282:ae81dd154fb6
Truffle-DSL: remove old DSL layout; Make new layout the default.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Thu, 22 Jan 2015 20:44:24 +0100 |
parents | a665483c3881 |
children | 08aa0372dad4 |
comparison
equal
deleted
inserted
replaced
19281:92880b0f7fed | 19282:ae81dd154fb6 |
---|---|
155 | 155 |
156 public List<Parameter> getParameters() { | 156 public List<Parameter> getParameters() { |
157 return parameters; | 157 return parameters; |
158 } | 158 } |
159 | 159 |
160 public List<Parameter> findParameters(ParameterSpec spec) { | |
161 List<Parameter> foundParameters = new ArrayList<>(); | |
162 for (Parameter param : getReturnTypeAndParameters()) { | |
163 if (param.getSpecification().getName().equals(spec.getName())) { | |
164 foundParameters.add(param); | |
165 } | |
166 } | |
167 return foundParameters; | |
168 } | |
169 | |
170 public Parameter findParameterOrDie(NodeExecutionData execution) { | 160 public Parameter findParameterOrDie(NodeExecutionData execution) { |
171 for (Parameter parameter : parameters) { | 161 for (Parameter parameter : parameters) { |
172 if (parameter.getSpecification().isSignature() && parameter.getSpecification().getExecution() == execution) { | 162 if (parameter.getSpecification().isSignature() && parameter.getSpecification().getExecution() == execution) { |
173 return parameter; | 163 return parameter; |
174 } | 164 } |
196 if (getReturnType() != null) { | 186 if (getReturnType() != null) { |
197 allParameters.add(getReturnType()); | 187 allParameters.add(getReturnType()); |
198 } | 188 } |
199 allParameters.addAll(getParameters()); | 189 allParameters.addAll(getParameters()); |
200 return Collections.unmodifiableList(allParameters); | 190 return Collections.unmodifiableList(allParameters); |
201 } | |
202 | |
203 public boolean canBeAccessedByInstanceOf(TypeMirror type) { | |
204 TypeMirror methodType = ElementUtils.findNearestEnclosingType(getMethod()).asType(); | |
205 return ElementUtils.isAssignable(type, methodType) || ElementUtils.isAssignable(methodType, type); | |
206 } | 191 } |
207 | 192 |
208 public ExecutableElement getMethod() { | 193 public ExecutableElement getMethod() { |
209 return method; | 194 return method; |
210 } | 195 } |
256 } | 241 } |
257 } | 242 } |
258 return signature; | 243 return signature; |
259 } | 244 } |
260 | 245 |
261 public Parameter getSignatureParameter(int searchIndex) { | |
262 int index = 0; | |
263 for (Parameter parameter : getParameters()) { | |
264 if (!parameter.getSpecification().isSignature()) { | |
265 continue; | |
266 } | |
267 if (index == searchIndex) { | |
268 return parameter; | |
269 } | |
270 index++; | |
271 } | |
272 return null; | |
273 } | |
274 | |
275 public void updateSignature(TypeSignature signature) { | 246 public void updateSignature(TypeSignature signature) { |
276 // TODO(CH): fails in normal usage - output ok though | 247 // TODO(CH): fails in normal usage - output ok though |
277 // assert signature.size() >= 1; | 248 // assert signature.size() >= 1; |
278 | 249 |
279 int signatureIndex = 0; | 250 int signatureIndex = 0; |
307 TypeElement enclosingType1 = ElementUtils.findNearestEnclosingType(getMethod()); | 278 TypeElement enclosingType1 = ElementUtils.findNearestEnclosingType(getMethod()); |
308 TypeElement enclosingType2 = ElementUtils.findNearestEnclosingType(o.getMethod()); | 279 TypeElement enclosingType2 = ElementUtils.findNearestEnclosingType(o.getMethod()); |
309 compare = enclosingType1.getQualifiedName().toString().compareTo(enclosingType2.getQualifiedName().toString()); | 280 compare = enclosingType1.getQualifiedName().toString().compareTo(enclosingType2.getQualifiedName().toString()); |
310 } | 281 } |
311 return compare; | 282 return compare; |
312 } | |
313 | |
314 public List<Parameter> getParametersAfter(Parameter genericParameter) { | |
315 boolean found = false; | |
316 List<Parameter> foundParameters = new ArrayList<>(); | |
317 for (Parameter param : getParameters()) { | |
318 if (param.getLocalName().equals(genericParameter.getLocalName())) { | |
319 found = true; | |
320 } else if (found) { | |
321 foundParameters.add(param); | |
322 } | |
323 } | |
324 return foundParameters; | |
325 } | 283 } |
326 | 284 |
327 public int compareBySignature(TemplateMethod compareMethod) { | 285 public int compareBySignature(TemplateMethod compareMethod) { |
328 final TypeSystemData typeSystem = getTemplate().getTypeSystem(); | 286 final TypeSystemData typeSystem = getTemplate().getTypeSystem(); |
329 if (typeSystem != compareMethod.getTemplate().getTypeSystem()) { | 287 if (typeSystem != compareMethod.getTemplate().getTypeSystem()) { |