Introduce integer ecma-value representation to reduce the double allocations.
JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
@@ -62,14 +62,13 @@ ecma_builtin_array_prototype_helper_set_length (ecma_object_t *object, /**< obje
|
||||
ecma_value_t ret_value;
|
||||
ecma_string_t *magic_string_length_p = ecma_get_magic_string (LIT_MAGIC_STRING_LENGTH);
|
||||
|
||||
ecma_number_t *len_p = ecma_alloc_number ();
|
||||
*len_p = length;
|
||||
|
||||
ecma_value_t length_value = ecma_make_number_value (length);
|
||||
ret_value = ecma_op_object_put (object,
|
||||
magic_string_length_p,
|
||||
ecma_make_number_value (len_p),
|
||||
length_value,
|
||||
true),
|
||||
ecma_dealloc_number (len_p);
|
||||
|
||||
ecma_free_value (length_value);
|
||||
ecma_deref_ecma_string (magic_string_length_p);
|
||||
|
||||
return ret_value;
|
||||
@@ -587,10 +586,7 @@ ecma_builtin_array_prototype_object_push (ecma_value_t this_arg, /**< this argum
|
||||
ecma_builtin_array_prototype_helper_set_length (obj_p, n),
|
||||
ret_value);
|
||||
|
||||
ecma_number_t *ret_num_p = ecma_alloc_number ();
|
||||
*ret_num_p = n;
|
||||
|
||||
ret_value = ecma_make_number_value (ret_num_p);
|
||||
ret_value = ecma_make_number_value (n);
|
||||
|
||||
ECMA_FINALIZE (set_length_value)
|
||||
}
|
||||
@@ -952,7 +948,7 @@ ecma_builtin_array_prototype_object_sort_compare_helper (ecma_value_t j, /**< le
|
||||
* sort to the end of the result, followed by non-existent property values.
|
||||
*/
|
||||
ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
|
||||
ecma_number_t *result_p = ecma_alloc_number ();
|
||||
ecma_number_t result = ECMA_NUMBER_ZERO;
|
||||
|
||||
bool j_is_undef = ecma_is_value_undefined (j);
|
||||
bool k_is_undef = ecma_is_value_undefined (k);
|
||||
@@ -961,18 +957,18 @@ ecma_builtin_array_prototype_object_sort_compare_helper (ecma_value_t j, /**< le
|
||||
{
|
||||
if (k_is_undef)
|
||||
{
|
||||
*result_p = ECMA_NUMBER_ZERO;
|
||||
result = ECMA_NUMBER_ZERO;
|
||||
}
|
||||
else
|
||||
{
|
||||
*result_p = ECMA_NUMBER_ONE;
|
||||
result = ECMA_NUMBER_ONE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (k_is_undef)
|
||||
{
|
||||
*result_p = ECMA_NUMBER_MINUS_ONE;
|
||||
result = ECMA_NUMBER_MINUS_ONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -986,15 +982,15 @@ ecma_builtin_array_prototype_object_sort_compare_helper (ecma_value_t j, /**< le
|
||||
|
||||
if (ecma_compare_ecma_strings_relational (j_str_p, k_str_p))
|
||||
{
|
||||
*result_p = ECMA_NUMBER_MINUS_ONE;
|
||||
result = ECMA_NUMBER_MINUS_ONE;
|
||||
}
|
||||
else if (!ecma_compare_ecma_strings (j_str_p, k_str_p))
|
||||
{
|
||||
*result_p = ECMA_NUMBER_ONE;
|
||||
result = ECMA_NUMBER_ONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
*result_p = ECMA_NUMBER_ZERO;
|
||||
result = ECMA_NUMBER_ZERO;
|
||||
}
|
||||
|
||||
ECMA_FINALIZE (k_value);
|
||||
@@ -1021,12 +1017,12 @@ ecma_builtin_array_prototype_object_sort_compare_helper (ecma_value_t j, /**< le
|
||||
if (!ecma_is_value_number (call_value))
|
||||
{
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (ret_num, call_value, ret_value);
|
||||
*result_p = ret_num;
|
||||
result = ret_num;
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (ret_num);
|
||||
}
|
||||
else
|
||||
{
|
||||
*result_p = *ecma_get_number_from_value (call_value);
|
||||
result = ecma_get_number_from_value (call_value);
|
||||
}
|
||||
|
||||
ECMA_FINALIZE (call_value);
|
||||
@@ -1036,11 +1032,7 @@ ecma_builtin_array_prototype_object_sort_compare_helper (ecma_value_t j, /**< le
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ret_value = ecma_make_number_value (result_p);
|
||||
}
|
||||
else
|
||||
{
|
||||
ecma_dealloc_number (result_p);
|
||||
ret_value = ecma_make_number_value (result);
|
||||
}
|
||||
|
||||
return ret_value;
|
||||
@@ -1080,7 +1072,7 @@ ecma_builtin_array_prototype_object_array_to_heap_helper (ecma_value_t array[],
|
||||
JERRY_ASSERT (ecma_is_value_number (child_compare_value));
|
||||
|
||||
/* Use the child that is greater. */
|
||||
if (*ecma_get_number_from_value (child_compare_value) < ECMA_NUMBER_ZERO)
|
||||
if (ecma_get_number_from_value (child_compare_value) < ECMA_NUMBER_ZERO)
|
||||
{
|
||||
child++;
|
||||
}
|
||||
@@ -1100,7 +1092,7 @@ ecma_builtin_array_prototype_object_array_to_heap_helper (ecma_value_t array[],
|
||||
ret_value);
|
||||
JERRY_ASSERT (ecma_is_value_number (swap_compare_value));
|
||||
|
||||
if (*ecma_get_number_from_value (swap_compare_value) <= ECMA_NUMBER_ZERO)
|
||||
if (ecma_get_number_from_value (swap_compare_value) <= ECMA_NUMBER_ZERO)
|
||||
{
|
||||
/* Break from loop if current child is less than swap (tree top) */
|
||||
should_break = true;
|
||||
@@ -1713,9 +1705,7 @@ ecma_builtin_array_prototype_object_unshift (ecma_value_t this_arg, /**< this ar
|
||||
ECMA_TRY_CATCH (set_length_value,
|
||||
ecma_builtin_array_prototype_helper_set_length (obj_p, new_len),
|
||||
ret_value);
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = new_len;
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (new_len);
|
||||
|
||||
ECMA_FINALIZE (set_length_value);
|
||||
}
|
||||
@@ -1765,9 +1755,7 @@ ecma_builtin_array_prototype_object_index_of (ecma_value_t this_arg, /**< this a
|
||||
/* 4. */
|
||||
if (len == 0)
|
||||
{
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = ECMA_NUMBER_MINUS_ONE;
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_integer_value (-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1808,9 +1796,7 @@ ecma_builtin_array_prototype_object_index_of (ecma_value_t this_arg, /**< this a
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = found_index;
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (found_index);
|
||||
}
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_from_idx);
|
||||
@@ -1862,13 +1848,12 @@ ecma_builtin_array_prototype_object_last_index_of (ecma_value_t this_arg, /**< t
|
||||
/* 3. */
|
||||
uint32_t len = ecma_number_to_uint32 (len_number);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = ECMA_NUMBER_MINUS_ONE;
|
||||
ecma_number_t num = ECMA_NUMBER_MINUS_ONE;
|
||||
|
||||
/* 4. */
|
||||
if (len == 0)
|
||||
{
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (num);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1937,7 +1922,7 @@ ecma_builtin_array_prototype_object_last_index_of (ecma_value_t this_arg, /**< t
|
||||
* for an underflow instead. This is safe, because from_idx will always start in [0, len - 1],
|
||||
* and len is in [0, UINT_MAX], so from_idx >= len means we've had an underflow, and should stop.
|
||||
*/
|
||||
for (; from_idx < len && *num_p < 0 && ecma_is_value_empty (ret_value); from_idx--)
|
||||
for (; from_idx < len && num < 0 && ecma_is_value_empty (ret_value); from_idx--)
|
||||
{
|
||||
/* 8.a */
|
||||
ecma_string_t *idx_str_p = ecma_new_ecma_string_from_uint32 (from_idx);
|
||||
@@ -1951,7 +1936,7 @@ ecma_builtin_array_prototype_object_last_index_of (ecma_value_t this_arg, /**< t
|
||||
/* 8.b.ii */
|
||||
if (ecma_op_strict_equality_compare (search_element, get_value))
|
||||
{
|
||||
*num_p = ((ecma_number_t) from_idx);
|
||||
num = ((ecma_number_t) from_idx);
|
||||
}
|
||||
|
||||
ECMA_FINALIZE (get_value);
|
||||
@@ -1962,11 +1947,7 @@ ecma_builtin_array_prototype_object_last_index_of (ecma_value_t this_arg, /**< t
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
}
|
||||
else
|
||||
{
|
||||
ecma_dealloc_number (num_p);
|
||||
ret_value = ecma_make_number_value (num);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2020,7 +2001,6 @@ ecma_builtin_array_prototype_object_every (ecma_value_t this_arg, /**< this argu
|
||||
else
|
||||
{
|
||||
ecma_value_t current_index;
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
ecma_object_t *func_object_p;
|
||||
|
||||
/* We already checked that arg1 is callable, so it will always coerce to an object. */
|
||||
@@ -2041,8 +2021,7 @@ ecma_builtin_array_prototype_object_every (ecma_value_t this_arg, /**< this argu
|
||||
/* 7.c.i */
|
||||
ECMA_TRY_CATCH (get_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||
|
||||
*num_p = ((ecma_number_t) index);
|
||||
current_index = ecma_make_number_value (num_p);
|
||||
current_index = ecma_make_uint32_value (index);
|
||||
|
||||
ecma_value_t call_args[] = { get_value, current_index, obj_this };
|
||||
/* 7.c.ii */
|
||||
@@ -2062,7 +2041,6 @@ ecma_builtin_array_prototype_object_every (ecma_value_t this_arg, /**< this argu
|
||||
}
|
||||
|
||||
ecma_free_value (to_object_comp);
|
||||
ecma_dealloc_number (num_p);
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
@@ -2121,7 +2099,6 @@ ecma_builtin_array_prototype_object_some (ecma_value_t this_arg, /**< this argum
|
||||
else
|
||||
{
|
||||
ecma_value_t current_index;
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
ecma_object_t *func_object_p;
|
||||
|
||||
/* We already checked that arg1 is callable, so it will always coerce to an object. */
|
||||
@@ -2142,8 +2119,7 @@ ecma_builtin_array_prototype_object_some (ecma_value_t this_arg, /**< this argum
|
||||
/* 7.c.i */
|
||||
ECMA_TRY_CATCH (get_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||
|
||||
*num_p = ((ecma_number_t) index);
|
||||
current_index = ecma_make_number_value (num_p);
|
||||
current_index = ecma_make_uint32_value (index);
|
||||
|
||||
ecma_value_t call_args[] = { get_value, current_index, obj_this };
|
||||
/* 7.c.ii */
|
||||
@@ -2163,7 +2139,6 @@ ecma_builtin_array_prototype_object_some (ecma_value_t this_arg, /**< this argum
|
||||
}
|
||||
|
||||
ecma_free_value (to_object_comp);
|
||||
ecma_dealloc_number (num_p);
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
@@ -2221,7 +2196,6 @@ ecma_builtin_array_prototype_object_for_each (ecma_value_t this_arg, /**< this a
|
||||
else
|
||||
{
|
||||
ecma_value_t current_index;
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
ecma_object_t *func_object_p;
|
||||
|
||||
/* We already checked that arg1 is callable, so it will always coerce to an object. */
|
||||
@@ -2242,8 +2216,7 @@ ecma_builtin_array_prototype_object_for_each (ecma_value_t this_arg, /**< this a
|
||||
/* 7.c.i */
|
||||
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||
|
||||
*num_p = ((ecma_number_t) index);
|
||||
current_index = ecma_make_number_value (num_p);
|
||||
current_index = ecma_make_uint32_value (index);
|
||||
|
||||
/* 7.c.ii */
|
||||
ecma_value_t call_args[] = {current_value, current_index, obj_this};
|
||||
@@ -2263,7 +2236,6 @@ ecma_builtin_array_prototype_object_for_each (ecma_value_t this_arg, /**< this a
|
||||
}
|
||||
|
||||
ecma_free_value (to_object_comp);
|
||||
ecma_dealloc_number (num_p);
|
||||
}
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (len_number);
|
||||
@@ -2315,7 +2287,6 @@ ecma_builtin_array_prototype_object_map (ecma_value_t this_arg, /**< this argume
|
||||
}
|
||||
else
|
||||
{
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
ecma_object_t *func_object_p;
|
||||
JERRY_ASSERT (ecma_is_value_object (arg1));
|
||||
func_object_p = ecma_get_object_from_value (arg1);
|
||||
@@ -2340,8 +2311,7 @@ ecma_builtin_array_prototype_object_map (ecma_value_t this_arg, /**< this argume
|
||||
/* 8.c.i */
|
||||
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||
/* 8.c.ii */
|
||||
*num_p = ((ecma_number_t) index);
|
||||
current_index = ecma_make_number_value (num_p);
|
||||
current_index = ecma_make_uint32_value (index);
|
||||
ecma_value_t call_args[] = {current_value, current_index, obj_this};
|
||||
|
||||
ECMA_TRY_CATCH (mapped_value, ecma_op_function_call (func_object_p, arg2, call_args, 3), ret_value);
|
||||
@@ -2376,8 +2346,6 @@ ecma_builtin_array_prototype_object_map (ecma_value_t this_arg, /**< this argume
|
||||
{
|
||||
ecma_free_value (new_array);
|
||||
}
|
||||
|
||||
ecma_dealloc_number (num_p);
|
||||
}
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (len_number);
|
||||
@@ -2430,7 +2398,6 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t this_arg, /**< this arg
|
||||
else
|
||||
{
|
||||
ecma_value_t current_index;
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
ecma_object_t *func_object_p;
|
||||
|
||||
/* 6. */
|
||||
@@ -2457,8 +2424,7 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t this_arg, /**< this arg
|
||||
/* 9.c.i */
|
||||
ECMA_TRY_CATCH (get_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||
|
||||
*num_p = ((ecma_number_t) index);
|
||||
current_index = ecma_make_number_value (num_p);
|
||||
current_index = ecma_make_uint32_value (index);
|
||||
|
||||
ecma_value_t call_args[] = { get_value, current_index, obj_this };
|
||||
/* 9.c.ii */
|
||||
@@ -2490,8 +2456,6 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t this_arg, /**< this arg
|
||||
ecma_deref_ecma_string (index_str_p);
|
||||
}
|
||||
|
||||
ecma_dealloc_number (num_p);
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
/* 10. */
|
||||
@@ -2554,7 +2518,6 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg
|
||||
}
|
||||
else
|
||||
{
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
ecma_object_t *func_object_p;
|
||||
|
||||
JERRY_ASSERT (ecma_is_value_object (callbackfn));
|
||||
@@ -2617,8 +2580,7 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg
|
||||
/* 9.c.i */
|
||||
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||
/* 9.c.ii */
|
||||
*num_p = ((ecma_number_t) index);
|
||||
current_index = ecma_make_number_value (num_p);
|
||||
current_index = ecma_make_uint32_value (index);
|
||||
ecma_value_t call_args[] = {accumulator, current_value, current_index, obj_this};
|
||||
|
||||
ECMA_TRY_CATCH (call_value,
|
||||
@@ -2645,7 +2607,6 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg
|
||||
}
|
||||
|
||||
ecma_free_value (accumulator);
|
||||
ecma_dealloc_number (num_p);
|
||||
}
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (len_number);
|
||||
@@ -2711,7 +2672,6 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th
|
||||
}
|
||||
else
|
||||
{
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
ecma_value_t accumulator = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED);
|
||||
|
||||
/* 6. */
|
||||
@@ -2763,8 +2723,7 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th
|
||||
/* 9.c.i */
|
||||
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||
/* 9.c.ii */
|
||||
*num_p = ((ecma_number_t) (uint32_t) index);
|
||||
current_index = ecma_make_number_value (num_p);
|
||||
current_index = ecma_make_uint32_value ((uint32_t) index);
|
||||
ecma_value_t call_args[] = {accumulator, current_value, current_index, obj_this};
|
||||
|
||||
ECMA_TRY_CATCH (call_value,
|
||||
@@ -2790,7 +2749,6 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th
|
||||
}
|
||||
|
||||
ecma_free_value (accumulator);
|
||||
ecma_dealloc_number (num_p);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -62,16 +62,16 @@ ecma_builtin_date_prototype_to_string (ecma_value_t this_arg) /**< this argument
|
||||
ecma_date_get_primitive_value (this_arg),
|
||||
ret_value);
|
||||
|
||||
ecma_number_t *prim_num_p = ecma_get_number_from_value (prim_value);
|
||||
ecma_number_t prim_num = ecma_get_number_from_value (prim_value);
|
||||
|
||||
if (ecma_number_is_nan (*prim_num_p))
|
||||
if (ecma_number_is_nan (prim_num))
|
||||
{
|
||||
ecma_string_t *magic_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_INVALID_DATE_UL);
|
||||
ret_value = ecma_make_string_value (magic_str_p);
|
||||
}
|
||||
else
|
||||
{
|
||||
ret_value = ecma_date_value_to_string (*prim_num_p);
|
||||
ret_value = ecma_date_value_to_string (prim_num);
|
||||
}
|
||||
|
||||
ECMA_FINALIZE (prim_value);
|
||||
@@ -257,10 +257,7 @@ ecma_builtin_date_prototype_get_time (ecma_value_t this_arg) /**< this argument
|
||||
prim_value_num_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_number_t,
|
||||
ecma_get_internal_property_value (prim_prop_p));
|
||||
|
||||
ecma_number_t *ret_num_p = ecma_alloc_number ();
|
||||
*ret_num_p = *prim_value_num_p;
|
||||
|
||||
return ecma_make_number_value (ret_num_p);
|
||||
return ecma_make_number_value (*prim_value_num_p);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -293,9 +290,9 @@ ecma_builtin_date_prototype_get_ ## _routine_name (ecma_value_t this_arg) /**< t
|
||||
\
|
||||
/* 1. */ \
|
||||
ECMA_TRY_CATCH (value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); \
|
||||
ecma_number_t *this_num_p = ecma_get_number_from_value (value); \
|
||||
ecma_number_t this_num = ecma_get_number_from_value (value); \
|
||||
/* 2. */ \
|
||||
if (ecma_number_is_nan (*this_num_p)) \
|
||||
if (ecma_number_is_nan (this_num)) \
|
||||
{ \
|
||||
ecma_string_t *nan_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_NAN); \
|
||||
ret_value = ecma_make_string_value (nan_str_p); \
|
||||
@@ -303,9 +300,8 @@ ecma_builtin_date_prototype_get_ ## _routine_name (ecma_value_t this_arg) /**< t
|
||||
else \
|
||||
{ \
|
||||
/* 3. */ \
|
||||
ecma_number_t *ret_num_p = ecma_alloc_number (); \
|
||||
*ret_num_p = _getter_name (DEFINE_GETTER_ARGUMENT_ ## _timezone (*this_num_p)); \
|
||||
ret_value = ecma_make_number_value (ret_num_p); \
|
||||
ecma_number_t ret_num = _getter_name (DEFINE_GETTER_ARGUMENT_ ## _timezone (this_num)); \
|
||||
ret_value = ecma_make_number_value (ret_num); \
|
||||
} \
|
||||
ECMA_FINALIZE (value); \
|
||||
\
|
||||
@@ -358,8 +354,7 @@ ecma_builtin_date_prototype_set_time (ecma_value_t this_arg, /**< this argument
|
||||
{
|
||||
/* 1. */
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (t, time, ret_value);
|
||||
ecma_number_t *value_p = ecma_alloc_number ();
|
||||
*value_p = ecma_date_time_clip (t);
|
||||
ecma_number_t value = ecma_date_time_clip (t);
|
||||
|
||||
/* 2. */
|
||||
ecma_object_t *obj_p = ecma_get_object_from_value (this_arg);
|
||||
@@ -369,10 +364,10 @@ ecma_builtin_date_prototype_set_time (ecma_value_t this_arg, /**< this argument
|
||||
|
||||
ecma_number_t *prim_value_num_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_number_t,
|
||||
ecma_get_internal_property_value (prim_prop_p));
|
||||
*prim_value_num_p = *value_p;
|
||||
*prim_value_num_p = value;
|
||||
|
||||
/* 3. */
|
||||
ret_value = ecma_make_number_value (value_p);
|
||||
ret_value = ecma_make_number_value (value);
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (t);
|
||||
}
|
||||
|
||||
@@ -396,7 +391,7 @@ ecma_builtin_date_prototype_set_milliseconds (ecma_value_t this_arg, /**< this a
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = ecma_date_local_time (*ecma_get_number_from_value (this_time_value));
|
||||
ecma_number_t t = ecma_date_local_time (ecma_get_number_from_value (this_time_value));
|
||||
|
||||
/* 2. */
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (milli, ms, ret_value);
|
||||
@@ -433,7 +428,7 @@ ecma_builtin_date_prototype_set_utc_milliseconds (ecma_value_t this_arg, /**< th
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = *ecma_get_number_from_value (this_time_value);
|
||||
ecma_number_t t = ecma_get_number_from_value (this_time_value);
|
||||
|
||||
/* 2. */
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (milli, ms, ret_value);
|
||||
@@ -471,7 +466,7 @@ ecma_builtin_date_prototype_set_seconds (ecma_value_t this_arg, /**< this argume
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = ecma_date_local_time (*ecma_get_number_from_value (this_time_value));
|
||||
ecma_number_t t = ecma_date_local_time (ecma_get_number_from_value (this_time_value));
|
||||
|
||||
/* 2. */
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (s, sec, ret_value);
|
||||
@@ -516,7 +511,7 @@ ecma_builtin_date_prototype_set_utc_seconds (ecma_value_t this_arg, /**< this ar
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = *ecma_get_number_from_value (this_time_value);
|
||||
ecma_number_t t = ecma_get_number_from_value (this_time_value);
|
||||
|
||||
/* 2. */
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (s, sec, ret_value);
|
||||
@@ -561,7 +556,7 @@ ecma_builtin_date_prototype_set_minutes (ecma_value_t this_arg, /**< this argume
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = ecma_date_local_time (*ecma_get_number_from_value (this_time_value));
|
||||
ecma_number_t t = ecma_date_local_time (ecma_get_number_from_value (this_time_value));
|
||||
|
||||
/* 2. */
|
||||
ecma_number_t m = ecma_number_make_nan ();
|
||||
@@ -622,7 +617,7 @@ ecma_builtin_date_prototype_set_utc_minutes (ecma_value_t this_arg, /**< this ar
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = *ecma_get_number_from_value (this_time_value);
|
||||
ecma_number_t t = ecma_get_number_from_value (this_time_value);
|
||||
|
||||
/* 2. */
|
||||
ecma_number_t m = ecma_number_make_nan ();
|
||||
@@ -683,7 +678,7 @@ ecma_builtin_date_prototype_set_hours (ecma_value_t this_arg, /**< this argument
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = ecma_date_local_time (*ecma_get_number_from_value (this_time_value));
|
||||
ecma_number_t t = ecma_date_local_time (ecma_get_number_from_value (this_time_value));
|
||||
|
||||
/* 2. */
|
||||
ecma_number_t h = ecma_number_make_nan ();
|
||||
@@ -752,7 +747,7 @@ ecma_builtin_date_prototype_set_utc_hours (ecma_value_t this_arg, /**< this argu
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = *ecma_get_number_from_value (this_time_value);
|
||||
ecma_number_t t = ecma_get_number_from_value (this_time_value);
|
||||
|
||||
/* 2. */
|
||||
ecma_number_t h = ecma_number_make_nan ();
|
||||
@@ -820,7 +815,7 @@ ecma_builtin_date_prototype_set_date (ecma_value_t this_arg, /**< this argument
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = ecma_date_local_time (*ecma_get_number_from_value (this_time_value));
|
||||
ecma_number_t t = ecma_date_local_time (ecma_get_number_from_value (this_time_value));
|
||||
|
||||
/* 2. */
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (dt, date, ret_value);
|
||||
@@ -856,7 +851,7 @@ ecma_builtin_date_prototype_set_utc_date (ecma_value_t this_arg, /**< this argum
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = *ecma_get_number_from_value (this_time_value);
|
||||
ecma_number_t t = ecma_get_number_from_value (this_time_value);
|
||||
|
||||
/* 2. */
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (dt, date, ret_value);
|
||||
@@ -893,7 +888,7 @@ ecma_builtin_date_prototype_set_month (ecma_value_t this_arg, /**< this argument
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = ecma_date_local_time (*ecma_get_number_from_value (this_time_value));
|
||||
ecma_number_t t = ecma_date_local_time (ecma_get_number_from_value (this_time_value));
|
||||
|
||||
/* 2. */
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (m, month, ret_value);
|
||||
@@ -937,7 +932,7 @@ ecma_builtin_date_prototype_set_utc_month (ecma_value_t this_arg, /**< this argu
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = *ecma_get_number_from_value (this_time_value);
|
||||
ecma_number_t t = ecma_get_number_from_value (this_time_value);
|
||||
|
||||
/* 2. */
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (m, month, ret_value);
|
||||
@@ -981,7 +976,7 @@ ecma_builtin_date_prototype_set_full_year (ecma_value_t this_arg, /**< this argu
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = ecma_date_local_time (*ecma_get_number_from_value (this_time_value));
|
||||
ecma_number_t t = ecma_date_local_time (ecma_get_number_from_value (this_time_value));
|
||||
if (ecma_number_is_nan (t))
|
||||
{
|
||||
t = ECMA_NUMBER_ZERO;
|
||||
@@ -1045,7 +1040,7 @@ ecma_builtin_date_prototype_set_utc_full_year (ecma_value_t this_arg, /**< this
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = *ecma_get_number_from_value (this_time_value);
|
||||
ecma_number_t t = ecma_get_number_from_value (this_time_value);
|
||||
if (ecma_number_is_nan (t))
|
||||
{
|
||||
t = ECMA_NUMBER_ZERO;
|
||||
@@ -1109,16 +1104,16 @@ ecma_builtin_date_prototype_to_utc_string (ecma_value_t this_arg) /**< this argu
|
||||
ecma_date_get_primitive_value (this_arg),
|
||||
ret_value);
|
||||
|
||||
ecma_number_t *prim_num_p = ecma_get_number_from_value (prim_value);
|
||||
ecma_number_t prim_num = ecma_get_number_from_value (prim_value);
|
||||
|
||||
if (ecma_number_is_nan (*prim_num_p))
|
||||
if (ecma_number_is_nan (prim_num))
|
||||
{
|
||||
ecma_string_t *magic_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_INVALID_DATE_UL);
|
||||
ret_value = ecma_make_string_value (magic_str_p);
|
||||
}
|
||||
else
|
||||
{
|
||||
ret_value = ecma_date_value_to_utc_string (*prim_num_p);
|
||||
ret_value = ecma_date_value_to_utc_string (prim_num);
|
||||
}
|
||||
|
||||
ECMA_FINALIZE (prim_value);
|
||||
@@ -1144,15 +1139,15 @@ ecma_builtin_date_prototype_to_iso_string (ecma_value_t this_arg) /**< this argu
|
||||
ecma_date_get_primitive_value (this_arg),
|
||||
ret_value);
|
||||
|
||||
ecma_number_t *prim_num_p = ecma_get_number_from_value (prim_value);
|
||||
ecma_number_t prim_num = ecma_get_number_from_value (prim_value);
|
||||
|
||||
if (ecma_number_is_nan (*prim_num_p) || ecma_number_is_infinity (*prim_num_p))
|
||||
if (ecma_number_is_nan (prim_num) || ecma_number_is_infinity (prim_num))
|
||||
{
|
||||
ret_value = ecma_raise_range_error (ECMA_ERR_MSG (""));
|
||||
}
|
||||
else
|
||||
{
|
||||
ret_value = ecma_date_value_to_iso_string (*prim_num_p);
|
||||
ret_value = ecma_date_value_to_iso_string (prim_num);
|
||||
}
|
||||
|
||||
ECMA_FINALIZE (prim_value);
|
||||
@@ -1188,9 +1183,9 @@ ecma_builtin_date_prototype_to_json (ecma_value_t this_arg, /**< this argument *
|
||||
/* 3. */
|
||||
if (ecma_is_value_number (tv))
|
||||
{
|
||||
ecma_number_t num_value_p = *ecma_get_number_from_value (tv);
|
||||
ecma_number_t num_value = ecma_get_number_from_value (tv);
|
||||
|
||||
if (ecma_number_is_nan (num_value_p) || ecma_number_is_infinity (num_value_p))
|
||||
if (ecma_number_is_nan (num_value) || ecma_number_is_infinity (num_value))
|
||||
{
|
||||
ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_NULL);
|
||||
}
|
||||
@@ -1247,9 +1242,9 @@ ecma_builtin_date_prototype_get_year (ecma_value_t this_arg) /**< this argument
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t *this_num_p = ecma_get_number_from_value (value);
|
||||
ecma_number_t this_num = ecma_get_number_from_value (value);
|
||||
/* 2. */
|
||||
if (ecma_number_is_nan (*this_num_p))
|
||||
if (ecma_number_is_nan (this_num))
|
||||
{
|
||||
ecma_string_t *nan_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_NAN);
|
||||
ret_value = ecma_make_string_value (nan_str_p);
|
||||
@@ -1257,9 +1252,8 @@ ecma_builtin_date_prototype_get_year (ecma_value_t this_arg) /**< this argument
|
||||
else
|
||||
{
|
||||
/* 3. */
|
||||
ecma_number_t *ret_num_p = ecma_alloc_number ();
|
||||
*ret_num_p = ecma_date_year_from_time (ecma_date_local_time (*this_num_p)) - 1900;
|
||||
ret_value = ecma_make_number_value (ret_num_p);
|
||||
ecma_number_t ret_num = ecma_date_year_from_time (ecma_date_local_time (this_num)) - 1900;
|
||||
ret_value = ecma_make_number_value (ret_num);
|
||||
}
|
||||
ECMA_FINALIZE (value);
|
||||
|
||||
@@ -1283,7 +1277,7 @@ ecma_builtin_date_prototype_set_year (ecma_value_t this_arg, /**< this argument
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value);
|
||||
ecma_number_t t = ecma_date_local_time (*ecma_get_number_from_value (this_time_value));
|
||||
ecma_number_t t = ecma_date_local_time (ecma_get_number_from_value (this_time_value));
|
||||
if (ecma_number_is_nan (t))
|
||||
{
|
||||
t = ECMA_NUMBER_ZERO;
|
||||
|
||||
@@ -81,14 +81,13 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t
|
||||
ecma_length_t args_len) /**< number of arguments */
|
||||
{
|
||||
ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
|
||||
ecma_number_t *prim_value_p = ecma_alloc_number ();
|
||||
*prim_value_p = ecma_number_make_nan ();
|
||||
ecma_number_t prim_value = ecma_number_make_nan ();
|
||||
|
||||
ECMA_TRY_CATCH (year_value, ecma_op_to_number (args[0]), ret_value);
|
||||
ECMA_TRY_CATCH (month_value, ecma_op_to_number (args[1]), ret_value);
|
||||
|
||||
ecma_number_t year = *ecma_get_number_from_value (year_value);
|
||||
ecma_number_t month = *ecma_get_number_from_value (month_value);
|
||||
ecma_number_t year = ecma_get_number_from_value (year_value);
|
||||
ecma_number_t month = ecma_get_number_from_value (month_value);
|
||||
ecma_number_t date = ECMA_NUMBER_ONE;
|
||||
ecma_number_t hours = ECMA_NUMBER_ZERO;
|
||||
ecma_number_t minutes = ECMA_NUMBER_ZERO;
|
||||
@@ -99,7 +98,7 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t
|
||||
if (args_len >= 3 && ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ECMA_TRY_CATCH (date_value, ecma_op_to_number (args[2]), ret_value);
|
||||
date = *ecma_get_number_from_value (date_value);
|
||||
date = ecma_get_number_from_value (date_value);
|
||||
ECMA_FINALIZE (date_value);
|
||||
}
|
||||
|
||||
@@ -107,7 +106,7 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t
|
||||
if (args_len >= 4 && ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ECMA_TRY_CATCH (hours_value, ecma_op_to_number (args[3]), ret_value);
|
||||
hours = *ecma_get_number_from_value (hours_value);
|
||||
hours = ecma_get_number_from_value (hours_value);
|
||||
ECMA_FINALIZE (hours_value);
|
||||
}
|
||||
|
||||
@@ -115,7 +114,7 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t
|
||||
if (args_len >= 5 && ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ECMA_TRY_CATCH (minutes_value, ecma_op_to_number (args[4]), ret_value);
|
||||
minutes = *ecma_get_number_from_value (minutes_value);
|
||||
minutes = ecma_get_number_from_value (minutes_value);
|
||||
ECMA_FINALIZE (minutes_value);
|
||||
}
|
||||
|
||||
@@ -123,7 +122,7 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t
|
||||
if (args_len >= 6 && ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ECMA_TRY_CATCH (seconds_value, ecma_op_to_number (args[5]), ret_value);
|
||||
seconds = *ecma_get_number_from_value (seconds_value);
|
||||
seconds = ecma_get_number_from_value (seconds_value);
|
||||
ECMA_FINALIZE (seconds_value);
|
||||
}
|
||||
|
||||
@@ -131,7 +130,7 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t
|
||||
if (args_len >= 7 && ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ECMA_TRY_CATCH (milliseconds_value, ecma_op_to_number (args[6]), ret_value);
|
||||
milliseconds = *ecma_get_number_from_value (milliseconds_value);
|
||||
milliseconds = ecma_get_number_from_value (milliseconds_value);
|
||||
ECMA_FINALIZE (milliseconds_value);
|
||||
}
|
||||
|
||||
@@ -152,13 +151,13 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t
|
||||
}
|
||||
}
|
||||
|
||||
*prim_value_p = ecma_date_make_date (ecma_date_make_day (year,
|
||||
month,
|
||||
date),
|
||||
ecma_date_make_time (hours,
|
||||
minutes,
|
||||
seconds,
|
||||
milliseconds));
|
||||
prim_value = ecma_date_make_date (ecma_date_make_day (year,
|
||||
month,
|
||||
date),
|
||||
ecma_date_make_time (hours,
|
||||
minutes,
|
||||
seconds,
|
||||
milliseconds));
|
||||
}
|
||||
|
||||
ECMA_FINALIZE (month_value);
|
||||
@@ -166,11 +165,7 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ret_value = ecma_make_number_value (prim_value_p);
|
||||
}
|
||||
else
|
||||
{
|
||||
ecma_dealloc_number (prim_value_p);
|
||||
ret_value = ecma_make_number_value (prim_value);
|
||||
}
|
||||
|
||||
return ret_value;
|
||||
@@ -191,8 +186,7 @@ ecma_builtin_date_parse (ecma_value_t this_arg __attr_unused___, /**< this argum
|
||||
ecma_value_t arg) /**< string */
|
||||
{
|
||||
ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
|
||||
ecma_number_t *date_num_p = ecma_alloc_number ();
|
||||
*date_num_p = ecma_number_make_nan ();
|
||||
ecma_number_t date_num = ecma_number_make_nan ();
|
||||
|
||||
/* Date Time String fromat (ECMA-262 v5, 15.9.1.15) */
|
||||
ECMA_TRY_CATCH (date_str_value,
|
||||
@@ -382,11 +376,11 @@ ecma_builtin_date_parse (ecma_value_t this_arg __attr_unused___, /**< this argum
|
||||
if (date_str_curr_p >= date_str_end_p)
|
||||
{
|
||||
ecma_number_t date = ecma_date_make_day (year, month - 1, day);
|
||||
*date_num_p = ecma_date_make_date (date, time);
|
||||
date_num = ecma_date_make_date (date, time);
|
||||
}
|
||||
}
|
||||
|
||||
ret_value = ecma_make_number_value (date_num_p);
|
||||
ret_value = ecma_make_number_value (date_num);
|
||||
|
||||
ECMA_FINALIZE_UTF8_STRING (date_start_p, date_start_size);
|
||||
ECMA_FINALIZE (date_str_value);
|
||||
@@ -416,17 +410,13 @@ ecma_builtin_date_utc (ecma_value_t this_arg __attr_unused___, /**< this argumen
|
||||
* When the UTC function is called with fewer than two arguments,
|
||||
* the behaviour is implementation-dependent, so just return NaN.
|
||||
*/
|
||||
ecma_number_t *nan_p = ecma_alloc_number ();
|
||||
*nan_p = ecma_number_make_nan ();
|
||||
return ecma_make_number_value (nan_p);
|
||||
return ecma_make_number_value (ecma_number_make_nan ());
|
||||
}
|
||||
|
||||
ECMA_TRY_CATCH (time_value, ecma_date_construct_helper (args, args_number), ret_value);
|
||||
|
||||
ecma_number_t *time_p = ecma_get_number_from_value (time_value);
|
||||
ecma_number_t *time_clip_p = ecma_alloc_number ();
|
||||
*time_clip_p = ecma_date_time_clip (*time_p);
|
||||
ret_value = ecma_make_number_value (time_clip_p);
|
||||
ecma_number_t time = ecma_get_number_from_value (time_value);
|
||||
ret_value = ecma_make_number_value (ecma_date_time_clip (time));
|
||||
|
||||
ECMA_FINALIZE (time_value);
|
||||
|
||||
@@ -445,11 +435,7 @@ ecma_builtin_date_utc (ecma_value_t this_arg __attr_unused___, /**< this argumen
|
||||
static ecma_value_t
|
||||
ecma_builtin_date_now (ecma_value_t this_arg __attr_unused___) /**< this argument */
|
||||
{
|
||||
ecma_number_t *now_num_p = ecma_alloc_number ();
|
||||
|
||||
*now_num_p = DOUBLE_TO_ECMA_NUMBER_T (jerry_port_get_current_time ());
|
||||
|
||||
return ecma_make_number_value (now_num_p);
|
||||
return ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (jerry_port_get_current_time ()));
|
||||
} /* ecma_builtin_date_now */
|
||||
|
||||
/**
|
||||
@@ -470,7 +456,7 @@ ecma_builtin_date_dispatch_call (const ecma_value_t *arguments_list_p __attr_unu
|
||||
ecma_builtin_date_now (ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED)),
|
||||
ret_value);
|
||||
|
||||
ret_value = ecma_date_value_to_string (*ecma_get_number_from_value (now_val));
|
||||
ret_value = ecma_date_value_to_string (ecma_get_number_from_value (now_val));
|
||||
|
||||
ECMA_FINALIZE (now_val);
|
||||
|
||||
@@ -490,7 +476,7 @@ ecma_builtin_date_dispatch_construct (const ecma_value_t *arguments_list_p, /**<
|
||||
ecma_length_t arguments_list_len) /**< number of arguments */
|
||||
{
|
||||
ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
|
||||
ecma_number_t *prim_value_num_p = NULL;
|
||||
ecma_number_t prim_value_num = ECMA_NUMBER_ZERO;
|
||||
|
||||
ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_DATE_PROTOTYPE);
|
||||
ecma_object_t *obj_p = ecma_create_object (prototype_obj_p,
|
||||
@@ -504,8 +490,7 @@ ecma_builtin_date_dispatch_construct (const ecma_value_t *arguments_list_p, /**<
|
||||
ecma_builtin_date_now (ecma_make_object_value (obj_p)),
|
||||
ret_value);
|
||||
|
||||
prim_value_num_p = ecma_alloc_number ();
|
||||
*prim_value_num_p = *ecma_get_number_from_value (parse_res_value);
|
||||
prim_value_num = ecma_get_number_from_value (parse_res_value);
|
||||
|
||||
ECMA_FINALIZE (parse_res_value)
|
||||
}
|
||||
@@ -521,8 +506,7 @@ ecma_builtin_date_dispatch_construct (const ecma_value_t *arguments_list_p, /**<
|
||||
ecma_builtin_date_parse (ecma_make_object_value (obj_p), prim_comp_value),
|
||||
ret_value);
|
||||
|
||||
prim_value_num_p = ecma_alloc_number ();
|
||||
*prim_value_num_p = *ecma_get_number_from_value (parse_res_value);
|
||||
prim_value_num = ecma_get_number_from_value (parse_res_value);
|
||||
|
||||
ECMA_FINALIZE (parse_res_value);
|
||||
}
|
||||
@@ -530,8 +514,7 @@ ecma_builtin_date_dispatch_construct (const ecma_value_t *arguments_list_p, /**<
|
||||
{
|
||||
ECMA_TRY_CATCH (prim_value, ecma_op_to_number (arguments_list_p[0]), ret_value);
|
||||
|
||||
prim_value_num_p = ecma_alloc_number ();
|
||||
*prim_value_num_p = ecma_date_time_clip (*ecma_get_number_from_value (prim_value));
|
||||
prim_value_num = ecma_date_time_clip (ecma_get_number_from_value (prim_value));
|
||||
|
||||
ECMA_FINALIZE (prim_value);
|
||||
}
|
||||
@@ -544,23 +527,21 @@ ecma_builtin_date_dispatch_construct (const ecma_value_t *arguments_list_p, /**<
|
||||
ecma_date_construct_helper (arguments_list_p, arguments_list_len),
|
||||
ret_value);
|
||||
|
||||
ecma_number_t *time_p = ecma_get_number_from_value (time_value);
|
||||
prim_value_num_p = ecma_alloc_number ();
|
||||
*prim_value_num_p = ecma_date_time_clip (ecma_date_utc (*time_p));
|
||||
ecma_number_t time = ecma_get_number_from_value (time_value);
|
||||
prim_value_num = ecma_date_time_clip (ecma_date_utc (time));
|
||||
|
||||
ECMA_FINALIZE (time_value);
|
||||
}
|
||||
else
|
||||
{
|
||||
prim_value_num_p = ecma_alloc_number ();
|
||||
*prim_value_num_p = ecma_number_make_nan ();
|
||||
prim_value_num = ecma_number_make_nan ();
|
||||
}
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
if (!ecma_number_is_nan (*prim_value_num_p) && ecma_number_is_infinity (*prim_value_num_p))
|
||||
if (!ecma_number_is_nan (prim_value_num) && ecma_number_is_infinity (prim_value_num))
|
||||
{
|
||||
*prim_value_num_p = ecma_number_make_nan ();
|
||||
prim_value_num = ecma_number_make_nan ();
|
||||
}
|
||||
|
||||
ecma_property_t *class_prop_p = ecma_create_internal_property (obj_p,
|
||||
@@ -569,6 +550,9 @@ ecma_builtin_date_dispatch_construct (const ecma_value_t *arguments_list_p, /**<
|
||||
|
||||
ecma_property_t *prim_value_prop_p = ecma_create_internal_property (obj_p,
|
||||
ECMA_INTERNAL_PROPERTY_PRIMITIVE_NUMBER_VALUE);
|
||||
|
||||
ecma_number_t *prim_value_num_p = ecma_alloc_number ();
|
||||
*prim_value_num_p = prim_value_num;
|
||||
ECMA_SET_INTERNAL_VALUE_POINTER (ECMA_PROPERTY_VALUE_PTR (prim_value_prop_p)->value, prim_value_num_p);
|
||||
|
||||
ret_value = ecma_make_object_value (obj_p);
|
||||
|
||||
@@ -281,7 +281,8 @@ ecma_builtin_function_prototype_object_bind (ecma_value_t this_arg, /**< this ar
|
||||
* See also: ecma_object_get_class_name
|
||||
*/
|
||||
|
||||
ecma_number_t *length_p = ecma_alloc_number ();
|
||||
/* 16. */
|
||||
ecma_number_t length = ECMA_NUMBER_ZERO;
|
||||
ecma_string_t *magic_string_length_p = ecma_get_magic_string (LIT_MAGIC_STRING_LENGTH);
|
||||
|
||||
/* 15. */
|
||||
@@ -294,25 +295,20 @@ ecma_builtin_function_prototype_object_bind (ecma_value_t this_arg, /**< this ar
|
||||
const ecma_length_t bound_arg_count = arg_count > 1 ? arg_count - 1 : 0;
|
||||
|
||||
/* 15.a */
|
||||
*length_p = *ecma_get_number_from_value (get_len_value) - ((ecma_number_t) bound_arg_count);
|
||||
length = ecma_get_number_from_value (get_len_value) - ((ecma_number_t) bound_arg_count);
|
||||
ecma_free_value (get_len_value);
|
||||
|
||||
/* 15.b */
|
||||
if (ecma_number_is_negative (*length_p))
|
||||
if (ecma_number_is_negative (length))
|
||||
{
|
||||
*length_p = ECMA_NUMBER_ZERO;
|
||||
length = ECMA_NUMBER_ZERO;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 16. */
|
||||
*length_p = ECMA_NUMBER_ZERO;
|
||||
}
|
||||
|
||||
/* 17. */
|
||||
ecma_value_t completion = ecma_builtin_helper_def_prop (function_p,
|
||||
magic_string_length_p,
|
||||
ecma_make_number_value (length_p),
|
||||
ecma_make_number_value (length),
|
||||
false, /* Writable */
|
||||
false, /* Enumerable */
|
||||
false, /* Configurable */
|
||||
@@ -321,7 +317,6 @@ ecma_builtin_function_prototype_object_bind (ecma_value_t this_arg, /**< this ar
|
||||
JERRY_ASSERT (ecma_is_value_boolean (completion));
|
||||
|
||||
ecma_deref_ecma_string (magic_string_length_p);
|
||||
ecma_dealloc_number (length_p);
|
||||
|
||||
/* 19-21. */
|
||||
ecma_object_t *thrower_p = ecma_builtin_get (ECMA_BUILTIN_ID_TYPE_ERROR_THROWER);
|
||||
|
||||
@@ -263,9 +263,7 @@ ecma_builtin_global_object_parse_int (ecma_value_t this_arg __attr_unused___, /*
|
||||
/* 8.a */
|
||||
if (rad < 2 || rad > 36)
|
||||
{
|
||||
ecma_number_t *ret_num_p = ecma_alloc_number ();
|
||||
*ret_num_p = ecma_number_make_nan ();
|
||||
ret_value = ecma_make_number_value (ret_num_p);
|
||||
ret_value = ecma_make_nan_value ();
|
||||
}
|
||||
/* 8.b */
|
||||
else if (rad != 16)
|
||||
@@ -331,16 +329,13 @@ ecma_builtin_global_object_parse_int (ecma_value_t this_arg __attr_unused___, /*
|
||||
/* 12. */
|
||||
if (end_p == start_p)
|
||||
{
|
||||
ecma_number_t *ret_num_p = ecma_alloc_number ();
|
||||
*ret_num_p = ecma_number_make_nan ();
|
||||
ret_value = ecma_make_number_value (ret_num_p);
|
||||
ret_value = ecma_make_nan_value ();
|
||||
}
|
||||
}
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ecma_number_t *value_p = ecma_alloc_number ();
|
||||
*value_p = 0;
|
||||
ecma_number_t value = ECMA_NUMBER_ZERO;
|
||||
ecma_number_t multiplier = 1.0f;
|
||||
|
||||
/* 13. and 14. */
|
||||
@@ -368,34 +363,30 @@ ecma_builtin_global_object_parse_int (ecma_value_t this_arg __attr_unused___, /*
|
||||
JERRY_UNREACHABLE ();
|
||||
}
|
||||
|
||||
*value_p += current_number * multiplier;
|
||||
value += current_number * multiplier;
|
||||
multiplier *= (ecma_number_t) rad;
|
||||
}
|
||||
|
||||
/* 15. */
|
||||
if (sign < 0)
|
||||
{
|
||||
*value_p *= (ecma_number_t) sign;
|
||||
value *= (ecma_number_t) sign;
|
||||
}
|
||||
|
||||
ret_value = ecma_make_number_value (value_p);
|
||||
ret_value = ecma_make_number_value (value);
|
||||
}
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (radix_num);
|
||||
}
|
||||
else
|
||||
{
|
||||
ecma_number_t *ret_num_p = ecma_alloc_number ();
|
||||
*ret_num_p = ecma_number_make_nan ();
|
||||
ret_value = ecma_make_number_value (ret_num_p);
|
||||
ret_value = ecma_make_nan_value ();
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
ecma_number_t *ret_num_p = ecma_alloc_number ();
|
||||
*ret_num_p = ecma_number_make_nan ();
|
||||
ret_value = ecma_make_number_value (ret_num_p);
|
||||
ret_value = ecma_make_nan_value ();
|
||||
}
|
||||
|
||||
ECMA_FINALIZE_UTF8_STRING (string_buff, string_buff_size);
|
||||
@@ -465,8 +456,6 @@ ecma_builtin_global_object_parse_float (ecma_value_t this_arg __attr_unused___,
|
||||
}
|
||||
}
|
||||
|
||||
ecma_number_t *ret_num_p = ecma_alloc_number ();
|
||||
|
||||
const lit_utf8_byte_t *infinity_str_p = lit_get_magic_string_utf8 (LIT_MAGIC_STRING_INFINITY_UL);
|
||||
lit_utf8_byte_t *infinity_str_curr_p = (lit_utf8_byte_t *) infinity_str_p;
|
||||
lit_utf8_byte_t *infinity_str_end_p = infinity_str_curr_p + sizeof (*infinity_str_p);
|
||||
@@ -478,8 +467,7 @@ ecma_builtin_global_object_parse_float (ecma_value_t this_arg __attr_unused___,
|
||||
if (infinity_str_curr_p == infinity_str_end_p)
|
||||
{
|
||||
/* String matched Infinity. */
|
||||
*ret_num_p = ecma_number_make_infinity (sign);
|
||||
ret_value = ecma_make_number_value (ret_num_p);
|
||||
ret_value = ecma_make_number_value (ecma_number_make_infinity (sign));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -590,36 +578,32 @@ ecma_builtin_global_object_parse_float (ecma_value_t this_arg __attr_unused___,
|
||||
/* String did not contain a valid number. */
|
||||
if (start_p == end_p)
|
||||
{
|
||||
*ret_num_p = ecma_number_make_nan ();
|
||||
ret_value = ecma_make_number_value (ret_num_p);
|
||||
ret_value = ecma_make_nan_value ();
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 5. */
|
||||
*ret_num_p = ecma_utf8_string_to_number (start_p,
|
||||
(lit_utf8_size_t) (end_p - start_p));
|
||||
ecma_number_t ret_num = ecma_utf8_string_to_number (start_p,
|
||||
(lit_utf8_size_t) (end_p - start_p));
|
||||
|
||||
if (sign)
|
||||
{
|
||||
*ret_num_p *= -1;
|
||||
ret_num *= ECMA_NUMBER_MINUS_ONE;
|
||||
}
|
||||
|
||||
ret_value = ecma_make_number_value (ret_num_p);
|
||||
ret_value = ecma_make_number_value (ret_num);
|
||||
}
|
||||
}
|
||||
/* String ended after sign character, or was empty after removing leading whitespace. */
|
||||
else if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
*ret_num_p = ecma_number_make_nan ();
|
||||
ret_value = ecma_make_number_value (ret_num_p);
|
||||
ret_value = ecma_make_nan_value ();
|
||||
}
|
||||
}
|
||||
/* String length is zero. */
|
||||
else
|
||||
{
|
||||
ecma_number_t *ret_num_p = ecma_alloc_number ();
|
||||
*ret_num_p = ecma_number_make_nan ();
|
||||
ret_value = ecma_make_number_value (ret_num_p);
|
||||
ret_value = ecma_make_nan_value ();
|
||||
}
|
||||
|
||||
ECMA_FINALIZE_UTF8_STRING (string_buff, string_buff_size);
|
||||
|
||||
@@ -889,13 +889,13 @@ ecma_date_set_internal_property (ecma_value_t this_arg, /**< this argument */
|
||||
{
|
||||
JERRY_ASSERT (ecma_is_value_object (this_arg));
|
||||
|
||||
ecma_number_t *value_p = ecma_alloc_number ();
|
||||
ecma_number_t date = ecma_date_make_date (day, time);
|
||||
if (is_utc != ECMA_DATE_UTC)
|
||||
{
|
||||
date = ecma_date_utc (date);
|
||||
}
|
||||
*value_p = ecma_date_time_clip (date);
|
||||
|
||||
ecma_number_t value = ecma_date_time_clip (date);
|
||||
|
||||
ecma_object_t *obj_p = ecma_get_object_from_value (this_arg);
|
||||
|
||||
@@ -905,9 +905,9 @@ ecma_date_set_internal_property (ecma_value_t this_arg, /**< this argument */
|
||||
ecma_number_t *prim_value_num_p;
|
||||
prim_value_num_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_number_t,
|
||||
ecma_get_internal_property_value (prim_value_prop_p));
|
||||
*prim_value_num_p = *value_p;
|
||||
*prim_value_num_p = value;
|
||||
|
||||
return ecma_make_number_value (value_p);
|
||||
return ecma_make_number_value (value);
|
||||
} /* ecma_date_set_internal_property */
|
||||
|
||||
/**
|
||||
@@ -1306,10 +1306,10 @@ ecma_date_get_primitive_value (ecma_value_t this_arg) /**< this argument */
|
||||
ECMA_INTERNAL_PROPERTY_PRIMITIVE_NUMBER_VALUE);
|
||||
JERRY_ASSERT (prim_value_prop_p != NULL);
|
||||
|
||||
ecma_number_t *prim_value_num_p = ecma_alloc_number ();
|
||||
*prim_value_num_p = *ECMA_GET_INTERNAL_VALUE_POINTER (ecma_number_t,
|
||||
ecma_get_internal_property_value (prim_value_prop_p));
|
||||
ret_value = ecma_make_number_value (prim_value_num_p);
|
||||
ecma_number_t prim_value_num;
|
||||
prim_value_num = *ECMA_GET_INTERNAL_VALUE_POINTER (ecma_number_t,
|
||||
ecma_get_internal_property_value (prim_value_prop_p));
|
||||
ret_value = ecma_make_number_value (prim_value_num);
|
||||
}
|
||||
|
||||
return ret_value;
|
||||
|
||||
@@ -520,17 +520,16 @@ ecma_builtin_helper_string_prototype_object_index_of (ecma_value_t this_arg, /**
|
||||
/* 7 (indexOf) -- 8 (lastIndexOf) */
|
||||
ecma_string_t *search_str_p = ecma_get_string_from_value (search_str_val);
|
||||
|
||||
ecma_number_t *ret_num_p = ecma_alloc_number ();
|
||||
*ret_num_p = ECMA_NUMBER_MINUS_ONE;
|
||||
ecma_number_t ret_num = ECMA_NUMBER_MINUS_ONE;
|
||||
|
||||
/* 8 (indexOf) -- 9 (lastIndexOf) */
|
||||
ecma_length_t index_of = 0;
|
||||
if (ecma_builtin_helper_string_find_index (original_str_p, search_str_p, first_index, start, &index_of))
|
||||
{
|
||||
*ret_num_p = ((ecma_number_t) index_of);
|
||||
ret_num = ((ecma_number_t) index_of);
|
||||
}
|
||||
|
||||
ret_value = ecma_make_number_value (ret_num_p);
|
||||
ret_value = ecma_make_number_value (ret_num);
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (pos_num);
|
||||
ECMA_FINALIZE (search_str_val);
|
||||
|
||||
@@ -251,10 +251,7 @@ TRY_TO_INSTANTIATE_PROPERTY_ROUTINE_NAME (ecma_object_t *obj_p, /**< object */
|
||||
}
|
||||
#define NUMBER_VALUE(name, number_value, prop_writable, prop_enumerable, prop_configurable) case name: \
|
||||
{ \
|
||||
ecma_number_t *num_p = ecma_alloc_number (); \
|
||||
*num_p = number_value; \
|
||||
\
|
||||
value = ecma_make_number_value (num_p); \
|
||||
value = ecma_make_number_value (number_value); \
|
||||
\
|
||||
writable = prop_writable; \
|
||||
enumerable = prop_enumerable; \
|
||||
|
||||
@@ -451,9 +451,7 @@ ecma_builtin_json_parse_value (ecma_json_token_t *token_p) /**< token argument *
|
||||
{
|
||||
case number_token:
|
||||
{
|
||||
ecma_number_t *number_p = ecma_alloc_number ();
|
||||
*number_p = token_p->u.number;
|
||||
return ecma_make_number_value (number_p);
|
||||
return ecma_make_number_value (token_p->u.number);
|
||||
}
|
||||
case string_token:
|
||||
{
|
||||
@@ -1327,7 +1325,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/
|
||||
/* 9. */
|
||||
else if (ecma_is_value_number (my_val))
|
||||
{
|
||||
ecma_number_t num_value_p = *ecma_get_number_from_value (my_val);
|
||||
ecma_number_t num_value_p = ecma_get_number_from_value (my_val);
|
||||
|
||||
/* 9.a */
|
||||
if (!ecma_number_is_nan (num_value_p) && !ecma_number_is_infinity (num_value_p))
|
||||
|
||||
@@ -66,11 +66,7 @@ ecma_builtin_math_object_abs (ecma_value_t this_arg __attr_unused___, /**< 'this
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (fabs (arg_num));
|
||||
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (fabs (arg_num)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_num);
|
||||
|
||||
@@ -94,10 +90,7 @@ ecma_builtin_math_object_acos (ecma_value_t this_arg __attr_unused___, /**< 'thi
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (acos (arg_num));
|
||||
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (acos (arg_num)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_num);
|
||||
return ret_value;
|
||||
@@ -120,10 +113,7 @@ ecma_builtin_math_object_asin (ecma_value_t this_arg __attr_unused___, /**< 'thi
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (asin (arg_num));
|
||||
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (asin (arg_num)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_num);
|
||||
return ret_value;
|
||||
@@ -146,10 +136,7 @@ ecma_builtin_math_object_atan (ecma_value_t this_arg __attr_unused___, /**< 'thi
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (atan (arg_num));
|
||||
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (atan (arg_num)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_num);
|
||||
return ret_value;
|
||||
@@ -174,10 +161,7 @@ ecma_builtin_math_object_atan2 (ecma_value_t this_arg __attr_unused___, /**< 'th
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (x, arg1, ret_value);
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (y, arg2, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (atan2 (x, y));
|
||||
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (atan2 (x, y)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (y);
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (x);
|
||||
@@ -201,9 +185,7 @@ ecma_builtin_math_object_ceil (ecma_value_t this_arg __attr_unused___, /**< 'thi
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (ceil (arg_num));
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (ceil (arg_num)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_num);
|
||||
return ret_value;
|
||||
@@ -226,9 +208,7 @@ ecma_builtin_math_object_cos (ecma_value_t this_arg __attr_unused___, /**< 'this
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (cos (arg_num));
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (cos (arg_num)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_num);
|
||||
return ret_value;
|
||||
@@ -251,11 +231,7 @@ ecma_builtin_math_object_exp (ecma_value_t this_arg __attr_unused___, /**< 'this
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (exp (arg_num));
|
||||
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (exp (arg_num)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_num);
|
||||
|
||||
@@ -279,9 +255,7 @@ ecma_builtin_math_object_floor (ecma_value_t this_arg __attr_unused___, /**< 'th
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (floor (arg_num));
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (floor (arg_num)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_num);
|
||||
return ret_value;
|
||||
@@ -304,11 +278,7 @@ ecma_builtin_math_object_log (ecma_value_t this_arg __attr_unused___, /**< 'this
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (log (arg_num));
|
||||
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (log (arg_num)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_num);
|
||||
|
||||
@@ -389,9 +359,7 @@ ecma_builtin_math_object_max (ecma_value_t this_arg __attr_unused___, /**< 'this
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = ret_num;
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (ret_num);
|
||||
}
|
||||
|
||||
return ret_value;
|
||||
@@ -471,9 +439,7 @@ ecma_builtin_math_object_min (ecma_value_t this_arg __attr_unused___, /**< 'this
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = ret_num;
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (ret_num);
|
||||
}
|
||||
|
||||
return ret_value;
|
||||
@@ -498,9 +464,7 @@ ecma_builtin_math_object_pow (ecma_value_t this_arg __attr_unused___, /**< 'this
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (x, arg1, ret_value);
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (y, arg2, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (pow (x, y));
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (pow (x, y)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (y);
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (x);
|
||||
@@ -541,10 +505,7 @@ ecma_builtin_math_object_random (ecma_value_t this_arg __attr_unused___) /**< 't
|
||||
rand /= (ecma_number_t) max_uint32;
|
||||
rand *= (ecma_number_t) (max_uint32 - 1) / (ecma_number_t) max_uint32;
|
||||
|
||||
ecma_number_t *rand_p = ecma_alloc_number ();
|
||||
*rand_p = rand;
|
||||
|
||||
return ecma_make_number_value (rand_p);
|
||||
return ecma_make_number_value (rand);
|
||||
} /* ecma_builtin_math_object_random */
|
||||
|
||||
/**
|
||||
@@ -564,18 +525,18 @@ ecma_builtin_math_object_round (ecma_value_t this_arg __attr_unused___, /**< 'th
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
ecma_number_t num = ECMA_NUMBER_ZERO;
|
||||
|
||||
if (ecma_number_is_nan (arg_num)
|
||||
|| ecma_number_is_zero (arg_num)
|
||||
|| ecma_number_is_infinity (arg_num))
|
||||
{
|
||||
*num_p = arg_num;
|
||||
num = arg_num;
|
||||
}
|
||||
else if (ecma_number_is_negative (arg_num)
|
||||
&& arg_num >= -ECMA_NUMBER_HALF)
|
||||
{
|
||||
*num_p = ecma_number_negate (ECMA_NUMBER_ZERO);
|
||||
num = ecma_number_negate (ECMA_NUMBER_ZERO);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -586,15 +547,15 @@ ecma_builtin_math_object_round (ecma_value_t this_arg __attr_unused___, /**< 'th
|
||||
|
||||
if (up_rounded - arg_num <= arg_num - down_rounded)
|
||||
{
|
||||
*num_p = up_rounded;
|
||||
num = up_rounded;
|
||||
}
|
||||
else
|
||||
{
|
||||
*num_p = down_rounded;
|
||||
num = down_rounded;
|
||||
}
|
||||
}
|
||||
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (num);
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_num);
|
||||
|
||||
@@ -618,9 +579,7 @@ ecma_builtin_math_object_sin (ecma_value_t this_arg __attr_unused___, /**< 'this
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (sin (arg_num));
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (sin (arg_num)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_num);
|
||||
return ret_value;
|
||||
@@ -643,9 +602,7 @@ ecma_builtin_math_object_sqrt (ecma_value_t this_arg __attr_unused___, /**< 'thi
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (sqrt (arg_num));
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (sqrt (arg_num)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_num);
|
||||
return ret_value;
|
||||
@@ -668,10 +625,7 @@ ecma_builtin_math_object_tan (ecma_value_t this_arg __attr_unused___, /**< 'this
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = DOUBLE_TO_ECMA_NUMBER_T (tan (arg_num));
|
||||
|
||||
ret_value = ecma_make_number_value (num_p);
|
||||
ret_value = ecma_make_number_value (DOUBLE_TO_ECMA_NUMBER_T (tan (arg_num)));
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (arg_num);
|
||||
return ret_value;
|
||||
|
||||
@@ -93,7 +93,7 @@ ecma_builtin_number_prototype_object_to_string (ecma_value_t this_arg, /**< this
|
||||
ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
|
||||
|
||||
ECMA_TRY_CATCH (this_value, ecma_builtin_number_prototype_object_value_of (this_arg), ret_value);
|
||||
ecma_number_t this_arg_number = *ecma_get_number_from_value (this_value);
|
||||
ecma_number_t this_arg_number = ecma_get_number_from_value (this_value);
|
||||
|
||||
if (arguments_list_len == 0
|
||||
|| ecma_number_is_nan (this_arg_number)
|
||||
@@ -362,10 +362,7 @@ ecma_builtin_number_prototype_object_value_of (ecma_value_t this_arg) /**< this
|
||||
prim_value_num_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_number_t,
|
||||
ecma_get_internal_property_value (prim_value_prop_p));
|
||||
|
||||
ecma_number_t *ret_num_p = ecma_alloc_number ();
|
||||
*ret_num_p = *prim_value_num_p;
|
||||
|
||||
return ecma_make_number_value (ret_num_p);
|
||||
return ecma_make_number_value (*prim_value_num_p);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -388,7 +385,7 @@ ecma_builtin_number_prototype_object_to_fixed (ecma_value_t this_arg, /**< this
|
||||
ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
|
||||
|
||||
ECMA_TRY_CATCH (this_value, ecma_builtin_number_prototype_object_value_of (this_arg), ret_value);
|
||||
ecma_number_t this_num = *ecma_get_number_from_value (this_value);
|
||||
ecma_number_t this_num = ecma_get_number_from_value (this_value);
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
@@ -592,7 +589,7 @@ ecma_builtin_number_prototype_object_to_exponential (ecma_value_t this_arg, /**<
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_value, ecma_builtin_number_prototype_object_value_of (this_arg), ret_value);
|
||||
ecma_number_t this_num = *ecma_get_number_from_value (this_value);
|
||||
ecma_number_t this_num = ecma_get_number_from_value (this_value);
|
||||
|
||||
ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value);
|
||||
|
||||
@@ -777,7 +774,7 @@ ecma_builtin_number_prototype_object_to_precision (ecma_value_t this_arg, /**< t
|
||||
|
||||
/* 1. */
|
||||
ECMA_TRY_CATCH (this_value, ecma_builtin_number_prototype_object_value_of (this_arg), ret_value);
|
||||
ecma_number_t this_num = *ecma_get_number_from_value (this_value);
|
||||
ecma_number_t this_num = ecma_get_number_from_value (this_value);
|
||||
|
||||
/* 2. */
|
||||
if (ecma_is_value_undefined (arg))
|
||||
|
||||
@@ -59,10 +59,7 @@ ecma_builtin_number_dispatch_call (const ecma_value_t *arguments_list_p, /**< ar
|
||||
|
||||
if (arguments_list_len == 0)
|
||||
{
|
||||
ecma_number_t *zero_num_p = ecma_alloc_number ();
|
||||
*zero_num_p = ECMA_NUMBER_ZERO;
|
||||
|
||||
ret_value = ecma_make_number_value (zero_num_p);
|
||||
ret_value = ecma_make_integer_value (0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -85,13 +82,7 @@ ecma_builtin_number_dispatch_construct (const ecma_value_t *arguments_list_p, /*
|
||||
|
||||
if (arguments_list_len == 0)
|
||||
{
|
||||
ecma_number_t *zero_num_p = ecma_alloc_number ();
|
||||
*zero_num_p = ECMA_NUMBER_ZERO;
|
||||
|
||||
ecma_value_t completion = ecma_op_create_number_object (ecma_make_number_value (zero_num_p));
|
||||
|
||||
ecma_dealloc_number (zero_num_p);
|
||||
|
||||
ecma_value_t completion = ecma_op_create_number_object (ecma_make_integer_value (0));
|
||||
return completion;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -195,13 +195,11 @@ ecma_builtin_string_prototype_object_char_code_at (ecma_value_t this_arg, /**< t
|
||||
ecma_string_t *original_string_p = ecma_get_string_from_value (to_string_val);
|
||||
const ecma_length_t len = ecma_string_get_length (original_string_p);
|
||||
|
||||
ecma_number_t *ret_num_p = ecma_alloc_number ();
|
||||
|
||||
/* 5 */
|
||||
// When index_num is NaN, then the first two comparisons are false
|
||||
if (index_num < 0 || index_num >= len || (ecma_number_is_nan (index_num) && !len))
|
||||
{
|
||||
*ret_num_p = ecma_number_make_nan ();
|
||||
ret_value = ecma_make_nan_value ();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -215,12 +213,9 @@ ecma_builtin_string_prototype_object_char_code_at (ecma_value_t this_arg, /**< t
|
||||
JERRY_ASSERT (ecma_number_is_nan (index_num) || ecma_number_to_uint32 (index_num) == ecma_number_trunc (index_num));
|
||||
|
||||
ecma_char_t new_ecma_char = ecma_string_get_char_at_pos (original_string_p, ecma_number_to_uint32 (index_num));
|
||||
*ret_num_p = ((ecma_number_t) new_ecma_char);
|
||||
ret_value = ecma_make_uint32_value (new_ecma_char);
|
||||
}
|
||||
|
||||
ecma_value_t new_value = ecma_make_number_value (ret_num_p);
|
||||
ret_value = new_value;
|
||||
|
||||
ECMA_OP_TO_NUMBER_FINALIZE (index_num);
|
||||
|
||||
ECMA_FINALIZE (to_string_val);
|
||||
@@ -364,22 +359,22 @@ ecma_builtin_string_prototype_object_locale_compare (ecma_value_t this_arg, /**<
|
||||
ecma_string_t *this_string_p = ecma_get_string_from_value (this_to_string_val);
|
||||
ecma_string_t *arg_string_p = ecma_get_string_from_value (arg_to_string_val);
|
||||
|
||||
ecma_number_t *result_p = ecma_alloc_number ();
|
||||
ecma_number_t result = ECMA_NUMBER_ZERO;
|
||||
|
||||
if (ecma_compare_ecma_strings_relational (this_string_p, arg_string_p))
|
||||
{
|
||||
*result_p = ECMA_NUMBER_MINUS_ONE;
|
||||
result = ECMA_NUMBER_MINUS_ONE;
|
||||
}
|
||||
else if (!ecma_compare_ecma_strings (this_string_p, arg_string_p))
|
||||
{
|
||||
*result_p = ECMA_NUMBER_ONE;
|
||||
result = ECMA_NUMBER_ONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
*result_p = ECMA_NUMBER_ZERO;
|
||||
result = ECMA_NUMBER_ZERO;
|
||||
}
|
||||
|
||||
ret_value = ecma_make_number_value (result_p);
|
||||
ret_value = ecma_make_number_value (result);
|
||||
|
||||
ECMA_FINALIZE (arg_to_string_val);
|
||||
ECMA_FINALIZE (this_to_string_val);
|
||||
@@ -456,9 +451,6 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg
|
||||
else
|
||||
{
|
||||
/* 8.a. */
|
||||
ecma_number_t *zero_number_p = ecma_alloc_number ();
|
||||
*zero_number_p = 0;
|
||||
|
||||
ecma_string_t *index_zero_string_p = ecma_new_ecma_string_from_uint32 (0);
|
||||
|
||||
ecma_string_t *last_index_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_LASTINDEX_UL);
|
||||
@@ -466,7 +458,7 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg
|
||||
ECMA_TRY_CATCH (put_value,
|
||||
ecma_op_object_put (regexp_obj_p,
|
||||
last_index_string_p,
|
||||
ecma_make_number_value (zero_number_p),
|
||||
ecma_make_integer_value (0),
|
||||
true),
|
||||
ret_value);
|
||||
|
||||
@@ -508,18 +500,16 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg
|
||||
ecma_op_to_number (this_index_value),
|
||||
ret_value);
|
||||
|
||||
ecma_number_t this_index = *ecma_get_number_from_value (this_index_number);
|
||||
ecma_number_t this_index = ecma_get_number_from_value (this_index_number);
|
||||
|
||||
/* 8.f.iii.2. */
|
||||
if (this_index == previous_last_index)
|
||||
{
|
||||
ecma_number_t *new_last_index_p = ecma_alloc_number ();
|
||||
*new_last_index_p = this_index + 1;
|
||||
/* 8.f.iii.2.a. */
|
||||
ECMA_TRY_CATCH (index_put_value,
|
||||
ecma_op_object_put (regexp_obj_p,
|
||||
last_index_string_p,
|
||||
ecma_make_number_value (new_last_index_p),
|
||||
ecma_make_number_value (this_index + 1),
|
||||
true),
|
||||
ret_value);
|
||||
|
||||
@@ -527,8 +517,6 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg
|
||||
previous_last_index = this_index + 1;
|
||||
|
||||
ECMA_FINALIZE (index_put_value);
|
||||
|
||||
ecma_dealloc_number (new_last_index_p);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -595,7 +583,6 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg
|
||||
|
||||
ecma_deref_ecma_string (last_index_string_p);
|
||||
ecma_deref_ecma_string (index_zero_string_p);
|
||||
ecma_dealloc_number (zero_number_p);
|
||||
}
|
||||
|
||||
ECMA_FINALIZE (global_value);
|
||||
@@ -727,12 +714,12 @@ ecma_builtin_string_prototype_object_replace_match (ecma_builtin_replace_search_
|
||||
/* We use the length of the result string to determine the
|
||||
* match end. This works regardless the global flag is set. */
|
||||
ecma_string_t *result_string_p = ecma_get_string_from_value (result_string_value);
|
||||
ecma_number_t *index_number_p = ecma_get_number_from_value (index_value);
|
||||
ecma_number_t index_number = ecma_get_number_from_value (index_value);
|
||||
|
||||
context_p->match_start = (ecma_length_t) (*index_number_p);
|
||||
context_p->match_start = (ecma_length_t) (index_number);
|
||||
context_p->match_end = context_p->match_start + (ecma_length_t) ecma_string_get_length (result_string_p);
|
||||
|
||||
JERRY_ASSERT ((ecma_length_t) ecma_number_to_uint32 (*index_number_p) == context_p->match_start);
|
||||
JERRY_ASSERT ((ecma_length_t) ecma_number_to_uint32 (index_number) == context_p->match_start);
|
||||
|
||||
ret_value = ecma_copy_value (match_value);
|
||||
|
||||
@@ -800,10 +787,10 @@ ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_se
|
||||
|
||||
JERRY_ASSERT (ecma_is_value_number (match_length_value));
|
||||
|
||||
ecma_number_t *match_length_number_p = ecma_get_number_from_value (match_length_value);
|
||||
ecma_length_t match_length = (ecma_length_t) (*match_length_number_p);
|
||||
ecma_number_t match_length_number = ecma_get_number_from_value (match_length_value);
|
||||
ecma_length_t match_length = (ecma_length_t) (match_length_number);
|
||||
|
||||
JERRY_ASSERT ((ecma_length_t) ecma_number_to_uint32 (*match_length_number_p) == match_length);
|
||||
JERRY_ASSERT ((ecma_length_t) ecma_number_to_uint32 (match_length_number) == match_length);
|
||||
JERRY_ASSERT (match_length >= 1);
|
||||
|
||||
if (context_p->is_replace_callable)
|
||||
@@ -834,10 +821,7 @@ ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_se
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ecma_number_t *index_number_p = ecma_alloc_number ();
|
||||
|
||||
*index_number_p = context_p->match_start;
|
||||
arguments_list[match_length] = ecma_make_number_value (index_number_p);
|
||||
arguments_list[match_length] = ecma_make_number_value (context_p->match_start);
|
||||
arguments_list[match_length + 1] = ecma_copy_value (context_p->input_string);
|
||||
|
||||
ECMA_TRY_CATCH (result_value,
|
||||
@@ -857,7 +841,6 @@ ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_se
|
||||
ECMA_FINALIZE (result_value);
|
||||
|
||||
ecma_free_value (arguments_list[match_length + 1]);
|
||||
ecma_dealloc_number (index_number_p);
|
||||
}
|
||||
|
||||
for (ecma_length_t i = 0; i < values_copied; i++)
|
||||
@@ -1122,19 +1105,15 @@ ecma_builtin_string_prototype_object_replace_loop (ecma_builtin_replace_search_c
|
||||
{
|
||||
ecma_string_t *last_index_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_LASTINDEX_UL);
|
||||
ecma_object_t *regexp_obj_p = ecma_get_object_from_value (context_p->regexp_or_search_string);
|
||||
ecma_number_t *zero_number_p = ecma_alloc_number ();
|
||||
|
||||
*zero_number_p = context_p->match_end + 1;
|
||||
|
||||
ECMA_TRY_CATCH (put_value,
|
||||
ecma_op_object_put (regexp_obj_p,
|
||||
last_index_string_p,
|
||||
ecma_make_number_value (zero_number_p),
|
||||
ecma_make_number_value (context_p->match_end + 1),
|
||||
true),
|
||||
ret_value);
|
||||
|
||||
ECMA_FINALIZE (put_value);
|
||||
ecma_dealloc_number (zero_number_p);
|
||||
ecma_deref_ecma_string (last_index_string_p);
|
||||
}
|
||||
}
|
||||
@@ -1286,18 +1265,15 @@ ecma_builtin_string_prototype_object_replace (ecma_value_t this_arg, /**< this a
|
||||
if (context.is_global)
|
||||
{
|
||||
ecma_string_t *last_index_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_LASTINDEX_UL);
|
||||
ecma_number_t *zero_number_p = ecma_alloc_number ();
|
||||
*zero_number_p = 0;
|
||||
|
||||
ECMA_TRY_CATCH (put_value,
|
||||
ecma_op_object_put (regexp_obj_p,
|
||||
last_index_string_p,
|
||||
ecma_make_number_value (zero_number_p),
|
||||
ecma_make_integer_value (0),
|
||||
true),
|
||||
ret_value);
|
||||
|
||||
ECMA_FINALIZE (put_value);
|
||||
ecma_dealloc_number (zero_number_p);
|
||||
ecma_deref_ecma_string (last_index_string_p);
|
||||
}
|
||||
|
||||
@@ -1401,7 +1377,7 @@ ecma_builtin_string_prototype_object_search (ecma_value_t this_arg, /**< this ar
|
||||
|
||||
JERRY_ASSERT (ecma_is_value_number (index_value));
|
||||
|
||||
offset = *ecma_get_number_from_value (index_value);
|
||||
offset = ecma_get_number_from_value (index_value);
|
||||
|
||||
ECMA_FINALIZE (index_value);
|
||||
ecma_deref_ecma_string (index_string_p);
|
||||
@@ -1409,10 +1385,7 @@ ecma_builtin_string_prototype_object_search (ecma_value_t this_arg, /**< this ar
|
||||
|
||||
if (ecma_is_value_empty (ret_value))
|
||||
{
|
||||
ecma_number_t *offset_number_p = ecma_alloc_number ();
|
||||
*offset_number_p = offset;
|
||||
|
||||
ret_value = ecma_make_number_value (offset_number_p);
|
||||
ret_value = ecma_make_number_value (offset);
|
||||
}
|
||||
|
||||
ECMA_FINALIZE (match_result);
|
||||
@@ -1546,8 +1519,8 @@ ecma_builtin_helper_split_match (ecma_value_t input_string, /**< first argument
|
||||
ecma_string_t *magic_index_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_INDEX);
|
||||
ecma_property_t *index_prop_p = ecma_get_named_property (obj_p, magic_index_str_p);
|
||||
|
||||
ecma_number_t *index_num_p = ecma_get_number_from_value (ecma_get_named_data_property_value (index_prop_p));
|
||||
*index_num_p += start_idx;
|
||||
ecma_number_t index_num = ecma_get_number_from_value (ecma_get_named_data_property_value (index_prop_p));
|
||||
ecma_value_assign_number (&ECMA_PROPERTY_VALUE_PTR (index_prop_p)->value, index_num + start_idx);
|
||||
|
||||
ecma_deref_ecma_string (magic_index_str_p);
|
||||
}
|
||||
@@ -1603,14 +1576,12 @@ ecma_builtin_helper_split_match (ecma_value_t input_string, /**< first argument
|
||||
true, false, false);
|
||||
ecma_deref_ecma_string (magic_index_str_p);
|
||||
|
||||
ecma_number_t *index_num_p = ecma_alloc_number ();
|
||||
*index_num_p = ((ecma_number_t) start_idx);
|
||||
|
||||
ecma_named_data_property_assign_value (match_array_p, index_prop_p, ecma_make_number_value (index_num_p));
|
||||
ecma_named_data_property_assign_value (match_array_p,
|
||||
index_prop_p,
|
||||
ecma_make_uint32_value (start_idx));
|
||||
|
||||
ret_value = match_array;
|
||||
|
||||
ecma_dealloc_number (index_num_p);
|
||||
ecma_deref_ecma_string (zero_str_p);
|
||||
}
|
||||
else
|
||||
@@ -1809,10 +1780,10 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg
|
||||
ecma_property_t *index_prop_p = ecma_get_named_property (match_array_obj_p, magic_index_str_p);
|
||||
|
||||
ecma_value_t index_value = ecma_get_named_data_property_value (index_prop_p);
|
||||
ecma_number_t *index_num_p = ecma_get_number_from_value (index_value);
|
||||
JERRY_ASSERT (*index_num_p >= 0);
|
||||
ecma_number_t index_num = ecma_get_number_from_value (index_value);
|
||||
JERRY_ASSERT (index_num >= 0);
|
||||
|
||||
uint32_t end_pos = ecma_number_to_uint32 (*index_num_p);
|
||||
uint32_t end_pos = ecma_number_to_uint32 (index_num);
|
||||
|
||||
if (separator_is_empty)
|
||||
{
|
||||
|
||||
@@ -321,11 +321,7 @@ ecma_builtin_try_to_instantiate_property (ecma_object_t *object_p, /**< object *
|
||||
string_p,
|
||||
false, false, false);
|
||||
|
||||
|
||||
ecma_number_t *len_p = ecma_alloc_number ();
|
||||
*len_p = length_prop_value;
|
||||
|
||||
ecma_set_named_data_property_value (len_prop_p, ecma_make_number_value (len_p));
|
||||
ecma_set_named_data_property_value (len_prop_p, ecma_make_uint32_value (length_prop_value));
|
||||
|
||||
JERRY_ASSERT (!ecma_is_property_configurable (len_prop_p));
|
||||
return len_prop_p;
|
||||
|
||||
Reference in New Issue
Block a user