Remove ES_NEXT macro (#4915)

- remove all '#JERRY_ESNEXT' macro
- remove 5.1 build profile, update test runner accordingly (Note: all builtins are turn on by default)
- move tests from tests/jerry/esnext into tests/jerry, concatenate files with same names
- add skiplist to some snapshot tests that were supported only in 5.1
- fix doxygen issues that were hidden before (bc. of es.next macro)

Co-authored-by: Martin Negyokru negyokru@inf.u-szeged.hu
JerryScript-DCO-1.0-Signed-off-by: Adam Szilagyi aszilagy@inf.u-szeged.hu
This commit is contained in:
Szilagyi Adam
2022-01-31 16:46:00 +01:00
committed by GitHub
parent 76403606d0
commit 4924f9fd31
973 changed files with 1902 additions and 8240 deletions
@@ -25,13 +25,9 @@
#include "jrt.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
#define BUILTIN_INC_HEADER_NAME "ecma-builtin-aggregateerror-prototype.inc.h"
#define BUILTIN_UNDERSCORED_ID aggregate_error_prototype
#include "ecma-builtin-internal-routines-template.inc.h"
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* Object properties:
* (property name, object pointer getter) */
@@ -33,6 +31,4 @@ STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_AGGREGATE_ERROR_UL, ECMA_P
/* ECMA-262 v5, 15.11.7.10 */
STRING_VALUE (LIT_MAGIC_STRING_MESSAGE, LIT_MAGIC_STRING__EMPTY, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -29,8 +29,6 @@
#include "jcontext.h"
#include "jrt.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -109,5 +107,3 @@ ecma_builtin_aggregate_error_dispatch_construct (const ecma_value_t *arguments_l
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* Number properties:
* (property name, number value, writable, enumerable, configurable) */
@@ -34,6 +32,4 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_AGGREGATE_ERROR_PROTOT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_AGGREGATE_ERROR_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -19,8 +19,6 @@
#include "ecma-iterator-object.h"
#include "ecma-typedarray-object.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -224,5 +222,3 @@ ecma_builtin_array_iterator_prototype_dispatch_routine (uint8_t builtin_routine_
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,14 +19,10 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
STRING_VALUE (LIT_GLOBAL_SYMBOL_TO_STRING_TAG, LIT_MAGIC_STRING_ARRAY_ITERATOR_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
ROUTINE (LIT_MAGIC_STRING_NEXT, ECMA_ARRAY_ITERATOR_PROTOTYPE_OBJECT_NEXT, 0, 0)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -16,13 +16,9 @@
#include "ecma-builtin-helpers.h"
#include "ecma-builtins.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
#define BUILTIN_INC_HEADER_NAME "ecma-builtin-array-prototype-unscopables.inc.h"
#define BUILTIN_UNDERSCORED_ID array_prototype_unscopables
#include "ecma-builtin-internal-routines-template.inc.h"
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
SIMPLE_VALUE (LIT_MAGIC_STRING_AT, ECMA_VALUE_TRUE, ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE)
SIMPLE_VALUE (LIT_MAGIC_STRING_COPY_WITHIN, ECMA_VALUE_TRUE, ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE)
@@ -43,6 +41,4 @@ SIMPLE_VALUE (LIT_MAGIC_STRING_KEYS, ECMA_VALUE_TRUE, ECMA_PROPERTY_CONFIGURABLE
SIMPLE_VALUE (LIT_MAGIC_STRING_VALUES, ECMA_VALUE_TRUE, ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -48,10 +48,7 @@
enum
{
ECMA_ARRAY_PROTOTYPE_ROUTINE_START = 0,
/* Note: these 2 routine ids must be in this order */
#if !JERRY_ESNEXT
ECMA_ARRAY_PROTOTYPE_TO_STRING,
#endif /* !JERRY_ESNEXT */
/* Note: these 2 routine ids must be in this order */
ECMA_ARRAY_PROTOTYPE_SORT,
ECMA_ARRAY_PROTOTYPE_CONCAT,
ECMA_ARRAY_PROTOTYPE_TO_LOCALE_STRING,
@@ -188,17 +185,14 @@ ecma_builtin_array_prototype_object_concat (const ecma_value_t args[], /**< argu
ecma_object_t *obj_p) /**< array object */
{
/* 2. */
#if JERRY_ESNEXT
ecma_object_t *new_array_p = ecma_op_array_species_create (obj_p, 0);
if (JERRY_UNLIKELY (new_array_p == NULL))
{
return ECMA_VALUE_ERROR;
}
#else /* !JERRY_ESNEXT */
ecma_object_t *new_array_p = ecma_op_new_array_object (0);
#endif /* JERRY_ESNEXT */
/* 3. */
ecma_length_t new_length = 0;
/* 5.b - 5.c for this_arg */
@@ -458,7 +452,6 @@ ecma_builtin_array_prototype_object_push (const ecma_value_t *argument_list_p, /
return ecma_make_uint32_value (new_length);
}
#if JERRY_ESNEXT
/* 5. */
if ((ecma_number_t) (length + arguments_number) > ECMA_NUMBER_MAX_SAFE_INTEGER)
{
@@ -477,34 +470,15 @@ ecma_builtin_array_prototype_object_push (const ecma_value_t *argument_list_p, /
}
}
ecma_number_t n = (ecma_number_t) length;
#else /* JERRY_ESNEXT */
ecma_number_t n = (ecma_number_t) length;
/* 5. */
for (ecma_length_t index = 0; index < arguments_number; index++, n++)
{
/* 5.b */
ecma_string_t *index_str_p = ecma_new_ecma_string_from_number (n);
ecma_value_t put_value = ecma_op_object_put (obj_p, index_str_p, argument_list_p[index], true);
ecma_deref_ecma_string (index_str_p);
if (ECMA_IS_VALUE_ERROR (put_value))
{
return put_value;
}
}
#endif /* JERRY_ESNEXT */
/* 6 - 7. */
ecma_value_t set_length_value = ecma_builtin_array_prototype_helper_set_length (obj_p, n);
ecma_value_t set_length_value = ecma_builtin_array_prototype_helper_set_length (obj_p, (ecma_number_t) length);
if (ECMA_IS_VALUE_ERROR (set_length_value))
{
return set_length_value;
}
return ecma_make_number_value (n);
return ecma_make_length_value (length);
} /* ecma_builtin_array_prototype_object_push */
/**
@@ -550,7 +524,6 @@ ecma_builtin_array_prototype_object_reverse (ecma_value_t this_arg, /**< this ar
ecma_string_t *lower_str_p = ecma_new_ecma_string_from_length (lower);
ecma_string_t *upper_str_p = ecma_new_ecma_string_from_length (upper);
#if JERRY_ESNEXT
ecma_value_t lower_value = ECMA_VALUE_EMPTY;
ecma_value_t upper_value = ECMA_VALUE_EMPTY;
@@ -595,29 +568,6 @@ ecma_builtin_array_prototype_object_reverse (ecma_value_t this_arg, /**< this ar
goto clean_up;
}
}
#else /* !JERRY_ESNEXT */
ecma_value_t lower_value = ecma_op_object_get (obj_p, lower_str_p);
if (ECMA_IS_VALUE_ERROR (lower_value))
{
ecma_deref_ecma_string (lower_str_p);
ecma_deref_ecma_string (upper_str_p);
return ret_value;
}
ecma_value_t upper_value = ecma_op_object_get (obj_p, upper_str_p);
if (ECMA_IS_VALUE_ERROR (upper_value))
{
goto clean_up;
}
ecma_value_t has_lower = ecma_op_object_has_property (obj_p, lower_str_p);
ecma_value_t has_upper = ecma_op_object_has_property (obj_p, upper_str_p);
bool lower_exist = ecma_is_value_true (has_lower);
bool upper_exist = ecma_is_value_true (has_upper);
#endif /* JERRY_ESNEXT */
if (lower_exist && upper_exist)
{
@@ -835,7 +785,7 @@ ecma_builtin_array_prototype_object_slice (ecma_value_t arg1, /**< start */
bool use_fast_path = ecma_op_object_is_fast_array (obj_p);
ecma_length_t copied_length = (end > start) ? end - start : 0;
#if JERRY_ESNEXT
ecma_object_t *new_array_p = ecma_op_array_species_create (obj_p, copied_length);
if (JERRY_UNLIKELY (new_array_p == NULL))
@@ -844,9 +794,6 @@ ecma_builtin_array_prototype_object_slice (ecma_value_t arg1, /**< start */
}
use_fast_path &= ecma_op_object_is_fast_array (new_array_p);
#else /* !JERRY_ESNEXT */
ecma_object_t *new_array_p = ecma_op_new_array_object (0);
#endif /* JERRY_ESNEXT */
if (use_fast_path && copied_length > 0)
{
@@ -872,7 +819,6 @@ ecma_builtin_array_prototype_object_slice (ecma_value_t arg1, /**< start */
ecma_extended_object_t *ext_to_obj_p = (ecma_extended_object_t *) new_array_p;
#if JERRY_ESNEXT
uint32_t target_length = ext_to_obj_p->u.array.length;
ecma_value_t *to_buffer_p;
JERRY_ASSERT (copied_length <= UINT32_MAX);
@@ -890,9 +836,6 @@ ecma_builtin_array_prototype_object_slice (ecma_value_t arg1, /**< start */
ecma_delete_fast_array_properties (new_array_p, (uint32_t) copied_length);
to_buffer_p = ECMA_GET_NON_NULL_POINTER (ecma_value_t, new_array_p->u1.property_list_cp);
}
#else /* !JERRY_ESNEXT */
ecma_value_t *to_buffer_p = ecma_fast_array_extend (new_array_p, copied_length);
#endif /* JERRY_ESNEXT */
ecma_value_t *from_buffer_p = ECMA_GET_NON_NULL_POINTER (ecma_value_t, obj_p->u1.property_list_cp);
@@ -901,9 +844,7 @@ ecma_builtin_array_prototype_object_slice (ecma_value_t arg1, /**< start */
for (uint32_t k = (uint32_t) start; k < (uint32_t) end; k++, n++)
{
#if JERRY_ESNEXT
ecma_free_value_if_not_object (to_buffer_p[n]);
#endif /* JERRY_ESNEXT */
to_buffer_p[n] = ecma_copy_value_if_not_object (from_buffer_p[k]);
}
@@ -932,27 +873,21 @@ ecma_builtin_array_prototype_object_slice (ecma_value_t arg1, /**< start */
{
/* 10.c.ii */
ecma_value_t put_comp;
#if JERRY_ESNEXT
const uint32_t prop_flags = ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE | JERRY_PROP_SHOULD_THROW;
#else /* !JERRY_ESNEXT */
const uint32_t prop_flags = ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE;
#endif /* JERRY_ESNEXT */
put_comp = ecma_builtin_helper_def_prop_by_index (new_array_p, n, get_value, prop_flags);
put_comp = ecma_builtin_helper_def_prop_by_index (new_array_p,
n,
get_value,
ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE
| JERRY_PROP_SHOULD_THROW);
ecma_free_value (get_value);
#if JERRY_ESNEXT
if (ECMA_IS_VALUE_ERROR (put_comp))
{
ecma_deref_object (new_array_p);
return put_comp;
}
#else /* !JERRY_ESNEXT */
JERRY_ASSERT (ecma_is_value_true (put_comp));
#endif /* JERRY_ESNEXT */
}
}
#if JERRY_ESNEXT
ecma_value_t set_length_value = ecma_builtin_array_prototype_helper_set_length (new_array_p, ((ecma_number_t) n));
if (ECMA_IS_VALUE_ERROR (set_length_value))
@@ -960,7 +895,6 @@ ecma_builtin_array_prototype_object_slice (ecma_value_t arg1, /**< start */
ecma_deref_object (new_array_p);
return set_length_value;
}
#endif /* JERRY_ESNEXT */
return ecma_make_object_value (new_array_p);
} /* ecma_builtin_array_prototype_object_slice */
@@ -1282,7 +1216,6 @@ ecma_builtin_array_prototype_object_splice (const ecma_value_t args[], /**< argu
ecma_length_t new_length = len + insert_count - actual_delete_count;
#if JERRY_ESNEXT
/* ES11: 8. */
if ((ecma_number_t) new_length > ECMA_NUMBER_MAX_SAFE_INTEGER)
{
@@ -1296,10 +1229,6 @@ ecma_builtin_array_prototype_object_splice (const ecma_value_t args[], /**< argu
{
return ECMA_VALUE_ERROR;
}
#else /* !JERRY_ESNEXT */
/* ES5.1: 2. */
ecma_object_t *new_array_p = ecma_op_new_array_object (actual_delete_count);
#endif /* JERRY_ESNEXT */
/* ES5.1: 8, ES11: 10. */
ecma_length_t k = 0;
@@ -1318,28 +1247,21 @@ ecma_builtin_array_prototype_object_splice (const ecma_value_t args[], /**< argu
if (ecma_is_value_found (from_present))
{
#if JERRY_ESNEXT
const uint32_t prop_flags = ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE | JERRY_PROP_SHOULD_THROW;
#else /* !JERRY_ESNEXT */
const uint32_t prop_flags = ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE;
#endif /* JERRY_ESNEXT */
ecma_value_t put_comp = ecma_builtin_helper_def_prop_by_index (new_array_p, k, from_present, prop_flags);
ecma_value_t put_comp = ecma_builtin_helper_def_prop_by_index (new_array_p,
k,
from_present,
ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE
| JERRY_PROP_SHOULD_THROW);
ecma_free_value (from_present);
#if JERRY_ESNEXT
if (ECMA_IS_VALUE_ERROR (put_comp))
{
ecma_deref_object (new_array_p);
return put_comp;
}
#else /* !JERRY_ESNEXT */
JERRY_ASSERT (ecma_is_value_true (put_comp));
#endif /* JERRY_ESNEXT */
}
}
#if JERRY_ESNEXT
/* ES11: 12. */
ecma_value_t set_length =
ecma_builtin_array_prototype_helper_set_length (new_array_p, ((ecma_number_t) actual_delete_count));
@@ -1349,7 +1271,6 @@ ecma_builtin_array_prototype_object_splice (const ecma_value_t args[], /**< argu
ecma_deref_object (new_array_p);
return set_length;
}
#endif /* JERRY_ESNEXT */
/* ES5.1: 12, ES11: 15. */
if (insert_count < actual_delete_count)
@@ -1514,20 +1435,13 @@ ecma_builtin_array_prototype_object_unshift (const ecma_value_t args[], /**< arg
}
}
#if JERRY_ESNEXT
const bool should_iterate = args_number > 0;
#else /* !JERRY_ESNEXT */
const bool should_iterate = true;
#endif /* JERRY_ESNEXT */
if (should_iterate)
if (args_number > 0)
{
#if JERRY_ESNEXT
/* ES11:4.a. */
if ((ecma_number_t) (len + args_number) > ECMA_NUMBER_MAX_SAFE_INTEGER)
{
return ecma_raise_type_error (ECMA_ERR_UNSHIFT_TOO_HIGH);
}
#endif /* JERRY_ESNEXT */
/* ES5.1:5.,6. ES11: 4.b, 4.c */
for (ecma_length_t k = len; k > 0; k--)
@@ -1943,16 +1857,12 @@ ecma_builtin_array_prototype_object_map (ecma_value_t arg1, /**< callbackfn */
}
/* 6. */
#if JERRY_ESNEXT
ecma_object_t *new_array_p = ecma_op_array_species_create (obj_p, len);
if (JERRY_UNLIKELY (new_array_p == NULL))
{
return ECMA_VALUE_ERROR;
}
#else /* !JERRY_ESNEXT */
ecma_object_t *new_array_p = ecma_op_new_array_object (len);
#endif /* JERRY_ESNEXT */
JERRY_ASSERT (ecma_is_value_object (arg1));
ecma_object_t *func_object_p = ecma_get_object_from_value (arg1);
@@ -1988,24 +1898,20 @@ ecma_builtin_array_prototype_object_map (ecma_value_t arg1, /**< callbackfn */
/* 8.c.iii */
ecma_value_t put_comp;
#if JERRY_ESNEXT
const uint32_t prop_flags = ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE | JERRY_PROP_SHOULD_THROW;
#else /* !JERRY_ESNEXT */
const uint32_t prop_flags = ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE;
#endif /* JERRY_ESNEXT */
put_comp = ecma_builtin_helper_def_prop_by_index (new_array_p, index, mapped_value, prop_flags);
put_comp = ecma_builtin_helper_def_prop_by_index (new_array_p,
index,
mapped_value,
ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE
| JERRY_PROP_SHOULD_THROW);
ecma_free_value (mapped_value);
ecma_free_value (current_value);
#if JERRY_ESNEXT
if (ECMA_IS_VALUE_ERROR (put_comp))
{
ecma_deref_object (new_array_p);
return put_comp;
}
#else /* !JERRY_ESNEXT */
JERRY_ASSERT (ecma_is_value_true (put_comp));
#endif /* JERRY_ESNEXT */
}
}
@@ -2034,7 +1940,6 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t arg1, /**< callbackfn *
}
/* 6. */
#if JERRY_ESNEXT
ecma_object_t *new_array_p = ecma_op_array_species_create (obj_p, 0);
if (JERRY_UNLIKELY (new_array_p == NULL))
@@ -2044,12 +1949,6 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t arg1, /**< callbackfn *
/* ES11: 22.1.3.7. 7.c.iii.1 */
const uint32_t prop_flags = ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE | JERRY_PROP_SHOULD_THROW;
#else /* !JERRY_ESNEXT */
ecma_object_t *new_array_p = ecma_op_new_array_object (0);
/* ES5.1: 15.4.4.20. 9.c.iii.1 */
const uint32_t prop_flags = ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE;
#endif /* JERRY_ESNEXT */
/* We already checked that arg1 is callable, so it will always be an object. */
JERRY_ASSERT (ecma_is_value_object (arg1));
@@ -2092,7 +1991,7 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t arg1, /**< callbackfn *
{
ecma_value_t put_comp;
put_comp = ecma_builtin_helper_def_prop_by_index (new_array_p, new_array_index, get_value, prop_flags);
#if JERRY_ESNEXT
if (ECMA_IS_VALUE_ERROR (put_comp))
{
ecma_free_value (call_value);
@@ -2101,9 +2000,7 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t arg1, /**< callbackfn *
return put_comp;
}
#else /* !JERRY_ESNEXT */
JERRY_ASSERT (ecma_is_value_true (put_comp));
#endif /* JERRY_ESNEXT */
new_array_index++;
}
@@ -2235,8 +2132,6 @@ ecma_builtin_array_reduce_from (const ecma_value_t args_p[], /**< routine's argu
return accumulator;
} /* ecma_builtin_array_reduce_from */
#if JERRY_ESNEXT
/**
* The Array.prototype object's 'fill' routine
*
@@ -2852,7 +2747,6 @@ ecma_builtin_array_prototype_object_flat_map (ecma_value_t callback, /**< callba
/* 6. */
return ecma_make_object_value (new_array_p);
} /* ecma_builtin_array_prototype_object_flat_map */
#endif /* JERRY_ESNEXT */
/**
* Dispatcher of the built-in's routines
@@ -2880,12 +2774,6 @@ ecma_builtin_array_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
{
ecma_value_t ret_value = ECMA_VALUE_EMPTY;
#if !JERRY_ESNEXT
if (builtin_routine_id == ECMA_ARRAY_PROTOTYPE_TO_STRING)
{
ret_value = ecma_array_object_to_string (obj_this);
}
#endif /* !JERRY_ESNEXT */
if (builtin_routine_id == ECMA_ARRAY_PROTOTYPE_SORT)
{
ret_value = ecma_builtin_array_prototype_object_sort (this_arg, arguments_list_p[0], obj_p);
@@ -2899,7 +2787,6 @@ ecma_builtin_array_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
return ret_value;
}
#if JERRY_ESNEXT
if (JERRY_UNLIKELY (builtin_routine_id >= ECMA_ARRAY_PROTOTYPE_ENTRIES
&& builtin_routine_id <= ECMA_ARRAY_PROTOTYPE_KEYS))
{
@@ -2918,7 +2805,6 @@ ecma_builtin_array_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
ecma_deref_object (obj_p);
return ret_value;
}
#endif /* JERRY_ESNEXT */
ecma_length_t length;
ecma_value_t len_value = ecma_op_object_get_length (obj_p, &length);
@@ -3019,7 +2905,6 @@ ecma_builtin_array_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
length);
break;
}
#if JERRY_ESNEXT
case ECMA_ARRAY_PROTOTYPE_COPY_WITHIN:
{
ret_value = ecma_builtin_array_prototype_object_copy_within (arguments_list_p, arguments_number, obj_p, length);
@@ -3060,7 +2945,6 @@ ecma_builtin_array_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
ecma_builtin_array_prototype_object_flat_map (arguments_list_p[0], arguments_list_p[1], obj_p, length);
break;
}
#endif /* JERRY_ESNEXT */
default:
{
JERRY_ASSERT (builtin_routine_id == ECMA_ARRAY_PROTOTYPE_FILTER);
@@ -27,12 +27,10 @@
/* ECMA-262 v5, 15.4.4.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_ARRAY, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
#if JERRY_ESNEXT
/* ECMA-262 v6, 22.1.3.31 */
OBJECT_VALUE (LIT_GLOBAL_SYMBOL_UNSCOPABLES,
ECMA_BUILTIN_ID_ARRAY_PROTOTYPE_UNSCOPABLES,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
/* Number properties:
* (property name, object pointer getter) */
@@ -43,9 +41,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 0, ECMA_PROPERTY_FLAG_WRITABLE)
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
ROUTINE (LIT_MAGIC_STRING_TO_LOCALE_STRING_UL, ECMA_ARRAY_PROTOTYPE_TO_LOCALE_STRING, 0, 0)
#if !JERRY_ESNEXT
ROUTINE (LIT_MAGIC_STRING_TO_STRING_UL, ECMA_ARRAY_PROTOTYPE_TO_STRING, 0, 0)
#endif /* !JERRY_ESNEXT */
ROUTINE (LIT_MAGIC_STRING_CONCAT, ECMA_ARRAY_PROTOTYPE_CONCAT, NON_FIXED, 1)
ROUTINE (LIT_MAGIC_STRING_JOIN, ECMA_ARRAY_PROTOTYPE_JOIN, 1, 1)
ROUTINE (LIT_MAGIC_STRING_POP, ECMA_ARRAY_PROTOTYPE_POP, 0, 0)
@@ -68,7 +63,6 @@ ROUTINE (LIT_MAGIC_STRING_FILTER, ECMA_ARRAY_PROTOTYPE_FILTER, 2, 1)
/* Note these 2 routines must be in this order */
ROUTINE (LIT_MAGIC_STRING_REDUCE, ECMA_ARRAY_PROTOTYPE_REDUCE, 2, 1)
ROUTINE (LIT_MAGIC_STRING_REDUCE_RIGHT_UL, ECMA_ARRAY_PROTOTYPE_REDUCE_RIGHT, 2, 1)
#if JERRY_ESNEXT
ROUTINE (LIT_MAGIC_STRING_FIND, ECMA_ARRAY_PROTOTYPE_FIND, 2, 1)
ROUTINE (LIT_MAGIC_STRING_FIND_INDEX, ECMA_ARRAY_PROTOTYPE_FIND_INDEX, 2, 1)
ROUTINE (LIT_MAGIC_STRING_FILL, ECMA_ARRAY_PROTOTYPE_FILL, 3, 1)
@@ -85,7 +79,6 @@ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_VALUES,
INTRINSIC_PROPERTY (LIT_GLOBAL_SYMBOL_ITERATOR,
LIT_INTERNAL_MAGIC_STRING_ARRAY_PROTOTYPE_VALUES,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_ARRAY */
@@ -46,11 +46,9 @@ enum
{
ECMA_ARRAY_ROUTINE_START = 0,
ECMA_ARRAY_ROUTINE_IS_ARRAY,
#if JERRY_ESNEXT
ECMA_ARRAY_ROUTINE_FROM,
ECMA_ARRAY_ROUTINE_OF,
ECMA_ARRAY_ROUTINE_SPECIES_GET
#endif /* JERRY_ESNEXT */
};
#define BUILTIN_INC_HEADER_NAME "ecma-builtin-array.inc.h"
@@ -67,7 +65,6 @@ enum
* @{
*/
#if JERRY_ESNEXT
/**
* The Array object's 'from' routine
*
@@ -458,8 +455,6 @@ ecma_builtin_array_object_of (ecma_value_t this_arg, /**< 'this' argument */
return ecma_make_object_value (obj_p);
} /* ecma_builtin_array_object_of */
#endif /* JERRY_ESNEXT */
/**
* Handle calling [[Call]] of built-in Array object
*
@@ -500,9 +495,6 @@ ecma_builtin_array_dispatch_construct (const ecma_value_t *arguments_list_p, /**
{
JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL);
#if !JERRY_ESNEXT
return ecma_builtin_array_dispatch_call (arguments_list_p, arguments_list_len);
#else /* JERRY_ESNEXT */
ecma_object_t *proto_p =
ecma_op_get_prototype_from_constructor (JERRY_CONTEXT (current_new_target_p), ECMA_BUILTIN_ID_ARRAY_PROTOTYPE);
@@ -523,7 +515,6 @@ ecma_builtin_array_dispatch_construct (const ecma_value_t *arguments_list_p, /**
ECMA_SET_NON_NULL_POINTER (object_p->u2.prototype_cp, proto_p);
ecma_deref_object (proto_p);
return result;
#endif /* JERRY_ESNEXT */
} /* ecma_builtin_array_dispatch_construct */
/**
@@ -549,7 +540,6 @@ ecma_builtin_array_dispatch_routine (uint8_t builtin_routine_id, /**< built-in w
return ecma_is_value_array (arguments_list_p[0]);
}
#if JERRY_ESNEXT
case ECMA_ARRAY_ROUTINE_FROM:
{
return ecma_builtin_array_object_from (this_arg, arguments_list_p, arguments_number);
@@ -562,7 +552,6 @@ ecma_builtin_array_dispatch_routine (uint8_t builtin_routine_id, /**< built-in w
{
return ecma_copy_value (this_arg);
}
#endif /* JERRY_ESNEXT */
default:
{
JERRY_UNREACHABLE ();
@@ -31,21 +31,16 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_ARRAY_PROTOTYPE, ECMA_
* (property name, object pointer getter) */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_ARRAY_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
ROUTINE (LIT_MAGIC_STRING_IS_ARRAY_UL, ECMA_ARRAY_ROUTINE_IS_ARRAY, 1, 1)
#if JERRY_ESNEXT
ROUTINE (LIT_MAGIC_STRING_FROM, ECMA_ARRAY_ROUTINE_FROM, NON_FIXED, 1)
ROUTINE (LIT_MAGIC_STRING_OF, ECMA_ARRAY_ROUTINE_OF, NON_FIXED, 0)
/* ECMA-262 v6, 22.1.2.5 */
ACCESSOR_READ_ONLY (LIT_GLOBAL_SYMBOL_SPECIES, ECMA_ARRAY_ROUTINE_SPECIES_GET, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#endif /* !(JERRY_BUILTIN_ARRAY) */
@@ -33,8 +33,6 @@
#include "opcodes.h"
#include "vm-defines.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -64,7 +62,7 @@ enum
* \addtogroup ecmabuiltins
* @{
*
* \addtogroup generator ECMA %AsyncFromSyncIteratorPrototype% object built-in
* \addtogroup asyncfromsynciteratorprototype ECMA %AsyncFromSyncIteratorPrototype% object built-in
* @{
*/
@@ -355,5 +353,3 @@ ecma_builtin_async_from_sync_iterator_prototype_dispatch_routine (uint8_t builti
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,14 +19,10 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
ROUTINE (LIT_MAGIC_STRING_NEXT, ECMA_ASYNC_FROM_SYNC_ITERATOR_PROTOTYPE_ROUTINE_NEXT, 1, 1)
ROUTINE (LIT_MAGIC_STRING_RETURN, ECMA_ASYNC_FROM_SYNC_ITERATOR_PROTOTYPE_ROUTINE_RETURN, 1, 1)
ROUTINE (LIT_MAGIC_STRING_THROW, ECMA_ASYNC_FROM_SYNC_ITERATOR_PROTOTYPE_ROUTINE_THROW, 1, 1)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -15,8 +15,6 @@
#include "ecma-globals.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -39,5 +37,3 @@
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,14 +19,10 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* ECMA-262 v11, 25.7.3.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_ASYNC_FUNCTION, ECMA_PROPERTY_FLAG_CONFIGURABLE)
/* ECMA-262 v11, 25.7.3.2 */
STRING_VALUE (LIT_GLOBAL_SYMBOL_TO_STRING_TAG, LIT_MAGIC_STRING_ASYNC_FUNCTION_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -15,8 +15,6 @@
#include "ecma-globals.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
#include "ecma-function-object.h"
@@ -68,5 +66,3 @@ ecma_builtin_async_function_dispatch_construct (const ecma_value_t *arguments_li
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* ECMA-262 v11, 25.7.2 */
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_ASYNC_FUNCTION_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
@@ -33,6 +31,4 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_ASYNC_FUNCTION_PROTOTY
/* ECMA-262 v11, 25.7.3.2 */
STRING_VALUE (LIT_GLOBAL_SYMBOL_TO_STRING_TAG, LIT_MAGIC_STRING_ASYNC_FUNCTION_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -15,8 +15,6 @@
#include "ecma-globals.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
#include "ecma-function-object.h"
@@ -31,7 +29,7 @@
* \addtogroup ecmabuiltins
* @{
*
* \addtogroup asyncgenerator ECMA AsyncGeneratorFunction object built-in
* \addtogroup asyncgeneratorfunction ECMA AsyncGeneratorFunction object built-in
* @{
*/
@@ -70,5 +68,3 @@ ecma_builtin_async_generator_function_dispatch_construct (const ecma_value_t *ar
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* ECMA-262 v10, 25.3.2 */
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_ASYNC_GENERATOR_FUNCTION_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
@@ -30,6 +28,4 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_CONFIGURABLE)
/* ECMA-262 v6, 25.3.2.2 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_ASYNC_GENERATOR, ECMA_PROPERTY_FIXED)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -26,8 +26,6 @@
#include "opcodes.h"
#include "vm-defines.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -57,12 +55,12 @@ enum
* \addtogroup ecmabuiltins
* @{
*
* \addtogroup asyncgenerator ECMA AsyncGenerator.prototype object built-in
* \addtogroup asyncgeneratorprototype ECMA AsyncGenerator.prototype object built-in
* @{
*/
/**
* Convert routine type to operation type..
* Convert routine type to operation type.
*/
#define ECMA_ASYNC_GENERATOR_ROUTINE_TO_OPERATION(type) \
((ecma_async_generator_operation_type_t) ((type) -ECMA_ASYNC_GENERATOR_PROTOTYPE_ROUTINE_NEXT))
@@ -150,5 +148,3 @@ ecma_builtin_async_generator_prototype_dispatch_routine (uint8_t builtin_routine
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* Object properties:
* (property name, object pointer getter) */
@@ -36,6 +34,4 @@ ROUTINE (LIT_MAGIC_STRING_NEXT, ECMA_ASYNC_GENERATOR_PROTOTYPE_ROUTINE_NEXT, 1,
ROUTINE (LIT_MAGIC_STRING_RETURN, ECMA_ASYNC_GENERATOR_PROTOTYPE_ROUTINE_RETURN, 1, 1)
ROUTINE (LIT_MAGIC_STRING_THROW, ECMA_ASYNC_GENERATOR_PROTOTYPE_ROUTINE_THROW, 1, 1)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -15,8 +15,6 @@
#include "ecma-globals.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -39,5 +37,3 @@
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* ECMA-262 v6, 25.3.2.3.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_ASYNC_GENERATOR_FUNCTION, ECMA_PROPERTY_FLAG_CONFIGURABLE)
@@ -32,6 +30,4 @@ STRING_VALUE (LIT_GLOBAL_SYMBOL_TO_STRING_TAG,
LIT_MAGIC_STRING_ASYNC_GENERATOR_FUNCTION_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -17,8 +17,6 @@
#include "ecma-builtins.h"
#include "ecma-iterator-object.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -103,5 +101,3 @@ ecma_builtin_async_iterator_prototype_dispatch_routine (uint8_t builtin_routine_
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,12 +19,8 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
ROUTINE (LIT_GLOBAL_SYMBOL_ASYNC_ITERATOR, ECMA_BUILTIN_ASYNC_ITERATOR_PROTOTYPE_OBJECT_ASYNC_ITERATOR, 0, 0)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -31,10 +31,7 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_BOOLEAN_PROTOTYPE, ECM
* (property name, object pointer getter) */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_BOOLEAN_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_BOOLEAN */
@@ -92,9 +92,6 @@ enum
ECMA_DATE_PROTOTYPE_TO_STRING, /* ECMA-262 v5, 15.9.5.2 */
ECMA_DATE_PROTOTYPE_TO_DATE_STRING, /* ECMA-262 v5, 15.9.5.3 */
#if !JERRY_ESNEXT
ECMA_DATE_PROTOTYPE_TO_UTC_STRING, /* ECMA-262 v5, 15.9.5.42 */
#endif /* JERRY_ESNEXT */
ECMA_DATE_PROTOTYPE_TO_TIME_STRING, /* ECMA-262 v5, 15.9.5.4 */
ECMA_DATE_PROTOTYPE_TO_ISO_STRING, /* ECMA-262 v5, 15.9.5.43 */
@@ -102,9 +99,7 @@ enum
ECMA_DATE_PROTOTYPE_SET_TIME, /* ECMA-262 v5, 15.9.5.27 */
ECMA_DATE_PROTOTYPE_TO_JSON, /* ECMA-262 v5, 15.9.5.44 */
#if JERRY_ESNEXT
ECMA_DATE_PROTOTYPE_TO_PRIMITIVE, /* ECMA-262 v6 20.3.4.45 */
#endif /* JERRY_ESNEXT */
};
#define BUILTIN_INC_HEADER_NAME "ecma-builtin-date-prototype.inc.h"
@@ -178,7 +173,6 @@ ecma_builtin_date_prototype_to_json (ecma_value_t this_arg) /**< this argument *
return ret_value;
} /* ecma_builtin_date_prototype_to_json */
#if JERRY_ESNEXT
/**
* The Date.prototype object's toPrimitive routine
*
@@ -216,7 +210,6 @@ ecma_builtin_date_prototype_to_primitive (ecma_value_t this_arg, /**< this argum
return ecma_raise_type_error (ECMA_ERR_INVALID_ARGUMENT_TYPE_IN_TOPRIMITIVE);
} /* ecma_builtin_date_prototype_to_primitive */
#endif /* JERRY_ESNEXT */
/**
* Dispatch get date functions
@@ -400,28 +393,20 @@ ecma_builtin_date_prototype_dispatch_set (uint16_t builtin_routine_id, /**< buil
}
}
#if JERRY_ESNEXT
ecma_date_object_t *date_object_p = (ecma_date_object_t *) object_p;
ecma_number_t *date_value_p = &date_object_p->date_value;
#else /* !JERRY_ESNEXT */
ecma_extended_object_t *ext_object_p = (ecma_extended_object_t *) object_p;
ecma_number_t *date_value_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_number_t, ext_object_p->u.cls.u3.date);
#endif /* JERRY_ESNEXT */
ecma_number_t date_value = *date_value_p;
if (!BUILTIN_DATE_FUNCTION_IS_UTC (builtin_routine_id))
{
ecma_number_t local_tza;
#if JERRY_ESNEXT
if (date_object_p->header.u.cls.u1.date_flags & ECMA_DATE_TZA_SET)
{
local_tza = date_object_p->header.u.cls.u3.tza;
JERRY_ASSERT (local_tza == ecma_date_local_time_zone_adjustment (date_value));
}
else
#endif /* JERRY_ESNEXT */
{
local_tza = ecma_date_local_time_zone_adjustment (date_value);
}
@@ -472,9 +457,7 @@ ecma_builtin_date_prototype_dispatch_set (uint16_t builtin_routine_id, /**< buil
if (ecma_number_is_nan (converted_number[0]))
{
*date_value_p = converted_number[0];
#if JERRY_ESNEXT
date_object_p->header.u.cls.u1.date_flags &= (uint8_t) ~ECMA_DATE_TZA_SET;
#endif /* JERRY_ESNEXT */
return ecma_make_number_value (converted_number[0]);
}
@@ -603,9 +586,7 @@ ecma_builtin_date_prototype_dispatch_set (uint16_t builtin_routine_id, /**< buil
*date_value_p = full_date;
#if JERRY_ESNEXT
date_object_p->header.u.cls.u1.date_flags &= (uint8_t) ~ECMA_DATE_TZA_SET;
#endif /* JERRY_ESNEXT */
return ecma_make_number_value (full_date);
} /* ecma_builtin_date_prototype_dispatch_set */
@@ -631,12 +612,10 @@ ecma_builtin_date_prototype_dispatch_routine (uint8_t builtin_routine_id, /**< b
return ecma_builtin_date_prototype_to_json (this_arg);
}
#if JERRY_ESNEXT
if (JERRY_UNLIKELY (builtin_routine_id == ECMA_DATE_PROTOTYPE_TO_PRIMITIVE))
{
return ecma_builtin_date_prototype_to_primitive (this_arg, arguments_list[0]);
}
#endif /* JERRY_ESNEXT */
if (!ecma_is_value_object (this_arg)
|| !ecma_object_class_is (ecma_get_object_from_value (this_arg), ECMA_OBJECT_CLASS_DATE))
@@ -646,14 +625,8 @@ ecma_builtin_date_prototype_dispatch_routine (uint8_t builtin_routine_id, /**< b
ecma_object_t *this_obj_p = ecma_get_object_from_value (this_arg);
#if JERRY_ESNEXT
ecma_date_object_t *date_object_p = (ecma_date_object_t *) this_obj_p;
ecma_number_t *date_value_p = &date_object_p->date_value;
#else /* JERRY_ESNEXT */
ecma_extended_object_t *ext_object_p = (ecma_extended_object_t *) this_obj_p;
ecma_number_t *date_value_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_number_t, ext_object_p->u.cls.u3.date);
#endif /* JERRY_ESNEXT */
ecma_number_t date_value = *date_value_p;
if (builtin_routine_id == ECMA_DATE_PROTOTYPE_GET_TIME)
@@ -671,9 +644,7 @@ ecma_builtin_date_prototype_dispatch_routine (uint8_t builtin_routine_id, /**< b
}
*date_value_p = ecma_date_time_clip (time_num);
#if JERRY_ESNEXT
date_object_p->header.u.cls.u1.date_flags &= (uint8_t) ~ECMA_DATE_TZA_SET;
#endif /* JERRY_ESNEXT */
return ecma_make_number_value (*date_value_p);
}
@@ -685,7 +656,7 @@ ecma_builtin_date_prototype_dispatch_routine (uint8_t builtin_routine_id, /**< b
if (!BUILTIN_DATE_FUNCTION_IS_UTC (builtin_routine_id))
{
ecma_number_t local_tza;
#if JERRY_ESNEXT
if (date_object_p->header.u.cls.u1.date_flags & ECMA_DATE_TZA_SET)
{
local_tza = date_object_p->header.u.cls.u3.tza;
@@ -693,14 +664,11 @@ ecma_builtin_date_prototype_dispatch_routine (uint8_t builtin_routine_id, /**< b
}
else
{
#endif /* JERRY_ESNEXT */
local_tza = ecma_date_local_time_zone_adjustment (date_value);
#if JERRY_ESNEXT
JERRY_ASSERT (local_tza <= INT32_MAX && local_tza >= INT32_MIN);
date_object_p->header.u.cls.u3.tza = (int32_t) local_tza;
date_object_p->header.u.cls.u1.date_flags |= ECMA_DATE_TZA_SET;
}
#endif /* JERRY_ESNEXT */
date_value += local_tza;
}
@@ -736,12 +704,6 @@ ecma_builtin_date_prototype_dispatch_routine (uint8_t builtin_routine_id, /**< b
{
return ecma_date_value_to_date_string (date_value);
}
#if !JERRY_ESNEXT
case ECMA_DATE_PROTOTYPE_TO_UTC_STRING:
{
return ecma_date_value_to_utc_string (date_value);
}
#endif /* JERRY_ESNEXT */
default:
{
JERRY_ASSERT (builtin_routine_id == ECMA_DATE_PROTOTYPE_TO_TIME_STRING);
@@ -65,7 +65,6 @@ ROUTINE (LIT_MAGIC_STRING_SET_FULL_YEAR_UL, ECMA_DATE_PROTOTYPE_SET_FULL_YEAR, N
ROUTINE (LIT_MAGIC_STRING_SET_UTC_FULL_YEAR_UL, ECMA_DATE_PROTOTYPE_SET_UTC_FULL_YEAR, NON_FIXED, 3)
ROUTINE (LIT_MAGIC_STRING_TO_ISO_STRING_UL, ECMA_DATE_PROTOTYPE_TO_ISO_STRING, 0, 0)
ROUTINE (LIT_MAGIC_STRING_TO_JSON_UL, ECMA_DATE_PROTOTYPE_TO_JSON, 1, 1)
#if JERRY_ESNEXT
ROUTINE_CONFIGURABLE_ONLY (LIT_GLOBAL_SYMBOL_TO_PRIMITIVE, ECMA_DATE_PROTOTYPE_TO_PRIMITIVE, 1, 1)
INTRINSIC_PROPERTY (LIT_MAGIC_STRING_TO_UTC_STRING_UL,
LIT_MAGIC_STRING_TO_UTC_STRING_UL,
@@ -74,16 +73,6 @@ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_TO_UTC_STRING_UL,
INTRINSIC_PROPERTY (LIT_MAGIC_STRING_TO_GMT_STRING_UL,
LIT_MAGIC_STRING_TO_UTC_STRING_UL,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
#endif /* JERRY_BUILTIN_ANNEXB */
#else /* !JERRY_ESNEXT */
ROUTINE (LIT_MAGIC_STRING_TO_UTC_STRING_UL, ECMA_DATE_PROTOTYPE_TO_UTC_STRING, 0, 0)
#if JERRY_BUILTIN_ANNEXB
ROUTINE (LIT_MAGIC_STRING_TO_GMT_STRING_UL, ECMA_DATE_PROTOTYPE_TO_UTC_STRING, 0, 0)
#endif /* JERRY_BUILTIN_ANNEXB */
#endif /* !JERRY_ESNEXT */
#if JERRY_BUILTIN_ANNEXB
ROUTINE (LIT_MAGIC_STRING_GET_YEAR_UL, ECMA_DATE_PROTOTYPE_GET_YEAR, 0, 0)
ROUTINE (LIT_MAGIC_STRING_SET_YEAR_UL, ECMA_DATE_PROTOTYPE_SET_YEAR, 1, 1)
@@ -669,13 +669,7 @@ static ecma_value_t
ecma_builtin_date_utc (const ecma_value_t args[], /**< arguments list */
uint32_t args_number) /**< number of arguments */
{
#if JERRY_ESNEXT
const uint32_t required_args_number = 1;
#else /* !JERRY_ESNEXT */
const uint32_t required_args_number = 2;
#endif /* JERRY_ESNEXT */
if (args_number < required_args_number)
if (args_number < 1)
{
return ecma_make_nan_value ();
}
@@ -712,7 +706,6 @@ ecma_builtin_date_now_helper (void)
static ecma_value_t
ecma_builtin_date_create (ecma_number_t tv)
{
#if JERRY_ESNEXT
JERRY_ASSERT (JERRY_CONTEXT (current_new_target_p) != NULL);
ecma_object_t *prototype_obj_p =
@@ -731,17 +724,6 @@ ecma_builtin_date_create (ecma_number_t tv)
date_object_p->header.u.cls.u1.date_flags = ECMA_DATE_TZA_NONE;
date_object_p->header.u.cls.u3.tza = 0;
date_object_p->date_value = tv;
#else /* !JERRY_ESNEXT */
ecma_number_t *date_value_p = ecma_alloc_number ();
*date_value_p = tv;
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, sizeof (ecma_extended_object_t), ECMA_OBJECT_TYPE_CLASS);
ecma_extended_object_t *ext_object_p = (ecma_extended_object_t *) obj_p;
ext_object_p->u.cls.type = ECMA_OBJECT_CLASS_DATE;
ECMA_SET_INTERNAL_VALUE_POINTER (ext_object_p->u.cls.u3.date, date_value_p);
#endif /* JERRY_ESNEXT */
return ecma_make_object_value (obj_p);
} /* ecma_builtin_date_create */
@@ -793,14 +775,7 @@ ecma_builtin_date_dispatch_construct (const ecma_value_t *arguments_list_p, /**<
if (ecma_is_value_object (argument)
&& ecma_object_class_is (ecma_get_object_from_value (argument), ECMA_OBJECT_CLASS_DATE))
{
#if JERRY_ESNEXT
tv = ((ecma_date_object_t *) ecma_get_object_from_value (argument))->date_value;
#else /* !JERRY_ESNEXT */
ecma_extended_object_t *arg_ext_object_p = (ecma_extended_object_t *) ecma_get_object_from_value (argument);
tv = *ECMA_GET_INTERNAL_VALUE_POINTER (ecma_number_t, arg_ext_object_p->u.cls.u3.date);
#endif /* JERRY_ESNEXT */
return ecma_builtin_date_create (tv);
return ecma_builtin_date_create (((ecma_date_object_t *) ecma_get_object_from_value (argument))->date_value);
}
/* 4.b */
ecma_value_t primitive = ecma_op_to_primitive (argument, ECMA_PREFERRED_TYPE_NO);
@@ -30,9 +30,7 @@ ROUTINE (LIT_MAGIC_STRING_PARSE, ECMA_DATE_ROUTINE_PARSE, 1, 1)
ROUTINE (LIT_MAGIC_STRING_UTC_U, ECMA_DATE_ROUTINE_UTC, NON_FIXED, 7)
ROUTINE (LIT_MAGIC_STRING_NOW, ECMA_DATE_ROUTINE_NOW, 0, 0)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_DATE_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_DATE */
@@ -65,9 +65,6 @@ ecma_value_t
ecma_builtin_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
uint32_t arguments_list_len) /**< number of arguments */
{
#if !JERRY_ESNEXT
return ecma_builtin_error_dispatch_call (arguments_list_p, arguments_list_len);
#else /* JERRY_ESNEXT */
ecma_object_t *proto_p =
ecma_op_get_prototype_from_constructor (JERRY_CONTEXT (current_new_target_p), ECMA_BUILTIN_ID_ERROR_PROTOTYPE);
@@ -87,7 +84,6 @@ ecma_builtin_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**
ecma_deref_object (proto_p);
return result;
#endif /* JERRY_ESNEXT */
} /* ecma_builtin_error_dispatch_construct */
/**
@@ -30,8 +30,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
/* ECMA-262 v5, 15.7.3.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_ERROR_PROTOTYPE, ECMA_PROPERTY_FIXED)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_ERROR_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -67,9 +67,6 @@ ecma_value_t
ecma_builtin_eval_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
uint32_t arguments_list_len) /**< number of arguments */
{
#if !JERRY_ESNEXT
return ecma_builtin_eval_error_dispatch_call (arguments_list_p, arguments_list_len);
#else /* JERRY_ESNEXT */
ecma_object_t *proto_p =
ecma_op_get_prototype_from_constructor (JERRY_CONTEXT (current_new_target_p), ECMA_BUILTIN_ID_EVAL_ERROR_PROTOTYPE);
@@ -89,7 +86,6 @@ ecma_builtin_eval_error_dispatch_construct (const ecma_value_t *arguments_list_p
ecma_deref_object (proto_p);
return result;
#endif /* JERRY_ESNEXT */
} /* ecma_builtin_eval_error_dispatch_construct */
/**
@@ -32,9 +32,7 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
/* ECMA-262 v5, 15.11.3.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_EVAL_ERROR_PROTOTYPE, ECMA_PROPERTY_FIXED)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_EVAL_ERROR_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_ERRORS */
@@ -48,9 +48,7 @@ enum
ECMA_FUNCTION_PROTOTYPE_CALL,
ECMA_FUNCTION_PROTOTYPE_APPLY,
ECMA_FUNCTION_PROTOTYPE_BIND,
#if JERRY_ESNEXT
ECMA_FUNCTION_PROTOTYPE_SYMBOL_HAS_INSTANCE,
#endif /* JERRY_ESNEXT */
};
#define BUILTIN_INC_HEADER_NAME "ecma-builtin-function-prototype.inc.h"
@@ -103,12 +101,10 @@ ecma_builtin_function_prototype_object_to_string (ecma_object_t *func_obj_p) /**
if (extended_info & CBC_EXTENDED_CODE_FLAGS_HAS_SOURCE_CODE_RANGE)
{
#if JERRY_ESNEXT
if (extended_info & CBC_EXTENDED_CODE_FLAGS_HAS_ARGUMENT_LENGTH)
{
ecma_extended_info_decode_vlq (&extended_info_p);
}
#endif /* JERRY_ESNEXT */
uint32_t range_start = ecma_extended_info_decode_vlq (&extended_info_p);
uint32_t range_size = ecma_extended_info_decode_vlq (&extended_info_p);
@@ -159,7 +155,6 @@ ecma_builtin_function_prototype_object_to_string (ecma_object_t *func_obj_p) /**
lit_magic_string_id_t header_id = LIT_MAGIC_STRING_FUNCTION_TO_STRING_ANON;
#if JERRY_ESNEXT
switch (CBC_FUNCTION_GET_TYPE (bytecode_p->status_flags))
{
case CBC_FUNCTION_GENERATOR:
@@ -178,7 +173,6 @@ ecma_builtin_function_prototype_object_to_string (ecma_object_t *func_obj_p) /**
break;
}
}
#endif /* JERRY_ESNEXT */
ecma_stringbuilder_t builder = ecma_stringbuilder_create_from (ecma_get_magic_string (header_id));
ecma_value_t function_arguments = CBC_SCRIPT_GET_FUNCTION_ARGUMENTS (script_p, script_p->refs_and_type);
@@ -314,9 +308,6 @@ ecma_builtin_function_prototype_object_bind (ecma_object_t *this_arg_obj_p, /**<
/* 4. 11. 18. */
ecma_object_t *prototype_obj_p;
#if !JERRY_ESNEXT
prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE);
#else /* JERRY_ESNEXT */
#if JERRY_BUILTIN_PROXY
if (ECMA_OBJECT_IS_PROXY (this_arg_obj_p))
{
@@ -344,7 +335,6 @@ ecma_builtin_function_prototype_object_bind (ecma_object_t *this_arg_obj_p, /**<
#if JERRY_BUILTIN_PROXY
}
#endif /* JERRY_BUILTIN_PROXY */
#endif /* !JERRY_ESNEXT */
ecma_object_t *function_p;
ecma_bound_function_t *bound_func_p;
@@ -390,7 +380,6 @@ ecma_builtin_function_prototype_object_bind (ecma_object_t *this_arg_obj_p, /**<
bound_func_p->header.u.bound_function.args_len_or_this = args_len_or_this;
}
#if JERRY_ESNEXT
if (prototype_obj_p != NULL)
{
ecma_deref_object (prototype_obj_p);
@@ -461,7 +450,6 @@ ecma_builtin_function_prototype_object_bind (ecma_object_t *this_arg_obj_p, /**<
NULL);
name_prop_value_p->value = bound_function_name;
#endif /* JERRY_ESNEXT */
/*
* [[Class]] property is not stored explicitly for objects of ECMA_OBJECT_TYPE_FUNCTION type.
@@ -516,12 +504,10 @@ ecma_builtin_function_prototype_dispatch_routine (uint8_t builtin_routine_id, /*
{
if (!ecma_op_is_callable (this_arg))
{
#if JERRY_ESNEXT
if (JERRY_UNLIKELY (builtin_routine_id == ECMA_FUNCTION_PROTOTYPE_SYMBOL_HAS_INSTANCE))
{
return ECMA_VALUE_FALSE;
}
#endif /* JERRY_ESNEXT */
return ecma_raise_type_error (ECMA_ERR_ARGUMENT_THIS_NOT_FUNCTION);
}
@@ -546,12 +532,10 @@ ecma_builtin_function_prototype_dispatch_routine (uint8_t builtin_routine_id, /*
{
return ecma_builtin_function_prototype_object_bind (func_obj_p, arguments_list_p, arguments_number);
}
#if JERRY_ESNEXT
case ECMA_FUNCTION_PROTOTYPE_SYMBOL_HAS_INSTANCE:
{
return ecma_op_object_has_instance (func_obj_p, arguments_list_p[0]);
}
#endif /* JERRY_ESNEXT */
default:
{
JERRY_UNREACHABLE ();
@@ -29,10 +29,7 @@ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_FUNCTION, ECMA_PROPE
* (property name, object pointer getter) */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 0, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING__EMPTY, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
@@ -41,7 +38,6 @@ ROUTINE (LIT_MAGIC_STRING_APPLY, ECMA_FUNCTION_PROTOTYPE_APPLY, 2, 2)
ROUTINE (LIT_MAGIC_STRING_CALL, ECMA_FUNCTION_PROTOTYPE_CALL, NON_FIXED, 1)
ROUTINE (LIT_MAGIC_STRING_BIND, ECMA_FUNCTION_PROTOTYPE_BIND, NON_FIXED, 1)
#if JERRY_ESNEXT
/**
* ECMA-262 v6.0 19.2.3.6 @@hasInstance
* the property attributes are: { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
@@ -55,6 +51,5 @@ ACCESSOR_BUILTIN_FUNCTION (LIT_MAGIC_STRING_CALLER,
ECMA_BUILTIN_ID_TYPE_ERROR_THROWER,
ECMA_BUILTIN_ID_TYPE_ERROR_THROWER,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -29,9 +29,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE, EC
* (property name, object pointer getter) */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_FUNCTION_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -15,8 +15,6 @@
#include "ecma-globals.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
#include "ecma-function-object.h"
@@ -31,7 +29,7 @@
* \addtogroup ecmabuiltins
* @{
*
* \addtogroup generator ECMA GeneratorFunction object built-in
* \addtogroup generatorfunction ECMA GeneratorFunction object built-in
* @{
*/
@@ -68,5 +66,3 @@ ecma_builtin_generator_function_dispatch_construct (const ecma_value_t *argument
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* ECMA-262 v6, 25.2.2 */
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_GENERATOR_FUNCTION_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
@@ -30,6 +28,4 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_CONFIGURABLE)
/* ECMA-262 v6, 25.2.2.2 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_GENERATOR, ECMA_PROPERTY_FIXED)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -24,8 +24,6 @@
#include "opcodes.h"
#include "vm-defines.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -55,12 +53,12 @@ enum
* \addtogroup ecmabuiltins
* @{
*
* \addtogroup generator ECMA Generator.prototype object built-in
* \addtogroup generatorprototype ECMA Generator.prototype object built-in
* @{
*/
/**
* Convert routine type to operation type..
* Convert routine type to operation type.
*/
#define ECMA_GENERATOR_ROUTINE_TO_OPERATION(type) \
((ecma_iterator_command_type_t) ((type) -ECMA_GENERATOR_PROTOTYPE_ROUTINE_NEXT))
@@ -252,5 +250,3 @@ ecma_builtin_generator_prototype_dispatch_routine (uint8_t builtin_routine_id, /
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* Object properties:
* (property name, object pointer getter) */
@@ -36,6 +34,4 @@ ROUTINE (LIT_MAGIC_STRING_NEXT, ECMA_GENERATOR_PROTOTYPE_ROUTINE_NEXT, 1, 1)
ROUTINE (LIT_MAGIC_STRING_RETURN, ECMA_GENERATOR_PROTOTYPE_ROUTINE_RETURN, 1, 1)
ROUTINE (LIT_MAGIC_STRING_THROW, ECMA_GENERATOR_PROTOTYPE_ROUTINE_THROW, 1, 1)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -15,8 +15,6 @@
#include "ecma-globals.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -39,5 +37,3 @@
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* ECMA-262 v6, 25.3.2.3.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_GENERATOR_FUNCTION, ECMA_PROPERTY_FLAG_CONFIGURABLE)
@@ -30,6 +28,4 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_GENERATOR_PROTOTYPE, E
/* ECMA-262 v6, 25.3.2.3.3 */
STRING_VALUE (LIT_GLOBAL_SYMBOL_TO_STRING_TAG, LIT_MAGIC_STRING_GENERATOR_FUNCTION_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -100,12 +100,10 @@ ecma_builtin_global_object_eval (ecma_value_t x) /**< routine's first argument *
parse_opts |= ECMA_PARSE_STRICT_MODE;
}
#if JERRY_ESNEXT
if (vm_is_direct_eval_form_call ())
{
parse_opts |= ECMA_GET_LOCAL_PARSE_OPTS ();
}
#endif /* JERRY_ESNEXT */
/* steps 2 to 8 */
return ecma_op_eval (x, parse_opts);
@@ -173,14 +173,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_WEAKMAP_UL, ECMA_BUILTIN_ID_WEAKMAP, ECMA_PROPERT
OBJECT_VALUE (LIT_MAGIC_STRING_WEAKREF_UL, ECMA_BUILTIN_ID_WEAKREF, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
#endif /* JERRY_BUILTIN_WEAKREF */
#if JERRY_ESNEXT
OBJECT_VALUE (LIT_MAGIC_STRING_AGGREGATE_ERROR_UL, ECMA_BUILTIN_ID_AGGREGATE_ERROR, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
OBJECT_VALUE (LIT_MAGIC_STRING_PROMISE_UL, ECMA_BUILTIN_ID_PROMISE, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
/* ECMA-262 v6, 19.4.1.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_SYMBOL_UL, ECMA_BUILTIN_ID_SYMBOL, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_GLOBAL_THIS
/* ECMA-262 v11, 18.1.1 */
@@ -212,14 +210,10 @@ ROUTINE (LIT_MAGIC_STRING_DECODE_URI, ECMA_GLOBAL_DECODE_URI, 1, 1)
ROUTINE (LIT_MAGIC_STRING_DECODE_URI_COMPONENT, ECMA_GLOBAL_DECODE_URI_COMPONENT, 1, 1)
ROUTINE (LIT_MAGIC_STRING_ENCODE_URI, ECMA_GLOBAL_ENCODE_URI, 1, 1)
ROUTINE (LIT_MAGIC_STRING_ENCODE_URI_COMPONENT, ECMA_GLOBAL_ENCODE_URI_COMPONENT, 1, 1)
#if JERRY_ESNEXT
INTRINSIC_PROPERTY (LIT_MAGIC_STRING_PARSE_FLOAT, LIT_MAGIC_STRING_PARSE_FLOAT, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
INTRINSIC_PROPERTY (LIT_MAGIC_STRING_PARSE_INT, LIT_MAGIC_STRING_PARSE_INT, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
#else /* !JERRY_ESNEXT */
ROUTINE (LIT_MAGIC_STRING_PARSE_FLOAT, ECMA_GLOBAL_PARSE_FLOAT, 1, 1)
ROUTINE (LIT_MAGIC_STRING_PARSE_INT, ECMA_GLOBAL_PARSE_INT, 2, 2)
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_ANNEXB
ROUTINE (LIT_MAGIC_STRING_ESCAPE, ECMA_GLOBAL_ESCAPE, 1, 1)
ROUTINE (LIT_MAGIC_STRING_UNESCAPE, ECMA_GLOBAL_UNESCAPE, 1, 1)
@@ -13,24 +13,26 @@
* limitations under the License.
*/
#include "ecma-globals.h"
#if JERRY_ESNEXT
#include "ecma-builtin-handlers.h"
#include "ecma-globals.h"
#include "ecma-iterator-object.h"
#include "ecma-promise-object.h"
static const ecma_builtin_handler_t ecma_native_handlers[] = {
/** @cond doxygen_suppress */
#define ECMA_NATIVE_HANDLER(id, handler, length) handler,
#include "ecma-builtin-handlers.inc.h"
#undef ECMA_NATIVE_HANDLER
/** @endcond */
};
static const uint8_t ecma_native_handler_lengths[] = {
/** @cond doxygen_suppress */
#define ECMA_NATIVE_HANDLER(id, handler, length) length,
#include "ecma-builtin-handlers.inc.h"
#undef ECMA_NATIVE_HANDLER
/** @endcond */
};
/**
@@ -56,5 +58,3 @@ ecma_builtin_handler_get_length (ecma_native_handler_id_t id) /**< handler id */
JERRY_ASSERT (id != ECMA_NATIVE_HANDLER_START && id < ECMA_NATIVE_HANDLER__COUNT);
return ecma_native_handler_lengths[id - 1];
} /* ecma_builtin_handler_get_length */
#endif /* JERRY_ESNEXT */
@@ -16,22 +16,21 @@
#ifndef ECMA_BUILTIN_HANDLERS_H
#define ECMA_BUILTIN_HANDLERS_H
#include "ecma-globals.h"
#if JERRY_ESNEXT
#include "ecma-builtins.h"
#include "ecma-globals.h"
#include "ecma-helpers.h"
#include "ecma-promise-object.h"
#include "ecma-proxy-object.h"
typedef enum
{
/** @cond doxygen_suppress */
ECMA_NATIVE_HANDLER_START = 0,
#define ECMA_NATIVE_HANDLER(id, handler, length) id,
#include "ecma-builtin-handlers.inc.h"
#undef ECMA_NATIVE_HANDLER
ECMA_NATIVE_HANDLER__COUNT
/** @endcond */
} ecma_native_handler_id_t;
typedef enum
@@ -49,6 +48,4 @@ typedef enum
ecma_builtin_handler_t ecma_builtin_handler_get (ecma_native_handler_id_t id);
uint8_t ecma_builtin_handler_get_length (ecma_native_handler_id_t id);
#endif /* JERRY_ESNEXT */
#endif /* !ECMA_BUILTIN_HANDLERS_H */
@@ -25,7 +25,6 @@
#define STRING_VALUE(name, magic_string_id, prop_attributes)
#endif /* !STRING_VALUE */
#if JERRY_ESNEXT
#ifndef SYMBOL_VALUE
#define SYMBOL_VALUE(symbol, desc_magic_string_id)
#endif /* !SYMBOL_VALUE */
@@ -37,7 +36,6 @@
#ifndef ACCESSOR_BUILTIN_FUNCTION_OBJECT
#define ACCESSOR_BUILTIN_FUNCTION_OBJECT(name, getter_builtin_id, setter_builtin_id, prop_attributes)
#endif /* !ACCESSOR_BUILTIN_FUNCTION_OBJECT */
#endif /* JERRY_ESNEXT */
#ifndef OBJECT_VALUE
#define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
@@ -16,11 +16,9 @@
#undef SIMPLE_VALUE
#undef NUMBER_VALUE
#undef STRING_VALUE
#if JERRY_ESNEXT
#undef SYMBOL_VALUE
#undef INTRINSIC_PROPERTY
#undef ACCESSOR_BUILTIN_FUNCTION_OBJECT
#endif /* JERRY_ESNEXT */
#undef OBJECT_VALUE
#undef ROUTINE
#undef ROUTINE_CONFIGURABLE_ONLY
@@ -37,7 +37,6 @@
* @{
*/
#if JERRY_ESNEXT
/**
* Helper function for Object.prototype.toString routine when
* the @@toStringTag property is present
@@ -100,7 +99,6 @@ ecma_builtin_helper_object_to_string_tag_helper (ecma_value_t tag_value) /**< st
return ecma_make_string_value (ret_string_p);
} /* ecma_builtin_helper_object_to_string_tag_helper */
#endif /* JERRY_ESNEXT */
/**
* Common implementation of the Object.prototype.toString routine
@@ -144,7 +142,6 @@ ecma_builtin_helper_object_to_string (const ecma_value_t this_arg) /**< this arg
builtin_tag = ecma_object_get_class_name (obj_p);
#if JERRY_ESNEXT
ecma_value_t is_array = ecma_is_value_array (obj_this);
if (ECMA_IS_VALUE_ERROR (is_array))
@@ -181,8 +178,6 @@ ecma_builtin_helper_object_to_string (const ecma_value_t this_arg) /**< this arg
}
ecma_free_value (tag);
#endif /* JERRY_ESNEXT */
ecma_deref_object (obj_p);
}
@@ -260,7 +255,6 @@ ecma_builtin_helper_array_index_normalize (ecma_value_t arg, /**< index */
ecma_length_t length, /**< array's length */
ecma_length_t *number_p) /**< [out] ecma_length_t */
{
#if JERRY_ESNEXT
ecma_number_t to_int;
if (ECMA_IS_VALUE_ERROR (ecma_op_to_integer (arg, &to_int)))
@@ -272,9 +266,6 @@ ecma_builtin_helper_array_index_normalize (ecma_value_t arg, /**< index */
: (ecma_length_t) JERRY_MIN (to_int, (ecma_number_t) length));
return ECMA_VALUE_EMPTY;
#else /* !JERRY_ESNEXT */
return ecma_builtin_helper_uint32_index_normalize (arg, length, number_p);
#endif /* JERRY_ESNEXT */
} /* ecma_builtin_helper_array_index_normalize */
/**
@@ -336,7 +327,6 @@ ecma_builtin_helper_array_concat_value (ecma_object_t *array_obj_p, /**< array *
ecma_value_t value) /**< value to concat */
{
/* 5.b */
#if JERRY_ESNEXT
ecma_value_t is_spreadable = ecma_op_is_concat_spreadable (value);
if (ECMA_IS_VALUE_ERROR (is_spreadable))
@@ -347,17 +337,11 @@ ecma_builtin_helper_array_concat_value (ecma_object_t *array_obj_p, /**< array *
bool spread_object = is_spreadable == ECMA_VALUE_TRUE;
/* ES11: 22.1.3.1.5.c.iv.3.b */
const uint32_t prop_flags = ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE | JERRY_PROP_SHOULD_THROW;
#else /* !JERRY_ESNEXT */
/* ES5.1: 15.4.4.4.5.b.iii.3.b */
const uint32_t prop_flags = ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE;
bool spread_object = ecma_is_value_true (ecma_is_value_array (value));
#endif /* JERRY_ESNEXT */
if (spread_object)
{
ecma_object_t *obj_p = ecma_get_object_from_value (value);
#if JERRY_ESNEXT
ecma_length_t arg_len;
ecma_value_t error = ecma_op_object_get_length (obj_p, &arg_len);
@@ -371,10 +355,7 @@ ecma_builtin_helper_array_concat_value (ecma_object_t *array_obj_p, /**< array *
{
return ecma_raise_type_error (ECMA_ERR_INVALID_ARRAY_LENGTH);
}
#else /* !JERRY_ESNEXT */
/* 5.b.ii */
uint32_t arg_len = ecma_array_get_length (obj_p);
#endif /* JERRY_ESNEXT */
/* 5.b.iii */
for (ecma_length_t array_index = 0; array_index < arg_len; array_index++)
{
@@ -396,14 +377,11 @@ ecma_builtin_helper_array_concat_value (ecma_object_t *array_obj_p, /**< array *
ecma_value_t put_comp =
ecma_builtin_helper_def_prop_by_index (array_obj_p, *length_p + array_index, get_value, prop_flags);
ecma_free_value (get_value);
#if JERRY_ESNEXT
if (ECMA_IS_VALUE_ERROR (put_comp))
{
return put_comp;
}
#else /* !JERRY_ESNEXT */
JERRY_ASSERT (ecma_is_value_true (put_comp));
#endif /* JERRY_ESNEXT */
}
*length_p += arg_len;
@@ -414,14 +392,10 @@ ecma_builtin_helper_array_concat_value (ecma_object_t *array_obj_p, /**< array *
/* This will always be a simple value since 'is_throw' is false, so no need to free. */
ecma_value_t put_comp = ecma_builtin_helper_def_prop_by_index (array_obj_p, (*length_p)++, value, prop_flags);
#if JERRY_ESNEXT
if (ECMA_IS_VALUE_ERROR (put_comp))
{
return put_comp;
}
#else /* !JERRY_ESNEXT */
JERRY_ASSERT (ecma_is_value_true (put_comp));
#endif /* JERRY_ESNEXT */
return ECMA_VALUE_EMPTY;
} /* ecma_builtin_helper_array_concat_value */
@@ -578,7 +552,6 @@ ecma_builtin_helper_string_prototype_object_index_of (ecma_string_t *original_st
/* 5 (indexOf) -- 6 (lastIndexOf) */
const lit_utf8_size_t original_len = ecma_string_get_length (original_str_p);
#if JERRY_ESNEXT
/* 4, 6 (startsWith, includes, endsWith) */
if (mode >= ECMA_STRING_STARTS_WITH)
{
@@ -595,7 +568,6 @@ ecma_builtin_helper_string_prototype_object_index_of (ecma_string_t *original_st
return ecma_raise_type_error (ECMA_ERR_SEARCH_STRING_CANNOT_BE_OF_TYPE_REGEXP);
}
}
#endif /* JERRY_ESNEXT */
/* 7, 8 */
ecma_string_t *search_str_p = ecma_op_to_string (arg1);
@@ -609,18 +581,15 @@ ecma_builtin_helper_string_prototype_object_index_of (ecma_string_t *original_st
/* 4 (indexOf, lastIndexOf), 9 (startsWith, includes), 10 (endsWith) */
ecma_number_t pos_num;
#if JERRY_ESNEXT
if (mode > ECMA_STRING_LAST_INDEX_OF)
{
ret_value = ecma_op_to_integer (arg2, &pos_num);
}
else
{
#endif /* JERRY_ESNEXT */
ret_value = ecma_op_to_number (arg2, &pos_num);
#if JERRY_ESNEXT
}
#endif /* JERRY_ESNEXT */
/* 10 (startsWith, includes), 11 (endsWith) */
if (ECMA_IS_VALUE_ERROR (ret_value))
@@ -640,7 +609,6 @@ ecma_builtin_helper_string_prototype_object_index_of (ecma_string_t *original_st
switch (mode)
{
#if JERRY_ESNEXT
case ECMA_STRING_STARTS_WITH:
{
if (start > original_len)
@@ -685,8 +653,6 @@ ecma_builtin_helper_string_prototype_object_index_of (ecma_string_t *original_st
ret_value = ecma_make_boolean_value (index == (uint32_t) start_ends_with);
break;
}
#endif /* JERRY_ESNEXT */
case ECMA_STRING_INDEX_OF:
{
/* 8 (indexOf) -- 9 (lastIndexOf) */
@@ -932,7 +898,6 @@ ecma_builtin_replace_substitute (ecma_replace_context_t *ctx_p) /**< replace con
}
case LIT_CHAR_AMPERSAND:
{
#if JERRY_ESNEXT
if (JERRY_UNLIKELY (ctx_p->matched_p == NULL))
{
JERRY_ASSERT (ctx_p->capture_count == 0);
@@ -944,7 +909,6 @@ ecma_builtin_replace_substitute (ecma_replace_context_t *ctx_p) /**< replace con
ecma_stringbuilder_append (&(ctx_p->builder), ecma_get_string_from_value (match_value));
break;
}
#endif /* JERRY_ESNEXT */
JERRY_ASSERT (ctx_p->matched_p != NULL);
ecma_stringbuilder_append_raw (&(ctx_p->builder), ctx_p->matched_p, ctx_p->matched_size);
@@ -957,7 +921,6 @@ ecma_builtin_replace_substitute (ecma_replace_context_t *ctx_p) /**< replace con
}
case LIT_CHAR_SINGLE_QUOTE:
{
#if JERRY_ESNEXT
if (JERRY_UNLIKELY (ctx_p->matched_p == NULL))
{
JERRY_ASSERT (ctx_p->capture_count == 0);
@@ -975,7 +938,6 @@ ecma_builtin_replace_substitute (ecma_replace_context_t *ctx_p) /**< replace con
(lit_utf8_size_t) (ctx_p->string_p + ctx_p->string_size - begin_p));
break;
}
#endif /* JERRY_ESNEXT */
JERRY_ASSERT (ctx_p->matched_p != NULL);
ecma_stringbuilder_append_raw (&(ctx_p->builder),
@@ -990,12 +952,11 @@ ecma_builtin_replace_substitute (ecma_replace_context_t *ctx_p) /**< replace con
if (lit_char_is_decimal_digit (c))
{
uint32_t capture_count = ctx_p->capture_count;
#if JERRY_ESNEXT
if (capture_count == 0 && ctx_p->u.collection_p != NULL)
{
capture_count = ctx_p->u.collection_p->item_count;
}
#endif /* JERRY_ESNEXT */
uint8_t idx = (uint8_t) (c - LIT_CHAR_0);
if (curr_p < replace_end_p && lit_char_is_decimal_digit (*(curr_p)))
@@ -1026,7 +987,6 @@ ecma_builtin_replace_substitute (ecma_replace_context_t *ctx_p) /**< replace con
break;
#endif /* JERRY_BUILTIN_REGEXP */
}
#if JERRY_ESNEXT
else if (ctx_p->u.collection_p != NULL)
{
const ecma_value_t capture_value = ctx_p->u.collection_p->buffer_p[idx];
@@ -1037,7 +997,6 @@ ecma_builtin_replace_substitute (ecma_replace_context_t *ctx_p) /**< replace con
break;
}
#endif /* JERRY_ESNEXT */
}
}
@@ -1061,6 +1020,19 @@ ecma_builtin_replace_substitute (ecma_replace_context_t *ctx_p) /**< replace con
}
} /* ecma_builtin_replace_substitute */
/**
* Helper function to determine if method is the builtin exec method
*
* @return true, if function is the builtin exec method
* false, otherwise
*/
extern inline bool JERRY_ATTR_ALWAYS_INLINE
ecma_builtin_is_regexp_exec (ecma_extended_object_t *obj_p) /**< function object */
{
return (ecma_get_object_type (&obj_p->object) == ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION
&& obj_p->u.built_in.routine_id == ECMA_REGEXP_PROTOTYPE_ROUTINE_EXEC);
} /* ecma_builtin_is_regexp_exec */
/**
* @}
* @}
@@ -28,6 +28,37 @@
* @{
*/
/**
* List of built-in routine identifiers.
*/
enum
{
/** These routines must be in this order */
ECMA_REGEXP_PROTOTYPE_ROUTINE_START = 0,
ECMA_REGEXP_PROTOTYPE_ROUTINE_EXEC,
#if JERRY_BUILTIN_ANNEXB
ECMA_REGEXP_PROTOTYPE_ROUTINE_COMPILE,
#endif /* JERRY_BUILTIN_ANNEXB */
ECMA_REGEXP_PROTOTYPE_ROUTINE_TEST,
ECMA_REGEXP_PROTOTYPE_ROUTINE_TO_STRING,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_SOURCE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_FLAGS,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_GLOBAL,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_IGNORE_CASE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_MULTILINE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_STICKY,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_UNICODE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_DOT_ALL,
ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_SEARCH,
ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_MATCH,
ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_REPLACE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_SPLIT,
ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_MATCH_ALL,
};
/**
* Mode of string index routine.
*/
@@ -90,10 +121,7 @@ typedef struct
} ecma_replace_context_t;
void ecma_builtin_replace_substitute (ecma_replace_context_t *ctx_p);
#if JERRY_ESNEXT
bool ecma_builtin_is_regexp_exec (ecma_extended_object_t *obj_p);
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_DATE
@@ -141,7 +141,6 @@ const ecma_builtin_property_descriptor_t PROPERTY_DESCRIPTOR_LIST_NAME[] = {
{ name, ECMA_BUILTIN_PROPERTY_NUMBER, (prop_attributes) | ECMA_PROPERTY_FLAG_BUILT_IN, number_value },
#define STRING_VALUE(name, magic_string_id, prop_attributes) \
{ name, ECMA_BUILTIN_PROPERTY_STRING, (prop_attributes) | ECMA_PROPERTY_FLAG_BUILT_IN, magic_string_id },
#if JERRY_ESNEXT
#define SYMBOL_VALUE(name, symbol) { name, ECMA_BUILTIN_PROPERTY_SYMBOL, ECMA_PROPERTY_BUILT_IN_FIXED, symbol },
#define INTRINSIC_PROPERTY(name, magic_string_id, prop_attributes) \
{ name, ECMA_BUILTIN_PROPERTY_INTRINSIC_PROPERTY, (prop_attributes) | ECMA_PROPERTY_FLAG_BUILT_IN, magic_string_id },
@@ -150,7 +149,6 @@ const ecma_builtin_property_descriptor_t PROPERTY_DESCRIPTOR_LIST_NAME[] = {
ECMA_BUILTIN_PROPERTY_ACCESSOR_BUILTIN_FUNCTION, \
(prop_attributes) | ECMA_PROPERTY_FLAG_BUILT_IN, \
ECMA_ACCESSOR_READ_WRITE (getter_builtin_id, setter_builtin_id) },
#endif /* JERRY_ESNEXT */
#include BUILTIN_INC_HEADER_NAME
{ LIT_MAGIC_STRING__COUNT, ECMA_BUILTIN_PROPERTY_END, 0, 0 }
};
@@ -25,8 +25,6 @@
#include "lit-char-helpers.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -106,7 +104,7 @@ ecma_builtin_intrinsic_array_prototype_values (ecma_value_t this_value) /**< thi
* Returned value must be freed with ecma_free_value.
*/
static ecma_value_t
ecma_builtin_intrinsic_map_prototype_entries (ecma_value_t this_value)
ecma_builtin_intrinsic_map_prototype_entries (ecma_value_t this_value) /**< this value */
{
ecma_extended_object_t *map_object_p = ecma_op_container_get_object (this_value, LIT_MAGIC_STRING_MAP_UL);
@@ -132,7 +130,7 @@ ecma_builtin_intrinsic_map_prototype_entries (ecma_value_t this_value)
* Returned value must be freed with ecma_free_value.
*/
static ecma_value_t
ecma_builtin_intrinsic_set_prototype_values (ecma_value_t this_value)
ecma_builtin_intrinsic_set_prototype_values (ecma_value_t this_value) /**< this value */
{
ecma_extended_object_t *map_object_p = ecma_op_container_get_object (this_value, LIT_MAGIC_STRING_SET_UL);
@@ -164,32 +162,11 @@ ecma_builtin_intrinsic_dispatch_routine (uint8_t builtin_routine_id, /**< built-
switch (builtin_routine_id)
{
#if JERRY_BUILTIN_ARRAY
case ECMA_INTRINSIC_ARRAY_PROTOTYPE_VALUES:
{
return ecma_builtin_intrinsic_array_prototype_values (this_arg);
}
case ECMA_INTRINSIC_TYPEDARRAY_PROTOTYPE_VALUES:
{
if (!ecma_is_typedarray (this_arg))
{
return ecma_raise_type_error (ECMA_ERR_ARGUMENT_THIS_NOT_TYPED_ARRAY);
}
if (ecma_arraybuffer_is_detached (ecma_typedarray_get_arraybuffer (ecma_get_object_from_value (this_arg))))
{
return ecma_raise_type_error (ECMA_ERR_ARRAYBUFFER_IS_DETACHED);
}
return ecma_typedarray_iterators_helper (this_arg, ECMA_ITERATOR_VALUES);
}
case ECMA_INTRINSIC_SET_PROTOTYPE_VALUES:
{
return ecma_builtin_intrinsic_set_prototype_values (this_arg);
}
case ECMA_INTRINSIC_MAP_PROTOTYPE_ENTRIES:
{
return ecma_builtin_intrinsic_map_prototype_entries (this_arg);
}
case ECMA_INTRINSIC_ARRAY_TO_STRING:
{
ecma_value_t this_obj = ecma_op_to_object (this_arg);
@@ -203,6 +180,34 @@ ecma_builtin_intrinsic_dispatch_routine (uint8_t builtin_routine_id, /**< built-
return result;
}
#endif /* JERRY_BUILTIN_ARRAY */
#if JERRY_BUILTIN_TYPEDARRAY
case ECMA_INTRINSIC_TYPEDARRAY_PROTOTYPE_VALUES:
{
if (!ecma_is_typedarray (this_arg))
{
return ecma_raise_type_error (ECMA_ERR_ARGUMENT_THIS_NOT_TYPED_ARRAY);
}
if (ecma_arraybuffer_is_detached (ecma_typedarray_get_arraybuffer (ecma_get_object_from_value (this_arg))))
{
return ecma_raise_type_error (ECMA_ERR_ARRAYBUFFER_IS_DETACHED);
}
return ecma_typedarray_iterators_helper (this_arg, ECMA_ITERATOR_VALUES);
}
#endif /* JERRY_BUILTIN_TYPEDARRAY */
#if JERRY_BUILTIN_CONTAINER
case ECMA_INTRINSIC_SET_PROTOTYPE_VALUES:
{
return ecma_builtin_intrinsic_set_prototype_values (this_arg);
}
case ECMA_INTRINSIC_MAP_PROTOTYPE_ENTRIES:
{
return ecma_builtin_intrinsic_map_prototype_entries (this_arg);
}
#endif /* JERRY_BUILTIN_CONTAINER */
#if JERRY_BUILTIN_DATE
case ECMA_INTRINSIC_DATE_TO_UTC_STRING:
{
if (!ecma_is_value_object (this_arg)
@@ -211,13 +216,7 @@ ecma_builtin_intrinsic_dispatch_routine (uint8_t builtin_routine_id, /**< built-
return ecma_raise_type_error (ECMA_ERR_ARGUMENT_THIS_NOT_DATE_OBJECT);
}
#if JERRY_ESNEXT
ecma_number_t *date_value_p = &((ecma_date_object_t *) ecma_get_object_from_value (this_arg))->date_value;
#else /* !JERRY_ESNEXT */
ecma_extended_object_t *arg_ext_object_p = (ecma_extended_object_t *) ecma_get_object_from_value (argument);
ecma_number_t *date_value_p =
ECMA_GET_INTERNAL_VALUE_POINTER (ecma_number_t, arg_ext_object_p->u.class_prop.u.date);
#endif /* JERRY_ESNEXT */
if (ecma_number_is_nan (*date_value_p))
{
@@ -226,6 +225,8 @@ ecma_builtin_intrinsic_dispatch_routine (uint8_t builtin_routine_id, /**< built-
return ecma_date_value_to_utc_string (*date_value_p);
}
#endif /* JERRY_BUILTIN_DATE */
#if JERRY_BUILTIN_STRING
case ECMA_INTRINSIC_STRING_TRIM_START:
case ECMA_INTRINSIC_STRING_TRIM_END:
{
@@ -265,6 +266,7 @@ ecma_builtin_intrinsic_dispatch_routine (uint8_t builtin_routine_id, /**< built-
ecma_deref_ecma_string (to_str_p);
return result;
}
#endif /* JERRY_BUILTIN_STRING */
default:
{
JERRY_ASSERT (builtin_routine_id == ECMA_INTRINSIC_PARSE_INT || builtin_routine_id == ECMA_INTRINSIC_PARSE_FLOAT);
@@ -301,5 +303,3 @@ ecma_builtin_intrinsic_dispatch_routine (uint8_t builtin_routine_id, /**< built-
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
ROUTINE (LIT_INTERNAL_MAGIC_STRING_ARRAY_PROTOTYPE_VALUES, ECMA_INTRINSIC_ARRAY_PROTOTYPE_VALUES, 0, 0)
@@ -33,5 +31,5 @@ ROUTINE (LIT_MAGIC_STRING_TO_STRING_UL, ECMA_INTRINSIC_ARRAY_TO_STRING, 0, 0)
ROUTINE (LIT_MAGIC_STRING_TO_UTC_STRING_UL, ECMA_INTRINSIC_DATE_TO_UTC_STRING, 0, 0)
ROUTINE (LIT_MAGIC_STRING_PARSE_FLOAT, ECMA_INTRINSIC_PARSE_FLOAT, 1, 1)
ROUTINE (LIT_MAGIC_STRING_PARSE_INT, ECMA_INTRINSIC_PARSE_INT, 2, 2)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -17,8 +17,6 @@
#include "ecma-builtins.h"
#include "ecma-iterator-object.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -102,5 +100,3 @@ ecma_builtin_iterator_prototype_dispatch_routine (uint8_t builtin_routine_id, /*
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,12 +19,8 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
ROUTINE (LIT_GLOBAL_SYMBOL_ITERATOR, ECMA_BUILTIN_ITERATOR_PROTOTYPE_OBJECT_ITERATOR, 0, 0)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -653,13 +653,11 @@ ecma_builtin_json_internalize_property (ecma_object_t *reviver_p, /**< reviver f
/* 3.a */
ecma_value_t is_array = ecma_is_value_array (value);
#if JERRY_ESNEXT
if (ECMA_IS_VALUE_ERROR (is_array))
{
ecma_free_value (value);
return is_array;
}
#endif /* JERRY_ESNEXT */
ecma_object_t *object_p = ecma_get_object_from_value (value);
@@ -702,15 +700,12 @@ ecma_builtin_json_internalize_property (ecma_object_t *reviver_p, /**< reviver f
{
ecma_collection_t *props_p =
ecma_op_object_get_enumerable_property_names (object_p, ECMA_ENUMERABLE_PROPERTY_KEYS);
#if JERRY_ESNEXT
if (JERRY_UNLIKELY (props_p == NULL))
{
ecma_deref_object (object_p);
return ECMA_VALUE_ERROR;
}
#else /* !JERRY_ESNEXT */
JERRY_ASSERT (props_p != NULL);
#endif /* JERRY_ESNEXT */
ecma_value_t *buffer_p = props_p->buffer_p;
@@ -773,12 +768,10 @@ ecma_builtin_json_internalize_process_property (ecma_object_t *reviver_p, /**< r
/* ES11: 2.b.iii.2.a / 2.c.ii.2.a */
ecma_value_t delete_val = ecma_op_object_delete (object_p, prop_name, false);
#if JERRY_ESNEXT
if (ECMA_IS_VALUE_ERROR (delete_val))
{
return delete_val;
}
#endif /* JERRY_ESNEXT */
JERRY_ASSERT (ecma_is_value_boolean (delete_val));
}
@@ -789,12 +782,10 @@ ecma_builtin_json_internalize_process_property (ecma_object_t *reviver_p, /**< r
ecma_builtin_helper_def_prop (object_p, prop_name, new_element, ECMA_PROPERTY_CONFIGURABLE_ENUMERABLE_WRITABLE);
ecma_free_value (new_element);
#if JERRY_ESNEXT
if (ECMA_IS_VALUE_ERROR (def_value))
{
return def_value;
}
#endif /* JERRY_ESNEXT */
JERRY_ASSERT (ecma_is_value_boolean (def_value));
}
@@ -900,7 +891,6 @@ ecma_builtin_json_quote (ecma_stringbuilder_t *builder_p, /**< builder for the r
bool should_escape = false;
#if JERRY_ESNEXT
if (lit_is_code_point_utf16_high_surrogate (c))
{
if (str_p < str_end_p)
@@ -922,7 +912,6 @@ ecma_builtin_json_quote (ecma_stringbuilder_t *builder_p, /**< builder for the r
{
should_escape = true;
}
#endif /* JERRY_ESNEXT */
if (c == LIT_CHAR_BACKSLASH || c == LIT_CHAR_DOUBLE_QUOTE)
{
@@ -1571,12 +1560,10 @@ ecma_builtin_json_stringify (ecma_value_t arg1, /**< value */
{
ecma_value_t is_array = ecma_is_value_array (arg2);
#if JERRY_ESNEXT
if (ECMA_IS_VALUE_ERROR (is_array))
{
return is_array;
}
#endif /* JERRY_ESNEXT */
if (ecma_is_value_true (is_array))
{
@@ -21,10 +21,8 @@
#if JERRY_BUILTIN_JSON
#if JERRY_ESNEXT
/* ECMA-262 v6, 24.3.3 */
STRING_VALUE (LIT_GLOBAL_SYMBOL_TO_STRING_TAG, LIT_MAGIC_STRING_JSON_U, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
@@ -62,7 +62,6 @@ enum
ECMA_MATH_OBJECT_SIN, /* ECMA-262 v5, 15.8.2.16 */
ECMA_MATH_OBJECT_SQRT, /* ECMA-262 v5, 15.8.2.17 */
ECMA_MATH_OBJECT_TAN, /* ECMA-262 v5, 15.8.2.18 */
#if JERRY_ESNEXT
ECMA_MATH_OBJECT_ACOSH, /* ECMA-262 v6, 20.2.2.3 */
ECMA_MATH_OBJECT_ASINH, /* ECMA-262 v6, 20.2.2.5 */
ECMA_MATH_OBJECT_ATANH, /* ECMA-262 v6, 20.2.2.7 */
@@ -78,19 +77,14 @@ enum
ECMA_MATH_OBJECT_SINH, /* ECMA-262 v6, 20.2.2.31 */
ECMA_MATH_OBJECT_TANH, /* ECMA-262 v6, 20.2.2.34 */
ECMA_MATH_OBJECT_TRUNC, /* ECMA-262 v6, 20.2.2.35 */
#endif /* JERRY_ESNEXT */
ECMA_MATH_OBJECT_ATAN2,
/* ECMA-262 v5, 15.8.2.5 */ /* first routine with 2 arguments */
#if JERRY_ESNEXT
/* ECMA-262 v5, 15.8.2.5 */ /* first routine with 2 arguments */
ECMA_MATH_OBJECT_IMUL, /* ECMA-262 v6, 20.2.2.19 */
#endif /* JERRY_ESNEXT */
ECMA_MATH_OBJECT_POW,
/* ECMA-262 v5, 15.8.2.13 */ /* last routine with 1 or 2 arguments*/
ECMA_MATH_OBJECT_MAX, /* ECMA-262 v5, 15.8.2.11 */
ECMA_MATH_OBJECT_MIN, /* ECMA-262 v5, 15.8.2.12 */
#if JERRY_ESNEXT
ECMA_MATH_OBJECT_HYPOT, /* ECMA-262 v6, 20.2.2.18 */
#endif /* JERRY_ESNEXT */
ECMA_MATH_OBJECT_RANDOM, /* ECMA-262 v5, 15.8.2.14 */
};
@@ -164,7 +158,6 @@ ecma_builtin_math_object_max_min (bool is_max, /**< 'max' or 'min' operation */
return ecma_make_number_value (result_num);
} /* ecma_builtin_math_object_max_min */
#if JERRY_ESNEXT
/**
* The Math object's 'hypot' routine
*
@@ -270,8 +263,6 @@ ecma_builtin_math_object_sign (ecma_number_t arg)
return (ecma_number_t) 1.0;
} /* ecma_builtin_math_object_sign */
#endif /* JERRY_ESNEXT */
/**
* The Math object's 'random' routine.
*
@@ -384,7 +375,6 @@ ecma_builtin_math_dispatch_routine (uint8_t builtin_routine_id, /**< built-in wi
x = DOUBLE_TO_ECMA_NUMBER_T (log (x));
break;
}
#if JERRY_ESNEXT
case ECMA_MATH_OBJECT_TRUNC:
{
x = ecma_builtin_math_object_trunc (x);
@@ -395,7 +385,6 @@ ecma_builtin_math_dispatch_routine (uint8_t builtin_routine_id, /**< built-in wi
x = ecma_builtin_math_object_sign (x);
break;
}
#endif /* JERRY_ESNEXT */
case ECMA_MATH_OBJECT_ROUND:
{
if (ecma_number_is_nan (x) || ecma_number_is_zero (x) || ecma_number_is_infinity (x))
@@ -456,7 +445,6 @@ ecma_builtin_math_dispatch_routine (uint8_t builtin_routine_id, /**< built-in wi
x = ecma_number_pow (x, y);
break;
}
#if JERRY_ESNEXT
case ECMA_MATH_OBJECT_ACOSH:
{
x = DOUBLE_TO_ECMA_NUMBER_T (acosh (x));
@@ -543,7 +531,6 @@ ecma_builtin_math_dispatch_routine (uint8_t builtin_routine_id, /**< built-in wi
x = (int32_t) (ecma_number_to_uint32 (x) * ecma_number_to_uint32 (y));
break;
}
#endif /* JERRY_ESNEXT */
}
return ecma_make_number_value (x);
} /* if (builtin_routine_id <= ECMA_MATH_OBJECT_POW) */
@@ -555,12 +542,10 @@ ecma_builtin_math_dispatch_routine (uint8_t builtin_routine_id, /**< built-in wi
arguments_number);
}
#if JERRY_ESNEXT
if (builtin_routine_id == ECMA_MATH_OBJECT_HYPOT)
{
return ecma_builtin_math_object_hypot (arguments_list, arguments_number);
}
#endif /* JERRY_ESNEXT */
JERRY_ASSERT (builtin_routine_id == ECMA_MATH_OBJECT_RANDOM);
@@ -48,10 +48,8 @@ NUMBER_VALUE (LIT_MAGIC_STRING_SQRT1_2_U, ECMA_BUILTIN_NUMBER_SQRT_1_2, ECMA_PRO
/* ECMA-262 v5, 15.8.1.8 */
NUMBER_VALUE (LIT_MAGIC_STRING_SQRT2_U, ECMA_BUILTIN_NUMBER_SQRT2, ECMA_PROPERTY_FIXED)
#if JERRY_ESNEXT
/* ECMA-262 v6, 20.2.1.9 */
STRING_VALUE (LIT_GLOBAL_SYMBOL_TO_STRING_TAG, LIT_MAGIC_STRING_MATH_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
@@ -73,7 +71,6 @@ ROUTINE (LIT_MAGIC_STRING_ROUND, ECMA_MATH_OBJECT_ROUND, 1, 1)
ROUTINE (LIT_MAGIC_STRING_SIN, ECMA_MATH_OBJECT_SIN, 1, 1)
ROUTINE (LIT_MAGIC_STRING_SQRT, ECMA_MATH_OBJECT_SQRT, 1, 1)
ROUTINE (LIT_MAGIC_STRING_TAN, ECMA_MATH_OBJECT_TAN, 1, 1)
#if JERRY_ESNEXT
ROUTINE (LIT_MAGIC_STRING_ACOSH, ECMA_MATH_OBJECT_ACOSH, 1, 1)
ROUTINE (LIT_MAGIC_STRING_ASINH, ECMA_MATH_OBJECT_ASINH, 1, 1)
ROUTINE (LIT_MAGIC_STRING_ATANH, ECMA_MATH_OBJECT_ATANH, 1, 1)
@@ -91,7 +88,6 @@ ROUTINE (LIT_MAGIC_STRING_SIGN, ECMA_MATH_OBJECT_SIGN, 1, 1)
ROUTINE (LIT_MAGIC_STRING_SINH, ECMA_MATH_OBJECT_SINH, 1, 1)
ROUTINE (LIT_MAGIC_STRING_TANH, ECMA_MATH_OBJECT_TANH, 1, 1)
ROUTINE (LIT_MAGIC_STRING_TRUNC, ECMA_MATH_OBJECT_TRUNC, 1, 1)
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_MATH */
@@ -34,7 +34,6 @@
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
#if JERRY_ESNEXT
/**
* This object has a custom dispatch function.
*/
@@ -51,7 +50,6 @@ enum
ECMA_NUMBER_OBJECT_ROUTINE_IS_INTEGER,
ECMA_NUMBER_OBJECT_ROUTINE_IS_SAFE_INTEGER
};
#endif /* JERRY_ESNEXT */
#define BUILTIN_INC_HEADER_NAME "ecma-builtin-number.inc.h"
#define BUILTIN_UNDERSCORED_ID number
@@ -155,7 +153,6 @@ ecma_builtin_number_dispatch_construct (const ecma_value_t *arguments_list_p, /*
#endif /* JERRY_BUILTIN_BIGINT */
} /* ecma_builtin_number_dispatch_construct */
#if JERRY_ESNEXT
/**
* The Number object 'isInteger' and 'isSafeInteger' routine
*
@@ -240,8 +237,6 @@ ecma_builtin_number_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
}
} /* ecma_builtin_number_dispatch_routine */
#endif /* JERRY_ESNEXT */
/**
* @}
* @}
@@ -41,8 +41,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_POSITIVE_INFINITY_U, ECMA_BUILTIN_NUMBER_POSITIVE
/* ECMA-262 v5, 15.7.3.6 */
NUMBER_VALUE (LIT_MAGIC_STRING_NEGATIVE_INFINITY_U, ECMA_BUILTIN_NUMBER_NEGATIVE_INFINITY, ECMA_PROPERTY_FIXED)
#if JERRY_ESNEXT
/* ECMA-262 v6, 20.1.2.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_EPSILON_U, ECMA_BUILTIN_NUMBER_EPSILON, ECMA_PROPERTY_FIXED)
@@ -53,7 +51,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_MAX_SAFE_INTEGER_U, ECMA_BUILTIN_NUMBER_MAX_SAFE_
NUMBER_VALUE (LIT_MAGIC_STRING_MIN_SAFE_INTEGER_U, ECMA_BUILTIN_NUMBER_MIN_SAFE_INTEGER, ECMA_PROPERTY_FIXED)
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_NUMBER_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
/* Object properties:
* (property name, object pointer getter) */
@@ -65,12 +62,11 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_NUMBER_PROTOTYPE, ECMA
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
#if JERRY_ESNEXT
ROUTINE (LIT_MAGIC_STRING_IS_FINITE, ECMA_NUMBER_OBJECT_ROUTINE_IS_FINITE, 1, 1)
ROUTINE (LIT_MAGIC_STRING_IS_NAN, ECMA_NUMBER_OBJECT_ROUTINE_IS_NAN, 1, 1)
ROUTINE (LIT_MAGIC_STRING_IS_INTEGER, ECMA_NUMBER_OBJECT_ROUTINE_IS_INTEGER, 1, 1)
ROUTINE (LIT_MAGIC_STRING_IS_SAFE_INTEGER, ECMA_NUMBER_OBJECT_ROUTINE_IS_SAFE_INTEGER, 1, 1)
INTRINSIC_PROPERTY (LIT_MAGIC_STRING_PARSE_FLOAT, LIT_MAGIC_STRING_PARSE_FLOAT, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
INTRINSIC_PROPERTY (LIT_MAGIC_STRING_PARSE_INT, LIT_MAGIC_STRING_PARSE_INT, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -52,12 +52,12 @@ enum
ECMA_OBJECT_PROTOTYPE_HAS_OWN_PROPERTY,
ECMA_OBJECT_PROTOTYPE_PROPERTY_IS_ENUMERABLE,
ECMA_OBJECT_PROTOTYPE_SET_PROTO,
#if JERRY_ESNEXT && JERRY_BUILTIN_ANNEXB
#if JERRY_BUILTIN_ANNEXB
ECMA_OBJECT_PROTOTYPE_DEFINE_GETTER,
ECMA_OBJECT_PROTOTYPE_DEFINE_SETTER,
ECMA_OBJECT_PROTOTYPE_LOOKUP_GETTER,
ECMA_OBJECT_PROTOTYPE_LOOKUP_SETTER,
#endif /* JERRY_ESNEXT && JERRY_BUILTIN_ANNEXB */
#endif /* JERRY_BUILTIN_ANNEXB */
};
#define BUILTIN_INC_HEADER_NAME "ecma-builtin-object-prototype.inc.h"
@@ -193,7 +193,7 @@ ecma_builtin_object_prototype_object_property_is_enumerable (ecma_object_t *obj_
return ecma_make_boolean_value (is_enumerable);
} /* ecma_builtin_object_prototype_object_property_is_enumerable */
#if JERRY_ESNEXT && JERRY_BUILTIN_ANNEXB
#if JERRY_BUILTIN_ANNEXB
/**
* The Object.prototype object's '__defineGetter__' and '__defineSetter__' routine
*
@@ -369,7 +369,7 @@ ecma_builtin_object_prototype_lookup_getter_setter (ecma_value_t this_arg, /**<
return ret_value;
} /* ecma_builtin_object_prototype_lookup_getter_setter */
#endif /* JERRY_ESNEXT && JERRY_BUILTIN_ANNEXB */
#endif /* JERRY_BUILTIN_ANNEXB */
/**
* Dispatcher of the built-in's routines
@@ -427,13 +427,11 @@ ecma_builtin_object_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
ecma_value_t ret_value;
#if JERRY_ESNEXT
if (builtin_routine_id == ECMA_OBJECT_PROTOTYPE_GET_PROTO)
{
ret_value = ecma_builtin_object_object_get_prototype_of (obj_p);
}
else
#endif /* JERRY_ESNEXT */
{
ret_value = ecma_builtin_object_prototype_object_is_prototype_of (obj_p, arguments_list_p[0]);
}
@@ -445,7 +443,6 @@ ecma_builtin_object_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
JERRY_ASSERT (builtin_routine_id >= ECMA_OBJECT_PROTOTYPE_HAS_OWN_PROPERTY);
#if JERRY_ESNEXT
if (builtin_routine_id == ECMA_OBJECT_PROTOTYPE_SET_PROTO)
{
return ecma_builtin_object_object_set_proto (this_arg, arguments_list_p[0]);
@@ -474,7 +471,6 @@ ecma_builtin_object_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
false);
}
#endif /* JERRY_BUILTIN_ANNEXB */
#endif /* JERRY_ESNEXT*/
ecma_string_t *prop_name_p = ecma_op_to_property_key (arguments_list_p[0]);
@@ -39,11 +39,11 @@ ROUTINE (LIT_MAGIC_STRING_HAS_OWN_PROPERTY_UL, ECMA_OBJECT_PROTOTYPE_HAS_OWN_PRO
ROUTINE (LIT_MAGIC_STRING_IS_PROTOTYPE_OF_UL, ECMA_OBJECT_PROTOTYPE_IS_PROTOTYPE_OF, 1, 1)
ROUTINE (LIT_MAGIC_STRING_PROPERTY_IS_ENUMERABLE_UL, ECMA_OBJECT_PROTOTYPE_PROPERTY_IS_ENUMERABLE, 1, 1)
#if JERRY_ESNEXT && JERRY_BUILTIN_ANNEXB
#if JERRY_BUILTIN_ANNEXB
ROUTINE (LIT_MAGIC_STRING_DEFINE_GETTER, ECMA_OBJECT_PROTOTYPE_DEFINE_GETTER, 2, 2)
ROUTINE (LIT_MAGIC_STRING_DEFINE_SETTER, ECMA_OBJECT_PROTOTYPE_DEFINE_SETTER, 2, 2)
ROUTINE (LIT_MAGIC_STRING_LOOKUP_GETTER, ECMA_OBJECT_PROTOTYPE_LOOKUP_GETTER, 1, 1)
ROUTINE (LIT_MAGIC_STRING_LOOKUP_SETTER, ECMA_OBJECT_PROTOTYPE_LOOKUP_SETTER, 1, 1)
#endif /* JERRY_ESNEXT && JERRY_BUILTIN_ANNEXB*/
#endif /* JERRY_BUILTIN_ANNEXB*/
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -21,20 +21,17 @@
#include "ecma-builtins.h"
#include "ecma-conversion.h"
#include "ecma-exceptions.h"
#include "ecma-function-object.h"
#include "ecma-gc.h"
#include "ecma-globals.h"
#include "ecma-helpers.h"
#include "ecma-iterator-object.h"
#include "ecma-objects-general.h"
#include "ecma-objects.h"
#include "ecma-proxy-object.h"
#include "jrt.h"
#if JERRY_ESNEXT
#include "ecma-function-object.h"
#include "ecma-iterator-object.h"
#include "jcontext.h"
#endif /* JERRY_ESNEXT */
#include "jrt.h"
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -126,7 +123,6 @@ ecma_value_t
ecma_builtin_object_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
uint32_t arguments_list_len) /**< number of arguments */
{
#if JERRY_ESNEXT
if (JERRY_CONTEXT (current_new_target_p) != ecma_builtin_get (ECMA_BUILTIN_ID_OBJECT))
{
ecma_object_t *prototype_obj_p =
@@ -141,7 +137,7 @@ ecma_builtin_object_dispatch_construct (const ecma_value_t *arguments_list_p, /*
return ecma_make_object_value (object_p);
}
#endif /* JERRY_ESNEXT */
return ecma_builtin_object_dispatch_call (arguments_list_p, arguments_list_len);
} /* ecma_builtin_object_dispatch_construct */
@@ -176,7 +172,6 @@ ecma_builtin_object_object_get_prototype_of (ecma_object_t *obj_p) /**< routine'
return ECMA_VALUE_NULL;
} /* ecma_builtin_object_object_get_prototype_of */
#if JERRY_ESNEXT
/**
* The Object object's 'setPrototypeOf' routine
*
@@ -303,7 +298,6 @@ ecma_builtin_object_object_set_proto (ecma_value_t arg1, /**< routine's first ar
return ECMA_VALUE_UNDEFINED;
} /* ecma_builtin_object_object_set_proto */
#endif /* JERRY_ESNEXT */
/**
* SetIntegrityLevel operation
@@ -731,7 +725,6 @@ ecma_builtin_object_object_get_own_property_descriptor (ecma_object_t *obj_p, /*
return ECMA_VALUE_UNDEFINED;
} /* ecma_builtin_object_object_get_own_property_descriptor */
#if JERRY_ESNEXT
/**
* The Object object's 'getOwnPropertyDescriptors' routine
*
@@ -799,7 +792,6 @@ ecma_builtin_object_object_get_own_property_descriptors (ecma_object_t *obj_p) /
return ecma_make_object_value (descriptors_p);
} /* ecma_builtin_object_object_get_own_property_descriptors */
#endif /* JERRY_ESNEXT */
/**
* The Object object's 'defineProperties' routine
@@ -852,12 +844,10 @@ ecma_builtin_object_object_define_properties (ecma_object_t *obj_p, /**< routine
ecma_property_descriptor_t prop_desc;
ecma_value_t get_desc = ecma_op_object_get_own_property_descriptor (props_p, prop_name_p, &prop_desc);
#if JERRY_ESNEXT
if (ECMA_IS_VALUE_ERROR (get_desc))
{
goto cleanup;
}
#endif /* JERRY_ESNEXT */
if (ecma_is_value_true (get_desc))
{
@@ -1024,8 +1014,6 @@ ecma_builtin_object_object_define_property (ecma_object_t *obj_p, /**< routine's
return ecma_make_object_value (obj_p);
} /* ecma_builtin_object_object_define_property */
#if JERRY_ESNEXT
/**
* The Object object's 'assign' routine
*
@@ -1286,8 +1274,6 @@ cleanup_iterator:
return result;
} /* ecma_builtin_object_from_entries */
#endif /* JERRY_ESNEXT */
/**
* GetOwnPropertyKeys abstract method
*
@@ -1301,7 +1287,6 @@ static ecma_value_t
ecma_op_object_get_own_property_keys (ecma_value_t this_arg, /**< this argument */
uint16_t type) /**< routine type */
{
#if JERRY_ESNEXT
/* 1. */
ecma_value_t object = ecma_op_to_object (this_arg);
@@ -1351,12 +1336,6 @@ ecma_op_object_get_own_property_keys (ecma_value_t this_arg, /**< this argument
ecma_collection_free (props_p);
return result_array;
#else /* !JERRY_ESNEXT */
JERRY_UNUSED (type);
ecma_object_t *obj_p = ecma_get_object_from_value (this_arg);
ecma_collection_t *props_p = ecma_op_object_own_property_keys (obj_p, JERRY_PROPERTY_FILTER_ALL);
return ecma_op_new_array_object_from_collection (props_p, false);
#endif /* JERRY_ESNEXT */
} /* ecma_op_object_get_own_property_keys */
/**
@@ -1384,7 +1363,6 @@ ecma_builtin_object_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
{
return ecma_builtin_object_object_create (arg1, arg2);
}
#if JERRY_ESNEXT
case ECMA_OBJECT_ROUTINE_SET_PROTOTYPE_OF:
{
return ecma_builtin_object_object_set_prototype_of (arg1, arg2);
@@ -1393,7 +1371,6 @@ ecma_builtin_object_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
{
return ecma_builtin_object_object_is (arg1, arg2);
}
#endif /* JERRY_ESNEXT */
default:
{
break;
@@ -1401,21 +1378,13 @@ ecma_builtin_object_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
}
ecma_object_t *obj_p;
#if !JERRY_ESNEXT
if (!ecma_is_value_object (arg1))
{
return ecma_raise_type_error (ECMA_ERR_ARGUMENT_IS_NOT_AN_OBJECT);
}
#endif /* !JERRY_ESNEXT */
if (builtin_routine_id <= ECMA_OBJECT_ROUTINE_DEFINE_PROPERTIES)
{
#if JERRY_ESNEXT
if (!ecma_is_value_object (arg1))
{
return ecma_raise_type_error (ECMA_ERR_ARGUMENT_IS_NOT_AN_OBJECT);
}
#endif /* JERRY_ESNEXT */
obj_p = ecma_get_object_from_value (arg1);
@@ -1439,7 +1408,6 @@ ecma_builtin_object_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
}
else if (builtin_routine_id <= ECMA_OBJECT_ROUTINE_ENTRIES)
{
#if JERRY_ESNEXT
ecma_value_t object = ecma_op_to_object (arg1);
if (ECMA_IS_VALUE_ERROR (object))
{
@@ -1447,9 +1415,6 @@ ecma_builtin_object_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
}
obj_p = ecma_get_object_from_value (object);
#else /* !JERRY_ESNEXT */
obj_p = ecma_get_object_from_value (arg1);
#endif /* JERRY_ESNEXT */
ecma_value_t result;
switch (builtin_routine_id)
@@ -1459,7 +1424,6 @@ ecma_builtin_object_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
result = ecma_builtin_object_object_get_prototype_of (obj_p);
break;
}
#if JERRY_ESNEXT
case ECMA_OBJECT_ROUTINE_ASSIGN:
{
result = ecma_builtin_object_object_assign (obj_p, arguments_list_p + 1, arguments_number - 1);
@@ -1467,7 +1431,6 @@ ecma_builtin_object_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
}
case ECMA_OBJECT_ROUTINE_ENTRIES:
case ECMA_OBJECT_ROUTINE_VALUES:
#endif /* JERRY_ESNEXT */
case ECMA_OBJECT_ROUTINE_KEYS:
{
JERRY_ASSERT (builtin_routine_id - ECMA_OBJECT_ROUTINE_KEYS < ECMA_ENUMERABLE_PROPERTY__COUNT);
@@ -1491,7 +1454,6 @@ ecma_builtin_object_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
ecma_deref_ecma_string (prop_name_p);
break;
}
#if JERRY_ESNEXT
case ECMA_OBJECT_ROUTINE_HAS_OWN:
{
ecma_string_t *prop_name_p = ecma_op_to_property_key (arg2);
@@ -1516,16 +1478,13 @@ ecma_builtin_object_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
result = ecma_builtin_object_from_entries (arg1);
break;
}
#endif /* JERRY_ESNEXT */
default:
{
JERRY_UNREACHABLE ();
}
}
#if JERRY_ESNEXT
ecma_deref_object (obj_p);
#endif /* JERRY_ESNEXT */
return result;
}
else if (builtin_routine_id <= ECMA_OBJECT_ROUTINE_GET_OWN_PROPERTY_SYMBOLS)
@@ -1534,12 +1493,10 @@ ecma_builtin_object_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
}
else if (builtin_routine_id <= ECMA_OBJECT_ROUTINE_SEAL)
{
#if JERRY_ESNEXT
if (!ecma_is_value_object (arg1))
{
return ecma_copy_value (arg1);
}
#endif /* JERRY_ESNEXT */
obj_p = ecma_get_object_from_value (arg1);
switch (builtin_routine_id)
@@ -1565,12 +1522,11 @@ ecma_builtin_object_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
else
{
JERRY_ASSERT (builtin_routine_id <= ECMA_OBJECT_ROUTINE_IS_SEALED);
#if JERRY_ESNEXT
if (!ecma_is_value_object (arg1))
{
return ecma_make_boolean_value (builtin_routine_id != ECMA_OBJECT_ROUTINE_IS_EXTENSIBLE);
}
#endif /* JERRY_ESNEXT */
obj_p = ecma_get_object_from_value (arg1);
switch (builtin_routine_id)
@@ -29,43 +29,31 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
/* ECMA-262 v5, 15.2.3.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_OBJECT_PROTOTYPE, ECMA_PROPERTY_FIXED)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_OBJECT_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
ROUTINE (LIT_MAGIC_STRING_GET_PROTOTYPE_OF_UL, ECMA_OBJECT_ROUTINE_GET_PROTOTYPE_OF, 1, 1)
ROUTINE (LIT_MAGIC_STRING_GET_OWN_PROPERTY_NAMES_UL, ECMA_OBJECT_ROUTINE_GET_OWN_PROPERTY_NAMES, 1, 1)
#if JERRY_ESNEXT
ROUTINE (LIT_MAGIC_STRING_GET_OWN_PROPERTY_SYMBOLS_UL, ECMA_OBJECT_ROUTINE_GET_OWN_PROPERTY_SYMBOLS, 1, 1)
#endif /* JERRY_ESNEXT */
ROUTINE (LIT_MAGIC_STRING_SEAL, ECMA_OBJECT_ROUTINE_SEAL, 1, 1)
ROUTINE (LIT_MAGIC_STRING_FREEZE, ECMA_OBJECT_ROUTINE_FREEZE, 1, 1)
ROUTINE (LIT_MAGIC_STRING_PREVENT_EXTENSIONS_UL, ECMA_OBJECT_ROUTINE_PREVENT_EXTENSIONS, 1, 1)
ROUTINE (LIT_MAGIC_STRING_IS_SEALED_UL, ECMA_OBJECT_ROUTINE_IS_SEALED, 1, 1)
ROUTINE (LIT_MAGIC_STRING_IS_FROZEN_UL, ECMA_OBJECT_ROUTINE_IS_FROZEN, 1, 1)
ROUTINE (LIT_MAGIC_STRING_IS_EXTENSIBLE, ECMA_OBJECT_ROUTINE_IS_EXTENSIBLE, 1, 1)
#if JERRY_ESNEXT
ROUTINE (LIT_MAGIC_STRING_ENTRIES, ECMA_OBJECT_ROUTINE_ENTRIES, 1, 1)
ROUTINE (LIT_MAGIC_STRING_VALUES, ECMA_OBJECT_ROUTINE_VALUES, 1, 1)
#endif /* JERRY_ESNEXT */
ROUTINE (LIT_MAGIC_STRING_KEYS, ECMA_OBJECT_ROUTINE_KEYS, 1, 1)
ROUTINE (LIT_MAGIC_STRING_GET_OWN_PROPERTY_DESCRIPTOR_UL, ECMA_OBJECT_ROUTINE_GET_OWN_PROPERTY_DESCRIPTOR, 2, 2)
#if JERRY_ESNEXT
ROUTINE (LIT_MAGIC_STRING_HAS_OWN_UL, ECMA_OBJECT_ROUTINE_HAS_OWN, 2, 2)
ROUTINE (LIT_MAGIC_STRING_GET_OWN_PROPERTY_DESCRIPTORS_UL, ECMA_OBJECT_ROUTINE_GET_OWN_PROPERTY_DESCRIPTORS, 1, 1)
ROUTINE (LIT_MAGIC_STRING_OBJECT_FROM_ENTRIES, ECMA_OBJECT_ROUTINE_FROM_ENTRIES, 1, 1)
#endif /* JERRY_ESNEXT */
ROUTINE (LIT_MAGIC_STRING_CREATE, ECMA_OBJECT_ROUTINE_CREATE, 2, 2)
ROUTINE (LIT_MAGIC_STRING_DEFINE_PROPERTIES_UL, ECMA_OBJECT_ROUTINE_DEFINE_PROPERTIES, 2, 2)
ROUTINE (LIT_MAGIC_STRING_DEFINE_PROPERTY_UL, ECMA_OBJECT_ROUTINE_DEFINE_PROPERTY, 3, 3)
#if JERRY_ESNEXT
ROUTINE (LIT_MAGIC_STRING_SET_PROTOTYPE_OF_UL, ECMA_OBJECT_ROUTINE_SET_PROTOTYPE_OF, 2, 2)
ROUTINE (LIT_MAGIC_STRING_ASSIGN, ECMA_OBJECT_ROUTINE_ASSIGN, NON_FIXED, 2)
ROUTINE (LIT_MAGIC_STRING_IS, ECMA_OBJECT_ROUTINE_IS, 2, 2)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -16,8 +16,6 @@
#include "ecma-globals.h"
#include "ecma-promise-object.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -93,5 +91,3 @@ ecma_builtin_promise_prototype_dispatch_routine (uint8_t builtin_routine_id, /**
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -15,8 +15,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* Object properties:
* (property name, object pointer getter) */
@@ -29,6 +27,4 @@ ROUTINE (LIT_MAGIC_STRING_THEN, ECMA_PROMISE_PROTOTYPE_ROUTINE_THEN, 2, 2)
ROUTINE (LIT_MAGIC_STRING_CATCH, ECMA_PROMISE_PROTOTYPE_ROUTINE_CATCH, 1, 1)
ROUTINE (LIT_MAGIC_STRING_FINALLY, ECMA_PROMISE_PROTOTYPE_ROUTINE_FINALLY, 1, 1)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -27,8 +27,6 @@
#include "jcontext.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -527,5 +525,3 @@ ecma_builtin_promise_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* Number properties:
* (property name, number value, writable, enumerable, configurable) */
@@ -45,6 +43,4 @@ ROUTINE (LIT_MAGIC_STRING_ANY, ECMA_PROMISE_ROUTINE_ANY, 1, 1)
/* ES2015 25.4.4.6 */
ACCESSOR_READ_ONLY (LIT_GLOBAL_SYMBOL_SPECIES, ECMA_PROMISE_ROUTINE_SPECIES_GET, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -67,9 +67,6 @@ ecma_value_t
ecma_builtin_range_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
uint32_t arguments_list_len) /**< number of arguments */
{
#if !JERRY_ESNEXT
return ecma_builtin_range_error_dispatch_call (arguments_list_p, arguments_list_len);
#else /* JERRY_ESNEXT */
ecma_object_t *proto_p = ecma_op_get_prototype_from_constructor (JERRY_CONTEXT (current_new_target_p),
ECMA_BUILTIN_ID_RANGE_ERROR_PROTOTYPE);
@@ -89,7 +86,6 @@ ecma_builtin_range_error_dispatch_construct (const ecma_value_t *arguments_list_
ecma_deref_object (proto_p);
return result;
#endif /* JERRY_ESNEXT */
} /* ecma_builtin_range_error_dispatch_construct */
/**
@@ -31,10 +31,7 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
/* ECMA-262 v5, 15.11.3.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_RANGE_ERROR_PROTOTYPE, ECMA_PROPERTY_FIXED)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_RANGE_ERROR_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_ERRORS */
@@ -67,9 +67,6 @@ ecma_value_t
ecma_builtin_reference_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
uint32_t arguments_list_len) /**< number of arguments */
{
#if !JERRY_ESNEXT
return ecma_builtin_reference_error_dispatch_call (arguments_list_p, arguments_list_len);
#else /* JERRY_ESNEXT */
ecma_object_t *proto_p = ecma_op_get_prototype_from_constructor (JERRY_CONTEXT (current_new_target_p),
ECMA_BUILTIN_ID_REFERENCE_ERROR_PROTOTYPE);
@@ -89,7 +86,6 @@ ecma_builtin_reference_error_dispatch_construct (const ecma_value_t *arguments_l
ecma_deref_object (proto_p);
return result;
#endif /* JERRY_ESNEXT */
} /* ecma_builtin_reference_error_dispatch_construct */
/**
@@ -31,10 +31,7 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
/* ECMA-262 v5, 15.11.3.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_REFERENCE_ERROR_PROTOTYPE, ECMA_PROPERTY_FIXED)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_REFERENCE_ERROR_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_ERRORS */
@@ -41,39 +41,6 @@
*/
#define BUILTIN_CUSTOM_DISPATCH
/**
* List of built-in routine identifiers.
*/
enum
{
/** These routines must be in this order */
ECMA_REGEXP_PROTOTYPE_ROUTINE_START = 0,
ECMA_REGEXP_PROTOTYPE_ROUTINE_EXEC,
#if JERRY_BUILTIN_ANNEXB
ECMA_REGEXP_PROTOTYPE_ROUTINE_COMPILE,
#endif /* JERRY_BUILTIN_ANNEXB */
ECMA_REGEXP_PROTOTYPE_ROUTINE_TEST,
ECMA_REGEXP_PROTOTYPE_ROUTINE_TO_STRING,
#if JERRY_ESNEXT
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_SOURCE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_FLAGS,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_GLOBAL,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_IGNORE_CASE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_MULTILINE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_STICKY,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_UNICODE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_DOT_ALL,
ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_SEARCH,
ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_MATCH,
ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_REPLACE,
ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_SPLIT,
ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_MATCH_ALL,
#endif /* JERRY_ESNEXT */
};
#define BUILTIN_INC_HEADER_NAME "ecma-builtin-regexp-prototype.inc.h"
#define BUILTIN_UNDERSCORED_ID regexp_prototype
#include "ecma-builtin-internal-routines-template.inc.h"
@@ -88,7 +55,6 @@ enum
* @{
*/
#if JERRY_ESNEXT
/**
* Helper function to retrieve the flags associated with a RegExp object
*
@@ -239,7 +205,6 @@ ecma_builtin_regexp_prototype_get_source (ecma_extended_object_t *re_obj_p) /**<
return ecma_op_escape_regexp_pattern (ecma_get_string_from_value (bc_p->source));
} /* ecma_builtin_regexp_prototype_get_source */
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_ANNEXB
/**
@@ -258,13 +223,6 @@ ecma_builtin_regexp_prototype_compile (ecma_value_t this_arg, /**< this */
ecma_value_t pattern_arg, /**< pattern or RegExp object */
ecma_value_t flags_arg) /**< flags */
{
#if !JERRY_ESNEXT
if (ecma_get_object_from_value (this_arg) == ecma_builtin_get (ECMA_BUILTIN_ID_REGEXP_PROTOTYPE))
{
return ecma_raise_type_error (ECMA_ERR_ARGUMENT_IS_NOT_AN_REGEXP);
}
#endif /* !JERRY_ESNEXT */
ecma_object_t *this_obj_p = ecma_get_object_from_value (this_arg);
ecma_extended_object_t *re_obj_p = (ecma_extended_object_t *) this_obj_p;
re_compiled_code_t *old_bc_p = ECMA_GET_INTERNAL_VALUE_POINTER (re_compiled_code_t, re_obj_p->u.cls.u3.value);
@@ -362,7 +320,6 @@ static ecma_value_t
ecma_builtin_regexp_prototype_test (ecma_value_t this_arg, /**< this argument */
ecma_value_t arg) /**< routine's argument */
{
#if JERRY_ESNEXT
ecma_string_t *arg_str_p = ecma_op_to_string (arg);
if (JERRY_UNLIKELY (arg_str_p == NULL))
@@ -378,14 +335,6 @@ ecma_builtin_regexp_prototype_test (ecma_value_t this_arg, /**< this argument */
{
return result;
}
#else /* !JERRY_ESNEXT */
ecma_value_t result = ecma_builtin_regexp_prototype_exec (this_arg, arg);
if (ECMA_IS_VALUE_ERROR (result))
{
return result;
}
#endif /* JERRY_ESNEXT */
ecma_value_t ret_value = ecma_make_boolean_value (!ecma_is_value_null (result));
ecma_free_value (result);
@@ -405,7 +354,6 @@ ecma_builtin_regexp_prototype_test (ecma_value_t this_arg, /**< this argument */
static ecma_value_t
ecma_builtin_regexp_prototype_to_string (ecma_object_t *object_p) /**< this object */
{
#if JERRY_ESNEXT
ecma_value_t result = ecma_op_object_get_by_magic_id (object_p, LIT_MAGIC_STRING_SOURCE);
if (ECMA_IS_VALUE_ERROR (result))
{
@@ -446,54 +394,8 @@ ecma_builtin_regexp_prototype_to_string (ecma_object_t *object_p) /**< this obje
ecma_deref_ecma_string (flags_p);
return ecma_make_string_value (ecma_stringbuilder_finalize (&builder));
#else /* !JERRY_ESNEXT */
ecma_extended_object_t *re_obj_p = (ecma_extended_object_t *) object_p;
re_compiled_code_t *bc_p = ECMA_GET_INTERNAL_VALUE_POINTER (re_compiled_code_t, re_obj_p->u.cls.u3.value);
ecma_string_t *source_p = ecma_get_string_from_value (bc_p->source);
uint16_t flags = bc_p->header.status_flags;
ecma_stringbuilder_t result = ecma_stringbuilder_create ();
ecma_stringbuilder_append_byte (&result, LIT_CHAR_SLASH);
ecma_stringbuilder_append (&result, source_p);
ecma_stringbuilder_append_byte (&result, LIT_CHAR_SLASH);
if (flags & RE_FLAG_GLOBAL)
{
ecma_stringbuilder_append_byte (&result, LIT_CHAR_LOWERCASE_G);
}
if (flags & RE_FLAG_IGNORE_CASE)
{
ecma_stringbuilder_append_byte (&result, LIT_CHAR_LOWERCASE_I);
}
if (flags & RE_FLAG_MULTILINE)
{
ecma_stringbuilder_append_byte (&result, LIT_CHAR_LOWERCASE_M);
}
return ecma_make_string_value (ecma_stringbuilder_finalize (&result));
#endif /* JERRY_ESNEXT */
} /* ecma_builtin_regexp_prototype_to_string */
#if JERRY_ESNEXT
/**
* Helper function to determine if method is the builtin exec method
*
* @return true, if function is the builtin exec method
* false, otherwise
*/
extern inline bool JERRY_ATTR_ALWAYS_INLINE
ecma_builtin_is_regexp_exec (ecma_extended_object_t *obj_p)
{
return (ecma_get_object_type (&obj_p->object) == ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION
&& obj_p->u.built_in.routine_id == ECMA_REGEXP_PROTOTYPE_ROUTINE_EXEC);
} /* ecma_builtin_is_regexp_exec */
#endif /* JERRY_ESNEXT */
#if JERRY_ESNEXT
/**
* The RegExp.prototype object's 'matchAll' routine
*
@@ -628,7 +530,6 @@ ecma_builtin_regexp_prototype_match_all (ecma_object_t *regexp_obj_p, /**< this
return ecma_make_object_value (result_obj);
} /* ecma_builtin_regexp_prototype_match_all */
#endif /* JERRY_ESNEXT */
/**
* Dispatcher of the Regexp built-in's routines
@@ -645,12 +546,6 @@ ecma_builtin_regexp_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
{
JERRY_UNUSED (arguments_number);
#if !JERRY_ESNEXT
bool require_regexp = builtin_routine_id <= ECMA_REGEXP_PROTOTYPE_ROUTINE_TO_STRING;
#else /* JERRY_ESNEXT */
bool require_regexp = builtin_routine_id < ECMA_REGEXP_PROTOTYPE_ROUTINE_TEST;
#endif /* JERRY_ESNEXT */
ecma_object_t *obj_p = NULL;
/* 1. && 2. */
@@ -658,7 +553,8 @@ ecma_builtin_regexp_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
{
obj_p = ecma_get_object_from_value (this_arg);
if (require_regexp && !ecma_object_class_is (obj_p, ECMA_OBJECT_CLASS_REGEXP))
if (builtin_routine_id < ECMA_REGEXP_PROTOTYPE_ROUTINE_TEST
&& !ecma_object_class_is (obj_p, ECMA_OBJECT_CLASS_REGEXP))
{
obj_p = NULL;
}
@@ -689,7 +585,6 @@ ecma_builtin_regexp_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
{
return ecma_builtin_regexp_prototype_to_string (obj_p);
}
#if JERRY_ESNEXT
case ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_SEARCH:
{
return ecma_regexp_search_helper (this_arg, arguments_list_p[0]);
@@ -749,7 +644,6 @@ ecma_builtin_regexp_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
ecma_extended_object_t *re_obj_p = (ecma_extended_object_t *) obj_p;
return ecma_builtin_regexp_prototype_flags_helper (re_obj_p, builtin_routine_id);
}
#endif /* JERRY_ESNEXT */
default:
{
JERRY_UNREACHABLE ();
@@ -24,7 +24,6 @@
/* ECMA-262 v5, 15.10.6.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_REGEXP, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
#if JERRY_ESNEXT
ACCESSOR_READ_ONLY (LIT_MAGIC_STRING_FLAGS, ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_FLAGS, ECMA_PROPERTY_FLAG_CONFIGURABLE)
ACCESSOR_READ_ONLY (LIT_MAGIC_STRING_SOURCE, ECMA_REGEXP_PROTOTYPE_ROUTINE_GET_SOURCE, ECMA_PROPERTY_FLAG_CONFIGURABLE)
@@ -52,22 +51,6 @@ ROUTINE (LIT_GLOBAL_SYMBOL_SEARCH, ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_SEARCH,
ROUTINE (LIT_GLOBAL_SYMBOL_SPLIT, ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_SPLIT, 2, 2)
ROUTINE (LIT_GLOBAL_SYMBOL_MATCH, ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_MATCH, 1, 1)
ROUTINE (LIT_GLOBAL_SYMBOL_MATCH_ALL, ECMA_REGEXP_PROTOTYPE_ROUTINE_SYMBOL_MATCH_ALL, 1, 1)
#else /* !JERRY_ESNEXT */
/* ECMA-262 v5, 15.10.7.1 */
STRING_VALUE (LIT_MAGIC_STRING_SOURCE, LIT_MAGIC_STRING_EMPTY_NON_CAPTURE_GROUP, ECMA_PROPERTY_FIXED)
/* ECMA-262 v5, 15.10.7.2 */
SIMPLE_VALUE (LIT_MAGIC_STRING_GLOBAL, ECMA_VALUE_FALSE, ECMA_PROPERTY_FIXED)
/* ECMA-262 v5, 15.10.7.3 */
SIMPLE_VALUE (LIT_MAGIC_STRING_IGNORECASE_UL, ECMA_VALUE_FALSE, ECMA_PROPERTY_FIXED)
/* ECMA-262 v5, 15.10.7.4 */
SIMPLE_VALUE (LIT_MAGIC_STRING_MULTILINE, ECMA_VALUE_FALSE, ECMA_PROPERTY_FIXED)
/* ECMA-262 v5, 15.10.7.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LASTINDEX_UL, 0, ECMA_PROPERTY_FLAG_WRITABLE)
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_ANNEXB
ROUTINE (LIT_MAGIC_STRING_COMPILE, ECMA_REGEXP_PROTOTYPE_ROUTINE_COMPILE, 2, 2)
@@ -20,8 +20,6 @@
#include "ecma-iterator-object.h"
#include "ecma-objects.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -184,5 +182,3 @@ free_variables:
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
STRING_VALUE (LIT_GLOBAL_SYMBOL_TO_STRING_TAG,
LIT_MAGIC_STRING_REGEXP_STRING_ITERATOR_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
@@ -29,6 +27,4 @@ STRING_VALUE (LIT_GLOBAL_SYMBOL_TO_STRING_TAG,
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
ROUTINE (LIT_MAGIC_STRING_NEXT, ecma_builtin_regexp_string_iterator_prototype_object_next, 0, 0)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -49,13 +49,9 @@ ecma_builtin_regexp_dispatch_helper (const ecma_value_t *arguments_list_p, /**<
{
ecma_value_t pattern_value = ECMA_VALUE_UNDEFINED;
ecma_value_t flags_value = ECMA_VALUE_UNDEFINED;
#if JERRY_ESNEXT
bool create_regexp_from_bc = false;
bool free_arguments = false;
ecma_object_t *new_target_p = JERRY_CONTEXT (current_new_target_p);
#else /* !JERRY_ESNEXT */
ecma_object_t *new_target_p = NULL;
#endif /* JERRY_ESNEXT */
if (arguments_list_len > 0)
{
@@ -68,7 +64,6 @@ ecma_builtin_regexp_dispatch_helper (const ecma_value_t *arguments_list_p, /**<
}
}
#if JERRY_ESNEXT
ecma_value_t regexp_value = ecma_op_is_regexp (pattern_value);
if (ECMA_IS_VALUE_ERROR (regexp_value))
@@ -144,31 +139,18 @@ ecma_builtin_regexp_dispatch_helper (const ecma_value_t *arguments_list_p, /**<
free_arguments = true;
}
#else /* !JERRY_ESNEXT */
if (ecma_object_is_regexp_object (pattern_value))
{
if (ecma_is_value_undefined (flags_value))
{
return ecma_copy_value (pattern_value);
}
return ecma_raise_type_error (ECMA_ERR_INVALID_ARGUMENT_IS_PASSED_TO_REGEXP_FUNCTION);
}
#endif /* JERRY_ESNEXT */
ecma_value_t ret_value = ECMA_VALUE_ERROR;
ecma_object_t *new_target_obj_p = ecma_op_regexp_alloc (new_target_p);
if (JERRY_LIKELY (new_target_obj_p != NULL))
{
#if JERRY_ESNEXT
if (create_regexp_from_bc)
{
ret_value = ecma_op_create_regexp_from_bytecode (new_target_obj_p, bc_p);
JERRY_ASSERT (!ECMA_IS_VALUE_ERROR (ret_value));
}
else
#endif /* JERRY_ESNEXT */
{
ret_value = ecma_op_create_regexp_from_pattern (new_target_obj_p, pattern_value, flags_value);
@@ -179,13 +161,11 @@ ecma_builtin_regexp_dispatch_helper (const ecma_value_t *arguments_list_p, /**<
}
}
#if JERRY_ESNEXT
if (free_arguments)
{
ecma_free_value (pattern_value);
ecma_free_value (flags_value);
}
#endif /* JERRY_ESNEXT */
return ret_value;
} /* ecma_builtin_regexp_dispatch_helper */
@@ -216,7 +196,6 @@ ecma_builtin_regexp_dispatch_construct (const ecma_value_t *arguments_list_p, /*
return ecma_builtin_regexp_dispatch_helper (arguments_list_p, arguments_list_len);
} /* ecma_builtin_regexp_dispatch_construct */
#if JERRY_ESNEXT
/**
* 21.2.4.2 get RegExp [ @@species ] accessor
*
@@ -228,7 +207,6 @@ ecma_builtin_regexp_species_get (ecma_value_t this_value) /**< This Value */
{
return ecma_copy_value (this_value);
} /* ecma_builtin_regexp_species_get */
#endif /* JERRY_ESNEXT */
/**
* @}
@@ -25,13 +25,10 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 2, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
/* ECMA-262 v5, 15.10.5.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_REGEXP_PROTOTYPE, ECMA_PROPERTY_FIXED)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_REGEXP_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
/* ECMA-262 v6, 21.2.4.2 */
ACCESSOR_READ_ONLY (LIT_GLOBAL_SYMBOL_SPECIES, ecma_builtin_regexp_species_get, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_REGEXP */
@@ -17,8 +17,6 @@
#include "ecma-builtins.h"
#include "ecma-iterator-object.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -205,5 +203,3 @@ ecma_builtin_string_iterator_prototype_dispatch_routine (uint8_t builtin_routine
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,14 +19,10 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
STRING_VALUE (LIT_GLOBAL_SYMBOL_TO_STRING_TAG, LIT_MAGIC_STRING_STRING_ITERATOR_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
ROUTINE (LIT_MAGIC_STRING_NEXT, ECMA_BUILTIN_STRING_ITERATOR_PROTOTYPE_OBJECT_NEXT, 0, 0)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -291,7 +291,6 @@ static ecma_value_t
ecma_builtin_string_prototype_object_match (ecma_value_t this_argument, /**< this argument */
ecma_value_t regexp_arg) /**< routine's argument */
{
#if JERRY_ESNEXT
/* 3. */
if (!(ecma_is_value_undefined (regexp_arg) || ecma_is_value_null (regexp_arg)))
{
@@ -351,37 +350,8 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_argument, /**< thi
ecma_free_value (new_regexp);
return ret_value;
#else /* !JERRY_ESNEXT */
if (ecma_object_is_regexp_object (regexp_arg))
{
return ecma_regexp_match_helper (regexp_arg, this_argument);
}
ecma_object_t *regexp_obj_p = ecma_op_regexp_alloc (NULL);
if (JERRY_UNLIKELY (regexp_obj_p == NULL))
{
return ECMA_VALUE_ERROR;
}
ecma_value_t new_regexp = ecma_op_create_regexp_from_pattern (regexp_obj_p, regexp_arg, ECMA_VALUE_UNDEFINED);
if (ECMA_IS_VALUE_ERROR (new_regexp))
{
ecma_deref_object (regexp_obj_p);
return new_regexp;
}
ecma_value_t result = ecma_regexp_match_helper (new_regexp, this_argument);
ecma_free_value (new_regexp);
return result;
#endif /* JERRY_ESNEXT */
} /* ecma_builtin_string_prototype_object_match */
#if JERRY_ESNEXT
/**
* The String.prototype object's 'matchAll' routine
*
@@ -505,7 +475,6 @@ ecma_builtin_string_prototype_object_match_all (ecma_value_t this_argument, /**<
return ret_value;
} /* ecma_builtin_string_prototype_object_match_all */
#endif /* JERRY_ESNEXT */
/**
* The String.prototype object's 'replace' and 'replaceAll' routine
@@ -524,7 +493,6 @@ ecma_builtin_string_prototype_object_replace_helper (ecma_value_t this_value, /*
ecma_value_t replace_value, /**< routine's second argument */
bool replace_all)
{
#if JERRY_ESNEXT
if (!(ecma_is_value_undefined (search_value) || ecma_is_value_null (search_value)))
{
if (replace_all)
@@ -590,12 +558,6 @@ ecma_builtin_string_prototype_object_replace_helper (ecma_value_t this_value, /*
return replace_result;
}
}
#else /* !JERRY_ESNEXT */
if (ecma_object_is_regexp_object (search_value))
{
return ecma_regexp_replace_helper (search_value, this_value, replace_value);
}
#endif /* JERRY_ESNEXT */
ecma_string_t *input_str_p = ecma_op_to_string (this_value);
@@ -762,7 +724,6 @@ static ecma_value_t
ecma_builtin_string_prototype_object_search (ecma_value_t this_value, /**< this argument */
ecma_value_t regexp_value) /**< routine's argument */
{
#if JERRY_ESNEXT
if (!(ecma_is_value_undefined (regexp_value) || ecma_is_value_null (regexp_value)))
{
ecma_object_t *obj_p = ecma_get_object_from_value (ecma_op_to_object (regexp_value));
@@ -781,12 +742,6 @@ ecma_builtin_string_prototype_object_search (ecma_value_t this_value, /**< this
return search_result;
}
}
#else /* !JERRY_ESNEXT */
if (ecma_object_is_regexp_object (regexp_value))
{
return ecma_regexp_search_helper (regexp_value, this_value);
}
#endif /* JERRY_ESNEXT */
ecma_value_t result = ECMA_VALUE_ERROR;
@@ -799,7 +754,8 @@ ecma_builtin_string_prototype_object_search (ecma_value_t this_value, /**< this
ecma_string_t *pattern_p = ecma_regexp_read_pattern_str_helper (regexp_value);
if (pattern_p == NULL)
{
goto cleanup_string;
ecma_deref_ecma_string (string_p);
return result;
}
ecma_object_t *new_regexp_obj_p = ecma_op_regexp_alloc (NULL);
@@ -808,7 +764,7 @@ ecma_builtin_string_prototype_object_search (ecma_value_t this_value, /**< this
{
ecma_deref_ecma_string (string_p);
ecma_deref_ecma_string (pattern_p);
return ECMA_VALUE_ERROR;
return result;
}
ecma_value_t new_regexp =
@@ -818,22 +774,17 @@ ecma_builtin_string_prototype_object_search (ecma_value_t this_value, /**< this
if (ECMA_IS_VALUE_ERROR (new_regexp))
{
ecma_deref_ecma_string (string_p);
ecma_deref_object (new_regexp_obj_p);
goto cleanup_string;
return result;
}
#if !JERRY_ESNEXT
result = ecma_regexp_search_helper (new_regexp, ecma_make_string_value (string_p));
ecma_deref_object (ecma_get_object_from_value (new_regexp));
#else /* JERRY_ESNEXT */
ecma_object_t *regexp_obj_p = ecma_get_object_from_value (new_regexp);
ecma_value_t this_str_value = ecma_make_string_value (string_p);
result = ecma_op_invoke_by_symbol_id (new_regexp, LIT_GLOBAL_SYMBOL_SEARCH, &this_str_value, 1);
ecma_deref_object (regexp_obj_p);
#endif /* !JERRY_ESNEXT */
cleanup_string:
ecma_deref_ecma_string (string_p);
return result;
} /* ecma_builtin_string_prototype_object_search */
@@ -926,7 +877,6 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_value, /**< this a
ecma_value_t separator_value, /**< separator */
ecma_value_t limit_value) /**< limit */
{
#if JERRY_ESNEXT
if (!(ecma_is_value_undefined (separator_value) || ecma_is_value_null (separator_value)))
{
ecma_object_t *obj_p = ecma_get_object_from_value (ecma_op_to_object (separator_value));
@@ -947,12 +897,6 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_value, /**< this a
return split_result;
}
}
#else /* !JERRY_ESNEXT */
if (ecma_object_is_regexp_object (separator_value))
{
return ecma_regexp_split_helper (separator_value, this_value, limit_value);
}
#endif /* JERRY_ESNEXT */
ecma_value_t result = ECMA_VALUE_ERROR;
@@ -1180,7 +1124,6 @@ ecma_builtin_string_prototype_object_conversion_helper (ecma_string_t *input_str
{
lit_code_point_t cp = lit_cesu8_read_next (&input_curr_p);
#if JERRY_ESNEXT
if (lit_is_code_point_utf16_high_surrogate (cp) && input_curr_p < input_str_end_p)
{
const ecma_char_t next_ch = lit_cesu8_peek_next (input_curr_p);
@@ -1190,7 +1133,6 @@ ecma_builtin_string_prototype_object_conversion_helper (ecma_string_t *input_str
input_curr_p += LIT_UTF8_MAX_BYTES_IN_CODE_UNIT;
}
}
#endif /* JERRY_ESNEXT */
if (lower_case)
{
@@ -1224,8 +1166,6 @@ ecma_builtin_string_prototype_object_trim (ecma_string_t *original_string_p) /**
return ecma_make_string_value (trimmed_string_p);
} /* ecma_builtin_string_prototype_object_trim */
#if JERRY_ESNEXT
/**
* The String.prototype object's 'repeat' routine
*
@@ -1338,8 +1278,6 @@ ecma_builtin_string_prototype_object_code_point_at (ecma_string_t *this_string_p
return ecma_make_uint32_value (lit_convert_surrogate_pair_to_code_point (first, second));
} /* ecma_builtin_string_prototype_object_code_point_at */
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_ANNEXB
/**
@@ -1403,8 +1341,6 @@ ecma_builtin_string_prototype_object_substr (ecma_string_t *this_string_p, /**<
#endif /* JERRY_BUILTIN_ANNEXB */
#if JERRY_ESNEXT
/**
* The String.prototype object's @@iterator routine
*
@@ -1423,8 +1359,6 @@ ecma_builtin_string_prototype_object_iterator (ecma_value_t to_string) /**< this
ECMA_ITERATOR_VALUES);
} /* ecma_builtin_string_prototype_object_iterator */
#endif /* JERRY_ESNEXT */
/**
* Dispatcher of the built-in's routines
*
@@ -1458,12 +1392,10 @@ ecma_builtin_string_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
return ecma_builtin_string_prototype_object_match (this_arg, arg1);
}
#if JERRY_ESNEXT
if (builtin_routine_id == ECMA_STRING_PROTOTYPE_MATCH_ALL)
{
return ecma_builtin_string_prototype_object_match_all (this_arg, arg1);
}
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_REGEXP */
if (builtin_routine_id <= ECMA_STRING_PROTOTYPE_CHAR_CODE_AT)
@@ -1478,12 +1410,11 @@ ecma_builtin_string_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
{
return ecma_builtin_string_prototype_object_replace_helper (this_arg, arg1, arg2, false);
}
#if JERRY_ESNEXT
else if (builtin_routine_id == ECMA_STRING_PROTOTYPE_REPLACE_ALL)
{
return ecma_builtin_string_prototype_object_replace_helper (this_arg, arg1, arg2, true);
}
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_REGEXP */
ecma_string_t *string_p = ecma_op_to_string (this_arg);
@@ -1515,11 +1446,9 @@ ecma_builtin_string_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
}
case ECMA_STRING_PROTOTYPE_LAST_INDEX_OF:
case ECMA_STRING_PROTOTYPE_INDEX_OF:
#if JERRY_ESNEXT
case ECMA_STRING_PROTOTYPE_STARTS_WITH:
case ECMA_STRING_PROTOTYPE_INCLUDES:
case ECMA_STRING_PROTOTYPE_ENDS_WITH:
#endif /* JERRY_ESNEXT */
{
ecma_string_index_of_mode_t mode;
mode = (ecma_string_index_of_mode_t) (builtin_routine_id - ECMA_STRING_PROTOTYPE_LAST_INDEX_OF);
@@ -1569,7 +1498,6 @@ ecma_builtin_string_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
break;
}
#endif /* JERRY_BUILTIN_ANNEXB */
#if JERRY_ESNEXT
case ECMA_STRING_PROTOTYPE_REPEAT:
{
ret_value = ecma_builtin_string_prototype_object_repeat (string_p, arg1);
@@ -1591,7 +1519,6 @@ ecma_builtin_string_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
ret_value = ecma_string_pad (to_string_val, arg1, arg2, builtin_routine_id == ECMA_STRING_PROTOTYPE_PAD_START);
break;
}
#endif /* JERRY_ESNEXT */
default:
{
JERRY_UNREACHABLE ();
@@ -49,9 +49,7 @@ ROUTINE (LIT_MAGIC_STRING_LOCALE_COMPARE_UL, ECMA_STRING_PROTOTYPE_LOCALE_COMPAR
#if JERRY_BUILTIN_REGEXP
ROUTINE (LIT_MAGIC_STRING_MATCH, ECMA_STRING_PROTOTYPE_MATCH, 1, 1)
ROUTINE (LIT_MAGIC_STRING_REPLACE, ECMA_STRING_PROTOTYPE_REPLACE, 2, 2)
#if JERRY_ESNEXT
ROUTINE (LIT_MAGIC_STRING_REPLACE_ALL, ECMA_STRING_PROTOTYPE_REPLACE_ALL, 2, 2)
#endif /* JERRY_ESNEXT */
ROUTINE (LIT_MAGIC_STRING_SEARCH, ECMA_STRING_PROTOTYPE_SEARCH, 1, 1)
#endif /* JERRY_BUILTIN_REGEXP */
@@ -67,7 +65,6 @@ ROUTINE (LIT_MAGIC_STRING_TRIM, ECMA_STRING_PROTOTYPE_TRIM, 0, 0)
ROUTINE (LIT_MAGIC_STRING_SUBSTR, ECMA_STRING_PROTOTYPE_SUBSTR, 2, 2)
#endif /* JERRY_BUILTIN_ANNEXB */
#if JERRY_ESNEXT
ROUTINE (LIT_MAGIC_STRING_REPEAT, ECMA_STRING_PROTOTYPE_REPEAT, 1, 1)
ROUTINE (LIT_MAGIC_STRING_STARTS_WITH, ECMA_STRING_PROTOTYPE_STARTS_WITH, 2, 1)
ROUTINE (LIT_MAGIC_STRING_INCLUDES, ECMA_STRING_PROTOTYPE_INCLUDES, 2, 1)
@@ -82,7 +79,6 @@ INTRINSIC_PROPERTY (LIT_MAGIC_STRING_TRIM_START, LIT_MAGIC_STRING_TRIM_START, EC
INTRINSIC_PROPERTY (LIT_MAGIC_STRING_TRIM_LEFT, LIT_MAGIC_STRING_TRIM_START, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
INTRINSIC_PROPERTY (LIT_MAGIC_STRING_TRIM_END, LIT_MAGIC_STRING_TRIM_END, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
INTRINSIC_PROPERTY (LIT_MAGIC_STRING_TRIM_RIGHT, LIT_MAGIC_STRING_TRIM_END, ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_STRING */
@@ -22,12 +22,10 @@
#include "ecma-helpers.h"
#include "ecma-objects.h"
#include "ecma-string-object.h"
#include "lit-strings.h"
#if JERRY_ESNEXT
#include "ecma-symbol-object.h"
#endif /* JERRY_ESNEXT */
#include "jrt.h"
#include "lit-strings.h"
#if JERRY_BUILTIN_STRING
@@ -118,8 +116,6 @@ ecma_builtin_string_object_from_char_code (const ecma_value_t args[], /**< argum
return isError ? ECMA_VALUE_ERROR : ecma_make_string_value (ret_string_p);
} /* ecma_builtin_string_object_from_char_code */
#if JERRY_ESNEXT
/**
* The String object's 'raw' routine
*
@@ -332,8 +328,6 @@ ecma_builtin_string_object_from_code_point (const ecma_value_t args[], /**< argu
return ecma_make_string_value (ret_str_p);
} /* ecma_builtin_string_object_from_code_point */
#endif /* JERRY_ESNEXT */
/**
* Handle calling [[Call]] of built-in String object
*
@@ -355,13 +349,11 @@ ecma_builtin_string_dispatch_call (const ecma_value_t *arguments_list_p, /**< ar
{
ret_value = ecma_make_magic_string_value (LIT_MAGIC_STRING__EMPTY);
}
#if JERRY_ESNEXT
/* 2.a */
else if (ecma_is_value_symbol (arguments_list_p[0]))
{
ret_value = ecma_get_symbol_descriptive_string (arguments_list_p[0]);
}
#endif /* JERRY_ESNEXT */
/* 2.b */
else
{
@@ -412,7 +404,6 @@ ecma_builtin_string_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
{
return ecma_builtin_string_object_from_char_code (arguments_list_p, arguments_number);
}
#if JERRY_ESNEXT
case ECMA_BUILTIN_STRING_OBJECT_FROM_CODE_POINT:
{
return ecma_builtin_string_object_from_code_point (arguments_list_p, arguments_number);
@@ -421,7 +412,6 @@ ecma_builtin_string_dispatch_routine (uint8_t builtin_routine_id, /**< built-in
{
return ecma_builtin_string_object_raw (arguments_list_p, arguments_number);
}
#endif /* JERRY_ESNEXT */
default:
{
JERRY_UNREACHABLE ();
@@ -31,19 +31,13 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
/* ECMA-262 v5, 15.7.3.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_STRING_PROTOTYPE, ECMA_PROPERTY_FIXED)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_STRING_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
ROUTINE (LIT_MAGIC_STRING_FROM_CHAR_CODE_UL, ECMA_BUILTIN_STRING_OBJECT_FROM_CHAR_CODE, NON_FIXED, 1)
#if JERRY_ESNEXT
ROUTINE (LIT_MAGIC_STRING_FROM_CODE_POINT_UL, ECMA_BUILTIN_STRING_OBJECT_FROM_CODE_POINT, NON_FIXED, 1)
ROUTINE (LIT_MAGIC_STRING_RAW, ECMA_BUILTIN_STRING_OBJECT_RAW, NON_FIXED, 1)
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_STRING */
@@ -25,8 +25,6 @@
#include "jrt.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -111,5 +109,3 @@ ecma_builtin_symbol_prototype_dispatch_routine (uint8_t builtin_routine_id, /**<
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* Object properties:
* (property name, object pointer getter) */
@@ -35,6 +33,5 @@ STRING_VALUE (LIT_GLOBAL_SYMBOL_TO_STRING_TAG, LIT_MAGIC_STRING_SYMBOL_UL, ECMA_
/* ECMA-262, v11, 19.4.3.2 */
ACCESSOR_READ_ONLY (LIT_MAGIC_STRING_DESCRIPTION, ECMA_SYMBOL_PROTOTYPE_DESCRIPTION, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -27,8 +27,6 @@
#include "jcontext.h"
#include "jrt.h"
#if JERRY_ESNEXT
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@@ -253,5 +251,3 @@ ecma_builtin_symbol_key_for (ecma_value_t this_arg, /**< this argument */
* @}
* @}
*/
#endif /* JERRY_ESNEXT */
@@ -19,8 +19,6 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_ESNEXT
/* Number properties:
* (property name, number value, writable, enumerable, configurable) */
@@ -79,6 +77,4 @@ SYMBOL_VALUE (LIT_MAGIC_STRING_MATCH_ALL, LIT_GLOBAL_SYMBOL_MATCH_ALL)
ROUTINE (LIT_MAGIC_STRING_FOR, ecma_builtin_symbol_for, 1, 1)
ROUTINE (LIT_MAGIC_STRING_KEY_FOR, ecma_builtin_symbol_key_for, 1, 1)
#endif /* JERRY_ESNEXT */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -67,9 +67,6 @@ ecma_value_t
ecma_builtin_syntax_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
uint32_t arguments_list_len) /**< number of arguments */
{
#if !JERRY_ESNEXT
return ecma_builtin_syntax_error_dispatch_call (arguments_list_p, arguments_list_len);
#else /* JERRY_ESNEXT */
ecma_object_t *proto_p = ecma_op_get_prototype_from_constructor (JERRY_CONTEXT (current_new_target_p),
ECMA_BUILTIN_ID_SYNTAX_ERROR_PROTOTYPE);
@@ -89,7 +86,6 @@ ecma_builtin_syntax_error_dispatch_construct (const ecma_value_t *arguments_list
ecma_deref_object (proto_p);
return result;
#endif /* JERRY_ESNEXT */
} /* ecma_builtin_syntax_error_dispatch_construct */
/**
@@ -31,10 +31,7 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
/* ECMA-262 v5, 15.11.3.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_SYNTAX_ERROR_PROTOTYPE, ECMA_PROPERTY_FIXED)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_SYNTAX_ERROR_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_ERRORS */
@@ -67,9 +67,6 @@ ecma_value_t
ecma_builtin_type_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
uint32_t arguments_list_len) /**< number of arguments */
{
#if !JERRY_ESNEXT
return ecma_builtin_type_error_dispatch_call (arguments_list_p, arguments_list_len);
#else /* JERRY_ESNEXT */
ecma_object_t *proto_p =
ecma_op_get_prototype_from_constructor (JERRY_CONTEXT (current_new_target_p), ECMA_BUILTIN_ID_TYPE_ERROR_PROTOTYPE);
@@ -89,7 +86,6 @@ ecma_builtin_type_error_dispatch_construct (const ecma_value_t *arguments_list_p
ecma_deref_object (proto_p);
return result;
#endif /* JERRY_ESNEXT */
} /* ecma_builtin_type_error_dispatch_construct */
/**
@@ -31,10 +31,7 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
/* ECMA-262 v5, 15.11.3.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_TYPE_ERROR_PROTOTYPE, ECMA_PROPERTY_FIXED)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_TYPE_ERROR_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_ERRORS */
@@ -67,9 +67,6 @@ ecma_value_t
ecma_builtin_uri_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
uint32_t arguments_list_len) /**< number of arguments */
{
#if !JERRY_ESNEXT
return ecma_builtin_uri_error_dispatch_call (arguments_list_p, arguments_list_len);
#else /* JERRY_ESNEXT */
ecma_object_t *proto_p =
ecma_op_get_prototype_from_constructor (JERRY_CONTEXT (current_new_target_p), ECMA_BUILTIN_ID_URI_ERROR_PROTOTYPE);
@@ -89,7 +86,6 @@ ecma_builtin_uri_error_dispatch_construct (const ecma_value_t *arguments_list_p,
ecma_deref_object (proto_p);
return result;
#endif /* JERRY_ESNEXT */
} /* ecma_builtin_uri_error_dispatch_construct */
/**
@@ -31,10 +31,7 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
/* ECMA-262 v5, 15.11.3.1 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_URI_ERROR_PROTOTYPE, ECMA_PROPERTY_FIXED)
#if JERRY_ESNEXT
STRING_VALUE (LIT_MAGIC_STRING_NAME, LIT_MAGIC_STRING_URI_ERROR_UL, ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_ESNEXT */
#endif /* JERRY_BUILTIN_ERRORS */
@@ -31,12 +31,10 @@ typedef enum
ECMA_BUILTIN_PROPERTY_SIMPLE, /**< simple value property */
ECMA_BUILTIN_PROPERTY_NUMBER, /**< number value property */
ECMA_BUILTIN_PROPERTY_STRING, /**< string value property */
#if JERRY_ESNEXT
ECMA_BUILTIN_PROPERTY_SYMBOL, /**< symbol value property */
ECMA_BUILTIN_PROPERTY_INTRINSIC_PROPERTY, /**< intrinsic routine property */
ECMA_BUILTIN_PROPERTY_ACCESSOR_BUILTIN_FUNCTION, /**< full accessor property with builtin function object
getter/setter pair */
#endif /* JERRY_ESNEXT */
ECMA_BUILTIN_PROPERTY_OBJECT, /**< builtin object property */
ECMA_BUILTIN_PROPERTY_ROUTINE, /**< routine property */
ECMA_BUILTIN_PROPERTY_ACCESSOR_READ_WRITE, /**< full accessor property */
@@ -51,11 +49,9 @@ typedef enum
{
ECMA_BUILTIN_NUMBER_MAX = 256, /**< value of ECMA_NUMBER_MAX_VALUE */
ECMA_BUILTIN_NUMBER_MIN, /**< value of ECMA_NUMBER_MIN_VALUE */
#if JERRY_ESNEXT
ECMA_BUILTIN_NUMBER_EPSILON, /**< value of ECMA_NUMBER_EPSILON */
ECMA_BUILTIN_NUMBER_MAX_SAFE_INTEGER, /**< value of ECMA_NUMBER_MAX_SAFE_INTEGER */
ECMA_BUILTIN_NUMBER_MIN_SAFE_INTEGER, /**< value of ECMA_NUMBER_MIN_SAFE_INTEGER */
#endif /* JERRY_ESNEXT */
ECMA_BUILTIN_NUMBER_E, /**< value of ECMA_NUMBER_E */
ECMA_BUILTIN_NUMBER_PI, /**< value of ECMA_NUMBER_PI */
ECMA_BUILTIN_NUMBER_LN10, /**< value of ECMA_NUMBER_LN10 */
@@ -455,40 +455,6 @@ ecma_instantiate_builtin (ecma_global_object_t *global_object_p, /**< global obj
}
#endif /* JERRY_BUILTIN_BOOLEAN */
#if !JERRY_ESNEXT
#if JERRY_BUILTIN_DATE
case ECMA_BUILTIN_ID_DATE_PROTOTYPE:
{
JERRY_ASSERT (obj_type == ECMA_OBJECT_TYPE_BUILT_IN_CLASS);
ecma_extended_object_t *ext_object_p = (ecma_extended_object_t *) obj_p;
ext_object_p->u.cls.type = ECMA_OBJECT_CLASS_DATE;
ecma_number_t *prim_prop_num_value_p = ecma_alloc_number ();
*prim_prop_num_value_p = ecma_number_make_nan ();
ECMA_SET_INTERNAL_VALUE_POINTER (ext_object_p->u.cls.u3.value, prim_prop_num_value_p);
break;
}
#endif /* JERRY_BUILTIN_DATE */
#if JERRY_BUILTIN_REGEXP
case ECMA_BUILTIN_ID_REGEXP_PROTOTYPE:
{
JERRY_ASSERT (obj_type == ECMA_OBJECT_TYPE_BUILT_IN_CLASS);
ecma_extended_object_t *ext_object_p = (ecma_extended_object_t *) obj_p;
ext_object_p->u.cls.type = ECMA_OBJECT_CLASS_REGEXP;
re_compiled_code_t *bc_p =
re_compile_bytecode (ecma_get_magic_string (LIT_MAGIC_STRING_EMPTY_NON_CAPTURE_GROUP), RE_FLAG_EMPTY);
JERRY_ASSERT (bc_p != NULL);
ECMA_SET_INTERNAL_VALUE_POINTER (ext_object_p->u.cls.u3.value, bc_p);
break;
}
#endif /* JERRY_BUILTIN_REGEXP */
#endif /* !JERRY_ESNEXT */
default:
{
JERRY_ASSERT (obj_type != ECMA_OBJECT_TYPE_BUILT_IN_CLASS);
@@ -550,15 +516,13 @@ ecma_builtin_create_global_object (void)
/* Temporary self reference for GC mark. */
ECMA_SET_NON_NULL_POINTER (global_object_p->global_env_cp, object_p);
#if JERRY_ESNEXT
global_object_p->global_scope_cp = global_object_p->global_env_cp;
#endif /* JERRY_ESNEXT */
ecma_object_t *global_lex_env_p = ecma_create_object_lex_env (NULL, object_p);
ECMA_SET_NON_NULL_POINTER (global_object_p->global_env_cp, global_lex_env_p);
#if JERRY_ESNEXT
global_object_p->global_scope_cp = global_object_p->global_env_cp;
#endif /* JERRY_ESNEXT */
ecma_deref_object (global_lex_env_p);
ecma_object_t *prototype_object_p;
@@ -727,8 +691,6 @@ ecma_builtin_make_function_object_for_setter_accessor (ecma_object_t *builtin_ob
ECMA_BUILTIN_ROUTINE_SETTER);
} /* ecma_builtin_make_function_object_for_setter_accessor */
#if JERRY_ESNEXT
/**
* Create specification defined properties for built-in native handlers.
*
@@ -769,8 +731,6 @@ ecma_builtin_native_handler_try_to_instantiate_property (ecma_object_t *object_p
return prop_p;
} /* ecma_builtin_native_handler_try_to_instantiate_property */
#endif /* JERRY_ESNEXT */
/**
* Lazy instantiation of builtin routine property of builtin object
*
@@ -789,12 +749,10 @@ ecma_builtin_routine_try_to_instantiate_property (ecma_object_t *object_p, /**<
ecma_extended_object_t *ext_func_p = (ecma_extended_object_t *) object_p;
#if JERRY_ESNEXT
if (JERRY_UNLIKELY (ext_func_p->u.built_in.id == ECMA_BUILTIN_ID_HANDLER))
{
return ecma_builtin_native_handler_try_to_instantiate_property (object_p, property_name_p);
}
#endif /* !JERRY_ESNEXT */
if (ecma_string_is_length (property_name_p))
{
@@ -803,7 +761,6 @@ ecma_builtin_routine_try_to_instantiate_property (ecma_object_t *object_p, /**<
*/
ecma_property_t *len_prop_p;
#if JERRY_ESNEXT
uint8_t *bitset_p = &ext_func_p->u.built_in.u2.routine_flags;
if (*bitset_p & ECMA_BUILTIN_ROUTINE_LENGTH_INITIALIZED)
@@ -816,12 +773,6 @@ ecma_builtin_routine_try_to_instantiate_property (ecma_object_t *object_p, /**<
* as it is configurable and so can be deleted (ECMA-262 v6, 19.2.4.1) */
ecma_property_value_t *len_prop_value_p =
ecma_create_named_data_property (object_p, property_name_p, ECMA_PROPERTY_BUILT_IN_CONFIGURABLE, &len_prop_p);
#else /* !JERRY_ESNEXT */
/* We don't need to mark that the property was already lazy instantiated,
* as it is non-configurable and so can't be deleted (ECMA-262 v5, 13.2.5) */
ecma_property_value_t *len_prop_value_p =
ecma_create_named_data_property (object_p, property_name_p, ECMA_PROPERTY_BUILT_IN_FIXED, &len_prop_p);
#endif /* JERRY_ESNEXT */
uint8_t length = 0;
@@ -845,7 +796,6 @@ ecma_builtin_routine_try_to_instantiate_property (ecma_object_t *object_p, /**<
return len_prop_p;
}
#if JERRY_ESNEXT
/*
* Lazy instantiation of 'name' property
*/
@@ -918,7 +868,6 @@ ecma_builtin_routine_try_to_instantiate_property (ecma_object_t *object_p, /**<
return name_prop_p;
}
#endif /* JERRY_ESNEXT */
return NULL;
} /* ecma_builtin_routine_try_to_instantiate_property */
@@ -937,12 +886,10 @@ ecma_builtin_try_to_instantiate_property (ecma_object_t *object_p, /**< object *
{
lit_magic_string_id_t magic_string_id = ecma_get_string_magic (property_name_p);
#if JERRY_ESNEXT
if (JERRY_UNLIKELY (ecma_prop_name_is_symbol (property_name_p)) && property_name_p->u.hash & ECMA_SYMBOL_FLAG_GLOBAL)
{
magic_string_id = (property_name_p->u.hash >> ECMA_SYMBOL_FLAGS_SHIFT);
}
#endif /* JERRY_ESNEXT */
if (magic_string_id == LIT_MAGIC_STRING__COUNT)
{
@@ -1034,11 +981,9 @@ ecma_builtin_try_to_instantiate_property (ecma_object_t *object_p, /**< object *
static const ecma_number_t builtin_number_list[] = {
ECMA_NUMBER_MAX_VALUE,
ECMA_NUMBER_MIN_VALUE,
#if JERRY_ESNEXT
ECMA_NUMBER_EPSILON,
ECMA_NUMBER_MAX_SAFE_INTEGER,
ECMA_NUMBER_MIN_SAFE_INTEGER,
#endif /* JERRY_ESNEXT */
ECMA_NUMBER_E,
ECMA_NUMBER_PI,
ECMA_NUMBER_LN10,
@@ -1083,7 +1028,6 @@ ecma_builtin_try_to_instantiate_property (ecma_object_t *object_p, /**< object *
value = ecma_make_magic_string_value ((lit_magic_string_id_t) curr_property_p->value);
break;
}
#if JERRY_ESNEXT
case ECMA_BUILTIN_PROPERTY_SYMBOL:
{
lit_magic_string_id_t symbol_id = (lit_magic_string_id_t) curr_property_p->value;
@@ -1108,7 +1052,6 @@ ecma_builtin_try_to_instantiate_property (ecma_object_t *object_p, /**< object *
ecma_ref_object (setter_p);
break;
}
#endif /* JERRY_ESNEXT */
case ECMA_BUILTIN_PROPERTY_OBJECT:
{
ecma_object_t *builtin_object_p;
@@ -1182,8 +1125,6 @@ ecma_builtin_try_to_instantiate_property (ecma_object_t *object_p, /**< object *
return prop_p;
} /* ecma_builtin_try_to_instantiate_property */
#if JERRY_ESNEXT
/**
* Delete configurable properties of native handlers.
*/
@@ -1241,8 +1182,6 @@ ecma_builtin_routine_delete_built_in_property (ecma_object_t *object_p, /**< obj
*bitset_p |= ECMA_BUILTIN_ROUTINE_NAME_INITIALIZED;
} /* ecma_builtin_routine_delete_built_in_property */
#endif /* JERRY_ESNEXT */
/**
* Delete configurable properties of built-ins.
*/
@@ -1252,7 +1191,6 @@ ecma_builtin_delete_built_in_property (ecma_object_t *object_p, /**< object */
{
lit_magic_string_id_t magic_string_id = ecma_get_string_magic (property_name_p);
#if JERRY_ESNEXT
if (JERRY_UNLIKELY (ecma_prop_name_is_symbol (property_name_p)))
{
if (property_name_p->u.hash & ECMA_SYMBOL_FLAG_GLOBAL)
@@ -1260,7 +1198,6 @@ ecma_builtin_delete_built_in_property (ecma_object_t *object_p, /**< object */
magic_string_id = (property_name_p->u.hash >> ECMA_SYMBOL_FLAGS_SHIFT);
}
}
#endif /* JERRY_ESNEXT */
ecma_built_in_props_t *built_in_props_p;
ecma_object_type_t object_type = ecma_get_object_type (object_p);
@@ -1307,8 +1244,6 @@ ecma_builtin_delete_built_in_property (ecma_object_t *object_p, /**< object */
*bitset_p |= bit_for_index;
} /* ecma_builtin_delete_built_in_property */
#if JERRY_ESNEXT
/**
* List names of an Built-in native handler object's lazy instantiated properties,
* adding them to corresponding string collections
@@ -1334,8 +1269,6 @@ ecma_builtin_native_handler_list_lazy_property_names (ecma_object_t *object_p, /
}
} /* ecma_builtin_native_handler_list_lazy_property_names */
#endif /* JERRY_ESNEXT */
/**
* List names of a built-in function's lazy instantiated properties
*
@@ -1356,7 +1289,6 @@ ecma_builtin_routine_list_lazy_property_names (ecma_object_t *object_p, /**< a b
return;
}
#if JERRY_ESNEXT
ecma_extended_object_t *ext_func_p = (ecma_extended_object_t *) object_p;
if (JERRY_UNLIKELY (ext_func_p->u.built_in.id == ECMA_BUILTIN_ID_HANDLER))
@@ -1377,11 +1309,6 @@ ecma_builtin_routine_list_lazy_property_names (ecma_object_t *object_p, /**< a b
ecma_collection_push_back (prop_names_p, ecma_make_magic_string_value (LIT_MAGIC_STRING_NAME));
prop_counter_p->string_named_props++;
}
#else /* !JERRY_ESNEXT */
/* 'length' property is non-enumerable (ECMA-262 v5, 15) */
ecma_collection_push_back (prop_names_p, ecma_make_magic_string_value (LIT_MAGIC_STRING_LENGTH));
prop_counter_p->string_named_props++;
#endif /* JERRY_ESNEXT */
} /* ecma_builtin_routine_list_lazy_property_names */
/**
@@ -1421,10 +1348,8 @@ ecma_builtin_list_lazy_property_names (ecma_object_t *object_p, /**< a built-in
uint8_t *bitset_p = built_in_props_p->u2.instantiated_bitset + 1;
#endif /* JERRY_BUILTIN_REALMS */
#if JERRY_ESNEXT
uint8_t *symbol_bitset_p = bitset_p;
bool has_symbol = true;
#endif /* JERRY_BUILTIN_REALMS */
if (!(filter & JERRY_PROPERTY_FILTER_EXCLUDE_STRINGS))
{
@@ -1432,9 +1357,7 @@ ecma_builtin_list_lazy_property_names (ecma_object_t *object_p, /**< a built-in
uint8_t bitset = built_in_props_p->u2.instantiated_bitset[0];
uint32_t index = 0;
#if JERRY_ESNEXT
has_symbol = false;
#endif /* JERRY_BUILTIN_REALMS */
while (curr_property_p->magic_string_id != LIT_MAGIC_STRING__COUNT)
{
@@ -1448,21 +1371,17 @@ ecma_builtin_list_lazy_property_names (ecma_object_t *object_p, /**< a built-in
if (!(bitset & bit_for_index))
{
#if JERRY_ESNEXT
if (JERRY_LIKELY (curr_property_p->magic_string_id < LIT_NON_INTERNAL_MAGIC_STRING__COUNT))
{
#endif /* JERRY_ESNEXT */
ecma_value_t name = ecma_make_magic_string_value ((lit_magic_string_id_t) curr_property_p->magic_string_id);
ecma_collection_push_back (prop_names_p, name);
prop_counter_p->string_named_props++;
#if JERRY_ESNEXT
}
else
{
JERRY_ASSERT (LIT_IS_GLOBAL_SYMBOL (curr_property_p->magic_string_id));
has_symbol = true;
}
#endif /* JERRY_ESNEXT */
}
curr_property_p++;
@@ -1470,7 +1389,6 @@ ecma_builtin_list_lazy_property_names (ecma_object_t *object_p, /**< a built-in
}
}
#if JERRY_ESNEXT
if (has_symbol && !(filter & JERRY_PROPERTY_FILTER_EXCLUDE_SYMBOLS))
{
const ecma_builtin_property_descriptor_t *curr_property_p = ecma_builtin_property_list_references[builtin_id];
@@ -1498,7 +1416,6 @@ ecma_builtin_list_lazy_property_names (ecma_object_t *object_p, /**< a built-in
index++;
}
}
#endif /* JERRY_ESNEXT */
} /* ecma_builtin_list_lazy_property_names */
/**
@@ -1563,13 +1480,11 @@ ecma_builtin_dispatch_call (ecma_object_t *obj_p, /**< built-in object */
if (ecma_builtin_function_is_routine (obj_p))
{
#if JERRY_ESNEXT
if (JERRY_UNLIKELY (ext_obj_p->u.built_in.id == ECMA_BUILTIN_ID_HANDLER))
{
ecma_builtin_handler_t handler = ecma_builtin_handler_get (ext_obj_p->u.built_in.routine_id);
return handler (obj_p, arguments_list_p, arguments_list_len);
}
#endif /* !JERRY_ESNEXT */
return ecma_builtin_dispatch_routine (ext_obj_p, this_arg_value, arguments_list_p, arguments_list_len);
}
@@ -38,8 +38,6 @@ typedef enum
ECMA_BUILTIN_ID__COUNT /**< number of built-in objects */
} ecma_builtin_id_t;
#if JERRY_ESNEXT
/**
* Special id for handlers (handlers are not regular built-ins, but
* they use the same ecma_built_in_props_t structure as other built-ins)
@@ -51,8 +49,6 @@ typedef enum
*/
#define ECMA_BUILTIN_GLOBAL_SYMBOL_COUNT (LIT_GLOBAL_SYMBOL__LAST - LIT_GLOBAL_SYMBOL__FIRST + 1)
#endif /* JERRY_ESNEXT */
/**
* Construct a routine value
*/
@@ -100,9 +96,7 @@ typedef struct
ecma_value_t this_binding; /**< 'this' binding of this global object */
#endif /* JERRY_BUILTIN_REALMS */
jmem_cpointer_t global_env_cp; /**< global lexical environment */
#if JERRY_ESNEXT
jmem_cpointer_t global_scope_cp; /**< global lexical scope */
#endif /* JERRY_ESNEXT */
jmem_cpointer_t builtin_objects[ECMA_BUILTIN_OBJECTS_COUNT]; /**< pointer to instances of built-in objects */
} ecma_global_object_t;
@@ -120,9 +114,7 @@ ecma_value_t ecma_builtin_dispatch_construct (ecma_object_t *obj_p,
ecma_property_t *ecma_builtin_routine_try_to_instantiate_property (ecma_object_t *object_p,
ecma_string_t *property_name_p);
ecma_property_t *ecma_builtin_try_to_instantiate_property (ecma_object_t *object_p, ecma_string_t *property_name_p);
#if JERRY_ESNEXT
void ecma_builtin_routine_delete_built_in_property (ecma_object_t *object_p, ecma_string_t *property_name_p);
#endif /* JERRY_ESNEXT */
void ecma_builtin_delete_built_in_property (ecma_object_t *object_p, ecma_string_t *property_name_p);
void ecma_builtin_routine_list_lazy_property_names (ecma_object_t *object_p,
ecma_collection_t *prop_names_p,

Some files were not shown because too many files have changed in this diff Show More