@@ -573,24 +573,22 @@ NODE_EXTERN std::unique_ptr<InspectorParentHandle> GetInspectorParentHandle(
573573
574574MaybeLocal<Value> LoadEnvironment (Environment* env,
575575 StartExecutionCallbackWithModule cb,
576- EmbedderPreloadCallback preload,
577- void * callback_data) {
576+ EmbedderPreloadCallback preload) {
578577 env->InitializeLibuv ();
579578 env->InitializeDiagnostics ();
580579 if (preload) {
581580 env->set_embedder_preload (std::move (preload));
582581 }
583582 env->InitializeCompileCache ();
584583
585- return StartExecution (env, cb, callback_data );
584+ return StartExecution (env, cb);
586585}
587586
588587struct StartExecutionCallbackInfoWithModule ::Impl {
589588 Environment* env = nullptr ;
590589 Local<Object> process_object;
591590 Local<Function> native_require;
592591 Local<Function> run_module;
593- void * data = nullptr ;
594592};
595593
596594StartExecutionCallbackInfoWithModule::StartExecutionCallbackInfoWithModule ()
@@ -606,6 +604,22 @@ StartExecutionCallbackInfoWithModule&
606604StartExecutionCallbackInfoWithModule::operator =(
607605 StartExecutionCallbackInfoWithModule&&) = default ;
608606
607+ Environment* StartExecutionCallbackInfoWithModule::env () const {
608+ return impl_->env ;
609+ }
610+
611+ Local<Object> StartExecutionCallbackInfoWithModule::process_object () const {
612+ return impl_->process_object ;
613+ }
614+
615+ Local<Function> StartExecutionCallbackInfoWithModule::native_require () const {
616+ return impl_->native_require ;
617+ }
618+
619+ Local<Function> StartExecutionCallbackInfoWithModule::run_module () const {
620+ return impl_->run_module ;
621+ }
622+
609623void StartExecutionCallbackInfoWithModule::set_env (Environment* env) {
610624 impl_->env = env;
611625}
@@ -625,30 +639,6 @@ void StartExecutionCallbackInfoWithModule::set_run_module(
625639 impl_->run_module = run_module;
626640}
627641
628- void StartExecutionCallbackInfoWithModule::set_data (void * data) {
629- impl_->data = data;
630- }
631-
632- Environment* StartExecutionCallbackInfoWithModule::env () const {
633- return impl_->env ;
634- }
635-
636- Local<Object> StartExecutionCallbackInfoWithModule::process_object () const {
637- return impl_->process_object ;
638- }
639-
640- Local<Function> StartExecutionCallbackInfoWithModule::native_require () const {
641- return impl_->native_require ;
642- }
643-
644- Local<Function> StartExecutionCallbackInfoWithModule::run_module () const {
645- return impl_->run_module ;
646- }
647-
648- void * StartExecutionCallbackInfoWithModule::data () const {
649- return impl_->data ;
650- }
651-
652642struct ModuleData ::Impl {
653643 std::string_view source;
654644 ModuleFormat format = ModuleFormat::kCommonJS ;
@@ -687,46 +677,23 @@ std::string_view ModuleData::resource_name() const {
687677 return impl_->resource_name ;
688678}
689679
690- struct LegacyModuleData {
691- StartExecutionCallback cb;
692- void * callback_data;
693- };
694-
695680MaybeLocal<Value> LoadEnvironment (Environment* env,
696681 StartExecutionCallback cb,
697682 EmbedderPreloadCallback preload) {
698- if (cb == nullptr ) {
683+ if (!cb ) {
699684 return LoadEnvironment (
700685 env, StartExecutionCallbackWithModule{}, std::move (preload));
701686 }
702687
703688 return LoadEnvironment (
704689 env,
705- [](const StartExecutionCallbackInfoWithModule& info)
690+ [cb = std::move (cb) ](const StartExecutionCallbackInfoWithModule& info)
706691 -> MaybeLocal<Value> {
707- const StartExecutionCallback* cb =
708- static_cast <const StartExecutionCallback*>(info.data ());
709692 StartExecutionCallbackInfo legacy_info{
710693 info.process_object (), info.native_require (), info.run_module ()};
711- return (*cb) (legacy_info);
694+ return cb (legacy_info);
712695 },
713- nullptr ,
714- &cb);
715- }
716-
717- MaybeLocal<Value> RunModule (const StartExecutionCallbackInfoWithModule& info) {
718- const ModuleData* data = static_cast <const ModuleData*>(info.data ());
719- Environment* env = info.env ();
720- Local<Context> context = env->context ();
721- Isolate* isolate = env->isolate ();
722- Local<Value> main_script =
723- ToV8Value (context, data->source ()).ToLocalChecked ();
724- Local<Value> format =
725- v8::Integer::New (isolate, static_cast <int >(data->format ()));
726- Local<Value> resource_name =
727- ToV8Value (context, data->resource_name ()).ToLocalChecked ();
728- Local<Value> args[] = {main_script, format, resource_name};
729- return info.run_module ()->Call (context, Null (isolate), arraysize (args), args);
696+ std::move (preload));
730697}
731698
732699MaybeLocal<Value> LoadEnvironment (Environment* env,
@@ -745,7 +712,23 @@ MaybeLocal<Value> LoadEnvironment(Environment* env,
745712 // It could be empty when it's used by SEA to load an empty script.
746713 CHECK_IMPLIES (data->source ().size () > 0 , data->source ().data ());
747714 return LoadEnvironment (
748- env, RunModule, std::move (preload), const_cast <ModuleData*>(data));
715+ env,
716+ [data](const StartExecutionCallbackInfoWithModule& info)
717+ -> MaybeLocal<Value> {
718+ Environment* env = info.env ();
719+ Local<Context> context = env->context ();
720+ Isolate* isolate = env->isolate ();
721+ Local<Value> main_script =
722+ ToV8Value (context, data->source ()).ToLocalChecked ();
723+ Local<Value> format =
724+ v8::Integer::New (isolate, static_cast <int >(data->format ()));
725+ Local<Value> resource_name =
726+ ToV8Value (context, data->resource_name ()).ToLocalChecked ();
727+ Local<Value> args[] = {main_script, format, resource_name};
728+ return info.run_module ()->Call (
729+ context, Null (isolate), arraysize (args), args);
730+ },
731+ std::move (preload));
749732}
750733
751734Environment* GetCurrentEnvironment (Local<Context> context) {
0 commit comments