@@ -832,8 +832,7 @@ fn decl_upcall_glue(ModuleRef llmod, type_names tn, uint _n) -> ValueRef {
832
832
let int n = _n as int ;
833
833
let str s = abi. upcall_glue_name ( n) ;
834
834
let vec[ TypeRef ] args =
835
- vec ( T_int ( ) , // callee
836
- T_int ( ) ) // taskptr
835
+ vec ( T_int ( ) ) // callee
837
836
+ _vec. init_elt [ TypeRef ] ( T_int ( ) , n as uint ) ;
838
837
839
838
ret decl_fastcall_fn ( llmod, s, T_fn ( args, T_int ( ) ) ) ;
@@ -864,7 +863,7 @@ fn trans_upcall2(builder b, @glue_fns glues, ValueRef lltaskptr,
864
863
& hashmap[ str, ValueRef ] upcalls ,
865
864
type_names tn, ModuleRef llmod, str name ,
866
865
vec[ ValueRef ] args ) -> ValueRef {
867
- let int n = _vec. len [ ValueRef ] ( args) as int ;
866
+ let int n = ( _vec. len [ ValueRef ] ( args) as int ) + 1 ;
868
867
let ValueRef llupcall = get_upcall ( upcalls, tn, llmod, name, n) ;
869
868
llupcall = llvm. LLVMConstPointerCast ( llupcall, T_int ( ) ) ;
870
869
@@ -6090,7 +6089,7 @@ fn make_glues(ModuleRef llmod, type_names tn) -> @glue_fns {
6090
6089
6091
6090
upcall_glues =
6092
6091
_vec. init_fn [ ValueRef ] ( bind decl_upcall_glue ( llmod, tn, _) ,
6093
- abi. n_upcall_glues as uint ) ,
6092
+ abi. n_upcall_glues + 1 as uint ) ,
6094
6093
no_op_type_glue = decl_no_op_type_glue ( llmod, tn) ,
6095
6094
memcpy_glue = decl_memcpy_glue ( llmod) ,
6096
6095
bzero_glue = decl_bzero_glue ( llmod) ,
0 commit comments