Implement Object.is routine from ES2015 specification (#3272)
Related part of the standard: ECMA-262 v6, 19.1.2.10 JerryScript-DCO-1.0-Signed-off-by: Adam Kallai kadam@inf.u-szeged.hu
This commit is contained in:
committed by
Dániel Bátyai
parent
06135da642
commit
a8b627a80c
@@ -56,6 +56,7 @@ enum
|
||||
ECMA_OBJECT_ROUTINE_GET_PROTOTYPE_OF,
|
||||
ECMA_OBJECT_ROUTINE_SET_PROTOTYPE_OF,
|
||||
ECMA_OBJECT_ROUTINE_ASSIGN,
|
||||
ECMA_OBJECT_ROUTINE_IS,
|
||||
};
|
||||
|
||||
#define BUILTIN_INC_HEADER_NAME "ecma-builtin-object.inc.h"
|
||||
@@ -876,6 +877,25 @@ ecma_builtin_object_object_assign (const ecma_value_t arguments_list_p[], /**< a
|
||||
} /* ecma_builtin_object_object_assign */
|
||||
#endif /* ENABLED (JERRY_ES2015_BUILTIN) */
|
||||
|
||||
#if ENABLED (JERRY_ES2015_BUILTIN)
|
||||
/**
|
||||
* The Object object's 'is' routine
|
||||
*
|
||||
* See also:
|
||||
* ECMA-262 v6, 19.1.2.10
|
||||
*
|
||||
* @return ecma value
|
||||
* Returned value must be freed with ecma_free_value.
|
||||
*/
|
||||
static ecma_value_t
|
||||
ecma_builtin_object_object_is (ecma_value_t arg1, /**< routine's first argument */
|
||||
ecma_value_t arg2) /**< routine's second argument */
|
||||
{
|
||||
return ecma_op_same_value (arg1, arg2) ? ECMA_VALUE_TRUE : ECMA_VALUE_FALSE;
|
||||
} /* ecma_builtin_object_object_is */
|
||||
#endif /* ENABLED (JERRY_ES2015_BUILTIN) */
|
||||
|
||||
|
||||
/**
|
||||
* Dispatcher of the built-in's routines
|
||||
*
|
||||
@@ -917,6 +937,10 @@ ecma_builtin_object_dispatch_routine (uint16_t builtin_routine_id, /**< built-in
|
||||
{
|
||||
return ecma_builtin_object_object_assign (arguments_list_p, arguments_number);
|
||||
}
|
||||
case ECMA_OBJECT_ROUTINE_IS:
|
||||
{
|
||||
return ecma_builtin_object_object_is (arg1, arg2);
|
||||
}
|
||||
#endif /* ENABLED (JERRY_ES2015_BUILTIN) */
|
||||
default:
|
||||
{
|
||||
|
||||
@@ -57,6 +57,7 @@ ROUTINE (LIT_MAGIC_STRING_DEFINE_PROPERTY_UL, ECMA_OBJECT_ROUTINE_DEFINE_PROPERT
|
||||
#if ENABLED (JERRY_ES2015_BUILTIN)
|
||||
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 /* ENABLED (JERRY_ES2015_BUILTIN) */
|
||||
|
||||
#include "ecma-builtin-helpers-macro-undefs.inc.h"
|
||||
|
||||
@@ -35,6 +35,9 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_RIGHT_SQUARE_CHAR, "]")
|
||||
#if ENABLED (JERRY_BUILTIN_MATH)
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PI_U, "PI")
|
||||
#endif
|
||||
#if ENABLED (JERRY_ES2015_BUILTIN)
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_IS, "is")
|
||||
#endif
|
||||
#if ENABLED (JERRY_ES2015_BUILTIN_TYPEDARRAY)
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_OF, "of")
|
||||
#endif
|
||||
@@ -778,6 +781,8 @@ LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (0, LIT_MAGIC_STRING__EMPTY)
|
||||
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (1, LIT_MAGIC_STRING_SPACE_CHAR)
|
||||
#if ENABLED (JERRY_BUILTIN_MATH)
|
||||
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_PI_U)
|
||||
#elif ENABLED (JERRY_ES2015_BUILTIN)
|
||||
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_IS)
|
||||
#elif ENABLED (JERRY_ES2015_BUILTIN_TYPEDARRAY)
|
||||
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_OF)
|
||||
#elif ENABLED (JERRY_BUILTIN_MATH)
|
||||
|
||||
@@ -32,6 +32,7 @@ LIT_MAGIC_STRING_E_U = "E"
|
||||
LIT_MAGIC_STRING_LEFT_SQUARE_CHAR = "["
|
||||
LIT_MAGIC_STRING_RIGHT_SQUARE_CHAR = "]"
|
||||
LIT_MAGIC_STRING_PI_U = "PI"
|
||||
LIT_MAGIC_STRING_IS = "is"
|
||||
LIT_MAGIC_STRING_OF = "of"
|
||||
LIT_MAGIC_STRING_LN2_U = "LN2"
|
||||
LIT_MAGIC_STRING_MAP_UL = "Map"
|
||||
|
||||
Reference in New Issue
Block a user