mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Update to new JS runtime creation APIs.
This commit is contained in:
parent
b1a4913b3f
commit
644101e1e4
5 changed files with 17 additions and 22 deletions
8
Cargo.lock
generated
8
Cargo.lock
generated
|
@ -2270,7 +2270,7 @@ dependencies = [
|
||||||
"hyper 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
"hyper 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"hyper_serde 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"hyper_serde 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"keyboard-types 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"keyboard-types 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"mozjs 0.9.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"mozjs 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"selectors 0.21.0",
|
"selectors 0.21.0",
|
||||||
"serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_bytes 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_bytes 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -2494,7 +2494,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mozjs"
|
name = "mozjs"
|
||||||
version = "0.9.5"
|
version = "0.10.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -3256,7 +3256,7 @@ dependencies = [
|
||||||
"mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"mitochondria 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"mitochondria 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"mozangle 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"mozangle 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"mozjs 0.9.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"mozjs 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"msg 0.0.1",
|
"msg 0.0.1",
|
||||||
"net_traits 0.0.1",
|
"net_traits 0.0.1",
|
||||||
"num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -5029,7 +5029,7 @@ dependencies = [
|
||||||
"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
|
"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
|
||||||
"checksum mitochondria 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9de3eca27871df31c33b807f834b94ef7d000956f57aa25c5aed9c5f0aae8f6f"
|
"checksum mitochondria 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9de3eca27871df31c33b807f834b94ef7d000956f57aa25c5aed9c5f0aae8f6f"
|
||||||
"checksum mozangle 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "45a8a18a41cfab0fde25cc2f43ea89064d211a0fbb33225b8ff93ab20406e0e7"
|
"checksum mozangle 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "45a8a18a41cfab0fde25cc2f43ea89064d211a0fbb33225b8ff93ab20406e0e7"
|
||||||
"checksum mozjs 0.9.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d1db0edead699324dd1768f74054a5a759de36a8ce92b15e8b179ec2549d19e"
|
"checksum mozjs 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c7eea7a83e5f237500eb7d66c8ca9c6dc97e3dc4f129eae2dc63fa17fb87f9a"
|
||||||
"checksum mozjs_sys 0.61.6 (registry+https://github.com/rust-lang/crates.io-index)" = "610d0fce234d68723526bfdc57091f6f4fe5ed661a343125014cd61823711cb5"
|
"checksum mozjs_sys 0.61.6 (registry+https://github.com/rust-lang/crates.io-index)" = "610d0fce234d68723526bfdc57091f6f4fe5ed661a343125014cd61823711cb5"
|
||||||
"checksum msdos_time 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aad9dfe950c057b1bfe9c1f2aa51583a8468ef2a5baba2ebbe06d775efeb7729"
|
"checksum msdos_time 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aad9dfe950c057b1bfe9c1f2aa51583a8468ef2a5baba2ebbe06d775efeb7729"
|
||||||
"checksum muldiv 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "451a9a05d2a32c566c897835e0ea95cf79ed2fdfe957924045a1721a36c9980f"
|
"checksum muldiv 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "451a9a05d2a32c566c897835e0ea95cf79ed2fdfe957924045a1721a36c9980f"
|
||||||
|
|
|
@ -33,6 +33,7 @@ hashglobe = { path = "../hashglobe" }
|
||||||
hyper = { version = "0.12", optional = true }
|
hyper = { version = "0.12", optional = true }
|
||||||
hyper_serde = { version = "0.9", optional = true }
|
hyper_serde = { version = "0.9", optional = true }
|
||||||
keyboard-types = {version = "0.4.3", optional = true}
|
keyboard-types = {version = "0.4.3", optional = true}
|
||||||
|
mozjs = { version = "0.10.0", optional = true}
|
||||||
selectors = { path = "../selectors" }
|
selectors = { path = "../selectors" }
|
||||||
serde = { version = "1.0.27", optional = true }
|
serde = { version = "1.0.27", optional = true }
|
||||||
serde_bytes = { version = "0.10", optional = true }
|
serde_bytes = { version = "0.10", optional = true }
|
||||||
|
@ -46,9 +47,3 @@ url = { version = "1.2", optional = true }
|
||||||
webrender_api = { git = "https://github.com/servo/webrender", features = ["ipc"], optional = true }
|
webrender_api = { git = "https://github.com/servo/webrender", features = ["ipc"], optional = true }
|
||||||
xml5ever = { version = "0.12", optional = true }
|
xml5ever = { version = "0.12", optional = true }
|
||||||
void = "1.0.2"
|
void = "1.0.2"
|
||||||
|
|
||||||
[target.'cfg(target_os = "android")'.dependencies]
|
|
||||||
mozjs = { version = "0.9.5", optional = true, features=["init_once"]}
|
|
||||||
|
|
||||||
[target.'cfg(not(target_os = "android"))'.dependencies]
|
|
||||||
mozjs = { version = "0.9.5", optional = true}
|
|
||||||
|
|
|
@ -63,6 +63,7 @@ indexmap = "1.0.2"
|
||||||
ipc-channel = "0.11"
|
ipc-channel = "0.11"
|
||||||
itertools = "0.8"
|
itertools = "0.8"
|
||||||
jstraceable_derive = {path = "../jstraceable_derive"}
|
jstraceable_derive = {path = "../jstraceable_derive"}
|
||||||
|
js = {package = "mozjs", version = "0.10.0"}
|
||||||
keyboard-types = "0.4.4"
|
keyboard-types = "0.4.4"
|
||||||
lazy_static = "1"
|
lazy_static = "1"
|
||||||
libc = "0.2"
|
libc = "0.2"
|
||||||
|
@ -114,9 +115,3 @@ webvr_traits = {path = "../webvr_traits"}
|
||||||
|
|
||||||
[target.'cfg(not(target_os = "ios"))'.dependencies]
|
[target.'cfg(not(target_os = "ios"))'.dependencies]
|
||||||
mozangle = "0.1"
|
mozangle = "0.1"
|
||||||
|
|
||||||
[target.'cfg(target_os = "android")'.dependencies]
|
|
||||||
js = {package = "mozjs", version = "0.9.5", features=["init_once"]}
|
|
||||||
|
|
||||||
[target.'cfg(not(target_os = "android"))'.dependencies]
|
|
||||||
js = {package = "mozjs", version = "0.9.5"}
|
|
||||||
|
|
|
@ -2592,7 +2592,7 @@ class CGConstructorEnabled(CGAbstractMethod):
|
||||||
return CGList((CGGeneric(cond) for cond in conditions), " &&\n")
|
return CGList((CGGeneric(cond) for cond in conditions), " &&\n")
|
||||||
|
|
||||||
|
|
||||||
def CreateBindingJSObject(descriptor, parent=None):
|
def CreateBindingJSObject(descriptor):
|
||||||
assert not descriptor.isGlobal()
|
assert not descriptor.isGlobal()
|
||||||
create = "let raw = Box::into_raw(object);\nlet _rt = RootedTraceable::new(&*raw);\n"
|
create = "let raw = Box::into_raw(object);\nlet _rt = RootedTraceable::new(&*raw);\n"
|
||||||
if descriptor.proxy:
|
if descriptor.proxy:
|
||||||
|
@ -2601,12 +2601,11 @@ let handler = RegisterBindings::PROXY_HANDLERS[PrototypeList::Proxies::%s as usi
|
||||||
rooted!(in(cx) let private = PrivateValue(raw as *const libc::c_void));
|
rooted!(in(cx) let private = PrivateValue(raw as *const libc::c_void));
|
||||||
let obj = NewProxyObject(cx, handler,
|
let obj = NewProxyObject(cx, handler,
|
||||||
Handle::from_raw(UndefinedHandleValue),
|
Handle::from_raw(UndefinedHandleValue),
|
||||||
proto.get(), %s.get(),
|
proto.get());
|
||||||
ptr::null_mut(), ptr::null_mut());
|
|
||||||
assert!(!obj.is_null());
|
assert!(!obj.is_null());
|
||||||
SetProxyReservedSlot(obj, 0, &private.get());
|
SetProxyReservedSlot(obj, 0, &private.get());
|
||||||
rooted!(in(cx) let obj = obj);\
|
rooted!(in(cx) let obj = obj);\
|
||||||
""" % (descriptor.name, parent)
|
""" % (descriptor.name)
|
||||||
else:
|
else:
|
||||||
create += ("rooted!(in(cx) let obj = JS_NewObjectWithGivenProto(\n"
|
create += ("rooted!(in(cx) let obj = JS_NewObjectWithGivenProto(\n"
|
||||||
" cx, &Class.base as *const JSClass, proto.handle()));\n"
|
" cx, &Class.base as *const JSClass, proto.handle()));\n"
|
||||||
|
@ -2699,7 +2698,7 @@ class CGWrapMethod(CGAbstractMethod):
|
||||||
|
|
||||||
def definition_body(self):
|
def definition_body(self):
|
||||||
unforgeable = CopyUnforgeablePropertiesToInstance(self.descriptor)
|
unforgeable = CopyUnforgeablePropertiesToInstance(self.descriptor)
|
||||||
create = CreateBindingJSObject(self.descriptor, "scope")
|
create = CreateBindingJSObject(self.descriptor)
|
||||||
return CGGeneric("""\
|
return CGGeneric("""\
|
||||||
let scope = scope.reflector().get_jsobject();
|
let scope = scope.reflector().get_jsobject();
|
||||||
assert!(!scope.get().is_null());
|
assert!(!scope.get().is_null());
|
||||||
|
|
|
@ -42,6 +42,7 @@ use js::panic::wrap_panic;
|
||||||
use js::rust::wrappers::{GetPromiseIsHandled, GetPromiseResult};
|
use js::rust::wrappers::{GetPromiseIsHandled, GetPromiseResult};
|
||||||
use js::rust::Handle;
|
use js::rust::Handle;
|
||||||
use js::rust::IntoHandle;
|
use js::rust::IntoHandle;
|
||||||
|
use js::rust::JSEngine;
|
||||||
use js::rust::Runtime as RustRuntime;
|
use js::rust::Runtime as RustRuntime;
|
||||||
use malloc_size_of::MallocSizeOfOps;
|
use malloc_size_of::MallocSizeOfOps;
|
||||||
use msg::constellation_msg::PipelineId;
|
use msg::constellation_msg::PipelineId;
|
||||||
|
@ -56,6 +57,7 @@ use std::os;
|
||||||
use std::os::raw::c_void;
|
use std::os::raw::c_void;
|
||||||
use std::panic::AssertUnwindSafe;
|
use std::panic::AssertUnwindSafe;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
use std::sync::Arc;
|
||||||
use style::thread_state::{self, ThreadState};
|
use style::thread_state::{self, ThreadState};
|
||||||
use time::{now, Tm};
|
use time::{now, Tm};
|
||||||
|
|
||||||
|
@ -322,10 +324,14 @@ impl Deref for Runtime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lazy_static! {
|
||||||
|
static ref JS_ENGINE: Arc<JSEngine> = JSEngine::init().unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
#[allow(unsafe_code)]
|
#[allow(unsafe_code)]
|
||||||
pub unsafe fn new_rt_and_cx() -> Runtime {
|
pub unsafe fn new_rt_and_cx() -> Runtime {
|
||||||
LiveDOMReferences::initialize();
|
LiveDOMReferences::initialize();
|
||||||
let runtime = RustRuntime::new().unwrap();
|
let runtime = RustRuntime::new(JS_ENGINE.clone());
|
||||||
let cx = runtime.cx();
|
let cx = runtime.cx();
|
||||||
|
|
||||||
JS_AddExtraGCRootsTracer(cx, Some(trace_rust_roots), ptr::null_mut());
|
JS_AddExtraGCRootsTracer(cx, Some(trace_rust_roots), ptr::null_mut());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue