summaryrefslogtreecommitdiff
path: root/src/fs_event_wrap.cc
diff options
context:
space:
mode:
authorTrevor Norris <trev.norris@gmail.com>2013-05-16 15:45:53 -0700
committerTrevor Norris <trev.norris@gmail.com>2013-05-16 16:06:01 -0700
commit79988438078f58f828811ec87394700ccef42293 (patch)
treefb218eacaf2e76cf2e14715926ab4759a095bd0b /src/fs_event_wrap.cc
parent999ee45d367256bca3d3fbecab37c4fbca49ebec (diff)
downloadandroid-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.cc21
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);
}