diff --git a/spec.html b/spec.html
index 1f6a575..c19a960 100644
--- a/spec.html
+++ b/spec.html
@@ -111,6 +111,59 @@
GetExportedNames ( _exportStarSet_, _starExportModule_ ) Concrete
GetExportedNames does not filter out or throw an exception for names that have ambiguous star export bindings.
+
+
+ Evaluate ( ) Concrete Method
+
+ InnerModuleEvaluation ( _module_, _stack_, _index_ )
+
+ The InnerModuleEvaluation abstract operation is used by Evaluate to perform the actual evaluation process for the Source Text Module Record _module_, as well as recursively on all other modules in the dependency graph. The _stack_ and _index_ parameters, as well as _module_'s [[DFSIndex]] and [[DFSAncestoreIndex]] fields, are used the same way as in InnerModuleInstantiation.
+
+ This abstract operation performs the following steps:
+
+
+ 1. If _module_ is not a Source Text Module Record, then
+ 1. Perform ? _module_.Evaluate().
+ 1. Return _index_.
+ 1. If _module_.[[Status]] is `"evaluated"`, then
+ 1. If _module_.[[EvaluationError]] is *undefined*, return _index_.
+ 1. Otherwise return _module_.[[EvaluationError]].
+ 1. If _module_.[[Status]] is `"evaluating"`, return _index_.
+ 1. Assert: _module_.[[Status]] is `"instantiated"`.
+ 1. Append _module_ to _stack_.
+ 1. If _module_ is a Source Text Module Record, then
+ 1. Set _module_.[[Status]] to `"evaluating"`.
+ 1. Set _module_.[[DFSIndex]] to _index_.
+ 1. Set _module_.[[DFSAncestorIndex]] to _index_.
+ 1. Set _index_ to _index_ + 1.
+ 1. Append _module_ to _stack_.
+ 1. For each String _required_ that is an element of _module_.[[RequestedModules]], do
+ 1. Let _requiredModule_ be ! HostResolveImportedModule(_module_, _required_).
+ 1. NOTE: Instantiate must be completed successfully prior to invoking this method, so every requested module is guaranteed to resolve successfully.
+ 1. Set _index_ to ? InnerModuleEvaluation(_requiredModule_, _stack_, _index_).
+ 1. Assert: _requiredModule_.[[Status]] is either `"evaluating"` or `"evaluated"`.
+ 1. Assert: _requiredModule_.[[Status]] is `"evaluating"` if and only if _requiredModule_ is in _stack_.
+ 1. If _requiredModule_.[[Status]] is `"evaluating"`, then
+ 1. Assert: _requiredModule_ is a Source Text Module Record.
+ 1. Set _module_.[[DFSAncestorIndex]] to min(_module_.[[DFSAncestorIndex]], _requiredModule_.[[DFSAncestorIndex]]).
+ 1. Perform ? ModuleExecution(_module_).
+ 1. Assert: _module_ occurs exactly once in _stack_.
+ 1. Assert: _module_ is not an Abstract Module Record, or _module_.[[DFSAncestorIndex]] is less than or equal to _module_.[[DFSIndex]].
+ 1. If _module_.[[DFSAncestorIndex]] equals _module_.[[DFSIndex]], or _module_ is not an Abstract Module Record, then
+ 1. Let _done_ be *false*.
+ 1. For each element _requiredModule_ of _stack_ in reverse order, and while _done_ is *false*, do
+ 1. Perform ? ModuleExecution(_requiredModule_).
+ 1. If _requiredModule_ and _module_ are the same Module Record, set _done_ to *true*.
+ 1. Set _done_ to *false*.
+ 1. Repeat, while _done_ is *false*,
+ 1. Let _requiredModule_ be the last element in _stack_.
+ 1. Remove the last element of _stack_.
+ 1. Set _requiredModule_.[[Status]] to `"evaluated"`.
+ 1. If _requiredModule_ and _module_ are the same Module Record, set _done_ to *true*.
+ 1. Return _index_.
+
+
+
@@ -356,4 +409,4 @@ Runtime Semantics: GetModuleNamespace ( _module_ )
-
\ No newline at end of file
+