* changed src/vm/jit/m68k/asmpart.S (asm_patcher_wrapper): Removed.
[cacao.git] / src / vm / jit / m68k / codegen.c
index 636bfab795d43306debe2a5527abf3b9de61ea10..02c79329c2baf28a20bef93f16da9ff015a0fb22 100644 (file)
 
 #include "vm/jit/asmpart.h"
 #include "vm/jit/codegen-common.h"
+#include "vm/jit/patcher-common.h"
 #include "vm/jit/dseg.h"
 #include "vm/jit/emit-common.h"
 #include "vm/jit/jit.h"
 #include "vm/jit/abi.h"
 #include "vm/jit/parse.h"
-#include "vm/jit/patcher.h"
 #include "vm/jit/reg.h"
 #include "vm/jit/replace.h"
 #include "vm/jit/stacktrace.h"
@@ -78,7 +78,6 @@ bool codegen_emit(jitdata *jd)
        varinfo            *var;
        basicblock         *bptr;
        instruction        *iptr;
-       exception_entry    *ex;
        u2                  currentline;
        methodinfo         *lm;             /* local methodinfo for ICMD_INVOKE*  */
        unresolved_method  *um;
@@ -126,7 +125,7 @@ bool codegen_emit(jitdata *jd)
 #if 0
 #if defined(ENABLE_THREADS)
                /* we need additional space to save argument of monitor_enter */
-               if (checksync && (m->flags & ACC_SYNCHRONIZED)) {
+               if (checksync && code_is_synchronized(code))    {
                        if (IS_2_WORD_TYPE(m->parseddesc->returntype.type))     {
                                cd->stackframesize += 2;
                        } else  {
@@ -139,12 +138,8 @@ bool codegen_emit(jitdata *jd)
                /* create method header */
                (void) dseg_add_unique_address(cd, code);              /* CodeinfoPointer */
                (void) dseg_add_unique_s4(cd, cd->stackframesize);         /* FrameSize       */
-#if defined(ENABLE_THREADS)
-               if (checksync && (m->flags & ACC_SYNCHRONIZED))
-                       (void) dseg_add_unique_s4(cd, (rd->memuse + 1) * 8);/* IsSync         */
-               else
-#endif
-               (void) dseg_add_unique_s4(cd, 0);                      /* IsSync          */
+
+               code->synchronizedoffset = rd->memuse * 8;
 
                /* REMOVEME: We still need it for exception handling in assembler. */
 
@@ -159,16 +154,6 @@ bool codegen_emit(jitdata *jd)
 
                dseg_addlinenumbertablesize(cd);
 
-               (void) dseg_add_unique_s4(cd, jd->exceptiontablelength); /* ExTableSize   */
-
-               /* create exception table */
-               for (ex = jd->exceptiontable; ex != NULL; ex = ex->down) {
-                       dseg_add_target(cd, ex->start);
-                       dseg_add_target(cd, ex->end);
-                       dseg_add_target(cd, ex->handler);
-                       (void) dseg_add_unique_address(cd, ex->catchtype.any);
-               }
-
 #if defined(ENABLE_PROFILING)
                assert(0);
 #endif
@@ -269,7 +254,7 @@ bool codegen_emit(jitdata *jd)
 
 #if defined(ENABLE_THREADS)
        /* call lock_monitor_enter function */
-       if (checksync && (m->flags & ACC_SYNCHRONIZED)) {
+       if (checksync && code_is_synchronized(code))    {
                if (m->flags & ACC_STATIC)      {
                        M_AMOV_IMM((&m->class->object.header), REG_ATMP1);
                } else  {
@@ -1893,7 +1878,7 @@ nowperformreturn:
 
 #if defined(ENABLE_THREADS)
                        /* call lock_monitor_exit */
-                       if (checksync && (m->flags & ACC_SYNCHRONIZED)) {
+                       if (checksync && code_is_synchronized(code)) {
                                M_ILD(REG_ITMP3, REG_SP, rd->memuse * 8);
 
                                /* we need to save the proper return value */
@@ -2387,7 +2372,7 @@ nowperformreturn:
        dseg_createlinenumbertable(cd);
 
        /* generate stubs */
-       emit_patcher_stubs(jd);
+       emit_patcher_traps(jd);
 
        return true;
 }
@@ -2440,11 +2425,12 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f, int s
        md = m->parseddesc;
 
        /* calc stackframe size */
-       cd->stackframesize =    sizeof(stackframeinfo) / SIZEOF_VOID_P +
-                               sizeof(localref_table) / SIZEOF_VOID_P +
-                               nmd->memuse +
-                               1 +                                             /* functionptr */
-                               4;                                              /* args for codegen_start_native_call */
+       cd->stackframesize =
+               sizeof(stackframeinfo_t) / SIZEOF_VOID_P +
+               sizeof(localref_table) / SIZEOF_VOID_P +
+               nmd->memuse +
+               1 +                                             /* functionptr */
+               4;                                              /* args for codegen_start_native_call */
 
        /* create method header */
        (void) dseg_add_unique_address(cd, code);                      /* CodeinfoPointer */
@@ -2609,7 +2595,7 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f, int s
        M_JSR_IMM(0);
 
        /* generate patcher stub call code */
-       emit_patcher_stubs(jd);
+       emit_patcher_traps(jd);
 }