Performance optimizations
* inline some hot function * add 'ecma_copy_value_if_not_object' similer to 'ecma_value_free_if_not_object' * remove unnecessary helpers * improve 'do_number_bitwise_logic' JerryScript-DCO-1.0-Signed-off-by: László Langó llango.u-szeged@partner.samsung.com
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
||||||
|
* Copyright 2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -810,28 +811,6 @@ ecma_uint32_to_utf8_string (uint32_t value, /**< value to convert */
|
|||||||
return bytes_copied;
|
return bytes_copied;
|
||||||
} /* ecma_uint32_to_utf8_string */
|
} /* ecma_uint32_to_utf8_string */
|
||||||
|
|
||||||
/**
|
|
||||||
* ECMA-defined conversion of UInt32 value to Number value
|
|
||||||
*
|
|
||||||
* @return number - result of conversion.
|
|
||||||
*/
|
|
||||||
ecma_number_t
|
|
||||||
ecma_uint32_to_number (uint32_t value) /**< unsigned 32-bit integer value */
|
|
||||||
{
|
|
||||||
return (ecma_number_t) value;
|
|
||||||
} /* ecma_uint32_to_number */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ECMA-defined conversion of Int32 value to Number value
|
|
||||||
*
|
|
||||||
* @return number - result of conversion.
|
|
||||||
*/
|
|
||||||
ecma_number_t
|
|
||||||
ecma_int32_to_number (int32_t value) /**< signed 32-bit integer value */
|
|
||||||
{
|
|
||||||
return (ecma_number_t) value;
|
|
||||||
} /* ecma_int32_to_number */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ECMA-defined conversion of Number value to UInt32 value
|
* ECMA-defined conversion of Number value to UInt32 value
|
||||||
*
|
*
|
||||||
@@ -1344,7 +1323,8 @@ ecma_number_to_utf8_string (ecma_number_t num, /**< ecma-number */
|
|||||||
|
|
||||||
// 5.
|
// 5.
|
||||||
uint32_t num_uint32 = ecma_number_to_uint32 (num);
|
uint32_t num_uint32 = ecma_number_to_uint32 (num);
|
||||||
if (ecma_uint32_to_number (num_uint32) == num)
|
|
||||||
|
if (((ecma_number_t) num_uint32) == num)
|
||||||
{
|
{
|
||||||
size = ecma_uint32_to_utf8_string (num_uint32, dst_p, buffer_size);
|
size = ecma_uint32_to_utf8_string (num_uint32, dst_p, buffer_size);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -230,7 +230,7 @@ ecma_number_get_sign_field (ecma_number_t num) /**< ecma-number */
|
|||||||
fraction is filled with anything but not all zero bits,
|
fraction is filled with anything but not all zero bits,
|
||||||
* false - otherwise
|
* false - otherwise
|
||||||
*/
|
*/
|
||||||
bool
|
bool __attr_always_inline___
|
||||||
ecma_number_is_nan (ecma_number_t num) /**< ecma-number */
|
ecma_number_is_nan (ecma_number_t num) /**< ecma-number */
|
||||||
{
|
{
|
||||||
bool is_nan = (num != num);
|
bool is_nan = (num != num);
|
||||||
@@ -283,7 +283,7 @@ ecma_number_make_infinity (bool sign) /**< true - for negative Infinity,
|
|||||||
* @return true - if sign bit of ecma-number is set
|
* @return true - if sign bit of ecma-number is set
|
||||||
* false - otherwise
|
* false - otherwise
|
||||||
*/
|
*/
|
||||||
bool
|
bool __attr_always_inline___
|
||||||
ecma_number_is_negative (ecma_number_t num) /**< ecma-number */
|
ecma_number_is_negative (ecma_number_t num) /**< ecma-number */
|
||||||
{
|
{
|
||||||
JERRY_ASSERT (!ecma_number_is_nan (num));
|
JERRY_ASSERT (!ecma_number_is_nan (num));
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ ecma_string_t *
|
|||||||
ecma_new_ecma_string_from_number (ecma_number_t num) /**< ecma-number */
|
ecma_new_ecma_string_from_number (ecma_number_t num) /**< ecma-number */
|
||||||
{
|
{
|
||||||
uint32_t uint32_num = ecma_number_to_uint32 (num);
|
uint32_t uint32_num = ecma_number_to_uint32 (num);
|
||||||
if (num == ecma_uint32_to_number (uint32_num))
|
if (num == ((ecma_number_t) uint32_num))
|
||||||
{
|
{
|
||||||
return ecma_new_ecma_string_from_uint32 (uint32_num);
|
return ecma_new_ecma_string_from_uint32 (uint32_num);
|
||||||
}
|
}
|
||||||
@@ -533,7 +533,7 @@ ecma_string_to_number (const ecma_string_t *str_p) /**< ecma-string */
|
|||||||
{
|
{
|
||||||
uint32_t uint32_number = str_p->u.uint32_number;
|
uint32_t uint32_number = str_p->u.uint32_number;
|
||||||
|
|
||||||
return ecma_uint32_to_number (uint32_number);
|
return ((ecma_number_t) uint32_number);
|
||||||
}
|
}
|
||||||
|
|
||||||
case ECMA_STRING_CONTAINER_HEAP_NUMBER:
|
case ECMA_STRING_CONTAINER_HEAP_NUMBER:
|
||||||
@@ -1002,36 +1002,13 @@ ecma_compare_ecma_strings_longpath (const ecma_string_t *string1_p, /* ecma-stri
|
|||||||
return is_equal;
|
return is_equal;
|
||||||
} /* ecma_compare_ecma_strings_longpath */
|
} /* ecma_compare_ecma_strings_longpath */
|
||||||
|
|
||||||
/**
|
|
||||||
* Compare ecma-string to ecma-string if they're hashes are equal
|
|
||||||
*
|
|
||||||
* @return true - if strings are equal;
|
|
||||||
* false - may be.
|
|
||||||
*/
|
|
||||||
bool
|
|
||||||
ecma_compare_ecma_strings_equal_hashes (const ecma_string_t *string1_p, /* ecma-string */
|
|
||||||
const ecma_string_t *string2_p) /* ecma-string */
|
|
||||||
{
|
|
||||||
JERRY_ASSERT (string1_p->hash == string2_p->hash);
|
|
||||||
|
|
||||||
if (ECMA_STRING_GET_CONTAINER (string1_p) == ECMA_STRING_GET_CONTAINER (string2_p)
|
|
||||||
&& string1_p->u.common_field == string2_p->u.common_field)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} /* ecma_compare_ecma_strings_equal_hashes */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compare ecma-string to ecma-string
|
* Compare ecma-string to ecma-string
|
||||||
*
|
*
|
||||||
* @return true - if strings are equal;
|
* @return true - if strings are equal;
|
||||||
* false - otherwise.
|
* false - otherwise.
|
||||||
*/
|
*/
|
||||||
bool
|
bool __attr_always_inline___
|
||||||
ecma_compare_ecma_strings (const ecma_string_t *string1_p, /* ecma-string */
|
ecma_compare_ecma_strings (const ecma_string_t *string1_p, /* ecma-string */
|
||||||
const ecma_string_t *string2_p) /* ecma-string */
|
const ecma_string_t *string2_p) /* ecma-string */
|
||||||
{
|
{
|
||||||
@@ -1042,14 +1019,13 @@ ecma_compare_ecma_strings (const ecma_string_t *string1_p, /* ecma-string */
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ecma_compare_ecma_strings_equal_hashes (string1_p, string2_p))
|
if (ECMA_STRING_GET_CONTAINER (string1_p) == ECMA_STRING_GET_CONTAINER (string2_p)
|
||||||
|
&& string1_p->u.common_field == string2_p->u.common_field)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
return ecma_compare_ecma_strings_longpath (string1_p, string2_p);
|
||||||
return ecma_compare_ecma_strings_longpath (string1_p, string2_p);
|
|
||||||
}
|
|
||||||
} /* ecma_compare_ecma_strings */
|
} /* ecma_compare_ecma_strings */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/* Copyright 2015-2016 Samsung Electronics Co., Ltd.
|
/* Copyright 2015-2016 Samsung Electronics Co., Ltd.
|
||||||
|
* Copyright 2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -397,38 +398,16 @@ ecma_get_value_from_error_value (ecma_value_t value) /**< ecma value */
|
|||||||
/**
|
/**
|
||||||
* Copy ecma value.
|
* Copy ecma value.
|
||||||
*
|
*
|
||||||
* Note:
|
* @return copy of the given value
|
||||||
* Operation algorithm.
|
|
||||||
* switch (valuetype)
|
|
||||||
* case simple:
|
|
||||||
* simply return the value as it was passed;
|
|
||||||
* case number:
|
|
||||||
* copy the number
|
|
||||||
* and return new ecma value
|
|
||||||
* pointing to copy of the number;
|
|
||||||
* case string:
|
|
||||||
* increase reference counter of the string
|
|
||||||
* and return the value as it was passed.
|
|
||||||
* case object;
|
|
||||||
* increase reference counter of the object if do_ref_if_object is true
|
|
||||||
* and return the value as it was passed.
|
|
||||||
*
|
|
||||||
* @return See note.
|
|
||||||
*/
|
*/
|
||||||
ecma_value_t
|
ecma_value_t
|
||||||
ecma_copy_value (ecma_value_t value, /**< ecma value */
|
ecma_copy_value (ecma_value_t value) /**< value description */
|
||||||
bool do_ref_if_object) /**< if the value is object value,
|
|
||||||
increment reference counter of the object */
|
|
||||||
{
|
{
|
||||||
ecma_value_t value_copy = 0;
|
|
||||||
|
|
||||||
switch (ecma_get_value_type_field (value))
|
switch (ecma_get_value_type_field (value))
|
||||||
{
|
{
|
||||||
case ECMA_TYPE_SIMPLE:
|
case ECMA_TYPE_SIMPLE:
|
||||||
{
|
{
|
||||||
value_copy = value;
|
return value;
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case ECMA_TYPE_NUMBER:
|
case ECMA_TYPE_NUMBER:
|
||||||
{
|
{
|
||||||
@@ -437,38 +416,38 @@ ecma_copy_value (ecma_value_t value, /**< ecma value */
|
|||||||
ecma_number_t *number_copy_p = ecma_alloc_number ();
|
ecma_number_t *number_copy_p = ecma_alloc_number ();
|
||||||
*number_copy_p = *num_p;
|
*number_copy_p = *num_p;
|
||||||
|
|
||||||
value_copy = ecma_make_number_value (number_copy_p);
|
return ecma_make_number_value (number_copy_p);
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case ECMA_TYPE_STRING:
|
case ECMA_TYPE_STRING:
|
||||||
{
|
{
|
||||||
ecma_string_t *string_p = ecma_get_string_from_value (value);
|
return ecma_make_string_value (ecma_copy_or_ref_ecma_string (ecma_get_string_from_value (value)));
|
||||||
|
|
||||||
string_p = ecma_copy_or_ref_ecma_string (string_p);
|
|
||||||
|
|
||||||
value_copy = ecma_make_string_value (string_p);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case ECMA_TYPE_OBJECT:
|
case ECMA_TYPE_OBJECT:
|
||||||
{
|
{
|
||||||
ecma_object_t *obj_p = ecma_get_object_from_value (value);
|
ecma_ref_object (ecma_get_object_from_value (value));
|
||||||
|
return value;
|
||||||
if (do_ref_if_object)
|
|
||||||
{
|
|
||||||
ecma_ref_object (obj_p);
|
|
||||||
}
|
|
||||||
|
|
||||||
value_copy = value;
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return value_copy;
|
JERRY_UNREACHABLE ();
|
||||||
} /* ecma_copy_value */
|
} /* ecma_copy_value */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy the ecma value if not an object
|
||||||
|
*
|
||||||
|
* @return copy of the given value
|
||||||
|
*/
|
||||||
|
ecma_value_t
|
||||||
|
ecma_copy_value_if_not_object (ecma_value_t value) /**< value description */
|
||||||
|
{
|
||||||
|
if (ecma_get_value_type_field (value) != ECMA_TYPE_OBJECT)
|
||||||
|
{
|
||||||
|
return ecma_copy_value (value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
} /* ecma_copy_value_if_not_object */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Free the ecma value
|
* Free the ecma value
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
|
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
||||||
|
* Copyright 2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -67,7 +68,14 @@ ecma_new_values_collection (const ecma_value_t values_buffer[], /**< ecma values
|
|||||||
|
|
||||||
JERRY_ASSERT (cur_value_buf_iter_p + 1 <= cur_value_buf_end_p);
|
JERRY_ASSERT (cur_value_buf_iter_p + 1 <= cur_value_buf_end_p);
|
||||||
|
|
||||||
*cur_value_buf_iter_p++ = ecma_copy_value (values_buffer[value_index], do_ref_if_object);
|
if (do_ref_if_object)
|
||||||
|
{
|
||||||
|
*cur_value_buf_iter_p++ = ecma_copy_value (values_buffer[value_index]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*cur_value_buf_iter_p++ = ecma_copy_value_if_not_object (values_buffer[value_index]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*next_chunk_cp_p = ECMA_NULL_POINTER;
|
*next_chunk_cp_p = ECMA_NULL_POINTER;
|
||||||
@@ -189,7 +197,14 @@ ecma_append_to_values_collection (ecma_collection_header_t *header_p, /**< colle
|
|||||||
|
|
||||||
JERRY_ASSERT ((uint8_t *) (values_p + pos_of_new_value_in_chunk + 1) <= (uint8_t *) (chunk_p + 1));
|
JERRY_ASSERT ((uint8_t *) (values_p + pos_of_new_value_in_chunk + 1) <= (uint8_t *) (chunk_p + 1));
|
||||||
|
|
||||||
values_p[pos_of_new_value_in_chunk] = ecma_copy_value (v, do_ref_if_object);
|
if (do_ref_if_object)
|
||||||
|
{
|
||||||
|
values_p[pos_of_new_value_in_chunk] = ecma_copy_value (v);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
values_p[pos_of_new_value_in_chunk] = ecma_copy_value_if_not_object (v);
|
||||||
|
}
|
||||||
} /* ecma_append_to_values_collection */
|
} /* ecma_append_to_values_collection */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1001,7 +1001,7 @@ ecma_named_data_property_assign_value (ecma_object_t *obj_p, /**< object */
|
|||||||
ecma_value_t v = ecma_get_named_data_property_value (prop_p);
|
ecma_value_t v = ecma_get_named_data_property_value (prop_p);
|
||||||
ecma_free_value_if_not_object (v);
|
ecma_free_value_if_not_object (v);
|
||||||
|
|
||||||
ecma_set_named_data_property_value (prop_p, ecma_copy_value (value, false));
|
ecma_set_named_data_property_value (prop_p, ecma_copy_value_if_not_object (value));
|
||||||
}
|
}
|
||||||
} /* ecma_named_data_property_assign_value */
|
} /* ecma_named_data_property_assign_value */
|
||||||
|
|
||||||
@@ -1283,7 +1283,7 @@ ecma_get_property_descriptor_from_property (ecma_property_t *prop_p) /**< proper
|
|||||||
|
|
||||||
if (prop_p->flags & ECMA_PROPERTY_FLAG_NAMEDDATA)
|
if (prop_p->flags & ECMA_PROPERTY_FLAG_NAMEDDATA)
|
||||||
{
|
{
|
||||||
prop_desc.value = ecma_copy_value (ecma_get_named_data_property_value (prop_p), true);
|
prop_desc.value = ecma_copy_value (ecma_get_named_data_property_value (prop_p));
|
||||||
prop_desc.is_value_defined = true;
|
prop_desc.is_value_defined = true;
|
||||||
prop_desc.is_writable = ecma_is_property_writable (prop_p);
|
prop_desc.is_writable = ecma_is_property_writable (prop_p);
|
||||||
prop_desc.is_writable_defined = true;
|
prop_desc.is_writable_defined = true;
|
||||||
|
|||||||
@@ -80,7 +80,8 @@ extern ecma_number_t *ecma_get_number_from_value (ecma_value_t) __attr_pure___;
|
|||||||
extern ecma_string_t *ecma_get_string_from_value (ecma_value_t) __attr_pure___;
|
extern ecma_string_t *ecma_get_string_from_value (ecma_value_t) __attr_pure___;
|
||||||
extern ecma_object_t *ecma_get_object_from_value (ecma_value_t) __attr_pure___;
|
extern ecma_object_t *ecma_get_object_from_value (ecma_value_t) __attr_pure___;
|
||||||
extern ecma_value_t ecma_get_value_from_error_value (ecma_value_t) __attr_pure___;
|
extern ecma_value_t ecma_get_value_from_error_value (ecma_value_t) __attr_pure___;
|
||||||
extern ecma_value_t ecma_copy_value (ecma_value_t, bool);
|
extern ecma_value_t ecma_copy_value (ecma_value_t);
|
||||||
|
extern ecma_value_t ecma_copy_value_if_not_object (ecma_value_t);
|
||||||
extern void ecma_free_value (ecma_value_t);
|
extern void ecma_free_value (ecma_value_t);
|
||||||
extern void ecma_free_value_if_not_object (ecma_value_t);
|
extern void ecma_free_value_if_not_object (ecma_value_t);
|
||||||
|
|
||||||
@@ -243,8 +244,6 @@ extern ecma_number_t ecma_utf8_string_to_number (const lit_utf8_byte_t *, lit_ut
|
|||||||
extern lit_utf8_size_t ecma_uint32_to_utf8_string (uint32_t, lit_utf8_byte_t *, lit_utf8_size_t);
|
extern lit_utf8_size_t ecma_uint32_to_utf8_string (uint32_t, lit_utf8_byte_t *, lit_utf8_size_t);
|
||||||
extern uint32_t ecma_number_to_uint32 (ecma_number_t);
|
extern uint32_t ecma_number_to_uint32 (ecma_number_t);
|
||||||
extern int32_t ecma_number_to_int32 (ecma_number_t);
|
extern int32_t ecma_number_to_int32 (ecma_number_t);
|
||||||
extern ecma_number_t ecma_int32_to_number (int32_t);
|
|
||||||
extern ecma_number_t ecma_uint32_to_number (uint32_t);
|
|
||||||
extern lit_utf8_size_t ecma_number_to_utf8_string (ecma_number_t, lit_utf8_byte_t *, lit_utf8_size_t);
|
extern lit_utf8_size_t ecma_number_to_utf8_string (ecma_number_t, lit_utf8_byte_t *, lit_utf8_size_t);
|
||||||
|
|
||||||
#endif /* !ECMA_HELPERS_H */
|
#endif /* !ECMA_HELPERS_H */
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
|
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
||||||
|
* Copyright 2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -256,7 +257,10 @@ ecma_lcache_lookup (ecma_object_t *object_p, /**< object */
|
|||||||
ecma_string_t *entry_prop_name_p = ECMA_GET_NON_NULL_POINTER (ecma_string_t,
|
ecma_string_t *entry_prop_name_p = ECMA_GET_NON_NULL_POINTER (ecma_string_t,
|
||||||
ecma_lcache_hash_table[hash_key][i].prop_name_cp);
|
ecma_lcache_hash_table[hash_key][i].prop_name_cp);
|
||||||
|
|
||||||
if (ecma_compare_ecma_strings_equal_hashes (prop_name_p, entry_prop_name_p))
|
JERRY_ASSERT (prop_name_p->hash == entry_prop_name_p->hash);
|
||||||
|
|
||||||
|
if (ECMA_STRING_GET_CONTAINER (prop_name_p) == ECMA_STRING_GET_CONTAINER (entry_prop_name_p)
|
||||||
|
&& prop_name_p->u.common_field == entry_prop_name_p->u.common_field)
|
||||||
{
|
{
|
||||||
ecma_property_t *prop_p = ECMA_GET_POINTER (ecma_property_t, ecma_lcache_hash_table[hash_key][i].prop_cp);
|
ecma_property_t *prop_p = ECMA_GET_POINTER (ecma_property_t, ecma_lcache_hash_table[hash_key][i].prop_cp);
|
||||||
JERRY_ASSERT (prop_p == NULL || ecma_is_property_lcached (prop_p));
|
JERRY_ASSERT (prop_p == NULL || ecma_is_property_lcached (prop_p));
|
||||||
|
|||||||
@@ -270,7 +270,7 @@ ecma_builtin_array_prototype_object_concat (ecma_value_t this_arg, /**< this arg
|
|||||||
if (ecma_is_value_empty (ret_value))
|
if (ecma_is_value_empty (ret_value))
|
||||||
{
|
{
|
||||||
ECMA_TRY_CATCH (set_length_value,
|
ECMA_TRY_CATCH (set_length_value,
|
||||||
ecma_builtin_array_prototype_helper_set_length (new_array_p, ecma_uint32_to_number (new_length)),
|
ecma_builtin_array_prototype_helper_set_length (new_array_p, ((ecma_number_t) new_length)),
|
||||||
ret_value);
|
ret_value);
|
||||||
ret_value = new_array;
|
ret_value = new_array;
|
||||||
ECMA_FINALIZE (set_length_value);
|
ECMA_FINALIZE (set_length_value);
|
||||||
@@ -512,10 +512,10 @@ ecma_builtin_array_prototype_object_pop (ecma_value_t this_arg) /**< this argume
|
|||||||
|
|
||||||
/* 5.d */
|
/* 5.d */
|
||||||
ECMA_TRY_CATCH (set_length_value,
|
ECMA_TRY_CATCH (set_length_value,
|
||||||
ecma_builtin_array_prototype_helper_set_length (obj_p, ecma_uint32_to_number (len)),
|
ecma_builtin_array_prototype_helper_set_length (obj_p, ((ecma_number_t) len)),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ret_value = ecma_copy_value (get_value, true);
|
ret_value = ecma_copy_value (get_value);
|
||||||
|
|
||||||
ECMA_FINALIZE (set_length_value);
|
ECMA_FINALIZE (set_length_value);
|
||||||
ECMA_FINALIZE (del_value);
|
ECMA_FINALIZE (del_value);
|
||||||
@@ -561,7 +561,7 @@ ecma_builtin_array_prototype_object_push (ecma_value_t this_arg, /**< this argum
|
|||||||
/* 3. */
|
/* 3. */
|
||||||
ECMA_OP_TO_NUMBER_TRY_CATCH (length_var, length_value, ret_value);
|
ECMA_OP_TO_NUMBER_TRY_CATCH (length_var, length_value, ret_value);
|
||||||
|
|
||||||
ecma_number_t n = ecma_uint32_to_number (ecma_number_to_uint32 (length_var));
|
ecma_number_t n = ((ecma_number_t) ecma_number_to_uint32 (length_var));
|
||||||
|
|
||||||
/* 5. */
|
/* 5. */
|
||||||
for (uint32_t index = 0;
|
for (uint32_t index = 0;
|
||||||
@@ -691,7 +691,7 @@ ecma_builtin_array_prototype_object_reverse (ecma_value_t this_arg) /**< this ar
|
|||||||
if (ecma_is_value_empty (ret_value))
|
if (ecma_is_value_empty (ret_value))
|
||||||
{
|
{
|
||||||
/* 7. */
|
/* 7. */
|
||||||
ret_value = ecma_copy_value (obj_this, true);
|
ret_value = ecma_copy_value (obj_this);
|
||||||
}
|
}
|
||||||
|
|
||||||
ECMA_OP_TO_NUMBER_FINALIZE (len_number);
|
ECMA_OP_TO_NUMBER_FINALIZE (len_number);
|
||||||
@@ -793,10 +793,10 @@ ecma_builtin_array_prototype_object_shift (ecma_value_t this_arg) /**< this argu
|
|||||||
|
|
||||||
/* 9. */
|
/* 9. */
|
||||||
ECMA_TRY_CATCH (set_length_value,
|
ECMA_TRY_CATCH (set_length_value,
|
||||||
ecma_builtin_array_prototype_helper_set_length (obj_p, ecma_uint32_to_number (len)),
|
ecma_builtin_array_prototype_helper_set_length (obj_p, ((ecma_number_t) len)),
|
||||||
ret_value);
|
ret_value);
|
||||||
/* 10. */
|
/* 10. */
|
||||||
ret_value = ecma_copy_value (first_value, true);
|
ret_value = ecma_copy_value (first_value);
|
||||||
|
|
||||||
ECMA_FINALIZE (set_length_value);
|
ECMA_FINALIZE (set_length_value);
|
||||||
ECMA_FINALIZE (del_value);
|
ECMA_FINALIZE (del_value);
|
||||||
@@ -1266,7 +1266,7 @@ ecma_builtin_array_prototype_object_sort (ecma_value_t this_arg, /**< this argum
|
|||||||
|
|
||||||
ECMA_TRY_CATCH (index_value, ecma_op_object_get (obj_p, property_name_p), ret_value);
|
ECMA_TRY_CATCH (index_value, ecma_op_object_get (obj_p, property_name_p), ret_value);
|
||||||
|
|
||||||
values_buffer[copied_num++] = ecma_copy_value (index_value, true);
|
values_buffer[copied_num++] = ecma_copy_value (index_value);
|
||||||
|
|
||||||
ECMA_FINALIZE (index_value);
|
ECMA_FINALIZE (index_value);
|
||||||
}
|
}
|
||||||
@@ -1330,7 +1330,7 @@ ecma_builtin_array_prototype_object_sort (ecma_value_t this_arg, /**< this argum
|
|||||||
|
|
||||||
if (ecma_is_value_empty (ret_value))
|
if (ecma_is_value_empty (ret_value))
|
||||||
{
|
{
|
||||||
ret_value = ecma_copy_value (this_arg, true);
|
ret_value = ecma_copy_value (this_arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
ECMA_OP_TO_NUMBER_FINALIZE (len_number);
|
ECMA_OP_TO_NUMBER_FINALIZE (len_number);
|
||||||
@@ -1607,7 +1607,7 @@ ecma_builtin_array_prototype_object_splice (ecma_value_t this_arg, /**< this arg
|
|||||||
if (ecma_is_value_empty (ret_value))
|
if (ecma_is_value_empty (ret_value))
|
||||||
{
|
{
|
||||||
ECMA_TRY_CATCH (set_length_value,
|
ECMA_TRY_CATCH (set_length_value,
|
||||||
ecma_builtin_array_prototype_helper_set_length (obj_p, ecma_uint32_to_number (new_len)),
|
ecma_builtin_array_prototype_helper_set_length (obj_p, ((ecma_number_t) new_len)),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ECMA_FINALIZE (set_length_value);
|
ECMA_FINALIZE (set_length_value);
|
||||||
@@ -1670,7 +1670,7 @@ ecma_builtin_array_prototype_object_unshift (ecma_value_t this_arg, /**< this ar
|
|||||||
/* 6.a */
|
/* 6.a */
|
||||||
ecma_string_t *from_str_p = ecma_new_ecma_string_from_uint32 (k - 1);
|
ecma_string_t *from_str_p = ecma_new_ecma_string_from_uint32 (k - 1);
|
||||||
/* 6.b */
|
/* 6.b */
|
||||||
ecma_number_t new_idx = ecma_uint32_to_number (k) + ecma_uint32_to_number (args_number) - 1;
|
ecma_number_t new_idx = ((ecma_number_t) k) + ((ecma_number_t) args_number) - 1;
|
||||||
ecma_string_t *to_str_p = ecma_new_ecma_string_from_number (new_idx);
|
ecma_string_t *to_str_p = ecma_new_ecma_string_from_number (new_idx);
|
||||||
|
|
||||||
/* 6.c */
|
/* 6.c */
|
||||||
@@ -1708,7 +1708,7 @@ ecma_builtin_array_prototype_object_unshift (ecma_value_t this_arg, /**< this ar
|
|||||||
|
|
||||||
if (ecma_is_value_empty (ret_value))
|
if (ecma_is_value_empty (ret_value))
|
||||||
{
|
{
|
||||||
ecma_number_t new_len = ecma_uint32_to_number (len) + ecma_uint32_to_number (args_number);
|
ecma_number_t new_len = ((ecma_number_t) len) + ((ecma_number_t) args_number);
|
||||||
/* 10. */
|
/* 10. */
|
||||||
ECMA_TRY_CATCH (set_length_value,
|
ECMA_TRY_CATCH (set_length_value,
|
||||||
ecma_builtin_array_prototype_helper_set_length (obj_p, new_len),
|
ecma_builtin_array_prototype_helper_set_length (obj_p, new_len),
|
||||||
@@ -1796,7 +1796,7 @@ ecma_builtin_array_prototype_object_index_of (ecma_value_t this_arg, /**< this a
|
|||||||
/* 9.b.ii */
|
/* 9.b.ii */
|
||||||
if (ecma_op_strict_equality_compare (arg1, get_value))
|
if (ecma_op_strict_equality_compare (arg1, get_value))
|
||||||
{
|
{
|
||||||
found_index = ecma_uint32_to_number (from_idx);
|
found_index = ((ecma_number_t) from_idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
ECMA_FINALIZE (get_value);
|
ECMA_FINALIZE (get_value);
|
||||||
@@ -1951,7 +1951,7 @@ ecma_builtin_array_prototype_object_last_index_of (ecma_value_t this_arg, /**< t
|
|||||||
/* 8.b.ii */
|
/* 8.b.ii */
|
||||||
if (ecma_op_strict_equality_compare (search_element, get_value))
|
if (ecma_op_strict_equality_compare (search_element, get_value))
|
||||||
{
|
{
|
||||||
*num_p = ecma_uint32_to_number (from_idx);
|
*num_p = ((ecma_number_t) from_idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
ECMA_FINALIZE (get_value);
|
ECMA_FINALIZE (get_value);
|
||||||
@@ -2041,7 +2041,7 @@ ecma_builtin_array_prototype_object_every (ecma_value_t this_arg, /**< this argu
|
|||||||
/* 7.c.i */
|
/* 7.c.i */
|
||||||
ECMA_TRY_CATCH (get_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
ECMA_TRY_CATCH (get_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||||
|
|
||||||
*num_p = ecma_uint32_to_number (index);
|
*num_p = ((ecma_number_t) index);
|
||||||
current_index = ecma_make_number_value (num_p);
|
current_index = ecma_make_number_value (num_p);
|
||||||
|
|
||||||
ecma_value_t call_args[] = { get_value, current_index, obj_this };
|
ecma_value_t call_args[] = { get_value, current_index, obj_this };
|
||||||
@@ -2142,7 +2142,7 @@ ecma_builtin_array_prototype_object_some (ecma_value_t this_arg, /**< this argum
|
|||||||
/* 7.c.i */
|
/* 7.c.i */
|
||||||
ECMA_TRY_CATCH (get_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
ECMA_TRY_CATCH (get_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||||
|
|
||||||
*num_p = ecma_uint32_to_number (index);
|
*num_p = ((ecma_number_t) index);
|
||||||
current_index = ecma_make_number_value (num_p);
|
current_index = ecma_make_number_value (num_p);
|
||||||
|
|
||||||
ecma_value_t call_args[] = { get_value, current_index, obj_this };
|
ecma_value_t call_args[] = { get_value, current_index, obj_this };
|
||||||
@@ -2242,7 +2242,7 @@ ecma_builtin_array_prototype_object_for_each (ecma_value_t this_arg, /**< this a
|
|||||||
/* 7.c.i */
|
/* 7.c.i */
|
||||||
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||||
|
|
||||||
*num_p = ecma_uint32_to_number (index);
|
*num_p = ((ecma_number_t) index);
|
||||||
current_index = ecma_make_number_value (num_p);
|
current_index = ecma_make_number_value (num_p);
|
||||||
|
|
||||||
/* 7.c.ii */
|
/* 7.c.ii */
|
||||||
@@ -2340,7 +2340,7 @@ ecma_builtin_array_prototype_object_map (ecma_value_t this_arg, /**< this argume
|
|||||||
/* 8.c.i */
|
/* 8.c.i */
|
||||||
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||||
/* 8.c.ii */
|
/* 8.c.ii */
|
||||||
*num_p = ecma_uint32_to_number (index);
|
*num_p = ((ecma_number_t) index);
|
||||||
current_index = ecma_make_number_value (num_p);
|
current_index = ecma_make_number_value (num_p);
|
||||||
ecma_value_t call_args[] = {current_value, current_index, obj_this};
|
ecma_value_t call_args[] = {current_value, current_index, obj_this};
|
||||||
|
|
||||||
@@ -2367,7 +2367,7 @@ ecma_builtin_array_prototype_object_map (ecma_value_t this_arg, /**< this argume
|
|||||||
if (ecma_is_value_empty (ret_value))
|
if (ecma_is_value_empty (ret_value))
|
||||||
{
|
{
|
||||||
ECMA_TRY_CATCH (set_length_value,
|
ECMA_TRY_CATCH (set_length_value,
|
||||||
ecma_builtin_array_prototype_helper_set_length (new_array_p, ecma_uint32_to_number (len)),
|
ecma_builtin_array_prototype_helper_set_length (new_array_p, ((ecma_number_t) len)),
|
||||||
ret_value);
|
ret_value);
|
||||||
ret_value = new_array;
|
ret_value = new_array;
|
||||||
ECMA_FINALIZE (set_length_value);
|
ECMA_FINALIZE (set_length_value);
|
||||||
@@ -2457,7 +2457,7 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t this_arg, /**< this arg
|
|||||||
/* 9.c.i */
|
/* 9.c.i */
|
||||||
ECMA_TRY_CATCH (get_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
ECMA_TRY_CATCH (get_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||||
|
|
||||||
*num_p = ecma_uint32_to_number (index);
|
*num_p = ((ecma_number_t) index);
|
||||||
current_index = ecma_make_number_value (num_p);
|
current_index = ecma_make_number_value (num_p);
|
||||||
|
|
||||||
ecma_value_t call_args[] = { get_value, current_index, obj_this };
|
ecma_value_t call_args[] = { get_value, current_index, obj_this };
|
||||||
@@ -2574,7 +2574,7 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg
|
|||||||
/* 7.a */
|
/* 7.a */
|
||||||
if (args_number > 1)
|
if (args_number > 1)
|
||||||
{
|
{
|
||||||
accumulator = ecma_copy_value (initial_value, true);
|
accumulator = ecma_copy_value (initial_value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2590,7 +2590,7 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg
|
|||||||
if ((k_present = (ecma_op_object_get_property (obj_p, index_str_p) != NULL)))
|
if ((k_present = (ecma_op_object_get_property (obj_p, index_str_p) != NULL)))
|
||||||
{
|
{
|
||||||
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||||
accumulator = ecma_copy_value (current_value, true);
|
accumulator = ecma_copy_value (current_value);
|
||||||
ECMA_FINALIZE (current_value);
|
ECMA_FINALIZE (current_value);
|
||||||
}
|
}
|
||||||
/* 8.b.iv */
|
/* 8.b.iv */
|
||||||
@@ -2617,7 +2617,7 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg
|
|||||||
/* 9.c.i */
|
/* 9.c.i */
|
||||||
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||||
/* 9.c.ii */
|
/* 9.c.ii */
|
||||||
*num_p = ecma_uint32_to_number (index);
|
*num_p = ((ecma_number_t) index);
|
||||||
current_index = ecma_make_number_value (num_p);
|
current_index = ecma_make_number_value (num_p);
|
||||||
ecma_value_t call_args[] = {accumulator, current_value, current_index, obj_this};
|
ecma_value_t call_args[] = {accumulator, current_value, current_index, obj_this};
|
||||||
|
|
||||||
@@ -2629,7 +2629,7 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg
|
|||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ecma_free_value (accumulator);
|
ecma_free_value (accumulator);
|
||||||
accumulator = ecma_copy_value (call_value, true);
|
accumulator = ecma_copy_value (call_value);
|
||||||
|
|
||||||
ECMA_FINALIZE (call_value);
|
ECMA_FINALIZE (call_value);
|
||||||
ECMA_FINALIZE (current_value);
|
ECMA_FINALIZE (current_value);
|
||||||
@@ -2640,7 +2640,7 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg
|
|||||||
|
|
||||||
if (ecma_is_value_empty (ret_value))
|
if (ecma_is_value_empty (ret_value))
|
||||||
{
|
{
|
||||||
ret_value = ecma_copy_value (accumulator, true);
|
ret_value = ecma_copy_value (accumulator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2720,7 +2720,7 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th
|
|||||||
/* 7.a */
|
/* 7.a */
|
||||||
if (args_number > 1)
|
if (args_number > 1)
|
||||||
{
|
{
|
||||||
accumulator = ecma_copy_value (initial_value, true);
|
accumulator = ecma_copy_value (initial_value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2736,7 +2736,7 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th
|
|||||||
if ((k_present = (ecma_op_object_get_property (obj_p, index_str_p) != NULL)))
|
if ((k_present = (ecma_op_object_get_property (obj_p, index_str_p) != NULL)))
|
||||||
{
|
{
|
||||||
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||||
accumulator = ecma_copy_value (current_value, true);
|
accumulator = ecma_copy_value (current_value);
|
||||||
ECMA_FINALIZE (current_value);
|
ECMA_FINALIZE (current_value);
|
||||||
}
|
}
|
||||||
/* 8.b.iv */
|
/* 8.b.iv */
|
||||||
@@ -2763,7 +2763,7 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th
|
|||||||
/* 9.c.i */
|
/* 9.c.i */
|
||||||
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
ECMA_TRY_CATCH (current_value, ecma_op_object_get (obj_p, index_str_p), ret_value);
|
||||||
/* 9.c.ii */
|
/* 9.c.ii */
|
||||||
*num_p = ecma_uint32_to_number ((uint32_t) index);
|
*num_p = ((ecma_number_t) (uint32_t) index);
|
||||||
current_index = ecma_make_number_value (num_p);
|
current_index = ecma_make_number_value (num_p);
|
||||||
ecma_value_t call_args[] = {accumulator, current_value, current_index, obj_this};
|
ecma_value_t call_args[] = {accumulator, current_value, current_index, obj_this};
|
||||||
|
|
||||||
@@ -2775,7 +2775,7 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th
|
|||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ecma_free_value (accumulator);
|
ecma_free_value (accumulator);
|
||||||
accumulator = ecma_copy_value (call_value, true);
|
accumulator = ecma_copy_value (call_value);
|
||||||
|
|
||||||
ECMA_FINALIZE (call_value);
|
ECMA_FINALIZE (call_value);
|
||||||
ECMA_FINALIZE (current_value);
|
ECMA_FINALIZE (current_value);
|
||||||
@@ -2786,7 +2786,7 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th
|
|||||||
|
|
||||||
if (ecma_is_value_empty (ret_value))
|
if (ecma_is_value_empty (ret_value))
|
||||||
{
|
{
|
||||||
ret_value = ecma_copy_value (accumulator, true);
|
ret_value = ecma_copy_value (accumulator);
|
||||||
}
|
}
|
||||||
|
|
||||||
ecma_free_value (accumulator);
|
ecma_free_value (accumulator);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
|
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
||||||
|
* Copyright 2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -88,7 +89,7 @@ ecma_builtin_error_prototype_object_to_string (ecma_value_t this_arg) /**< this
|
|||||||
|
|
||||||
if (unlikely (ecma_is_value_error (name_to_str_completion)))
|
if (unlikely (ecma_is_value_error (name_to_str_completion)))
|
||||||
{
|
{
|
||||||
ret_value = ecma_copy_value (name_to_str_completion, true);
|
ret_value = ecma_copy_value (name_to_str_completion);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -113,7 +114,7 @@ ecma_builtin_error_prototype_object_to_string (ecma_value_t this_arg) /**< this
|
|||||||
|
|
||||||
if (unlikely (ecma_is_value_error (msg_to_str_completion)))
|
if (unlikely (ecma_is_value_error (msg_to_str_completion)))
|
||||||
{
|
{
|
||||||
ret_value = ecma_copy_value (msg_to_str_completion, true);
|
ret_value = ecma_copy_value (msg_to_str_completion);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
|
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
||||||
* Copyright 2015-2016 University of Szeged.
|
* Copyright 2015-2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@@ -139,7 +139,7 @@ ecma_builtin_function_prototype_object_apply (ecma_value_t this_arg, /**< this a
|
|||||||
ecma_op_object_get (obj_p, curr_idx_str_p),
|
ecma_op_object_get (obj_p, curr_idx_str_p),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
arguments_list_p[index] = ecma_copy_value (get_value, true);
|
arguments_list_p[index] = ecma_copy_value (get_value);
|
||||||
last_index = index + 1;
|
last_index = index + 1;
|
||||||
|
|
||||||
ECMA_FINALIZE (get_value);
|
ECMA_FINALIZE (get_value);
|
||||||
@@ -256,7 +256,7 @@ ecma_builtin_function_prototype_object_bind (ecma_value_t this_arg, /**< this ar
|
|||||||
|
|
||||||
if (arg_count > 0)
|
if (arg_count > 0)
|
||||||
{
|
{
|
||||||
bound_this_prop_p->v.internal_property.value = ecma_copy_value (arguments_list_p[0], false);
|
bound_this_prop_p->v.internal_property.value = ecma_copy_value_if_not_object (arguments_list_p[0]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -292,7 +292,7 @@ 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;
|
const ecma_length_t bound_arg_count = arg_count > 1 ? arg_count - 1 : 0;
|
||||||
|
|
||||||
/* 15.a */
|
/* 15.a */
|
||||||
*length_p = *ecma_get_number_from_value (get_len_value) - ecma_uint32_to_number (bound_arg_count);
|
*length_p = *ecma_get_number_from_value (get_len_value) - ((ecma_number_t) bound_arg_count);
|
||||||
ecma_free_value (get_len_value);
|
ecma_free_value (get_len_value);
|
||||||
|
|
||||||
/* 15.b */
|
/* 15.b */
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ ecma_builtin_global_object_eval (ecma_value_t this_arg __attr_unused___, /**< th
|
|||||||
if (!ecma_is_value_string (x))
|
if (!ecma_is_value_string (x))
|
||||||
{
|
{
|
||||||
/* step 1 */
|
/* step 1 */
|
||||||
ret_value = ecma_copy_value (x, true);
|
ret_value = ecma_copy_value (x);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -527,7 +527,7 @@ ecma_builtin_helper_string_prototype_object_index_of (ecma_value_t this_arg, /**
|
|||||||
ecma_length_t index_of = 0;
|
ecma_length_t index_of = 0;
|
||||||
if (ecma_builtin_helper_string_find_index (original_str_p, search_str_p, first_index, start, &index_of))
|
if (ecma_builtin_helper_string_find_index (original_str_p, search_str_p, first_index, start, &index_of))
|
||||||
{
|
{
|
||||||
*ret_num_p = ecma_uint32_to_number (index_of);
|
*ret_num_p = ((ecma_number_t) index_of);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret_value = ecma_make_number_value (ret_num_p);
|
ret_value = ecma_make_number_value (ret_num_p);
|
||||||
|
|||||||
@@ -853,7 +853,7 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this'
|
|||||||
/* 4.b.ii.2 */
|
/* 4.b.ii.2 */
|
||||||
if (ecma_is_value_string (value))
|
if (ecma_is_value_string (value))
|
||||||
{
|
{
|
||||||
item = ecma_copy_value (value, true);
|
item = ecma_copy_value (value);
|
||||||
}
|
}
|
||||||
/* 4.b.ii.3 */
|
/* 4.b.ii.3 */
|
||||||
else if (ecma_is_value_number (value))
|
else if (ecma_is_value_number (value))
|
||||||
@@ -862,7 +862,7 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this'
|
|||||||
ecma_op_to_string (value),
|
ecma_op_to_string (value),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
item = ecma_copy_value (str_val, true);
|
item = ecma_copy_value (str_val);
|
||||||
|
|
||||||
ECMA_FINALIZE (str_val);
|
ECMA_FINALIZE (str_val);
|
||||||
}
|
}
|
||||||
@@ -880,7 +880,7 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this'
|
|||||||
ecma_op_to_string (value),
|
ecma_op_to_string (value),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
item = ecma_copy_value (val, true);
|
item = ecma_copy_value (val);
|
||||||
|
|
||||||
ECMA_FINALIZE (val);
|
ECMA_FINALIZE (val);
|
||||||
}
|
}
|
||||||
@@ -916,7 +916,7 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this'
|
|||||||
|
|
||||||
if (ecma_is_value_empty (ret_value))
|
if (ecma_is_value_empty (ret_value))
|
||||||
{
|
{
|
||||||
ecma_value_t space = ecma_copy_value (arg3, true);
|
ecma_value_t space = ecma_copy_value (arg3);
|
||||||
|
|
||||||
/* 5. */
|
/* 5. */
|
||||||
if (ecma_is_value_object (arg3))
|
if (ecma_is_value_object (arg3))
|
||||||
@@ -932,7 +932,7 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this'
|
|||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ecma_free_value (space);
|
ecma_free_value (space);
|
||||||
space = ecma_copy_value (val, true);
|
space = ecma_copy_value (val);
|
||||||
|
|
||||||
ECMA_FINALIZE (val);
|
ECMA_FINALIZE (val);
|
||||||
}
|
}
|
||||||
@@ -944,7 +944,7 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this'
|
|||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ecma_free_value (space);
|
ecma_free_value (space);
|
||||||
space = ecma_copy_value (val, true);
|
space = ecma_copy_value (val);
|
||||||
|
|
||||||
ECMA_FINALIZE (val);
|
ECMA_FINALIZE (val);
|
||||||
}
|
}
|
||||||
@@ -1028,7 +1028,7 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this'
|
|||||||
ecma_builtin_json_str (empty_str_p, obj_wrapper_p, &context),
|
ecma_builtin_json_str (empty_str_p, obj_wrapper_p, &context),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ret_value = ecma_copy_value (str_val, true);
|
ret_value = ecma_copy_value (str_val);
|
||||||
|
|
||||||
ECMA_FINALIZE (str_val);
|
ECMA_FINALIZE (str_val);
|
||||||
|
|
||||||
@@ -1229,7 +1229,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/
|
|||||||
ecma_op_object_get (holder_p, key_p),
|
ecma_op_object_get (holder_p, key_p),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ecma_value_t my_val = ecma_copy_value (value, true);
|
ecma_value_t my_val = ecma_copy_value (value);
|
||||||
|
|
||||||
/* 2. */
|
/* 2. */
|
||||||
if (ecma_is_value_object (my_val))
|
if (ecma_is_value_object (my_val))
|
||||||
@@ -1254,7 +1254,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/
|
|||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ecma_free_value (my_val);
|
ecma_free_value (my_val);
|
||||||
my_val = ecma_copy_value (func_ret_val, true);
|
my_val = ecma_copy_value (func_ret_val);
|
||||||
|
|
||||||
ECMA_FINALIZE (func_ret_val);
|
ECMA_FINALIZE (func_ret_val);
|
||||||
}
|
}
|
||||||
@@ -1276,7 +1276,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/
|
|||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ecma_free_value (my_val);
|
ecma_free_value (my_val);
|
||||||
my_val = ecma_copy_value (func_ret_val, true);
|
my_val = ecma_copy_value (func_ret_val);
|
||||||
|
|
||||||
ECMA_FINALIZE (func_ret_val);
|
ECMA_FINALIZE (func_ret_val);
|
||||||
}
|
}
|
||||||
@@ -1295,7 +1295,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/
|
|||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ecma_free_value (my_val);
|
ecma_free_value (my_val);
|
||||||
my_val = ecma_copy_value (val, true);
|
my_val = ecma_copy_value (val);
|
||||||
|
|
||||||
ECMA_FINALIZE (val);
|
ECMA_FINALIZE (val);
|
||||||
}
|
}
|
||||||
@@ -1307,7 +1307,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/
|
|||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ecma_free_value (my_val);
|
ecma_free_value (my_val);
|
||||||
my_val = ecma_copy_value (val, true);
|
my_val = ecma_copy_value (val);
|
||||||
|
|
||||||
ECMA_FINALIZE (val);
|
ECMA_FINALIZE (val);
|
||||||
}
|
}
|
||||||
@@ -1319,7 +1319,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/
|
|||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ecma_free_value (my_val);
|
ecma_free_value (my_val);
|
||||||
my_val = ecma_copy_value (val, true);
|
my_val = ecma_copy_value (val);
|
||||||
|
|
||||||
ECMA_FINALIZE (val);
|
ECMA_FINALIZE (val);
|
||||||
}
|
}
|
||||||
@@ -1370,7 +1370,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/
|
|||||||
ecma_builtin_json_array (obj_p, context_p),
|
ecma_builtin_json_array (obj_p, context_p),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ret_value = ecma_copy_value (val, true);
|
ret_value = ecma_copy_value (val);
|
||||||
|
|
||||||
ECMA_FINALIZE (val);
|
ECMA_FINALIZE (val);
|
||||||
}
|
}
|
||||||
@@ -1381,7 +1381,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/
|
|||||||
ecma_builtin_json_object (obj_p, context_p),
|
ecma_builtin_json_object (obj_p, context_p),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ret_value = ecma_copy_value (val, true);
|
ret_value = ecma_copy_value (val);
|
||||||
|
|
||||||
ECMA_FINALIZE (val);
|
ECMA_FINALIZE (val);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
|
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
||||||
* Copyright 2015-2016 University of Szeged.
|
* Copyright 2015-2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@@ -346,7 +346,7 @@ ecma_builtin_number_prototype_object_value_of (ecma_value_t this_arg) /**< this
|
|||||||
{
|
{
|
||||||
if (ecma_is_value_number (this_arg))
|
if (ecma_is_value_number (this_arg))
|
||||||
{
|
{
|
||||||
return ecma_copy_value (this_arg, true);
|
return ecma_copy_value (this_arg);
|
||||||
}
|
}
|
||||||
else if (ecma_is_value_object (this_arg))
|
else if (ecma_is_value_object (this_arg))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
|
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
||||||
* Copyright 2015-2016 University of Szeged.
|
* Copyright 2015-2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@@ -230,7 +230,7 @@ ecma_builtin_object_object_seal (ecma_value_t this_arg __attr_unused___, /**< 't
|
|||||||
ecma_set_object_extensible (obj_p, false);
|
ecma_set_object_extensible (obj_p, false);
|
||||||
|
|
||||||
// 4.
|
// 4.
|
||||||
ret_value = ecma_copy_value (arg, true);
|
ret_value = ecma_copy_value (arg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -309,7 +309,7 @@ ecma_builtin_object_object_freeze (ecma_value_t this_arg __attr_unused___, /**<
|
|||||||
ecma_set_object_extensible (obj_p, false);
|
ecma_set_object_extensible (obj_p, false);
|
||||||
|
|
||||||
// 4.
|
// 4.
|
||||||
ret_value = ecma_copy_value (arg, true);
|
ret_value = ecma_copy_value (arg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -340,7 +340,7 @@ ecma_builtin_object_object_prevent_extensions (ecma_value_t this_arg __attr_unus
|
|||||||
ecma_object_t *obj_p = ecma_get_object_from_value (arg);
|
ecma_object_t *obj_p = ecma_get_object_from_value (arg);
|
||||||
ecma_set_object_extensible (obj_p, false);
|
ecma_set_object_extensible (obj_p, false);
|
||||||
|
|
||||||
ret_value = ecma_copy_value (arg, true);
|
ret_value = ecma_copy_value (arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret_value;
|
return ret_value;
|
||||||
@@ -654,7 +654,7 @@ ecma_builtin_object_object_create (ecma_value_t this_arg, /**< 'this' argument *
|
|||||||
// 5.
|
// 5.
|
||||||
if (ecma_is_value_empty (ret_value))
|
if (ecma_is_value_empty (ret_value))
|
||||||
{
|
{
|
||||||
ret_value = ecma_copy_value (ecma_make_object_value (result_obj_p), true);
|
ret_value = ecma_copy_value (ecma_make_object_value (result_obj_p));
|
||||||
}
|
}
|
||||||
|
|
||||||
ecma_deref_object (result_obj_p);
|
ecma_deref_object (result_obj_p);
|
||||||
@@ -760,7 +760,7 @@ ecma_builtin_object_object_define_properties (ecma_value_t this_arg __attr_unuse
|
|||||||
// 7.
|
// 7.
|
||||||
if (ecma_is_value_empty (ret_value))
|
if (ecma_is_value_empty (ret_value))
|
||||||
{
|
{
|
||||||
ret_value = ecma_copy_value (arg1, true);
|
ret_value = ecma_copy_value (arg1);
|
||||||
}
|
}
|
||||||
|
|
||||||
ECMA_FINALIZE (props);
|
ECMA_FINALIZE (props);
|
||||||
@@ -813,7 +813,7 @@ ecma_builtin_object_object_define_property (ecma_value_t this_arg __attr_unused_
|
|||||||
true),
|
true),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ret_value = ecma_copy_value (arg1, true);
|
ret_value = ecma_copy_value (arg1);
|
||||||
|
|
||||||
ECMA_FINALIZE (define_own_prop_ret);
|
ECMA_FINALIZE (define_own_prop_ret);
|
||||||
ecma_free_property_descriptor (&prop_desc);
|
ecma_free_property_descriptor (&prop_desc);
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ ecma_builtin_regexp_dispatch_construct (const ecma_value_t *arguments_list_p, /*
|
|||||||
{
|
{
|
||||||
if (ecma_is_value_undefined (flags_value))
|
if (ecma_is_value_undefined (flags_value))
|
||||||
{
|
{
|
||||||
ret_value = ecma_copy_value (pattern_value, true);
|
ret_value = ecma_copy_value (pattern_value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ ecma_builtin_string_prototype_object_to_string (ecma_value_t this_arg) /**< this
|
|||||||
{
|
{
|
||||||
if (ecma_is_value_string (this_arg))
|
if (ecma_is_value_string (this_arg))
|
||||||
{
|
{
|
||||||
return ecma_copy_value (this_arg, true);
|
return ecma_copy_value (this_arg);
|
||||||
}
|
}
|
||||||
else if (ecma_is_value_object (this_arg))
|
else if (ecma_is_value_object (this_arg))
|
||||||
{
|
{
|
||||||
@@ -214,7 +214,7 @@ 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));
|
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));
|
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_uint32_to_number (new_ecma_char);
|
*ret_num_p = ((ecma_number_t) new_ecma_char);
|
||||||
}
|
}
|
||||||
|
|
||||||
ecma_value_t new_value = ecma_make_number_value (ret_num_p);
|
ecma_value_t new_value = ecma_make_number_value (ret_num_p);
|
||||||
@@ -419,7 +419,7 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg
|
|||||||
if (ecma_is_value_object (arg)
|
if (ecma_is_value_object (arg)
|
||||||
&& ecma_object_get_class_name (ecma_get_object_from_value (arg)) == LIT_MAGIC_STRING_REGEXP_UL)
|
&& ecma_object_get_class_name (ecma_get_object_from_value (arg)) == LIT_MAGIC_STRING_REGEXP_UL)
|
||||||
{
|
{
|
||||||
regexp_value = ecma_copy_value (arg, true);
|
regexp_value = ecma_copy_value (arg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -429,7 +429,7 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg
|
|||||||
ecma_builtin_regexp_dispatch_construct (regexp_arguments, 1),
|
ecma_builtin_regexp_dispatch_construct (regexp_arguments, 1),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
regexp_value = ecma_copy_value (new_regexp_value, true);
|
regexp_value = ecma_copy_value (new_regexp_value);
|
||||||
|
|
||||||
ECMA_FINALIZE (new_regexp_value);
|
ECMA_FINALIZE (new_regexp_value);
|
||||||
}
|
}
|
||||||
@@ -584,7 +584,7 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* 8.h. */
|
/* 8.h. */
|
||||||
ret_value = ecma_copy_value (new_array_value, true);
|
ret_value = ecma_copy_value (new_array_value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -733,7 +733,7 @@ ecma_builtin_string_prototype_object_replace_match (ecma_builtin_replace_search_
|
|||||||
|
|
||||||
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_p) == context_p->match_start);
|
||||||
|
|
||||||
ret_value = ecma_copy_value (match_value, true);
|
ret_value = ecma_copy_value (match_value);
|
||||||
|
|
||||||
ECMA_FINALIZE (result_string_value);
|
ECMA_FINALIZE (result_string_value);
|
||||||
ECMA_FINALIZE (index_value);
|
ECMA_FINALIZE (index_value);
|
||||||
@@ -765,7 +765,7 @@ ecma_builtin_string_prototype_object_replace_match (ecma_builtin_replace_search_
|
|||||||
context_p->match_start = index_of;
|
context_p->match_start = index_of;
|
||||||
context_p->match_end = index_of + ecma_string_get_length (search_string_p);
|
context_p->match_end = index_of + ecma_string_get_length (search_string_p);
|
||||||
|
|
||||||
ret_value = ecma_copy_value (new_array_value, true);
|
ret_value = ecma_copy_value (new_array_value);
|
||||||
|
|
||||||
ECMA_FINALIZE (new_array_value);
|
ECMA_FINALIZE (new_array_value);
|
||||||
}
|
}
|
||||||
@@ -824,7 +824,7 @@ ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_se
|
|||||||
ecma_op_object_get (match_object_p, index_p),
|
ecma_op_object_get (match_object_p, index_p),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
arguments_list[i] = ecma_copy_value (current_value, true);
|
arguments_list[i] = ecma_copy_value (current_value);
|
||||||
values_copied++;
|
values_copied++;
|
||||||
|
|
||||||
ECMA_FINALIZE (current_value);
|
ECMA_FINALIZE (current_value);
|
||||||
@@ -837,7 +837,7 @@ ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_se
|
|||||||
|
|
||||||
*index_number_p = context_p->match_start;
|
*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 (index_number_p);
|
||||||
arguments_list[match_length + 1] = ecma_copy_value (context_p->input_string, true);
|
arguments_list[match_length + 1] = ecma_copy_value (context_p->input_string);
|
||||||
|
|
||||||
ECMA_TRY_CATCH (result_value,
|
ECMA_TRY_CATCH (result_value,
|
||||||
ecma_op_function_call (context_p->replace_function_p,
|
ecma_op_function_call (context_p->replace_function_p,
|
||||||
@@ -850,7 +850,7 @@ ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_se
|
|||||||
ecma_op_to_string (result_value),
|
ecma_op_to_string (result_value),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
ret_value = ecma_copy_value (to_string_value, true);
|
ret_value = ecma_copy_value (to_string_value);
|
||||||
|
|
||||||
ECMA_FINALIZE (to_string_value);
|
ECMA_FINALIZE (to_string_value);
|
||||||
ECMA_FINALIZE (result_value);
|
ECMA_FINALIZE (result_value);
|
||||||
@@ -1370,7 +1370,7 @@ ecma_builtin_string_prototype_object_search (ecma_value_t this_arg, /**< this ar
|
|||||||
if (ecma_is_value_object (regexp_arg)
|
if (ecma_is_value_object (regexp_arg)
|
||||||
&& ecma_object_get_class_name (ecma_get_object_from_value (regexp_arg)) == LIT_MAGIC_STRING_REGEXP_UL)
|
&& ecma_object_get_class_name (ecma_get_object_from_value (regexp_arg)) == LIT_MAGIC_STRING_REGEXP_UL)
|
||||||
{
|
{
|
||||||
regexp_value = ecma_copy_value (regexp_arg, true);
|
regexp_value = ecma_copy_value (regexp_arg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1381,7 +1381,7 @@ ecma_builtin_string_prototype_object_search (ecma_value_t this_arg, /**< this ar
|
|||||||
ecma_builtin_regexp_dispatch_construct (regexp_arguments, 1),
|
ecma_builtin_regexp_dispatch_construct (regexp_arguments, 1),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
regexp_value = ecma_copy_value (new_regexp_value, true);
|
regexp_value = ecma_copy_value (new_regexp_value);
|
||||||
|
|
||||||
ECMA_FINALIZE (new_regexp_value);
|
ECMA_FINALIZE (new_regexp_value);
|
||||||
}
|
}
|
||||||
@@ -1536,7 +1536,7 @@ ecma_builtin_helper_split_match (ecma_value_t input_string, /**< first argument
|
|||||||
if (ecma_is_value_object (separator)
|
if (ecma_is_value_object (separator)
|
||||||
&& ecma_object_get_class_name (ecma_get_object_from_value (separator)) == LIT_MAGIC_STRING_REGEXP_UL)
|
&& ecma_object_get_class_name (ecma_get_object_from_value (separator)) == LIT_MAGIC_STRING_REGEXP_UL)
|
||||||
{
|
{
|
||||||
ecma_value_t regexp_value = ecma_copy_value (separator, false);
|
ecma_value_t regexp_value = ecma_copy_value_if_not_object (separator);
|
||||||
|
|
||||||
ECMA_TRY_CATCH (to_string_val,
|
ECMA_TRY_CATCH (to_string_val,
|
||||||
ecma_op_to_string (input_string),
|
ecma_op_to_string (input_string),
|
||||||
@@ -1611,7 +1611,7 @@ ecma_builtin_helper_split_match (ecma_value_t input_string, /**< first argument
|
|||||||
ecma_deref_ecma_string (magic_index_str_p);
|
ecma_deref_ecma_string (magic_index_str_p);
|
||||||
|
|
||||||
ecma_number_t *index_num_p = ecma_alloc_number ();
|
ecma_number_t *index_num_p = ecma_alloc_number ();
|
||||||
*index_num_p = ecma_uint32_to_number (start_idx);
|
*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_number_value (index_num_p));
|
||||||
|
|
||||||
@@ -1719,7 +1719,7 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg
|
|||||||
if (ecma_is_value_object (arg1)
|
if (ecma_is_value_object (arg1)
|
||||||
&& ecma_object_get_class_name (ecma_get_object_from_value (arg1)) == LIT_MAGIC_STRING_REGEXP_UL)
|
&& ecma_object_get_class_name (ecma_get_object_from_value (arg1)) == LIT_MAGIC_STRING_REGEXP_UL)
|
||||||
{
|
{
|
||||||
separator = ecma_copy_value (arg1, true);
|
separator = ecma_copy_value (arg1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1727,7 +1727,7 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg
|
|||||||
ecma_op_to_string (arg1),
|
ecma_op_to_string (arg1),
|
||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
separator = ecma_copy_value (separator_to_string_val, true);
|
separator = ecma_copy_value (separator_to_string_val);
|
||||||
|
|
||||||
ECMA_FINALIZE (separator_to_string_val);
|
ECMA_FINALIZE (separator_to_string_val);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
||||||
|
* Copyright 2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -65,7 +66,7 @@ ecma_op_create_array_object (const ecma_value_t *arguments_list_p, /**< list of
|
|||||||
{
|
{
|
||||||
ecma_number_t *num_p = ecma_get_number_from_value (arguments_list_p[0]);
|
ecma_number_t *num_p = ecma_get_number_from_value (arguments_list_p[0]);
|
||||||
uint32_t num_uint32 = ecma_number_to_uint32 (*num_p);
|
uint32_t num_uint32 = ecma_number_to_uint32 (*num_p);
|
||||||
if (*num_p != ecma_uint32_to_number (num_uint32))
|
if (*num_p != ((ecma_number_t) num_uint32))
|
||||||
{
|
{
|
||||||
return ecma_raise_range_error (ECMA_ERR_MSG (""));
|
return ecma_raise_range_error (ECMA_ERR_MSG (""));
|
||||||
}
|
}
|
||||||
@@ -100,7 +101,7 @@ ecma_op_create_array_object (const ecma_value_t *arguments_list_p, /**< list of
|
|||||||
|
|
||||||
ecma_string_t *length_magic_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_LENGTH);
|
ecma_string_t *length_magic_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_LENGTH);
|
||||||
ecma_number_t *length_num_p = ecma_alloc_number ();
|
ecma_number_t *length_num_p = ecma_alloc_number ();
|
||||||
*length_num_p = ecma_uint32_to_number (length);
|
*length_num_p = ((ecma_number_t) length);
|
||||||
|
|
||||||
ecma_property_t *length_prop_p = ecma_create_named_data_property (obj_p,
|
ecma_property_t *length_prop_p = ecma_create_named_data_property (obj_p,
|
||||||
length_magic_string_p,
|
length_magic_string_p,
|
||||||
@@ -196,7 +197,7 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o
|
|||||||
uint32_t new_len_uint32 = ecma_number_to_uint32 (new_len_num);
|
uint32_t new_len_uint32 = ecma_number_to_uint32 (new_len_num);
|
||||||
|
|
||||||
// d.
|
// d.
|
||||||
if (ecma_uint32_to_number (new_len_uint32) != new_len_num)
|
if (((ecma_number_t) new_len_uint32) != new_len_num)
|
||||||
{
|
{
|
||||||
return ecma_raise_range_error (ECMA_ERR_MSG (""));
|
return ecma_raise_range_error (ECMA_ERR_MSG (""));
|
||||||
}
|
}
|
||||||
@@ -321,7 +322,7 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o
|
|||||||
ecma_number_t *new_len_num_p = ecma_get_number_from_value (new_len_property_desc.value);
|
ecma_number_t *new_len_num_p = ecma_get_number_from_value (new_len_property_desc.value);
|
||||||
|
|
||||||
// 1.
|
// 1.
|
||||||
*new_len_num_p = ecma_uint32_to_number (index + 1u);
|
*new_len_num_p = ((ecma_number_t) index + 1u);
|
||||||
|
|
||||||
// 2.
|
// 2.
|
||||||
if (!new_writable)
|
if (!new_writable)
|
||||||
@@ -428,7 +429,7 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o
|
|||||||
{
|
{
|
||||||
// i., ii.
|
// i., ii.
|
||||||
ecma_number_t *num_p = ecma_alloc_number ();
|
ecma_number_t *num_p = ecma_alloc_number ();
|
||||||
*num_p = ecma_number_add (ecma_uint32_to_number (index), ECMA_NUMBER_ONE);
|
*num_p = ecma_number_add (((ecma_number_t) index), ECMA_NUMBER_ONE);
|
||||||
|
|
||||||
ecma_named_data_property_assign_value (obj_p, len_prop_p, ecma_make_number_value (num_p));
|
ecma_named_data_property_assign_value (obj_p, len_prop_p, ecma_make_number_value (num_p));
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
|
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
||||||
|
* Copyright 2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -178,7 +179,7 @@ ecma_op_to_primitive (ecma_value_t value, /**< ecma value */
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return ecma_copy_value (value, true);
|
return ecma_copy_value (value);
|
||||||
}
|
}
|
||||||
} /* ecma_op_to_primitive */
|
} /* ecma_op_to_primitive */
|
||||||
|
|
||||||
@@ -262,7 +263,7 @@ ecma_op_to_number (ecma_value_t value) /**< ecma value */
|
|||||||
|
|
||||||
if (ecma_is_value_number (value))
|
if (ecma_is_value_number (value))
|
||||||
{
|
{
|
||||||
return ecma_copy_value (value, true);
|
return ecma_copy_value (value);
|
||||||
}
|
}
|
||||||
else if (ecma_is_value_string (value))
|
else if (ecma_is_value_string (value))
|
||||||
{
|
{
|
||||||
@@ -409,7 +410,7 @@ ecma_op_to_object (ecma_value_t value) /**< ecma value */
|
|||||||
}
|
}
|
||||||
else if (ecma_is_value_object (value))
|
else if (ecma_is_value_object (value))
|
||||||
{
|
{
|
||||||
return ecma_copy_value (value, true);
|
return ecma_copy_value (value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -664,7 +665,7 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */
|
|||||||
ret_value);
|
ret_value);
|
||||||
|
|
||||||
prop_desc.is_value_defined = true;
|
prop_desc.is_value_defined = true;
|
||||||
prop_desc.value = ecma_copy_value (value_prop_value, true);
|
prop_desc.value = ecma_copy_value (value_prop_value);
|
||||||
|
|
||||||
ECMA_FINALIZE (value_prop_value);
|
ECMA_FINALIZE (value_prop_value);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -591,7 +591,7 @@ ecma_op_function_call (ecma_object_t *func_obj_p, /**< Function object */
|
|||||||
// 1.
|
// 1.
|
||||||
if (is_strict)
|
if (is_strict)
|
||||||
{
|
{
|
||||||
this_binding = ecma_copy_value (this_arg_value, true);
|
this_binding = ecma_copy_value (this_arg_value);
|
||||||
}
|
}
|
||||||
else if (ecma_is_value_undefined (this_arg_value)
|
else if (ecma_is_value_undefined (this_arg_value)
|
||||||
|| ecma_is_value_null (this_arg_value))
|
|| ecma_is_value_null (this_arg_value))
|
||||||
@@ -794,7 +794,7 @@ ecma_op_function_construct_simple_or_external (ecma_object_t *func_obj_p, /**< F
|
|||||||
// 9.
|
// 9.
|
||||||
if (ecma_is_value_object (call_completion))
|
if (ecma_is_value_object (call_completion))
|
||||||
{
|
{
|
||||||
ret_value = ecma_copy_value (call_completion, true);
|
ret_value = ecma_copy_value (call_completion);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
|
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
||||||
|
* Copyright 2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -126,7 +127,7 @@ ecma_op_get_value_object_base (ecma_reference_t ref) /**< ECMA-reference */
|
|||||||
else if (prop_p->flags & ECMA_PROPERTY_FLAG_NAMEDDATA)
|
else if (prop_p->flags & ECMA_PROPERTY_FLAG_NAMEDDATA)
|
||||||
{
|
{
|
||||||
// 4.
|
// 4.
|
||||||
ret_value = ecma_copy_value (ecma_get_named_data_property_value (prop_p), true);
|
ret_value = ecma_copy_value (ecma_get_named_data_property_value (prop_p));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
|
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
||||||
|
* Copyright 2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -277,7 +278,7 @@ ecma_op_get_binding_value (ecma_object_t *lex_env_p, /**< lexical environment */
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ecma_copy_value (prop_value, true);
|
return ecma_copy_value (prop_value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ ecma_op_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function
|
|||||||
|
|
||||||
// 1.
|
// 1.
|
||||||
ecma_number_t *len_p = ecma_alloc_number ();
|
ecma_number_t *len_p = ecma_alloc_number ();
|
||||||
*len_p = ecma_uint32_to_number (arguments_number);
|
*len_p = ((ecma_number_t) arguments_number);
|
||||||
|
|
||||||
// 4.
|
// 4.
|
||||||
ecma_property_t *class_prop_p = ecma_create_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_CLASS);
|
ecma_property_t *class_prop_p = ecma_create_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_CLASS);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
|
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
||||||
|
* Copyright 2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -158,7 +159,7 @@ ecma_op_general_object_get (ecma_object_t *obj_p, /**< the object */
|
|||||||
// 3.
|
// 3.
|
||||||
if (prop_p->flags & ECMA_PROPERTY_FLAG_NAMEDDATA)
|
if (prop_p->flags & ECMA_PROPERTY_FLAG_NAMEDDATA)
|
||||||
{
|
{
|
||||||
return ecma_copy_value (ecma_get_named_data_property_value (prop_p), true);
|
return ecma_copy_value (ecma_get_named_data_property_value (prop_p));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
/* Copyright 2014-2015 Samsung Electronics Co., Ltd.
|
/* Copyright 2014-2016 Samsung Electronics Co., Ltd.
|
||||||
|
* Copyright 2016 University of Szeged.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -100,7 +101,7 @@ ecma_make_reference (ecma_value_t base, /**< base value */
|
|||||||
name_p = ecma_copy_or_ref_ecma_string (name_p);
|
name_p = ecma_copy_or_ref_ecma_string (name_p);
|
||||||
|
|
||||||
ecma_reference_t ref;
|
ecma_reference_t ref;
|
||||||
ref.base = ecma_copy_value (base, true);
|
ref.base = ecma_copy_value (base);
|
||||||
ref.is_strict = (is_strict != 0);
|
ref.is_strict = (is_strict != 0);
|
||||||
|
|
||||||
ECMA_SET_POINTER (ref.referenced_name_cp, name_p);
|
ECMA_SET_POINTER (ref.referenced_name_cp, name_p);
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ ecma_op_create_string_object (const ecma_value_t *arguments_list_p, /**< list of
|
|||||||
prim_prop_str_value_p = ecma_get_string_from_value (to_str_arg_value);
|
prim_prop_str_value_p = ecma_get_string_from_value (to_str_arg_value);
|
||||||
|
|
||||||
ecma_length_t string_len = ecma_string_get_length (prim_prop_str_value_p);
|
ecma_length_t string_len = ecma_string_get_length (prim_prop_str_value_p);
|
||||||
length_value = ecma_uint32_to_number ((uint32_t) string_len);
|
length_value = ((ecma_number_t) (uint32_t) string_len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -749,7 +749,7 @@ jerry_api_create_array_object (jerry_api_size_t size) /* size of array */
|
|||||||
JERRY_ASSERT (size > 0);
|
JERRY_ASSERT (size > 0);
|
||||||
|
|
||||||
ecma_number_t *length_num_p = ecma_alloc_number ();
|
ecma_number_t *length_num_p = ecma_alloc_number ();
|
||||||
*length_num_p = ecma_uint32_to_number (size);
|
*length_num_p = ((ecma_number_t) size);
|
||||||
ecma_value_t array_length = ecma_make_number_value (length_num_p);
|
ecma_value_t array_length = ecma_make_number_value (length_num_p);
|
||||||
|
|
||||||
jerry_api_length_t argument_size = 1;
|
jerry_api_length_t argument_size = 1;
|
||||||
|
|||||||
@@ -49,47 +49,47 @@ do_number_bitwise_logic (number_bitwise_logic_op op, /**< number bitwise logic o
|
|||||||
ECMA_OP_TO_NUMBER_TRY_CATCH (num_right, right_value, ret_value);
|
ECMA_OP_TO_NUMBER_TRY_CATCH (num_right, right_value, ret_value);
|
||||||
|
|
||||||
ecma_number_t *res_p = ecma_alloc_number ();
|
ecma_number_t *res_p = ecma_alloc_number ();
|
||||||
|
|
||||||
int32_t left_int32 = ecma_number_to_int32 (num_left);
|
|
||||||
|
|
||||||
uint32_t left_uint32 = ecma_number_to_uint32 (num_left);
|
|
||||||
uint32_t right_uint32 = ecma_number_to_uint32 (num_right);
|
uint32_t right_uint32 = ecma_number_to_uint32 (num_right);
|
||||||
|
|
||||||
switch (op)
|
switch (op)
|
||||||
{
|
{
|
||||||
case NUMBER_BITWISE_LOGIC_AND:
|
case NUMBER_BITWISE_LOGIC_AND:
|
||||||
{
|
{
|
||||||
*res_p = ecma_int32_to_number ((int32_t) (left_uint32 & right_uint32));
|
uint32_t left_uint32 = ecma_number_to_uint32 (num_left);
|
||||||
|
*res_p = (ecma_number_t) ((int32_t) (left_uint32 & right_uint32));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NUMBER_BITWISE_LOGIC_OR:
|
case NUMBER_BITWISE_LOGIC_OR:
|
||||||
{
|
{
|
||||||
*res_p = ecma_int32_to_number ((int32_t) (left_uint32 | right_uint32));
|
uint32_t left_uint32 = ecma_number_to_uint32 (num_left);
|
||||||
|
*res_p = (ecma_number_t) ((int32_t) (left_uint32 | right_uint32));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NUMBER_BITWISE_LOGIC_XOR:
|
case NUMBER_BITWISE_LOGIC_XOR:
|
||||||
{
|
{
|
||||||
*res_p = ecma_int32_to_number ((int32_t) (left_uint32 ^ right_uint32));
|
uint32_t left_uint32 = ecma_number_to_uint32 (num_left);
|
||||||
|
*res_p = (ecma_number_t) ((int32_t) (left_uint32 ^ right_uint32));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NUMBER_BITWISE_SHIFT_LEFT:
|
case NUMBER_BITWISE_SHIFT_LEFT:
|
||||||
{
|
{
|
||||||
*res_p = ecma_int32_to_number (left_int32 << (right_uint32 & 0x1F));
|
*res_p = (ecma_number_t) (ecma_number_to_int32 (num_left) << (right_uint32 & 0x1F));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NUMBER_BITWISE_SHIFT_RIGHT:
|
case NUMBER_BITWISE_SHIFT_RIGHT:
|
||||||
{
|
{
|
||||||
*res_p = ecma_int32_to_number (left_int32 >> (right_uint32 & 0x1F));
|
*res_p = (ecma_number_t) (ecma_number_to_int32 (num_left) >> (right_uint32 & 0x1F));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NUMBER_BITWISE_SHIFT_URIGHT:
|
case NUMBER_BITWISE_SHIFT_URIGHT:
|
||||||
{
|
{
|
||||||
*res_p = ecma_uint32_to_number (left_uint32 >> (right_uint32 & 0x1F));
|
uint32_t left_uint32 = ecma_number_to_uint32 (num_left);
|
||||||
|
*res_p = (ecma_number_t) (left_uint32 >> (right_uint32 & 0x1F));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NUMBER_BITWISE_NOT:
|
case NUMBER_BITWISE_NOT:
|
||||||
{
|
{
|
||||||
*res_p = ecma_int32_to_number ((int32_t) ~right_uint32);
|
*res_p = (ecma_number_t) ((int32_t) ~right_uint32);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+16
-16
@@ -224,7 +224,7 @@ vm_run_eval (ecma_compiled_code_t *bytecode_data_p, /**< byte-code data */
|
|||||||
/* ECMA-262 v5, 10.4.2 */
|
/* ECMA-262 v5, 10.4.2 */
|
||||||
if (is_direct)
|
if (is_direct)
|
||||||
{
|
{
|
||||||
this_binding = ecma_copy_value (vm_top_context_p->this_binding, true);
|
this_binding = ecma_copy_value (vm_top_context_p->this_binding);
|
||||||
lex_env_p = vm_top_context_p->lex_env_p;
|
lex_env_p = vm_top_context_p->lex_env_p;
|
||||||
ecma_ref_object (vm_top_context_p->lex_env_p);
|
ecma_ref_object (vm_top_context_p->lex_env_p);
|
||||||
}
|
}
|
||||||
@@ -477,7 +477,7 @@ enum
|
|||||||
if ((literal_index) < register_end) \
|
if ((literal_index) < register_end) \
|
||||||
{ \
|
{ \
|
||||||
/* Note: There should be no specialization for arguments. */ \
|
/* Note: There should be no specialization for arguments. */ \
|
||||||
(target_value) = ecma_copy_value (frame_ctx_p->registers_p[literal_index], true); \
|
(target_value) = ecma_copy_value (frame_ctx_p->registers_p[literal_index]); \
|
||||||
target_free_op; \
|
target_free_op; \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
@@ -836,7 +836,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
|||||||
case VM_OC_GET_DATA_GET_ID (VM_OC_GET_THIS_LITERAL):
|
case VM_OC_GET_DATA_GET_ID (VM_OC_GET_THIS_LITERAL):
|
||||||
{
|
{
|
||||||
right_value = left_value;
|
right_value = left_value;
|
||||||
left_value = ecma_copy_value (frame_ctx_p->this_binding, true);
|
left_value = ecma_copy_value (frame_ctx_p->this_binding);
|
||||||
free_flags = (uint8_t) ((free_flags << 1) | VM_FREE_LEFT_VALUE);
|
free_flags = (uint8_t) ((free_flags << 1) | VM_FREE_LEFT_VALUE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -947,7 +947,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
|||||||
}
|
}
|
||||||
case VM_OC_PUSH_THIS:
|
case VM_OC_PUSH_THIS:
|
||||||
{
|
{
|
||||||
result = ecma_copy_value (frame_ctx_p->this_binding, true);
|
result = ecma_copy_value (frame_ctx_p->this_binding);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case VM_OC_PUSH_NUMBER:
|
case VM_OC_PUSH_NUMBER:
|
||||||
@@ -1130,7 +1130,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
|||||||
{
|
{
|
||||||
*stack_top_p++ = ecma_make_simple_value (ECMA_SIMPLE_VALUE_REGISTER_REF);
|
*stack_top_p++ = ecma_make_simple_value (ECMA_SIMPLE_VALUE_REGISTER_REF);
|
||||||
*stack_top_p++ = literal_index;
|
*stack_top_p++ = literal_index;
|
||||||
result = ecma_copy_value (frame_ctx_p->registers_p[literal_index], true);
|
result = ecma_copy_value (frame_ctx_p->registers_p[literal_index]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1185,8 +1185,8 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
|||||||
{
|
{
|
||||||
JERRY_ASSERT (opcode == CBC_PUSH_PROP_LITERAL_LITERAL_REFERENCE
|
JERRY_ASSERT (opcode == CBC_PUSH_PROP_LITERAL_LITERAL_REFERENCE
|
||||||
|| opcode == CBC_PUSH_PROP_THIS_LITERAL_REFERENCE);
|
|| opcode == CBC_PUSH_PROP_THIS_LITERAL_REFERENCE);
|
||||||
*stack_top_p++ = ecma_copy_value (left_value, true);
|
*stack_top_p++ = ecma_copy_value (left_value);
|
||||||
*stack_top_p++ = ecma_copy_value (right_value, true);
|
*stack_top_p++ = ecma_copy_value (right_value);
|
||||||
}
|
}
|
||||||
/* FALLTHRU */
|
/* FALLTHRU */
|
||||||
}
|
}
|
||||||
@@ -1253,7 +1253,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
|||||||
JERRY_ASSERT (opcode == CBC_POST_INCR_IDENT_PUSH_RESULT
|
JERRY_ASSERT (opcode == CBC_POST_INCR_IDENT_PUSH_RESULT
|
||||||
|| opcode == CBC_POST_DECR_IDENT_PUSH_RESULT);
|
|| opcode == CBC_POST_DECR_IDENT_PUSH_RESULT);
|
||||||
|
|
||||||
*stack_top_p++ = ecma_copy_value (result, true);
|
*stack_top_p++ = ecma_copy_value (result);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1266,14 +1266,14 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
|||||||
stack_top_p++;
|
stack_top_p++;
|
||||||
stack_top_p[-1] = stack_top_p[-2];
|
stack_top_p[-1] = stack_top_p[-2];
|
||||||
stack_top_p[-2] = stack_top_p[-3];
|
stack_top_p[-2] = stack_top_p[-3];
|
||||||
stack_top_p[-3] = ecma_copy_value (result, true);
|
stack_top_p[-3] = ecma_copy_value (result);
|
||||||
}
|
}
|
||||||
opcode_data &= (uint32_t)~VM_OC_PUT_STACK;
|
opcode_data &= (uint32_t)~VM_OC_PUT_STACK;
|
||||||
}
|
}
|
||||||
else if (opcode_data & VM_OC_PUT_BLOCK)
|
else if (opcode_data & VM_OC_PUT_BLOCK)
|
||||||
{
|
{
|
||||||
ecma_free_value (block_result);
|
ecma_free_value (block_result);
|
||||||
block_result = ecma_copy_value (result, true);
|
block_result = ecma_copy_value (result);
|
||||||
opcode_data &= (uint32_t) ~VM_OC_PUT_BLOCK;
|
opcode_data &= (uint32_t) ~VM_OC_PUT_BLOCK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1297,7 +1297,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
|||||||
case VM_OC_ASSIGN_PROP_THIS:
|
case VM_OC_ASSIGN_PROP_THIS:
|
||||||
{
|
{
|
||||||
result = stack_top_p[-1];
|
result = stack_top_p[-1];
|
||||||
stack_top_p[-1] = ecma_copy_value (frame_ctx_p->this_binding, true);
|
stack_top_p[-1] = ecma_copy_value (frame_ctx_p->this_binding);
|
||||||
*stack_top_p++ = left_value;
|
*stack_top_p++ = left_value;
|
||||||
free_flags = 0;
|
free_flags = 0;
|
||||||
break;
|
break;
|
||||||
@@ -1542,7 +1542,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
|||||||
|
|
||||||
if (literal_index < register_end)
|
if (literal_index < register_end)
|
||||||
{
|
{
|
||||||
left_value = ecma_copy_value (frame_ctx_p->registers_p[literal_index], true);
|
left_value = ecma_copy_value (frame_ctx_p->registers_p[literal_index]);
|
||||||
free_flags = VM_FREE_LEFT_VALUE;
|
free_flags = VM_FREE_LEFT_VALUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2110,7 +2110,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
|||||||
|
|
||||||
if (opcode_data & (VM_OC_PUT_STACK | VM_OC_PUT_BLOCK))
|
if (opcode_data & (VM_OC_PUT_STACK | VM_OC_PUT_BLOCK))
|
||||||
{
|
{
|
||||||
result = ecma_copy_value (result, true);
|
result = ecma_copy_value (result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2154,7 +2154,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
|||||||
|
|
||||||
if (opcode_data & (VM_OC_PUT_STACK | VM_OC_PUT_BLOCK))
|
if (opcode_data & (VM_OC_PUT_STACK | VM_OC_PUT_BLOCK))
|
||||||
{
|
{
|
||||||
result = ecma_copy_value (result, true);
|
result = ecma_copy_value (result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2372,7 +2372,7 @@ vm_execute (vm_frame_ctx_t *frame_ctx_p, /**< frame context */
|
|||||||
|
|
||||||
ecma_collection_iterator_next (&arguments_iterator);
|
ecma_collection_iterator_next (&arguments_iterator);
|
||||||
value = *arguments_iterator.current_value_p;
|
value = *arguments_iterator.current_value_p;
|
||||||
frame_ctx_p->registers_p[i] = ecma_copy_value (value, true);
|
frame_ctx_p->registers_p[i] = ecma_copy_value (value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2387,7 +2387,7 @@ vm_execute (vm_frame_ctx_t *frame_ctx_p, /**< frame context */
|
|||||||
|
|
||||||
for (uint32_t i = 0; i < arg_list_len; i++)
|
for (uint32_t i = 0; i < arg_list_len; i++)
|
||||||
{
|
{
|
||||||
frame_ctx_p->registers_p[i] = ecma_copy_value (src_p[i], true);
|
frame_ctx_p->registers_p[i] = ecma_copy_value (src_p[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user