aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <[email protected]>2011-03-09 15:35:54 -0500
committerRafael Ávila de Espíndola <[email protected]>2011-03-09 15:35:54 -0500
commit02f669ca6759f94deb87fb8dc3303eb08544c5a0 (patch)
treef40d09891bca785a194fec72ad7e34605a94240d /src
parentFix access to the rust stack. (diff)
downloadrust-02f669ca6759f94deb87fb8dc3303eb08544c5a0.tar.xz
rust-02f669ca6759f94deb87fb8dc3303eb08544c5a0.zip
Pass the task pointer as just another i32.
Diffstat (limited to 'src')
-rw-r--r--src/comp/middle/trans.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 5a50fbee..0b513744 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -832,7 +832,7 @@ fn decl_upcall_glue(ModuleRef llmod, type_names tn, uint _n) -> ValueRef {
let str s = abi.upcall_glue_name(n);
let vec[TypeRef] args =
vec(T_int(), // callee
- T_taskptr(tn)) // taskptr
+ T_int()) // taskptr
+ _vec.init_elt[TypeRef](T_int(), n as uint);
ret decl_fastcall_fn(llmod, s, T_fn(args, T_int()));
@@ -856,7 +856,8 @@ fn trans_upcall(@block_ctxt cx, str name, vec[ValueRef] args) -> result {
llupcall = llvm.LLVMConstPointerCast(llupcall, T_int());
let ValueRef llglue = cx.fcx.ccx.glues.upcall_glues.(n);
- let vec[ValueRef] call_args = vec(llupcall, cx.fcx.lltaskptr);
+ let vec[ValueRef] call_args = vec(llupcall);
+ call_args += cx.build.PtrToInt(cx.fcx.lltaskptr, T_int());
for (ValueRef a in args) {
call_args += cx.build.ZExtOrBitCast(a, T_int());