зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1288817, part 2 - Remove marking methods from XPCNativeScriptableShared and XPCNativeScriptableFlags. r=billm
Nothing depends on the value of the mark bit now. MozReview-Commit-ID: 9k06XdtR9KB --HG-- extra : rebase_source : 57c54960af71c754663575a02c4fc319dd13b505
This commit is contained in:
Родитель
2c83670c32
Коммит
38bb6c7436
|
@ -1426,35 +1426,28 @@ class XPCNativeSet final
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
// XPCNativeScriptableFlags is a wrapper class that holds the flags returned
|
// XPCNativeScriptableFlags is a wrapper class that holds the flags returned
|
||||||
// from calls to nsIXPCScriptable::GetScriptableFlags(). It has convenience
|
// from calls to nsIXPCScriptable::GetScriptableFlags(). It has convenience
|
||||||
// methods to check for particular bitflags. Since we also use this class as
|
// methods to check for particular bitflags.
|
||||||
// a member of the gc'd class XPCNativeScriptableShared, this class holds the
|
|
||||||
// bit and exposes the inlined methods to support marking.
|
|
||||||
|
|
||||||
#define XPC_WN_SJSFLAGS_MARK_FLAG JS_BIT(31) // only high bit of 32 is set
|
|
||||||
|
|
||||||
class XPCNativeScriptableFlags final
|
class XPCNativeScriptableFlags final
|
||||||
{
|
{
|
||||||
private:
|
|
||||||
uint32_t mFlags;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
explicit XPCNativeScriptableFlags(uint32_t flags = 0) : mFlags(flags) {}
|
explicit XPCNativeScriptableFlags(uint32_t flags = 0) : mFlags(flags) {}
|
||||||
|
|
||||||
uint32_t GetFlags() const {return mFlags & ~XPC_WN_SJSFLAGS_MARK_FLAG;}
|
uint32_t GetFlags() const { return mFlags; }
|
||||||
void SetFlags(uint32_t flags) { mFlags = flags; }
|
void SetFlags(uint32_t flags) { mFlags = flags; }
|
||||||
|
|
||||||
operator uint32_t() const { return GetFlags(); }
|
operator uint32_t() const { return GetFlags(); }
|
||||||
|
|
||||||
XPCNativeScriptableFlags(const XPCNativeScriptableFlags& r)
|
XPCNativeScriptableFlags(const XPCNativeScriptableFlags& r)
|
||||||
{mFlags = r.GetFlags();}
|
{
|
||||||
|
mFlags = r.GetFlags();
|
||||||
|
}
|
||||||
|
|
||||||
XPCNativeScriptableFlags& operator= (const XPCNativeScriptableFlags& r)
|
XPCNativeScriptableFlags& operator= (const XPCNativeScriptableFlags& r)
|
||||||
{mFlags = r.GetFlags(); return *this;}
|
{
|
||||||
|
mFlags = r.GetFlags();
|
||||||
void Mark() {mFlags |= XPC_WN_SJSFLAGS_MARK_FLAG;}
|
return *this;
|
||||||
void Unmark() {mFlags &= ~XPC_WN_SJSFLAGS_MARK_FLAG;}
|
}
|
||||||
bool IsMarked() const {return 0 != (mFlags & XPC_WN_SJSFLAGS_MARK_FLAG);}
|
|
||||||
|
|
||||||
#ifdef GET_IT
|
#ifdef GET_IT
|
||||||
#undef GET_IT
|
#undef GET_IT
|
||||||
|
@ -1484,6 +1477,9 @@ public:
|
||||||
bool DontReflectInterfaceNames() GET_IT(DONT_REFLECT_INTERFACE_NAMES)
|
bool DontReflectInterfaceNames() GET_IT(DONT_REFLECT_INTERFACE_NAMES)
|
||||||
|
|
||||||
#undef GET_IT
|
#undef GET_IT
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint32_t mFlags;
|
||||||
};
|
};
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
|
@ -1513,10 +1509,6 @@ public:
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mark() { mFlags.Mark(); }
|
|
||||||
void Unmark() { mFlags.Unmark(); }
|
|
||||||
bool IsMarked() const { return mFlags.IsMarked(); }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
~XPCNativeScriptableShared();
|
~XPCNativeScriptableShared();
|
||||||
|
|
||||||
|
@ -1550,12 +1542,7 @@ public:
|
||||||
void
|
void
|
||||||
SetScriptableShared(already_AddRefed<XPCNativeScriptableShared>&& shared) { mShared = shared; }
|
SetScriptableShared(already_AddRefed<XPCNativeScriptableShared>&& shared) { mShared = shared; }
|
||||||
|
|
||||||
void Mark()
|
void Mark() {}
|
||||||
{
|
|
||||||
if (mShared)
|
|
||||||
mShared->Mark();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TraceJS(JSTracer* trc) {}
|
void TraceJS(JSTracer* trc) {}
|
||||||
void AutoTrace(JSTracer* trc) {}
|
void AutoTrace(JSTracer* trc) {}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче