[JSC] Rewrite module loader#57827
Conversation
|
EWS run on previous version of this PR (hash 027dc02) Details |
Jarred-Sumner
left a comment
There was a problem hiding this comment.
Very exciting! Some comments but note I am not a WebKit reviewer so you have no obligation to address them
| RETURN_IF_EXCEPTION(scope, void()); | ||
|
|
||
| // Because `this` keeps `fetchPromise` alive (and, by extension, onFetchFulfilled), it's okay for the fulfillment function to capture `this`. | ||
| JSValue onFetchFulfilled = JSNativeStdFunction::create(vm, globalObject, 1, { }, [this](JSGlobalObject* globalObject, CallFrame* callFrame) { |
There was a problem hiding this comment.
Can we avoid the JSNativeStdFunction here similarly to everywhere else?
|
|
||
| const Vector<AbstractModuleRecord::ModuleRequest>& requests = record->requestedModules(); | ||
|
|
||
| JSArray* array = constructEmptyArray(globalObject, nullptr, requests.size()); |
There was a problem hiding this comment.
This can use MarkedArgumentBuffer dependencyKeys; and append to that one-at-a-time
There was a problem hiding this comment.
What's the advantage?
| RETURN_IF_EXCEPTION(scope, nullptr); | ||
| } | ||
|
|
||
| RELEASE_AND_RETURN(scope, array); |
There was a problem hiding this comment.
| RELEASE_AND_RETURN(scope, array); | |
| RELEASE_AND_RETURN(scope, constructArray(vm, globalObject, dependencyKeys)); |
Safer C++ Build #78075 (027dc02)❌ Found 2 failing files with 2 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
027dc02 to
c6ed35a
Compare
|
EWS run on previous version of this PR (hash c6ed35a) Details |
|
I've written a fuzzer to produce convoluted dependency graphs to test the module loader rewrite. So far, every test I've run has produced identical output when run with this PR vs. when run with NodeJS, whereas running the tests with JSC prior to this PR will produce incorrect output and (in debug builds) the occasional assertion failure. |
c6ed35a to
cef57c9
Compare
|
EWS run on previous version of this PR (hash cef57c9) Details |
Safer C++ Build #78208 (c6ed35a)❌ Found 2 failing files with 2 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
Safer C++ Build #78249 (cef57c9)❌ Found 2 failing files with 2 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
cef57c9 to
fc59918
Compare
|
EWS run on previous version of this PR (hash fc59918) Details |
Safer C++ Build #78320 (fc59918)❌ Found 2 failing files with 2 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
fc59918 to
baf444b
Compare
|
EWS run on previous version of this PR (hash baf444b) Details |
Safer C++ Build #78542 (baf444b)❌ Found 2 failing files with 2 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
baf444b to
77b5a41
Compare
|
EWS run on previous version of this PR (hash 77b5a41) Details |
Safer C++ Build #78626 (77b5a41)❌ Found 2 failing files with 2 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
77b5a41 to
73a3f6d
Compare
|
EWS run on previous version of this PR (hash 73a3f6d) Details |
Safer C++ Build #78788 (73a3f6d)❌ Found 2 failing files with 2 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
73a3f6d to
3607817
Compare
|
EWS run on previous version of this PR (hash 3607817) Details |
3607817 to
a12f172
Compare
|
EWS run on previous version of this PR (hash a12f172) Details |
macOS Safer C++ Build #83580 (9de40ff)❌ Found 2 failing files with 3 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
| auto values = thisObject->m_dependencies.values(); | ||
| visitor.append(values.begin(), values.end()); |
There was a problem hiding this comment.
You need to protect this hashtable access with a lock since this visitChildren is concurrently running. (See cellLock() for example).
There was a problem hiding this comment.
Do I need to lock it before accessing it elsewhere too, or just here?
There was a problem hiding this comment.
Ultimately, when we need to take a lock is,
- When the main thread is modifying the table
- When accessing it from the concurrent thread
But I think it is fine that we just guard it in every case. It is not performance critical part :)
There was a problem hiding this comment.
I assume this applies also to Vectors of WriteBarriers, right?
| // Based on the Source Text Module Record | ||
| // http://www.ecma-international.org/ecma-262/6.0/#sec-source-text-module-records | ||
| class AbstractModuleRecord : public JSInternalFieldObjectImpl<2> { | ||
| class AbstractModuleRecord : public JSInternalFieldObjectImpl<3> { |
There was a problem hiding this comment.
We are using JSInternalFieldObjectImpl because this was accessed from JS code (so internal field was useful to use it). But now ModuleLoader.js is removed. This means we can just put these flags directly in AbstractModuleRecord and we no longer need to have JSInternalFieldObjectImpl. Probably we can just inherit JSCell.
There was a problem hiding this comment.
Do you have advice on how I should change this part of BytecodeGenerator?
There was a problem hiding this comment.
9de40ff to
dcd54eb
Compare
|
EWS run on previous version of this PR (hash dcd54eb) Details
|
dcd54eb to
5fa61cb
Compare
|
EWS run on previous version of this PR (hash 5fa61cb) Details |
5fa61cb to
d433f74
Compare
|
EWS run on previous version of this PR (hash d433f74) Details
|
d433f74 to
959a007
Compare
|
EWS run on previous version of this PR (hash 959a007) Details |
macOS Safer C++ Build #83777 (5fa61cb)❌ Found 2 failing files with 3 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
iOS Safer C++ Build #2067 (5fa61cb)❌ Found 2 failing files with 3 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
macOS Safer C++ Build #83824 (959a007)❌ Found 2 failing files with 3 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
iOS Safer C++ Build #2114 (959a007)❌ Found 2 failing files with 3 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
959a007 to
4a2a374
Compare
|
EWS run on previous version of this PR (hash 4a2a374) Details |
macOS Safer C++ Build #83956 (4a2a374)❌ Found 2 failing files with 3 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
iOS Safer C++ Build #2246 (4a2a374)❌ Found 2 failing files with 3 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
4a2a374 to
431d87a
Compare
|
EWS run on previous version of this PR (hash 431d87a) Details |
431d87a to
ebde759
Compare
|
EWS run on previous version of this PR (hash ebde759) Details |
macOS Safer C++ Build #84309 (ebde759)❌ Found 4 failing files with 5 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
iOS Safer C++ Build #2574 (ebde759)❌ Found 4 failing files with 5 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
https://bugs.webkit.org/show_bug.cgi?id=242740 rdar://97370038 Reviewed by NOBODY (OOPS!). The current module loader has long-standing bugs. This includes assertion failures when run on valid ES modules, incorrect ordering of module evaluation and quirks with top-level await. This PR removes the current amalgam of C++ and JS and replaces it with a pure-C++ rewrite that follows the modern ECMAScript spec instead of the old WHATWG Loader proposal. Added a test (JSTests/modules/sync-from-async.js) that used to cause an assertion failure in debug builds of jsc. * JSTests/modules/sync-from-async.js: Added. * JSTests/modules/sync-from-async/a.js: Added. * JSTests/modules/sync-from-async/b.js: Added. (shouldThrow): * LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-2-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-3-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-script-error-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-error-1-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-error-2-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-error-3-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-error-4-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/top-level-await/sibling-imports-not-blocked.any-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/top-level-await/sibling-imports-not-blocked.any.worker-expected.txt: * Source/JavaScriptCore/API/JSAPIGlobalObject.h: * Source/JavaScriptCore/API/JSAPIGlobalObject.mm: (JSC::JSAPIGlobalObject::moduleLoaderResolve): (JSC::JSAPIGlobalObject::moduleLoaderImportModule): (JSC::JSAPIGlobalObject::moduleLoaderFetch): (JSC::JSAPIGlobalObject::loadAndEvaluateJSScriptModule): * Source/JavaScriptCore/API/JSContext.mm: (-[JSContext dependencyIdentifiersForModuleJSScript:]): * Source/JavaScriptCore/CMakeLists.txt: * Source/JavaScriptCore/DerivedSources-input.xcfilelist: * Source/JavaScriptCore/DerivedSources.make: * Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj: * Source/JavaScriptCore/Sources.txt: * Source/JavaScriptCore/builtins/BuiltinNames.h: * Source/JavaScriptCore/builtins/ModuleLoader.js: Removed. * Source/JavaScriptCore/heap/Heap.cpp: * Source/JavaScriptCore/heap/Heap.h: * Source/JavaScriptCore/jsc.cpp: (GlobalObject::moduleLoaderImportModule): (GlobalObject::moduleLoaderResolve): (GlobalObject::moduleLoaderFetch): (runWithOptions): * Source/JavaScriptCore/parser/ModuleAnalyzer.cpp: (JSC::ModuleAnalyzer::analyze): * Source/JavaScriptCore/parser/Parser.cpp: (JSC::Parser<LexerType>::parseInner): * Source/JavaScriptCore/runtime/AbstractModuleRecord.cpp: (JSC::AbstractModuleRecord::AsyncEvaluationOrder::AsyncEvaluationOrder): (JSC::AbstractModuleRecord::AsyncEvaluationOrder::order const): (JSC::AbstractModuleRecord::AsyncEvaluationOrder::order): (JSC::AbstractModuleRecord::AbstractModuleRecord): (JSC::AbstractModuleRecord::finishCreation): (JSC::AbstractModuleRecord::visitChildrenImpl): (JSC::AbstractModuleRecord::ModuleRequest::type const): (JSC::AbstractModuleRecord::LoadedModuleRequest::LoadedModuleRequest): (JSC::AbstractModuleRecord::ModuleRequest::operator== const): (JSC::AbstractModuleRecord::appendRequestedModule): (JSC::AbstractModuleRecord::hostResolveImportedModule): (JSC::AbstractModuleRecord::getModuleNamespace): (JSC::AbstractModuleRecord::asyncCapability const): (JSC::AbstractModuleRecord::asyncCapability): (JSC::AbstractModuleRecord::link): (JSC::AbstractModuleRecord::evaluate): (JSC::AbstractModuleRecord::evaluateModuleSync): (JSC::AbstractModuleRecord::innerModuleEvaluation): (JSC::AbstractModuleRecord::innerModuleLinking): (JSC::AbstractModuleRecord::moduleType const): (JSC::AbstractModuleRecord::cycleRoot): (JSC::AbstractModuleRecord::topLevelCapability): (JSC::AbstractModuleRecord::hasTLA): (JSC::AbstractModuleRecord::appendAsyncParentModule): * Source/JavaScriptCore/runtime/AbstractModuleRecord.h: (JSC::AbstractModuleRecord::AsyncEvaluationOrder::isDone const): (JSC::AbstractModuleRecord::AsyncEvaluationOrder::isUnset const): (JSC::AbstractModuleRecord::AsyncEvaluationOrder::hasOrder const): (JSC::AbstractModuleRecord::AsyncEvaluationOrder::setDone): (JSC::AbstractModuleRecord::AsyncEvaluationOrder::done): (JSC::AbstractModuleRecord::loadedModules): (JSC::AbstractModuleRecord::loadedModules const): (JSC::AbstractModuleRecord::asyncParentModules const): (JSC::AbstractModuleRecord::cycleRoot const): (JSC::AbstractModuleRecord::asyncEvaluationOrder const): (JSC::AbstractModuleRecord::pendingAsyncDependencies const): (JSC::AbstractModuleRecord::hasTLA const): (JSC::AbstractModuleRecord::topLevelCapability const): (JSC::AbstractModuleRecord::asyncEvaluationOrder): (JSC::AbstractModuleRecord::pendingAsyncDependencies): * Source/JavaScriptCore/runtime/Completion.cpp: (JSC::createEntrypointModuleKey): (JSC::rejectPromise): (JSC::loadAndEvaluateModule): (JSC::getSourceType): (JSC::loadModule): (JSC::linkAndEvaluateModule): (JSC::importModule): (JSC::createSymbolForEntrypointModule): Deleted. * Source/JavaScriptCore/runtime/Completion.h: * Source/JavaScriptCore/runtime/CyclicModuleRecord.cpp: Added. (JSC::CyclicModuleRecord::CyclicModuleRecord): (JSC::CyclicModuleRecord::finishCreation): (JSC::CyclicModuleRecord::visitChildrenImpl): (JSC::CyclicModuleRecord::initializeEnvironment): (JSC::CyclicModuleRecord::link): (JSC::CyclicModuleRecord::evaluate): (JSC::CyclicModuleRecord::execute): (JSC::CyclicModuleRecord::executeAsync): (JSC::gatherAvailableAncestors): (JSC::CyclicModuleRecord::asyncExecutionRejected): (JSC::CyclicModuleRecord::asyncExecutionFulfilled): * Source/JavaScriptCore/runtime/CyclicModuleRecord.h: Copied from Source/JavaScriptCore/runtime/JSModuleRecord.h. (JSC::CyclicModuleRecord::subspaceFor): (JSC::CyclicModuleRecord::status const): (JSC::CyclicModuleRecord::evaluationError const): (JSC::CyclicModuleRecord::dfsAncestorIndex const): (JSC::CyclicModuleRecord::status): (JSC::CyclicModuleRecord::evaluationError): (JSC::CyclicModuleRecord::dfsAncestorIndex): * Source/JavaScriptCore/runtime/GlobalObjectMethodTable.h: * Source/JavaScriptCore/runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::init): * Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION): * Source/JavaScriptCore/runtime/JSMicrotask.cpp: (JSC::runInternalMicrotask): * Source/JavaScriptCore/runtime/JSModuleLoader.cpp: (JSC::jsValueToSpecifier): (JSC::isFetchError): (JSC::JSModuleLoader::duplicateTypeError): (JSC::JSModuleLoader::duplicateError): (JSC::maybeDuplicateFetchError): (JSC::JSModuleLoader::ModuleFailure::ModuleFailure): (JSC::JSModuleLoader::ModuleFailure::isEvaluationError const): (JSC::JSModuleLoader::ModuleFailure::operator bool const): (JSC::getErrorInfo): (JSC::attachErrorInfo): (JSC::JSModuleLoader::attachErrorInfo): (JSC::JSModuleLoader::JSModuleLoader): (JSC::JSModuleLoader::destroy): (JSC::JSModuleLoader::finishCreation): (JSC::JSModuleLoader::visitChildrenImpl): (JSC::JSModuleLoader::dependencyKeysIfEvaluated): (JSC::JSModuleLoader::provideFetch): (JSC::getFetchType): (JSC::JSModuleLoader::loadModule): (JSC::JSModuleLoader::linkAndEvaluateModule): (JSC::JSModuleLoader::requestImportModule): (JSC::JSModuleLoader::importModule): (JSC::JSModuleLoader::resolve): (JSC::JSModuleLoader::fetch): (JSC::moduleRequestsEqual): (JSC::JSModuleLoader::getImportedModule): (JSC::JSModuleLoader::maybeGetImportedModule): (JSC::JSModuleLoader::hostLoadImportedModule): (JSC::JSModuleLoader::innerModuleLoading): (JSC::JSModuleLoader::finishLoadingImportedModule): (JSC::JSModuleLoader::continueModuleLoading): (JSC::JSModuleLoader::continueDynamicImport): (JSC::JSModuleLoader::loadRequestedModules): (JSC::JSModuleLoader::ensureRegistered): (JSC::JSModuleLoader::getRegisteredMayBeNull): (JSC::JSModuleLoader::ModuleMapEntry::getRecord const): (JSC::JSModuleLoader::ModuleMapEntry::isRecord const): (JSC::JSModuleLoader::ModuleReferrer::getScript const): (JSC::JSModuleLoader::ModuleReferrer::getModule const): (JSC::JSModuleLoader::ModuleReferrer::getRealm const): (JSC::JSModuleLoader::ModuleReferrer::isScript const): (JSC::JSModuleLoader::ModuleReferrer::isModule const): (JSC::JSModuleLoader::ModuleReferrer::isRealm const): (JSC::JSModuleLoader::ModuleReferrer::toJSValue const): (JSC::JSModuleLoader::makeModule): (JSC::JSModuleLoader::loadAndEvaluateModule): Deleted. (JSC::JSC_DEFINE_HOST_FUNCTION): Deleted. (JSC::stringFromScriptFetchParametersType): Deleted. * Source/JavaScriptCore/runtime/JSModuleLoader.h: * Source/JavaScriptCore/runtime/JSModuleLoaderInlines.h: (JSC::JSModuleLoader::createStructure): * Source/JavaScriptCore/runtime/JSModuleRecord.cpp: (JSC::JSModuleRecord::evaluate): (JSC::JSModuleRecord::execute): (JSC::JSModuleRecord::getOrMakeExecutable): (JSC::JSModuleRecord::createStructure): Deleted. (JSC::JSModuleRecord::link): (JSC::JSModuleRecord::instantiateDeclarations): Deleted. * Source/JavaScriptCore/runtime/JSModuleRecord.h: * Source/JavaScriptCore/runtime/JSModuleRecordInlines.h: Copied from Source/JavaScriptCore/runtime/JSModuleLoaderInlines.h. (JSC::JSModuleRecord::createStructure): * Source/JavaScriptCore/runtime/JSPromise.h: * Source/JavaScriptCore/runtime/JSType.cpp: (WTF::printInternal): * Source/JavaScriptCore/runtime/JSType.h: * Source/JavaScriptCore/runtime/Microtask.h: * Source/JavaScriptCore/runtime/ModuleGraphLoadingState.cpp: Added. (JSC::ModuleGraphLoadingState::ModuleGraphLoadingState): (JSC::ModuleGraphLoadingState::destroy): (JSC::ModuleGraphLoadingState::finishCreation): (JSC::ModuleGraphLoadingState::visitChildrenImpl): (JSC::ModuleGraphLoadingState::create): (JSC::ModuleGraphLoadingState::promise const): (JSC::ModuleGraphLoadingState::pendingModulesCount const): (JSC::ModuleGraphLoadingState::isLoading const): (JSC::ModuleGraphLoadingState::scriptFetcher const): (JSC::ModuleGraphLoadingState::pendingModulesCount): (JSC::ModuleGraphLoadingState::isLoading): (JSC::ModuleGraphLoadingState::scriptFetcher): (JSC::ModuleGraphLoadingState::appendVisited): (JSC::ModuleGraphLoadingState::containsVisited const): * Source/JavaScriptCore/runtime/ModuleGraphLoadingState.h: Copied from Source/JavaScriptCore/runtime/JSModuleRecord.h. * Source/JavaScriptCore/runtime/ModuleGraphLoadingStateInlines.h: Copied from Source/JavaScriptCore/runtime/JSModuleLoaderInlines.h. (JSC::ModuleGraphLoadingState::createStructure): * Source/JavaScriptCore/runtime/ModuleLoaderPayload.cpp: Added. (JSC::ModuleLoaderPayload::ModuleLoaderPayload): (JSC::ModuleLoaderPayload::destroy): (JSC::ModuleLoaderPayload::finishCreation): (JSC::ModuleLoaderPayload::visitChildrenImpl): (JSC::ModuleLoaderPayload::create): (JSC::ModuleLoaderPayload::getState const): (JSC::ModuleLoaderPayload::getPromise const): (JSC::ModuleLoaderPayload::isState const): (JSC::ModuleLoaderPayload::isPromise const): (JSC::ModuleLoaderPayload::underlyingPromise const): * Source/JavaScriptCore/runtime/ModuleLoaderPayload.h: Copied from Source/JavaScriptCore/API/JSAPIGlobalObject.h. * Source/JavaScriptCore/runtime/ModuleLoaderPayloadInlines.h: Copied from Source/JavaScriptCore/runtime/JSModuleLoaderInlines.h. (JSC::ModuleLoaderPayload::createStructure): * Source/JavaScriptCore/runtime/ModuleRegistryEntry.cpp: Added. (JSC::ModuleRegistryEntry::ModuleRegistryEntry): (JSC::ModuleRegistryEntry::destroy): (JSC::ModuleRegistryEntry::finishCreation): (JSC::ModuleRegistryEntry::visitChildrenImpl): (JSC::ModuleRegistryEntry::create): (JSC::ModuleRegistryEntry::key const): (JSC::ModuleRegistryEntry::moduleType const): (JSC::ModuleRegistryEntry::record const): (JSC::ModuleRegistryEntry::ensureFetchPromise): (JSC::ModuleRegistryEntry::ensureModulePromise): (JSC::ModuleRegistryEntry::loadPromise const): (JSC::ModuleRegistryEntry::error const): (JSC::ModuleRegistryEntry::fetchError const): (JSC::ModuleRegistryEntry::instantiationError const): (JSC::ModuleRegistryEntry::evaluationError const): (JSC::ModuleRegistryEntry::status const): (JSC::ModuleRegistryEntry::record): (JSC::ModuleRegistryEntry::loadPromise): (JSC::ModuleRegistryEntry::fetchError): (JSC::ModuleRegistryEntry::instantiationError): (JSC::ModuleRegistryEntry::evaluationError): (JSC::ModuleRegistryEntry::status): (JSC::ModuleRegistryEntry::provideFetch): (JSC::ModuleRegistryEntry::fetchComplete): * Source/JavaScriptCore/runtime/ModuleRegistryEntry.h: Copied from Source/JavaScriptCore/runtime/JSModuleRecord.h. * Source/JavaScriptCore/runtime/ModuleRegistryEntryInlines.h: Copied from Source/JavaScriptCore/runtime/JSModuleLoaderInlines.h. (JSC::ModuleRegistryEntry::createStructure): * Source/JavaScriptCore/runtime/PinballCompletion.cpp: * Source/JavaScriptCore/runtime/VM.cpp: (JSC::VM::VM): (JSC::VM::visitAggregateImpl): * Source/JavaScriptCore/runtime/VM.h: (JSC::VM::incrementModuleAsyncEvaluationCount): * Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp: (JSC::WebAssemblyModuleRecord::link): * Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.h: * Source/WebCore/bindings/js/JSDOMGlobalObject.cpp: (WebCore::JSDOMGlobalObject::moduleLoaderResolve): (WebCore::JSDOMGlobalObject::moduleLoaderFetch): (WebCore::JSDOMGlobalObject::moduleLoaderImportModule): * Source/WebCore/bindings/js/JSDOMGlobalObject.h: * Source/WebCore/bindings/js/JSExecState.h: (WebCore::JSExecState::loadModule): (WebCore::JSExecState::linkAndEvaluateModule): * Source/WebCore/bindings/js/ScriptController.cpp: (WebCore::ScriptController::linkAndEvaluateModuleScriptInWorld): (WebCore::ScriptController::linkAndEvaluateModuleScript): (WebCore::ScriptController::setupModuleScriptHandlers): * Source/WebCore/bindings/js/ScriptController.h: * Source/WebCore/bindings/js/ScriptModuleLoader.cpp: (WebCore::parseURLLikeModuleSpecifier): (WebCore::ScriptModuleLoader::resolve): (WebCore::ScriptModuleLoader::fetch): (WebCore::rejectPromise): (WebCore::ScriptModuleLoader::importModule): (WebCore::ScriptModuleLoader::notifyFinished): * Source/WebCore/bindings/js/ScriptModuleLoader.h:
ebde759 to
36e0098
Compare
|
EWS run on current version of this PR (hash 36e0098) Details |
macOS Safer C++ Build #84508 (36e0098)❌ Found 4 failing files with 5 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
iOS Safer C++ Build #2747 (36e0098)❌ Found 4 failing files with 5 issues. Please address these issues before landing. See WebKit Guidelines for Safer C++ Programming. |
🛠 ios-apple
36e0098
36e0098
🛠 playstation