Skip to content

Commit 5fcdc26

Browse files
committed
Polish
1 parent ba2bc34 commit 5fcdc26

3 files changed

Lines changed: 94 additions & 51 deletions

File tree

nan.h

Lines changed: 84 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -806,17 +806,23 @@ class TryCatch {
806806
, int argc
807807
, v8::Local<v8::Value>* argv) {
808808
#if NODE_MODULE_VERSION < IOJS_3_0_MODULE_VERSION
809-
v8::Local<v8::Object> target_ = target->IsUndefined() || target->IsNull() ?
810-
v8::Isolate::GetCurrent()->GetCurrentContext()->Global() :
811-
target->ToObject();
809+
v8::Local<v8::Object> target_obj;
810+
if (target->IsUndefined() || target->IsNull()) {
811+
target_obj = v8::Isolate::GetCurrent()->GetCurrentContext()->Global();
812+
} else {
813+
target_obj = target->ToObject();
814+
}
812815
return New(node::MakeCallback(
813-
v8::Isolate::GetCurrent(), target_, func, argc, argv));
816+
v8::Isolate::GetCurrent(), target_obj, func, argc, argv));
814817
#else
815-
v8::Local<v8::Object> target_ = target->IsUndefined() || target->IsNull() ?
816-
v8::Isolate::GetCurrent()->GetCurrentContext()->Global() :
817-
Nan::To<v8::Object>(target).ToLocalChecked();
818+
v8::Local<v8::Object> target_obj;
819+
if (target->IsUndefined() || target->IsNull()) {
820+
target_obj = v8::Isolate::GetCurrent()->GetCurrentContext()->Global();
821+
} else {
822+
target_obj = Nan::To<v8::Object>(target).ToLocalChecked();
823+
}
818824
return node::MakeCallback(
819-
v8::Isolate::GetCurrent(), target_, func, argc, argv);
825+
v8::Isolate::GetCurrent(), target_obj, func, argc, argv);
820826
#endif
821827
}
822828

@@ -826,17 +832,23 @@ class TryCatch {
826832
, int argc
827833
, v8::Local<v8::Value>* argv) {
828834
#if NODE_MODULE_VERSION < IOJS_3_0_MODULE_VERSION
829-
v8::Local<v8::Object> target_ = target->IsUndefined() || target->IsNull() ?
830-
v8::Isolate::GetCurrent()->GetCurrentContext()->Global() :
831-
target->ToObject();
835+
v8::Local<v8::Object> target_obj;
836+
if (target->IsUndefined() || target->IsNull()) {
837+
target_obj = v8::Isolate::GetCurrent()->GetCurrentContext()->Global();
838+
} else {
839+
target_obj = target->ToObject();
840+
}
832841
return New(node::MakeCallback(
833-
v8::Isolate::GetCurrent(), target_, symbol, argc, argv));
842+
v8::Isolate::GetCurrent(), target_obj, symbol, argc, argv));
834843
#else
835-
v8::Local<v8::Object> target_ = target->IsUndefined() || target->IsNull() ?
836-
v8::Isolate::GetCurrent()->GetCurrentContext()->Global() :
837-
Nan::To<v8::Object>(target).ToLocalChecked();
844+
v8::Local<v8::Object> target_obj;
845+
if (target->IsUndefined() || target->IsNull()) {
846+
target_obj = v8::Isolate::GetCurrent()->GetCurrentContext()->Global();
847+
} else {
848+
target_obj = Nan::To<v8::Object>(target).ToLocalChecked();
849+
}
838850
return node::MakeCallback(
839-
v8::Isolate::GetCurrent(), target_, symbol, argc, argv);
851+
v8::Isolate::GetCurrent(), target_obj, symbol, argc, argv);
840852
#endif
841853
}
842854

