From 02f669ca6759f94deb87fb8dc3303eb08544c5a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20=C3=81vila=20de=20Esp=C3=ADndola?= Date: Wed, 9 Mar 2011 15:35:54 -0500 Subject: Pass the task pointer as just another i32. --- src/comp/middle/trans.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/comp') 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()); -- cgit v1.2.3