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

oldstable
Jacek Caban 2011-12-16 11:44:03 +01:00 committed by Alexandre Julliard
parent 5e6faaea12
commit fecc2fcb5e
4 changed files with 8 additions and 74 deletions

View File

@ -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);
}

View File

@ -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->instr_off == -1) {
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;
return expr->eval(ctx, expr, flags, ei, ret);
return interp_expression_eval(ctx, expr, flags, ei, ret);
}

View File

@ -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;
};

View File

@ -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;
}