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

jerry-core/ecma/base/ecma-globals.h

Lines changed: 12 additions & 0 deletions
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
*/

jerry-core/ecma/builtin-objects/ecma-builtin-array.inc.h

Lines changed: 6 additions & 0 deletions
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)

jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer.inc.h

Lines changed: 4 additions & 0 deletions
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

jerry-core/ecma/builtin-objects/ecma-builtin-boolean.inc.h

Lines changed: 6 additions & 0 deletions
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"

jerry-core/ecma/builtin-objects/ecma-builtin-date.inc.h

Lines changed: 6 additions & 0 deletions
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"

jerry-core/ecma/builtin-objects/ecma-builtin-error.inc.h

Lines changed: 6 additions & 0 deletions
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"

jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.inc.h

Lines changed: 6 additions & 0 deletions
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"

jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.c

Lines changed: 10 additions & 4 deletions
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,

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

Lines changed: 6 additions & 0 deletions
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)

jerry-core/ecma/builtin-objects/ecma-builtin-function.inc.h

Lines changed: 6 additions & 0 deletions
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"

0 commit comments

Comments
 (0)