Bug 1288909, part 2 - Remove a bunch of now-useless XPCNativeSet marking-related things. r=billm
MozReview-Commit-ID: 4YRn9Wx64a4
--- a/js/xpconnect/src/XPCInlines.h
+++ b/js/xpconnect/src/XPCInlines.h
@@ -441,28 +441,16 @@ XPCNativeSet::MatchesSetUpToInterface(co
if (cur != (*pp2))
return false;
if (cur == iface)
return true;
}
return false;
}
-inline void XPCNativeSet::Mark()
-{
- mMarked = 1;
-}
-
-#ifdef DEBUG
-inline void XPCNativeSet::ASSERT_NotMarked()
-{
- MOZ_ASSERT(!IsMarked(), "bad");
-}
-#endif
-
/***************************************************************************/
inline
JSObject* XPCWrappedNativeTearOff::GetJSObjectPreserveColor() const
{
return mJSObject.getPtr();
}
--- a/js/xpconnect/src/XPCJSContext.cpp
+++ b/js/xpconnect/src/XPCJSContext.cpp
@@ -799,36 +799,18 @@ XPCJSContext::FinalizeCallback(JSFreeOp*
// Skip this part if XPConnect is shutting down. We get into
// bad locking problems with the thread iteration otherwise.
if (!nsXPConnect::XPConnect()->IsShuttingDown()) {
// Mark those AutoMarkingPtr lists!
if (AutoMarkingPtr* roots = Get()->mAutoRoots)
roots->MarkAfterJSFinalizeAll();
-
- XPCCallContext* ccxp = XPCJSContext::Get()->GetCallContext();
- while (ccxp) {
- // Deal with the strictness of callcontext that
- // complains if you ask for a set when
- // it is in a state where the set could not
- // possibly be valid.
- if (ccxp->CanGetSet()) {
- XPCNativeSet* set = ccxp->GetSet();
- if (set)
- set->Mark();
- }
- ccxp = ccxp->GetPrevCallContext();
- }
}
-#ifdef DEBUG
- XPCWrappedNativeScope::ASSERT_NoInterfaceSetsAreMarked();
-#endif
-
// Now we are going to recycle any unused WrappedNativeTearoffs.
// We do this by iterating all the live callcontexts
// and marking the tearoffs in use. And then we
// iterate over all the WrappedNative wrappers and sweep their
// tearoffs.
//
// This allows us to perhaps minimize the growth of the
// tearoffs. And also makes us not hold references to interfaces
--- a/js/xpconnect/src/XPCWrappedNativeScope.cpp
+++ b/js/xpconnect/src/XPCWrappedNativeScope.cpp
@@ -587,34 +587,16 @@ XPCWrappedNativeScope::MarkAllWrappedNat
// alive in the hashtable but not currently in use by any wrapper
for (auto i = cur->mWrappedNativeProtoMap->Iter(); !i.Done(); i.Next()) {
auto entry = static_cast<ClassInfo2WrappedNativeProtoMap::Entry*>(i.Get());
entry->value->Mark();
}
}
}
-#ifdef DEBUG
-// static
-void
-XPCWrappedNativeScope::ASSERT_NoInterfaceSetsAreMarked()
-{
- for (XPCWrappedNativeScope* cur = gScopes; cur; cur = cur->mNext) {
- for (auto i = cur->mWrappedNativeMap->Iter(); !i.Done(); i.Next()) {
- auto entry = static_cast<Native2WrappedNativeMap::Entry*>(i.Get());
- entry->value->ASSERT_SetsNotMarked();
- }
- for (auto i = cur->mWrappedNativeProtoMap->Iter(); !i.Done(); i.Next()) {
- auto entry = static_cast<ClassInfo2WrappedNativeProtoMap::Entry*>(i.Get());
- entry->value->ASSERT_SetNotMarked();
- }
- }
-}
-#endif
-
// static
void
XPCWrappedNativeScope::SweepAllWrappedNativeTearOffs()
{
for (XPCWrappedNativeScope* cur = gScopes; cur; cur = cur->mNext) {
for (auto i = cur->mWrappedNativeMap->Iter(); !i.Done(); i.Next()) {
auto entry = static_cast<Native2WrappedNativeMap::Entry*>(i.Get());
entry->value->SweepTearOffs();
--- a/js/xpconnect/src/xpcprivate.h
+++ b/js/xpconnect/src/xpcprivate.h
@@ -926,21 +926,16 @@ public:
}
static void
SuspectAllWrappers(XPCJSContext* cx, nsCycleCollectionNoteRootCallback& cb);
static void
MarkAllWrappedNativesAndProtos();
-#ifdef DEBUG
- static void
- ASSERT_NoInterfaceSetsAreMarked();
-#endif
-
static void
SweepAllWrappedNativeTearOffs();
static void
UpdateWeakPointersAfterGC(XPCJSContext* cx);
static void
KillDyingScopes();
@@ -1375,54 +1370,35 @@ class XPCNativeSet final
}
XPCNativeInterface* GetInterfaceAt(uint16_t i)
{MOZ_ASSERT(i < mInterfaceCount, "bad index"); return mInterfaces[i];}
inline bool MatchesSetUpToInterface(const XPCNativeSet* other,
XPCNativeInterface* iface) const;
- inline void Mark();
-
- // NOP. This is just here to make the AutoMarkingPtr code compile.
- inline void TraceJS(JSTracer* trc) {}
- inline void AutoTrace(JSTracer* trc) {}
-
- public:
- void Unmark() {
- mMarked = 0;
- }
- bool IsMarked() const {
- return false;
- }
-
-#ifdef DEBUG
- inline void ASSERT_NotMarked();
-#endif
-
void DebugDump(int16_t depth);
size_t SizeOfIncludingThis(mozilla::MallocSizeOf mallocSizeOf);
protected:
static already_AddRefed<XPCNativeSet> NewInstance(nsTArray<RefPtr<XPCNativeInterface>>&& array);
static already_AddRefed<XPCNativeSet> NewInstanceMutate(XPCNativeSetKey* key);
XPCNativeSet()
- : mMemberCount(0), mInterfaceCount(0), mMarked(0)
+ : mMemberCount(0), mInterfaceCount(0)
{}
~XPCNativeSet();
void* operator new(size_t, void* p) CPP_THROW_NEW {return p;}
static void DestroyInstance(XPCNativeSet* inst);
private:
uint16_t mMemberCount;
- uint16_t mInterfaceCount : 15;
- uint16_t mMarked : 1;
+ uint16_t mInterfaceCount;
// Always last - object sized for array.
// These are strong references.
XPCNativeInterface* mInterfaces[1];
};
/***************************************************************************/
// XPCNativeScriptableFlags is a wrapper class that holds the flags returned
// from calls to nsIXPCScriptable::GetScriptableFlags(). It has convenience
@@ -1645,43 +1621,34 @@ public:
void DebugDump(int16_t depth);
void TraceSelf(JSTracer* trc) {
if (mJSProtoObject)
mJSProtoObject.trace(trc, "XPCWrappedNativeProto::mJSProtoObject");
}
void TraceInside(JSTracer* trc) {
- if (trc->isMarkingTracer()) {
- mSet->Mark();
- }
-
GetScope()->TraceSelf(trc);
}
void TraceJS(JSTracer* trc) {
TraceSelf(trc);
TraceInside(trc);
}
void WriteBarrierPre(JSContext* cx)
{
if (JS::IsIncrementalBarrierNeeded(cx) && mJSProtoObject)
mJSProtoObject.writeBarrierPre(cx);
}
// NOP. This is just here to make the AutoMarkingPtr code compile.
+ void Mark() const {}
inline void AutoTrace(JSTracer* trc) {}
- void Mark() const {mSet->Mark();}
-
-#ifdef DEBUG
- void ASSERT_SetNotMarked() const {mSet->ASSERT_NotMarked();}
-#endif
-
~XPCWrappedNativeProto();
protected:
// disable copy ctor and assignment
XPCWrappedNativeProto(const XPCWrappedNativeProto& r) = delete;
XPCWrappedNativeProto& operator= (const XPCWrappedNativeProto& r) = delete;
// hide ctor
@@ -1925,24 +1892,20 @@ public:
XPCWrappedNativeTearOff* FindTearOff(XPCNativeInterface* aInterface,
bool needJSObject = false,
nsresult* pError = nullptr);
XPCWrappedNativeTearOff* FindTearOff(const nsIID& iid);
void Mark() const
{
- mSet->Mark();
if (HasProto()) GetProto()->Mark();
}
inline void TraceInside(JSTracer* trc) {
- if (trc->isMarkingTracer()) {
- mSet->Mark();
- }
if (HasProto())
GetProto()->TraceSelf(trc);
else
GetScope()->TraceSelf(trc);
if (mFlatJSObject && JS_IsGlobalObject(mFlatJSObject))
{
xpc::TraceXPCGlobal(trc, mFlatJSObject);
}
@@ -1961,22 +1924,16 @@ public:
}
static void Trace(JSTracer* trc, JSObject* obj);
void AutoTrace(JSTracer* trc) {
TraceSelf(trc);
}
-#ifdef DEBUG
- void ASSERT_SetsNotMarked() const
- {mSet->ASSERT_NotMarked();
- if (HasProto()){GetProto()->ASSERT_SetNotMarked();}}
-#endif
-
inline void SweepTearOffs();
// Returns a string that shuld be free'd using JS_smprintf_free (or null).
char* ToString(XPCWrappedNativeTearOff* to = nullptr) const;
static void GatherProtoScriptableCreateInfo(nsIClassInfo* classInfo,
XPCNativeScriptableCreateInfo& sciProto);