]> git.unchartedbackwaters.co.uk Git - francis/libjit.git/commitdiff
remove stack frame set up and restore instructions from redirector
authorAleksey Demakov <ademakov@gmail.com>
Thu, 25 Jan 2007 20:55:53 +0000 (20:55 +0000)
committerAleksey Demakov <ademakov@gmail.com>
Thu, 25 Jan 2007 20:55:53 +0000 (20:55 +0000)
ChangeLog
jit/jit-apply-x86.c
jit/jit-apply-x86.h

index d75a7d83428016f22ab0f78cf95237c469418f4e..497d5e9e8a0295792d53f9d5f2a4f3fb1f18cbba 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-01-26  Aleksey Demakov  <ademakov@gmail.com>
+
+       * jit/jit-apply-x86.c (_jit_create_redirector): redirector does not
+       use stack frame so remove frame set up and restore instructions.
+
 2007-01-23  Aleksey Demakov  <ademakov@gmail.com>
 
        * jit/jit-internal.h, jit/jit-function.c: remove the closure_entry
index ab87f7a522276b225a85002f18f85136d3179519..33548f78db10ebb9f4f7eaf51ce0b6e08d3710a1 100644 (file)
@@ -170,10 +170,6 @@ void *_jit_create_redirector(unsigned char *buf, void *func,
 {
        void *start = (void *)buf;
 
-       /* Set up a new stack frame */
-       x86_push_reg(buf, X86_EBP);
-       x86_mov_reg_reg(buf, X86_EBP, X86_ESP, 4);
-
        /* Save the fastcall registers, if necessary */
 #if JIT_APPLY_X86_FASTCALL == 1
        if(abi == (int)jit_abi_fastcall)
@@ -201,9 +197,6 @@ void *_jit_create_redirector(unsigned char *buf, void *func,
        }
 #endif
 
-       /* Restore the value of EBP */
-       x86_pop_reg(buf, X86_EBP);
-
        /* Jump to the function that the redirector indicated */
        x86_jump_reg(buf, X86_EAX);
 
index d03949bd5f7dec49404d87c2576ab8075193ec09..677129f1c3ba338708bb5c505380d65b2da16f8e 100644 (file)
  * The number of bytes that are needed for a redirector stub.
  * This includes any extra bytes that are needed for alignment.
  */
-#define        jit_redirector_size             32
+#define        jit_redirector_size             24
 
 /*
  * The number of bytes that are needed for a indirector stub.