Jacek Caban : jscript: Get rid of no longer needed expression eval entry.

Alexandre Julliard julliard at winehq.org
Fri Dec 16 11:22:53 CST 2011


Module: wine
Branch: master
Commit: fecc2fcb5ef22e5b1f75010a3990a47f0169d53c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=fecc2fcb5ef22e5b1f75010a3990a47f0169d53c

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Dec 16 11:44:03 2011 +0100

jscript: Get rid of no longer needed expression eval entry.

---

 dlls/jscript/compile.c |    1 -
 dlls/jscript/engine.c  |   15 +++++------
 dlls/jscript/engine.h  |    3 --
 dlls/jscript/parser.y  |   63 +-----------------------------------------------
 4 files changed, 8 insertions(+), 74 deletions(-)

diff --git a/dlls/jscript/compile.c b/dlls/jscript/compile.c
index daa1846..f2e2ead 100644
--- a/dlls/jscript/compile.c
+++ b/dlls/jscript/compile.c
@@ -829,7 +829,6 @@ static HRESULT compile_expression_noret(compiler_ctx_t *ctx, expression_t *expr,
     case EXPR_BXOR:
         return compile_binary_expression(ctx, (binary_expression_t*)expr, OP_xor);
     default:
-        assert(expr->eval != compiled_expression_eval);
         return compile_interp_fallback(ctx, expr);
     }
 
diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c
index 210cdf7..424659f 100644
--- a/dlls/jscript/engine.c
+++ b/dlls/jscript/engine.c
@@ -56,7 +56,7 @@ static inline HRESULT stat_eval(script_ctx_t *ctx, statement_t *stat, return_typ
 
 static inline HRESULT expr_eval(script_ctx_t *ctx, expression_t *expr, DWORD flags, jsexcept_t *ei, exprval_t *ret)
 {
-    return expr->eval(ctx, expr, flags, ei, ret);
+    return compiled_expression_eval(ctx, expr, flags, ei, ret);
 }
 
 static HRESULT stack_push(exec_ctx_t *ctx, VARIANT *v)
@@ -3168,12 +3168,11 @@ HRESULT compiled_expression_eval(script_ctx_t *ctx, expression_t *expr, DWORD fl
 
     TRACE("\n");
 
-    hres = compile_subscript(ctx->exec_ctx->parser, expr, !(flags & EXPR_NOVAL), &expr->instr_off);
-    if(FAILED(hres))
-        return hres;
-
-    if(expr->eval == compiled_expression_eval)
-        expr->eval = interp_expression_eval;
+    if(expr->instr_off == -1) {
+        hres = compile_subscript(ctx->exec_ctx->parser, expr, !(flags & EXPR_NOVAL), &expr->instr_off);
+        if(FAILED(hres))
+            return hres;
+    }
 
-    return expr->eval(ctx, expr, flags, ei, ret);
+    return interp_expression_eval(ctx, expr, flags, ei, ret);
 }
diff --git a/dlls/jscript/engine.h b/dlls/jscript/engine.h
index 6c1acad..323e9e3 100644
--- a/dlls/jscript/engine.h
+++ b/dlls/jscript/engine.h
@@ -469,11 +469,8 @@ typedef enum {
      EXPR_LITERAL
 } expression_type_t;
 
-typedef HRESULT (*expression_eval_t)(script_ctx_t*,expression_t*,DWORD,jsexcept_t*,exprval_t*);
-
 struct _expression_t {
     expression_type_t type;
-    expression_eval_t eval;
     unsigned instr_off;
 };
 
diff --git a/dlls/jscript/parser.y b/dlls/jscript/parser.y
index ab5ebff..1524713 100644
--- a/dlls/jscript/parser.y
+++ b/dlls/jscript/parser.y
@@ -1303,73 +1303,12 @@ static expression_t *new_function_expression(parser_ctx_t *ctx, const WCHAR *ide
     return &ret->expr;
 }
 
-static const expression_eval_t expression_eval_table[] = {
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval,
-   compiled_expression_eval
-};
-
 static void *new_expression(parser_ctx_t *ctx, expression_type_t type, size_t size)
 {
     expression_t *ret = parser_alloc(ctx, size ? size : sizeof(*ret));
 
     ret->type = type;
-    ret->eval = expression_eval_table[type];
+    ret->instr_off = -1;
 
     return ret;
 }




More information about the wine-cvs mailing list