* src/vm/jit/methodheader.h (IsSync): Removed.
[cacao.git] / src / vm / jit / i386 / asmpart.S
index 522a39c2a5b3b9f0727cebc497639b7ca0da08df..c46ac2824ccf419d6a204895a05fb932b0e56d07 100644 (file)
@@ -22,8 +22,6 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: asmpart.S 8274 2007-08-08 15:58:17Z twisti $
-
 */
 
 
        .globl asm_vm_call_method_exception_handler
        .globl asm_vm_call_method_end
 
-       .globl asm_call_jit_compiler
        .globl asm_handle_nat_exception
        .globl asm_handle_exception
 
        .globl asm_abstractmethoderror
 
-       .globl asm_patcher_wrapper
-
-#if defined(ENABLE_REPLACEMENT)
-       .globl asm_replacement_out
-       .globl asm_replacement_in
-#endif
-
        .globl asm_builtin_f2i
        .globl asm_builtin_f2l
        .globl asm_builtin_d2i
@@ -130,7 +120,6 @@ asm_md_init:
        .long   0                           /* fltsave                            */
        .long   0                           /* intsave                            */
        .long   0                           /* isleaf                             */
-       .long   0                           /* IsSync                             */
        .long   0                           /* frame size                         */
        .long   0                           /* codeinfo pointer                   */
 
@@ -202,61 +191,6 @@ asm_vm_call_method_end:
        jmp     L_asm_vm_call_method_return
 
 
