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

Unified Diff: Source/platform/Supplementable.h

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/platform/Supplementable.h
diff --git a/Source/platform/Supplementable.h b/Source/platform/Supplementable.h
index c5e5b0719b767e488d124470895cccbaa19d3bbf..a15d59cabe3ade8cb9958434e6fa48b60b83ee02 100644
--- a/Source/platform/Supplementable.h
+++ b/Source/platform/Supplementable.h
@@ -143,13 +143,9 @@ public:
{
return host ? host->requireSupplement(key) : 0;
}
-
- // FIXME: Oilpan: Remove this callback once PersistentHeapSupplementable is removed again.
- virtual void persistentHostHasBeenDestroyed() { }
};
-// Helper class for implementing Supplementable, HeapSupplementable, and
-// PersistentHeapSupplementable.
+// Helper class for implementing Supplementable and HeapSupplementable.
template<typename T, bool isGarbageCollected = false>
class SupplementableBase {
public:
@@ -215,37 +211,6 @@ public:
}
};
-// This class is used to make an off-heap class supplementable with supplements
-// that are on-heap, aka. HeapSupplements.
-template<typename T>
-class GC_PLUGIN_IGNORE("http://crbug.com/395036") PersistentHeapSupplementable : public SupplementableBase<T, true> {
-public:
- PersistentHeapSupplementable() : m_root(this) { }
- virtual ~PersistentHeapSupplementable()
- {
- typedef typename SupplementableTraits<T, true>::SupplementMap::iterator SupplementIterator;
- for (SupplementIterator it = this->m_supplements.begin(); it != this->m_supplements.end(); ++it)
- it->value->persistentHostHasBeenDestroyed();
- }
-
- virtual void trace(Visitor* visitor)
- {
- visitor->trace(this->m_supplements);
- SupplementableBase<T, true>::trace(visitor);
- }
-
-private:
- class TraceDelegate : PersistentBase<ThreadLocalPersistents<AnyThread>, TraceDelegate> {
- public:
- TraceDelegate(PersistentHeapSupplementable* owner) : m_owner(owner) { }
- void trace(Visitor* visitor) { m_owner->trace(visitor); }
- private:
- PersistentHeapSupplementable* m_owner;
- };
-
- TraceDelegate m_root;
-};
-
template<typename T>
class Supplement : public SupplementBase<T, false> { };
@@ -257,9 +222,7 @@ public:
virtual void trace(Visitor* visitor)
{
// No tracing of off-heap supplements. We should not have any Supplementable
- // object on the heap. Either the object is HeapSupplementable or if it is
- // off heap it should use PersistentHeapSupplementable to trace any on-heap
- // supplements.
+ // object on the heap.
COMPILE_ASSERT(!IsGarbageCollectedType<T>::value, GarbageCollectedObjectMustBeHeapSupplementable);
SupplementableBase<T, false>::trace(visitor);
}

Powered by Google App Engine
This is Rietveld 408576698