engine262/evaluator.mjs - Add onNodeEvaluationComplete hook

This commit is contained in:
2020-09-07 18:59:44 +05:30
parent 06d0171d8b
commit 571b38806b
+17 -4
View File
@@ -500,17 +500,30 @@ export function* Evaluate(Production) {
surroundingAgent.hostDefinedOptions.onNodeEvaluation(Production, surroundingAgent.currentRealmRecord); surroundingAgent.hostDefinedOptions.onNodeEvaluation(Production, surroundingAgent.currentRealmRecord);
} }
let result;
switch (true) { switch (true) {
case isImportDeclaration(Production): case isImportDeclaration(Production):
return new NormalCompletion(undefined); result = new NormalCompletion(undefined);
break;
case isExportDeclaration(Production): case isExportDeclaration(Production):
return yield* Evaluate_ExportDeclaration(Production); result = yield* Evaluate_ExportDeclaration(Production);
break;
case isStatement(Production): case isStatement(Production):
case isDeclaration(Production): case isDeclaration(Production):
return yield* Evaluate_Statement(Production); result = yield* Evaluate_Statement(Production);
break;
case isExpression(Production): case isExpression(Production):
return yield* Evaluate_Expression(Production); result = yield* Evaluate_Expression(Production);
break;
default: default:
throw new OutOfRange('Evaluate', Production); throw new OutOfRange('Evaluate', Production);
} }
if (surroundingAgent.hostDefinedOptions.onNodeEvaluationComplete) {
surroundingAgent.hostDefinedOptions.onNodeEvaluationComplete(
{ Production, Result: result },
);
}
return result;
} }