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