diff options
| author | Eric Holk <eholk@mozilla.com> | 2011-05-23 19:29:45 -0700 |
|---|---|---|
| committer | Eric Holk <eholk@mozilla.com> | 2011-05-27 15:20:58 -0700 |
| commit | dad426419c1c93a90d458d8eee307df7ddb0fc05 (patch) | |
| tree | d13d895aa04d101d73f7fa6cc3554861c45662d0 /src/rt/rust_task.cpp | |
| parent | bb4c7a9c6818bef1851639f03bb3b5b5a90dd45f (diff) | |
| download | rust-dad426419c1c93a90d458d8eee307df7ddb0fc05.tar.gz rust-dad426419c1c93a90d458d8eee307df7ddb0fc05.zip | |
Working on 2 argument spawn. The arguments seem to be copied correctly once, but then they get lost.
Diffstat (limited to 'src/rt/rust_task.cpp')
| -rw-r--r-- | src/rt/rust_task.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp index e937bd42ffc..e18259fba60 100644 --- a/src/rt/rust_task.cpp +++ b/src/rt/rust_task.cpp @@ -171,7 +171,12 @@ rust_task::start(uintptr_t spawnee_fn, src += 1; // spawn-call task slot src += 1; // spawn-call closure-or-obj slot - *spp-- = (uintptr_t) *src; // vec + spp -= (args_size / sizeof(uintptr_t)) - 1; + memmove(spp, src, args_size); + spp--; + + //*spp-- = (uintptr_t) *src; // vec + *spp-- = (uintptr_t) 0x0; // closure-or-obj *spp-- = (uintptr_t) this; // task *spp-- = (uintptr_t) dummy_ret; // output address @@ -179,7 +184,6 @@ rust_task::start(uintptr_t spawnee_fn, I(dom, spp == align_down(spp)); *spp-- = (uintptr_t) (uintptr_t) spawnee_fn; - *spp-- = (uintptr_t) 0x0; // retp *spp-- = (uintptr_t) rust_new_exit_task_glue; |
