diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-04-22 07:08:41 -0500 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-04-22 07:08:41 -0500 |
commit | 886805d76c206214047c475c6f8947c8c38c40b7 (patch) | |
tree | 590cb90eb09bd8600719c144a8a59da25592f597 | |
parent | 3a1bf45dea2ee7a9f4d8f299a2f1d05912b5e0a7 (diff) | |
parent | 04b532e1fbb46b8761d0e47e6f5916046d9db488 (diff) | |
download | servo-886805d76c206214047c475c6f8947c8c38c40b7.tar.gz servo-886805d76c206214047c475c6f8947c8c38c40b7.zip |
Auto merge of #5790 - Ms2ger:new_rt_and_cx, r=jdm
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/5790)
<!-- Reviewable:end -->
-rw-r--r-- | components/script/dom/bindings/trace.rs | 4 | ||||
-rw-r--r-- | components/script/dom/dedicatedworkerglobalscope.rs | 6 | ||||
-rw-r--r-- | components/script/script_task.rs | 30 |
3 files changed, 18 insertions, 22 deletions
diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index 3d32abb610a..10e13c90a5b 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -45,7 +45,7 @@ use hyper::header::Headers; use hyper::method::Method; use js::jsapi::{JSObject, JSTracer, JS_CallTracer, JSGCTraceKind}; use js::jsval::JSVal; -use js::rust::{Cx, rt}; +use js::rust::{Cx, Runtime}; use layout_interface::{LayoutRPC, LayoutChan}; use libc; use msg::constellation_msg::{PipelineId, SubpageId, WindowSizeData, WorkerId}; @@ -259,7 +259,7 @@ no_jsmanaged_fields!(SubpageId, WindowSizeData, PipelineId); no_jsmanaged_fields!(WorkerId); no_jsmanaged_fields!(QuirksMode); no_jsmanaged_fields!(Cx); -no_jsmanaged_fields!(rt); +no_jsmanaged_fields!(Runtime); no_jsmanaged_fields!(Headers, Method); no_jsmanaged_fields!(ConstellationChan); no_jsmanaged_fields!(LayoutChan); diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index 8ab0621e0f9..debc435c05d 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -167,15 +167,15 @@ impl DedicatedWorkerGlobalScope { } }; - let (_js_runtime, js_context) = ScriptTask::new_rt_and_cx(); + let runtime = ScriptTask::new_rt_and_cx(); let global = DedicatedWorkerGlobalScope::new( - worker_url, id, devtools_chan, js_context.clone(), resource_task, + worker_url, id, devtools_chan, runtime.cx.clone(), resource_task, parent_sender, own_sender, receiver).root(); { let _ar = AutoWorkerReset::new(global.r(), worker); - match js_context.evaluate_script( + match runtime.cx.evaluate_script( global.r().reflector().get_jsobject(), source, url.serialize(), 1) { Ok(_) => (), Err(_) => println!("evaluate_script failed") diff --git a/components/script/script_task.rs b/components/script/script_task.rs index 92a5dccb7d4..14638ddcd82 100644 --- a/components/script/script_task.rs +++ b/components/script/script_task.rs @@ -79,8 +79,7 @@ use hyper::header::{LastModified, Headers}; use js::jsapi::{JS_SetWrapObjectCallbacks, JS_SetExtraGCRootsTracer}; use js::jsapi::{JSContext, JSRuntime, JSObject, JSTracer}; use js::jsapi::{JS_SetGCCallback, JSGCStatus, JSGC_BEGIN, JSGC_END}; -use js::rust::{Runtime, Cx, RtUtils}; -use js; +use js::rust::{Runtime, RtUtils}; use url::Url; use libc; @@ -309,9 +308,7 @@ pub struct ScriptTask { devtools_marker_sender: RefCell<Option<Sender<TimelineMarker>>>, /// The JavaScript runtime. - js_runtime: js::rust::rt, - /// The JSContext. - js_context: Rc<Cx>, + js_runtime: Runtime, mouse_over_targets: DOMRefCell<Vec<JS<Node>>> } @@ -443,7 +440,7 @@ impl ScriptTask { img_cache_task: ImageCacheTask, devtools_chan: Option<DevtoolsControlChan>) -> ScriptTask { - let (js_runtime, js_context) = ScriptTask::new_rt_and_cx(); + let runtime = ScriptTask::new_rt_and_cx(); let wrap_for_same_compartment = wrap_for_same_compartment as unsafe extern "C" fn(*mut JSContext, *mut JSObject) -> *mut JSObject; let pre_wrap = pre_wrap as @@ -455,11 +452,11 @@ impl ScriptTask { // and JSCompartment::wrap crashes if that happens. The only way // to retrieve the default callback is as the result of // JS_SetWrapObjectCallbacks, which is why we call it twice. - let callback = JS_SetWrapObjectCallbacks((*js_runtime).ptr, + let callback = JS_SetWrapObjectCallbacks(runtime.rt(), None, Some(wrap_for_same_compartment), None); - JS_SetWrapObjectCallbacks((*js_runtime).ptr, + JS_SetWrapObjectCallbacks(runtime.rt(), callback, Some(wrap_for_same_compartment), Some(pre_wrap)); @@ -486,13 +483,12 @@ impl ScriptTask { devtools_markers: RefCell::new(HashSet::new()), devtools_marker_sender: RefCell::new(None), - js_runtime: js_runtime, - js_context: js_context, + js_runtime: runtime, mouse_over_targets: DOMRefCell::new(vec!()) } } - pub fn new_rt_and_cx() -> (js::rust::rt, Rc<Cx>) { + pub fn new_rt_and_cx() -> Runtime { LiveDOMReferences::initialize(); let runtime = Runtime::new(); @@ -508,7 +504,7 @@ impl ScriptTask { } } - (runtime.rt, runtime.cx) + runtime } // Return the root page in the frame tree. Panics if it doesn't exist. @@ -517,7 +513,7 @@ impl ScriptTask { } pub fn get_cx(&self) -> *mut JSContext { - self.js_context.ptr + self.js_runtime.cx() } /// Starts the script task. After calling this method, the script task will loop receiving @@ -1062,7 +1058,7 @@ impl ScriptTask { let mut page_remover = AutoPageRemover::new(self, page_to_remove); // Create the window and document objects. - let window = Window::new(self.js_context.clone(), + let window = Window::new(self.js_runtime.cx.clone(), page.clone(), self.chan.clone(), self.control_chan.clone(), @@ -1223,7 +1219,7 @@ impl ScriptTask { // See the implementation of `Width()` and `Height()` in `HTMLImageElement` for // fallout of this problem. for node in nodes.iter() { - let node_to_dirty = node::from_untrusted_node_address(self.js_runtime.ptr, + let node_to_dirty = node::from_untrusted_node_address(self.js_runtime.rt(), *node).root(); let page = get_page(&self.root_page(), pipeline_id); let document = page.document().root(); @@ -1241,7 +1237,7 @@ impl ScriptTask { } let page = get_page(&self.root_page(), pipeline_id); let document = page.document().root(); - document.r().handle_click_event(self.js_runtime.ptr, button, point); + document.r().handle_click_event(self.js_runtime.rt(), button, point); } MouseDownEvent(..) => {} @@ -1256,7 +1252,7 @@ impl ScriptTask { let mut mouse_over_targets = RootedVec::new(); mouse_over_targets.append(&mut *self.mouse_over_targets.borrow_mut()); - document.r().handle_mouse_move_event(self.js_runtime.ptr, point, &mut mouse_over_targets); + document.r().handle_mouse_move_event(self.js_runtime.rt(), point, &mut mouse_over_targets); *self.mouse_over_targets.borrow_mut() = mouse_over_targets.clone(); } |