Jack Wrenn 2022-07-21 17:28:24 +00:00
parent 0fa70c3b12
commit c0d0ce95eb
5 changed files with 16 additions and 21 deletions

View File

@ -103,7 +103,7 @@ where
Self { transitions, start, accepting }
}
#[tracing::instrument]
#[instrument(level = "DEBUG")]
#[cfg_attr(feature = "rustc", allow(rustc::potential_query_instability))]
pub(crate) fn from_nfa(nfa: Nfa<R>) -> Self {
let Nfa { transitions: nfa_transitions, start: nfa_start, accepting: nfa_accepting } = nfa;

View File

@ -76,7 +76,6 @@ where
}
/// A `Tree` whose layout is entirely padding of the given width.
#[tracing::instrument]
pub(crate) fn padding(width_in_bytes: usize) -> Self {
Self::Seq(vec![Self::uninit(); width_in_bytes])
}
@ -316,10 +315,7 @@ pub(crate) mod rustc {
tcx,
)?,
AdtKind::Enum => {
tracing::trace!(
adt_def = ?adt_def,
"treeifying enum"
);
tracing::trace!(?adt_def, "treeifying enum");
let mut tree = Tree::uninhabited();
for (idx, discr) in adt_def.discriminants(tcx) {
@ -398,13 +394,13 @@ pub(crate) mod rustc {
// The layout of the variant is prefixed by the discriminant, if any.
if let Some(discr) = discr {
tracing::trace!(discr = ?discr, "treeifying discriminant");
tracing::trace!(?discr, "treeifying discriminant");
let discr_layout = alloc::Layout::from_size_align(
layout_summary.discriminant_size,
clamp(layout_summary.discriminant_align),
)
.unwrap();
tracing::trace!(discr_layout = ?discr_layout, "computed discriminant layout");
tracing::trace!(?discr_layout, "computed discriminant layout");
variant_layout = variant_layout.extend(discr_layout).unwrap().0;
tree = tree.then(Self::from_disr(discr, tcx, layout_summary.discriminant_size));
}
@ -469,11 +465,7 @@ pub(crate) mod rustc {
layout.align().abi.bytes().try_into().unwrap(),
)
.unwrap();
tracing::trace!(
ty = ?ty,
layout = ?layout,
"computed layout for type"
);
tracing::trace!(?ty, ?layout, "computed layout for type");
Ok(layout)
}
}

View File

@ -8,6 +8,9 @@
)]
#![allow(dead_code, unused_variables)]
#[macro_use]
extern crate tracing;
#[cfg(feature = "rustc")]
pub(crate) use rustc_data_structures::fx::{FxHashMap as Map, FxHashSet as Set};

View File

@ -64,7 +64,7 @@ mod rustc {
impl<'tcx> MaybeTransmutableQuery<Ty<'tcx>, TyCtxt<'tcx>> {
/// This method begins by converting `src` and `dst` from `Ty`s to `Tree`s,
/// then computes an answer using those trees.
#[tracing::instrument(skip(self), fields(src = ?self.src, dst = ?self.dst))]
#[instrument(level = "DEBUG", skip(self), fields(src = ?self.src, dst = ?self.dst))]
pub fn answer(self) -> Answer<<TyCtxt<'tcx> as QueryContext>::Ref> {
let query_or_answer = self.map_layouts(|src, dst, scope, &context| {
// Convert `src` and `dst` from their rustc representations, to `Tree`-based
@ -103,14 +103,14 @@ where
/// This method begins by de-def'ing `src` and `dst`, and prunes private paths from `dst`,
/// then converts `src` and `dst` to `Nfa`s, and computes an answer using those NFAs.
#[inline(always)]
#[tracing::instrument(skip(self), fields(src = ?self.src, dst = ?self.dst))]
#[instrument(level = "DEBUG", skip(self), fields(src = ?self.src, dst = ?self.dst))]
pub(crate) fn answer(self) -> Answer<<C as QueryContext>::Ref> {
let assume_visibility = self.assume.visibility;
let query_or_answer = self.map_layouts(|src, dst, scope, context| {
// Remove all `Def` nodes from `src`, without checking their visibility.
let src = src.prune(&|def| true);
tracing::trace!(src = ?src, "pruned src");
tracing::trace!(?src, "pruned src");
// Remove all `Def` nodes from `dst`, additionally...
let dst = if assume_visibility {
@ -121,7 +121,7 @@ where
dst.prune(&|def| context.is_accessible_from(def, scope))
};
tracing::trace!(dst = ?dst, "pruned dst");
tracing::trace!(?dst, "pruned dst");
// Convert `src` from a tree-based representation to an NFA-based representation.
// If the conversion fails because `src` is uninhabited, conclude that the transmutation
@ -152,7 +152,7 @@ where
///
/// This method converts `src` and `dst` to DFAs, then computes an answer using those DFAs.
#[inline(always)]
#[tracing::instrument(skip(self), fields(src = ?self.src, dst = ?self.dst))]
#[instrument(level = "DEBUG", skip(self), fields(src = ?self.src, dst = ?self.dst))]
pub(crate) fn answer(self) -> Answer<<C as QueryContext>::Ref> {
let query_or_answer = self
.map_layouts(|src, dst, scope, context| Ok((Dfa::from_nfa(src), Dfa::from_nfa(dst))));
@ -192,7 +192,7 @@ where
}
#[inline(always)]
#[tracing::instrument(skip(self))]
#[instrument(level = "DEBUG", skip(self))]
fn answer_memo(
&self,
cache: &mut Map<(dfa::State, dfa::State), Answer<<C as QueryContext>::Ref>>,

View File

@ -52,7 +52,7 @@ mod rustc {
type Scope = Ty<'tcx>;
#[tracing::instrument(skip(self))]
#[instrument(level = "DEBUG", skip(self))]
fn is_accessible_from(&self, def: Self::Def, scope: Self::Scope) -> bool {
use layout::rustc::Def;
use rustc_middle::ty;
@ -82,7 +82,7 @@ mod rustc {
false
};
tracing::trace!(ret = ?ret, "ret");
tracing::trace!(?ret, "ret");
ret
}