зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1264778 - Merge some XPConnect js::Class instances. r=mrbkap.
XPC_WN_WithCall_ObjectOps and XPC_WN_NoCall_ObjectOps are both equal to JS_NULL_OBJECT_OPS. As a result, XPC_WN_ModsAllowed_{With,No}Call_Proto_JSClass are identical, as are XPC_WN_NoMods_{With,No}Call_Proto_JSClass. (In both cases, modulo the class name.) This patch merges those identical-except-for-their-name pairs, resulting in XPC_WN_ModsAllowed_Proto_JSClass and XPC_WN_NoMods_Proto_JSClass. --HG-- extra : rebase_source : 64c5990fa5dd09418466ee25a24300bb9cfd3596
This commit is contained in:
Родитель
658dbcfecc
Коммит
6dd45df6bb
|
@ -1169,10 +1169,8 @@ XPC_WN_GetterSetter(JSContext* cx, unsigned argc, Value* vp)
|
|||
static bool
|
||||
XPC_WN_Shared_Proto_Enumerate(JSContext* cx, HandleObject obj)
|
||||
{
|
||||
MOZ_ASSERT(js::GetObjectClass(obj) == &XPC_WN_ModsAllowed_WithCall_Proto_JSClass ||
|
||||
js::GetObjectClass(obj) == &XPC_WN_ModsAllowed_NoCall_Proto_JSClass ||
|
||||
js::GetObjectClass(obj) == &XPC_WN_NoMods_WithCall_Proto_JSClass ||
|
||||
js::GetObjectClass(obj) == &XPC_WN_NoMods_NoCall_Proto_JSClass,
|
||||
MOZ_ASSERT(js::GetObjectClass(obj) == &XPC_WN_ModsAllowed_Proto_JSClass ||
|
||||
js::GetObjectClass(obj) == &XPC_WN_NoMods_Proto_JSClass,
|
||||
"bad proto");
|
||||
XPCWrappedNativeProto* self =
|
||||
(XPCWrappedNativeProto*) xpc_GetJSPrivate(obj);
|
||||
|
@ -1235,8 +1233,7 @@ XPC_WN_Shared_Proto_Trace(JSTracer* trc, JSObject* obj)
|
|||
static bool
|
||||
XPC_WN_ModsAllowed_Proto_Resolve(JSContext* cx, HandleObject obj, HandleId id, bool* resolvep)
|
||||
{
|
||||
MOZ_ASSERT(js::GetObjectClass(obj) == &XPC_WN_ModsAllowed_WithCall_Proto_JSClass ||
|
||||
js::GetObjectClass(obj) == &XPC_WN_ModsAllowed_NoCall_Proto_JSClass,
|
||||
MOZ_ASSERT(js::GetObjectClass(obj) == &XPC_WN_ModsAllowed_Proto_JSClass,
|
||||
"bad proto");
|
||||
|
||||
XPCWrappedNativeProto* self =
|
||||
|
@ -1276,22 +1273,13 @@ static const js::ClassExtension XPC_WN_Shared_Proto_ClassExtension = {
|
|||
XPC_WN_Shared_Proto_ObjectMoved
|
||||
};
|
||||
|
||||
const js::Class XPC_WN_ModsAllowed_WithCall_Proto_JSClass = {
|
||||
"XPC_WN_ModsAllowed_WithCall_Proto_JSClass",
|
||||
const js::Class XPC_WN_ModsAllowed_Proto_JSClass = {
|
||||
"XPC_WN_ModsAllowed_Proto_JSClass",
|
||||
WRAPPER_FLAGS,
|
||||
&XPC_WN_ModsAllowed_Proto_JSClassOps,
|
||||
JS_NULL_CLASS_SPEC,
|
||||
&XPC_WN_Shared_Proto_ClassExtension,
|
||||
XPC_WN_WithCall_ObjectOps
|
||||
};
|
||||
|
||||
const js::Class XPC_WN_ModsAllowed_NoCall_Proto_JSClass = {
|
||||
"XPC_WN_ModsAllowed_NoCall_Proto_JSClass",
|
||||
WRAPPER_FLAGS,
|
||||
&XPC_WN_ModsAllowed_Proto_JSClassOps,
|
||||
JS_NULL_CLASS_SPEC,
|
||||
&XPC_WN_Shared_Proto_ClassExtension,
|
||||
XPC_WN_NoCall_ObjectOps
|
||||
JS_NULL_OBJECT_OPS
|
||||
};
|
||||
|
||||
/***************************************************************************/
|
||||
|
@ -1300,8 +1288,7 @@ static bool
|
|||
XPC_WN_OnlyIWrite_Proto_AddPropertyStub(JSContext* cx, HandleObject obj, HandleId id,
|
||||
HandleValue v)
|
||||
{
|
||||
MOZ_ASSERT(js::GetObjectClass(obj) == &XPC_WN_NoMods_WithCall_Proto_JSClass ||
|
||||
js::GetObjectClass(obj) == &XPC_WN_NoMods_NoCall_Proto_JSClass,
|
||||
MOZ_ASSERT(js::GetObjectClass(obj) == &XPC_WN_NoMods_Proto_JSClass,
|
||||
"bad proto");
|
||||
|
||||
XPCWrappedNativeProto* self =
|
||||
|
@ -1323,8 +1310,7 @@ XPC_WN_OnlyIWrite_Proto_AddPropertyStub(JSContext* cx, HandleObject obj, HandleI
|
|||
static bool
|
||||
XPC_WN_NoMods_Proto_Resolve(JSContext* cx, HandleObject obj, HandleId id, bool* resolvedp)
|
||||
{
|
||||
MOZ_ASSERT(js::GetObjectClass(obj) == &XPC_WN_NoMods_WithCall_Proto_JSClass ||
|
||||
js::GetObjectClass(obj) == &XPC_WN_NoMods_NoCall_Proto_JSClass,
|
||||
MOZ_ASSERT(js::GetObjectClass(obj) == &XPC_WN_NoMods_Proto_JSClass,
|
||||
"bad proto");
|
||||
|
||||
XPCWrappedNativeProto* self =
|
||||
|
@ -1362,22 +1348,13 @@ static const js::ClassOps XPC_WN_NoMods_Proto_JSClassOps = {
|
|||
XPC_WN_Shared_Proto_Trace, // trace
|
||||
};
|
||||
|
||||
const js::Class XPC_WN_NoMods_WithCall_Proto_JSClass = {
|
||||
"XPC_WN_NoMods_WithCall_Proto_JSClass",
|
||||
const js::Class XPC_WN_NoMods_Proto_JSClass = {
|
||||
"XPC_WN_NoMods_Proto_JSClass",
|
||||
WRAPPER_FLAGS,
|
||||
&XPC_WN_NoMods_Proto_JSClassOps,
|
||||
JS_NULL_CLASS_SPEC,
|
||||
&XPC_WN_Shared_Proto_ClassExtension,
|
||||
XPC_WN_WithCall_ObjectOps
|
||||
};
|
||||
|
||||
const js::Class XPC_WN_NoMods_NoCall_Proto_JSClass = {
|
||||
"XPC_WN_NoMods_NoCall_Proto_JSClass",
|
||||
WRAPPER_FLAGS,
|
||||
&XPC_WN_NoMods_Proto_JSClassOps,
|
||||
JS_NULL_CLASS_SPEC,
|
||||
&XPC_WN_Shared_Proto_ClassExtension,
|
||||
XPC_WN_NoCall_ObjectOps
|
||||
JS_NULL_OBJECT_OPS
|
||||
};
|
||||
|
||||
/***************************************************************************/
|
||||
|
|
|
@ -69,23 +69,11 @@ XPCWrappedNativeProto::Init(const XPCNativeScriptableCreateInfo* scriptableCreat
|
|||
return false;
|
||||
}
|
||||
|
||||
const js::Class* jsclazz;
|
||||
|
||||
if (mScriptableInfo) {
|
||||
const XPCNativeScriptableFlags& flags(mScriptableInfo->GetFlags());
|
||||
|
||||
if (flags.AllowPropModsToPrototype()) {
|
||||
jsclazz = flags.WantCall() ?
|
||||
&XPC_WN_ModsAllowed_WithCall_Proto_JSClass :
|
||||
&XPC_WN_ModsAllowed_NoCall_Proto_JSClass;
|
||||
} else {
|
||||
jsclazz = flags.WantCall() ?
|
||||
&XPC_WN_NoMods_WithCall_Proto_JSClass :
|
||||
&XPC_WN_NoMods_NoCall_Proto_JSClass;
|
||||
}
|
||||
} else {
|
||||
jsclazz = &XPC_WN_NoMods_NoCall_Proto_JSClass;
|
||||
}
|
||||
const js::Class* jsclazz =
|
||||
(mScriptableInfo &&
|
||||
mScriptableInfo->GetFlags().AllowPropModsToPrototype())
|
||||
? &XPC_WN_ModsAllowed_Proto_JSClass
|
||||
: &XPC_WN_NoMods_Proto_JSClass;
|
||||
|
||||
JS::RootedObject global(cx, mScope->GetGlobalJSObject());
|
||||
JS::RootedObject proto(cx, JS_GetObjectPrototype(cx, global));
|
||||
|
|
|
@ -926,10 +926,8 @@ private:
|
|||
// visibility from more than one .cpp file.
|
||||
|
||||
extern const js::Class XPC_WN_NoHelper_JSClass;
|
||||
extern const js::Class XPC_WN_NoMods_WithCall_Proto_JSClass;
|
||||
extern const js::Class XPC_WN_NoMods_NoCall_Proto_JSClass;
|
||||
extern const js::Class XPC_WN_ModsAllowed_WithCall_Proto_JSClass;
|
||||
extern const js::Class XPC_WN_ModsAllowed_NoCall_Proto_JSClass;
|
||||
extern const js::Class XPC_WN_NoMods_Proto_JSClass;
|
||||
extern const js::Class XPC_WN_ModsAllowed_Proto_JSClass;
|
||||
extern const js::Class XPC_WN_Tearoff_JSClass;
|
||||
#define XPC_WN_TEAROFF_RESERVED_SLOTS 1
|
||||
#define XPC_WN_TEAROFF_FLAT_OBJECT_SLOT 0
|
||||
|
@ -941,19 +939,13 @@ XPC_WN_CallMethod(JSContext* cx, unsigned argc, JS::Value* vp);
|
|||
extern bool
|
||||
XPC_WN_GetterSetter(JSContext* cx, unsigned argc, JS::Value* vp);
|
||||
|
||||
// Macros to initialize Object or Function like XPC_WN classes
|
||||
#define XPC_WN_WithCall_ObjectOps JS_NULL_OBJECT_OPS
|
||||
#define XPC_WN_NoCall_ObjectOps JS_NULL_OBJECT_OPS
|
||||
|
||||
// Maybe this macro should check for class->enumerate ==
|
||||
// XPC_WN_Shared_Proto_Enumerate or something rather than checking for
|
||||
// 4 classes?
|
||||
static inline bool IS_PROTO_CLASS(const js::Class* clazz)
|
||||
{
|
||||
return clazz == &XPC_WN_NoMods_WithCall_Proto_JSClass ||
|
||||
clazz == &XPC_WN_NoMods_NoCall_Proto_JSClass ||
|
||||
clazz == &XPC_WN_ModsAllowed_WithCall_Proto_JSClass ||
|
||||
clazz == &XPC_WN_ModsAllowed_NoCall_Proto_JSClass;
|
||||
return clazz == &XPC_WN_NoMods_Proto_JSClass ||
|
||||
clazz == &XPC_WN_ModsAllowed_Proto_JSClass;
|
||||
}
|
||||
|
||||
typedef js::HashSet<size_t,
|
||||
|
|
Загрузка…
Ссылка в новой задаче