Mercurial > hg > graal-compiler
comparison graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/MethodParser.java @ 8593:54e227b2e199
Refactored ParameterSpec constructors.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Mon, 01 Apr 2013 12:14:54 +0200 |
parents | a80bf36c6a1e |
children |
comparison
equal
deleted
inserted
replaced
8592:a80bf36c6a1e | 8593:54e227b2e199 |
---|---|
41 public NodeData getNode() { | 41 public NodeData getNode() { |
42 return template; | 42 return template; |
43 } | 43 } |
44 | 44 |
45 protected ParameterSpec createValueParameterSpec(String valueName, NodeData nodeData, boolean optional) { | 45 protected ParameterSpec createValueParameterSpec(String valueName, NodeData nodeData, boolean optional) { |
46 return new ParameterSpec(valueName, nodeData, optional, Cardinality.ONE, true); | 46 ParameterSpec spec = new ParameterSpec(valueName, nodeTypeMirrors(nodeData)); |
47 spec.setOptional(optional); | |
48 spec.setSignature(true); | |
49 return spec; | |
50 } | |
51 | |
52 private static List<TypeMirror> nodeTypeMirrors(NodeData nodeData) { | |
53 Set<TypeMirror> typeMirrors = new LinkedHashSet<>(); | |
54 | |
55 for (ExecutableTypeData typeData : nodeData.getExecutableTypes()) { | |
56 typeMirrors.add(typeData.getType().getPrimitiveType()); | |
57 } | |
58 | |
59 typeMirrors.add(nodeData.getTypeSystem().getGenericType()); | |
60 | |
61 return new ArrayList<>(typeMirrors); | |
47 } | 62 } |
48 | 63 |
49 protected ParameterSpec createReturnParameterSpec() { | 64 protected ParameterSpec createReturnParameterSpec() { |
50 return createValueParameterSpec("operation", getNode(), false); | 65 return createValueParameterSpec("operation", getNode(), false); |
51 } | 66 } |
58 @SuppressWarnings("unused") | 73 @SuppressWarnings("unused") |
59 protected final MethodSpec createDefaultMethodSpec(ExecutableElement method, AnnotationMirror mirror, String shortCircuitName) { | 74 protected final MethodSpec createDefaultMethodSpec(ExecutableElement method, AnnotationMirror mirror, String shortCircuitName) { |
60 List<ParameterSpec> defaultParameters = new ArrayList<>(); | 75 List<ParameterSpec> defaultParameters = new ArrayList<>(); |
61 | 76 |
62 if (getNode().supportsFrame()) { | 77 if (getNode().supportsFrame()) { |
63 defaultParameters.add(new ParameterSpec("frame", getContext().getTruffleTypes().getFrame(), true, false)); | 78 ParameterSpec frameSpec = new ParameterSpec("frame", getContext().getTruffleTypes().getFrame()); |
79 frameSpec.setOptional(true); | |
80 defaultParameters.add(frameSpec); | |
64 } | 81 } |
65 | 82 |
66 TypeMirror declaredType = Utils.findNearestEnclosingType(method).asType(); | 83 TypeMirror declaredType = Utils.findNearestEnclosingType(method).asType(); |
67 | 84 |
68 List<TypeMirror> prefixTypes = new ArrayList<>(); | 85 List<TypeMirror> prefixTypes = new ArrayList<>(); |
71 prefixTypes.add(getNode().getTemplateType().asType()); | 88 prefixTypes.add(getNode().getTemplateType().asType()); |
72 } | 89 } |
73 | 90 |
74 for (NodeFieldData field : getNode().getFields()) { | 91 for (NodeFieldData field : getNode().getFields()) { |
75 if (field.getKind() == FieldKind.FIELD) { | 92 if (field.getKind() == FieldKind.FIELD) { |
76 ParameterSpec spec = new ParameterSpec(field.getName(), field.getType(), true, false); | 93 ParameterSpec spec = new ParameterSpec(field.getName(), field.getType()); |
94 spec.setOptional(true); | |
77 spec.setLocal(true); | 95 spec.setLocal(true); |
78 defaultParameters.add(spec); | 96 defaultParameters.add(spec); |
79 } | 97 } |
80 } | 98 } |
81 | 99 |
95 String valueName = field.getName(); | 113 String valueName = field.getName(); |
96 if (shortCircuitName != null && valueName.equals(shortCircuitName)) { | 114 if (shortCircuitName != null && valueName.equals(shortCircuitName)) { |
97 break; | 115 break; |
98 } | 116 } |
99 | 117 |
100 defaultParameters.add(new ParameterSpec(shortCircuitValueName(valueName), getContext().getType(boolean.class), false, false)); | 118 defaultParameters.add(new ParameterSpec(shortCircuitValueName(valueName), getContext().getType(boolean.class))); |
101 defaultParameters.add(createValueParameterSpec(valueName, field.getNodeData(), false)); | 119 defaultParameters.add(createValueParameterSpec(valueName, field.getNodeData(), false)); |
102 } else { | 120 } else { |
103 assert false; | 121 assert false; |
104 } | 122 } |
105 } | 123 } |