Skip to content

Commit 7b5a0a1

Browse files
committed
Bandaid for async hooks
1 parent b442da0 commit 7b5a0a1

File tree

4 files changed

+44
-16
lines changed

4 files changed

+44
-16
lines changed

Diff for: nan.h

+26-16
Original file line numberDiff line numberDiff line change
@@ -1280,7 +1280,8 @@ class Utf8String {
12801280
AsyncResource(
12811281
v8::Local<v8::String> name
12821282
, v8::Local<v8::Object> resource = New<v8::Object>()) {
1283-
#if NODE_MODULE_VERSION >= NODE_8_0_MODULE_VERSION
1283+
#if NODE_MODULE_VERSION > NODE_8_0_MODULE_VERSION || \
1284+
NODE_MODULE_VERSION == NODE_8_0_MODULE_VERSION && NODE_MINOR_VERSION >= 6
12841285
v8::Isolate* isolate = v8::Isolate::GetCurrent();
12851286

12861287
if (resource.IsEmpty()) {
@@ -1294,7 +1295,8 @@ class Utf8String {
12941295
AsyncResource(
12951296
const char* name
12961297
, v8::Local<v8::Object> resource = New<v8::Object>()) {
1297-
#if NODE_MODULE_VERSION >= NODE_8_0_MODULE_VERSION
1298+
#if NODE_MODULE_VERSION > NODE_8_0_MODULE_VERSION || \
1299+
NODE_MODULE_VERSION == NODE_8_0_MODULE_VERSION && NODE_MINOR_VERSION >= 6
12981300
v8::Isolate* isolate = v8::Isolate::GetCurrent();
12991301

13001302
if (resource.IsEmpty()) {
@@ -1308,7 +1310,8 @@ class Utf8String {
13081310
}
13091311

13101312
~AsyncResource() {
1311-
#if NODE_MODULE_VERSION >= NODE_8_0_MODULE_VERSION
1313+
#if NODE_MODULE_VERSION > NODE_8_0_MODULE_VERSION || \
1314+
NODE_MODULE_VERSION == NODE_8_0_MODULE_VERSION && NODE_MINOR_VERSION >= 6
13121315
v8::Isolate* isolate = v8::Isolate::GetCurrent();
13131316
node::EmitAsyncDestroy(isolate, context);
13141317
#endif
@@ -1319,11 +1322,12 @@ class Utf8String {
13191322
, v8::Local<v8::Function> func
13201323
, int argc
13211324
, v8::Local<v8::Value>* argv) {
1322-
#if NODE_MODULE_VERSION < NODE_8_0_MODULE_VERSION
1323-
return MakeCallback(target, func, argc, argv);
1324-
#else
1325+
#if NODE_MODULE_VERSION > NODE_8_0_MODULE_VERSION || \
1326+
NODE_MODULE_VERSION == NODE_8_0_MODULE_VERSION && NODE_MINOR_VERSION >= 6
13251327
return node::MakeCallback(
13261328
v8::Isolate::GetCurrent(), target, func, argc, argv, context);
1329+
#else
1330+
return MakeCallback(target, func, argc, argv);
13271331
#endif
13281332
}
13291333

@@ -1332,11 +1336,12 @@ class Utf8String {
13321336
, v8::Local<v8::String> symbol
13331337
, int argc
13341338
, v8::Local<v8::Value>* argv) {
1335-
#if NODE_MODULE_VERSION < NODE_8_0_MODULE_VERSION
1336-
return MakeCallback(target, symbol, argc, argv);
1337-
#else
1339+
#if NODE_MODULE_VERSION > NODE_8_0_MODULE_VERSION || \
1340+
NODE_MODULE_VERSION == NODE_8_0_MODULE_VERSION && NODE_MINOR_VERSION >= 6
13381341
return node::MakeCallback(
13391342
v8::Isolate::GetCurrent(), target, symbol, argc, argv, context);
1343+
#else
1344+
return MakeCallback(target, symbol, argc, argv);
13401345
#endif
13411346
}
13421347

@@ -1345,17 +1350,19 @@ class Utf8String {
13451350
, const char* method
13461351
, int argc
13471352
, v8::Local<v8::Value>* argv) {
1348-
#if NODE_MODULE_VERSION < NODE_8_0_MODULE_VERSION
1349-
return MakeCallback(target, method, argc, argv);
1350-
#else
1353+
#if NODE_MODULE_VERSION > NODE_8_0_MODULE_VERSION || \
1354+
NODE_MODULE_VERSION == NODE_8_0_MODULE_VERSION && NODE_MINOR_VERSION >= 6
13511355
return node::MakeCallback(
13521356
v8::Isolate::GetCurrent(), target, method, argc, argv, context);
1357+
#else
1358+
return MakeCallback(target, method, argc, argv);
13531359
#endif
13541360
}
13551361

13561362
private:
13571363
NAN_DISALLOW_ASSIGN_COPY_MOVE(AsyncResource)
1358-
#if NODE_MODULE_VERSION >= NODE_8_0_MODULE_VERSION
1364+
#if NODE_MODULE_VERSION > NODE_8_0_MODULE_VERSION || \
1365+
NODE_MODULE_VERSION == NODE_8_0_MODULE_VERSION && NODE_MINOR_VERSION >= 6
13591366
node::async_context context;
13601367
#endif
13611368
};
@@ -1582,7 +1589,8 @@ class Callback {
15821589
, int argc
15831590
, v8::Local<v8::Value> argv[]
15841591
, AsyncResource* resource) const {
1585-
#if NODE_MODULE_VERSION >= NODE_8_0_MODULE_VERSION
1592+
#if NODE_MODULE_VERSION > NODE_8_0_MODULE_VERSION || \
1593+
NODE_MODULE_VERSION == NODE_8_0_MODULE_VERSION && NODE_MINOR_VERSION >= 6
15861594
v8::Isolate* isolate = v8::Isolate::GetCurrent();
15871595
return Call_(isolate, target, argc, argv, resource);
15881596
#elif NODE_MODULE_VERSION > NODE_0_10_MODULE_VERSION
@@ -1595,7 +1603,8 @@ class Callback {
15951603

15961604
inline MaybeLocal<v8::Value>
15971605
Call(int argc, v8::Local<v8::Value> argv[], AsyncResource* resource) const {
1598-
#if NODE_MODULE_VERSION >= NODE_8_0_MODULE_VERSION
1606+
#if NODE_MODULE_VERSION > NODE_8_0_MODULE_VERSION || \
1607+
NODE_MODULE_VERSION == NODE_8_0_MODULE_VERSION && NODE_MINOR_VERSION >= 6
15991608
v8::Isolate* isolate = v8::Isolate::GetCurrent();
16001609
return Call(isolate->GetCurrentContext()->Global(), argc, argv, resource);
16011610
#elif NODE_MODULE_VERSION > NODE_0_10_MODULE_VERSION
@@ -1613,7 +1622,8 @@ class Callback {
16131622
NAN_DISALLOW_ASSIGN_COPY_MOVE(Callback)
16141623
Persistent<v8::Function> handle_;
16151624

1616-
#if NODE_MODULE_VERSION >= NODE_8_0_MODULE_VERSION
1625+
#if NODE_MODULE_VERSION > NODE_8_0_MODULE_VERSION || \
1626+
NODE_MODULE_VERSION == NODE_8_0_MODULE_VERSION && NODE_MINOR_VERSION >= 6
16171627
MaybeLocal<v8::Value> Call_(v8::Isolate *isolate
16181628
, v8::Local<v8::Object> target
16191629
, int argc

Diff for: test/js/asyncresource-test.js

+5
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
* MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md>
77
********************************************************************/
88

9+
const version = process.versions.node.split('.');
10+
if (version[0] == 8 && version[1] < 6) {
11+
process.exit(0);
12+
}
13+
914
try {
1015
require('async_hooks');
1116
} catch (e) {

Diff for: test/js/asyncworker-test.js

+7
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md>
77
********************************************************************/
88

9+
const version = process.versions.node.split('.');
910
const test = require('tap').test
1011
, testRoot = require('path').resolve(__dirname, '..')
1112
, bindings = require('bindings')({ module_root: testRoot, bindings: 'asyncworker' });
@@ -30,6 +31,12 @@ test('asyncworker', function (t) {
3031

3132
test('asyncworker context', function (t) {
3233
var asyncHooks;
34+
if (version[0] == 8 && version[1] < 6) {
35+
t.ok(true);
36+
t.end();
37+
return;
38+
}
39+
3340
try {
3441
asyncHooks = require('async_hooks');
3542
} catch (e) {

Diff for: test/js/callbackcontext-test.js

+6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@
88

99
const bindingName = 'callbackcontext';
1010

11+
const version = process.versions.node.split('.');
12+
if (version[0] == 8 && version[1] < 6) {
13+
console.log('1..0 # Skipped: ' + bindingName);
14+
process.exit(0);
15+
}
16+
1117
try {
1218
require('async_hooks');
1319
} catch (e) {

0 commit comments

Comments
 (0)