@@ -16,8 +16,8 @@ use super::{
1616 FnVal , ImmTy , Immediate , InterpCx , Machine , OpTy , PlaceTy , err_inval, interp_ok, throw_ub,
1717 throw_ub_custom,
1818} ;
19- use crate :: fluent_generated as fluent;
2019use crate :: interpret:: Writeable ;
20+ use crate :: { enter_trace_span, fluent_generated as fluent} ;
2121
2222impl < ' tcx , M : Machine < ' tcx > > InterpCx < ' tcx , M > {
2323 pub fn cast (
@@ -81,13 +81,16 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
8181 // The src operand does not matter, just its type
8282 match * src. layout . ty . kind ( ) {
8383 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+ } ;
9194
9295 let fn_ptr = self . fn_ptr ( FnVal :: Instance ( instance) ) ;
9396 self . write_pointer ( fn_ptr, dest) ?;
@@ -114,12 +117,15 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
114117 // The src operand does not matter, just its type
115118 match * src. layout . ty . kind ( ) {
116119 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+ } ;
123129 let fn_ptr = self . fn_ptr ( FnVal :: Instance ( instance) ) ;
124130 self . write_pointer ( fn_ptr, dest) ?;
125131 }
0 commit comments