From 6dfa4efbfbd9c114ef767962b94fb7900fab963f Mon Sep 17 00:00:00 2001 From: Robert Fancsik Date: Fri, 30 Nov 2018 07:45:48 +0100 Subject: Remove unnecessary check from VM_OC_NOT (#2622) This patch removes the ECMA_IS_VALUE_ERROR check from VM_OC_NOT, since the general toBoolean operation cannot throw an exception. JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu --- jerry-core/vm/opcodes.c | 14 -------------- jerry-core/vm/opcodes.h | 3 --- jerry-core/vm/vm.c | 10 ++-------- 3 files changed, 2 insertions(+), 25 deletions(-) diff --git a/jerry-core/vm/opcodes.c b/jerry-core/vm/opcodes.c index fc2eedd8..eb295ed8 100644 --- a/jerry-core/vm/opcodes.c +++ b/jerry-core/vm/opcodes.c @@ -67,20 +67,6 @@ vm_var_decl (vm_frame_ctx_t *frame_ctx_p, /**< interpreter context */ return ECMA_VALUE_EMPTY; } /* vm_var_decl */ -/** - * 'Logical NOT Operator' opcode handler. - * - * See also: ECMA-262 v5, 11.4.9 - * - * @return ecma value - * Returned value must be freed with ecma_free_value - */ -ecma_value_t -opfunc_logical_not (ecma_value_t left_value) /**< left value */ -{ - return ecma_make_boolean_value (!ecma_op_to_boolean (left_value)); -} /* opfunc_logical_not */ - /** * 'typeof' opcode handler. * diff --git a/jerry-core/vm/opcodes.h b/jerry-core/vm/opcodes.h index eafd5292..0df56ae5 100644 --- a/jerry-core/vm/opcodes.h +++ b/jerry-core/vm/opcodes.h @@ -78,9 +78,6 @@ opfunc_in (ecma_value_t left_value, ecma_value_t right_value); ecma_value_t opfunc_instanceof (ecma_value_t left_value, ecma_value_t right_value); -ecma_value_t -opfunc_logical_not (ecma_value_t left_value); - ecma_value_t opfunc_typeof (ecma_value_t left_value); diff --git a/jerry-core/vm/vm.c b/jerry-core/vm/vm.c index 3333eba8..7c2cc821 100644 --- a/jerry-core/vm/vm.c +++ b/jerry-core/vm/vm.c @@ -2080,14 +2080,8 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ } case VM_OC_NOT: { - result = opfunc_logical_not (left_value); - - if (ECMA_IS_VALUE_ERROR (result)) - { - goto error; - } - - *stack_top_p++ = result; + *stack_top_p++ = ecma_make_boolean_value (!ecma_op_to_boolean (left_value)); + JERRY_ASSERT (ecma_is_value_boolean (stack_top_p[-1])); goto free_left_value; } case VM_OC_BIT_NOT: -- cgit v1.2.3