Integer acceleration for basic arithmetic and comparison.
JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
@@ -44,6 +44,18 @@ ecma_value_t
|
||||
opfunc_equal_value (ecma_value_t left_value, /**< left value */
|
||||
ecma_value_t right_value) /**< right value */
|
||||
{
|
||||
JERRY_ASSERT (!ecma_is_value_error (left_value)
|
||||
&& !ecma_is_value_error (right_value));
|
||||
|
||||
if (ecma_are_values_integer_numbers (left_value, right_value))
|
||||
{
|
||||
if (left_value == right_value)
|
||||
{
|
||||
return ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE);
|
||||
}
|
||||
return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE);
|
||||
}
|
||||
|
||||
ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
|
||||
|
||||
ECMA_TRY_CATCH (compare_result,
|
||||
@@ -72,6 +84,18 @@ ecma_value_t
|
||||
opfunc_not_equal_value (ecma_value_t left_value, /**< left value */
|
||||
ecma_value_t right_value) /**< right value */
|
||||
{
|
||||
JERRY_ASSERT (!ecma_is_value_error (left_value)
|
||||
&& !ecma_is_value_error (right_value));
|
||||
|
||||
if (ecma_are_values_integer_numbers (left_value, right_value))
|
||||
{
|
||||
if (left_value == right_value)
|
||||
{
|
||||
return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE);
|
||||
}
|
||||
return ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE);
|
||||
}
|
||||
|
||||
ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
|
||||
|
||||
ECMA_TRY_CATCH (compare_result,
|
||||
@@ -102,6 +126,18 @@ ecma_value_t
|
||||
opfunc_equal_value_type (ecma_value_t left_value, /**< left value */
|
||||
ecma_value_t right_value) /**< right value */
|
||||
{
|
||||
JERRY_ASSERT (!ecma_is_value_error (left_value)
|
||||
&& !ecma_is_value_error (right_value));
|
||||
|
||||
if (ecma_are_values_integer_numbers (left_value, right_value))
|
||||
{
|
||||
if (left_value == right_value)
|
||||
{
|
||||
return ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE);
|
||||
}
|
||||
return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE);
|
||||
}
|
||||
|
||||
bool is_equal = ecma_op_strict_equality_compare (left_value, right_value);
|
||||
|
||||
return ecma_make_simple_value (is_equal ? ECMA_SIMPLE_VALUE_TRUE
|
||||
@@ -120,6 +156,18 @@ ecma_value_t
|
||||
opfunc_not_equal_value_type (ecma_value_t left_value, /**< left value */
|
||||
ecma_value_t right_value) /**< right value */
|
||||
{
|
||||
JERRY_ASSERT (!ecma_is_value_error (left_value)
|
||||
&& !ecma_is_value_error (right_value));
|
||||
|
||||
if (ecma_are_values_integer_numbers (left_value, right_value))
|
||||
{
|
||||
if (left_value == right_value)
|
||||
{
|
||||
return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE);
|
||||
}
|
||||
return ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE);
|
||||
}
|
||||
|
||||
bool is_equal = ecma_op_strict_equality_compare (left_value, right_value);
|
||||
|
||||
return ecma_make_simple_value (is_equal ? ECMA_SIMPLE_VALUE_FALSE
|
||||
|
||||
Reference in New Issue
Block a user