@@ -16,8 +16,8 @@ use super::{
16
16
FnVal , ImmTy , Immediate , InterpCx , Machine , OpTy , PlaceTy , err_inval, interp_ok, throw_ub,
17
17
throw_ub_custom,
18
18
} ;
19
- use crate :: fluent_generated as fluent;
20
19
use crate :: interpret:: Writeable ;
20
+ use crate :: { enter_trace_span, fluent_generated as fluent} ;
21
21
22
22
impl < ' tcx , M : Machine < ' tcx > > InterpCx < ' tcx , M > {
23
23
pub fn cast (
@@ -81,13 +81,16 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
81
81
// The src operand does not matter, just its type
82
82
match * src. layout . ty . kind ( ) {
83
83
ty:: FnDef ( def_id, args) => {
84
- let instance = ty:: Instance :: resolve_for_fn_ptr (
85
- * self . tcx ,
86
- self . typing_env ,
87
- def_id,
88
- args,
89
- )
90
- . ok_or_else ( || err_inval ! ( TooGeneric ) ) ?;
84
+ let instance = {
85
+ let _trace = enter_trace_span ! ( M , resolve:: resolve_for_fn_ptr, ?def_id) ;
86
+ ty:: Instance :: resolve_for_fn_ptr (
87
+ * self . tcx ,
88
+ self . typing_env ,
89
+ def_id,
90
+ args,
91
+ )
92
+ . ok_or_else ( || err_inval ! ( TooGeneric ) ) ?
93
+ } ;
91
94
92
95
let fn_ptr = self . fn_ptr ( FnVal :: Instance ( instance) ) ;
93
96
self . write_pointer ( fn_ptr, dest) ?;
@@ -114,12 +117,15 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
114
117
// The src operand does not matter, just its type
115
118
match * src. layout . ty . kind ( ) {
116
119
ty:: Closure ( def_id, args) => {
117
- let instance = ty:: Instance :: resolve_closure (
118
- * self . tcx ,
119
- def_id,
120
- args,
121
- ty:: ClosureKind :: FnOnce ,
122
- ) ;
120
+ let instance = {
121
+ let _trace = enter_trace_span ! ( M , resolve:: resolve_closure, ?def_id) ;
122
+ ty:: Instance :: resolve_closure (
123
+ * self . tcx ,
124
+ def_id,
125
+ args,
126
+ ty:: ClosureKind :: FnOnce ,
127
+ )
128
+ } ;
123
129
let fn_ptr = self . fn_ptr ( FnVal :: Instance ( instance) ) ;
124
130
self . write_pointer ( fn_ptr, dest) ?;
125
131
}
0 commit comments