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