mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
No tracing of nop traceable fields (#29926)
* Add `no_trace` option to JSTraceable derive * NoTrace wrapper * Port some types to no_trace schematics * Fixing my unsafe mistakes (not tracing traceables) * Add docs & safety guards for no_trace Safety guards (trait shenanigans) guarantees safety usage of `no_trace` * Port canvas_traits to no_trace * Port servo_media to no_trace * Port net_traits to no_trace * Port style to no_trace * Port webgpu to no_trace * Port script_traits to no_trace * Port canvas_traits, devtools_traits, embedder_traits, profile_traits to no_trace * unrooted_must_root lint in seperate file * Add trace_in_no_trace_lint as script_plugin * Composable types in must_not_have_traceable * Introduced HashMapTracedValues wrapper * `HashMap<NoTrace<K>,V>`->`HashMapTracedValues<K,V>` * Port rest of servo's types to no_trace * Port html5ever, euclid, mime and http to no_trace * Port remaining externals to no_trace * Port webxr and Arc<Mutex<_>> * Fix spelling in notrace doc
This commit is contained in:
parent
66e0d543cf
commit
9514f670d1
167 changed files with 1903 additions and 1020 deletions
|
@ -36,20 +36,24 @@ pub struct OneshotTimerHandle(i32);
|
|||
pub struct OneshotTimers {
|
||||
js_timers: JsTimers,
|
||||
#[ignore_malloc_size_of = "Defined in std"]
|
||||
#[no_trace]
|
||||
/// The sender, to be cloned for each timer,
|
||||
/// on which the timer scheduler in the constellation can send an event
|
||||
/// when the timer is due.
|
||||
timer_event_chan: DomRefCell<Option<IpcSender<TimerEvent>>>,
|
||||
#[ignore_malloc_size_of = "Defined in std"]
|
||||
#[no_trace]
|
||||
/// The sender to the timer scheduler in the constellation.
|
||||
scheduler_chan: IpcSender<TimerSchedulerMsg>,
|
||||
next_timer_handle: Cell<OneshotTimerHandle>,
|
||||
timers: DomRefCell<Vec<OneshotTimer>>,
|
||||
#[no_trace]
|
||||
suspended_since: Cell<Option<MsDuration>>,
|
||||
/// Initially 0, increased whenever the associated document is reactivated
|
||||
/// by the amount of ms the document was inactive. The current time can be
|
||||
/// offset back by this amount for a coherent time across document
|
||||
/// activations.
|
||||
#[no_trace]
|
||||
suspension_offset: Cell<MsDuration>,
|
||||
/// Calls to `fire_timer` with a different argument than this get ignored.
|
||||
/// They were previously scheduled and got invalidated when
|
||||
|
@ -57,14 +61,17 @@ pub struct OneshotTimers {
|
|||
/// - the timer it was scheduled for got canceled or
|
||||
/// - a timer was added with an earlier callback time. In this case the
|
||||
/// original timer is rescheduled when it is the next one to get called.
|
||||
#[no_trace]
|
||||
expected_event_id: Cell<TimerEventId>,
|
||||
}
|
||||
|
||||
#[derive(DenyPublicFields, JSTraceable, MallocSizeOf)]
|
||||
struct OneshotTimer {
|
||||
handle: OneshotTimerHandle,
|
||||
#[no_trace]
|
||||
source: TimerSource,
|
||||
callback: OneshotTimerCallback,
|
||||
#[no_trace]
|
||||
scheduled_for: MsDuration,
|
||||
}
|
||||
|
||||
|
@ -355,6 +362,7 @@ pub struct JsTimers {
|
|||
/// The nesting level of the currently executing timer task or 0.
|
||||
nesting_level: Cell<u32>,
|
||||
/// Used to introduce a minimum delay in event intervals
|
||||
#[no_trace]
|
||||
min_duration: Cell<Option<MsDuration>>,
|
||||
}
|
||||
|
||||
|
@ -371,10 +379,12 @@ struct JsTimerEntry {
|
|||
pub struct JsTimerTask {
|
||||
#[ignore_malloc_size_of = "Because it is non-owning"]
|
||||
handle: JsTimerHandle,
|
||||
#[no_trace]
|
||||
source: TimerSource,
|
||||
callback: InternalTimerCallback,
|
||||
is_interval: IsInterval,
|
||||
nesting_level: u32,
|
||||
#[no_trace]
|
||||
duration: MsDuration,
|
||||
is_user_interacting: bool,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue