@@ -38,11 +38,10 @@ fn declare_upcalls(targ_cfg: @session::config,
38
38
let mut arg_tys: [ TypeRef ] = [ ] ;
39
39
for tys. each { |t| arg_tys += [ t] ; }
40
40
let fn_ty = T_fn ( arg_tys, rv) ;
41
- let f = base:: decl_cdecl_fn ( llmod, prefix + name, fn_ty) ;
42
- if name != "fail" {
43
- base:: set_no_unwind ( f) ;
44
- }
45
- ret f;
41
+ ret base:: decl_cdecl_fn ( llmod, prefix + name, fn_ty) ;
42
+ }
43
+ fn nothrow ( f : ValueRef ) -> ValueRef {
44
+ base:: set_no_unwind ( f) ; f
46
45
}
47
46
let d = bind decl ( llmod, "upcall_" , _, _, _) ;
48
47
let dv = bind decl ( llmod, "upcall_" , _, _, T_void ( ) ) ;
@@ -55,35 +54,42 @@ fn declare_upcalls(targ_cfg: @session::config,
55
54
T_ptr ( T_i8 ( ) ) ,
56
55
size_t] ) ,
57
56
malloc :
58
- d ( "malloc" , [ T_ptr ( tydesc_type) ] , T_ptr ( T_i8 ( ) ) ) ,
57
+ nothrow ( d ( "malloc" , [ T_ptr ( tydesc_type) ] ,
58
+ T_ptr ( T_i8 ( ) ) ) ) ,
59
59
free :
60
- dv ( "free" , [ T_ptr ( T_i8 ( ) ) ] ) ,
60
+ nothrow ( dv ( "free" , [ T_ptr ( T_i8 ( ) ) ] ) ) ,
61
61
validate_box :
62
- dv ( "validate_box" , [ T_ptr ( T_i8 ( ) ) ] ) ,
62
+ nothrow ( dv ( "validate_box" , [ T_ptr ( T_i8 ( ) ) ] ) ) ,
63
63
shared_malloc :
64
- d ( "shared_malloc" , [ size_t] , T_ptr ( T_i8 ( ) ) ) ,
64
+ nothrow ( d ( "shared_malloc" , [ size_t] , T_ptr ( T_i8 ( ) ) ) ) ,
65
65
shared_free :
66
- dv ( "shared_free" , [ T_ptr ( T_i8 ( ) ) ] ) ,
66
+ nothrow ( dv ( "shared_free" , [ T_ptr ( T_i8 ( ) ) ] ) ) ,
67
67
shared_realloc :
68
- d ( "shared_realloc" , [ T_ptr ( T_i8 ( ) ) , size_t] , T_ptr ( T_i8 ( ) ) ) ,
68
+ nothrow ( d ( "shared_realloc" , [ T_ptr ( T_i8 ( ) ) , size_t] ,
69
+ T_ptr ( T_i8 ( ) ) ) ) ,
69
70
mark :
70
71
d ( "mark" , [ T_ptr ( T_i8 ( ) ) ] , int_t) ,
71
72
vec_grow :
72
- dv ( "vec_grow" , [ T_ptr ( T_ptr ( opaque_vec_t) ) , int_t] ) ,
73
+ nothrow ( dv ( "vec_grow" , [ T_ptr ( T_ptr ( opaque_vec_t) ) , int_t] ) ) ,
73
74
str_new_uniq :
74
- d ( "str_new_uniq" , [ T_ptr ( T_i8 ( ) ) , int_t] , T_ptr ( opaque_vec_t) ) ,
75
+ nothrow ( d ( "str_new_uniq" , [ T_ptr ( T_i8 ( ) ) , int_t] ,
76
+ T_ptr ( opaque_vec_t) ) ) ,
75
77
str_new_shared :
76
- d ( "str_new_shared" , [ T_ptr ( T_i8 ( ) ) , int_t] , T_ptr ( T_i8 ( ) ) ) ,
78
+ nothrow ( d ( "str_new_shared" , [ T_ptr ( T_i8 ( ) ) , int_t] ,
79
+ T_ptr ( T_i8 ( ) ) ) ) ,
77
80
str_concat :
78
- d ( "str_concat" , [ T_ptr ( opaque_vec_t) , T_ptr ( opaque_vec_t) ] ,
79
- T_ptr ( opaque_vec_t) ) ,
81
+ nothrow ( d ( "str_concat" , [ T_ptr ( opaque_vec_t) ,
82
+ T_ptr ( opaque_vec_t) ] ,
83
+ T_ptr ( opaque_vec_t) ) ) ,
80
84
cmp_type :
81
85
dv ( "cmp_type" ,
82
86
[ T_ptr ( T_i1 ( ) ) , T_ptr ( tydesc_type) ,
83
- T_ptr ( T_ptr ( tydesc_type) ) , T_ptr ( T_i8 ( ) ) , T_ptr ( T_i8 ( ) ) ,
87
+ T_ptr ( T_ptr ( tydesc_type) ) , T_ptr ( T_i8 ( ) ) ,
88
+ T_ptr ( T_i8 ( ) ) ,
84
89
T_i8 ( ) ] ) ,
85
90
log_type :
86
- dv ( "log_type" , [ T_ptr ( tydesc_type) , T_ptr ( T_i8 ( ) ) , T_i32 ( ) ] ) ,
91
+ dv ( "log_type" , [ T_ptr ( tydesc_type) ,
92
+ T_ptr ( T_i8 ( ) ) , T_i32 ( ) ] ) ,
87
93
alloc_c_stack :
88
94
d ( "alloc_c_stack" , [ size_t] , T_ptr ( T_i8 ( ) ) ) ,
89
95
call_shim_on_c_stack :
@@ -95,9 +101,9 @@ fn declare_upcalls(targ_cfg: @session::config,
95
101
d ( "call_shim_on_rust_stack" ,
96
102
[ T_ptr ( T_i8 ( ) ) , T_ptr ( T_i8 ( ) ) ] , int_t) ,
97
103
rust_personality :
98
- d ( "rust_personality" , [ ] , T_i32 ( ) ) ,
104
+ nothrow ( d ( "rust_personality" , [ ] , T_i32 ( ) ) ) ,
99
105
reset_stack_limit :
100
- dv ( "reset_stack_limit" , [ ] )
106
+ nothrow ( dv ( "reset_stack_limit" , [ ] ) )
101
107
} ;
102
108
}
103
109
//
0 commit comments