Skip to content

Commit

Permalink
Add support for builtin/builtin routine 'name' property (#3810)
Browse files Browse the repository at this point in the history
JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu
  • Loading branch information
rerobika committed May 29, 2020
1 parent 5895b96 commit 3b4c259
Show file tree
Hide file tree
Showing 29 changed files with 512 additions and 112 deletions.
12 changes: 12 additions & 0 deletions jerry-core/ecma/base/ecma-globals.h
Original file line number Diff line number Diff line change
Expand Up @@ -818,6 +818,18 @@ typedef struct
} u;
} ecma_built_in_props_t;

/**
* Builtin routine function object status flags
*/
typedef enum
{
ECMA_BUILTIN_ROUTINE_NO_OPTS = 0, /**< No options are provided */
ECMA_BUILTIN_ROUTINE_LENGTH_INITIALIZED = (1u << 0), /**< 'length' property has been initialized */
ECMA_BUILTIN_ROUTINE_NAME_INITIALIZED = (1u << 1), /**< 'name' property has been initialized */
ECMA_BUILTIN_ROUTINE_GETTER = (1u << 2), /**< this routine is getter */
ECMA_BUILTIN_ROUTINE_SETTER = (1u << 3), /**< this routine is setter */
} ecma_builtin_routine_flags_t;

/**
* Start position of bit set size in length_and_bitset_size field.
*/
Expand Down
6 changes: 6 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-array.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
1,
ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_ARRAY_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

/* 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_builtin_array_object_is_array, 1, 1)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_ARRAYBUFFER_PROTOTYPE,
ECMA_PROPERTY_FIXED)

STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_ARRAY_BUFFER_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)

/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */

Expand Down
6 changes: 6 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-boolean.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
1,
ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_BOOLEAN_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

#endif /* ENABLED (JERRY_BUILTIN_BOOLEAN) */

#include "ecma-builtin-helpers-macro-undefs.inc.h"
6 changes: 6 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-date.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@ ROUTINE (LIT_MAGIC_STRING_PARSE, ecma_builtin_date_parse, 1, 1)
ROUTINE (LIT_MAGIC_STRING_UTC_U, ecma_builtin_date_utc, NON_FIXED, 7)
ROUTINE (LIT_MAGIC_STRING_NOW, ecma_builtin_date_now, 0, 0)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_DATE_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

#endif /* ENABLED (JERRY_BUILTIN_DATE) */

#include "ecma-builtin-helpers-macro-undefs.inc.h"
6 changes: 6 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-error.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,10 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_ERROR_PROTOTYPE,
ECMA_PROPERTY_FIXED)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_ERROR_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

#include "ecma-builtin-helpers-macro-undefs.inc.h"
6 changes: 6 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_EVAL_ERROR_PROTOTYPE,
ECMA_PROPERTY_FIXED)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_EVAL_ERROR_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

#endif /* ENABLED (JERRY_BUILTIN_ERRORS) */

#include "ecma-builtin-helpers-macro-undefs.inc.h"
14 changes: 10 additions & 4 deletions jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.c
Original file line number Diff line number Diff line change
Expand Up @@ -348,15 +348,21 @@ ecma_builtin_function_prototype_object_bind (ecma_object_t *this_arg_obj_p , /**
return name_value;
}

if (!ecma_is_value_string (name_value))
ecma_string_t *name_p;

if (ecma_is_value_string (name_value))
{
name_p = ecma_get_string_from_value (name_value);
}
else
{
ecma_free_value (name_value);
name_value = ecma_make_magic_string_value (LIT_MAGIC_STRING__EMPTY);
name_p = ecma_get_magic_string (LIT_MAGIC_STRING__EMPTY);
}

ecma_value_t bound_function_name = ecma_op_function_form_name (name_value, "bound ", 6);
ecma_value_t bound_function_name = ecma_op_function_form_name (name_p, "bound ", 6);

ecma_free_value (name_value);
ecma_deref_ecma_string (name_p);

ecma_property_value_t *name_prop_value_p;
name_prop_value_p = ecma_create_named_data_property (function_p,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
0,
ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING__EMPTY,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
ROUTINE (LIT_MAGIC_STRING_TO_STRING_UL, ECMA_FUNCTION_PROTOTYPE_TO_STRING, 0, 0)
Expand Down
6 changes: 6 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-function.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,10 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
1,
ECMA_PROPERTY_FLAG_DEFAULT_LENGTH)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_FUNCTION_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

#include "ecma-builtin-helpers-macro-undefs.inc.h"
3 changes: 3 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-number.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ 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 /* ENABLED (JERRY_ES2015) */

/* Object properties:
Expand Down
6 changes: 6 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-object.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_OBJECT_PROTOTYPE,
ECMA_PROPERTY_FIXED)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_OBJECT_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

/* 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)
Expand Down
4 changes: 4 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-promise.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_PROMISE_PROTOTYPE,
ECMA_PROPERTY_FIXED)

STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_PROMISE_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_REJECT, ecma_builtin_promise_reject, 1, 1)
Expand Down
4 changes: 4 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-proxy.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
2,
ECMA_PROPERTY_FLAG_CONFIGURABLE)

STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_PROXY_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)

/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */

Expand Down
6 changes: 6 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_RANGE_ERROR_PROTOTYPE,
ECMA_PROPERTY_FIXED)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_RANGE_ERROR_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

#endif /* ENABLED (JERRY_BUILTIN_ERRORS) */

#include "ecma-builtin-helpers-macro-undefs.inc.h"
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_REFERENCE_ERROR_PROTOTYPE,
ECMA_PROPERTY_FIXED)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_REFERENCE_ERROR_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

#endif /* ENABLED (JERRY_BUILTIN_ERRORS) */

#include "ecma-builtin-helpers-macro-undefs.inc.h"
4 changes: 4 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-regexp.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_PROPERTY_FIXED)

#if ENABLED (JERRY_ES2015)
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,
Expand Down
6 changes: 6 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-string.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_STRING_PROTOTYPE,
ECMA_PROPERTY_FIXED)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_STRING_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

/* 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)
Expand Down
4 changes: 4 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-symbol.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
0,
ECMA_PROPERTY_FLAG_CONFIGURABLE)

STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_STRING_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)

/* Object properties:
* (property name, object pointer getter) */

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_SYNTAX_ERROR_PROTOTYPE,
ECMA_PROPERTY_FIXED)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_SYNTAX_ERROR_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

#endif /* ENABLED (JERRY_BUILTIN_ERRORS) */

#include "ecma-builtin-helpers-macro-undefs.inc.h"
6 changes: 6 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_TYPE_ERROR_PROTOTYPE,
ECMA_PROPERTY_FIXED)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_SYNTAX_ERROR_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

#endif /* ENABLED (JERRY_BUILTIN_ERRORS) */

#include "ecma-builtin-helpers-macro-undefs.inc.h"
6 changes: 6 additions & 0 deletions jerry-core/ecma/builtin-objects/ecma-builtin-urierror.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_URI_ERROR_PROTOTYPE,
ECMA_PROPERTY_FIXED)

#if ENABLED (JERRY_ES2015)
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_URI_ERROR_UL,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* ENABLED (JERRY_ES2015) */

#endif /* ENABLED (JERRY_BUILTIN_ERRORS) */

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

0 comments on commit 3b4c259

Please sign in to comment.