Skip to content

Commit 978903c

Browse files
authored
Merge pull request joeferner#404 from brandonbryan12/master
z/OS xlc++ support changes
2 parents aff521f + c8e65ba commit 978903c

1 file changed

Lines changed: 20 additions & 5 deletions

File tree

src/java.cpp

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,13 @@
1414

1515
#define DYNAMIC_PROXY_JS_ERROR -4
1616

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

1925
/*static*/ Nan::Persistent<v8::FunctionTemplate> Java::s_ct;
2026
/*static*/ std::string Java::s_nativeBindingLocation;
@@ -27,11 +33,19 @@ void my_sleep(int dur) {
2733
#endif
2834
}
2935

30-
long my_getThreadId() {
36+
threadId my_getThreadId() {
3137
#ifdef WIN32
3238
return (long)GetCurrentThreadId();
3339
#else
34-
return (long)pthread_self();
40+
return pthread_self();
41+
#endif
42+
}
43+
44+
bool v8ThreadIdEquals(threadId a, threadId b) {
45+
#ifdef WIN32
46+
return a == b;
47+
#else
48+
return pthread_equal(a, b);
3549
#endif
3650
}
3751

@@ -1297,7 +1311,8 @@ void throwNewThrowable(JNIEnv* env, const char * excClassName, std::string msg)
12971311
}
12981312

12991313
JNIEXPORT jobject JNICALL Java_node_NodeDynamicProxyClass_callJs(JNIEnv *env, jobject src, jlong ptr, jobject method, jobjectArray args) {
1300-
long myThreadId = my_getThreadId();
1314+
threadId myThreadId = my_getThreadId();
1315+
13011316
bool hasArgsGlobalRef = false;
13021317

13031318
// args needs to be global, you can't send env across thread boundaries
@@ -1315,7 +1330,7 @@ JNIEXPORT jobject JNICALL Java_node_NodeDynamicProxyClass_callJs(JNIEnv *env, jo
13151330

13161331
uv_work_t* req = new uv_work_t();
13171332
req->data = dynamicProxyData;
1318-
if(myThreadId == v8ThreadId) {
1333+
if(v8ThreadIdEquals(myThreadId, v8ThreadId)) {
13191334
#if NODE_MINOR_VERSION >= 10
13201335
EIO_AfterCallJs(req, 0);
13211336
#else

0 commit comments

Comments
 (0)