# HG changeset patch # User Christian Humer # Date 1363689058 -3600 # Node ID 676fa31bd3f0d48fcc444f6a103e7cf655cad884 # Parent 3d840eec7f2be4f6f81dad8dc47b8b186eab8271 Uninitialized cases produced wrong call to throw new UnsuportedOperationException. diff -r 3d840eec7f2b -r 676fa31bd3f0 graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java --- 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);