Skip to content

Commit c8e65ba

Browse files
author
Brandon Ferrell
committed
Cleaned up implementation
1 parent ad44644 commit c8e65ba

1 file changed

Lines changed: 19 additions & 22 deletions

File tree

src/java.cpp

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,13 @@
1414

1515
#define DYNAMIC_PROXY_JS_ERROR -4
1616

17-
long v8ThreadIdWIN32;
18-
pthread_t v8ThreadIdNotWIN32;
17+
#ifdef WIN32
18+
typedef long threadId;
19+
#else
20+
typedef pthread_t threadId;
21+
#endif
22+
23+
threadId v8ThreadId;
1924

2025
/*static*/ Nan::Persistent<v8::FunctionTemplate> Java::s_ct;
2126
/*static*/ std::string Java::s_nativeBindingLocation;
@@ -28,24 +33,26 @@ void my_sleep(int dur) {
2833
#endif
2934
}
3035

36+
threadId my_getThreadId() {
3137
#ifdef WIN32
32-
long my_getThreadId_WIN32() {
3338
return (long)GetCurrentThreadId();
34-
}
3539
#else
36-
pthread_t my_getThreadId_NotWIN32() {
3740
return pthread_self();
41+
#endif
3842
}
43+
44+
bool v8ThreadIdEquals(threadId a, threadId b) {
45+
#ifdef WIN32
46+
return a == b;
47+
#else
48+
return pthread_equal(a, b);
3949
#endif
50+
}
4051

4152
/*static*/ void Java::Init(v8::Handle<v8::Object> target) {
4253
Nan::HandleScope scope;
4354

44-
#ifdef WIN32
45-
v8ThreadIdWIN32 = my_getThreadId_WIN32();
46-
#else
47-
v8ThreadIdNotWIN32 = my_getThreadId_NotWIN32();
48-
#endif
55+
v8ThreadId = my_getThreadId();
4956

5057
v8::Local<v8::FunctionTemplate> t = Nan::New<v8::FunctionTemplate>(New);
5158
s_ct.Reset(t);
@@ -1304,17 +1311,7 @@ void throwNewThrowable(JNIEnv* env, const char * excClassName, std::string msg)
13041311
}
13051312

13061313
JNIEXPORT jobject JNICALL Java_node_NodeDynamicProxyClass_callJs(JNIEnv *env, jobject src, jlong ptr, jobject method, jobjectArray args) {
1307-
long myThreadIdWIN32;
1308-
pthread_t myThreadIdNotWIN32;
1309-
bool isWIN32;
1310-
1311-
#ifdef WIN32
1312-
myThreadIdWIN32 = my_getThreadId_WIN32();
1313-
isWIN32 = true;
1314-
#else
1315-
myThreadIdNotWIN32 = my_getThreadId_NotWIN32();
1316-
isWIN32 = false;
1317-
#endif
1314+
threadId myThreadId = my_getThreadId();
13181315

13191316
bool hasArgsGlobalRef = false;
13201317

@@ -1333,7 +1330,7 @@ JNIEXPORT jobject JNICALL Java_node_NodeDynamicProxyClass_callJs(JNIEnv *env, jo
13331330

13341331
uv_work_t* req = new uv_work_t();
13351332
req->data = dynamicProxyData;
1336-
if((isWIN32 && (myThreadIdWIN32 == v8ThreadIdWIN32)) || (!isWIN32 && pthread_equal(myThreadIdNotWIN32, v8ThreadIdNotWIN32))) {
1333+
if(v8ThreadIdEquals(myThreadId, v8ThreadId)) {
13371334
#if NODE_MINOR_VERSION >= 10
13381335
EIO_AfterCallJs(req, 0);
13391336
#else

0 commit comments

Comments
 (0)