Skip to content

Commit 3b4c259

Browse files
authored
Add support for builtin/builtin routine 'name' property (#3810)
JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik [email protected]
1 parent 5895b96 commit 3b4c259

29 files changed

+512
-112
lines changed

Diff for: jerry-core/ecma/base/ecma-globals.h

+12
Original file line numberDiff line numberDiff line change
@@ -818,6 +818,18 @@ typedef struct
818818
} u;
819819
} ecma_built_in_props_t;
820820

821+
/**
822+
* Builtin routine function object status flags
823+
*/
824+
typedef enum
825+
{
826+
ECMA_BUILTIN_ROUTINE_NO_OPTS = 0, /**< No options are provided */
827+
ECMA_BUILTIN_ROUTINE_LENGTH_INITIALIZED = (1u << 0), /**< 'length' property has been initialized */
828+
ECMA_BUILTIN_ROUTINE_NAME_INITIALIZED = (1u << 1), /**< 'name' property has been initialized */
829+
ECMA_BUILTIN_ROUTINE_GETTER = (1u << 2), /**< this routine is getter */
830+
ECMA_BUILTIN_ROUTINE_SETTER = (1u << 3), /**< this routine is setter */
831+
} ecma_builtin_routine_flags_t;
832+
821833
/**
822834
* Start position of bit set size in length_and_bitset_size field.
823835
*/

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-array.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3636
1,
3737
ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
3838

39+
#if ENABLED (JERRY_ES2015)
40+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
41+
LIT_MAGIC_STRING_ARRAY_UL,
42+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
43+
#endif /* ENABLED (JERRY_ES2015) */
44+
3945
/* Routine properties:
4046
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
4147
ROUTINE (LIT_MAGIC_STRING_IS_ARRAY_UL, ecma_builtin_array_object_is_array, 1, 1)

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer.inc.h

+4
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
3535
ECMA_BUILTIN_ID_ARRAYBUFFER_PROTOTYPE,
3636
ECMA_PROPERTY_FIXED)
3737

38+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
39+
LIT_MAGIC_STRING_ARRAY_BUFFER_UL,
40+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
41+
3842
/* Routine properties:
3943
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
4044

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-boolean.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3636
1,
3737
ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
3838

39+
#if ENABLED (JERRY_ES2015)
40+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
41+
LIT_MAGIC_STRING_BOOLEAN_UL,
42+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
43+
#endif /* ENABLED (JERRY_ES2015) */
44+
3945
#endif /* ENABLED (JERRY_BUILTIN_BOOLEAN) */
4046

4147
#include "ecma-builtin-helpers-macro-undefs.inc.h"

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-date.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ ROUTINE (LIT_MAGIC_STRING_PARSE, ecma_builtin_date_parse, 1, 1)
3434
ROUTINE (LIT_MAGIC_STRING_UTC_U, ecma_builtin_date_utc, NON_FIXED, 7)
3535
ROUTINE (LIT_MAGIC_STRING_NOW, ecma_builtin_date_now, 0, 0)
3636

37+
#if ENABLED (JERRY_ES2015)
38+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
39+
LIT_MAGIC_STRING_DATE_UL,
40+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
41+
#endif /* ENABLED (JERRY_ES2015) */
42+
3743
#endif /* ENABLED (JERRY_BUILTIN_DATE) */
3844

3945
#include "ecma-builtin-helpers-macro-undefs.inc.h"

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-error.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,10 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
3434
ECMA_BUILTIN_ID_ERROR_PROTOTYPE,
3535
ECMA_PROPERTY_FIXED)
3636

37+
#if ENABLED (JERRY_ES2015)
38+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
39+
LIT_MAGIC_STRING_ERROR_UL,
40+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
41+
#endif /* ENABLED (JERRY_ES2015) */
42+
3743
#include "ecma-builtin-helpers-macro-undefs.inc.h"

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
3636
ECMA_BUILTIN_ID_EVAL_ERROR_PROTOTYPE,
3737
ECMA_PROPERTY_FIXED)
3838

39+
#if ENABLED (JERRY_ES2015)
40+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
41+
LIT_MAGIC_STRING_EVAL_ERROR_UL,
42+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
43+
#endif /* ENABLED (JERRY_ES2015) */
44+
3945
#endif /* ENABLED (JERRY_BUILTIN_ERRORS) */
4046

