@@ -405,36 +405,6 @@ struct WorkerdApi::Impl final {
405405 }
406406 });
407407 }
408-
409- static v8::Local<v8::String> compileTextGlobal (
410- JsgWorkerdIsolate::Lock& lock, capnp::Text::Reader reader) {
411- return lock.wrapNoContext (reader);
412- };
413-
414- static v8::Local<v8::ArrayBuffer> compileDataGlobal (
415- JsgWorkerdIsolate::Lock& lock, capnp::Data::Reader reader) {
416- return lock.wrapNoContext (kj::heapArray (reader));
417- };
418-
419- static v8::Local<v8::WasmModuleObject> compileWasmGlobal (JsgWorkerdIsolate::Lock& lock,
420- capnp::Data::Reader reader,
421- const jsg::CompilationObserver& observer) {
422- lock.setAllowEval (true );
423- KJ_DEFER (lock.setAllowEval (false ));
424-
425- // Allow Wasm compilation to spawn a background thread for tier-up, i.e. recompiling
426- // Wasm with optimizations in the background. Otherwise Wasm startup is way too slow.
427- // Until tier-up finishes, requests will be handled using Liftoff-generated code, which
428- // compiles fast but runs slower.
429- AllowV8BackgroundThreadsScope scope;
430-
431- return jsg::compileWasmModule (lock, reader, observer);
432- };
433-
434- static v8::Local<v8::Value> compileJsonGlobal (
435- JsgWorkerdIsolate::Lock& lock, capnp::Text::Reader reader) {
436- return jsg::check (v8::JSON::Parse (lock.v8Context (), lock.wrapNoContext (reader)));
437- };
438408};
439409
440410WorkerdApi::WorkerdApi (jsg::V8System& v8System,
@@ -583,7 +553,8 @@ kj::Array<Worker::Script::CompiledGlobal> WorkerdApi::compileServiceWorkerGlobal
583553 for (auto & global: source.globals ) {
584554 KJ_IF_SOME (wasm, global.content .tryGet <Worker::Script::WasmModule>()) {
585555 auto name = lock.str (global.name );
586- auto value = Impl::compileWasmGlobal (lock, wasm.body , *impl->observer );
556+ auto value =
557+ modules::legacy::compileWasmGlobal<JsgWorkerdIsolate>(lock, wasm.body , *impl->observer );
587558
588559 compiledGlobals.add (Worker::Script::CompiledGlobal{
589560 {lock.v8Isolate , name},
@@ -597,64 +568,24 @@ kj::Array<Worker::Script::CompiledGlobal> WorkerdApi::compileServiceWorkerGlobal
597568 return compiledGlobals.finish ();
598569}
599570
600- // Part of the original module registry implementation.
601- kj::Maybe<jsg::ModuleRegistry::ModuleInfo> WorkerdApi::tryCompileModule (jsg::Lock& js,
602- config::Worker::Module::Reader conf,
603- jsg::CompilationObserver& observer,
571+ namespace {
572+ kj::Maybe<jsg::ModuleRegistry::ModuleInfo> tryCompileLegacyModule (jsg::Lock& js,
573+ kj::StringPtr name,
574+ const Worker::Script::ModuleContent& content,
575+ const jsg::CompilationObserver& observer,
604576 CompatibilityFlags::Reader featureFlags) {
605- return tryCompileModule (js, readModuleConf (conf, featureFlags), observer, featureFlags);
577+ return modules::legacy::tryCompileLegacyModule<JsgWorkerdIsolate>(
578+ js, name, content, observer, featureFlags);
606579}
580+ } // namespace
607581
582+ // Part of the original module registry implementation.
608583kj::Maybe<jsg::ModuleRegistry::ModuleInfo> WorkerdApi::tryCompileModule (jsg::Lock& js,
609- const Worker::Script ::Module& module ,
610- jsg::CompilationObserver& observer,
584+ config::Worker ::Module::Reader conf ,
585+ const jsg::CompilationObserver& observer,
611586 CompatibilityFlags::Reader featureFlags) {
612- TRACE_EVENT (" workerd" , " WorkerdApi::tryCompileModule()" , " name" , module .name );
613- auto & lock = kj::downcast<JsgWorkerdIsolate::Lock>(js);
614- KJ_SWITCH_ONEOF (module .content ) {
615- KJ_CASE_ONEOF (content, Worker::Script::TextModule) {
616- return jsg::ModuleRegistry::ModuleInfo (lock, module .name , kj::none,
617- jsg::ModuleRegistry::TextModuleInfo (lock, Impl::compileTextGlobal (lock, content.body )));
618- }
619- KJ_CASE_ONEOF (content, Worker::Script::DataModule) {
620- return jsg::ModuleRegistry::ModuleInfo (lock, module .name , kj::none,
621- jsg::ModuleRegistry::DataModuleInfo (
622- lock, Impl::compileDataGlobal (lock, content.body ).As <v8::ArrayBuffer>()));
623- }
624- KJ_CASE_ONEOF (content, Worker::Script::WasmModule) {
625- return jsg::ModuleRegistry::ModuleInfo (lock, module .name , kj::none,
626- jsg::ModuleRegistry::WasmModuleInfo (
627- lock, Impl::compileWasmGlobal (lock, content.body , observer)));
628- }
629- KJ_CASE_ONEOF (content, Worker::Script::JsonModule) {
630- return jsg::ModuleRegistry::ModuleInfo (lock, module .name , kj::none,
631- jsg::ModuleRegistry::JsonModuleInfo (lock, Impl::compileJsonGlobal (lock, content.body )));
632- }
633- KJ_CASE_ONEOF (content, Worker::Script::EsModule) {
634- // TODO(soon): Make sure passing nullptr to compile cache is desired.
635- return jsg::ModuleRegistry::ModuleInfo (lock, module .name , content.body ,
636- nullptr /* compile cache */ , jsg::ModuleInfoCompileOption::BUNDLE, observer);
637- }
638- KJ_CASE_ONEOF (content, Worker::Script::CommonJsModule) {
639- return jsg::ModuleRegistry::ModuleInfo (lock, module .name , content.namedExports ,
640- jsg::ModuleRegistry::CommonJsModuleInfo (lock, module .name , content.body ,
641- kj::heap<api::CommonJsImpl<JsgWorkerdIsolate::Lock>>(
642- lock, kj::Path::parse (module .name ))));
643- }
644- KJ_CASE_ONEOF (content, Worker::Script::PythonModule) {
645- // Nothing to do. Handled in compileModules.
646- return kj::none;
647- }
648- KJ_CASE_ONEOF (content, Worker::Script::PythonRequirement) {
649- // Nothing to do. Handled in compileModules.
650- return kj::none;
651- }
652- KJ_CASE_ONEOF (content, Worker::Script::CapnpModule) {
653- return workerd::modules::capnp::addCapnpModule<JsgWorkerdIsolate>(
654- lock, content.typeId , module .name );
655- }
656- }
657- KJ_UNREACHABLE;
587+ auto module = readModuleConf (conf, featureFlags);
588+ return tryCompileLegacyModule (js, module .name , module .content , observer, featureFlags);
658589}
659590
660591Worker::Script::Module WorkerdApi::readModuleConf (config::Worker::Module::Reader conf,
@@ -756,7 +687,9 @@ void WorkerdApi::compileModules(jsg::Lock& lockParam,
756687 Worker::Script::Module module {
757688 .name = source.mainModule , .content = Worker::Script::EsModule{PYTHON_ENTRYPOINT}};
758689
759- auto info = tryCompileModule (lockParam, module , modules->getObserver (), featureFlags);
690+ auto info = tryCompileLegacyModule (
691+ lockParam, module .name , module .content , modules->getObserver (), featureFlags);
692+
760693 auto path = kj::Path::parse (source.mainModule );
761694 modules->add (path, kj::mv (KJ_REQUIRE_NONNULL (info)));
762695 }
@@ -792,7 +725,8 @@ void WorkerdApi::compileModules(jsg::Lock& lockParam,
792725
793726 for (auto & module : source.modules ) {
794727 auto path = kj::Path::parse (module .name );
795- auto maybeInfo = tryCompileModule (lockParam, module , modules->getObserver (), featureFlags);
728+ auto maybeInfo = tryCompileLegacyModule (
729+ lockParam, module .name , module .content , modules->getObserver (), featureFlags);
796730 KJ_IF_SOME (info, maybeInfo) {
797731 modules->add (path, kj::mv (info));
798732 }
0 commit comments