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