From 571b38806b57bb6957852605cd38dba241b1cd74 Mon Sep 17 00:00:00 2001 From: bendtherules Date: Mon, 7 Sep 2020 18:59:44 +0530 Subject: [PATCH] engine262/evaluator.mjs - Add onNodeEvaluationComplete hook --- src/engine262/src/evaluator.mjs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/engine262/src/evaluator.mjs b/src/engine262/src/evaluator.mjs index f5e67e0..09a7021 100644 --- a/src/engine262/src/evaluator.mjs +++ b/src/engine262/src/evaluator.mjs @@ -500,17 +500,30 @@ export function* Evaluate(Production) { surroundingAgent.hostDefinedOptions.onNodeEvaluation(Production, surroundingAgent.currentRealmRecord); } + let result; switch (true) { case isImportDeclaration(Production): - return new NormalCompletion(undefined); + result = new NormalCompletion(undefined); + break; case isExportDeclaration(Production): - return yield* Evaluate_ExportDeclaration(Production); + result = yield* Evaluate_ExportDeclaration(Production); + break; case isStatement(Production): case isDeclaration(Production): - return yield* Evaluate_Statement(Production); + result = yield* Evaluate_Statement(Production); + break; case isExpression(Production): - return yield* Evaluate_Expression(Production); + result = yield* Evaluate_Expression(Production); + break; default: throw new OutOfRange('Evaluate', Production); } + + if (surroundingAgent.hostDefinedOptions.onNodeEvaluationComplete) { + surroundingAgent.hostDefinedOptions.onNodeEvaluationComplete( + { Production, Result: result }, + ); + } + + return result; }