@@ -17,7 +17,6 @@ import trans::T_ptr;
17
17
import trans:: T_size_t ;
18
18
import trans:: T_str ;
19
19
import trans:: T_taskptr ;
20
- import trans:: T_tydesc ;
21
20
import trans:: T_void ;
22
21
import lib:: llvm:: type_names;
23
22
import lib:: llvm:: llvm:: ModuleRef ;
@@ -62,16 +61,17 @@ type upcalls =
62
61
ValueRef ivec_resize_shared ,
63
62
ValueRef ivec_spill_shared ) ;
64
63
65
- fn declare_upcalls ( type_names tn, ModuleRef llmod) -> @upcalls {
66
- fn decl ( type_names tn, ModuleRef llmod, str name , vec[ TypeRef ] tys ,
67
- TypeRef rv) -> ValueRef {
64
+ fn declare_upcalls ( type_names tn, TypeRef tydesc_type , ModuleRef llmod)
65
+ -> @upcalls {
66
+ fn decl ( type_names tn, TypeRef tydesc_type , ModuleRef llmod, str name ,
67
+ vec[ TypeRef ] tys , TypeRef rv) -> ValueRef {
68
68
let TypeRef [ ] arg_tys = ~[ T_taskptr ( tn) ] ;
69
69
for ( TypeRef t in tys) { arg_tys += ~[ t] ; }
70
70
auto fn_ty = T_fn ( arg_tys, rv) ;
71
71
ret trans:: decl_cdecl_fn ( llmod, "upcall_" + name, fn_ty) ;
72
72
}
73
- auto dv = bind decl ( tn, llmod, _, _, T_void ( ) ) ;
74
- auto d = bind decl ( tn, llmod, _, _, _) ;
73
+ auto dv = bind decl ( tn, tydesc_type , llmod, _, _, T_void ( ) ) ;
74
+ auto d = bind decl ( tn, tydesc_type , llmod, _, _, _) ;
75
75
// FIXME: Sigh:.. remove this when I fix the typechecker pushdown.
76
76
// --pcwalton
77
77
@@ -98,27 +98,27 @@ fn declare_upcalls(type_names tn, ModuleRef llmod) -> @upcalls {
98
98
_fail=dv ( "fail" , [ T_ptr ( T_i8 ( ) ) , T_ptr ( T_i8 ( ) ) , T_size_t ( ) ] ) ,
99
99
kill=dv ( "kill" , [ T_taskptr ( tn) ] ) ,
100
100
exit=dv ( "exit" , empty_vec) ,
101
- malloc=d ( "malloc" , [ T_size_t ( ) , T_ptr ( T_tydesc ( tn ) ) ] ,
101
+ malloc=d ( "malloc" , [ T_size_t ( ) , T_ptr ( tydesc_type ) ] ,
102
102
T_ptr ( T_i8 ( ) ) ) ,
103
103
free=dv ( "free" , [ T_ptr ( T_i8 ( ) ) , T_int ( ) ] ) ,
104
104
shared_malloc=d ( "shared_malloc" ,
105
- [ T_size_t ( ) , T_ptr ( T_tydesc ( tn ) ) ] , T_ptr ( T_i8 ( ) ) ) ,
105
+ [ T_size_t ( ) , T_ptr ( tydesc_type ) ] , T_ptr ( T_i8 ( ) ) ) ,
106
106
shared_free=dv ( "shared_free" , [ T_ptr ( T_i8 ( ) ) ] ) ,
107
107
mark=d ( "mark" , [ T_ptr ( T_i8 ( ) ) ] , T_int ( ) ) ,
108
108
new_str=d ( "new_str" , [ T_ptr ( T_i8 ( ) ) , T_size_t ( ) ] ,
109
109
T_ptr ( T_str ( ) ) ) ,
110
- dup_str=d ( "dup_str" , [ T_taskptr ( tn) , T_ptr ( T_str ( ) ) ] ,
110
+ dup_str=d ( "dup_str" , [ T_taskptr ( tn) , T_ptr ( T_str ( ) ) ] ,
111
111
T_ptr ( T_str ( ) ) ) ,
112
- new_vec=d ( "new_vec" , [ T_size_t ( ) , T_ptr ( T_tydesc ( tn ) ) ] ,
112
+ new_vec=d ( "new_vec" , [ T_size_t ( ) , T_ptr ( tydesc_type ) ] ,
113
113
T_opaque_vec_ptr ( ) ) ,
114
114
vec_append=d ( "vec_append" ,
115
- [ T_ptr ( T_tydesc ( tn ) ) , T_ptr ( T_tydesc ( tn ) ) ,
115
+ [ T_ptr ( tydesc_type ) , T_ptr ( tydesc_type ) ,
116
116
T_ptr ( T_opaque_vec_ptr ( ) ) , T_opaque_vec_ptr ( ) ,
117
117
T_bool ( ) ] , T_void ( ) ) ,
118
118
get_type_desc=d ( "get_type_desc" ,
119
119
[ T_ptr ( T_nil ( ) ) , T_size_t ( ) , T_size_t ( ) ,
120
- T_size_t ( ) , T_ptr ( T_ptr ( T_tydesc ( tn ) ) ) ] ,
121
- T_ptr ( T_tydesc ( tn ) ) ) ,
120
+ T_size_t ( ) , T_ptr ( T_ptr ( tydesc_type ) ) ] ,
121
+ T_ptr ( tydesc_type ) ) ,
122
122
new_task=d ( "new_task" , [ T_ptr ( T_str ( ) ) ] , T_taskptr ( tn) ) ,
123
123
start_task=d ( "start_task" ,
124
124
[ T_taskptr ( tn) , T_int ( ) , T_int ( ) , T_size_t ( ) ] ,
0 commit comments