mirror of
https://github.com/servo/servo.git
synced 2025-06-25 17:44:33 +01:00
auto merge of #2058 : jdm/servo/rmcrust, r=Ms2ger
This commit is contained in:
commit
aa36ae62cd
4 changed files with 57 additions and 57 deletions
|
@ -1361,13 +1361,13 @@ class MethodDefiner(PropertyDefiner):
|
||||||
if any(m.isGetter() and m.isIndexed() for m in methods):
|
if any(m.isGetter() and m.isIndexed() for m in methods):
|
||||||
self.chrome.append({"name": 'iterator',
|
self.chrome.append({"name": 'iterator',
|
||||||
"methodInfo": False,
|
"methodInfo": False,
|
||||||
"nativeName": "crust::JS_ArrayIterator",
|
"nativeName": "JS_ArrayIterator",
|
||||||
"length": 0,
|
"length": 0,
|
||||||
"flags": "JSPROP_ENUMERATE",
|
"flags": "JSPROP_ENUMERATE",
|
||||||
"pref": None })
|
"pref": None })
|
||||||
self.regular.append({"name": 'iterator',
|
self.regular.append({"name": 'iterator',
|
||||||
"methodInfo": False,
|
"methodInfo": False,
|
||||||
"nativeName": "crust::JS_ArrayIterator",
|
"nativeName": "JS_ArrayIterator",
|
||||||
"length": 0,
|
"length": 0,
|
||||||
"flags": "JSPROP_ENUMERATE",
|
"flags": "JSPROP_ENUMERATE",
|
||||||
"pref": None })
|
"pref": None })
|
||||||
|
@ -1630,19 +1630,19 @@ static Class_name: [u8, ..%i] = %s;
|
||||||
static Class: DOMJSClass = DOMJSClass {
|
static Class: DOMJSClass = DOMJSClass {
|
||||||
base: JSClass { name: &Class_name as *u8 as *libc::c_char,
|
base: JSClass { name: &Class_name as *u8 as *libc::c_char,
|
||||||
flags: JSCLASS_IS_DOMJSCLASS | %s | (((%s) & JSCLASS_RESERVED_SLOTS_MASK) << JSCLASS_RESERVED_SLOTS_SHIFT), //JSCLASS_HAS_RESERVED_SLOTS(%s),
|
flags: JSCLASS_IS_DOMJSCLASS | %s | (((%s) & JSCLASS_RESERVED_SLOTS_MASK) << JSCLASS_RESERVED_SLOTS_SHIFT), //JSCLASS_HAS_RESERVED_SLOTS(%s),
|
||||||
addProperty: Some(%s), /* addProperty */
|
addProperty: Some(JS_PropertyStub),
|
||||||
delProperty: Some(crust::JS_PropertyStub), /* delProperty */
|
delProperty: Some(JS_PropertyStub),
|
||||||
getProperty: Some(crust::JS_PropertyStub), /* getProperty */
|
getProperty: Some(JS_PropertyStub),
|
||||||
setProperty: Some(crust::JS_StrictPropertyStub), /* setProperty */
|
setProperty: Some(JS_StrictPropertyStub),
|
||||||
enumerate: Some(crust::JS_EnumerateStub),
|
enumerate: Some(JS_EnumerateStub),
|
||||||
resolve: Some(crust::JS_ResolveStub),
|
resolve: Some(JS_ResolveStub),
|
||||||
convert: Some(crust::JS_ConvertStub),
|
convert: Some(JS_ConvertStub),
|
||||||
finalize: Some(%s), /* finalize */
|
finalize: Some(%s),
|
||||||
checkAccess: None, /* checkAccess */
|
checkAccess: None,
|
||||||
call: None, /* call */
|
call: None,
|
||||||
hasInstance: None, /* hasInstance */
|
hasInstance: None,
|
||||||
construct: None, /* construct */
|
construct: None,
|
||||||
trace: %s, /* trace */
|
trace: %s,
|
||||||
reserved: (0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 05
|
reserved: (0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 05
|
||||||
0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 10
|
0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 10
|
||||||
0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 15
|
0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 15
|
||||||
|
@ -1657,7 +1657,6 @@ static Class: DOMJSClass = DOMJSClass {
|
||||||
""" % (len(self.descriptor.interface.identifier.name) + 1,
|
""" % (len(self.descriptor.interface.identifier.name) + 1,
|
||||||
str_to_const_array(self.descriptor.interface.identifier.name),
|
str_to_const_array(self.descriptor.interface.identifier.name),
|
||||||
flags, slots, slots,
|
flags, slots, slots,
|
||||||
'crust::JS_PropertyStub',
|
|
||||||
FINALIZE_HOOK_NAME, traceHook,
|
FINALIZE_HOOK_NAME, traceHook,
|
||||||
CGIndenter(CGGeneric(DOMClass(self.descriptor))).define())
|
CGIndenter(CGGeneric(DOMClass(self.descriptor))).define())
|
||||||
|
|
||||||
|
@ -1675,19 +1674,19 @@ static PrototypeClassName__: [u8, ..%s] = %s;
|
||||||
static PrototypeClass: JSClass = JSClass {
|
static PrototypeClass: JSClass = JSClass {
|
||||||
name: &PrototypeClassName__ as *u8 as *libc::c_char,
|
name: &PrototypeClassName__ as *u8 as *libc::c_char,
|
||||||
flags: (1 & JSCLASS_RESERVED_SLOTS_MASK) << JSCLASS_RESERVED_SLOTS_SHIFT, //JSCLASS_HAS_RESERVED_SLOTS(1)
|
flags: (1 & JSCLASS_RESERVED_SLOTS_MASK) << JSCLASS_RESERVED_SLOTS_SHIFT, //JSCLASS_HAS_RESERVED_SLOTS(1)
|
||||||
addProperty: Some(crust::JS_PropertyStub), /* addProperty */
|
addProperty: Some(JS_PropertyStub),
|
||||||
delProperty: Some(crust::JS_PropertyStub), /* delProperty */
|
delProperty: Some(JS_PropertyStub),
|
||||||
getProperty: Some(crust::JS_PropertyStub), /* getProperty */
|
getProperty: Some(JS_PropertyStub),
|
||||||
setProperty: Some(crust::JS_StrictPropertyStub), /* setProperty */
|
setProperty: Some(JS_StrictPropertyStub),
|
||||||
enumerate: Some(crust::JS_EnumerateStub),
|
enumerate: Some(JS_EnumerateStub),
|
||||||
resolve: Some(crust::JS_ResolveStub),
|
resolve: Some(JS_ResolveStub),
|
||||||
convert: Some(crust::JS_ConvertStub),
|
convert: Some(JS_ConvertStub),
|
||||||
finalize: None, /* finalize */
|
finalize: None,
|
||||||
checkAccess: None, /* checkAccess */
|
checkAccess: None,
|
||||||
call: None, /* call */
|
call: None,
|
||||||
hasInstance: None, /* hasInstance */
|
hasInstance: None,
|
||||||
construct: None, /* construct */
|
construct: None,
|
||||||
trace: None, /* trace */
|
trace: None,
|
||||||
reserved: (0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 05
|
reserved: (0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 05
|
||||||
0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 10
|
0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 10
|
||||||
0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 15
|
0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 15
|
||||||
|
@ -1713,19 +1712,19 @@ class CGInterfaceObjectJSClass(CGThing):
|
||||||
return """
|
return """
|
||||||
static InterfaceObjectClass: JSClass = {
|
static InterfaceObjectClass: JSClass = {
|
||||||
%s, 0,
|
%s, 0,
|
||||||
crust::JS_PropertyStub, /* addProperty */
|
JS_PropertyStub,
|
||||||
crust::JS_PropertyStub, /* delProperty */
|
JS_PropertyStub,
|
||||||
crust::JS_PropertyStub, /* getProperty */
|
JS_PropertyStub,
|
||||||
crust::JS_StrictPropertyStub, /* setProperty */
|
JS_StrictPropertyStub,
|
||||||
crust::JS_EnumerateStub,
|
JS_EnumerateStub,
|
||||||
crust::JS_ResolveStub,
|
JS_ResolveStub,
|
||||||
crust::JS_ConvertStub,
|
JS_ConvertStub,
|
||||||
0 as *u8, /* finalize */
|
0 as *u8,
|
||||||
0 as *u8, /* checkAccess */
|
0 as *u8,
|
||||||
%s, /* call */
|
%s,
|
||||||
%s, /* hasInstance */
|
%s,
|
||||||
%s, /* construct */
|
%s,
|
||||||
0 as *u8, /* trace */
|
0 as *u8,
|
||||||
JSCLASS_NO_INTERNAL_MEMBERS
|
JSCLASS_NO_INTERNAL_MEMBERS
|
||||||
};
|
};
|
||||||
""" % (str_to_const_array("Function"), ctorname, hasinstance, ctorname)
|
""" % (str_to_const_array("Function"), ctorname, hasinstance, ctorname)
|
||||||
|
@ -4587,7 +4586,7 @@ class CGBindingRoot(CGThing):
|
||||||
#XXXjdm This should only import the namespace for the current binding,
|
#XXXjdm This should only import the namespace for the current binding,
|
||||||
# not every binding ever.
|
# not every binding ever.
|
||||||
curr = CGImports(curr, [
|
curr = CGImports(curr, [
|
||||||
'js::{crust, JS_ARGV, JS_CALLEE, JS_THIS_OBJECT}',
|
'js::{JS_ARGV, JS_CALLEE, JS_THIS_OBJECT}',
|
||||||
'js::{JSCLASS_GLOBAL_SLOT_COUNT, JSCLASS_IS_DOMJSCLASS}',
|
'js::{JSCLASS_GLOBAL_SLOT_COUNT, JSCLASS_IS_DOMJSCLASS}',
|
||||||
'js::{JSCLASS_IS_GLOBAL, JSCLASS_RESERVED_SLOTS_SHIFT}',
|
'js::{JSCLASS_IS_GLOBAL, JSCLASS_RESERVED_SLOTS_SHIFT}',
|
||||||
'js::{JSCLASS_RESERVED_SLOTS_MASK, JSID_VOID, JSJitInfo}',
|
'js::{JSCLASS_RESERVED_SLOTS_MASK, JSID_VOID, JSJitInfo}',
|
||||||
|
@ -4600,9 +4599,10 @@ class CGBindingRoot(CGThing):
|
||||||
'js::jsapi::{JS_NewObject, JS_ObjectIsCallable, JS_SetPrototype}',
|
'js::jsapi::{JS_NewObject, JS_ObjectIsCallable, JS_SetPrototype}',
|
||||||
'js::jsapi::{JS_SetReservedSlot, JS_WrapValue, JSBool, JSContext}',
|
'js::jsapi::{JS_SetReservedSlot, JS_WrapValue, JSBool, JSContext}',
|
||||||
'js::jsapi::{JSClass, JSFreeOp, JSFunctionSpec, JSHandleObject, jsid}',
|
'js::jsapi::{JSClass, JSFreeOp, JSFunctionSpec, JSHandleObject, jsid}',
|
||||||
'js::jsapi::{JSNativeWrapper, JSObject, JSPropertyDescriptor}',
|
'js::jsapi::{JSNativeWrapper, JSObject, JSPropertyDescriptor, JS_ArrayIterator}',
|
||||||
'js::jsapi::{JSPropertyOpWrapper, JSPropertySpec}',
|
'js::jsapi::{JSPropertyOpWrapper, JSPropertySpec, JS_PropertyStub}',
|
||||||
'js::jsapi::{JSStrictPropertyOpWrapper, JSString, JSTracer}',
|
'js::jsapi::{JSStrictPropertyOpWrapper, JSString, JSTracer, JS_ConvertStub}',
|
||||||
|
'js::jsapi::{JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub}',
|
||||||
'js::jsval::JSVal',
|
'js::jsval::JSVal',
|
||||||
'js::jsval::{ObjectValue, ObjectOrNullValue, PrivateValue}',
|
'js::jsval::{ObjectValue, ObjectOrNullValue, PrivateValue}',
|
||||||
'js::jsval::{NullValue, UndefinedValue}',
|
'js::jsval::{NullValue, UndefinedValue}',
|
||||||
|
@ -5712,7 +5712,7 @@ class GlobalGenRoots():
|
||||||
'dom::bindings::error::throw_not_in_union',
|
'dom::bindings::error::throw_not_in_union',
|
||||||
'dom::bindings::js::JS',
|
'dom::bindings::js::JS',
|
||||||
'dom::types::*',
|
'dom::types::*',
|
||||||
'js::{crust, JS_ARGV, JS_CALLEE, JS_THIS_OBJECT}',
|
'js::{JS_ARGV, JS_CALLEE, JS_THIS_OBJECT}',
|
||||||
'js::{JSCLASS_GLOBAL_SLOT_COUNT, JSCLASS_IS_DOMJSCLASS}',
|
'js::{JSCLASS_GLOBAL_SLOT_COUNT, JSCLASS_IS_DOMJSCLASS}',
|
||||||
'js::{JSCLASS_IS_GLOBAL, JSCLASS_RESERVED_SLOTS_SHIFT}',
|
'js::{JSCLASS_IS_GLOBAL, JSCLASS_RESERVED_SLOTS_SHIFT}',
|
||||||
'js::{JSCLASS_RESERVED_SLOTS_MASK, JSID_VOID, JSJitInfo}',
|
'js::{JSCLASS_RESERVED_SLOTS_MASK, JSID_VOID, JSJitInfo}',
|
||||||
|
|
|
@ -6,11 +6,11 @@ use dom::bindings::utils::is_dom_proxy;
|
||||||
use js::jsapi::{JSContext, jsid, JSPropertyDescriptor, JSObject, JSString, jschar};
|
use js::jsapi::{JSContext, jsid, JSPropertyDescriptor, JSObject, JSString, jschar};
|
||||||
use js::jsapi::{JS_GetPropertyDescriptorById, JS_NewUCString, JS_malloc, JS_free};
|
use js::jsapi::{JS_GetPropertyDescriptorById, JS_NewUCString, JS_malloc, JS_free};
|
||||||
use js::jsapi::{JSBool, JS_DefinePropertyById, JS_NewObjectWithGivenProto};
|
use js::jsapi::{JSBool, JS_DefinePropertyById, JS_NewObjectWithGivenProto};
|
||||||
|
use js::jsapi::JS_StrictPropertyStub;
|
||||||
use js::jsval::ObjectValue;
|
use js::jsval::ObjectValue;
|
||||||
use js::glue::GetProxyExtra;
|
use js::glue::GetProxyExtra;
|
||||||
use js::glue::{GetObjectProto, GetObjectParent, SetProxyExtra, GetProxyHandler};
|
use js::glue::{GetObjectProto, GetObjectParent, SetProxyExtra, GetProxyHandler};
|
||||||
use js::glue::InvokeGetOwnPropertyDescriptor;
|
use js::glue::InvokeGetOwnPropertyDescriptor;
|
||||||
use js::crust::{JS_StrictPropertyStub};
|
|
||||||
use js::{JSPROP_GETTER, JSPROP_ENUMERATE, JSPROP_READONLY, JSRESOLVE_QUALIFIED};
|
use js::{JSPROP_GETTER, JSPROP_ENUMERATE, JSPROP_READONLY, JSRESOLVE_QUALIFIED};
|
||||||
|
|
||||||
use std::cast;
|
use std::cast;
|
||||||
|
@ -46,7 +46,10 @@ pub extern fn getPropertyDescriptor(cx: *JSContext, proxy: *JSObject, id: jsid,
|
||||||
pub fn defineProperty_(cx: *JSContext, proxy: *JSObject, id: jsid,
|
pub fn defineProperty_(cx: *JSContext, proxy: *JSObject, id: jsid,
|
||||||
desc: *JSPropertyDescriptor) -> JSBool {
|
desc: *JSPropertyDescriptor) -> JSBool {
|
||||||
unsafe {
|
unsafe {
|
||||||
if ((*desc).attrs & JSPROP_GETTER) != 0 && (*desc).setter == Some(JS_StrictPropertyStub) {
|
//FIXME: Workaround for https://github.com/mozilla/rust/issues/13385
|
||||||
|
let setter: *libc::c_void = cast::transmute((*desc).setter);
|
||||||
|
let setter_stub: *libc::c_void = cast::transmute(JS_StrictPropertyStub);
|
||||||
|
if ((*desc).attrs & JSPROP_GETTER) != 0 && setter == setter_stub {
|
||||||
/*return JS_ReportErrorFlagsAndNumber(cx,
|
/*return JS_ReportErrorFlagsAndNumber(cx,
|
||||||
JSREPORT_WARNING | JSREPORT_STRICT |
|
JSREPORT_WARNING | JSREPORT_STRICT |
|
||||||
JSREPORT_STRICT_MODE_ERROR,
|
JSREPORT_STRICT_MODE_ERROR,
|
||||||
|
|
|
@ -19,14 +19,11 @@ use servo_net::image_cache_task::ImageCacheTask;
|
||||||
use servo_util::str::DOMString;
|
use servo_util::str::DOMString;
|
||||||
use servo_util::task::{spawn_named};
|
use servo_util::task::{spawn_named};
|
||||||
|
|
||||||
use js::glue::*;
|
use js::jsapi::{JSObject, JSContext, JS_DefineProperty, JS_PropertyStub, JS_StrictPropertyStub};
|
||||||
use js::jsapi::{JSObject, JSContext, JS_DefineProperty};
|
use js::jsval::{NullValue, ObjectValue, JSVal};
|
||||||
use js::jsval::JSVal;
|
|
||||||
use js::jsval::{NullValue, ObjectValue};
|
|
||||||
use js::JSPROP_ENUMERATE;
|
use js::JSPROP_ENUMERATE;
|
||||||
|
|
||||||
use collections::hashmap::HashMap;
|
use collections::hashmap::HashMap;
|
||||||
use std::cast;
|
|
||||||
use std::cmp;
|
use std::cmp;
|
||||||
use std::comm::{channel, Sender, Receiver};
|
use std::comm::{channel, Sender, Receiver};
|
||||||
use std::comm::Select;
|
use std::comm::Select;
|
||||||
|
@ -329,8 +326,8 @@ impl Window {
|
||||||
unsafe {
|
unsafe {
|
||||||
JS_DefineProperty(cx, object, name,
|
JS_DefineProperty(cx, object, name,
|
||||||
ObjectValue(&*object),
|
ObjectValue(&*object),
|
||||||
Some(cast::transmute(GetJSClassHookStubPointer(PROPERTY_STUB))),
|
Some(JS_PropertyStub),
|
||||||
Some(cast::transmute(GetJSClassHookStubPointer(STRICT_PROPERTY_STUB))),
|
Some(JS_StrictPropertyStub),
|
||||||
JSPROP_ENUMERATE);
|
JSPROP_ENUMERATE);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit f81f450ba6a742041844d40154dfe8ad1e540a46
|
Subproject commit 9f0ae0ab33f786c9d2d5e1a9fdfdc6c07fa98033
|
Loading…
Add table
Add a link
Reference in a new issue