-/* asm_call_jit_compiler *******************************************************
-
-   Invokes the compiler for untranslated JavaVM methods.
-
-   Register R0 contains a pointer to the method info structure (prepared
-   by createcompilerstub). Using the return address in R26 and the
-   offset in the LDA instruction or using the value in methodptr R28 the
-   patching address for storing the method address can be computed:
-
-   Method address was either loaded using
-
-   i386_mov_imm_reg(a, REG_ITMP2)                ; invokestatic/special
-   i386_call_reg(REG_ITMP2)
-
-   or
-
-   i386_mov_membase_reg(REG_SP, 0, REG_ITMP1)    ; invokevirtual/interface
-   i386_mov_membase_reg(REG_ITMP1, OFFSET(, vftbl), REG_ITMP2)
-   i386_mov_membase_reg(REG_ITMP2, OFFSET(vftbl, table[0]) + \
-       sizeof(methodptr) * m->vftblindex, REG_ITMP1)
-   i386_call_reg(REG_ITMP1)
-
-   In the static case the method pointer can be computed using the
-   return address and the lda function following the jmp instruction.
-
-*******************************************************************************/
-
-asm_call_jit_compiler:
-L_asm_call_jit_compiler:                /* required for PIC code              */
-       sub     $(4*4),sp                   /* keep stack 16-byte aligned         */
-
-       mov     itmp1,0*4(sp)               /* pass methodinfo pointer            */
-       mov     mptr,1*4(sp)                /* pass method pointer                */
-       mov     sp,itmp2                    /* pass java sp                       */
-       add     $((1+4)*4),itmp2
-       mov     itmp2,2*4(sp)
-       mov     4*4(sp),itmp3               /* pass java ra                       */
-       mov     itmp3,3*4(sp)
-       call    jit_asm_compile
-
-       add     $(4*4),sp                   /* remove stack frame                 */
-
-       test    v0,v0                       /* check for exception                */
-       je      L_asm_call_jit_compiler_exception
-
-       jmp             *v0                         /* ...and now call the new method     */
-
-L_asm_call_jit_compiler_exception:
-       call    exceptions_get_and_clear_exception
-                                           /* v0 == xptr                         */
-       pop     xpc                         /* get return address                 */
-       sub     $2,xpc                      /* faulting address is ra - 2         */
-       jmp     L_asm_handle_exception
-
-
 /* asm_handle_exception ********************************************************
 *                                                                              *
 *   This function handles an exception. It does not use the usual calling      *
@@ -419,160 +353,6 @@ asm_abstractmethoderror:
        jmp     L_asm_handle_exception
 
 
-/* asm_patcher_wrapper *********************************************************
-
-   XXX
-
-   Stack layout:
-     24   return address
-     20   REG_ITMP3
-     16   pointer to virtual java_objectheader
-     12   last byte of machine code (xmcode)
-      8   machine code (which is patched back later)
-      4   unresolved field reference
-      0   patcher function pointer to call
-
-*******************************************************************************/
-
-asm_patcher_wrapper:
-       sub     $((1+4+4)*4),sp             /* keep stack 16-byte aligned         */
-
-       mov     itmp1,(0+4)*4(sp)           /* save itmp1 and itmp2               */
-       mov     itmp2,(1+4)*4(sp)
-
-       mov     sp,itmp1                    /* pass SP of patcher stub            */
-       add     $((1+4+4)*4),itmp1
-       mov     itmp1,0*4(sp)
-       movl    $0,1*4(sp)                  /* pass PV (if NULL, use findmethod)  */
-       movl    $0,2*4(sp)                  /* pass RA (it's on the stack)        */
-       call    patcher_wrapper
-       mov     v0,itmp3                    /* save return value                  */
-
-       mov     (0+4)*4(sp),itmp1           /* restore itmp1 and itmp2            */
-       mov     (1+4)*4(sp),itmp2
-
-       test    itmp3,itmp3                 /* exception thrown?                  */
-       jne     L_asm_patcher_wrapper_exception
-
-       mov     (5+1+4+4)*4(sp),itmp3       /* restore itmp3                      */
-       add     $((6+1+4+4)*4),sp           /* remove stack frame, keep RA        */
-
-       ret                                 /* jump to new patched code           */
-
-L_asm_patcher_wrapper_exception:
-       add     $((6+1+4+4)*4),sp           /* remove stack frame, keep RA        */
-       mov     itmp3,xptr                  /* get exception                      */
-       pop     xpc                         /* get and remove return address      */
-       jmp     L_asm_handle_exception
-
-#if defined(ENABLE_REPLACEMENT)
-
-/* asm_replacement_out *********************************************************
-
-   This code is jumped to from the replacement-out stubs that are executed
-   when a thread reaches an activated replacement point.
-
-   The purpose of asm_replacement_out is to read out the parts of the
-   execution state that cannot be accessed from C code, store this state,
-   and then call the C function replace_me.
-
-   Stack layout:
-      4                 start of stack inside method to replace
-      0   rplpoint *    info on the replacement point that was reached
-
-*******************************************************************************/
-
-/* some room to accomodate changes of the stack frame size during replacement */
-       /* XXX we should find a cleaner solution here */
-#define REPLACEMENT_ROOM  512
-
-asm_replacement_out:
-    /* create stack frame */
-       sub     $(sizeexecutionstate + REPLACEMENT_ROOM),sp
-
-       /* save registers in execution state */
-       mov     %eax,(EAX*4+offes_intregs)(sp)
-       mov     %ebx,(EBX*4+offes_intregs)(sp)
-       mov     %ecx,(ECX*4+offes_intregs)(sp)
-       mov     %edx,(EDX*4+offes_intregs)(sp)
-       mov     %esi,(ESI*4+offes_intregs)(sp)
-       mov     %edi,(EDI*4+offes_intregs)(sp)
-       mov     %ebp,(EBP*4+offes_intregs)(sp)
-       movl    $0  ,(ESP*4+offes_intregs)(sp) /* not used */
-
-       /* calculate sp of method */
-       mov     sp,itmp1
-       add     $(sizeexecutionstate + REPLACEMENT_ROOM + 4),itmp1
-       mov     itmp1,(offes_sp)(sp)
-
-       /* pv must be looked up via AVL tree */
-       movl    $0,(offes_pv)(sp)
-
-       /* call replace_me */
-       mov     -4(itmp1),itmp1             /* rplpoint *                         */
-    push    sp                          /* arg1: execution state              */
-    push    itmp1                       /* arg0: replacement point            */
-    call    replace_me                  /* call C function replace_me         */
-
-
-/* asm_replacement_in **********************************************************
-
-   This code writes the given execution state and jumps to the replacement
-   code.
-
-   This function never returns!
-
-   C prototype:
-      void asm_replacement_in(executionstate *es, replace_safestack_t *st);
-
-*******************************************************************************/
-
-asm_replacement_in:
-       /* get arguments */
-       mov     8(sp),%esi                  /* replace_safestack_t *st            */
-       mov     4(sp),%ebp                  /* executionstate *es == safe stack   */
-
-       /* switch to the safe stack and build a stack frame */
-       mov     %ebp,sp
-       sub             $(1*4),sp
-
-       /* call replace_build_execution_state(st) */
-       mov             %esi,(0*4)(sp)
-       call    replace_build_execution_state
-
-       /* set new sp */
-       mov     (offes_sp)(%ebp),sp
-
-       /* push address of new code */
-       push    (offes_pc)(%ebp)
-
-       /* allocate an executionstate_t on the stack */
-       sub             $(sizeexecutionstate),sp
-
-       /* call replace_free_safestack(st,& of allocated executionstate_t) */
-       push    sp   /* tmpes */
-       push    %esi /* st    */
-       call    replace_free_safestack
-       add     $(2*4),sp
-
-       /* copy registers from execution state */
-       mov     (EAX*4+offes_intregs)(sp),%eax
-       mov     (EBX*4+offes_intregs)(sp),%ebx
-       mov     (ECX*4+offes_intregs)(sp),%ecx
-       mov     (EDX*4+offes_intregs)(sp),%edx
-       mov     (ESI*4+offes_intregs)(sp),%esi
-       mov     (EDI*4+offes_intregs)(sp),%edi
-       mov     (EBP*4+offes_intregs)(sp),%ebp
-
-       /* pop the execution state off the stack */
-       add             $(sizeexecutionstate),sp
-
-       /* jump to new code, hold your thumbs! ;) */
-       ret
-
-#endif /* defined(ENABLE_REPLACEMENT) */
-
-
 /************************ function asm_builtin_x2x *****************************
 *                                                                              *
 *   Wrapper functions for corner cases                                         *