@@ -663,39 +663,47 @@ void SyncProcessRunner::SetPipeError(int pipe_error) {
663
663
664
664
Local<Object> SyncProcessRunner::BuildResultObject () {
665
665
EscapableHandleScope scope (env ()->isolate ());
666
+ Local<Context> context = env ()->context ();
666
667
667
668
Local<Object> js_result = Object::New (env ()->isolate ());
668
669
669
670
if (GetError () != 0 ) {
670
- js_result->Set (env ()->error_string (),
671
- Integer::New (env ()->isolate (), GetError ()));
671
+ js_result->Set (context, env ()->error_string (),
672
+ Integer::New (env ()->isolate (), GetError ())). FromJust () ;
672
673
}
673
674
674
675
if (exit_status_ >= 0 ) {
675
676
if (term_signal_ > 0 ) {
676
- js_result->Set (env ()->status_string (), Null (env ()->isolate ()));
677
+ js_result->Set (context, env ()->status_string (),
678
+ Null (env ()->isolate ())).FromJust ();
677
679
} else {
678
- js_result->Set (env ()->status_string (),
679
- Number::New (env ()->isolate (), static_cast <double >(exit_status_)));
680
+ js_result->Set (context, env ()->status_string (),
681
+ Number::New (env ()->isolate (),
682
+ static_cast <double >(exit_status_))).FromJust ();
680
683
}
681
684
} else {
682
685
// If exit_status_ < 0 the process was never started because of some error.
683
- js_result->Set (env ()->status_string (), Null (env ()->isolate ()));
686
+ js_result->Set (context, env ()->status_string (),
687
+ Null (env ()->isolate ())).FromJust ();
684
688
}
685
689
686
690
if (term_signal_ > 0 )
687
- js_result->Set (env ()->signal_string (),
688
- String::NewFromUtf8 (env ()->isolate (), signo_string (term_signal_)));
691
+ js_result->Set (context, env ()->signal_string (),
692
+ String::NewFromUtf8 (env ()->isolate (),
693
+ signo_string (term_signal_))).FromJust ();
689
694
else
690
- js_result->Set (env ()->signal_string (), Null (env ()->isolate ()));
695
+ js_result->Set (context, env ()->signal_string (),
696
+ Null (env ()->isolate ())).FromJust ();
691
697
692
698
if (exit_status_ >= 0 )
693
- js_result->Set (env ()->output_string (), BuildOutputArray ());
699
+ js_result->Set (context, env ()->output_string (),
700
+ BuildOutputArray ()).FromJust ();
694
701
else
695
- js_result->Set (env ()->output_string (), Null (env ()->isolate ()));
702
+ js_result->Set (context, env ()->output_string (),
703
+ Null (env ()->isolate ())).FromJust ();
696
704
697
- js_result->Set (env ()->pid_string (),
698
- Number::New (env ()->isolate (), uv_process_.pid ));
705
+ js_result->Set (context, env ()->pid_string (),
706
+ Number::New (env ()->isolate (), uv_process_.pid )). FromJust () ;
699
707
700
708
return scope.Escape (js_result);
701
709
}
@@ -706,14 +714,15 @@ Local<Array> SyncProcessRunner::BuildOutputArray() {
706
714
CHECK_NE (stdio_pipes_, nullptr );
707
715
708
716
EscapableHandleScope scope (env ()->isolate ());
717
+ Local<Context> context = env ()->context ();
709
718
Local<Array> js_output = Array::New (env ()->isolate (), stdio_count_);
710
719
711
720
for (uint32_t i = 0 ; i < stdio_count_; i++) {
712
721
SyncProcessStdioPipe* h = stdio_pipes_[i];
713
722
if (h != nullptr && h->writable ())
714
- js_output->Set (i, h->GetOutputAsBuffer (env ()));
723
+ js_output->Set (context, i, h->GetOutputAsBuffer (env ())). FromJust ( );
715
724
else
716
- js_output->Set (i, Null (env ()->isolate ()));
725
+ js_output->Set (context, i, Null (env ()->isolate ())). FromJust ( );
717
726
}
718
727
719
728
return scope.Escape (js_output);
@@ -727,86 +736,100 @@ int SyncProcessRunner::ParseOptions(Local<Value> js_value) {
727
736
if (!js_value->IsObject ())
728
737
return UV_EINVAL;
729
738
739
+ Local<Context> context = env ()->context ();
730
740
Local<Object> js_options = js_value.As <Object>();
731
741
732
- Local<Value> js_file = js_options->Get (env ()->file_string ());
742
+ Local<Value> js_file =
743
+ js_options->Get (context, env ()->file_string ()).ToLocalChecked ();
733
744
r = CopyJsString (js_file, &file_buffer_);
734
745
if (r < 0 )
735
746
return r;
736
747
uv_process_options_.file = file_buffer_;
737
748
738
- Local<Value> js_args = js_options->Get (env ()->args_string ());
749
+ Local<Value> js_args =
750
+ js_options->Get (context, env ()->args_string ()).ToLocalChecked ();
739
751
r = CopyJsStringArray (js_args, &args_buffer_);
740
752
if (r < 0 )
741
753
return r;
742
754
uv_process_options_.args = reinterpret_cast <char **>(args_buffer_);
743
755
744
-
745
- Local<Value> js_cwd = js_options->Get (env ()->cwd_string ());
756
+ Local<Value> js_cwd =
757
+ js_options->Get (context, env ()->cwd_string ()). ToLocalChecked ( );
746
758
if (IsSet (js_cwd)) {
747
759
r = CopyJsString (js_cwd, &cwd_buffer_);
748
760
if (r < 0 )
749
761
return r;
750
762
uv_process_options_.cwd = cwd_buffer_;
751
763
}
752
764
753
- Local<Value> js_env_pairs = js_options->Get (env ()->env_pairs_string ());
765
+ Local<Value> js_env_pairs =
766
+ js_options->Get (context, env ()->env_pairs_string ()).ToLocalChecked ();
754
767
if (IsSet (js_env_pairs)) {
755
768
r = CopyJsStringArray (js_env_pairs, &env_buffer_);
756
769
if (r < 0 )
757
770
return r;
758
771
759
772
uv_process_options_.env = reinterpret_cast <char **>(env_buffer_);
760
773
}
761
- Local<Value> js_uid = js_options->Get (env ()->uid_string ());
774
+ Local<Value> js_uid =
775
+ js_options->Get (context, env ()->uid_string ()).ToLocalChecked ();
762
776
if (IsSet (js_uid)) {
763
777
CHECK (js_uid->IsInt32 ());
764
- const int32_t uid = js_uid->Int32Value (env ()-> context () ).FromJust ();
778
+ const int32_t uid = js_uid->Int32Value (context).FromJust ();
765
779
uv_process_options_.uid = static_cast <uv_uid_t >(uid);
766
780
uv_process_options_.flags |= UV_PROCESS_SETUID;
767
781
}
768
782
769
- Local<Value> js_gid = js_options->Get (env ()->gid_string ());
783
+ Local<Value> js_gid =
784
+ js_options->Get (context, env ()->gid_string ()).ToLocalChecked ();
770
785
if (IsSet (js_gid)) {
771
786
CHECK (js_gid->IsInt32 ());
772
- const int32_t gid = js_gid->Int32Value (env ()-> context () ).FromJust ();
787
+ const int32_t gid = js_gid->Int32Value (context).FromJust ();
773
788
uv_process_options_.gid = static_cast <uv_gid_t >(gid);
774
789
uv_process_options_.flags |= UV_PROCESS_SETGID;
775
790
}
776
791
777
- if (js_options->Get (env ()->detached_string ())->BooleanValue ())
792
+ Local<Value> js_detached =
793
+ js_options->Get (context, env ()->detached_string ()).ToLocalChecked ();
794
+ if (js_detached->BooleanValue (context).FromJust ())
778
795
uv_process_options_.flags |= UV_PROCESS_DETACHED;
779
796
780
- Local<String> win_hide = env ()-> windows_hide_string ();
781
-
782
- if (js_options-> Get (win_hide)-> BooleanValue ())
797
+ Local<Value> js_win_hide =
798
+ js_options-> Get (context, env ()-> windows_hide_string ()). ToLocalChecked ();
799
+ if (js_win_hide-> BooleanValue (context). FromJust ())
783
800
uv_process_options_.flags |= UV_PROCESS_WINDOWS_HIDE;
784
801
785
- Local<String> wba = env ()->windows_verbatim_arguments_string ();
802
+ Local<Value> js_wva =
803
+ js_options->Get (context, env ()->windows_verbatim_arguments_string ())
804
+ .ToLocalChecked ();
786
805
787
- if (js_options-> Get (wba)-> BooleanValue ())
806
+ if (js_wva-> BooleanValue (context). FromJust ())
788
807
uv_process_options_.flags |= UV_PROCESS_WINDOWS_VERBATIM_ARGUMENTS;
789
808
790
- Local<Value> js_timeout = js_options->Get (env ()->timeout_string ());
809
+ Local<Value> js_timeout =
810
+ js_options->Get (context, env ()->timeout_string ()).ToLocalChecked ();
791
811
if (IsSet (js_timeout)) {
792
812
CHECK (js_timeout->IsNumber ());
793
- int64_t timeout = js_timeout->IntegerValue ();
813
+ int64_t timeout = js_timeout->IntegerValue (context). FromJust ( );
794
814
timeout_ = static_cast <uint64_t >(timeout);
795
815
}
796
816
797
- Local<Value> js_max_buffer = js_options->Get (env ()->max_buffer_string ());
817
+ Local<Value> js_max_buffer =
818
+ js_options->Get (context, env ()->max_buffer_string ()).ToLocalChecked ();
798
819
if (IsSet (js_max_buffer)) {
799
820
CHECK (js_max_buffer->IsNumber ());
800
- max_buffer_ = js_max_buffer->NumberValue ();
821
+ max_buffer_ = js_max_buffer->NumberValue (context). FromJust ( );
801
822
}
802
823
803
- Local<Value> js_kill_signal = js_options->Get (env ()->kill_signal_string ());
824
+ Local<Value> js_kill_signal =
825
+ js_options->Get (context, env ()->kill_signal_string ()).ToLocalChecked ();
804
826
if (IsSet (js_kill_signal)) {
805
827
CHECK (js_kill_signal->IsInt32 ());
806
- kill_signal_ = js_kill_signal->Int32Value ();
828
+ kill_signal_ = js_kill_signal->Int32Value (context). FromJust ( );
807
829
}
808
830
809
- Local<Value> js_stdio = js_options->Get (env ()->stdio_string ());
831
+ Local<Value> js_stdio =
832
+ js_options->Get (context, env ()->stdio_string ()).ToLocalChecked ();
810
833
r = ParseStdioOptions (js_stdio);
811
834
if (r < 0 )
812
835
return r;
@@ -822,6 +845,7 @@ int SyncProcessRunner::ParseStdioOptions(Local<Value> js_value) {
822
845
if (!js_value->IsArray ())
823
846
return UV_EINVAL;
824
847
848
+ Local<Context> context = env ()->context ();
825
849
js_stdio_options = js_value.As <Array>();
826
850
827
851
stdio_count_ = js_stdio_options->Length ();
@@ -831,7 +855,8 @@ int SyncProcessRunner::ParseStdioOptions(Local<Value> js_value) {
831
855
stdio_pipes_initialized_ = true ;
832
856
833
857
for (uint32_t i = 0 ; i < stdio_count_; i++) {
834
- Local<Value> js_stdio_option = js_stdio_options->Get (i);
858
+ Local<Value> js_stdio_option =
859
+ js_stdio_options->Get (context, i).ToLocalChecked ();
835
860
836
861
if (!js_stdio_option->IsObject ())
837
862
return UV_EINVAL;
@@ -850,7 +875,9 @@ int SyncProcessRunner::ParseStdioOptions(Local<Value> js_value) {
850
875
851
876
int SyncProcessRunner::ParseStdioOption (int child_fd,
852
877
Local<Object> js_stdio_option) {
853
- Local<Value> js_type = js_stdio_option->Get (env ()->type_string ());
878
+ Local<Context> context = env ()->context ();
879
+ Local<Value> js_type =
880
+ js_stdio_option->Get (context, env ()->type_string ()).ToLocalChecked ();
854
881
855
882
if (js_type->StrictEquals (env ()->ignore_string ())) {
856
883
return AddStdioIgnore (child_fd);
@@ -859,13 +886,17 @@ int SyncProcessRunner::ParseStdioOption(int child_fd,
859
886
Local<String> rs = env ()->readable_string ();
860
887
Local<String> ws = env ()->writable_string ();
861
888
862
- bool readable = js_stdio_option->Get (rs)->BooleanValue ();
863
- bool writable = js_stdio_option->Get (ws)->BooleanValue ();
889
+ bool readable = js_stdio_option->Get (context, rs)
890
+ .ToLocalChecked ()->BooleanValue (context).FromJust ();
891
+ bool writable =
892
+ js_stdio_option->Get (context, ws)
893
+ .ToLocalChecked ()->BooleanValue (context).FromJust ();
864
894
865
895
uv_buf_t buf = uv_buf_init (nullptr , 0 );
866
896
867
897
if (readable) {
868
- Local<Value> input = js_stdio_option->Get (env ()->input_string ());
898
+ Local<Value> input =
899
+ js_stdio_option->Get (context, env ()->input_string ()).ToLocalChecked ();
869
900
if (Buffer::HasInstance (input)) {
870
901
buf = uv_buf_init (Buffer::Data (input),
871
902
static_cast <unsigned int >(Buffer::Length (input)));
@@ -881,7 +912,8 @@ int SyncProcessRunner::ParseStdioOption(int child_fd,
881
912
882
913
} else if (js_type->StrictEquals (env ()->inherit_string ()) ||
883
914
js_type->StrictEquals (env ()->fd_string ())) {
884
- int inherit_fd = js_stdio_option->Get (env ()->fd_string ())->Int32Value ();
915
+ int inherit_fd = js_stdio_option->Get (context, env ()->fd_string ())
916
+ .ToLocalChecked ()->Int32Value (context).FromJust ();
885
917
return AddStdioInheritFD (child_fd, inherit_fd);
886
918
887
919
} else {
@@ -981,14 +1013,17 @@ int SyncProcessRunner::CopyJsStringArray(Local<Value> js_value,
981
1013
if (!js_value->IsArray ())
982
1014
return UV_EINVAL;
983
1015
1016
+ Local<Context> context = env ()->context ();
984
1017
js_array = js_value.As <Array>()->Clone ().As <Array>();
985
1018
length = js_array->Length ();
986
1019
987
1020
// Convert all array elements to string. Modify the js object itself if
988
1021
// needed - it's okay since we cloned the original object.
989
1022
for (uint32_t i = 0 ; i < length; i++) {
990
- if (!js_array->Get (i)->IsString ())
991
- js_array->Set (i, js_array->Get (i)->ToString (env ()->isolate ()));
1023
+ auto value = js_array->Get (context, i).ToLocalChecked ();
1024
+
1025
+ if (!value->IsString ())
1026
+ js_array->Set (context, i, value->ToString (env ()->isolate ())).FromJust ();
992
1027
}
993
1028
994
1029
// Index has a pointer to every string element, plus one more for a final
@@ -999,7 +1034,8 @@ int SyncProcessRunner::CopyJsStringArray(Local<Value> js_value,
999
1034
// after every string. Align strings to cache lines.
1000
1035
data_size = 0 ;
1001
1036
for (uint32_t i = 0 ; i < length; i++) {
1002
- data_size += StringBytes::StorageSize (isolate, js_array->Get (i), UTF8) + 1 ;
1037
+ auto value = js_array->Get (context, i).ToLocalChecked ();
1038
+ data_size += StringBytes::StorageSize (isolate, value, UTF8) + 1 ;
1003
1039
data_size = ROUND_UP (data_size, sizeof (void *));
1004
1040
}
1005
1041
@@ -1010,10 +1046,11 @@ int SyncProcessRunner::CopyJsStringArray(Local<Value> js_value,
1010
1046
1011
1047
for (uint32_t i = 0 ; i < length; i++) {
1012
1048
list[i] = buffer + data_offset;
1049
+ auto value = js_array->Get (context, i).ToLocalChecked ();
1013
1050
data_offset += StringBytes::Write (isolate,
1014
1051
buffer + data_offset,
1015
1052
-1 ,
1016
- js_array-> Get (i) ,
1053
+ value ,
1017
1054
UTF8);
1018
1055
buffer[data_offset++] = ' \0 ' ;
1019
1056
data_offset = ROUND_UP (data_offset, sizeof (void *));
0 commit comments