From 79988438078f58f828811ec87394700ccef42293 Mon Sep 17 00:00:00 2001 From: Trevor Norris Date: Thu, 16 May 2013 15:45:53 -0700 Subject: [PATCH] fs_event: use cached Persistent syms instead Instead of String::New every time, use a Persistent sym. This can be accomplished in two ways: 1) Local str = *persistent_str_sym; 2) Handle str = persistent_str_sym; I've chosen to use the latter method for simplicity's sake. Other small changes include creating syms on Initialize and removing unnecessary Local casting on return values. --- src/fs_event_wrap.cc | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/fs_event_wrap.cc b/src/fs_event_wrap.cc index 78b7cf1c1d..985171fcd4 100644 --- a/src/fs_event_wrap.cc +++ b/src/fs_event_wrap.cc @@ -28,7 +28,9 @@ using namespace v8; namespace node { +static Persistent change_sym; static Persistent onchange_sym; +static Persistent rename_sym; class FSEventWrap: public HandleWrap { public: @@ -76,6 +78,10 @@ void FSEventWrap::Initialize(Handle target) { target->Set(String::NewSymbol("FSEvent"), Persistent::New(node_isolate, t)->GetFunction()); + + change_sym = NODE_PSYMBOL("change"); + onchange_sym = NODE_PSYMBOL("onchange"); + rename_sym = NODE_PSYMBOL("rename"); } @@ -118,7 +124,7 @@ Handle FSEventWrap::Start(const Arguments& args) { void FSEventWrap::OnEvent(uv_fs_event_t* handle, const char* filename, int events, int status) { HandleScope scope(node_isolate); - Local eventStr; + Handle eventStr; FSEventWrap* wrap = static_cast(handle->data); @@ -140,27 +146,22 @@ void FSEventWrap::OnEvent(uv_fs_event_t* handle, const char* filename, eventStr = String::Empty(node_isolate); } else if (events & UV_RENAME) { - eventStr = String::New("rename"); + eventStr = rename_sym; } else if (events & UV_CHANGE) { - eventStr = String::New("change"); + eventStr = change_sym; } else { assert(0 && "bad fs events flag"); abort(); } - Local argv[3] = { + Handle argv[3] = { Integer::New(status, node_isolate), eventStr, - filename ? static_cast >(String::New(filename)) - : Local::New(node_isolate, v8::Null(node_isolate)) + filename ? String::New(filename) : v8::Null(node_isolate) }; - if (onchange_sym.IsEmpty()) { - onchange_sym = NODE_PSYMBOL("onchange"); - } - MakeCallback(wrap->object_, onchange_sym, ARRAY_SIZE(argv), argv); }