diff options
author | AbhishekSharma102 <20724848+AbhishekSharma102@users.noreply.github.com> | 2020-07-13 06:04:00 +0000 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2020-07-21 16:20:51 -0400 |
commit | 1119dd119ed335b6d6e448290b56e0eeab6de25f (patch) | |
tree | c1d2ae2b369a20923cfe8e24496193896c4ad473 /components/script/dom/bindings/trace.rs | |
parent | bfb7bea704340e19583b04fb02b444fadd35e9e1 (diff) | |
download | servo-1119dd119ed335b6d6e448290b56e0eeab6de25f.tar.gz servo-1119dd119ed335b6d6e448290b56e0eeab6de25f.zip |
Added off thread compilation
Co-authored-by: Gregory Terzian <2792687+gterzian@users.noreply.github.com>
Co-authored-by: Abhishek Sharma <20724848+AbhishekSharma102@users.noreply.github.com>
Diffstat (limited to 'components/script/dom/bindings/trace.rs')
-rw-r--r-- | components/script/dom/bindings/trace.rs | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index 92d6ebcb7bf..a752b129a12 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -77,8 +77,10 @@ use hyper::Method; use hyper::StatusCode; use indexmap::IndexMap; use ipc_channel::ipc::{IpcReceiver, IpcSender}; -use js::glue::{CallObjectTracer, CallStringTracer, CallValueTracer}; -use js::jsapi::{GCTraceKindToAscii, Heap, JSObject, JSString, JSTracer, JobQueue, TraceKind}; +use js::glue::{CallObjectTracer, CallScriptTracer, CallStringTracer, CallValueTracer}; +use js::jsapi::{ + GCTraceKindToAscii, Heap, JSObject, JSScript, JSString, JSTracer, JobQueue, TraceKind, +}; use js::jsval::JSVal; use js::rust::{GCMethods, Handle, Runtime}; use js::typedarray::TypedArray; @@ -219,6 +221,18 @@ unsafe_no_jsmanaged_fields!(Cow<'static, str>); unsafe_no_jsmanaged_fields!(CspList); +/// Trace a `JSScript`. +pub fn trace_script(tracer: *mut JSTracer, description: &str, script: &Heap<*mut JSScript>) { + unsafe { + trace!("tracing {}", description); + CallScriptTracer( + tracer, + script.ptr.get() as *mut _, + GCTraceKindToAscii(TraceKind::Script), + ); + } +} + /// Trace a `JSVal`. pub fn trace_jsval(tracer: *mut JSTracer, description: &str, val: &Heap<JSVal>) { unsafe { @@ -328,6 +342,15 @@ unsafe impl<T: JSTraceable> JSTraceable for RefCell<T> { } } +unsafe impl JSTraceable for Heap<*mut JSScript> { + unsafe fn trace(&self, trc: *mut JSTracer) { + if self.get().is_null() { + return; + } + trace_script(trc, "heap script", self); + } +} + unsafe impl JSTraceable for Heap<*mut JSObject> { unsafe fn trace(&self, trc: *mut JSTracer) { if self.get().is_null() { |