changeset 13234:7e237378923d

made the frameContext of a CompilationResultBuilder always non-null and added FrameContext.hasFrame() to determine if a frame is actually generated
author Doug Simon <doug.simon@oracle.com>
date Tue, 03 Dec 2013 18:02:11 +0100
parents 8ea51438445c
children 41f28bc4ac58
files graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotEpilogueOp.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotReturnOp.java graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotEpilogueOp.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotReturnOp.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ControlFlow.java graal/com.oracle.graal.lir.hsail/src/com/oracle/graal/lir/hsail/HSAILControlFlow.java graal/com.oracle.graal.lir.ptx/src/com/oracle/graal/lir/ptx/PTXControlFlow.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIR.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/FrameContext.java
diffstat 14 files changed, 33 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java	Tue Dec 03 18:02:11 2013 +0100
@@ -126,6 +126,10 @@
             this.omitFrame = omitFrame;
         }
 
+        public boolean hasFrame() {
+            return !omitFrame;
+        }
+
         @Override
         public void enter(CompilationResultBuilder crb) {
             FrameMap frameMap = crb.frameMap;
@@ -283,7 +287,7 @@
     public void emitCodeSuffix(ResolvedJavaMethod installedCodeOwner, CompilationResultBuilder crb, LIRGenerator lirGen, AMD64MacroAssembler asm, FrameMap frameMap) {
         HotSpotProviders providers = getProviders();
         HotSpotFrameContext frameContext = (HotSpotFrameContext) crb.frameContext;
-        if (frameContext != null && !frameContext.isStub) {
+        if (!frameContext.isStub) {
             HotSpotForeignCallsProvider foreignCalls = providers.getForeignCalls();
             crb.recordMark(Marks.MARK_EXCEPTION_HANDLER_ENTRY);
             AMD64Call.directCall(crb, asm, foreignCalls.lookupForeignCall(EXCEPTION_HANDLER), null, false, null);
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotEpilogueOp.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotEpilogueOp.java	Tue Dec 03 18:02:11 2013 +0100
@@ -57,8 +57,6 @@
                 masm.movq(rbp, framePointer);
             }
         }
-        if (crb.frameContext != null) {
-            crb.frameContext.leave(crb);
-        }
+        crb.frameContext.leave(crb);
     }
 }
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotReturnOp.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotReturnOp.java	Tue Dec 03 18:02:11 2013 +0100
@@ -51,7 +51,7 @@
     @Override
     public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
         leaveFrameAndRestoreRbp(crb, masm);
