comparison graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/GenericParser.java @ 7794:b891ec348f8a

Made the usage of generic types more flexible for short circuits and generic specializations.
author Christian Humer <christian.humer@gmail.com>
date Fri, 15 Feb 2013 19:32:58 +0100
parents ef1b41ea0a90
children ee84a187f84a
comparison
equal deleted inserted replaced
7793:8b48c8ebdff4 7794:b891ec348f8a
21 * questions. 21 * questions.
22 */ 22 */
23 package com.oracle.truffle.codegen.processor.node; 23 package com.oracle.truffle.codegen.processor.node;
24 24
25 import java.lang.annotation.*; 25 import java.lang.annotation.*;
26 import java.util.*;
26 27
27 import javax.lang.model.element.*; 28 import javax.lang.model.element.*;
29 import javax.lang.model.type.*;
28 30
29 import com.oracle.truffle.api.codegen.*; 31 import com.oracle.truffle.api.codegen.*;
30 import com.oracle.truffle.codegen.processor.*; 32 import com.oracle.truffle.codegen.processor.*;
31 import com.oracle.truffle.codegen.processor.template.*; 33 import com.oracle.truffle.codegen.processor.template.*;
34 import com.oracle.truffle.codegen.processor.template.ParameterSpec.*;
32 35
33 public class GenericParser extends MethodParser<SpecializationData> { 36 public class GenericParser extends MethodParser<SpecializationData> {
34 37
35 public GenericParser(ProcessorContext context, NodeData node) { 38 public GenericParser(ProcessorContext context, NodeData node) {
36 super(context, node); 39 super(context, node);
41 return createDefaultMethodSpec(null); 44 return createDefaultMethodSpec(null);
42 } 45 }
43 46
44 @Override 47 @Override
45 protected ParameterSpec createValueParameterSpec(String valueName, NodeData nodeData) { 48 protected ParameterSpec createValueParameterSpec(String valueName, NodeData nodeData) {
46 return new ParameterSpec(valueName, nodeData.findGenericExecutableType(getContext()).getType().getPrimitiveType(), false); 49 List<ExecutableTypeData> execTypes = nodeData.findGenericExecutableTypes(getContext());
50 List<TypeMirror> types = new ArrayList<>();
51 for (ExecutableTypeData type : execTypes) {
52 types.add(type.getType().getPrimitiveType());
53 }
54 TypeMirror[] array = types.toArray(new TypeMirror[types.size()]);
55 return new ParameterSpec(valueName, array, nodeData.getTypeSystem().getGenericType(), false, Cardinality.ONE);
47 } 56 }
48 57
49 @Override 58 @Override
50 protected ParameterSpec createReturnParameterSpec() { 59 protected ParameterSpec createReturnParameterSpec() {
51 return super.createValueParameterSpec("returnValue", getNode()); 60 return super.createValueParameterSpec("returnValue", getNode());