diff --git a/Source/JavaScriptCore/parser/SourceProvider.h b/Source/JavaScriptCore/parser/SourceProvider.h index 457c8f52ca2b8..1dca037d176ca 100644 --- a/Source/JavaScriptCore/parser/SourceProvider.h +++ b/Source/JavaScriptCore/parser/SourceProvider.h @@ -56,6 +56,9 @@ class UnlinkedFunctionCodeBlock; JSON, Synthetic, ImportMap, +#if USE(BUN_JSC_ADDITIONS) + BunTranspiledModule, +#endif }; using BytecodeCacheGenerator = Function()>; diff --git a/Source/JavaScriptCore/runtime/JSModuleLoader.cpp b/Source/JavaScriptCore/runtime/JSModuleLoader.cpp index 1fa09164e9859..1771030939155 100644 --- a/Source/JavaScriptCore/runtime/JSModuleLoader.cpp +++ b/Source/JavaScriptCore/runtime/JSModuleLoader.cpp @@ -309,6 +309,19 @@ JSValue JSModuleLoader::evaluateNonVirtual(JSGlobalObject* globalObject, JSValue return jsUndefined(); } + +#if USE(BUN_JSC_ADDITIONS) +extern "C" __attribute__((weak)) EncodedJSValue Bun__analyzeTranspiledModule(JSGlobalObject* globalObject, const Identifier& moduleKey, const SourceCode& sourceCode, JSInternalPromise* promise) { + (void)globalObject; + (void)moduleKey; + (void)sourceCode; + (void)promise; + + promise->reject(globalObject, createError(globalObject, makeString("Bun__analyzeTranspiledModule is not implemented"_s))); + return JSValue::encode(promise); +} +#endif + JSModuleNamespaceObject* JSModuleLoader::getModuleNamespaceObject(JSGlobalObject* globalObject, JSValue moduleRecordValue) { VM& vm = globalObject->vm(); @@ -375,6 +388,13 @@ JSC_DEFINE_HOST_FUNCTION(moduleLoaderParseModule, (JSGlobalObject* globalObject, promise->fulfillWithNonPromise(globalObject, moduleRecord); return JSValue::encode(promise); } +#if USE(BUN_JSC_ADDITIONS) + case SourceProviderSourceType::BunTranspiledModule: { + EncodedJSValue result = Bun__analyzeTranspiledModule(globalObject, moduleKey, sourceCode, promise); + scope.release(); + return result; + } +#endif default: { break; } diff --git a/Source/JavaScriptCore/runtime/ModuleProgramExecutable.cpp b/Source/JavaScriptCore/runtime/ModuleProgramExecutable.cpp index 2a8f9465caba9..b75644af08488 100644 --- a/Source/JavaScriptCore/runtime/ModuleProgramExecutable.cpp +++ b/Source/JavaScriptCore/runtime/ModuleProgramExecutable.cpp @@ -35,7 +35,8 @@ const ClassInfo ModuleProgramExecutable::s_info = { "ModuleProgramExecutable"_s, ModuleProgramExecutable::ModuleProgramExecutable(JSGlobalObject* globalObject, const SourceCode& source) : Base(globalObject->vm().moduleProgramExecutableStructure.get(), globalObject->vm(), source, StrictModeLexicallyScopedFeature, DerivedContextType::None, false, false, EvalContextType::None, NoIntrinsic) { - ASSERT(source.provider()->sourceType() == SourceProviderSourceType::Module); + SourceProviderSourceType sourceType = source.provider()->sourceType(); + ASSERT(sourceType == SourceProviderSourceType::Module || sourceType == SourceProviderSourceType::BunTranspiledModule); VM& vm = globalObject->vm(); if (vm.typeProfiler() || vm.controlFlowProfiler()) vm.functionHasExecutedCache()->insertUnexecutedRange(sourceID(), typeProfilingStartOffset(), typeProfilingEndOffset());