From 067aa3dbefd352de2b725d815b0fa89270dbc558 Mon Sep 17 00:00:00 2001 From: Andy Dill Date: Fri, 12 Aug 2016 07:26:13 -0700 Subject: [PATCH] cache routing_id so we can look up the render_view in RunDestructor with no v8 calls --- atom/common/api/remote_object_freer.cc | 9 +++++++-- atom/common/api/remote_object_freer.h | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/atom/common/api/remote_object_freer.cc b/atom/common/api/remote_object_freer.cc index 1762f1d1e0..b1a50363c4 100644 --- a/atom/common/api/remote_object_freer.cc +++ b/atom/common/api/remote_object_freer.cc @@ -41,14 +41,19 @@ void RemoteObjectFreer::BindTo( RemoteObjectFreer::RemoteObjectFreer( v8::Isolate* isolate, v8::Local target, int object_id) : ObjectLifeMonitor(isolate, target), - object_id_(object_id) { + object_id_(object_id), + routing_id_(0) { + content::RenderView* render_view = GetCurrentRenderView(); + if (render_view) { + routing_id_ = render_view->GetRoutingID(); + } } RemoteObjectFreer::~RemoteObjectFreer() { } void RemoteObjectFreer::RunDestructor() { - content::RenderView* render_view = GetCurrentRenderView(); + content::RenderView* render_view = content::RenderView::FromRoutingID(routing_id_); if (!render_view) return; diff --git a/atom/common/api/remote_object_freer.h b/atom/common/api/remote_object_freer.h index c2b5d8b7d3..f99c09537a 100644 --- a/atom/common/api/remote_object_freer.h +++ b/atom/common/api/remote_object_freer.h @@ -23,6 +23,7 @@ class RemoteObjectFreer : public ObjectLifeMonitor { private: int object_id_; + int routing_id_; DISALLOW_COPY_AND_ASSIGN(RemoteObjectFreer); };