diff --git a/scripts/build/deps/webkit.ts b/scripts/build/deps/webkit.ts index 8a12eefec688..f8c9ad85d811 100644 --- a/scripts/build/deps/webkit.ts +++ b/scripts/build/deps/webkit.ts @@ -3,7 +3,7 @@ * for local mode. Override via `--webkit-version=` to test a branch. * From https://github.com/oven-sh/WebKit releases. */ -export const WEBKIT_VERSION = "c6cfe90c6064bd80a1916b844c2f092735cfc720"; +export const WEBKIT_VERSION = "eeab04040fa61fd595695980f9d054b7fc0ed855"; /** * WebKit (JavaScriptCore) — the JS engine. diff --git a/src/js_printer/lib.rs b/src/js_printer/lib.rs index a465407cf3f4..e64591d3ff8c 100644 --- a/src/js_printer/lib.rs +++ b/src/js_printer/lib.rs @@ -166,14 +166,17 @@ pub mod analyze_transpiled_module { Self(value.0) } /// JSC `ScriptFetchParameters::Type` value. `None` maps to `JavaScript` - /// (NodesAnalyzeModule's no-attribute default). + /// (NodesAnalyzeModule's no-attribute default). JSC's `Text` (4) is never + /// produced: with BUN_JSC_ADDITIONS `type: "text"` is host-defined like + /// every other non-json/wasm type. Pinned by the static_asserts in + /// BunAnalyzeTranspiledModule.cpp. #[inline] pub fn to_script_fetch_parameters_type(self) -> u8 { match self { Self::None | Self::Javascript => 1, Self::Webassembly => 2, Self::Json => 3, - _ => 4, + _ => 5, } } } diff --git a/src/jsc/bindings/BunAnalyzeTranspiledModule.cpp b/src/jsc/bindings/BunAnalyzeTranspiledModule.cpp index ee7b03a1c6b6..fdfaadacaf1c 100644 --- a/src/jsc/bindings/BunAnalyzeTranspiledModule.cpp +++ b/src/jsc/bindings/BunAnalyzeTranspiledModule.cpp @@ -113,7 +113,8 @@ extern "C" void JSC_JSModuleRecord__addRequestedModuleHostDefined(JSModuleRecord static_assert(static_cast(JSC::ScriptFetchParameters::Type::JavaScript) == 1, "ScriptFetchParameters::Type tag drift vs to_script_fetch_parameters_type()"); static_assert(static_cast(JSC::ScriptFetchParameters::Type::WebAssembly) == 2, "ScriptFetchParameters::Type tag drift vs to_script_fetch_parameters_type()"); static_assert(static_cast(JSC::ScriptFetchParameters::Type::JSON) == 3, "ScriptFetchParameters::Type tag drift vs to_script_fetch_parameters_type()"); -static_assert(static_cast(JSC::ScriptFetchParameters::Type::HostDefined) == 4, "ScriptFetchParameters::Type tag drift vs to_script_fetch_parameters_type()"); +static_assert(static_cast(JSC::ScriptFetchParameters::Type::Text) == 4, "ScriptFetchParameters::Type tag drift vs to_script_fetch_parameters_type()"); +static_assert(static_cast(JSC::ScriptFetchParameters::Type::HostDefined) == 5, "ScriptFetchParameters::Type tag drift vs to_script_fetch_parameters_type()"); extern "C" void JSC_JSModuleRecord__addImportEntrySingle(JSModuleRecord* moduleRecord, Identifier* identifierArray, uint32_t importName, uint32_t localName, uint32_t moduleName, uint8_t moduleRequestType) { diff --git a/src/jsc/bindings/NodeVM.cpp b/src/jsc/bindings/NodeVM.cpp index 4ed1521cc4bd..6c07d03f3a02 100644 --- a/src/jsc/bindings/NodeVM.cpp +++ b/src/jsc/bindings/NodeVM.cpp @@ -97,6 +97,10 @@ static JSValue scriptFetchParametersToImportAttributes(JSGlobalObject* globalObj case JSC::ScriptFetchParameters::Type::JavaScript: obj->putDirect(vm, vm.propertyNames->type, jsNontrivialString(vm, "javascript"_s)); break; + case JSC::ScriptFetchParameters::Type::Text: + // Unreachable with BUN_JSC_ADDITIONS (`type: "text"` parses as HostDefined); kept so the switch stays exhaustive. + obj->putDirect(vm, vm.propertyNames->type, jsNontrivialString(vm, "text"_s)); + break; case JSC::ScriptFetchParameters::Type::HostDefined: obj->putDirect(vm, vm.propertyNames->type, jsString(vm, params->hostDefinedImportType())); break; diff --git a/src/jsc/bindings/NodeVMSyntheticModule.cpp b/src/jsc/bindings/NodeVMSyntheticModule.cpp index 42ef186a5069..dc64df20033c 100644 --- a/src/jsc/bindings/NodeVMSyntheticModule.cpp +++ b/src/jsc/bindings/NodeVMSyntheticModule.cpp @@ -94,7 +94,9 @@ void NodeVMSyntheticModule::createModuleRecord(JSGlobalObject* globalObject) { VM& vm = globalObject->vm(); - SyntheticModuleRecord* moduleRecord = SyntheticModuleRecord::create(globalObject, vm, globalObject->syntheticModuleRecordStructure(), Identifier::fromString(vm, identifier())); + // The source type only feeds AbstractModuleRecord::moduleType(), which the loader attaches to + // errors as the failing module's kind; a vm.SyntheticModule is a JavaScript module in that sense. + SyntheticModuleRecord* moduleRecord = SyntheticModuleRecord::create(globalObject, vm, globalObject->syntheticModuleRecordStructure(), Identifier::fromString(vm, identifier()), SourceProviderSourceType::Module); m_moduleRecord.set(vm, this, moduleRecord); diff --git a/src/jsc/bindings/root.h b/src/jsc/bindings/root.h index c101d7e9d0ca..3c62835febcd 100644 --- a/src/jsc/bindings/root.h +++ b/src/jsc/bindings/root.h @@ -78,7 +78,7 @@ #include #include #include -#include +#include #include #include #endif diff --git a/src/jsc/bindings/wtf-bindings.cpp b/src/jsc/bindings/wtf-bindings.cpp index f14c9efed6b5..5001ed5a67d4 100644 --- a/src/jsc/bindings/wtf-bindings.cpp +++ b/src/jsc/bindings/wtf-bindings.cpp @@ -297,7 +297,7 @@ static thread_local WTF::StackBounds stackBoundsForCurrentThread = WTF::StackBou extern "C" [[ZIG_EXPORT(nothrow)]] void Bun__StackCheck__initialize() { - stackBoundsForCurrentThread = WTF::StackBounds::currentThreadStackBounds(); + stackBoundsForCurrentThread = WTF::StackBounds::currentThreadStackBoundsForEmbedder(); } extern "C" [[ZIG_EXPORT(nothrow)]] __attribute__((__always_inline__)) void* Bun__StackCheck__getMaxStack()