aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <[email protected]>2011-03-21 11:59:14 -0400
committerRafael Ávila de Espíndola <[email protected]>2011-03-21 11:59:14 -0400
commite687dd5ce7fe22faa7c93f9a3ed9391e78991c0e (patch)
tree9f1e3cec6ab79ee953ee17faf5d69e6690a6a6b0
parentMove calls to PtrToInt out of trans_upcall2. (diff)
downloadrust-e687dd5ce7fe22faa7c93f9a3ed9391e78991c0e.tar.xz
rust-e687dd5ce7fe22faa7c93f9a3ed9391e78991c0e.zip
Make lltaskptr a regular argument element in args in calls to trans_upcall2.
-rw-r--r--src/comp/middle/trans.rs16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 0158a5ed..420c919e 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -857,22 +857,22 @@ fn get_upcall(&hashmap[str, ValueRef] upcalls,
fn trans_upcall(@block_ctxt cx, str name, vec[ValueRef] args) -> result {
auto cxx = cx.fcx.ccx;
auto lltaskptr = cx.build.PtrToInt(cx.fcx.lltaskptr, T_int());
- auto t = trans_upcall2(cx.build, cxx.glues, lltaskptr,
- cxx.upcalls, cxx.tn, cxx.llmod, name, args);
+ auto args2 = vec(lltaskptr) + args;
+ auto t = trans_upcall2(cx.build, cxx.glues,
+ cxx.upcalls, cxx.tn, cxx.llmod, name, args2);
ret res(cx, t);
}
-fn trans_upcall2(builder b, @glue_fns glues, ValueRef lltaskptr,
+fn trans_upcall2(builder b, @glue_fns glues,
&hashmap[str, ValueRef] upcalls,
type_names tn, ModuleRef llmod, str name,
vec[ValueRef] args) -> ValueRef {
- let int n = (_vec.len[ValueRef](args) as int) + 1;
+ let int n = (_vec.len[ValueRef](args) as int);
let ValueRef llupcall = get_upcall(upcalls, tn, llmod, name, n);
llupcall = llvm.LLVMConstPointerCast(llupcall, T_int());
let ValueRef llglue = glues.upcall_glues.(n);
let vec[ValueRef] call_args = vec(llupcall);
- call_args += vec( b.ZExtOrBitCast(lltaskptr, T_int()));
for (ValueRef a in args) {
call_args += vec(b.ZExtOrBitCast(a, T_int()));
@@ -5694,9 +5694,9 @@ fn trans_exit_task_glue(@glue_fns glues,
auto entrybb = llvm.LLVMAppendBasicBlock(llfn, _str.buf("entry"));
auto build = new_builder(entrybb);
auto tptr = build.PtrToInt(lltaskptr, T_int());
-
- trans_upcall2(build, glues, tptr,
- upcalls, tn, llmod, "upcall_exit", V_args);
+ auto V_args2 = vec(tptr) + V_args;
+ trans_upcall2(build, glues,
+ upcalls, tn, llmod, "upcall_exit", V_args2);
build.RetVoid();
}