changeset 13354:5a7508f1a7ff

Fix LIR assertion (distance between an operation with an exception edge and the last introduction of a LIR block)
author Matthias Grimmer <grimmer@ssw.jku.at>
date Tue, 17 Dec 2013 10:57:18 +0100
parents 0e5c4f9fa9a5
children e3f15a21b7a1
files graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIR.java
diffstat 1 files changed, 4 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIR.java	Mon Dec 16 23:33:40 2013 +0100
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIR.java	Tue Dec 17 10:57:18 2013 +0100
@@ -166,15 +166,15 @@
 
     /**
      * The maximum distance an operation with an {@linkplain #getExceptionEdge(LIRInstruction)
-     * exception edge} can be from the last instruction of a LIR block. The value of 2 is based on a
-     * non-void call operation that has an exception edge. Such a call op will have a move op after
-     * it to put the return value into the result variable.
+     * exception edge} can be from the last instruction of a LIR block. The value of 3 is based on a
+     * non-void call operation that has an exception edge. Such a call may move the result to
+     * another register and then spill it.
      * <p>
      * The rationale for such a constant is to limit the search for an insertion point when adding
      * move operations at the end of a block. Such moves must be inserted before all control flow
      * instructions.
      */
-    public static final int MAX_EXCEPTION_EDGE_OP_DISTANCE_FROM_END = 2;
+    public static final int MAX_EXCEPTION_EDGE_OP_DISTANCE_FROM_END = 3;
 
     public static boolean verifyBlock(LIR lir, Block block) {
         List<LIRInstruction> ops = lir.lir(block);