diff options
author | Samson <16504129+sagudev@users.noreply.github.com> | 2023-08-04 12:17:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-04 10:17:43 +0000 |
commit | 9514f670d12b4d92514c1402d686e694f3f234a5 (patch) | |
tree | cd847449b332ac27b6018fbe8a83a248af020c5a /components/script/task_source | |
parent | 66e0d543cfbaecb08ade2e071d6575f9f72f4dbb (diff) | |
download | servo-9514f670d12b4d92514c1402d686e694f3f234a5.tar.gz servo-9514f670d12b4d92514c1402d686e694f3f234a5.zip |
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
Diffstat (limited to 'components/script/task_source')
-rw-r--r-- | components/script/task_source/dom_manipulation.rs | 2 | ||||
-rw-r--r-- | components/script/task_source/file_reading.rs | 5 | ||||
-rw-r--r-- | components/script/task_source/history_traversal.rs | 5 | ||||
-rw-r--r-- | components/script/task_source/media_element.rs | 5 | ||||
-rw-r--r-- | components/script/task_source/networking.rs | 5 | ||||
-rw-r--r-- | components/script/task_source/performance_timeline.rs | 5 | ||||
-rw-r--r-- | components/script/task_source/port_message.rs | 5 | ||||
-rw-r--r-- | components/script/task_source/remote_event.rs | 5 | ||||
-rw-r--r-- | components/script/task_source/timer.rs | 5 | ||||
-rw-r--r-- | components/script/task_source/user_interaction.rs | 5 | ||||
-rw-r--r-- | components/script/task_source/websocket.rs | 5 |
11 files changed, 41 insertions, 11 deletions
diff --git a/components/script/task_source/dom_manipulation.rs b/components/script/task_source/dom_manipulation.rs index d9dcdfb2472..68316b79fe3 100644 --- a/components/script/task_source/dom_manipulation.rs +++ b/components/script/task_source/dom_manipulation.rs @@ -16,7 +16,7 @@ use std::fmt; use std::result::Result; #[derive(JSTraceable)] -pub struct DOMManipulationTaskSource(pub Box<dyn ScriptChan + Send>, pub PipelineId); +pub struct DOMManipulationTaskSource(pub Box<dyn ScriptChan + Send>, #[no_trace] pub PipelineId); impl Clone for DOMManipulationTaskSource { fn clone(&self) -> DOMManipulationTaskSource { diff --git a/components/script/task_source/file_reading.rs b/components/script/task_source/file_reading.rs index 20b49a239b4..646778ffea5 100644 --- a/components/script/task_source/file_reading.rs +++ b/components/script/task_source/file_reading.rs @@ -10,7 +10,10 @@ use crate::task_source::{TaskSource, TaskSourceName}; use msg::constellation_msg::PipelineId; #[derive(JSTraceable)] -pub struct FileReadingTaskSource(pub Box<dyn ScriptChan + Send + 'static>, pub PipelineId); +pub struct FileReadingTaskSource( + pub Box<dyn ScriptChan + Send + 'static>, + #[no_trace] pub PipelineId, +); impl Clone for FileReadingTaskSource { fn clone(&self) -> FileReadingTaskSource { diff --git a/components/script/task_source/history_traversal.rs b/components/script/task_source/history_traversal.rs index 0fdb428b845..ecabbddfa55 100644 --- a/components/script/task_source/history_traversal.rs +++ b/components/script/task_source/history_traversal.rs @@ -10,7 +10,10 @@ use crossbeam_channel::Sender; use msg::constellation_msg::PipelineId; #[derive(Clone, JSTraceable)] -pub struct HistoryTraversalTaskSource(pub Sender<MainThreadScriptMsg>, pub PipelineId); +pub struct HistoryTraversalTaskSource( + #[no_trace] pub Sender<MainThreadScriptMsg>, + #[no_trace] pub PipelineId, +); impl TaskSource for HistoryTraversalTaskSource { const NAME: TaskSourceName = TaskSourceName::HistoryTraversal; diff --git a/components/script/task_source/media_element.rs b/components/script/task_source/media_element.rs index c0a902b373b..16922a0ec87 100644 --- a/components/script/task_source/media_element.rs +++ b/components/script/task_source/media_element.rs @@ -18,7 +18,10 @@ use std::fmt; use std::result::Result; #[derive(Clone, JSTraceable)] -pub struct MediaElementTaskSource(pub Sender<MainThreadScriptMsg>, pub PipelineId); +pub struct MediaElementTaskSource( + #[no_trace] pub Sender<MainThreadScriptMsg>, + #[no_trace] pub PipelineId, +); impl fmt::Debug for MediaElementTaskSource { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { diff --git a/components/script/task_source/networking.rs b/components/script/task_source/networking.rs index 92d04b29220..0193cb22839 100644 --- a/components/script/task_source/networking.rs +++ b/components/script/task_source/networking.rs @@ -8,7 +8,10 @@ use crate::task_source::{TaskSource, TaskSourceName}; use msg::constellation_msg::PipelineId; #[derive(JSTraceable)] -pub struct NetworkingTaskSource(pub Box<dyn ScriptChan + Send + 'static>, pub PipelineId); +pub struct NetworkingTaskSource( + pub Box<dyn ScriptChan + Send + 'static>, + #[no_trace] pub PipelineId, +); impl Clone for NetworkingTaskSource { fn clone(&self) -> NetworkingTaskSource { diff --git a/components/script/task_source/performance_timeline.rs b/components/script/task_source/performance_timeline.rs index 1669ac6e689..58e2660e6fd 100644 --- a/components/script/task_source/performance_timeline.rs +++ b/components/script/task_source/performance_timeline.rs @@ -16,7 +16,10 @@ use std::fmt; use std::result::Result; #[derive(JSTraceable)] -pub struct PerformanceTimelineTaskSource(pub Box<dyn ScriptChan + Send + 'static>, pub PipelineId); +pub struct PerformanceTimelineTaskSource( + pub Box<dyn ScriptChan + Send + 'static>, + #[no_trace] pub PipelineId, +); impl Clone for PerformanceTimelineTaskSource { fn clone(&self) -> PerformanceTimelineTaskSource { diff --git a/components/script/task_source/port_message.rs b/components/script/task_source/port_message.rs index e9d1766f521..e21230f8099 100644 --- a/components/script/task_source/port_message.rs +++ b/components/script/task_source/port_message.rs @@ -9,7 +9,10 @@ use msg::constellation_msg::PipelineId; use std::fmt; #[derive(JSTraceable)] -pub struct PortMessageQueue(pub Box<dyn ScriptChan + Send + 'static>, pub PipelineId); +pub struct PortMessageQueue( + pub Box<dyn ScriptChan + Send + 'static>, + #[no_trace] pub PipelineId, +); impl Clone for PortMessageQueue { fn clone(&self) -> PortMessageQueue { diff --git a/components/script/task_source/remote_event.rs b/components/script/task_source/remote_event.rs index a1d54604996..91e132ed719 100644 --- a/components/script/task_source/remote_event.rs +++ b/components/script/task_source/remote_event.rs @@ -8,7 +8,10 @@ use crate::task_source::{TaskSource, TaskSourceName}; use msg::constellation_msg::PipelineId; #[derive(JSTraceable)] -pub struct RemoteEventTaskSource(pub Box<dyn ScriptChan + Send + 'static>, pub PipelineId); +pub struct RemoteEventTaskSource( + pub Box<dyn ScriptChan + Send + 'static>, + #[no_trace] pub PipelineId, +); impl Clone for RemoteEventTaskSource { fn clone(&self) -> RemoteEventTaskSource { diff --git a/components/script/task_source/timer.rs b/components/script/task_source/timer.rs index cd134fb12a2..9c4d03bdda5 100644 --- a/components/script/task_source/timer.rs +++ b/components/script/task_source/timer.rs @@ -10,7 +10,10 @@ use std::fmt; #[derive(JSTraceable)] /// https://html.spec.whatwg.org/multipage/#timer-task-source -pub struct TimerTaskSource(pub Box<dyn ScriptChan + Send + 'static>, pub PipelineId); +pub struct TimerTaskSource( + pub Box<dyn ScriptChan + Send + 'static>, + #[no_trace] pub PipelineId, +); impl Clone for TimerTaskSource { fn clone(&self) -> TimerTaskSource { diff --git a/components/script/task_source/user_interaction.rs b/components/script/task_source/user_interaction.rs index bb434ab7026..1f543d88cfd 100644 --- a/components/script/task_source/user_interaction.rs +++ b/components/script/task_source/user_interaction.rs @@ -18,7 +18,10 @@ use std::fmt; use std::result::Result; #[derive(Clone, JSTraceable)] -pub struct UserInteractionTaskSource(pub Sender<MainThreadScriptMsg>, pub PipelineId); +pub struct UserInteractionTaskSource( + #[no_trace] pub Sender<MainThreadScriptMsg>, + #[no_trace] pub PipelineId, +); impl fmt::Debug for UserInteractionTaskSource { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { diff --git a/components/script/task_source/websocket.rs b/components/script/task_source/websocket.rs index f4e153328b9..843a9632a8a 100644 --- a/components/script/task_source/websocket.rs +++ b/components/script/task_source/websocket.rs @@ -8,7 +8,10 @@ use crate::task_source::{TaskSource, TaskSourceName}; use msg::constellation_msg::PipelineId; #[derive(JSTraceable)] -pub struct WebsocketTaskSource(pub Box<dyn ScriptChan + Send + 'static>, pub PipelineId); +pub struct WebsocketTaskSource( + pub Box<dyn ScriptChan + Send + 'static>, + #[no_trace] pub PipelineId, +); impl Clone for WebsocketTaskSource { fn clone(&self) -> WebsocketTaskSource { |