changeset 8362:5981ea5996e8

Merge.
author Christian Humer <christian.humer@gmail.com>
date Tue, 19 Mar 2013 11:35:25 +0100
parents 676fa31bd3f0 (diff) fa5a670a1682 (current diff)
children 25691fcb505a b8666670daf5 a3ce41332d76
files graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeInfo.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CompiledMethodTest.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotCodeInfo.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/RegisterNode.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertUnreachedToGuardPhase.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	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);