| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index e817e777f11669b4bdf7935708c4d216a6bbafad..6b7c17a68a2797f3fc4285b8bc2065148cd107ce 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -19906,7 +19906,7 @@
|
| }
|
|
|
| MaybeHandle<Object> Module::Evaluate(Handle<Module> module) {
|
| - DCHECK(module->code()->IsJSFunction()); // Instantiated.
|
| + DCHECK(module->code()->IsJSFunction());
|
|
|
| Isolate* isolate = module->GetIsolate();
|
|
|
| @@ -19914,28 +19914,17 @@
|
| if (module->evaluated()) return isolate->factory()->undefined_value();
|
| module->set_evaluated(true);
|
|
|
| - // Initialization.
|
| + Handle<FixedArray> requested_modules(module->requested_modules(), isolate);
|
| + for (int i = 0, length = requested_modules->length(); i < length; ++i) {
|
| + Handle<Module> import(Module::cast(requested_modules->get(i)), isolate);
|
| + RETURN_ON_EXCEPTION(isolate, Evaluate(import), Object);
|
| + }
|
| +
|
| Handle<JSFunction> function(JSFunction::cast(module->code()), isolate);
|
| DCHECK_EQ(MODULE_SCOPE, function->shared()->scope_info()->scope_type());
|
| Handle<Object> receiver = isolate->factory()->undefined_value();
|
| Handle<Object> argv[] = {module};
|
| - Handle<Object> generator;
|
| - ASSIGN_RETURN_ON_EXCEPTION(
|
| - isolate, generator,
|
| - Execution::Call(isolate, function, receiver, arraysize(argv), argv),
|
| - Object);
|
| -
|
| - // Recursion.
|
| - Handle<FixedArray> requested_modules(module->requested_modules(), isolate);
|
| - for (int i = 0, length = requested_modules->length(); i < length; ++i) {
|
| - Handle<Module> import(Module::cast(requested_modules->get(i)), isolate);
|
| - RETURN_ON_EXCEPTION(isolate, Evaluate(import), Object);
|
| - }
|
| -
|
| - // Evaluation of module body.
|
| - Handle<JSFunction> resume(
|
| - isolate->native_context()->generator_next_internal(), isolate);
|
| - return Execution::Call(isolate, resume, generator, 0, nullptr);
|
| + return Execution::Call(isolate, function, receiver, arraysize(argv), argv);
|
| }
|
|
|
| } // namespace internal
|
|
|