@@ -663,39 +663,47 @@ void SyncProcessRunner::SetPipeError(int pipe_error) {
663663
664664Local<Object> SyncProcessRunner::BuildResultObject () {
665665 EscapableHandleScope scope (env ()->isolate ());
666+ Local<Context> context = env ()->context ();
666667
667668 Local<Object> js_result = Object::New (env ()->isolate ());
668669
669670 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 () ;
672673 }
673674
674675 if (exit_status_ >= 0 ) {
675676 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 ();
677679 } 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 ();
680683 }
681684 } else {
682685 // 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 ();
684688 }
685689
686690 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 ();
689694 else
690- js_result->Set (env ()->signal_string (), Null (env ()->isolate ()));
695+ js_result->Set (context, env ()->signal_string (),
696+ Null (env ()->isolate ())).FromJust ();
691697
692698 if (exit_status_ >= 0 )
693- js_result->Set (env ()->output_string (), BuildOutputArray ());
699+ js_result->Set (context, env ()->output_string (),
700+ BuildOutputArray ()).FromJust ();
694701 else
695- js_result->Set (env ()->output_string (), Null (env ()->isolate ()));
702+ js_result->Set (context, env ()->output_string (),
703+ Null (env ()->isolate ())).FromJust ();
696704
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 () ;
699707
700708 return scope.Escape (js_result);
701709}
@@ -706,14 +714,15 @@ Local<Array> SyncProcessRunner::BuildOutputArray() {
706714 CHECK_NE (stdio_pipes_, nullptr );
707715
708716 EscapableHandleScope scope (env ()->isolate ());
717+ Local<Context> context = env ()->context ();
709718 Local<Array> js_output = Array::New (env ()->isolate (), stdio_count_);
710719
711720 for (uint32_t i = 0 ; i < stdio_count_; i++) {
712721 SyncProcessStdioPipe* h = stdio_pipes_[i];
713722 if (h != nullptr && h->writable ())
714- js_output->Set (i, h->GetOutputAsBuffer (env ()));
723+ js_output->Set (context, i, h->GetOutputAsBuffer (env ())). FromJust ( );
715724 else
716- js_output->Set (i, Null (env ()->isolate ()));
725+ js_output->Set (context, i, Null (env ()->isolate ())). FromJust ( );
717726 }
718727
719728 return scope.Escape (js_output);
@@ -727,86 +736,100 @@ int SyncProcessRunner::ParseOptions(Local<Value> js_value) {
727736 if (!js_value->IsObject ())
728737 return UV_EINVAL;
729738
739+ Local<Context> context = env ()->context ();
730740 Local<Object> js_options = js_value.As <Object>();
731741
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 ();
733744 r = CopyJsString (js_file, &file_buffer_);
734745 if (r < 0 )
735746 return r;
736747 uv_process_options_.file = file_buffer_;
737748
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 ();
739751 r = CopyJsStringArray (js_args, &args_buffer_);
740752 if (r < 0 )
741753 return r;
742754 uv_process_options_.args = reinterpret_cast <char **>(args_buffer_);
743755
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 ( );
746758 if (IsSet (js_cwd)) {
747759 r = CopyJsString (js_cwd, &cwd_buffer_);
748760 if (r < 0 )
749761 return r;
750762 uv_process_options_.cwd = cwd_buffer_;
751763 }
752764
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 ();
754767 if (IsSet (js_env_pairs)) {
755768 r = CopyJsStringArray (js_env_pairs, &env_buffer_);
756769 if (r < 0 )
757770 return r;
758771
759772 uv_process_options_.env = reinterpret_cast <char **>(env_buffer_);
760773 }
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 ();
762776 if (IsSet (js_uid)) {
763777 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 ();
765779 uv_process_options_.uid = static_cast <uv_uid_t >(uid);
766780 uv_process_options_.flags |= UV_PROCESS_SETUID;
767781 }
768782
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 ();
770785 if (IsSet (js_gid)) {
771786 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 ();
773788 uv_process_options_.gid = static_cast <uv_gid_t >(gid);
774789 uv_process_options_.flags |= UV_PROCESS_SETGID;
775790 }
776791
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 ())
778795 uv_process_options_.flags |= UV_PROCESS_DETACHED;
779796
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 ())
783800 uv_process_options_.flags |= UV_PROCESS_WINDOWS_HIDE;
784801
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 ();
786805
787- if (js_options-> Get (wba)-> BooleanValue ())
806+ if (js_wva-> BooleanValue (context). FromJust ())
788807 uv_process_options_.flags |= UV_PROCESS_WINDOWS_VERBATIM_ARGUMENTS;
789808
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 ();
791811 if (IsSet (js_timeout)) {
792812 CHECK (js_timeout->IsNumber ());
793- int64_t timeout = js_timeout->IntegerValue ();
813+ int64_t timeout = js_timeout->IntegerValue (context). FromJust ( );
794814 timeout_ = static_cast <uint64_t >(timeout);
795815 }
796816
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 ();
798819 if (IsSet (js_max_buffer)) {
799820 CHECK (js_max_buffer->IsNumber ());
800- max_buffer_ = js_max_buffer->NumberValue ();
821+ max_buffer_ = js_max_buffer->NumberValue (context). FromJust ( );
801822 }
802823
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 ();
804826 if (IsSet (js_kill_signal)) {
805827 CHECK (js_kill_signal->IsInt32 ());
806- kill_signal_ = js_kill_signal->Int32Value ();
828+ kill_signal_ = js_kill_signal->Int32Value (context). FromJust ( );
807829 }
808830
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 ();
810833 r = ParseStdioOptions (js_stdio);
811834 if (r < 0 )
812835 return r;
@@ -822,6 +845,7 @@ int SyncProcessRunner::ParseStdioOptions(Local<Value> js_value) {
822845 if (!js_value->IsArray ())
823846 return UV_EINVAL;
824847
848+ Local<Context> context = env ()->context ();
825849 js_stdio_options = js_value.As <Array>();
826850
827851 stdio_count_ = js_stdio_options->Length ();
@@ -831,7 +855,8 @@ int SyncProcessRunner::ParseStdioOptions(Local<Value> js_value) {
831855 stdio_pipes_initialized_ = true ;
832856
833857 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 ();
835860
836861 if (!js_stdio_option->IsObject ())
837862 return UV_EINVAL;
@@ -850,7 +875,9 @@ int SyncProcessRunner::ParseStdioOptions(Local<Value> js_value) {
850875
851876int SyncProcessRunner::ParseStdioOption (int child_fd,
852877 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 ();
854881
855882 if (js_type->StrictEquals (env ()->ignore_string ())) {
856883 return AddStdioIgnore (child_fd);
@@ -859,13 +886,17 @@ int SyncProcessRunner::ParseStdioOption(int child_fd,
859886 Local<String> rs = env ()->readable_string ();
860887 Local<String> ws = env ()->writable_string ();
861888
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 ();
864894
865895 uv_buf_t buf = uv_buf_init (nullptr , 0 );
866896
867897 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 ();
869900 if (Buffer::HasInstance (input)) {
870901 buf = uv_buf_init (Buffer::Data (input),
871902 static_cast <unsigned int >(Buffer::Length (input)));
@@ -881,7 +912,8 @@ int SyncProcessRunner::ParseStdioOption(int child_fd,
881912
882913 } else if (js_type->StrictEquals (env ()->inherit_string ()) ||
883914 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 ();
885917 return AddStdioInheritFD (child_fd, inherit_fd);
886918
887919 } else {
@@ -981,14 +1013,17 @@ int SyncProcessRunner::CopyJsStringArray(Local<Value> js_value,
9811013 if (!js_value->IsArray ())
9821014 return UV_EINVAL;
9831015
1016+ Local<Context> context = env ()->context ();
9841017 js_array = js_value.As <Array>()->Clone ().As <Array>();
9851018 length = js_array->Length ();
9861019
9871020 // Convert all array elements to string. Modify the js object itself if
9881021 // needed - it's okay since we cloned the original object.
9891022 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 ();
9921027 }
9931028
9941029 // 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,
9991034 // after every string. Align strings to cache lines.
10001035 data_size = 0 ;
10011036 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 ;
10031039 data_size = ROUND_UP (data_size, sizeof (void *));
10041040 }
10051041
@@ -1010,10 +1046,11 @@ int SyncProcessRunner::CopyJsStringArray(Local<Value> js_value,
10101046
10111047 for (uint32_t i = 0 ; i < length; i++) {
10121048 list[i] = buffer + data_offset;
1049+ auto value = js_array->Get (context, i).ToLocalChecked ();
10131050 data_offset += StringBytes::Write (isolate,
10141051 buffer + data_offset,
10151052 -1 ,
1016- js_array-> Get (i) ,
1053+ value ,
10171054 UTF8);
10181055 buffer[data_offset++] = ' \0 ' ;
10191056 data_offset = ROUND_UP (data_offset, sizeof (void *));
0 commit comments