aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2010-07-30 19:14:42 -0700
committerGraydon Hoare <[email protected]>2010-07-30 19:14:42 -0700
commite85f6ca4d39dbca8e3c43a58d41254199af238e6 (patch)
tree410f57e460a75da683bd2d8bb02e8a9d7253db1c /src
parentMerge branch 'master' of [email protected]:graydon/rust (diff)
downloadrust-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')
-rw-r--r--src/boot/be/x86.ml3
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. *)