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
13061313JNIEXPORT 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