Mercurial > hg > graal-compiler
comparison graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java @ 8256:4dc7034317ec
Cleanup.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Wed, 13 Mar 2013 20:04:42 +0100 |
parents | 0905d796944a |
children | 89006c76f737 |
comparison
equal
deleted
inserted
replaced
8255:1384c39e2c53 | 8256:4dc7034317ec |
---|---|
288 SpecializationData specialization = specializations.get(0); | 288 SpecializationData specialization = specializations.get(0); |
289 GenericParser parser = new GenericParser(context, node); | 289 GenericParser parser = new GenericParser(context, node); |
290 MethodSpec specification = parser.createDefaultMethodSpec(specialization.getMethod(), null, null); | 290 MethodSpec specification = parser.createDefaultMethodSpec(specialization.getMethod(), null, null); |
291 | 291 |
292 ExecutableTypeData anyGenericReturnType = node.findAnyGenericExecutableType(context); | 292 ExecutableTypeData anyGenericReturnType = node.findAnyGenericExecutableType(context); |
293 if (anyGenericReturnType == null) { | 293 assert anyGenericReturnType != null; |
294 // TODO fail invalid executable type. should be validated by field. (assertion | |
295 // failure!?) | |
296 } | |
297 | 294 |
298 ActualParameter returnType = new ActualParameter(specification.getReturnType(), anyGenericReturnType.getType().getPrimitiveType(), 0, false); | 295 ActualParameter returnType = new ActualParameter(specification.getReturnType(), anyGenericReturnType.getType().getPrimitiveType(), 0, false); |
299 List<ActualParameter> parameters = new ArrayList<>(); | 296 List<ActualParameter> parameters = new ArrayList<>(); |
300 for (ActualParameter specializationParameter : specialization.getParameters()) { | 297 for (ActualParameter specializationParameter : specialization.getParameters()) { |
301 ParameterSpec parameterSpec = specification.findParameterSpec(specializationParameter.getSpecification().getName()); | 298 ParameterSpec parameterSpec = specification.findParameterSpec(specializationParameter.getSpecification().getName()); |
303 TypeMirror actualType; | 300 TypeMirror actualType; |
304 if (field == null) { | 301 if (field == null) { |
305 actualType = specializationParameter.getActualType(); | 302 actualType = specializationParameter.getActualType(); |
306 } else { | 303 } else { |
307 ExecutableTypeData paramType = field.getNodeData().findAnyGenericExecutableType(context); | 304 ExecutableTypeData paramType = field.getNodeData().findAnyGenericExecutableType(context); |
308 if (paramType == null) { | 305 assert paramType != null; |
309 // TODO fail | |
310 } | |
311 actualType = paramType.getType().getPrimitiveType(); | 306 actualType = paramType.getType().getPrimitiveType(); |
312 } | 307 } |
313 parameters.add(new ActualParameter(parameterSpec, actualType, specializationParameter.getIndex(), specializationParameter.isHidden())); | 308 parameters.add(new ActualParameter(parameterSpec, actualType, specializationParameter.getIndex(), specializationParameter.isHidden())); |
314 } | 309 } |
315 TemplateMethod genericMethod = new TemplateMethod("Generic", node, specification, null, null, returnType, parameters); | 310 TemplateMethod genericMethod = new TemplateMethod("Generic", node, specification, null, null, returnType, parameters); |
316 genericSpecialization = new SpecializationData(genericMethod, true, false, true); | 311 genericSpecialization = new SpecializationData(genericMethod, true, false); |
317 | 312 |
318 specializations.add(genericSpecialization); | 313 specializations.add(genericSpecialization); |
319 } | 314 } |
320 | 315 |
321 if (genericSpecialization != null) { | 316 if (genericSpecialization != null) { |
322 CodeExecutableElement uninitializedMethod = new CodeExecutableElement(Utils.modifiers(Modifier.PUBLIC), context.getType(void.class), "doUninitialized"); | 317 CodeExecutableElement uninitializedMethod = new CodeExecutableElement(Utils.modifiers(Modifier.PUBLIC), context.getType(void.class), "doUninitialized"); |
323 TemplateMethod uninializedMethod = new TemplateMethod("Uninitialized", node, genericSpecialization.getSpecification(), uninitializedMethod, genericSpecialization.getMarkerAnnotation(), | 318 TemplateMethod uninializedMethod = new TemplateMethod("Uninitialized", node, genericSpecialization.getSpecification(), uninitializedMethod, genericSpecialization.getMarkerAnnotation(), |
324 genericSpecialization.getReturnType(), genericSpecialization.getParameters()); | 319 genericSpecialization.getReturnType(), genericSpecialization.getParameters()); |
325 specializations.add(new SpecializationData(uninializedMethod, false, true, true)); | 320 specializations.add(new SpecializationData(uninializedMethod, false, true)); |
326 } | 321 } |
327 | 322 |
328 Collections.sort(specializations, new Comparator<SpecializationData>() { | 323 Collections.sort(specializations, new Comparator<SpecializationData>() { |
329 | 324 |
330 @Override | 325 @Override |