Mercurial > hg > graal-compiler
comparison graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java @ 8277:97ee911c4c74
Fixed behaviour of useSpecializations for Generic specializations.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Thu, 14 Mar 2013 13:10:29 +0100 |
parents | 4dc7034317ec |
children | 89006c76f737 |
comparison
equal
deleted
inserted
replaced
8260:b81f42160093 | 8277:97ee911c4c74 |
---|---|
187 | 187 |
188 if (specialization == null) { | 188 if (specialization == null) { |
189 return prefix; | 189 return prefix; |
190 } | 190 } |
191 | 191 |
192 if (!specialization.getNode().getGenericSpecialization().isUseSpecializationsForGeneric() || !specialization.getNode().needsRewrites(context)) { | 192 if (!specialization.getNode().needsRewrites(context)) { |
193 return prefix; | 193 return prefix; |
194 } | 194 } |
195 | 195 |
196 SpecializationData prev = null; | 196 SpecializationData prev = null; |
197 for (SpecializationData current : specialization.getNode().getSpecializations()) { | 197 for (SpecializationData current : specialization.getNode().getSpecializations()) { |
937 return method; | 937 return method; |
938 } | 938 } |
939 | 939 |
940 private List<CodeExecutableElement> createGeneratedGenericMethod(NodeData node) { | 940 private List<CodeExecutableElement> createGeneratedGenericMethod(NodeData node) { |
941 TypeMirror genericReturnType = node.getGenericSpecialization().getReturnType().getActualType(); | 941 TypeMirror genericReturnType = node.getGenericSpecialization().getReturnType().getActualType(); |
942 if (node.getGenericSpecialization().isUseSpecializationsForGeneric() && node.needsRewrites(context)) { | 942 if (node.needsRewrites(context)) { |
943 List<CodeExecutableElement> methods = new ArrayList<>(); | 943 List<CodeExecutableElement> methods = new ArrayList<>(); |
944 | 944 |
945 List<SpecializationData> specializations = node.getSpecializations(); | 945 List<SpecializationData> specializations = node.getSpecializations(); |
946 SpecializationData prev = null; | 946 SpecializationData prev = null; |
947 for (int i = 0; i < specializations.size(); i++) { | 947 for (int i = 0; i < specializations.size(); i++) { |
1217 } | 1217 } |
1218 | 1218 |
1219 if (specialization.getMethod() == null && !node.needsRewrites(context)) { | 1219 if (specialization.getMethod() == null && !node.needsRewrites(context)) { |
1220 emitEncounteredSynthetic(builder); | 1220 emitEncounteredSynthetic(builder); |
1221 } else if (specialization.isUninitialized() || specialization.isGeneric()) { | 1221 } else if (specialization.isUninitialized() || specialization.isGeneric()) { |
1222 builder.startReturn().startCall(factoryClassName(node), generatedGenericMethodName(null)); | 1222 String genericMethodName; |
1223 if (!specialization.isUseSpecializationsForGeneric()) { | |
1224 genericMethodName = generatedGenericMethodName(specialization); | |
1225 } else { | |
1226 genericMethodName = generatedGenericMethodName(null); | |
1227 } | |
1228 | |
1229 builder.startReturn().startCall(factoryClassName(node), genericMethodName); | |
1223 builder.string("this"); | 1230 builder.string("this"); |
1224 addValueParameterNames(builder, specialization, null, true, true); | 1231 addValueParameterNames(builder, specialization, null, true, true); |
1225 builder.end().end(); | 1232 builder.end().end(); |
1226 } else { | 1233 } else { |
1227 builder.startReturn(); | 1234 builder.startReturn(); |