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 { ...@@ -23,7 +23,11 @@ class PromiseTracker::PromiseWeakCallbackData final {
WTF_MAKE_NONCOPYABLE(PromiseWeakCallbackData); WTF_MAKE_NONCOPYABLE(PromiseWeakCallbackData);
public: public:
PromiseWeakCallbackData(PromiseTracker* tracker, int id) PromiseWeakCallbackData(PromiseTracker* tracker, int id)
#if ENABLE(OILPAN)
: m_tracker(tracker)
#else
: m_tracker(tracker->m_weakPtrFactory.createWeakPtr()) : m_tracker(tracker->m_weakPtrFactory.createWeakPtr())
#endif
, m_id(id) , m_id(id)
{ {
} }
...@@ -36,7 +40,7 @@ public: ...@@ -36,7 +40,7 @@ public:
m_tracker->m_listener->didUpdatePromise(InspectorFrontend::Debugger::EventType::Gc, promiseDetails.release()); m_tracker->m_listener->didUpdatePromise(InspectorFrontend::Debugger::EventType::Gc, promiseDetails.release());
} }
WeakPtr<PromiseTracker> m_tracker; WeakPtrWillBeWeakPersistent<PromiseTracker> m_tracker;
int m_id; int m_id;
}; };
...@@ -73,7 +77,9 @@ PromiseTracker::PromiseTracker(Listener* listener, v8::Isolate* isolate) ...@@ -73,7 +77,9 @@ PromiseTracker::PromiseTracker(Listener* listener, v8::Isolate* isolate)
, m_captureStacks(false) , m_captureStacks(false)
, m_listener(listener) , m_listener(listener)
, m_isolate(isolate) , m_isolate(isolate)
#if !ENABLE(OILPAN)
, m_weakPtrFactory(this) , m_weakPtrFactory(this)
#endif
, m_idToPromise(isolate) , m_idToPromise(isolate)
{ {
clear(); clear();
......
...@@ -59,7 +59,9 @@ private: ...@@ -59,7 +59,9 @@ private:
v8::Isolate* m_isolate; v8::Isolate* m_isolate;
v8::Persistent<v8::NativeWeakMap> m_promiseToId; v8::Persistent<v8::NativeWeakMap> m_promiseToId;
#if !ENABLE(OILPAN)
WeakPtrFactory<PromiseTracker> m_weakPtrFactory; WeakPtrFactory<PromiseTracker> m_weakPtrFactory;
#endif
class PromiseWeakCallbackData; class PromiseWeakCallbackData;
class IdToPromiseMapTraits : public V8GlobalValueMapTraits<int, v8::Object, v8::kWeakWithParameter> { 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