Module: wine Branch: master Commit: 962307da6c74685876939dd148bd3d80c3b7a913 URL: http://source.winehq.org/git/wine.git/?a=commit;h=962307da6c74685876939dd148...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Nov 30 10:14:33 2011 +0100
jscript: Use bytecode for delete member expression.
---
dlls/jscript/compile.c | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/dlls/jscript/compile.c b/dlls/jscript/compile.c index adcd749..b0fa861 100644 --- a/dlls/jscript/compile.c +++ b/dlls/jscript/compile.c @@ -321,6 +321,22 @@ static HRESULT compile_delete_expression(compiler_ctx_t *ctx, unary_expression_t return E_OUTOFMEMORY; break; } + case EXPR_MEMBER: { + member_expression_t *member_expr = (member_expression_t*)expr->expression; + + hres = compile_expression(ctx, member_expr->expression); + if(FAILED(hres)) + return hres; + + /* FIXME: Potential optimization */ + hres = push_instr_str(ctx, OP_str, member_expr->identifier); + if(FAILED(hres)) + return hres; + + if(push_instr(ctx, OP_delete) == -1) + return E_OUTOFMEMORY; + break; + } default: expr->expr.eval = delete_expression_eval; return compile_interp_fallback(ctx, &expr->expr);