@@ -846,17 +858,23 @@ class TryCatch {
846858
, int argc
847859
, v8::Local<v8::Value>* argv) {
848860
#if NODE_MODULE_VERSION < IOJS_3_0_MODULE_VERSION
849-
v8::Local<v8::Object> target_ = target->IsUndefined() || target->IsNull() ?
850-
v8::Isolate::GetCurrent()->GetCurrentContext()->Global() :
851-
target->ToObject();
861+
v8::Local<v8::Object> target_obj;
862+
if (target->IsUndefined() || target->IsNull()) {
863+
target_obj = v8::Isolate::GetCurrent()->GetCurrentContext()->Global();
864+
} else {
865+
target_obj = target->ToObject();
866+
}
852867
return New(node::MakeCallback(
853-
v8::Isolate::GetCurrent(), target_, method, argc, argv));
868+
v8::Isolate::GetCurrent(), target_obj, method, argc, argv));
854869
#else
855-
v8::Local<v8::Object> target_ = target->IsUndefined() || target->IsNull() ?
856-
v8::Isolate::GetCurrent()->GetCurrentContext()->Global() :
857-
Nan::To<v8::Object>(target).ToLocalChecked();
870+
v8::Local<v8::Object> target_obj;
871+
if (target->IsUndefined() || target->IsNull()) {
872+
target_obj = v8::Isolate::GetCurrent()->GetCurrentContext()->Global();
873+
} else {
874+
target_obj = Nan::To<v8::Object>(target).ToLocalChecked();
875+
}
858876
return node::MakeCallback(
859-
v8::Isolate::GetCurrent(), target_, method, argc, argv);
877+
v8::Isolate::GetCurrent(), target_obj, method, argc, argv);
860878
#endif
861879
}
862880

@@ -1160,32 +1178,41 @@ widenString(std::vector<uint16_t> *ws, const uint8_t *s, int l) {
11601178
, v8::Local<v8::Function> func
11611179
, int argc
11621180
, v8::Local<v8::Value>* argv) {
1163-
v8::Local<v8::Object> target_ =
1164-
target->IsUndefined() || target->IsNull() ?
1165-
v8::Context::GetCurrent()->Global() : target->ToObject();
1166-
return New(node::MakeCallback(target_, func, argc, argv));
1181+
v8::Local<v8::Object> target_obj;
1182+
if (target->IsUndefined() || target->IsNull()) {
1183+
target_obj = v8::Context::GetCurrent()->Global();
1184+
} else {
1185+
target_obj = target->ToObject();
1186+
}
1187+
return New(node::MakeCallback(target_obj, func, argc, argv));
11671188
}
11681189

11691190
NAN_INLINE v8::Local<v8::Value> MakeCallback(
11701191
v8::Local<v8::Value> target
11711192
, v8::Local<v8::String> symbol
11721193
, int argc
11731194
, v8::Local<v8::Value>* argv) {
1174-
v8::Local<v8::Object> target_ =
1175-
target->IsUndefined() || target->IsNull() ?
1176-
v8::Context::GetCurrent()->Global() : target->ToObject();
1177-
return New(node::MakeCallback(target_, symbol, argc, argv));
1195+
v8::Local<v8::Object> target_obj;
1196+
if (target->IsUndefined() || target->IsNull()) {
1197+
target_obj = v8::Context::GetCurrent()->Global();
1198+
} else {
1199+
target_obj = target->ToObject();
1200+
}
1201+
return New(node::MakeCallback(target_obj, symbol, argc, argv));
11781202
}
11791203

11801204
NAN_INLINE v8::Local<v8::Value> MakeCallback(
11811205
v8::Local<v8::Value> target
11821206
, const char* method
11831207
, int argc
11841208
, v8::Local<v8::Value>* argv) {
1185-
v8::Local<v8::Object> target_ =
1186-
target->IsUndefined() || target->IsNull() ?
1187-
v8::Context::GetCurrent()->Global() : target->ToObject();
1188-
return New(node::MakeCallback(target_, method, argc, argv));
1209+
v8::Local<v8::Object> target_obj;
1210+
if (target->IsUndefined() || target->IsNull()) {
1211+
target_obj = v8::Context::GetCurrent()->Global();
1212+
} else {
1213+
target_obj = target->ToObject();
1214+
}
1215+
return New(node::MakeCallback(target_obj, method, argc, argv));
11891216
}
11901217

