From 20e270d0c732c3586be0094f3591530720badb55 Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Sat, 14 Sep 2024 18:33:16 -0400 Subject: [PATCH] Optimize already-evaluated dynamic imports --- Source/JavaScriptCore/builtins/ModuleLoader.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Source/JavaScriptCore/builtins/ModuleLoader.js b/Source/JavaScriptCore/builtins/ModuleLoader.js index ded73f1f53072..97462fd806233 100644 --- a/Source/JavaScriptCore/builtins/ModuleLoader.js +++ b/Source/JavaScriptCore/builtins/ModuleLoader.js @@ -636,7 +636,14 @@ async function requestImportModule(moduleName, referrer, parameters, fetcher) await importMap; key = this.resolve(moduleName, referrer, fetcher); } - var entry = await this.requestSatisfy(this.ensureRegistered(key), parameters, fetcher, new @Set); + var entry = this.ensureRegistered(key); + if (entry.evaluated) { + return this.getModuleNamespaceObject(entry.module); + } + entry = await this.requestSatisfy(entry, parameters, fetcher, new @Set); + if (entry.evaluated) { + return this.getModuleNamespaceObject(entry.module); + } await this.linkAndEvaluateModule(entry.key, fetcher); return this.getModuleNamespaceObject(entry.module); }