diff options
author | Trevor Norris <trev.norris@gmail.com> | 2013-05-16 15:45:53 -0700 |
---|---|---|
committer | Trevor Norris <trev.norris@gmail.com> | 2013-05-16 16:06:01 -0700 |
commit | 79988438078f58f828811ec87394700ccef42293 (patch) | |
tree | fb218eacaf2e76cf2e14715926ab4759a095bd0b /src/fs_event_wrap.cc | |
parent | 999ee45d367256bca3d3fbecab37c4fbca49ebec (diff) | |
download | android-node-v8-79988438078f58f828811ec87394700ccef42293.tar.gz android-node-v8-79988438078f58f828811ec87394700ccef42293.tar.bz2 android-node-v8-79988438078f58f828811ec87394700ccef42293.zip |
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<String> str = *persistent_str_sym;
2) Handle<String> 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.
Diffstat (limited to 'src/fs_event_wrap.cc')
-rw-r--r-- | src/fs_event_wrap.cc | 21 |
1 files 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<String> change_sym; static Persistent<String> onchange_sym; +static Persistent<String> rename_sym; class FSEventWrap: public HandleWrap { public: @@ -76,6 +78,10 @@ void FSEventWrap::Initialize(Handle<Object> target) { target->Set(String::NewSymbol("FSEvent"), Persistent<FunctionTemplate>::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<Value> 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<String> eventStr; + Handle<String> eventStr; FSEventWrap* wrap = static_cast<FSEventWrap*>(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<Value> argv[3] = { + Handle<Value> argv[3] = { Integer::New(status, node_isolate), eventStr, - filename ? static_cast<Local<Value> >(String::New(filename)) - : Local<Value>::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); } |