pub struct SelfProfilerRef {
    profiler: Option<Arc<SelfProfiler>>,
    event_filter_mask: EventFilter,
    print_verbose_generic_activities: bool,
}
Expand description

A reference to the SelfProfiler. It can be cloned and sent across thread boundaries at will.

Fields§

§profiler: Option<Arc<SelfProfiler>>§event_filter_mask: EventFilter§print_verbose_generic_activities: bool

Implementations§

This shim makes sure that calls only get executed if the filter mask lets them pass. It also contains some trickery to make sure that code is optimized for non-profiling compilation sessions, i.e. anything past the filter check is never inlined so it doesn’t clutter the fast path.

Start profiling a verbose generic activity. Profiling continues until the VerboseTimingGuard returned from this call is dropped. In addition to recording a measureme event, “verbose” generic activities also print a timing entry to stderr if the compiler is invoked with -Ztime-passes.

Like verbose_generic_activity, but with an extra arg.

Start profiling a generic activity. Profiling continues until the TimingGuard returned from this call is dropped.

Start profiling with some event filter for a given event. Profiling continues until the TimingGuard returned from this call is dropped.

Start profiling a generic activity. Profiling continues until the TimingGuard returned from this call is dropped.

Start profiling a generic activity, allowing costly arguments to be recorded. Profiling continues until the TimingGuard returned from this call is dropped.

If the arguments to a generic activity are cheap to create, use generic_activity_with_arg or generic_activity_with_args for their simpler API. However, if they are costly or require allocation in sufficiently hot contexts, then this allows for a closure to be called only when arguments were asked to be recorded via -Z self-profile-events=args.

In this case, the closure will be passed a &mut EventArgRecorder, to help with recording one or many arguments within the generic activity being profiled, by calling its record_arg method for example.

This EventArgRecorder may implement more specific traits from other rustc crates, e.g. for richer handling of rustc-specific argument types, while keeping this single entry-point API for recording arguments.

Note: recording at least one argument is required for the self-profiler to create the TimingGuard. A panic will be triggered if that doesn’t happen. This function exists explicitly to record arguments, so it fails loudly when there are none to record.

Record the size of an artifact that the compiler produces

artifact_kind is the class of artifact (e.g., query_cache, object_file, etc.) artifact_name is an identifier to the specific artifact being stored (usually a filename)

Start profiling a query provider. Profiling continues until the TimingGuard returned from this call is dropped.

Record a query in-memory cache hit.

Start profiling a query being blocked on a concurrent execution. Profiling continues until the TimingGuard returned from this call is dropped.

Start profiling how long it takes to load a query result from the incremental compilation on-disk cache. Profiling continues until the TimingGuard returned from this call is dropped.

Start profiling how long it takes to hash query results for incremental compilation. Profiling continues until the TimingGuard returned from this call is dropped.

Gets a StringId for the given string. This method makes sure that any strings going through it will only be allocated once in the profiling data. Returns None if the self-profiling is not enabled.

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.

Size: 16 bytes