4147
#include "ecma-builtin-helpers-macro-undefs.inc.h"

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.c

+10-4
Original file line numberDiff line numberDiff line change
@@ -348,15 +348,21 @@ ecma_builtin_function_prototype_object_bind (ecma_object_t *this_arg_obj_p , /**
348348
return name_value;
349349
}
350350

351-
if (!ecma_is_value_string (name_value))
351+
ecma_string_t *name_p;
352+
353+
if (ecma_is_value_string (name_value))
354+
{
355+
name_p = ecma_get_string_from_value (name_value);
356+
}
357+
else
352358
{
353359
ecma_free_value (name_value);
354-
name_value = ecma_make_magic_string_value (LIT_MAGIC_STRING__EMPTY);
360+
name_p = ecma_get_magic_string (LIT_MAGIC_STRING__EMPTY);
355361
}
356362

357-
ecma_value_t bound_function_name = ecma_op_function_form_name (name_value, "bound ", 6);
363+
ecma_value_t bound_function_name = ecma_op_function_form_name (name_p, "bound ", 6);
358364

359-
ecma_free_value (name_value);
365+
ecma_deref_ecma_string (name_p);
360366

361367
ecma_property_value_t *name_prop_value_p;
362368
name_prop_value_p = ecma_create_named_data_property (function_p,

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3434
0,
3535
ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
3636

37+
#if ENABLED (JERRY_ES2015)
38+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
39+
LIT_MAGIC_STRING__EMPTY,
40+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
41+
#endif /* ENABLED (JERRY_ES2015) */
42+
3743
/* Routine properties:
3844
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
3945
ROUTINE (LIT_MAGIC_STRING_TO_STRING_UL, ECMA_FUNCTION_PROTOTYPE_TO_STRING, 0, 0)

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-function.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,10 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3434
1,
3535
ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)
3636

37+
#if ENABLED (JERRY_ES2015)
38+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
39+
LIT_MAGIC_STRING_FUNCTION_UL,
40+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
41+
#endif /* ENABLED (JERRY_ES2015) */
42+
3743
#include "ecma-builtin-helpers-macro-undefs.inc.h"

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-number.inc.h

+3
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ NUMBER_VALUE (LIT_MAGIC_STRING_MIN_SAFE_INTEGER_U,
7070
ECMA_BUILTIN_NUMBER_MIN_SAFE_INTEGER,
7171
ECMA_PROPERTY_FIXED)
7272

73+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
74+
LIT_MAGIC_STRING_NUMBER_UL,
75+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
7376
#endif /* ENABLED (JERRY_ES2015) */
7477

7578
/* Object properties:

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-object.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
3434
ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
3535
ECMA_PROPERTY_FIXED)
3636

37+
#if ENABLED (JERRY_ES2015)
38+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
39+
LIT_MAGIC_STRING_OBJECT_UL,
40+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
41+
#endif /* ENABLED (JERRY_ES2015) */
42+
3743
/* Routine properties:
3844
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
3945
ROUTINE (LIT_MAGIC_STRING_GET_PROTOTYPE_OF_UL, ECMA_OBJECT_ROUTINE_GET_PROTOTYPE_OF, 1, 1)

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-promise.inc.h

+4
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
3535
ECMA_BUILTIN_ID_PROMISE_PROTOTYPE,
3636
ECMA_PROPERTY_FIXED)
3737

38+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
39+
LIT_MAGIC_STRING_PROMISE_UL,
40+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
41+
3842
/* Routine properties:
3943
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
4044
ROUTINE (LIT_MAGIC_STRING_REJECT, ecma_builtin_promise_reject, 1, 1)

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-proxy.inc.h

+4
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
2828
2,
2929
ECMA_PROPERTY_FLAG_CONFIGURABLE)
3030

31+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
32+
LIT_MAGIC_STRING_PROXY_UL,
33+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
34+
3135
/* Routine properties:
3236
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
3337

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
3636
ECMA_BUILTIN_ID_RANGE_ERROR_PROTOTYPE,
3737
ECMA_PROPERTY_FIXED)
3838

39+
#if ENABLED (JERRY_ES2015)
40+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
41+
LIT_MAGIC_STRING_RANGE_ERROR_UL,
42+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
43+
#endif /* ENABLED (JERRY_ES2015) */
44+
3945
#endif /* ENABLED (JERRY_BUILTIN_ERRORS) */
4046

4147
#include "ecma-builtin-helpers-macro-undefs.inc.h"

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
3636
ECMA_BUILTIN_ID_REFERENCE_ERROR_PROTOTYPE,
3737
ECMA_PROPERTY_FIXED)
3838

