diff options
| author | Brian Anderson <banderson@mozilla.com> | 2011-11-30 17:54:11 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2011-11-30 20:31:33 -0800 |
| commit | f2de42c39ac5e2ff3bc916b4bbff1db91181d9fa (patch) | |
| tree | 249765cf6b484ce6d3575fac9160b07d0632ba15 /src/rt/arch | |
| parent | dd48a1af58260eb68d87a08cc6dd1b0a589a0eae (diff) | |
| download | rust-f2de42c39ac5e2ff3bc916b4bbff1db91181d9fa.tar.gz rust-f2de42c39ac5e2ff3bc916b4bbff1db91181d9fa.zip | |
rt: Reorganize stack growth code
Diffstat (limited to 'src/rt/arch')
| -rw-r--r-- | src/rt/arch/i386/morestack.S | 18 | ||||
| -rw-r--r-- | src/rt/arch/x86_64/morestack.S | 24 |
2 files changed, 20 insertions, 22 deletions
diff --git a/src/rt/arch/i386/morestack.S b/src/rt/arch/i386/morestack.S index 2805fc2b10e..7162f859a72 100644 --- a/src/rt/arch/i386/morestack.S +++ b/src/rt/arch/i386/morestack.S @@ -6,14 +6,14 @@ // prolog when we run out. #if defined(__APPLE__) || defined(_WIN32) -#define RUST_NEW_STACK2 _rust_new_stack2 -#define RUST_DEL_STACK _rust_del_stack +#define UPCALL_NEW_STACK _upcall_new_stack +#define UPCALL_DEL_STACK _upcall_del_stack #define RUST_GET_TASK _rust_get_task #define UPCALL_CALL_C _upcall_call_shim_on_c_stack #define MORESTACK ___morestack #else -#define RUST_NEW_STACK2 rust_new_stack2 -#define RUST_DEL_STACK rust_del_stack +#define UPCALL_NEW_STACK upcall_new_stack +#define UPCALL_DEL_STACK upcall_del_stack #define RUST_GET_TASK rust_get_task #define UPCALL_CALL_C upcall_call_shim_on_c_stack #define MORESTACK __morestack @@ -22,11 +22,9 @@ #define ALIGNMENT 8 #define RETURN_OFFSET 7 -.globl RUST_NEW_STACK -.globl RUST_DEL_STACK -.globl RUST_GET_PREV_STACK +.globl UPCALL_NEW_STACK +.globl UPCALL_DEL_STACK .globl RUST_GET_TASK -.globl UPCALL_ALLOC_C_STACK .globl UPCALL_CALL_C_STACK .globl MORESTACK @@ -64,7 +62,7 @@ MORESTACK: movl 32(%esp),%eax // The amount of stack needed movl %eax,8(%esp) - movl $RUST_NEW_STACK2,4(%esp) + movl $UPCALL_NEW_STACK,4(%esp) leal 8(%esp), %eax movl %eax,(%esp) call UPCALL_CALL_C @@ -81,7 +79,7 @@ MORESTACK: // Switch back to the rust stack movl %ebp, %esp - pushl $RUST_DEL_STACK + pushl $UPCALL_DEL_STACK pushl $0 call UPCALL_CALL_C diff --git a/src/rt/arch/x86_64/morestack.S b/src/rt/arch/x86_64/morestack.S index ea35992a3f5..556a12b4ecb 100644 --- a/src/rt/arch/x86_64/morestack.S +++ b/src/rt/arch/x86_64/morestack.S @@ -6,15 +6,15 @@ // prolog when we run out. #if defined(__APPLE__) || defined(_WIN32) -#define RUST_NEW_STACK2 _rust_new_stack2 -#define RUST_DEL_STACK _rust_del_stack -#define UPCALL_CALL_C _upcall_call_shim_on_c_stack -#define MORESTACK ___morestack +#define UPCALL_NEW_STACK _upcall_new_stack +#define UPCALL_DEL_STACK _upcall_del_stack +#define UPCALL_CALL_C _upcall_call_shim_on_c_stack +#define MORESTACK ___morestack #else -#define RUST_NEW_STACK2 rust_new_stack2 -#define RUST_DEL_STACK rust_del_stack -#define UPCALL_CALL_C upcall_call_shim_on_c_stack -#define MORESTACK __morestack +#define UPCALL_NEW_STACK upcall_new_stack +#define UPCALL_DEL_STACK upcall_del_stack +#define UPCALL_CALL_C upcall_call_shim_on_c_stack +#define MORESTACK __morestack #endif // Naturally, nobody can agree as to @@ -30,8 +30,8 @@ # define ARG2 %rdx #endif -.globl RUST_NEW_STACK2 -.globl RUST_DEL_STACK +.globl UPCALL_NEW_STACK +.globl UPCALL_DEL_STACK .globl UPCALL_CALL_C .globl MORESTACK @@ -79,7 +79,7 @@ MORESTACK: pushq %rcx // Address of stack arguments pushq %r10 // The amount of stack needed - leaq RUST_NEW_STACK2@PLT(%rip), %rsi + leaq UPCALL_NEW_STACK@PLT(%rip), %rsi movq %rsp, %rdi call UPCALL_CALL_C@PLT @@ -106,7 +106,7 @@ MORESTACK: // Align the stack again pushq $0 - leaq RUST_DEL_STACK@PLT(%rip), %rsi + leaq UPCALL_DEL_STACK@PLT(%rip), %rsi movq $0, %rdi call UPCALL_CALL_C@PLT |
