rt: Remove upcall_alloc_c_stack/call_c_stack, et. al.

We are using upcall_call_shim_on_c_stack now
This commit is contained in:
Brian Anderson 2011-11-30 14:33:58 -08:00
parent 037ca7f7cb
commit 408d4ec0ef
4 changed files with 0 additions and 129 deletions

View File

@ -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:

View File

@ -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:

View File

@ -209,16 +209,6 @@ upcall_dynastack_free(void *ptr) {
return rust_scheduler::get_task()->dynastack.free(ptr);
}
/**
* Allocates |nbytes| bytes in the C stack and returns a pointer to the start
* of the allocated space.
*/
extern "C" CDECL void *
upcall_alloc_c_stack(size_t nbytes) {
rust_scheduler *sched = rust_scheduler::get_task()->sched;
return sched->c_context.alloc_stack(nbytes);
}
/**
* Allocates |nbytes| bytes in the C stack and returns a pointer to the start
* of the allocated space.

View File

@ -53,11 +53,6 @@ start_task
vec_reserve_shared
vec_from_buf_shared
unsupervise
upcall_alloc_c_stack
upcall_call_c_stack
upcall_call_c_stack_i64
upcall_call_c_stack_float
upcall_call_c_stack_shim
upcall_cmp_type
upcall_dynastack_alloc
upcall_dynastack_alloc_2