Add tracing to various miscellaneous functions
Also use tracing macro syntax instead of format()
This commit is contained in:
parent
a1531335fe
commit
dc72692591
5 changed files with 15 additions and 5 deletions
|
|
@ -325,8 +325,7 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
|||
let _span = enter_trace_span!(
|
||||
M,
|
||||
"instantiate_from_frame_and_normalize_erasing_regions",
|
||||
"{}",
|
||||
frame.instance
|
||||
%frame.instance
|
||||
);
|
||||
frame
|
||||
.instance
|
||||
|
|
@ -582,6 +581,7 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
|||
span: Span,
|
||||
layout: Option<TyAndLayout<'tcx>>,
|
||||
) -> InterpResult<'tcx, OpTy<'tcx, M::Provenance>> {
|
||||
let _trace = enter_trace_span!(M, const_eval::eval_mir_constant, ?val);
|
||||
let const_val = val.eval(*self.tcx, self.typing_env, span).map_err(|err| {
|
||||
if M::ALL_CONSTS_ARE_PRECHECKED {
|
||||
match err {
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ use super::{
|
|||
MemoryKind, Operand, PlaceTy, Pointer, Provenance, ReturnAction, Scalar, from_known_layout,
|
||||
interp_ok, throw_ub, throw_unsup,
|
||||
};
|
||||
use crate::errors;
|
||||
use crate::{enter_trace_span, errors};
|
||||
|
||||
// The Phantomdata exists to prevent this type from being `Send`. If it were sent across a thread
|
||||
// boundary and dropped in the other thread, it would exit the span in the other thread.
|
||||
|
|
@ -386,6 +386,9 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
|||
|
||||
// Make sure all the constants required by this frame evaluate successfully (post-monomorphization check).
|
||||
for &const_ in body.required_consts() {
|
||||
// We can't use `eval_mir_constant` here as that assumes that all required consts have
|
||||
// already been checked, so we need a separate tracing call.
|
||||
let _trace = enter_trace_span!(M, const_eval::required_consts, ?const_.const_);
|
||||
let c =
|
||||
self.instantiate_from_current_frame_and_normalize_erasing_regions(const_.const_)?;
|
||||
c.eval(*self.tcx, self.typing_env, const_.span).map_err(|err| {
|
||||
|
|
|
|||
|
|
@ -436,7 +436,10 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
|||
.map(|arg| self.eval_fn_call_argument(&arg.node))
|
||||
.collect::<InterpResult<'tcx, Vec<_>>>()?;
|
||||
|
||||
let fn_sig_binder = func.layout.ty.fn_sig(*self.tcx);
|
||||
let fn_sig_binder = {
|
||||
let _trace = enter_trace_span!(M, "fn_sig", ty = ?func.layout.ty.kind());
|
||||
func.layout.ty.fn_sig(*self.tcx)
|
||||
};
|
||||
let fn_sig = self.tcx.normalize_erasing_late_bound_regions(self.typing_env, fn_sig_binder);
|
||||
let extra_args = &args[fn_sig.inputs().len()..];
|
||||
let extra_args =
|
||||
|
|
|
|||
|
|
@ -1418,7 +1418,9 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
|
|||
let _span = enter_trace_span!(
|
||||
M,
|
||||
"validate_operand",
|
||||
"recursive={recursive}, reset_provenance_and_padding={reset_provenance_and_padding}, val={val:?}"
|
||||
recursive,
|
||||
reset_provenance_and_padding,
|
||||
?val,
|
||||
);
|
||||
|
||||
// Note that we *could* actually be in CTFE here with `-Zextra-const-ub-checks`, but it's
|
||||
|
|
|
|||
|
|
@ -1111,6 +1111,7 @@ impl<'tcx> Machine<'tcx> for MiriMachine<'tcx> {
|
|||
) -> InterpResult<'tcx, Option<(&'tcx mir::Body<'tcx>, ty::Instance<'tcx>)>> {
|
||||
// For foreign items, try to see if we can emulate them.
|
||||
if ecx.tcx.is_foreign_item(instance.def_id()) {
|
||||
let _trace = enter_trace_span!("emulate_foreign_item");
|
||||
// An external function call that does not have a MIR body. We either find MIR elsewhere
|
||||
// or emulate its effect.
|
||||
// This will be Ok(None) if we're emulating the intrinsic entirely within Miri (no need
|
||||
|
|
@ -1123,6 +1124,7 @@ impl<'tcx> Machine<'tcx> for MiriMachine<'tcx> {
|
|||
}
|
||||
|
||||
// Otherwise, load the MIR.
|
||||
let _trace = enter_trace_span!("load_mir");
|
||||
interp_ok(Some((ecx.load_mir(instance.def, None)?, instance)))
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue