Add guards for SharedArrayBuffer (#4723)

JerryScript-DCO-1.0-Signed-off-by: Gergo Csizi csgergo92@gmail.com
This commit is contained in:
Gergo Csizi 2021-08-10 17:21:06 +02:00 committed by GitHub
parent a25b824509
commit b7dead7b05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 113 additions and 44 deletions

View File

@ -1573,7 +1573,9 @@ static const uint8_t jerry_class_object_type[] =
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_TYPEDARRAY
JERRY_OBJECT_TYPE_ARRAYBUFFER, /**< type of ECMA_OBJECT_CLASS_ARRAY_BUFFER */
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
JERRY_OBJECT_TYPE_SHARED_ARRAY_BUFFER, /**< type of ECMA_OBJECT_CLASS_SHARED_ARRAY_BUFFER */
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
#endif /* JERRY_BUILTIN_TYPEDARRAY */
#if JERRY_BUILTIN_BIGINT
JERRY_OBJECT_TYPE_BIGINT, /**< type of ECMA_OBJECT_CLASS_BIGINT */
@ -5678,12 +5680,7 @@ jerry_value_is_shared_arraybuffer (const jerry_value_t value) /**< value to chec
{
jerry_assert_api_available ();
#if JERRY_BUILTIN_TYPEDARRAY
return ecma_is_shared_arraybuffer (value);
#else /* !JERRY_BUILTIN_TYPEDARRAY */
JERRY_UNUSED (value);
return false;
#endif /* JERRY_BUILTIN_TYPEDARRAY */
} /* jerry_value_is_shared_arraybuffer */
/**
@ -5701,12 +5698,12 @@ jerry_create_shared_arraybuffer (const jerry_length_t size) /**< size of the Sha
{
jerry_assert_api_available ();
#if JERRY_BUILTIN_TYPEDARRAY
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
return jerry_return (ecma_make_object_value (ecma_shared_arraybuffer_new_object (size)));
#else /* !JERRY_BUILTIN_TYPEDARRAY */
#else /* !JERRY_BUILTIN_SHAREDARRAYBUFFER */
JERRY_UNUSED (size);
return jerry_throw (ecma_raise_type_error (ECMA_ERR_MSG (ecma_error_typed_array_not_supported_p)));
#endif /* JERRY_BUILTIN_TYPEDARRAY */
return jerry_throw (ecma_raise_type_error (ECMA_ERR_MSG (ecma_error_shared_arraybuffer_not_supported_p)));
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
} /* jerry_create_shared_arraybuffer */
/**
@ -5727,7 +5724,7 @@ jerry_create_shared_arraybuffer_external (const jerry_length_t size, /**< size o
{
jerry_assert_api_available ();
#if JERRY_BUILTIN_TYPEDARRAY
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
ecma_object_t *shared_arraybuffer;
if (JERRY_UNLIKELY (size == 0 || buffer_p == NULL))
@ -5740,12 +5737,12 @@ jerry_create_shared_arraybuffer_external (const jerry_length_t size, /**< size o
}
return jerry_return (ecma_make_object_value (shared_arraybuffer));
#else /* !JERRY_BUILTIN_TYPEDARRAY */
#else /* !JERRY_BUILTIN_SHAREDARRAYBUFFER */
JERRY_UNUSED (size);
JERRY_UNUSED (buffer_p);
JERRY_UNUSED (free_cb);
return jerry_throw (ecma_raise_type_error (ECMA_ERR_MSG (ecma_error_typed_array_not_supported_p)));
#endif /* JERRY_BUILTIN_TYPEDARRAY */
return jerry_throw (ecma_raise_type_error (ECMA_ERR_MSG (ecma_error_shared_arraybuffer_not_supported_p)));
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
} /* jerry_create_shared_arraybuffer_external */
/**

View File

@ -111,6 +111,10 @@
# define JERRY_BUILTIN_TYPEDARRAY JERRY_ESNEXT
#endif /* !defined (JERRY_BUILTIN_TYPEDARRAY) */
#ifndef JERRY_BUILTIN_SHAREDARRAYBUFFER
# define JERRY_BUILTIN_SHAREDARRAYBUFFER JERRY_ESNEXT
#endif /* !defined (JERRY_BUILTIN_SHAREDARRAYBUFFER) */
#ifndef JERRY_BUILTIN_WEAKREF
# define JERRY_BUILTIN_WEAKREF JERRY_ESNEXT
#endif /* !defined (JERRY_BUILTIN_WEAKREF) */
@ -567,6 +571,10 @@
|| ((JERRY_BUILTIN_TYPEDARRAY != 0) && (JERRY_BUILTIN_TYPEDARRAY != 1))
# error "Invalid value for JERRY_BUILTIN_TYPEDARRAY macro."
#endif
#if !defined (JERRY_BUILTIN_SHAREDARRAYBUFFER) \
|| ((JERRY_BUILTIN_SHAREDARRAYBUFFER != 0) && (JERRY_BUILTIN_SHAREDARRAYBUFFER != 1))
# error "Invalid value for JERRY_BUILTIN_SHAREDARRAYBUFFER macro."
#endif
#if !defined (JERRY_BUILTIN_BIGINT) \
|| ((JERRY_BUILTIN_BIGINT != 0) && (JERRY_BUILTIN_BIGINT != 1))
# error "Invalid value for JERRY_BUILTIN_BIGINT macro."
@ -587,6 +595,9 @@
#if (JERRY_ESNEXT == 0) && (JERRY_MODULE_SYSTEM == 1)
# error "JERRY_ESNEXT should be enabled too to enable JERRY_MODULE_SYSTEM macro."
#endif
#if (JERRY_BUILTIN_TYPEDARRAY == 0) && (JERRY_BUILTIN_SHAREDARRAYBUFFER == 1)
# error "JERRY_BUILTIN_TYPEDARRAY should be enabled too to enable JERRY_BUILTIN_SHAREDARRAYBUFFER macro."
#endif
/**
* Internal options.

View File

@ -59,6 +59,13 @@ const char * const ecma_error_promise_not_supported_p = "Promise support is disa
const char * const ecma_error_typed_array_not_supported_p = "TypedArray support is disabled";
#endif /* !JERRY_BUILTIN_TYPEDARRAY */
#if !JERRY_BUILTIN_SHAREDARRAYBUFFER
/**
* Error message, if SharedArrayBuffer support is disabled
*/
const char * const ecma_error_shared_arraybuffer_not_supported_p = "SharedArrayBuffer support is disabled";
#endif /* !JERRY_BUILTIN_SHAREDARRAYBUFFER */
#if !JERRY_BUILTIN_DATAVIEW
/**
* Error message, if DataView support is disabled

View File

@ -41,6 +41,10 @@ extern const char * const ecma_error_promise_not_supported_p;
extern const char * const ecma_error_typed_array_not_supported_p;
#endif /* !JERRY_BUILTIN_TYPEDARRAY */
#if !JERRY_BUILTIN_SHAREDARRAYBUFFER
extern const char * const ecma_error_shared_arraybuffer_not_supported_p;
#endif /* !JERRY_BUILTIN_SHAREDARRAYBUFFER */
#if !JERRY_BUILTIN_DATAVIEW
extern const char * const ecma_error_data_view_not_supported_p;
#endif /* !JERRY_BUILTIN_DATAVIEW */

View File

@ -1897,7 +1897,9 @@ ecma_gc_free_object (ecma_object_t *object_p) /**< object to free */
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_TYPEDARRAY
case ECMA_OBJECT_CLASS_ARRAY_BUFFER:
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
case ECMA_OBJECT_CLASS_SHARED_ARRAY_BUFFER:
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
{
uint32_t arraybuffer_length = ext_object_p->u.cls.u3.length;

View File

@ -732,8 +732,10 @@ typedef enum
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_TYPEDARRAY
ECMA_OBJECT_CLASS_ARRAY_BUFFER, /**< Array Buffer (ECMAScript v6, 24.1) */
ECMA_OBJECT_CLASS_SHARED_ARRAY_BUFFER, /**< Shared Array Buffer (ECMAScript v11 24.2) */
#endif /* JERRY_BUILTIN_TYPEDARRAY */
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
ECMA_OBJECT_CLASS_SHARED_ARRAY_BUFFER, /**< Shared Array Buffer (ECMAScript v11 24.2) */
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
#if JERRY_BUILTIN_BIGINT
ECMA_OBJECT_CLASS_BIGINT, /**< Bigint (ECMAScript v11, 4.3.27) */
#endif /* JERRY_BUILTIN_BIGINT */

View File

@ -158,9 +158,11 @@ OBJECT_VALUE (LIT_MAGIC_STRING_ARRAY_BUFFER_UL,
ECMA_BUILTIN_ID_ARRAYBUFFER,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
OBJECT_VALUE (LIT_MAGIC_STRING_SHARED_ARRAY_BUFFER_UL,
ECMA_BUILTIN_ID_SHARED_ARRAYBUFFER,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
OBJECT_VALUE (LIT_MAGIC_STRING_INT8_ARRAY_UL,
ECMA_BUILTIN_ID_INT8ARRAY,

View File

@ -27,7 +27,7 @@
#include "jrt.h"
#include "jrt-libc-includes.h"
#if JERRY_BUILTIN_TYPEDARRAY
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@ -109,4 +109,4 @@ ecma_builtin_shared_arraybuffer_prototype_object_slice (ecma_value_t this_arg, /
* @}
*/
#endif /* JERRY_BUILTIN_TYPEDARRAY */
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */

View File

@ -19,7 +19,7 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_BUILTIN_TYPEDARRAY
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
/* Object properties:
* (property name, object pointer getter) */
@ -42,6 +42,6 @@ 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_SLICE, ecma_builtin_shared_arraybuffer_prototype_object_slice, NON_FIXED, 2)
#endif /* JERRY_BUILTIN_TYPEDARRAY */
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
#include "ecma-builtin-helpers-macro-undefs.inc.h"

View File

@ -23,7 +23,7 @@
#include "ecma-typedarray-object.h"
#include "jrt.h"
#if JERRY_BUILTIN_TYPEDARRAY
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
@ -92,4 +92,4 @@ ecma_builtin_shared_arraybuffer_species_get (ecma_value_t this_value) /**< This
* @}
*/
#endif /* JERRY_BUILTIN_TYPEDARRAY */
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */

View File

@ -19,7 +19,7 @@
#include "ecma-builtin-helpers-macro-defines.inc.h"
#if JERRY_BUILTIN_TYPEDARRAY
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
/* Number properties:
* (property name, number value, writable, enumerable, configurable) */
@ -47,6 +47,6 @@ ACCESSOR_READ_ONLY (LIT_GLOBAL_SYMBOL_SPECIES,
ecma_builtin_shared_arraybuffer_species_get,
ECMA_PROPERTY_FLAG_CONFIGURABLE)
#endif /* JERRY_BUILTIN_TYPEDARRAY */
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
#include "ecma-builtin-helpers-macro-undefs.inc.h"

View File

@ -337,6 +337,8 @@ BUILTIN_ROUTINE (ECMA_BUILTIN_ID_ARRAYBUFFER,
true,
arraybuffer)
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
/* The SharedArrayBuffer.prototype object (ES2015 24.2.4) */
BUILTIN (ECMA_BUILTIN_ID_SHARED_ARRAYBUFFER_PROTOTYPE,
ECMA_OBJECT_TYPE_GENERAL,
@ -350,6 +352,7 @@ BUILTIN_ROUTINE (ECMA_BUILTIN_ID_SHARED_ARRAYBUFFER,
ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE,
true,
shared_arraybuffer)
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
/* The %TypedArrayPrototype% object (ES2015 24.2.3) */
BUILTIN (ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,

View File

@ -187,7 +187,7 @@ uint32_t JERRY_ATTR_PURE
ecma_arraybuffer_get_length (ecma_object_t *object_p) /**< pointer to the ArrayBuffer object */
{
JERRY_ASSERT (ecma_object_class_is (object_p, ECMA_OBJECT_CLASS_ARRAY_BUFFER)
|| ecma_object_class_is (object_p, ECMA_OBJECT_CLASS_SHARED_ARRAY_BUFFER));
|| ecma_object_is_shared_arraybuffer (object_p));
ecma_extended_object_t *ext_object_p = (ecma_extended_object_t *) object_p;
return ecma_arraybuffer_is_detached (object_p) ? 0 : ext_object_p->u.cls.u3.length;
@ -202,7 +202,7 @@ extern inline lit_utf8_byte_t * JERRY_ATTR_PURE JERRY_ATTR_ALWAYS_INLINE
ecma_arraybuffer_get_buffer (ecma_object_t *object_p) /**< pointer to the ArrayBuffer object */
{
JERRY_ASSERT (ecma_object_class_is (object_p, ECMA_OBJECT_CLASS_ARRAY_BUFFER)
|| ecma_object_class_is (object_p, ECMA_OBJECT_CLASS_SHARED_ARRAY_BUFFER));
|| ecma_object_is_shared_arraybuffer (object_p));
ecma_extended_object_t *ext_object_p = (ecma_extended_object_t *) object_p;
@ -230,7 +230,7 @@ extern inline bool JERRY_ATTR_PURE JERRY_ATTR_ALWAYS_INLINE
ecma_arraybuffer_is_detached (ecma_object_t *object_p) /**< pointer to the ArrayBuffer object */
{
JERRY_ASSERT (ecma_object_class_is (object_p, ECMA_OBJECT_CLASS_ARRAY_BUFFER)
|| ecma_object_class_is (object_p, ECMA_OBJECT_CLASS_SHARED_ARRAY_BUFFER));
|| ecma_object_is_shared_arraybuffer (object_p));
return (((ecma_extended_object_t *) object_p)->u.cls.u1.array_buffer_flags & ECMA_ARRAYBUFFER_DETACHED) != 0;
} /* ecma_arraybuffer_is_detached */
@ -318,16 +318,15 @@ ecma_builtin_arraybuffer_slice (ecma_value_t this_arg,
uint32_t new_len = (end >= start) ? (end - start) : 0;
/* 11. */
ecma_value_t ctor;
ecma_builtin_id_t buffer_builtin_id = ECMA_BUILTIN_ID_ARRAYBUFFER;
if (ecma_is_shared_arraybuffer (this_arg))
{
ctor = ecma_op_species_constructor (object_p, ECMA_BUILTIN_ID_SHARED_ARRAYBUFFER);
}
else
{
ctor = ecma_op_species_constructor (object_p, ECMA_BUILTIN_ID_ARRAYBUFFER);
buffer_builtin_id = ECMA_BUILTIN_ID_SHARED_ARRAYBUFFER;
}
ecma_value_t ctor = ecma_op_species_constructor (object_p, buffer_builtin_id);
if (ECMA_IS_VALUE_ERROR (ctor))
{
return ctor;
@ -352,7 +351,7 @@ ecma_builtin_arraybuffer_slice (ecma_value_t this_arg,
/* 13. */
if (!(ecma_object_class_is (new_arraybuffer_p, ECMA_OBJECT_CLASS_ARRAY_BUFFER)
|| ecma_object_class_is (new_arraybuffer_p, ECMA_OBJECT_CLASS_SHARED_ARRAY_BUFFER)))
|| ecma_object_is_shared_arraybuffer (new_arraybuffer_p)))
{
ret_value = ecma_raise_type_error (ECMA_ERR_MSG ("Return value is not an ArrayBuffer object"));
goto free_new_arraybuffer;

View File

@ -62,7 +62,7 @@ ecma_op_dataview_create (const ecma_value_t *arguments_list_p, /**< arguments li
ecma_object_t *buffer_p = ecma_get_object_from_value (buffer);
if (!(ecma_object_class_is (buffer_p, ECMA_OBJECT_CLASS_ARRAY_BUFFER)
|| ecma_object_class_is (buffer_p, ECMA_OBJECT_CLASS_SHARED_ARRAY_BUFFER)))
|| ecma_object_is_shared_arraybuffer (buffer_p)))
{
return ecma_raise_type_error (ECMA_ERR_MSG ("Argument 'buffer' is not an ArrayBuffer or SharedArrayBuffer"));
}
@ -256,7 +256,7 @@ ecma_op_dataview_get_set_view_value (ecma_value_t view, /**< the operation's 'vi
ecma_object_t *buffer_p = view_p->buffer_p;
JERRY_ASSERT (ecma_object_class_is (buffer_p, ECMA_OBJECT_CLASS_ARRAY_BUFFER)
|| ecma_object_class_is (buffer_p, ECMA_OBJECT_CLASS_SHARED_ARRAY_BUFFER));
|| ecma_object_is_shared_arraybuffer (buffer_p));
/* 3. */
ecma_number_t get_index;

View File

@ -2756,7 +2756,9 @@ ecma_object_check_class_name_is_object (ecma_object_t *obj_p) /**< object */
return (ecma_builtin_is_global (obj_p)
#if JERRY_BUILTIN_TYPEDARRAY
|| ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_ARRAYBUFFER_PROTOTYPE)
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
|| ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_SHARED_ARRAYBUFFER_PROTOTYPE)
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
|| ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE)
|| ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_INT8ARRAY_PROTOTYPE)
|| ecma_builtin_is (obj_p, ECMA_BUILTIN_ID_UINT8ARRAY_PROTOTYPE)
@ -2878,8 +2880,10 @@ static const uint16_t ecma_class_object_magic_string_id[] =
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_TYPEDARRAY
LIT_MAGIC_STRING_ARRAY_BUFFER_UL, /**< magic string id of ECMA_OBJECT_CLASS_ARRAY_BUFFER */
LIT_MAGIC_STRING_SHARED_ARRAY_BUFFER_UL, /**< magic string id of ECMA_OBJECT_CLASS_SHAREDARRAY_BUFFER */
#endif /* JERRY_BUILTIN_TYPEDARRAY */
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
LIT_MAGIC_STRING_SHARED_ARRAY_BUFFER_UL, /**< magic string id of ECMA_OBJECT_CLASS_SHAREDARRAY_BUFFER */
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
#if JERRY_BUILTIN_BIGINT
LIT_MAGIC_STRING_BIGINT_UL, /**< magic string id of ECMA_OBJECT_CLASS_BIGINT */
#endif /* JERRY_BUILTIN_BIGINT */

View File

@ -25,8 +25,6 @@
#include "jcontext.h"
#include "ecma-function-object.h"
#if JERRY_BUILTIN_TYPEDARRAY
/** \addtogroup ecma ECMA
* @{
*
@ -34,6 +32,8 @@
* @{
*/
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
/**
* Helper function: create SharedArrayBuffer object based on the array length
*
@ -158,6 +158,8 @@ ecma_op_create_shared_arraybuffer_object (const ecma_value_t *arguments_list_p,
return ecma_make_object_value (shared_array_buffer);
} /* ecma_op_create_shared_arraybuffer_object */
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
/**
* Helper function: check if the target is SharedArrayBuffer
*
@ -166,15 +168,36 @@ ecma_op_create_shared_arraybuffer_object (const ecma_value_t *arguments_list_p,
* @return true - if value is a SharedArrayBuffer object
* false - otherwise
*/
bool
extern inline bool JERRY_ATTR_ALWAYS_INLINE
ecma_is_shared_arraybuffer (ecma_value_t target) /**< the target value */
{
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
return (ecma_is_value_object (target)
&& ecma_object_class_is (ecma_get_object_from_value (target), ECMA_OBJECT_CLASS_SHARED_ARRAY_BUFFER));
#else /* !JERRY_BUILTIN_SHAREDARRAYBUFFER */
JERRY_UNUSED (target);
return false;
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
} /* ecma_is_shared_arraybuffer */
/**
* Helper function: check if the target is SharedArrayBuffer Object
*
* @return true - if value is a SharedArrayBuffer object
* false - otherwise
*/
extern inline bool JERRY_ATTR_ALWAYS_INLINE
ecma_object_is_shared_arraybuffer (ecma_object_t *object_p) /**< the target object */
{
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
return ecma_object_class_is (object_p, ECMA_OBJECT_CLASS_SHARED_ARRAY_BUFFER);
#else /* !JERRY_BUILTIN_SHAREDARRAYBUFFER */
JERRY_UNUSED (object_p);
return false;
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
} /* ecma_object_is_shared_arraybuffer */
/**
* @}
* @}
*/
#endif /* JERRY_BUILTIN_TYPEDARRAY */

View File

@ -18,7 +18,7 @@
#include "ecma-globals.h"
#if JERRY_BUILTIN_TYPEDARRAY
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
/** \addtogroup ecma ECMA
* @{
@ -39,13 +39,15 @@ ecma_object_t *
ecma_shared_arraybuffer_new_object_external (uint32_t length,
void *buffer_p,
jerry_value_free_callback_t free_cb);
#endif /* JERRY_BUILTIN_SHAREDARRAYBUFFER */
bool
ecma_is_shared_arraybuffer (ecma_value_t val);
bool
ecma_object_is_shared_arraybuffer (ecma_object_t *val);
/**
* @}
* @}
*/
#endif /* JERRY_BUILTIN_TYPEDARRAY */
#endif /* !ECMA_SHARED_ARRAYBUFFER_OBJECT_H */

View File

@ -1648,7 +1648,7 @@ ecma_op_create_typedarray (const ecma_value_t *arguments_list_p, /**< the arg li
typedarray_id);
}
else if (ecma_object_class_is (obj_p, ECMA_OBJECT_CLASS_ARRAY_BUFFER)
|| ecma_object_class_is (obj_p, ECMA_OBJECT_CLASS_SHARED_ARRAY_BUFFER))
|| ecma_object_is_shared_arraybuffer (obj_p))
{
/* 22.2.1.5 */
ecma_object_t *arraybuffer_p = obj_p;

View File

@ -295,6 +295,7 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ROUND, "round")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SHIFT, "shift")
#endif
#if JERRY_BUILTIN_ARRAY \
|| JERRY_BUILTIN_SHAREDARRAYBUFFER \
|| JERRY_BUILTIN_STRING \
|| JERRY_BUILTIN_TYPEDARRAY
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SLICE, "slice")
@ -724,8 +725,12 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UINT8_ARRAY_UL, "Uint8Array")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ALLSETTLED, "allSettled")
#endif
#if JERRY_BUILTIN_DATAVIEW \
|| JERRY_BUILTIN_SHAREDARRAYBUFFER \
|| JERRY_BUILTIN_TYPEDARRAY
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BYTE_LENGTH_UL, "byteLength")
#endif
#if JERRY_BUILTIN_DATAVIEW \
|| JERRY_BUILTIN_TYPEDARRAY
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BYTE_OFFSET_UL, "byteOffset")
#endif
#if JERRY_BUILTIN_STRING
@ -968,8 +973,10 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GENERATOR_FUNCTION_UL, "GeneratorFunction
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_NEGATIVE_INFINITY_U, "NEGATIVE_INFINITY")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_POSITIVE_INFINITY_U, "POSITIVE_INFINITY")
#endif
#if JERRY_BUILTIN_TYPEDARRAY
#if JERRY_BUILTIN_SHAREDARRAYBUFFER
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SHARED_ARRAY_BUFFER_UL, "SharedArrayBuffer")
#endif
#if JERRY_BUILTIN_TYPEDARRAY
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UINT8_CLAMPED_ARRAY_UL, "Uint8ClampedArray")
#endif
#if JERRY_BUILTIN_DATE
@ -1106,8 +1113,12 @@ LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_TYPED_ARRAY_UL)
#elif JERRY_ESNEXT
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_ALLSETTLED)
#elif JERRY_BUILTIN_DATAVIEW \
|| JERRY_BUILTIN_SHAREDARRAYBUFFER \
|| JERRY_BUILTIN_TYPEDARRAY
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_BYTE_LENGTH_UL)
#elif JERRY_BUILTIN_DATAVIEW \
|| JERRY_BUILTIN_TYPEDARRAY
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_BYTE_OFFSET_UL)
#elif JERRY_BUILTIN_STRING
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_CHAR_CODE_AT_UL)
#elif JERRY_BUILTIN_TYPEDARRAY \
@ -1176,8 +1187,10 @@ LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (17, LIT_MAGIC_STRING_BYTES_PER_ELEMENT_
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (17, LIT_MAGIC_STRING_GENERATOR_FUNCTION_UL)
#elif JERRY_BUILTIN_NUMBER
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (17, LIT_MAGIC_STRING_NEGATIVE_INFINITY_U)
#elif JERRY_BUILTIN_TYPEDARRAY
#elif JERRY_BUILTIN_SHAREDARRAYBUFFER
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (17, LIT_MAGIC_STRING_SHARED_ARRAY_BUFFER_UL)
#elif JERRY_BUILTIN_TYPEDARRAY
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (17, LIT_MAGIC_STRING_UINT8_CLAMPED_ARRAY_UL)
#elif JERRY_BUILTIN_DATE
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (17, LIT_MAGIC_STRING_GET_TIMEZONE_OFFSET_UL)
#else