Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(722)

Unified Diff: Source/core/frame/DOMWindowProperty.cpp

Issue 517043003: Move Frame to the Oilpan heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Back out non-Oilpan experiment + tidy up by adding frame() ref accessors Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/frame/DOMWindowProperty.cpp
diff --git a/Source/core/frame/DOMWindowProperty.cpp b/Source/core/frame/DOMWindowProperty.cpp
index d1c4226a29e98e018c40ef753181987fe7cdee98..e4664f3a25a7eba380a7200a94abf4add7c0a4e2 100644
--- a/Source/core/frame/DOMWindowProperty.cpp
+++ b/Source/core/frame/DOMWindowProperty.cpp
@@ -34,14 +34,20 @@ namespace blink {
DOMWindowProperty::DOMWindowProperty(LocalFrame* frame)
: m_frame(frame)
+#if !ENABLE(OILPAN)
, m_associatedDOMWindow(nullptr)
+#endif
{
// FIXME: For now it *is* acceptable for a DOMWindowProperty to be created with a null frame.
// See fast/dom/navigator-detached-no-crash.html for the recipe.
// We should fix that. <rdar://problem/11567132>
if (m_frame) {
+#if ENABLE(OILPAN)
+ m_frame->domWindow()->registerProperty(this);
+#else
m_associatedDOMWindow = m_frame->domWindow();
m_associatedDOMWindow->registerProperty(this);
+#endif
}
}
@@ -55,28 +61,35 @@ DOMWindowProperty::~DOMWindowProperty()
void DOMWindowProperty::willDestroyGlobalObjectInFrame()
{
- // If the property is getting this callback it must have been created with a LocalFrame/LocalDOMWindow and it should still have them.
+ // If the property is getting this callback it must have been
+ // created with a LocalFrame and it should still have it.
ASSERT(m_frame);
- ASSERT(m_associatedDOMWindow);
+ m_frame = nullptr;
+#if !ENABLE(OILPAN)
// LocalDOMWindow will along with notifying DOMWindowProperty objects of
// impending destruction, unilaterally clear out its registered set.
// Consequently, no explicit unregisteration required by DOMWindowProperty;
- // here or when finalized.
+ // here or when destructed.
+ ASSERT(m_associatedDOMWindow);
m_associatedDOMWindow = nullptr;
- m_frame = nullptr;
+#endif
}
void DOMWindowProperty::willDetachGlobalObjectFromFrame()
{
- // If the property is getting this callback it must have been created with a LocalFrame/LocalDOMWindow and it should still have them.
+ // If the property is getting this callback it must have been
+ // created with a LocalFrame and it should still have it.
ASSERT(m_frame);
+#if !ENABLE(OILPAN)
+ // Ditto for its associated LocalDOMWindow.
ASSERT(m_associatedDOMWindow);
+#endif
}
void DOMWindowProperty::trace(Visitor* visitor)
{
- visitor->trace(m_associatedDOMWindow);
+ visitor->trace(m_frame);
}
-}
+} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698