Jacek Caban : jscript: Inline add_eval implementation.
Alexandre Julliard
julliard at winehq.org
Thu Jun 4 16:08:02 CDT 2020
Module: wine
Branch: master
Commit: 0841b60b8d7464724eb52d0fab8e2c0321a2489c
URL: https://source.winehq.org/git/wine.git/?a=commit;h=0841b60b8d7464724eb52d0fab8e2c0321a2489c
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Jun 4 17:28:03 2020 +0200
jscript: Inline add_eval implementation.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;
More information about the wine-cvs
mailing list