Mercurial > hg > graal-compiler
changeset 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 | 3d840eec7f2b |
children | 5981ea5996e8 |
files | graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java |
diffstat | 1 files changed, 10 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java Sat Mar 16 21:55:55 2013 +0100 +++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java Tue Mar 19 11:30:58 2013 +0100 @@ -1193,11 +1193,11 @@ builder.tree(createExecuteChildren(builder, specialization)); + CodeTree executeNode; if (specialization.isUninitialized()) { builder.tree(createSpecializeCall(builder, specialization)); } - - CodeTree executeNode = createExecute(builder, specialization); + executeNode = createExecute(builder, specialization); SpecializationData next = specialization.findNextSpecialization(); CodeTree returnSpecialized = null; @@ -1243,9 +1243,15 @@ builder.startTryBlock(); } - if (specialization.getMethod() == null && !node.needsRewrites(context)) { + if (specialization.isUninitialized()) { + String genericMethodName = generatedGenericMethodName(null); + builder.startReturn().startCall(factoryClassName(node), genericMethodName); + builder.string("this"); + addInternalValueParameterNames(builder, specialization, null, true, true); + builder.end().end(); + } else if (specialization.getMethod() == null && !node.needsRewrites(context)) { emitEncounteredSynthetic(builder); - } else if (specialization.isUninitialized() || specialization.isGeneric()) { + } else if (specialization.isGeneric()) { String genericMethodName; if (!specialization.isUseSpecializationsForGeneric()) { genericMethodName = generatedGenericMethodName(specialization);