Module: wine Branch: master Commit: fecc2fcb5ef22e5b1f75010a3990a47f0169d53c URL: http://source.winehq.org/git/wine.git/?a=commit;h=fecc2fcb5ef22e5b1f75010a39...
Author: Jacek Caban jacek@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; }