Oilpan: have PromiseTracker callback keep a WeakPersistent<>.
For the v8 callback objects that PromiseTrackers create, insist on using
a WeakPersistent<> back reference to the PromiseTracker when Oilpan
is enabled.
R=haraken
BUG=340522
Review URL: https://codereview.chromium.org/1301253002
git-svn-id: svn://svn.chromium.org/blink/trunk@200963 bbb929c8-8fbe-4397-9dbb-9b2b20218538
diff --git a/Source/core/inspector/PromiseTracker.cpp b/Source/core/inspector/PromiseTracker.cpp
index c4830d5..016c43b 100644
--- a/Source/core/inspector/PromiseTracker.cpp
+++ b/Source/core/inspector/PromiseTracker.cpp
@@ -23,7 +23,11 @@
WTF_MAKE_NONCOPYABLE(PromiseWeakCallbackData);
public:
PromiseWeakCallbackData(PromiseTracker* tracker, int id)
+#if ENABLE(OILPAN)
+ : m_tracker(tracker)
+#else
: m_tracker(tracker->m_weakPtrFactory.createWeakPtr())
+#endif
, m_id(id)
{
}
@@ -36,7 +40,7 @@
m_tracker->m_listener->didUpdatePromise(InspectorFrontend::Debugger::EventType::Gc, promiseDetails.release());
}
- WeakPtr<PromiseTracker> m_tracker;
+ WeakPtrWillBeWeakPersistent<PromiseTracker> m_tracker;
int m_id;
};
@@ -73,7 +77,9 @@
, m_captureStacks(false)
, m_listener(listener)
, m_isolate(isolate)
+#if !ENABLE(OILPAN)
, m_weakPtrFactory(this)
+#endif
, m_idToPromise(isolate)
{
clear();
diff --git a/Source/core/inspector/PromiseTracker.h b/Source/core/inspector/PromiseTracker.h
index abc6cec..265e693 100644
--- a/Source/core/inspector/PromiseTracker.h
+++ b/Source/core/inspector/PromiseTracker.h
@@ -59,7 +59,9 @@
v8::Isolate* m_isolate;
v8::Persistent<v8::NativeWeakMap> m_promiseToId;
+#if !ENABLE(OILPAN)
WeakPtrFactory<PromiseTracker> m_weakPtrFactory;
+#endif
class PromiseWeakCallbackData;
class IdToPromiseMapTraits : public V8GlobalValueMapTraits<int, v8::Object, v8::kWeakWithParameter> {