@@ -48,26 +48,29 @@ using namespace std;
48
48
Nan::ThrowTypeError (" Argument " #I " must be an int64" ); \
49
49
return ; \
50
50
} \
51
- int64_t VAR = info[I]->ToInteger ()->Value();
51
+ int64_t VAR = info[I]->ToInteger (info.GetIsolate()->GetCurrentContext()).ToLocalChecked( )->Value();
52
52
53
53
#define REQ_UINT64_ARG (I, VAR ) \
54
54
if (info.Length() <= (I) || !info[I]->IsNumber ()) { \
55
55
Nan::ThrowTypeError (" Argument " #I " must be a uint64" ); \
56
56
return ; \
57
57
} \
58
- uint64_t VAR = info[I]->ToInteger ()->Value();
58
+ uint64_t VAR = info[I]->ToInteger (info.GetIsolate()->GetCurrentContext()).ToLocalChecked( )->Value();
59
59
60
60
#define REQ_BOOL_ARG (I, VAR ) \
61
61
if (info.Length() <= (I) || !info[I]->IsBoolean ()) { \
62
62
Nan::ThrowTypeError (" Argument " #I " must be a boolean" ); \
63
63
return ; \
64
64
} \
65
- bool VAR = info[I]->ToBoolean ()->Value();
65
+ bool VAR = info[I]->ToBoolean (info.GetIsolate()->GetCurrentContext()).ToLocalChecked( )->Value();
66
66
67
67
#define WRAP_RESULT (RES, VAR ) \
68
68
Local<Value> arg[1 ] = { Nan::New<External>(static_cast <BigNum*>(RES)) }; \
69
- Local<Object> VAR = Nan::NewInstance(Nan::New<FunctionTemplate>(constructor_template)->GetFunction (), \
70
- 1, arg).ToLocalChecked();
69
+ Local<Object> VAR = Nan::NewInstance( \
70
+ Nan::New<FunctionTemplate>(constructor_template)->GetFunction (info.GetIsolate()->GetCurrentContext()).ToLocalChecked(), \
71
+ 1, \
72
+ arg \
73
+ ).ToLocalChecked();
71
74
72
75
class AutoBN_CTX
73
76
{
@@ -288,7 +291,8 @@ void BigNum::Initialize(v8::Local<v8::Object> target) {
288
291
Nan::SetPrototypeMethod (tmpl, " setCompact" , Bsetcompact);
289
292
Nan::SetPrototypeMethod (tmpl, " isbitset" , IsBitSet);
290
293
291
- target->Set (Nan::New (" BigNum" ).ToLocalChecked (), tmpl->GetFunction ());
294
+ v8::Isolate *isolate = v8::Isolate::GetCurrent ();
295
+ target->Set (Nan::New (" BigNum" ).ToLocalChecked (), tmpl->GetFunction (isolate->GetCurrentContext ()).ToLocalChecked ());
292
296
}
293
297
294
298
BigNum::BigNum (const Nan::Utf8String& str, uint64_t base) : Nan::ObjectWrap (),
@@ -382,7 +386,7 @@ NAN_METHOD(BigNum::New)
382
386
383
387
Nan::TryCatch tryCatch;
384
388
Nan::MaybeLocal<Object> newInstMaybeLocal = Nan::NewInstance (
385
- Nan::New<FunctionTemplate>(constructor_template)->GetFunction (), len, newArgs);
389
+ Nan::New<FunctionTemplate>(constructor_template)->GetFunction (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ), len, newArgs);
386
390
if (tryCatch.HasCaught ()) {
387
391
tryCatch.ReThrow ();
388
392
return ;
@@ -397,6 +401,8 @@ NAN_METHOD(BigNum::New)
397
401
BigNum *bignum;
398
402
uint64_t base;
399
403
404
+ Local<Context> currentContext = info.GetIsolate ()->GetCurrentContext ();
405
+
400
406
if (info[0 ]->IsExternal ()) {
401
407
bignum = static_cast <BigNum*>(External::Cast (*(info[0 ]))->Value ());
402
408
} else {
@@ -406,17 +412,18 @@ NAN_METHOD(BigNum::New)
406
412
for (int i = 0 ; i < len; i++) {
407
413
newArgs[i] = info[i];
408
414
}
409
- Local<Value> obj = Nan::New<Function>(js_conditioner)->
410
- Call (ctx, info.Length (), newArgs);
415
+ Local<Value> obj;
416
+ const int ok = Nan::New<Function>(js_conditioner)->
417
+ Call (currentContext, ctx, info.Length (), newArgs).ToLocal (&obj);
411
418
delete[] newArgs;
412
419
413
- if (!*obj ) {
420
+ if (!ok ) {
414
421
Nan::ThrowError (" Invalid type passed to bignum constructor" );
415
422
return ;
416
423
}
417
424
418
- Nan::Utf8String str (obj->ToObject () ->Get (Nan::New (" num" ).ToLocalChecked ())->ToString ());
419
- base = Nan::To<int64_t >(obj->ToObject ()->Get (Nan::New (" base" ).ToLocalChecked ())).FromJust ();
425
+ Nan::Utf8String str (obj->ToObject (currentContext). ToLocalChecked () ->Get (Nan::New (" num" ).ToLocalChecked ())->ToString (currentContext). ToLocalChecked ());
426
+ base = Nan::To<int64_t >(obj->ToObject (currentContext). ToLocalChecked ( )->Get (Nan::New (" base" ).ToLocalChecked ())).FromJust ();
420
427
421
428
bignum = new BigNum (str, base);
422
429
}
@@ -459,7 +466,7 @@ NAN_METHOD(BigNum::Badd)
459
466
{
460
467
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
461
468
462
- BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
469
+ BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ));
463
470
BigNum *res = new BigNum ();
464
471
465
472
BN_add (res->bignum_ , bignum->bignum_ , bn->bignum_ );
@@ -473,7 +480,7 @@ NAN_METHOD(BigNum::Bsub)
473
480
{
474
481
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
475
482
476
- BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
483
+ BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ));
477
484
BigNum *res = new BigNum ();
478
485
BN_sub (res->bignum_ , bignum->bignum_ , bn->bignum_ );
479
486
@@ -487,7 +494,7 @@ NAN_METHOD(BigNum::Bmul)
487
494
AutoBN_CTX ctx;
488
495
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
489
496
490
- BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
497
+ BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ));
491
498
BigNum *res = new BigNum ();
492
499
BN_mul (res->bignum_ , bignum->bignum_ , bn->bignum_ , ctx);
493
500
@@ -501,7 +508,7 @@ NAN_METHOD(BigNum::Bdiv)
501
508
AutoBN_CTX ctx;
502
509
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
503
510
504
- BigNum *bi = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
511
+ BigNum *bi = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ));
505
512
BigNum *res = new BigNum ();
506
513
BN_div (res->bignum_ , NULL , bignum->bignum_ , bi->bignum_ , ctx);
507
514
@@ -639,7 +646,7 @@ NAN_METHOD(BigNum::Bmod)
639
646
AutoBN_CTX ctx;
640
647
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
641
648
642
- BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
649
+ BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ));
643
650
BigNum *res = new BigNum ();
644
651
BN_div (NULL , res->bignum_ , bignum->bignum_ , bn->bignum_ , ctx);
645
652
@@ -672,8 +679,8 @@ NAN_METHOD(BigNum::Bpowm)
672
679
AutoBN_CTX ctx;
673
680
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
674
681
675
- BigNum *bn1 = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
676
- BigNum *bn2 = Nan::ObjectWrap::Unwrap<BigNum>(info[1 ]->ToObject ());
682
+ BigNum *bn1 = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ));
683
+ BigNum *bn2 = Nan::ObjectWrap::Unwrap<BigNum>(info[1 ]->ToObject (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ));
677
684
BigNum *res = new BigNum ();
678
685
BN_mod_exp (res->bignum_ , bignum->bignum_ , bn1->bignum_ , bn2->bignum_ , ctx);
679
686
@@ -688,7 +695,7 @@ NAN_METHOD(BigNum::Upowm)
688
695
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
689
696
690
697
REQ_UINT64_ARG (0 , x);
691
- BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[1 ]->ToObject ());
698
+ BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[1 ]->ToObject (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ));
692
699
BigNum *exp = new BigNum (x);
693
700
694
701
BigNum *res = new BigNum ();
@@ -765,7 +772,7 @@ NAN_METHOD(BigNum::Bcompare)
765
772
{
766
773
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
767
774
768
- BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
775
+ BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ));
769
776
770
777
info.GetReturnValue ().Set (Nan::New<Number>(BN_cmp (bignum->bignum_ , bn->bignum_ )));
771
778
}
@@ -895,7 +902,7 @@ BigNum::Bop(Nan::NAN_METHOD_ARGS_TYPE info, int op)
895
902
Nan::EscapableHandleScope scope;
896
903
897
904
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
898
- BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
905
+ BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ));
899
906
900
907
bool bignumNegative = BN_is_negative (bignum->bignum_ );
901
908
bool bnNegative = BN_is_negative (bn->bignum_ );
@@ -1024,7 +1031,7 @@ NAN_METHOD(BigNum::Binvertm)
1024
1031
AutoBN_CTX ctx;
1025
1032
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
1026
1033
1027
- BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
1034
+ BigNum *bn = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ));
1028
1035
BigNum *res = new BigNum ();
1029
1036
BN_mod_inverse (res->bignum_ , bignum->bignum_ , bn->bignum_ , ctx);
1030
1037
@@ -1058,7 +1065,7 @@ NAN_METHOD(BigNum::Bgcd)
1058
1065
AutoBN_CTX ctx;
1059
1066
BigNum *bignum = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
1060
1067
1061
- BigNum *bi = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
1068
+ BigNum *bi = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ));
1062
1069
BigNum *res = new BigNum ();
1063
1070
1064
1071
BN_gcd (res->bignum_ , bignum->bignum_ , bi->bignum_ , ctx);
@@ -1072,7 +1079,7 @@ NAN_METHOD(BigNum::Bjacobi)
1072
1079
AutoBN_CTX ctx;
1073
1080
BigNum *bn_a = Nan::ObjectWrap::Unwrap<BigNum>(info.This ());
1074
1081
1075
- BigNum *bn_n = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject ());
1082
+ BigNum *bn_n = Nan::ObjectWrap::Unwrap<BigNum>(info[0 ]->ToObject (info. GetIsolate ()-> GetCurrentContext ()). ToLocalChecked ( ));
1076
1083
int res = 0 ;
1077
1084
1078
1085
if (BN_jacobi_priv (bn_a->bignum_ , bn_n->bignum_ , &res, ctx) == -1 ) {
0 commit comments