mirror of
https://github.com/servo/servo.git
synced 2025-06-19 14:48:59 +01:00
32 lines
1.2 KiB
Rust
32 lines
1.2 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
|
|
//! This module contains APIs for the `profile` crate used generically in the
|
|
//! rest of Servo. These APIs are here instead of in `profile` so that these
|
|
//! modules won't have to depend on `profile`.
|
|
|
|
#![deny(unsafe_code)]
|
|
|
|
pub mod ipc;
|
|
pub mod mem;
|
|
pub mod time;
|
|
|
|
/// Measure the given callback with the time profiler and (if enabled) tracing.
|
|
///
|
|
/// `$category` must be const, because we use it to derive the span name.
|
|
#[macro_export]
|
|
macro_rules! time_profile {
|
|
($category:expr, $meta:expr, $profiler_chan:expr, $($callback:tt)+) => {{
|
|
let meta: Option<$crate::time::TimerMetadata> = $meta;
|
|
#[cfg(feature = "tracing")]
|
|
let span = tracing::info_span!(
|
|
$category.variant_name(),
|
|
servo_profiling = true,
|
|
url = meta.as_ref().map(|m| m.url.clone()),
|
|
);
|
|
#[cfg(not(feature = "tracing"))]
|
|
let span = ();
|
|
$crate::time::profile($category, meta, $profiler_chan, span, $($callback)+)
|
|
}};
|
|
}
|