diff options
| author | Graydon Hoare <[email protected]> | 2010-07-30 19:14:42 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-07-30 19:14:42 -0700 |
| commit | e85f6ca4d39dbca8e3c43a58d41254199af238e6 (patch) | |
| tree | 410f57e460a75da683bd2d8bb02e8a9d7253db1c /src/boot/be | |
| parent | Merge branch 'master' of [email protected]:graydon/rust (diff) | |
| download | rust-e85f6ca4d39dbca8e3c43a58d41254199af238e6.tar.xz rust-e85f6ca4d39dbca8e3c43a58d41254199af238e6.zip | |
Patch up another place where the newly-expanded 'closure-ptr' implicit arg needs to be passed. Amazingly, it mostly-worked without this. On some platforms.
Diffstat (limited to 'src/boot/be')
| -rw-r--r-- | src/boot/be/x86.ml | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/boot/be/x86.ml b/src/boot/be/x86.ml index 0d0206d7..7e1614a6 100644 --- a/src/boot/be/x86.ml +++ b/src/boot/be/x86.ml @@ -784,7 +784,8 @@ let crawl_stack_calling_glue (codefix skip_jmp_fix)); (* if glue-fn is nonzero *) add ecx esi; (* add crate ptr to disp. *) push (ro ebp); (* frame-arg *) - push (c task_ptr); (* form usual call to glue *) + push (immi 0L); (* null closure-ptr *) + push (c task_ptr); (* self-task ptr *) push (immi 0L); (* outptr *) emit (Il.call (rc eax) (reg_codeptr (h ecx))); (* call glue_fn, trashing eax. *) |