Module: wine Branch: master Commit: 0841b60b8d7464724eb52d0fab8e2c0321a2489c URL: https://source.winehq.org/git/wine.git/?a=commit;h=0841b60b8d7464724eb52d0fa...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Jun 4 17:28:03 2020 +0200
jscript: Inline add_eval implementation.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/jscript/engine.c | 43 ++++++++++++++++--------------------------- 1 file changed, 16 insertions(+), 27 deletions(-)
diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c index 27f03084fa..c39c59e3ab 100644 --- a/dlls/jscript/engine.c +++ b/dlls/jscript/engine.c @@ -1734,21 +1734,27 @@ static HRESULT interp_in(script_ctx_t *ctx) }
/* ECMA-262 3rd Edition 11.6.1 */ -static HRESULT add_eval(script_ctx_t *ctx, jsval_t lval, jsval_t rval, jsval_t *ret) +static HRESULT interp_add(script_ctx_t *ctx) { - jsval_t r, l; + jsval_t l, r, lval, rval, ret; HRESULT hres;
+ rval = stack_pop(ctx); + lval = stack_pop(ctx); + + TRACE("%s + %s\n", debugstr_jsval(lval), debugstr_jsval(rval)); + hres = to_primitive(ctx, lval, &l, NO_HINT); + if(SUCCEEDED(hres)) { + hres = to_primitive(ctx, rval, &r, NO_HINT); + if(FAILED(hres)) + jsval_release(l); + } + jsval_release(lval); + jsval_release(rval); if(FAILED(hres)) return hres;
- hres = to_primitive(ctx, rval, &r, NO_HINT); - if(FAILED(hres)) { - jsval_release(l); - return hres; - } - if(is_string(l) || is_string(r)) { jsstr_t *lstr, *rstr = NULL;
@@ -1761,7 +1767,7 @@ static HRESULT add_eval(script_ctx_t *ctx, jsval_t lval, jsval_t rval, jsval_t *
ret_str = jsstr_concat(lstr, rstr); if(ret_str) - *ret = jsval_string(ret_str); + ret = jsval_string(ret_str); else hres = E_OUTOFMEMORY; } @@ -1776,29 +1782,12 @@ static HRESULT add_eval(script_ctx_t *ctx, jsval_t lval, jsval_t rval, jsval_t * if(SUCCEEDED(hres)) { hres = to_number(ctx, r, &nr); if(SUCCEEDED(hres)) - *ret = jsval_number(nl+nr); + ret = jsval_number(nl+nr); } }
jsval_release(r); jsval_release(l); - return hres; -} - -/* ECMA-262 3rd Edition 11.6.1 */ -static HRESULT interp_add(script_ctx_t *ctx) -{ - jsval_t l, r, ret; - HRESULT hres; - - r = stack_pop(ctx); - l = stack_pop(ctx); - - TRACE("%s + %s\n", debugstr_jsval(l), debugstr_jsval(r)); - - hres = add_eval(ctx, l, r, &ret); - jsval_release(l); - jsval_release(r); if(FAILED(hres)) return hres;