comparison graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/MethodParser.java @ 8592:a80bf36c6a1e

Refactor to shared template method signature comparison.
author Christian Humer <christian.humer@gmail.com>
date Mon, 01 Apr 2013 11:52:38 +0200
parents 89006c76f737
children 54e227b2e199
comparison
equal deleted inserted replaced
8591:5c58da5b8233 8592:a80bf36c6a1e
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); 46 return new ParameterSpec(valueName, nodeData, optional, Cardinality.ONE, true);
47 } 47 }
48 48
49 protected ParameterSpec createReturnParameterSpec() { 49 protected ParameterSpec createReturnParameterSpec() {
50 return createValueParameterSpec("operation", getNode(), false); 50 return createValueParameterSpec("operation", getNode(), false);
51 } 51 }
58 @SuppressWarnings("unused") 58 @SuppressWarnings("unused")
59 protected final MethodSpec createDefaultMethodSpec(ExecutableElement method, AnnotationMirror mirror, String shortCircuitName) { 59 protected final MethodSpec createDefaultMethodSpec(ExecutableElement method, AnnotationMirror mirror, String shortCircuitName) {
60 List<ParameterSpec> defaultParameters = new ArrayList<>(); 60 List<ParameterSpec> defaultParameters = new ArrayList<>();
61 61
62 if (getNode().supportsFrame()) { 62 if (getNode().supportsFrame()) {
63 defaultParameters.add(new ParameterSpec("frame", getContext().getTruffleTypes().getFrame(), true)); 63 defaultParameters.add(new ParameterSpec("frame", getContext().getTruffleTypes().getFrame(), true, false));
64 } 64 }
65 65
66 TypeMirror declaredType = Utils.findNearestEnclosingType(method).asType(); 66 TypeMirror declaredType = Utils.findNearestEnclosingType(method).asType();
67 67
68 List<TypeMirror> prefixTypes = new ArrayList<>(); 68 List<TypeMirror> prefixTypes = new ArrayList<>();
71 prefixTypes.add(getNode().getTemplateType().asType()); 71 prefixTypes.add(getNode().getTemplateType().asType());
72 } 72 }
73 73
74 for (NodeFieldData field : getNode().getFields()) { 74 for (NodeFieldData field : getNode().getFields()) {
75 if (field.getKind() == FieldKind.FIELD) { 75 if (field.getKind() == FieldKind.FIELD) {
76 ParameterSpec spec = new ParameterSpec(field.getName(), field.getType(), true); 76 ParameterSpec spec = new ParameterSpec(field.getName(), field.getType(), true, false);
77 spec.setLocal(true); 77 spec.setLocal(true);
78 defaultParameters.add(spec); 78 defaultParameters.add(spec);
79 } 79 }
80 } 80 }
81 81
95 String valueName = field.getName(); 95 String valueName = field.getName();
96 if (shortCircuitName != null && valueName.equals(shortCircuitName)) { 96 if (shortCircuitName != null && valueName.equals(shortCircuitName)) {
97 break; 97 break;
98 } 98 }
99 99
100 defaultParameters.add(new ParameterSpec(shortCircuitValueName(valueName), getContext().getType(boolean.class), false)); 100 defaultParameters.add(new ParameterSpec(shortCircuitValueName(valueName), getContext().getType(boolean.class), false, false));
101 defaultParameters.add(createValueParameterSpec(valueName, field.getNodeData(), false)); 101 defaultParameters.add(createValueParameterSpec(valueName, field.getNodeData(), false));
102 } else { 102 } else {
103 assert false; 103 assert false;
104 } 104 }
105 } 105 }