dr_emit_flags_t

Struct dr_emit_flags_t 

Source
#[repr(transparent)]
pub struct dr_emit_flags_t(pub c_uint);
Expand description

Flags controlling the behavior of basic blocks and traces when emitted into the code cache. These flags are bitmasks that can be combined by or-ing together. For multiple clients, the flags returned by each client are or-ed together.

Tuple Fields§

§0: c_uint

Implementations§

Source§

impl dr_emit_flags_t

Source

pub const DR_EMIT_DEFAULT: dr_emit_flags_t

Emit as normal.

Source§

impl dr_emit_flags_t

Source

pub const DR_EMIT_STORE_TRANSLATIONS: dr_emit_flags_t

Store translation information at emit time rather than calling the basic block or trace event later to recreate the information. Note that even if a standalone basic block has stored translations, if when it is added to a trace it does not request storage (and the trace callback also does not request storage) then the basic block callback may still be called to translate for the trace.

\sa #dr_register_bb_event()

Source§

impl dr_emit_flags_t

Source

pub const DR_EMIT_PERSISTABLE: dr_emit_flags_t

Only valid when applied to a basic block. Indicates that the block is eligible for persisting to a persistent code cache file on disk. By default, no blocks are eligible, as tools must take care in order to properly support persistence. Note that the block is not guaranteed to be persisted if it contains complex features that prevent DR from easily persisting it.

Source§

impl dr_emit_flags_t

Source

pub const DR_EMIT_MUST_END_TRACE: dr_emit_flags_t

Only valid when applied to a basic block. Indicates that the block must terminate a trace. Normally this should be set when an abnormal exit is used from the block that is incompatible with trace building’s attempt to inline the continuation from the block to its successor. Note that invoking dr_redirect_execution() from a clean call called from a block aborts trace building and thus this flag need not be set for that scenario.

Source§

impl dr_emit_flags_t

Source

pub const DR_EMIT_GO_NATIVE: dr_emit_flags_t

Requests that DR relinquish control of the current thread and let it run natively until the client indicates that DR should take over again. While native, on Windows, currently only the thread init event (dr_register_thread_init_event()) will be raised, and nothing on Linux: no events will occur in the native thread. On Windows, DR tries to monitor any actions a native thread might take that affect correct execution from the code cache, but running natively carries risks. Consider this feature experimental, particularly on Linux.

Trait Implementations§

Source§

impl BitAnd for dr_emit_flags_t

Source§

type Output = dr_emit_flags_t

The resulting type after applying the & operator.
Source§

fn bitand(self, other: Self) -> Self

Performs the & operation. Read more
Source§

impl BitAndAssign for dr_emit_flags_t

Source§

fn bitand_assign(&mut self, rhs: dr_emit_flags_t)

Performs the &= operation. Read more
Source§

impl BitOr for dr_emit_flags_t

Source§

type Output = dr_emit_flags_t

The resulting type after applying the | operator.
Source§

fn bitor(self, other: Self) -> Self

Performs the | operation. Read more
Source§

impl BitOrAssign for dr_emit_flags_t

Source§

fn bitor_assign(&mut self, rhs: dr_emit_flags_t)

Performs the |= operation. Read more
Source§

impl Clone for dr_emit_flags_t

Source§

fn clone(&self) -> dr_emit_flags_t

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for dr_emit_flags_t

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for dr_emit_flags_t

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for dr_emit_flags_t

Source§

fn eq(&self, other: &dr_emit_flags_t) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for dr_emit_flags_t

Source§

impl Eq for dr_emit_flags_t

Source§

impl StructuralPartialEq for dr_emit_flags_t

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.