From e4a71b86df23ce0376da7debf2ffbfccb488da82 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Fri, 17 Oct 2014 13:46:32 +0800 Subject: [PATCH] Caching object templates for Event, fixes #705 --- atom/browser/api/event.cc | 17 ++++++++++++++--- vendor/native_mate | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/atom/browser/api/event.cc b/atom/browser/api/event.cc index c97e968d1e..5a0d145a94 100644 --- a/atom/browser/api/event.cc +++ b/atom/browser/api/event.cc @@ -11,6 +11,12 @@ namespace mate { +namespace { + +v8::Persistent template_; + +} // namespace + Event::Event() : sender_(NULL), message_(NULL), @@ -21,9 +27,14 @@ Event::~Event() { } ObjectTemplateBuilder Event::GetObjectTemplateBuilder(v8::Isolate* isolate) { - return ObjectTemplateBuilder(isolate) - .SetMethod("preventDefault", &Event::PreventDefault) - .SetMethod("sendReply", &Event::SendReply); + if (template_.IsEmpty()) + template_.Reset(isolate, ObjectTemplateBuilder(isolate) + .SetMethod("preventDefault", &Event::PreventDefault) + .SetMethod("sendReply", &Event::SendReply) + .Build()); + + return ObjectTemplateBuilder( + isolate, v8::Local::New(isolate, template_)); } void Event::SetSenderAndMessage(content::WebContents* sender, diff --git a/vendor/native_mate b/vendor/native_mate index c5b39126ee..cc9d222923 160000 --- a/vendor/native_mate +++ b/vendor/native_mate @@ -1 +1 @@ -Subproject commit c5b39126ee7388acc61a25ac6b5fefb7a2cd6262 +Subproject commit cc9d22292361e8b74e82a4e6a77407c17b4bfda7