# HG changeset patch # User Christian Humer # Date 1363689325 -3600 # Node ID 5981ea5996e8d86304800efddfb904c85b8e0f3f # Parent 676fa31bd3f0d48fcc444f6a103e7cf655cad884# Parent fa5a670a1682eb898b421296bbf47ad3af33f4b3 Merge. diff -r fa5a670a1682 -r 5981ea5996e8 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 Tue Mar 19 11:10:00 2013 +0100 +++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java Tue Mar 19 11:35:25 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);