Modified: trunk/Source/_javascript_Core/ChangeLog (273291 => 273292)
--- trunk/Source/_javascript_Core/ChangeLog 2021-02-23 02:00:56 UTC (rev 273291)
+++ trunk/Source/_javascript_Core/ChangeLog 2021-02-23 02:02:01 UTC (rev 273292)
@@ -1,5 +1,20 @@
2021-02-22 Keith Miller <[email protected]>
+ Move asyncModuleEvaluation into its own function and use intrinsic constants
+ https://bugs.webkit.org/show_bug.cgi?id=222281
+
+ Reviewed by Yusuke Suzuki.
+
+ Also delete an unused field on the module entry.
+
+ * builtins/ModuleLoader.js:
+ (globalPrivate.newRegistryEntry):
+ (moduleEvaluation):
+ (async asyncModuleEvaluation):
+ * runtime/JSModuleLoader.cpp:
+
+2021-02-22 Keith Miller <[email protected]>
+
Remove unused internal fields from AbstractModuleLoader
https://bugs.webkit.org/show_bug.cgi?id=222256
Modified: trunk/Source/_javascript_Core/builtins/ModuleLoader.js (273291 => 273292)
--- trunk/Source/_javascript_Core/builtins/ModuleLoader.js 2021-02-23 02:00:56 UTC (rev 273291)
+++ trunk/Source/_javascript_Core/builtins/ModuleLoader.js 2021-02-23 02:02:01 UTC (rev 273292)
@@ -101,7 +101,6 @@
evaluated: false,
then: @undefined,
isAsync: false,
- completionPromise: @undefined,
};
}
@@ -327,26 +326,30 @@
}
this.evaluate(entry.key, entry.module, fetcher);
- } else {
- return (async function asyncModuleEvaluation(entry, dependencies) {
- for (var i = 0, length = dependencies.length; i < length; ++i)
- await this.moduleEvaluation(dependencies[i], fetcher);
+ } else
+ return this.asyncModuleEvaluation(entry, fetcher, dependencies);
+}
- var resumeMode = 0;
- while (true) {
- var awaitedValue = this.evaluate(entry.key, entry.module, fetcher, awaitedValue, resumeMode);
- if (@getAbstractModuleRecordInternalField(entry.module, @abstractModuleRecordFieldState) == @GeneratorStateExecuting)
- return;
+async function asyncModuleEvaluation(entry, fetcher, dependencies)
+{
+ "use strict";
- try {
- awaitedValue = await awaitedValue;
- resumeMode = 0;
- } catch (e) {
- awaitedValue = e;
- resumeMode = 2;
- }
- }
- }).@call(this, entry, dependencies);
+ for (var i = 0, length = dependencies.length; i < length; ++i)
+ await this.moduleEvaluation(dependencies[i], fetcher);
+
+ var resumeMode = @GeneratorResumeModeNormal;
+ while (true) {
+ var awaitedValue = this.evaluate(entry.key, entry.module, fetcher, awaitedValue, resumeMode);
+ if (@getAbstractModuleRecordInternalField(entry.module, @abstractModuleRecordFieldState) == @GeneratorStateExecuting)
+ return;
+
+ try {
+ awaitedValue = await awaitedValue;
+ resumeMode = @GeneratorResumeModeNormal;
+ } catch (e) {
+ awaitedValue = e;
+ resumeMode = @GeneratorResumeModeThrow;
+ }
}
}
Modified: trunk/Source/_javascript_Core/runtime/JSModuleLoader.cpp (273291 => 273292)
--- trunk/Source/_javascript_Core/runtime/JSModuleLoader.cpp 2021-02-23 02:00:56 UTC (rev 273291)
+++ trunk/Source/_javascript_Core/runtime/JSModuleLoader.cpp 2021-02-23 02:02:01 UTC (rev 273292)
@@ -74,6 +74,7 @@
link JSBuiltin DontEnum|Function 2
moduleDeclarationInstantiation moduleLoaderModuleDeclarationInstantiation DontEnum|Function 2
moduleEvaluation JSBuiltin DontEnum|Function 2
+ asyncModuleEvaluation JSBuiltin DontEnum|Function 3
evaluate moduleLoaderEvaluate DontEnum|Function 3
provideFetch JSBuiltin DontEnum|Function 2
loadAndEvaluateModule JSBuiltin DontEnum|Function 3