diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-02-09 12:26:11 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-02-09 19:00:16 -0800 |
| commit | 8ad9cf8087f2d1f1badfb7c8616c0b11cc4aa6db (patch) | |
| tree | ebc0111f1c92014deb712d37d06e6d76e560efdc /src/rt | |
| parent | 5d2442d89cbfbba03545a877b7768fe2ac34ef82 (diff) | |
| download | rust-8ad9cf8087f2d1f1badfb7c8616c0b11cc4aa6db.tar.gz rust-8ad9cf8087f2d1f1badfb7c8616c0b11cc4aa6db.zip | |
rt: Add more stack-switching commentary
Diffstat (limited to 'src/rt')
| -rw-r--r-- | src/rt/rust_task.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp index 6d61065d551..2902e32a439 100644 --- a/src/rt/rust_task.cpp +++ b/src/rt/rust_task.cpp @@ -732,6 +732,11 @@ rust_task::config_notify(chan_handle chan) { notify_chan = chan; } +// This is the function that switches stacks by calling another function with +// a single void* argument while changing the stack pointer. It has a funny +// name because gdb doesn't normally like to backtrace through split stacks +// (thinks it indicates a bug), but has a special case to allow functions +// named __morestack to move the stack pointer around. extern "C" void __morestack(void *args, void *fn_ptr, uintptr_t stack_ptr); static uintptr_t |
