Improve equal operations.
The implementation is simplified and optimized resulting the removal a large amount of code. JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
+8
-25
@@ -19,6 +19,7 @@
|
||||
#include "ecma-alloc.h"
|
||||
#include "ecma-array-object.h"
|
||||
#include "ecma-builtins.h"
|
||||
#include "ecma-comparison.h"
|
||||
#include "ecma-conversion.h"
|
||||
#include "ecma-exceptions.h"
|
||||
#include "ecma-function-object.h"
|
||||
@@ -1483,17 +1484,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
||||
{
|
||||
JERRY_ASSERT (stack_top_p > frame_ctx_p->registers_p + register_end);
|
||||
|
||||
last_completion_value = opfunc_equal_value_type (left_value,
|
||||
stack_top_p[-1]);
|
||||
|
||||
if (ecma_is_value_error (last_completion_value))
|
||||
{
|
||||
goto error;
|
||||
}
|
||||
|
||||
result = last_completion_value;
|
||||
|
||||
if (result == ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE))
|
||||
if (ecma_op_strict_equality_compare (left_value, stack_top_p[-1]))
|
||||
{
|
||||
byte_code_p = byte_code_start_p + branch_offset;
|
||||
ecma_free_value (*--stack_top_p);
|
||||
@@ -1726,26 +1717,18 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
||||
}
|
||||
case VM_OC_STRICT_EQUAL:
|
||||
{
|
||||
last_completion_value = opfunc_equal_value_type (left_value, right_value);
|
||||
bool is_equal = ecma_op_strict_equality_compare (left_value, right_value);
|
||||
|
||||
if (ecma_is_value_error (last_completion_value))
|
||||
{
|
||||
goto error;
|
||||
}
|
||||
|
||||
result = last_completion_value;
|
||||
result = ecma_make_simple_value (is_equal ? ECMA_SIMPLE_VALUE_TRUE
|
||||
: ECMA_SIMPLE_VALUE_FALSE);
|
||||
break;
|
||||
}
|
||||
case VM_OC_STRICT_NOT_EQUAL:
|
||||
{
|
||||
last_completion_value = opfunc_not_equal_value_type (left_value, right_value);
|
||||
bool is_equal = ecma_op_strict_equality_compare (left_value, right_value);
|
||||
|
||||
if (ecma_is_value_error (last_completion_value))
|
||||
{
|
||||
goto error;
|
||||
}
|
||||
|
||||
result = last_completion_value;
|
||||
result = ecma_make_simple_value (is_equal ? ECMA_SIMPLE_VALUE_FALSE
|
||||
: ECMA_SIMPLE_VALUE_TRUE);
|
||||
break;
|
||||
}
|
||||
case VM_OC_BIT_OR:
|
||||
|
||||
Reference in New Issue
Block a user