diff options
| author | Brian Anderson <banderson@mozilla.com> | 2011-11-30 14:33:58 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2011-11-30 20:31:32 -0800 |
| commit | 408d4ec0ef40a2ce650fab8d730a79f08d35054a (patch) | |
| tree | 1406a67fb35e4dec6160fa8bd2072b4ea91bfcf0 /src/rt/arch | |
| parent | 037ca7f7cb00c5eb2def4b766c01aac4c07a9fb4 (diff) | |
| download | rust-408d4ec0ef40a2ce650fab8d730a79f08d35054a.tar.gz rust-408d4ec0ef40a2ce650fab8d730a79f08d35054a.zip | |
rt: Remove upcall_alloc_c_stack/call_c_stack, et. al.
We are using upcall_call_shim_on_c_stack now
Diffstat (limited to 'src/rt/arch')
| -rw-r--r-- | src/rt/arch/i386/ccall.S | 46 | ||||
| -rw-r--r-- | src/rt/arch/x86_64/ccall.S | 68 |
2 files changed, 0 insertions, 114 deletions
diff --git a/src/rt/arch/i386/ccall.S b/src/rt/arch/i386/ccall.S index 370c0e7c990..3d7063d201a 100644 --- a/src/rt/arch/i386/ccall.S +++ b/src/rt/arch/i386/ccall.S @@ -1,51 +1,5 @@ .text -// upcall_call_c_stack(void (*fn)(), void *arg_struct) -// -// Note that we could use |enter| and |leave| but the manuals tell me they're -// slower. -#if defined(__APPLE__) || defined(_WIN32) -.globl _upcall_call_c_stack -.globl _upcall_call_c_stack_i64 -.globl _upcall_call_c_stack_float -_upcall_call_c_stack: -_upcall_call_c_stack_i64: -_upcall_call_c_stack_float: -#else -.globl upcall_call_c_stack -.globl upcall_call_c_stack_i64 -.globl upcall_call_c_stack_float -upcall_call_c_stack: -upcall_call_c_stack_i64: -upcall_call_c_stack_float: -#endif - pushl %ebp - movl %esp,%ebp // save esp - movl 8(%esp),%eax // eax = callee - movl 12(%esp),%esp // switch stack - calll *%eax - movl %ebp,%esp // would like to use "leave" but it's slower - popl %ebp - ret - -#if defined(__APPLE__) || defined(_WIN32) -.globl _upcall_call_c_stack_shim -_upcall_call_c_stack_shim: -#else -.globl upcall_call_c_stack_shim -upcall_call_c_stack_shim: -#endif - pushl %ebp - movl %esp,%ebp // save esp - movl 8(%ebp),%eax // eax = callee - movl 12(%ebp),%esp // switch stack - subl $12,%esp // maintain 16-byte alignment - pushl 12(%ebp) // push ptr to argument block - calll *%eax - movl %ebp,%esp // would like to use "leave" but it's slower - popl %ebp - ret - #if defined(__APPLE__) || defined(_WIN32) .globl _asm_call_on_stack _asm_call_on_stack: diff --git a/src/rt/arch/x86_64/ccall.S b/src/rt/arch/x86_64/ccall.S index 943a2027907..bfec8fc9795 100644 --- a/src/rt/arch/x86_64/ccall.S +++ b/src/rt/arch/x86_64/ccall.S @@ -6,74 +6,6 @@ .text -// upcall_call_c_stack(void (*fn)(), void *new_esp) -// -// Note that we could use |enter| and |leave| but the manuals tell me they're -// slower. -#if defined(__APPLE__) || defined(_WIN32) -.globl _upcall_call_c_stack -.globl _upcall_call_c_stack_i64 -.globl _upcall_call_c_stack_float -_upcall_call_c_stack: -_upcall_call_c_stack_i64: -_upcall_call_c_stack_float: -#else -.globl upcall_call_c_stack -.globl upcall_call_c_stack_i64 -.globl upcall_call_c_stack_float -upcall_call_c_stack: -upcall_call_c_stack_i64: -upcall_call_c_stack_float: -#endif - push %rbp - mov %rsp,%rbp // save rsp - mov ARG1,%rsp // switch stack - - // Hack: the arguments to the function are sitting - // on the stack right now, as in i386 calling - // convention. We need them in registers. - // For now, we just load them into registers. - // - // This is a total hack because it does not consider - // the actual arguments of the target function. - // It fails if there are non-INTEGER class arguments, - // which would get pushed on the stack, or if there are - // additional arguments beyond those that will get - // passed in registers. - mov ARG0,%r11 // Remember target address - mov 0(%rsp),RUSTRT_ARG0_S - mov 8(%rsp),RUSTRT_ARG1_S - mov 16(%rsp),RUSTRT_ARG2_S - mov 24(%rsp),RUSTRT_ARG3_S -# ifdef RUSTRT_ARG4_S - mov 32(%rsp),RUSTRT_ARG4_S -# endif -# ifdef RUSTRT_ARG5_S - mov 40(%rsp),RUSTRT_ARG5_S -# endif - - call *%r11 - mov %rbp,%rsp // would like to use "leave" but it's slower - pop %rbp - ret - -#if defined(__APPLE__) || defined(_WIN32) -.globl _upcall_call_c_stack_shim -_upcall_call_c_stack_shim: -#else -.globl upcall_call_c_stack_shim -upcall_call_c_stack_shim: -#endif - push %rbp - mov %rsp,%rbp // save rsp - mov ARG1,%rsp // switch stack - mov ARG0,%r11 // Remember target address - mov ARG1,ARG0 // setup the parameter shim expects - call *%r11 - mov %rbp,%rsp - pop %rbp - ret - #if defined(__APPLE__) || defined(_WIN32) .globl _asm_call_on_stack _asm_call_on_stack: |
