diff --git a/spec.html b/spec.html
index 0067696083..4f1e95d9c0 100644
--- a/spec.html
+++ b/spec.html
@@ -26829,7 +26829,9 @@
Cyclic Module Records
a Cyclic Module Record or ~empty~
- The first visited module of the cycle, the root DFS ancestor of the strongly connected component. For a module not in a cycle, this would be the module itself. Once Evaluate has completed, a module's [[DFSAncestorIndex]] is the depth-first traversal index of its [[CycleRoot]].
+ This field is initially ~empty~. Once InnerModuleEvaluation runs on a module's strongly connected component without returning a throw completion, it's updated to be the first visited module of the SCC (the root DFS ancestor). For a module not in a cycle, this would be the module itself.
+
+ Once this field is set, a module's [[DFSAncestorIndex]] is the depth-first traversal index of its [[CycleRoot]].
|
@@ -27256,6 +27258,7 @@
1. If _requiredModule_.[[Status]] is ~evaluating~, then
1. Set _module_.[[DFSAncestorIndex]] to min(_module_.[[DFSAncestorIndex]], _requiredModule_.[[DFSAncestorIndex]]).
1. Else,
+ 1. Assert: _requiredModule_.[[CycleRoot]] is not ~empty~.
1. Set _requiredModule_ to _requiredModule_.[[CycleRoot]].
1. Assert: _requiredModule_.[[Status]] is either ~evaluating-async~ or ~evaluated~.
1. If _requiredModule_.[[EvaluationError]] is not ~empty~, return ? _requiredModule_.[[EvaluationError]].
@@ -27280,6 +27283,7 @@
1. If _requiredModule_.[[AsyncEvaluationOrder]] is ~unset~, set _requiredModule_.[[Status]] to ~evaluated~.
1. Else, set _requiredModule_.[[Status]] to ~evaluating-async~.
1. If _requiredModule_ and _module_ are the same Module Record, set _done_ to *true*.
+ 1. Assert: _requiredModule_.[[CycleRoot]] is ~empty~.
1. Set _requiredModule_.[[CycleRoot]] to _module_.
1. Return _index_.
@@ -27329,15 +27333,16 @@
1. For each Cyclic Module Record _m_ of _module_.[[AsyncParentModules]], do
- 1. If _execList_ does not contain _m_ and _m_.[[CycleRoot]].[[EvaluationError]] is ~empty~, then
+ 1. If _execList_ does not contain _m_ and _m_.[[EvaluationError]] is ~empty~, then
1. Assert: _m_.[[Status]] is ~evaluating-async~.
- 1. Assert: _m_.[[EvaluationError]] is ~empty~.
- 1. Assert: _m_.[[AsyncEvaluationOrder]] is an integer.
- 1. Assert: _m_.[[PendingAsyncDependencies]] > 0.
- 1. Set _m_.[[PendingAsyncDependencies]] to _m_.[[PendingAsyncDependencies]] - 1.
- 1. If _m_.[[PendingAsyncDependencies]] = 0, then
- 1. Append _m_ to _execList_.
- 1. If _m_.[[HasTLA]] is *false*, perform GatherAvailableAncestors(_m_, _execList_).
+ 1. Assert: _m_.[[CycleRoot]] is not ~empty~.
+ 1. If _m_.[[CycleRoot]].[[EvaluationError]] is ~empty~, then
+ 1. Assert: _m_.[[AsyncEvaluationOrder]] is an integer.
+ 1. Assert: _m_.[[PendingAsyncDependencies]] > 0.
+ 1. Set _m_.[[PendingAsyncDependencies]] to _m_.[[PendingAsyncDependencies]] - 1.
+ 1. If _m_.[[PendingAsyncDependencies]] = 0, then
+ 1. Append _m_ to _execList_.
+ 1. If _m_.[[HasTLA]] is *false*, perform GatherAvailableAncestors(_m_, _execList_).
1. Return ~unused~.