-        if (!isStub && (crb.frameContext != null || !OptEliminateSafepoints.getValue())) {
+        if (!isStub && (crb.frameContext.hasFrame() || !OptEliminateSafepoints.getValue())) {
             AMD64HotSpotSafepointOp.emitCode(crb, masm, runtime().getConfig(), true, null, scratchForSafepointOnReturn);
         }
         masm.ret(0);
--- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java	Tue Dec 03 18:02:11 2013 +0100
@@ -94,6 +94,10 @@
 
     class HotSpotFrameContext implements FrameContext {
 
+        public boolean hasFrame() {
+            return true;
+        }
+
         @Override
         public void enter(CompilationResultBuilder crb) {
             Debug.log("Nothing to do here");
--- a/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java	Tue Dec 03 18:02:11 2013 +0100
@@ -164,6 +164,10 @@
         @Override
         public void leave(CompilationResultBuilder crb) {
         }
+
+        public boolean hasFrame() {
+            return true;
+        }
     }
 
     @Override
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java	Tue Dec 03 18:02:11 2013 +0100
@@ -115,6 +115,10 @@
             this.isStub = isStub;
         }
 
+        public boolean hasFrame() {
+            return true;
+        }
+
         @Override
         public void enter(CompilationResultBuilder crb) {
             final int frameSize = crb.frameMap.totalFrameSize();
@@ -207,7 +211,7 @@
 
         HotSpotFrameContext frameContext = (HotSpotFrameContext) crb.frameContext;
         HotSpotForeignCallsProvider foreignCalls = getProviders().getForeignCalls();
-        if (frameContext != null && !frameContext.isStub) {
+        if (!frameContext.isStub) {
             crb.recordMark(Marks.MARK_EXCEPTION_HANDLER_ENTRY);
             SPARCCall.directCall(crb, masm, foreignCalls.lookupForeignCall(EXCEPTION_HANDLER), null, false, null);
             crb.recordMark(Marks.MARK_DEOPT_HANDLER_ENTRY);
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotEpilogueOp.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotEpilogueOp.java	Tue Dec 03 18:02:11 2013 +0100
@@ -31,8 +31,6 @@
 abstract class SPARCHotSpotEpilogueOp extends SPARCLIRInstruction {
 
     protected void leaveFrame(CompilationResultBuilder crb) {
-        if (crb.frameContext != null) {
-            crb.frameContext.leave(crb);
-        }
+        crb.frameContext.leave(crb);
     }
 }
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotReturnOp.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotReturnOp.java	Tue Dec 03 18:02:11 2013 +0100
@@ -49,7 +49,7 @@
 
     @Override
     public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
-        if (!isStub && (crb.frameContext != null || !OptEliminateSafepoints.getValue())) {
+        if (!isStub && (crb.frameContext.hasFrame() || !OptEliminateSafepoints.getValue())) {
             // Using the same scratch register as LIR_Assembler::return_op
             // in c1_LIRAssembler_sparc.cpp
             SPARCHotSpotSafepointOp.emitCode(crb, masm, runtime().getConfig(), true, null, SPARC.l0);
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ControlFlow.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64ControlFlow.java	Tue Dec 03 18:02:11 2013 +0100
@@ -51,9 +51,7 @@
 
         @Override
         public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
-            if (crb.frameContext != null) {
-                crb.frameContext.leave(crb);
-            }
+            crb.frameContext.leave(crb);
             masm.ret(0);
         }
     }
--- a/graal/com.oracle.graal.lir.hsail/src/com/oracle/graal/lir/hsail/HSAILControlFlow.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.lir.hsail/src/com/oracle/graal/lir/hsail/HSAILControlFlow.java	Tue Dec 03 18:02:11 2013 +0100
@@ -137,9 +137,7 @@
 
         @Override
         public void emitCode(CompilationResultBuilder crb, HSAILAssembler masm) {
-            if (crb.frameContext != null) {
-                crb.frameContext.leave(crb);
-            }
+            crb.frameContext.leave(crb);
             masm.exit();
         }
     }
--- a/graal/com.oracle.graal.lir.ptx/src/com/oracle/graal/lir/ptx/PTXControlFlow.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.lir.ptx/src/com/oracle/graal/lir/ptx/PTXControlFlow.java	Tue Dec 03 18:02:11 2013 +0100
@@ -50,9 +50,7 @@
 
         @Override
         public void emitCode(CompilationResultBuilder crb, PTXMacroAssembler masm) {
-            if (crb.frameContext != null) {
-                crb.frameContext.leave(crb);
-            }
+            crb.frameContext.leave(crb);
             masm.exit();
         }
     }
@@ -64,9 +62,7 @@
 
         @Override
         public void emitCode(CompilationResultBuilder crb, PTXMacroAssembler masm) {
-            if (crb.frameContext != null) {
-                crb.frameContext.leave(crb);
-            }
+            crb.frameContext.leave(crb);
             masm.ret();
         }
     }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIR.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIR.java	Tue Dec 03 18:02:11 2013 +0100
@@ -137,9 +137,7 @@
     }
 
     public void emitCode(CompilationResultBuilder crb) {
-        if (crb.frameContext != null) {
-            crb.frameContext.enter(crb);
-        }
+        crb.frameContext.enter(crb);
 
         for (Block b : codeEmittingOrder()) {
             emitBlock(crb, b);
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/CompilationResultBuilder.java	Tue Dec 03 18:02:11 2013 +0100
@@ -74,6 +74,7 @@
         this.asm = asm;
         this.compilationResult = compilationResult;
         this.frameContext = frameContext;
+        assert frameContext != null;
     }
 
     public void setFrameSize(int frameSize) {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/FrameContext.java	Tue Dec 03 17:11:06 2013 +0100
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/FrameContext.java	Tue Dec 03 18:02:11 2013 +0100
@@ -46,4 +46,9 @@
      * </ul>
      */
     void leave(CompilationResultBuilder crb);
+
+    /**
+     * Determines if a frame is set up and torn down by this object.
+     */
+    boolean hasFrame();
 }