39+
#if ENABLED (JERRY_ES2015)
40+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
41+
LIT_MAGIC_STRING_REFERENCE_ERROR_UL,
42+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
43+
#endif /* ENABLED (JERRY_ES2015) */
44+
3945
#endif /* ENABLED (JERRY_BUILTIN_ERRORS) */
4046

4147
#include "ecma-builtin-helpers-macro-undefs.inc.h"

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-regexp.inc.h

+4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
3131
ECMA_PROPERTY_FIXED)
3232

3333
#if ENABLED (JERRY_ES2015)
34+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
35+
LIT_MAGIC_STRING_REGEXP_UL,
36+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
37+
3438
/* ECMA-262 v6, 21.2.4.2 */
3539
ACCESSOR_READ_ONLY (LIT_GLOBAL_SYMBOL_SPECIES,
3640
ecma_builtin_regexp_species_get,

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-string.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
3636
ECMA_BUILTIN_ID_STRING_PROTOTYPE,
3737
ECMA_PROPERTY_FIXED)
3838

39+
#if ENABLED (JERRY_ES2015)
40+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
41+
LIT_MAGIC_STRING_STRING_UL,
42+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
43+
#endif /* ENABLED (JERRY_ES2015) */
44+
3945
/* Routine properties:
4046
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
4147
ROUTINE (LIT_MAGIC_STRING_FROM_CHAR_CODE_UL, ecma_builtin_string_object_from_char_code, NON_FIXED, 1)

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-symbol.inc.h

+4
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
2929
0,
3030
ECMA_PROPERTY_FLAG_CONFIGURABLE)
3131

32+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
33+
LIT_MAGIC_STRING_STRING_UL,
34+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
35+
3236
/* Object properties:
3337
* (property name, object pointer getter) */
3438

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
3636
ECMA_BUILTIN_ID_SYNTAX_ERROR_PROTOTYPE,
3737
ECMA_PROPERTY_FIXED)
3838

39+
#if ENABLED (JERRY_ES2015)
40+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
41+
LIT_MAGIC_STRING_SYNTAX_ERROR_UL,
42+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
43+
#endif /* ENABLED (JERRY_ES2015) */
44+
3945
#endif /* ENABLED (JERRY_BUILTIN_ERRORS) */
4046

4147
#include "ecma-builtin-helpers-macro-undefs.inc.h"

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
3636
ECMA_BUILTIN_ID_TYPE_ERROR_PROTOTYPE,
3737
ECMA_PROPERTY_FIXED)
3838

39+
#if ENABLED (JERRY_ES2015)
40+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
41+
LIT_MAGIC_STRING_SYNTAX_ERROR_UL,
42+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
43+
#endif /* ENABLED (JERRY_ES2015) */
44+
3945
#endif /* ENABLED (JERRY_BUILTIN_ERRORS) */
4046

4147
#include "ecma-builtin-helpers-macro-undefs.inc.h"

Diff for: jerry-core/ecma/builtin-objects/ecma-builtin-urierror.inc.h

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
3636
ECMA_BUILTIN_ID_URI_ERROR_PROTOTYPE,
3737
ECMA_PROPERTY_FIXED)
3838

39+
#if ENABLED (JERRY_ES2015)
40+
STRING_VALUE (LIT_MAGIC_STRING_NAME,
41+
LIT_MAGIC_STRING_URI_ERROR_UL,
42+
ECMA_PROPERTY_FLAG_CONFIGURABLE)
43+
#endif /* ENABLED (JERRY_ES2015) */
44+
3945
#endif /* ENABLED (JERRY_BUILTIN_ERRORS) */
4046

4147
#include "ecma-builtin-helpers-macro-undefs.inc.h"

0 commit comments

Comments
 (0)