# HG changeset patch # User Thomas Wuerthinger # Date 1309547249 -7200 # Node ID 5aeb62416609ca5eda0f0d84e0e5b3716ca200e6 # Parent 20058d88555bb8e704e818ac1d1cf1445ff5d7b9 Fixed an issue in the C++ code of the escape analysis (wrongly commented out code). diff -r 20058d88555b -r 5aeb62416609 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/alloc/LinearScan.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/alloc/LinearScan.java Fri Jul 01 20:11:51 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/alloc/LinearScan.java Fri Jul 01 21:07:29 2011 +0200 @@ -1914,8 +1914,13 @@ assert values[i] != null : type + "." + escapeFields[i]; } - CiVirtualObject vobj = CiVirtualObject.get(type, values, obj.id()); - return vobj; + if (GraalOptions.PrintEscapeAnalysis) { + for (int i = 0; i < values.length; i++) { + TTY.println("field " + escapeFields[i].name() + " offset=" + values[i]); + } + } + + return CiVirtualObject.get(type, values, obj.id()); } CiFrame computeFrameForState(FrameState state, int opId, BitMap frameRefMap) { diff -r 20058d88555b -r 5aeb62416609 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/IR.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/IR.java Fri Jul 01 20:11:51 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/IR.java Fri Jul 01 21:07:29 2011 +0200 @@ -100,7 +100,7 @@ new DeadCodeEliminationPhase().apply(graph); } - if (GraalOptions.EscapeAnalysis) { + if (GraalOptions.EscapeAnalysis/* && compilation.method.toString().contains("commonDominator")*/) { new EscapeAnalysisPhase(compilation, this).apply(graph); new DeadCodeEliminationPhase().apply(graph); new CanonicalizerPhase().apply(graph); diff -r 20058d88555b -r 5aeb62416609 src/share/vm/graal/graalCodeInstaller.cpp --- a/src/share/vm/graal/graalCodeInstaller.cpp Fri Jul 01 20:11:51 2011 +0200 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Fri Jul 01 21:07:29 2011 +0200 @@ -203,12 +203,12 @@ } for (jint i = 0; i < values->length(); i++) { - ScopeValue* second = NULL; - ScopeValue* value = get_hotspot_value(((oop*) values->base(T_OBJECT))[i], frame_size, objects, second); - -// if (second != NULL) { -// sv->field_values()->append(second); -// } + ScopeValue* cur_second = NULL; + ScopeValue* value = get_hotspot_value(((oop*) values->base(T_OBJECT))[i], frame_size, objects, cur_second); + + if (cur_second != NULL) { + sv->field_values()->append(cur_second); + } sv->field_values()->append(value); }