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> {