mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-10 02:08:38 +09:00
Issue #2678 - Remove now-unnecessary ClearExternalRefsForWrapperRelease.
All DOMProxyHandler::ClearExternalRefsForWrapperRelease now does is clear a backpointer to the expando, and that's handled during reflector finalization already, making it redundant.
This commit is contained in:
parent
c9c941f321
commit
0121aefb61
3 changed files with 0 additions and 37 deletions
|
|
@ -7,7 +7,6 @@
|
|||
|
||||
#include "js/Class.h"
|
||||
#include "js/Proxy.h"
|
||||
#include "mozilla/dom/DOMJSProxyHandler.h"
|
||||
#include "mozilla/CycleCollectedJSContext.h"
|
||||
#include "mozilla/HoldDropJSObjects.h"
|
||||
#include "nsCycleCollectionTraversalCallback.h"
|
||||
|
|
@ -49,13 +48,6 @@ void
|
|||
nsWrapperCache::ReleaseWrapper(void* aScriptObjectHolder)
|
||||
{
|
||||
if (PreservingWrapper()) {
|
||||
// PreserveWrapper puts new DOM bindings in the JS holders hash, but they
|
||||
// can also be in the DOM expando hash, so we need to try to remove them
|
||||
// from both here.
|
||||
JSObject* obj = GetWrapperPreserveColor();
|
||||
if (IsDOMBinding() && obj && js::IsProxy(obj)) {
|
||||
DOMProxyHandler::ClearExternalRefsForWrapperRelease(obj);
|
||||
}
|
||||
SetPreservingWrapper(false);
|
||||
cyclecollector::DropJSObjectsImpl(aScriptObjectHolder);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,25 +69,6 @@ struct SetDOMProxyInformation
|
|||
|
||||
SetDOMProxyInformation gSetDOMProxyInformation;
|
||||
|
||||
// static
|
||||
void
|
||||
DOMProxyHandler::ClearExternalRefsForWrapperRelease(JSObject* obj)
|
||||
{
|
||||
MOZ_ASSERT(IsDOMProxy(obj), "expected a DOM proxy object");
|
||||
JS::Value v = js::GetProxyExtra(obj, JSPROXYSLOT_EXPANDO);
|
||||
if (v.isUndefined() || v.isObject()) {
|
||||
// No expando, or an expando that we reference from our slot anyway, so
|
||||
// don't have to clear state for.
|
||||
return;
|
||||
}
|
||||
|
||||
// Prevent having a dangling pointer to our expando from the
|
||||
// ExpandoAndGeneration.
|
||||
js::ExpandoAndGeneration* expandoAndGeneration =
|
||||
static_cast<js::ExpandoAndGeneration*>(v.toPrivate());
|
||||
expandoAndGeneration->expando = UndefinedValue();
|
||||
}
|
||||
|
||||
// static
|
||||
JSObject*
|
||||
DOMProxyHandler::GetAndClearExpandoObject(JSObject* obj)
|
||||
|
|
|
|||
|
|
@ -131,16 +131,6 @@ public:
|
|||
*/
|
||||
static JSObject* GetExpandoObject(JSObject* obj);
|
||||
|
||||
/*
|
||||
* Clear the "external references" to this object. If you are not
|
||||
* nsWrapperCAche::ReleaseWrapper, you do NOT want to be calling this method.
|
||||
*
|
||||
* XXXbz if we nixed the DOM expando hash and just had a finalizer that
|
||||
* cleared out the value in the ExpandoAndGeneration in the shadowing case,
|
||||
* could we just get rid of this function altogether?
|
||||
*/
|
||||
static void ClearExternalRefsForWrapperRelease(JSObject* obj);
|
||||
|
||||
/*
|
||||
* Clear the expando object for the given DOM proxy and return it. This
|
||||
* function will ensure that the returned object is exposed to active JS if
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue