mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
Add guards for SharedArrayBuffer (#4723)
JerryScript-DCO-1.0-Signed-off-by: Gergo Csizi csgergo92@gmail.com
This commit is contained in:
parent
a25b824509
commit
b7dead7b05
@ -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 */
|
||||
|
||||
/**
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user