11911218
NAN_INLINE void FatalException(const TryCatch& try_catch) {
@@ -1469,23 +1496,29 @@ class Callback {
14691496
v8::Local<v8::Function> callback = New(handle)->
14701497
Get(kCallbackIndex).As<v8::Function>();
14711498
# if NODE_MODULE_VERSION < IOJS_3_0_MODULE_VERSION
1472-
v8::Local<v8::Object> target_ = target->IsUndefined() || target->IsNull() ?
1473-
v8::Isolate::GetCurrent()->GetCurrentContext()->Global() :
1474-
target->ToObject();
1499+
v8::Local<v8::Object> target_obj;
1500+
if (target->IsUndefined() || target->IsNull()) {
1501+
target_obj = v8::Isolate::GetCurrent()->GetCurrentContext()->Global();
1502+
} else {
1503+
target_obj = target->ToObject();
1504+
}
14751505
return scope.Escape(New(node::MakeCallback(
14761506
isolate
1477-
, target_
1507+
, target_obj
14781508
, callback
14791509
, argc
14801510
, argv
14811511
)));
14821512
# else
1483-
v8::Local<v8::Object> target_ = target->IsUndefined() || target->IsNull() ?
1484-
v8::Isolate::GetCurrent()->GetCurrentContext()->Global() :
1485-
Nan::To<v8::Object>(target).ToLocalChecked();
1513+
v8::Local<v8::Object> target_obj;
1514+
if (target->IsUndefined() || target->IsNull()) {
1515+
target_obj = v8::Isolate::GetCurrent()->GetCurrentContext()->Global();
1516+
} else {
1517+
target_obj = Nan::To<v8::Object>(target).ToLocalChecked();
1518+
}
14861519
return scope.Escape(node::MakeCallback(
14871520
isolate
1488-
, target_
1521+
, target_obj
14891522
, callback
14901523
, argc
14911524
, argv
@@ -1498,12 +1531,16 @@ class Callback {
14981531
, v8::Local<v8::Value> argv[]) const {
14991532
EscapableHandleScope scope;
15001533

1501-
v8::Local<v8::Object> target_ = target->IsUndefined() || target->IsNull() ?
1502-
v8::Context::GetCurrent()->Global() : target->ToObject();
1534+
v8::Local<v8::Object> target_obj;
1535+
if (target->IsUndefined() || target->IsNull()) {
1536+
target_obj = v8::Context::GetCurrent()->Global();
1537+
} else {
1538+
target_obj = target->ToObject();
1539+
}
15031540
v8::Local<v8::Function> callback = New(handle)->
15041541
Get(kCallbackIndex).As<v8::Function>();
15051542
return scope.Escape(New(node::MakeCallback(
1506-
target_
1543+
target_obj
15071544
, callback
15081545
, argc
15091546
, argv

nan_maybe_pre_43_inl.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -262,9 +262,13 @@ NAN_INLINE MaybeLocal<v8::Value> CallAsFunction(
262262
#if NODE_MODULE_VERSION > NODE_0_10_MODULE_VERSION
263263
return MaybeLocal<v8::Value>(obj->CallAsFunction(recv, argc, argv));
264264
#else
265-
v8::Local<v8::Object> recv_ = recv->IsUndefined() || recv->IsNull() ?
266-
v8::Context::GetCurrent()->Global() : recv->ToObject();
267-
return MaybeLocal<v8::Value>(obj->CallAsFunction(recv_, argc, argv));
265+
v8::Local<v8::Object> recv_obj;
266+
if (recv->IsUndefined() || recv->IsNull()) {
267+
recv_obj = v8::Context::GetCurrent()->Global();
268+
} else {
269+
recv_obj = recv->ToObject();
270+
}
271+
return MaybeLocal<v8::Value>(obj->CallAsFunction(recv_obj, argc, argv));
268272
#endif
269273
}
270274

test/js/converters-test.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const test = require('tap').test
1111
, bindings = require('bindings')({ module_root: testRoot, bindings: 'converters' });
1212

1313
test('converters', function (t) {
14-
t.plan(28);
14+
t.plan(30);
1515

1616
var converters = bindings;
1717
t.type(converters.toBoolean, 'function');
@@ -33,6 +33,8 @@ test('converters', function (t) {
3333
t.equal(converters.toString('sol'), 'sol');
3434
t.equal(converters.toDetailString('sol'), 'sol');
3535
t.strictDeepEqual(converters.toObject({prop : 'x'}), {prop : 'x'});
36+
t.strictDeepEqual(converters.toObject(5), new Number(5));
37+
t.type(converters.toObject(5), 'object');
3638
t.equal(converters.toInteger(12), 12);
3739
t.equal(converters.toUint32(12), 12);
3840
t.equal(converters.toInt32(-12), -12);

0 commit comments

Comments
 (0)