From 3bee6a7b2b18916e90d37e2e26b81a1047ed147f Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Mon, 28 Jan 2013 10:40:30 +0100 Subject: [PATCH] Most statements don't return a value In eval mode, we need to write the result of statements into the return value. But most statements don't return a value, so the statement shouldn't write a return value. Change-Id: I9ce24fe6689bd2bb2aee6241ca84a25f9a266f5c Reviewed-by: Simon Hausmann --- qv4codegen.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/qv4codegen.cpp b/qv4codegen.cpp index 462aeea..b5c0e9d 100644 --- a/qv4codegen.cpp +++ b/qv4codegen.cpp @@ -726,10 +726,6 @@ void Codegen::statement(ExpressionNode *ast) { if (! ast) { return; - } else if (_mode == EvalCode) { - Result e = expression(ast); - if (*e) - move(_block->TEMP(_returnAddress), *e); } else { Result r(nx); qSwap(_expr, r); @@ -2091,7 +2087,13 @@ bool Codegen::visit(EmptyStatement *) bool Codegen::visit(ExpressionStatement *ast) { - statement(ast->expression); + if (_mode == EvalCode) { + Result e = expression(ast->expression); + if (*e) + move(_block->TEMP(_returnAddress), *e); + } else { + statement(ast->expression); + } return false; } -- 2.7.4