aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2019-07-25 22:56:11 -0400
committerGitHub <noreply@github.com>2019-07-25 22:56:11 -0400
commit449881f5666cc455ccc26666e0c21e9087f4bcdb (patch)
treea5caa6089de99302c19c19b4e23fb7a950f1a249 /components/script/dom
parentad82d67b2e5ab56d046274ebb5436c3388ddf21a (diff)
parent410d5bc772e0ad851692efe2a2131833312d3dd0 (diff)
downloadservo-449881f5666cc455ccc26666e0c21e9087f4bcdb.tar.gz
servo-449881f5666cc455ccc26666e0c21e9087f4bcdb.zip
Auto merge of #23852 - jdm:arm64-crashfix, r=asajeffrey
Update SpiderMonkey bindings for Windows arm64 crash fix This allows the Windows ARM64 to load web pages without crashing. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes do not require tests because no Windows arm64 CI. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23852) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py29
-rw-r--r--components/script/dom/bindings/interface.rs12
2 files changed, 23 insertions, 18 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index 343b8e6596d..c7b2c1fe5ef 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -3036,8 +3036,9 @@ assert!((*cache)[PrototypeList::Constructor::%(id)s as usize].is_null());
if aliasedMembers:
def defineAlias(alias):
if alias == "@@iterator":
- symbolJSID = "RUST_SYMBOL_TO_JSID(GetWellKnownSymbol(*cx, SymbolCode::iterator))"
- getSymbolJSID = CGGeneric(fill("rooted!(in(*cx) let iteratorId = ${symbolJSID});",
+ symbolJSID = "RUST_SYMBOL_TO_JSID(GetWellKnownSymbol(*cx, SymbolCode::iterator), \
+ iteratorId.handle_mut())"
+ getSymbolJSID = CGGeneric(fill("rooted!(in(*cx) let mut iteratorId: jsid);\n${symbolJSID};\n",
symbolJSID=symbolJSID))
defineFn = "JS_DefinePropertyById2"
prop = "iteratorId.handle()"
@@ -5197,8 +5198,9 @@ class CGDOMJSProxyHandler_ownPropertyKeys(CGAbstractExternMethod):
body += dedent(
"""
for i in 0..(*unwrapped_proxy).Length() {
- rooted!(in(*cx) let rooted_jsid = int_to_jsid(i as i32));
- AppendToAutoIdVector(props, rooted_jsid.handle().get());
+ rooted!(in(*cx) let mut rooted_jsid: jsid);
+ int_to_jsid(i as i32, rooted_jsid.handle_mut());
+ AppendToAutoIdVector(props, rooted_jsid.handle());
}
""")
@@ -5209,9 +5211,9 @@ class CGDOMJSProxyHandler_ownPropertyKeys(CGAbstractExternMethod):
let cstring = CString::new(name).unwrap();
let jsstring = JS_AtomizeAndPinString(*cx, cstring.as_ptr());
rooted!(in(*cx) let rooted = jsstring);
- let jsid = INTERNED_STRING_TO_JSID(*cx, rooted.handle().get());
- rooted!(in(*cx) let rooted_jsid = jsid);
- AppendToAutoIdVector(props, rooted_jsid.handle().get());
+ rooted!(in(*cx) let mut rooted_jsid: jsid);
+ RUST_INTERNED_STRING_TO_JSID(*cx, rooted.handle().get(), rooted_jsid.handle_mut());
+ AppendToAutoIdVector(props, rooted_jsid.handle());
}
""")
@@ -5254,8 +5256,9 @@ class CGDOMJSProxyHandler_getOwnEnumerablePropertyKeys(CGAbstractExternMethod):
body += dedent(
"""
for i in 0..(*unwrapped_proxy).Length() {
- rooted!(in(*cx) let rooted_jsid = int_to_jsid(i as i32));
- AppendToAutoIdVector(props, rooted_jsid.handle().get());
+ rooted!(in(*cx) let mut rooted_jsid: jsid);
+ int_to_jsid(i as i32, rooted_jsid.handle_mut());
+ AppendToAutoIdVector(props, rooted_jsid.handle());
}
""")
@@ -5800,7 +5803,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries
'js::jsapi::HandleValue as RawHandleValue',
'js::jsapi::HandleValueArray',
'js::jsapi::Heap',
- 'js::jsapi::INTERNED_STRING_TO_JSID',
+ 'js::rust::wrappers::RUST_INTERNED_STRING_TO_JSID',
'js::jsapi::IsCallable',
'js::jsapi::JSAutoRealm',
'js::jsapi::JSCLASS_FOREGROUND_FINALIZE',
@@ -5884,7 +5887,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries
'js::jsval::PrivateValue',
'js::jsval::UndefinedValue',
'js::jsapi::UndefinedHandleValue',
- 'js::glue::AppendToAutoIdVector',
+ 'js::rust::wrappers::AppendToAutoIdVector',
'js::glue::CallJitGetterOp',
'js::glue::CallJitMethodOp',
'js::glue::CallJitSetterOp',
@@ -5895,8 +5898,8 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries
'js::glue::ProxyTraps',
'js::glue::RUST_JSID_IS_INT',
'js::glue::RUST_JSID_IS_STRING',
- 'js::glue::RUST_SYMBOL_TO_JSID',
- 'js::glue::int_to_jsid',
+ 'js::rust::wrappers::RUST_SYMBOL_TO_JSID',
+ 'js::rust::wrappers::int_to_jsid',
'js::glue::UnwrapObjectDynamic',
'js::panic::maybe_resume_unwind',
'js::panic::wrap_panic',
diff --git a/components/script/dom/bindings/interface.rs b/components/script/dom/bindings/interface.rs
index a31dfc84222..6f2183339af 100644
--- a/components/script/dom/bindings/interface.rs
+++ b/components/script/dom/bindings/interface.rs
@@ -13,10 +13,10 @@ use crate::dom::bindings::utils::{
get_proto_or_iface_array, ProtoOrIfaceArray, DOM_PROTOTYPE_SLOT,
};
use js::error::throw_type_error;
-use js::glue::{UncheckedUnwrapObject, RUST_SYMBOL_TO_JSID};
+use js::glue::UncheckedUnwrapObject;
use js::jsapi::HandleObject as RawHandleObject;
use js::jsapi::MutableHandleValue as RawMutableHandleValue;
-use js::jsapi::{Class, ClassOps, RealmOptions};
+use js::jsapi::{jsid, Class, ClassOps};
use js::jsapi::{GetNonCCWObjectGlobal, GetWellKnownSymbol};
use js::jsapi::{JSAutoRealm, JSClass, JSContext, JSFunctionSpec, JSObject, JSFUN_CONSTRUCTOR};
use js::jsapi::{JSPropertySpec, JSString, JSTracer, JS_AtomizeAndPinString};
@@ -27,12 +27,13 @@ use js::jsapi::{ObjectOps, OnNewGlobalHookOption, SymbolCode};
use js::jsapi::{TrueHandleValue, Value};
use js::jsapi::{JSPROP_PERMANENT, JSPROP_READONLY, JSPROP_RESOLVING};
use js::jsval::{JSVal, PrivateValue};
+use js::rust::wrappers::RUST_SYMBOL_TO_JSID;
use js::rust::wrappers::{JS_DefineProperty, JS_DefineProperty5};
use js::rust::wrappers::{JS_DefineProperty3, JS_DefineProperty4, JS_DefinePropertyById5};
use js::rust::wrappers::{JS_FireOnNewGlobalObject, JS_GetPrototype};
use js::rust::wrappers::{JS_LinkConstructorAndPrototype, JS_NewObjectWithUniqueType};
use js::rust::{define_methods, define_properties, get_object_class};
-use js::rust::{HandleObject, HandleValue, MutableHandleObject};
+use js::rust::{HandleObject, HandleValue, MutableHandleObject, RealmOptions};
use std::convert::TryFrom;
use std::ptr;
@@ -145,7 +146,7 @@ pub unsafe fn create_global_object(
class,
ptr::null_mut(),
OnNewGlobalHookOption::DontFireOnNewGlobalHook,
- &options,
+ &*options,
));
assert!(!rval.is_null());
@@ -208,7 +209,8 @@ pub unsafe fn create_interface_prototype_object(
let unscopable_symbol = GetWellKnownSymbol(cx, SymbolCode::unscopables);
assert!(!unscopable_symbol.is_null());
- rooted!(in(cx) let unscopable_id = RUST_SYMBOL_TO_JSID(unscopable_symbol));
+ rooted!(in(cx) let mut unscopable_id: jsid);
+ RUST_SYMBOL_TO_JSID(unscopable_symbol, unscopable_id.handle_mut());
assert!(JS_DefinePropertyById5(
cx,
rval.handle(),