changeset 13844:6bc07d0c2682

Optimize back edge in tight loops.
author Roland Schatz <roland.schatz@oracle.com>
date Fri, 31 Jan 2014 11:39:40 +0100
parents f5f81bc9c9f0
children 12e1c788c1d5
files graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ControlFlow.java
diffstat 1 files changed, 3 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ControlFlow.java	Fri Jan 31 11:38:32 2014 +0100
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ControlFlow.java	Fri Jan 31 11:39:40 2014 +0100
@@ -75,6 +75,9 @@
         public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
             if (crb.isSuccessorEdge(trueDestination)) {
                 jcc(masm, true, falseDestination);
+            } else if (falseDestination.getSourceBlock() == falseDestination.getTargetBlock()) {
+                jcc(masm, true, falseDestination);
+                masm.jmp(trueDestination.label());
             } else {
                 jcc(masm, false, trueDestination);
                 if (!crb.isSuccessorEdge(falseDestination)) {