auto merge of #2058 : jdm/servo/rmcrust, r=Ms2ger

This commit is contained in:
bors-servo 2014-04-08 11:13:12 -04:00
commit aa36ae62cd
4 changed files with 57 additions and 57 deletions

View file

@ -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}',

View file

@ -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,

View file

@ -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