pub fn validate_operand(
        &self,
        op: OpTy<'tcx, M::PointerTag>,
        path: Vec<PathElem>,
        ref_tracking_for_consts: Option<
            &mut RefTracking<MPlaceTy<'tcx, M::PointerTag>, Vec<PathElem>>,
        >,
    ) -> InterpResult<'tcx> {
        trace!("validate_operand: {:?}, {:?}", *op, op.layout.ty);

        // Construct a visitor
        let mut visitor = ValidityVisitor { path, ref_tracking_for_consts, ecx: self };

        // Try to cast to ptr *once* instead of all the time.
        let op = self.force_op_ptr(op).unwrap_or(op);

        // Run it
        visitor.visit_value(op)
    }
/// This function checks the data at `op`. `op` is assumed to cover valid memory if it
/// is an indirect operand.
/// It will error if the bits at the destination do not match the ones described by the layout.
///
/// `ref_tracking_for_consts` can be `None` to avoid recursive checking below references.
/// This also toggles between "run-time" (no recursion) and "compile-time" (with recursion)
/// validation (e.g., pointer values are fine in integers at runtime) and various other const
/// specific validation checks.
This function checks the data at `op`. `op` is assumed to cover valid memory if it
is an indirect operand.
It will error if the bits at the destination do not match the ones described by the layout.

`ref_tracking_for_consts` can be `None` to avoid recursive checking below references.
This also toggles between "run-time" (no recursion) and "compile-time" (with recursion)
validation  and various other const
specific validation checks.
This function checks the data at ` op ` . ` op ` is assumed to cover valid memory if it is an indirect operand . It will error if the bits at the destination do not match the ones described by the layout . ` ref_tracking_for_consts ` can be ` None ` to avoid recursive checking below references . This also toggles between " run - time " ( no recursion ) and " compile - time " ( with recursion ) validation and various other const specific validation checks .
pub fn validate_operand(
        &self,
        op: OpTy<'tcx, M::PointerTag>,
        path: Vec<PathElem>,
        ref_tracking_for_consts: Option<
            &mut RefTracking<MPlaceTy<'tcx, M::PointerTag>, Vec<PathElem>>,
        >,
    ) -> InterpResult<'tcx> {
        trace!("validate_operand: {:?}, {:?}", *op, op.layout.ty);
        // Construct a visitor
        let mut visitor = ValidityVisitor { path, ref_tracking_for_consts, ecx: self };
        // Try to cast to ptr *once* instead of all the time.
        let op = self.force_op_ptr(op).unwrap_or(op);
        // Run it
        visitor.visit_value(op)
    }
pub fn validate_operand ( & self , op : OpTy < ' tcx , M :: PointerTag > , path : Vec < PathElem > , ref_tracking_for_consts : Option < & mut RefTracking < MPlaceTy < ' tcx , M :: PointerTag > , Vec < PathElem > > , > , ) -> InterpResult < ' tcx > { trace ! ( " " op op layout ty ) ; // Construct a visitor let mut visitor = ValidityVisitor { path , ref_tracking_for_consts , ecx : self } ; // Try to cast to ptr *once* instead of all the time. let op = self . force_op_ptr ( op ) . unwrap_or ( op ) ; // Run it visitor . visit_value ( op ) }
This function checks the data at `op`.
This function checks the data at ` op ` .
&self
op
OpTy<'tcx, M::PointerTag>
path
Vec<PathElem>
ref_tracking_for_consts
Option<
            &mut RefTracking<MPlaceTy<'tcx, M::PointerTag>, Vec<PathElem>>,
        >
&self
op
OpTy<'tcx, M::PointerTag>
path
Vec<PathElem>
ref_tracking_for_consts
Option<
            &mut RefTracking<MPlaceTy<'tcx, M::PointerTag>, Vec<PathElem>>,
        >