* src/vm/jit/jit.h (jitdata): Removed isleafmethod.
[cacao.git] / src / vm / jit / powerpc / codegen.c
index 23c6757e9cc88edf14c9e0f3b1f28812547c580b..96faa9adaf3ed3a18aaded3693a509d1dc152088 100644 (file)
@@ -145,10 +145,10 @@ bool codegen_emit(jitdata *jd)
 
        /* align stack to 16-bytes */
 
-       if (!jd->isleafmethod || JITDATA_HAS_FLAG_VERBOSECALL(jd))
+       if (!code_is_leafmethod(code) || JITDATA_HAS_FLAG_VERBOSECALL(jd))
                ALIGN_2(cd->stackframesize);
 
-       else if (jd->isleafmethod && (cd->stackframesize == LA_SIZE_IN_POINTERS))
+       else if (code_is_leafmethod(code) && (cd->stackframesize == LA_SIZE_IN_POINTERS))
                cd->stackframesize = 0;
 
        (void) dseg_add_unique_address(cd, code);              /* CodeinfoPointer */
@@ -167,7 +167,13 @@ bool codegen_emit(jitdata *jd)
 #endif
                (void) dseg_add_unique_s4(cd, 0);                  /* IsSync          */
                                               
-       (void) dseg_add_unique_s4(cd, jd->isleafmethod);       /* IsLeaf          */
+       /* REMOVEME: We still need it for exception handling in assembler. */
+
+       if (code_is_leafmethod(code))
+               (void) dseg_add_unique_s4(cd, 1);
+       else
+               (void) dseg_add_unique_s4(cd, 0);
+
        (void) dseg_add_unique_s4(cd, INT_SAV_CNT - rd->savintreguse); /* IntSave */
        (void) dseg_add_unique_s4(cd, FLT_SAV_CNT - rd->savfltreguse); /* FltSave */
 
@@ -201,7 +207,7 @@ bool codegen_emit(jitdata *jd)
 
        /* create stack frame (if necessary) */
 
-       if (!jd->isleafmethod) {
+       if (!code_is_leafmethod(code)) {
                M_MFLR(REG_ZERO);
                M_AST(REG_ZERO, REG_SP, LA_LR_OFFSET);
        }
@@ -1714,13 +1720,13 @@ bool codegen_emit(jitdata *jd)
                        M_ALD(REG_ITMP2, REG_PV, disp);
                        M_MTCTR(REG_ITMP2);
 
-                       if (jd->isleafmethod)
+                       if (code_is_leafmethod(code))
                                M_MFLR(REG_ITMP3);                          /* save LR        */
 
                        M_BL(0);                                        /* get current PC */
                        M_MFLR(REG_ITMP2_XPC);
 
-                       if (jd->isleafmethod)
+                       if (code_is_leafmethod(code))
                                M_MTLR(REG_ITMP3);                          /* restore LR     */
 
                        M_RTS;                                          /* jump to CTR    */
@@ -2121,7 +2127,7 @@ nowperformreturn:
 
                        /* restore return address                                         */
 
-                       if (!jd->isleafmethod) {
+                       if (!code_is_leafmethod(code)) {
                                /* ATTENTION: Don't use REG_ZERO (r0) here, as M_ALD
                                   may have a displacement overflow. */
 
@@ -2795,31 +2801,6 @@ gen_method:
 }
 
 
-/* codegen_emit_stub_compiler **************************************************
-
-   Emits a stub routine which calls the compiler.
-       
-*******************************************************************************/
-
-void codegen_emit_stub_compiler(jitdata *jd)
-{
-       methodinfo  *m;
-       codegendata *cd;
-
-       /* get required compiler data */
-
-       m  = jd->m;
-       cd = jd->cd;
-
-       /* code for the stub */
-
-       M_ALD_INTERN(REG_ITMP1, REG_PV, -2 * SIZEOF_VOID_P);
-       M_ALD_INTERN(REG_PV, REG_PV, -3 * SIZEOF_VOID_P);
-       M_MTCTR(REG_PV);
-       M_RTS;
-}
-
-
 /* codegen_emit_stub_native ****************************************************
 
    Emits a stub routine which calls a native method.