Commit 4b9b44a6 authored by sigbjornf@opera.com's avatar sigbjornf@opera.com

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
parent acd75163
......@@ -23,7 +23,11 @@ class PromiseTracker::PromiseWeakCallbackData final {
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 @@ public:
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 @@ PromiseTracker::PromiseTracker(Listener* listener, v8::Isolate* isolate)
, m_captureStacks(false)
, m_listener(listener)
, m_isolate(isolate)
#if !ENABLE(OILPAN)
, m_weakPtrFactory(this)
#endif
, m_idToPromise(isolate)
{
clear();
......
......@@ -59,7 +59,9 @@ private:
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> {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment