Module: wine Branch: master Commit: 7694afff4bb33b25fd5899d07ffce4f31d12474f URL: http://source.winehq.org/git/wine.git/?a=commit;h=7694afff4bb33b25fd5899d07f...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Aug 4 13:39:53 2016 +0200
jscript: Don't use OP_var_set.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/jscript/compile.c | 9 ++++++++- dlls/jscript/engine.c | 15 --------------- dlls/jscript/engine.h | 1 - 3 files changed, 8 insertions(+), 17 deletions(-)
diff --git a/dlls/jscript/compile.c b/dlls/jscript/compile.c index e911373..0087459 100644 --- a/dlls/jscript/compile.c +++ b/dlls/jscript/compile.c @@ -1095,11 +1095,18 @@ static HRESULT compile_variable_list(compiler_ctx_t *ctx, variable_declaration_t if(!iter->expr) continue;
+ hres = push_instr_bstr_uint(ctx, OP_identid, iter->identifier, 0); + if(FAILED(hres)) + return hres; + hres = compile_expression(ctx, iter->expr, TRUE); if(FAILED(hres)) return hres;
- hres = push_instr_bstr(ctx, OP_var_set, iter->identifier); + if(!push_instr(ctx, OP_assign)) + return E_OUTOFMEMORY; + + hres = push_instr_uint(ctx, OP_pop, 1); if(FAILED(hres)) return hres; } diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c index bc8eb5b..2305998 100644 --- a/dlls/jscript/engine.c +++ b/dlls/jscript/engine.c @@ -728,21 +728,6 @@ static inline void jmp_abs(script_ctx_t *ctx, unsigned dst) ctx->call_ctx->ip = dst; }
-/* ECMA-262 3rd Edition 12.2 */ -static HRESULT interp_var_set(script_ctx_t *ctx) -{ - const BSTR name = get_op_bstr(ctx, 0); - jsval_t val; - HRESULT hres; - - TRACE("%s\n", debugstr_w(name)); - - val = stack_pop(ctx); - hres = jsdisp_propput_name(ctx->call_ctx->variable_obj, name, val); - jsval_release(val); - return hres; -} - /* ECMA-262 3rd Edition 12.6.4 */ static HRESULT interp_forin(script_ctx_t *ctx) { diff --git a/dlls/jscript/engine.h b/dlls/jscript/engine.h index 0434ff1..2aaf831 100644 --- a/dlls/jscript/engine.h +++ b/dlls/jscript/engine.h @@ -89,7 +89,6 @@ X(setret, 1, 0,0) \ X(sub, 1, 0,0) \ X(undefined, 1, 0,0) \ - X(var_set, 1, ARG_BSTR, 0) \ X(void, 1, 0,0) \ X(xor, 1, 0,0)