Mercurial > hg > graal-compiler
diff graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/EscapeAnalysisPhase.java @ 3092:f34c90b89f54
fixes to escape analysis: propagation of VirtualObject
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Tue, 28 Jun 2011 19:54:51 +0200 |
parents | 536528f48708 |
children | 2fb14099d069 |
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/EscapeAnalysisPhase.java Tue Jun 28 19:22:42 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/EscapeAnalysisPhase.java Tue Jun 28 19:54:51 2011 +0200 @@ -111,10 +111,15 @@ } else { List<Block> predecessors = block.getPredecessors(); Set<EscapeField> mergedFields = new HashSet<EscapeField>(); + + BlockExitState predState = exitStates.get(predecessors.get(0)); + state.obj = predState == null ? null : predState.obj; + for (int i = 0; i < predecessors.size(); i++) { BlockExitState exitState = exitStates.get(predecessors.get(i)); if (exitState == null) { mergedFields.addAll(fields.values()); + state.obj = null; break; } else { for (EscapeField field : fields.values()) {