Mercurial > hg > graal-jvmci-8
comparison graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java @ 8361:676fa31bd3f0
Uninitialized cases produced wrong call to throw new UnsuportedOperationException.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Tue, 19 Mar 2013 11:30:58 +0100 |
parents | 89006c76f737 |
children | a80bf36c6a1e |
comparison
equal
deleted
inserted
replaced
8321:3d840eec7f2b | 8361:676fa31bd3f0 |
---|---|
1191 builder.tree(createDeoptimize(builder)); | 1191 builder.tree(createDeoptimize(builder)); |
1192 } | 1192 } |
1193 | 1193 |
1194 builder.tree(createExecuteChildren(builder, specialization)); | 1194 builder.tree(createExecuteChildren(builder, specialization)); |
1195 | 1195 |
1196 CodeTree executeNode; | |
1196 if (specialization.isUninitialized()) { | 1197 if (specialization.isUninitialized()) { |
1197 builder.tree(createSpecializeCall(builder, specialization)); | 1198 builder.tree(createSpecializeCall(builder, specialization)); |
1198 } | 1199 } |
1199 | 1200 executeNode = createExecute(builder, specialization); |
1200 CodeTree executeNode = createExecute(builder, specialization); | |
1201 | 1201 |
1202 SpecializationData next = specialization.findNextSpecialization(); | 1202 SpecializationData next = specialization.findNextSpecialization(); |
1203 CodeTree returnSpecialized = null; | 1203 CodeTree returnSpecialized = null; |
1204 if (next != null) { | 1204 if (next != null) { |
1205 returnSpecialized = createReturnSpecializeAndExecute(builder, next, null); | 1205 returnSpecialized = createReturnSpecializeAndExecute(builder, next, null); |
1241 CodeTreeBuilder builder = new CodeTreeBuilder(parent); | 1241 CodeTreeBuilder builder = new CodeTreeBuilder(parent); |
1242 if (!specialization.getExceptions().isEmpty()) { | 1242 if (!specialization.getExceptions().isEmpty()) { |
1243 builder.startTryBlock(); | 1243 builder.startTryBlock(); |
1244 } | 1244 } |
1245 | 1245 |
1246 if (specialization.getMethod() == null && !node.needsRewrites(context)) { | 1246 if (specialization.isUninitialized()) { |
1247 String genericMethodName = generatedGenericMethodName(null); | |
1248 builder.startReturn().startCall(factoryClassName(node), genericMethodName); | |
1249 builder.string("this"); | |
1250 addInternalValueParameterNames(builder, specialization, null, true, true); | |
1251 builder.end().end(); | |
1252 } else if (specialization.getMethod() == null && !node.needsRewrites(context)) { | |
1247 emitEncounteredSynthetic(builder); | 1253 emitEncounteredSynthetic(builder); |
1248 } else if (specialization.isUninitialized() || specialization.isGeneric()) { | 1254 } else if (specialization.isGeneric()) { |
1249 String genericMethodName; | 1255 String genericMethodName; |
1250 if (!specialization.isUseSpecializationsForGeneric()) { | 1256 if (!specialization.isUseSpecializationsForGeneric()) { |
1251 genericMethodName = generatedGenericMethodName(specialization); | 1257 genericMethodName = generatedGenericMethodName(specialization); |
1252 } else { | 1258 } else { |
1253 genericMethodName = generatedGenericMethodName(null); | 1259 genericMethodName = generatedGenericMethodName(null); |