Reduce code duplication in the TypedArray implementations (#2319)

This patch was done in cooperation with Tamás Kéri.

JerryScript-DCO-1.0-Signed-off-by: Mátyás Mustoha mmatyas@inf.u-szeged.hu
This commit is contained in:
Mátyás Mustoha
2018-05-18 02:38:41 +02:00
committed by yichoi
parent 27dcfa51e1
commit 0415d74a74
30 changed files with 448 additions and 528 deletions
@@ -17,20 +17,10 @@
* Float32Array prototype description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.3.4 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR,
ECMA_BUILTIN_ID_FLOAT32ARRAY,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
/* ES2015 22.2.6.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
4,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 4
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_FLOAT32ARRAY
#include "ecma-builtin-typedarray-prototype-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -30,6 +30,8 @@
#define BUILTIN_UNDERSCORED_ID float32array
#include "ecma-builtin-internal-routines-template.inc.h"
#include "ecma-builtin-typedarray-helpers.h"
/** \addtogroup ecma ECMA
* @{
*
@@ -63,18 +65,8 @@ ecma_value_t
ecma_builtin_float32array_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
ecma_length_t arguments_list_len) /**< number of arguments */
{
JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL);
ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_FLOAT32ARRAY_PROTOTYPE);
ecma_value_t val = ecma_op_create_typedarray (arguments_list_p,
arguments_list_len,
prototype_obj_p,
2,
LIT_MAGIC_STRING_FLOAT32_ARRAY_UL);
ecma_deref_object (prototype_obj_p);
return val;
return ecma_typedarray_helper_dispatch_construct (arguments_list_p, arguments_list_len,
ECMA_BUILTIN_ID_FLOAT32ARRAY);
} /* ecma_builtin_float32array_dispatch_construct */
/**
@@ -17,35 +17,11 @@
* Float32Array description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
4,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_FLOAT32_ARRAY_UL,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.2 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_FLOAT32ARRAY_PROTOTYPE,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 4
#define TYPEDARRAY_MAGIC_STRING_ID LIT_MAGIC_STRING_FLOAT32_ARRAY_UL
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_FLOAT32ARRAY_PROTOTYPE
#include "ecma-builtin-typedarray-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -17,22 +17,12 @@
* Float64Array prototype description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
/* ES2015 22.2.3.4 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR,
ECMA_BUILTIN_ID_FLOAT64ARRAY,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
/* ES2015 22.2.6.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
8,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 8
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_FLOAT64ARRAY
#include "ecma-builtin-typedarray-prototype-template.inc.h"
#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -31,6 +31,8 @@
#define BUILTIN_UNDERSCORED_ID float64array
#include "ecma-builtin-internal-routines-template.inc.h"
#include "ecma-builtin-typedarray-helpers.h"
/** \addtogroup ecma ECMA
* @{
*
@@ -64,18 +66,8 @@ ecma_value_t
ecma_builtin_float64array_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
ecma_length_t arguments_list_len) /**< number of arguments */
{
JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL);
ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_FLOAT64ARRAY_PROTOTYPE);
ecma_value_t val = ecma_op_create_typedarray (arguments_list_p,
arguments_list_len,
prototype_obj_p,
3,
LIT_MAGIC_STRING_FLOAT64_ARRAY_UL);
ecma_deref_object (prototype_obj_p);
return val;
return ecma_typedarray_helper_dispatch_construct (arguments_list_p, arguments_list_len,
ECMA_BUILTIN_ID_FLOAT64ARRAY);
} /* ecma_builtin_float64array_dispatch_construct */
/**
@@ -17,37 +17,13 @@
* Float64Array description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
8,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_FLOAT64_ARRAY_UL,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.2 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_FLOAT64ARRAY_PROTOTYPE,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 8
#define TYPEDARRAY_MAGIC_STRING_ID LIT_MAGIC_STRING_FLOAT64_ARRAY_UL
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_FLOAT64ARRAY_PROTOTYPE
#include "ecma-builtin-typedarray-template.inc.h"
#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -17,20 +17,10 @@
* Int16Array prototype description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.3.4 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR,
ECMA_BUILTIN_ID_INT16ARRAY,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
/* ES2015 22.2.6.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
2,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 2
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_INT16ARRAY
#include "ecma-builtin-typedarray-prototype-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -30,6 +30,8 @@
#define BUILTIN_UNDERSCORED_ID int16array
#include "ecma-builtin-internal-routines-template.inc.h"
#include "ecma-builtin-typedarray-helpers.h"
/** \addtogroup ecma ECMA
* @{
*
@@ -63,18 +65,8 @@ ecma_value_t
ecma_builtin_int16array_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
ecma_length_t arguments_list_len) /**< number of arguments */
{
JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL);
ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_INT16ARRAY_PROTOTYPE);
ecma_value_t val = ecma_op_create_typedarray (arguments_list_p,
arguments_list_len,
prototype_obj_p,
1,
LIT_MAGIC_STRING_INT16_ARRAY_UL);
ecma_deref_object (prototype_obj_p);
return val;
return ecma_typedarray_helper_dispatch_construct (arguments_list_p, arguments_list_len,
ECMA_BUILTIN_ID_INT16ARRAY);
} /* ecma_builtin_int16array_dispatch_construct */
/**
@@ -17,35 +17,11 @@
* Int16Array description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
2,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_INT16_ARRAY_UL,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.2 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_INT16ARRAY_PROTOTYPE,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 2
#define TYPEDARRAY_MAGIC_STRING_ID LIT_MAGIC_STRING_INT16_ARRAY_UL
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_INT16ARRAY_PROTOTYPE
#include "ecma-builtin-typedarray-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -17,20 +17,10 @@
* Int32Array prototype description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.3.4 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR,
ECMA_BUILTIN_ID_INT32ARRAY,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
/* ES2015 22.2.6.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
4,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 4
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_INT32ARRAY
#include "ecma-builtin-typedarray-prototype-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -30,6 +30,8 @@
#define BUILTIN_UNDERSCORED_ID int32array
#include "ecma-builtin-internal-routines-template.inc.h"
#include "ecma-builtin-typedarray-helpers.h"
/** \addtogroup ecma ECMA
* @{
*
@@ -63,18 +65,8 @@ ecma_value_t
ecma_builtin_int32array_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
ecma_length_t arguments_list_len) /**< number of arguments */
{
JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL);
ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_INT32ARRAY_PROTOTYPE);
ecma_value_t val = ecma_op_create_typedarray (arguments_list_p,
arguments_list_len,
prototype_obj_p,
2,
LIT_MAGIC_STRING_INT32_ARRAY_UL);
ecma_deref_object (prototype_obj_p);
return val;
return ecma_typedarray_helper_dispatch_construct (arguments_list_p, arguments_list_len,
ECMA_BUILTIN_ID_INT32ARRAY);
} /* ecma_builtin_int32array_dispatch_construct */
/**
@@ -17,35 +17,11 @@
* Int32Array description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
4,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_INT32_ARRAY_UL,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.2 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_INT32ARRAY_PROTOTYPE,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 4
#define TYPEDARRAY_MAGIC_STRING_ID LIT_MAGIC_STRING_INT32_ARRAY_UL
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_INT32ARRAY_PROTOTYPE
#include "ecma-builtin-typedarray-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -17,20 +17,10 @@
* Int8Array prototype description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.3.4 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR,
ECMA_BUILTIN_ID_INT8ARRAY,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
/* ES2015 22.2.6.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
1,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 1
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_INT8ARRAY
#include "ecma-builtin-typedarray-prototype-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -30,6 +30,8 @@
#define BUILTIN_UNDERSCORED_ID int8array
#include "ecma-builtin-internal-routines-template.inc.h"
#include "ecma-builtin-typedarray-helpers.h"
/** \addtogroup ecma ECMA
* @{
*
@@ -63,18 +65,8 @@ ecma_value_t
ecma_builtin_int8array_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
ecma_length_t arguments_list_len) /**< number of arguments */
{
JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL);
ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_INT8ARRAY_PROTOTYPE);
ecma_value_t val = ecma_op_create_typedarray (arguments_list_p,
arguments_list_len,
prototype_obj_p,
0,
LIT_MAGIC_STRING_INT8_ARRAY_UL);
ecma_deref_object (prototype_obj_p);
return val;
return ecma_typedarray_helper_dispatch_construct (arguments_list_p, arguments_list_len,
ECMA_BUILTIN_ID_INT8ARRAY);
} /* ecma_builtin_int8array_dispatch_construct */
/**
@@ -17,35 +17,11 @@
* Int8Array description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
1,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_INT8_ARRAY_UL,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.2 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_INT8ARRAY_PROTOTYPE,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 1
#define TYPEDARRAY_MAGIC_STRING_ID LIT_MAGIC_STRING_INT8_ARRAY_UL
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_INT8ARRAY_PROTOTYPE
#include "ecma-builtin-typedarray-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -0,0 +1,197 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "ecma-builtin-typedarray-helpers.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
#include "ecma-builtins.h"
#include "ecma-gc.h"
#include "ecma-typedarray-object.h"
#define ECMA_BUILTINS_INTERNAL
#include "ecma-builtins-internal.h"
/**
* Returns true if the builtin is a TypedArray type.
*
* @return bool
*/
bool
ecma_typedarray_helper_is_typedarray (uint8_t builtin_id) /**< the builtin id of a type **/
{
switch (builtin_id)
{
case ECMA_BUILTIN_ID_INT8ARRAY:
case ECMA_BUILTIN_ID_UINT8ARRAY:
case ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY:
case ECMA_BUILTIN_ID_INT16ARRAY:
case ECMA_BUILTIN_ID_UINT16ARRAY:
case ECMA_BUILTIN_ID_INT32ARRAY:
case ECMA_BUILTIN_ID_UINT32ARRAY:
case ECMA_BUILTIN_ID_FLOAT32ARRAY:
#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
case ECMA_BUILTIN_ID_FLOAT64ARRAY:
#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
{
return true;
}
default:
{
return false;
}
}
} /* ecma_typedarray_helper_is_typedarray */
/**
* Get the element shift size of a TypedArray type.
*
* @return uint8_t
*/
uint8_t
ecma_typedarray_helper_get_shift_size (uint8_t builtin_id) /**< the builtin id of the typedarray **/
{
switch (builtin_id)
{
case ECMA_BUILTIN_ID_INT8ARRAY:
case ECMA_BUILTIN_ID_UINT8ARRAY:
case ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY:
{
return 0;
}
case ECMA_BUILTIN_ID_INT16ARRAY:
case ECMA_BUILTIN_ID_UINT16ARRAY:
{
return 1;
}
case ECMA_BUILTIN_ID_INT32ARRAY:
case ECMA_BUILTIN_ID_UINT32ARRAY:
case ECMA_BUILTIN_ID_FLOAT32ARRAY:
{
return 2;
}
#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
case ECMA_BUILTIN_ID_FLOAT64ARRAY:
{
return 3;
}
#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
default:
{
JERRY_ASSERT (false);
return ECMA_BUILTIN_ID__COUNT;
}
}
} /* ecma_typedarray_helper_get_shift_size */
/**
* Get the magic string of a TypedArray type.
*
* @return uint8_t
*/
uint8_t
ecma_typedarray_helper_get_magic_string (uint8_t builtin_id) /**< the builtin id of the typedarray **/
{
#define TYPEDARRAY_ID_CASE(builtin_id, magic_id) \
case builtin_id: \
{ \
return magic_id; \
}
switch (builtin_id)
{
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_INT8ARRAY, LIT_MAGIC_STRING_INT8_ARRAY_UL)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_UINT8ARRAY, LIT_MAGIC_STRING_UINT8_ARRAY_UL)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY, LIT_MAGIC_STRING_UINT8_CLAMPED_ARRAY_UL)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_INT16ARRAY, LIT_MAGIC_STRING_INT16_ARRAY_UL)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_UINT16ARRAY, LIT_MAGIC_STRING_UINT16_ARRAY_UL)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_INT32ARRAY, LIT_MAGIC_STRING_INT32_ARRAY_UL)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_UINT32ARRAY, LIT_MAGIC_STRING_UINT32_ARRAY_UL)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_FLOAT32ARRAY, LIT_MAGIC_STRING_FLOAT32_ARRAY_UL)
#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_FLOAT64ARRAY, LIT_MAGIC_STRING_FLOAT64_ARRAY_UL)
#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
default:
{
JERRY_ASSERT (false);
return LIT_MAGIC_STRING__COUNT;
}
}
#undef TYPEDARRAY_ID_CASE
} /* ecma_typedarray_helper_get_magic_string */
/**
* Get the prototype ID of a TypedArray type.
*
* @return uint8_t
*/
uint8_t
ecma_typedarray_helper_get_prototype_id (uint8_t builtin_id) /**< the builtin id of the typedarray **/
{
#define TYPEDARRAY_ID_CASE(builtin_id) \
case builtin_id: \
{ \
return builtin_id ## _PROTOTYPE; \
}
switch (builtin_id)
{
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_INT8ARRAY)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_UINT8ARRAY)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_INT16ARRAY)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_UINT16ARRAY)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_INT32ARRAY)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_UINT32ARRAY)
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_FLOAT32ARRAY)
#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
TYPEDARRAY_ID_CASE (ECMA_BUILTIN_ID_FLOAT64ARRAY)
#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
default:
{
JERRY_ASSERT (false);
return ECMA_BUILTIN_ID__COUNT;
}
}
#undef TYPEDARRAY_ID_CASE
} /* ecma_typedarray_helper_get_prototype_id */
/**
* Common implementation of the [[Construct]] call of TypedArrays.
*
* @return ecma value of the new TypedArray object
* Returned value must be freed with ecma_free_value
*/
ecma_value_t
ecma_typedarray_helper_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
ecma_length_t arguments_list_len, /**< number of arguments */
uint8_t builtin_id) /**< the builtin id of the typedarray */
{
JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL);
JERRY_ASSERT (ecma_typedarray_helper_is_typedarray (builtin_id));
ecma_object_t *prototype_obj_p = ecma_builtin_get (ecma_typedarray_helper_get_prototype_id (builtin_id));
ecma_value_t val = ecma_op_create_typedarray (arguments_list_p,
arguments_list_len,
prototype_obj_p,
ecma_typedarray_helper_get_shift_size (builtin_id),
ecma_typedarray_helper_get_magic_string (builtin_id));
ecma_deref_object (prototype_obj_p);
return val;
} /* ecma_typedarray_helper_dispatch_construct */
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
@@ -0,0 +1,45 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ECMA_TYPEDARRAY_HELPERS_H
#define ECMA_TYPEDARRAY_HELPERS_H
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
#include "ecma-globals.h"
/** \addtogroup ecma ECMA
* @{
*
* \addtogroup ecmabuiltinhelpers ECMA TypedArray helper operations
* @{
*/
bool ecma_typedarray_helper_is_typedarray (uint8_t builtin_id);
uint8_t ecma_typedarray_helper_get_shift_size (uint8_t builtin_id);
uint8_t ecma_typedarray_helper_get_magic_string (uint8_t builtin_id);
uint8_t ecma_typedarray_helper_get_prototype_id (uint8_t builtin_id);
ecma_value_t
ecma_typedarray_helper_dispatch_construct (const ecma_value_t *arguments_list_p,
ecma_length_t arguments_list_len,
uint8_t builtin_id);
/**
* @}
* @}
*/
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#endif /* !ECMA_TYPEDARRAY_HELPERS_H */
@@ -0,0 +1,43 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
#ifndef TYPEDARRAY_BYTES_PER_ELEMENT
# error "Please define TYPEDARRAY_BYTES_PER_ELEMENT"
#endif /* !TYPEDARRAY_BYTES_PER_ELEMENT */
#ifndef TYPEDARRAY_BUILTIN_ID
# error "Please define TYPEDARRAY_BUILTIN_ID"
#endif /* !TYPEDARRAY_BUILTIN_ID */
#include "ecma-builtin-helpers-macro-defines.inc.h"
/* ES2015 22.2.3.4 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR,
TYPEDARRAY_BUILTIN_ID,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
/* ES2015 22.2.6.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
TYPEDARRAY_BYTES_PER_ELEMENT,
ECMA_PROPERTY_FIXED)
#include "ecma-builtin-helpers-macro-undefs.inc.h"
#undef TYPEDARRAY_BUILTIN_ID
#undef TYPEDARRAY_BYTES_PER_ELEMENT
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
@@ -0,0 +1,63 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
#ifndef TYPEDARRAY_BYTES_PER_ELEMENT
# error "Please define TYPEDARRAY_BYTES_PER_ELEMENT"
#endif /* !TYPEDARRAY_BYTES_PER_ELEMENT */
#ifndef TYPEDARRAY_MAGIC_STRING_ID
# error "Please define TYPEDARRAY_MAGIC_STRING_ID"
#endif /* !TYPEDARRAY_MAGIC_STRING_ID */
#ifndef TYPEDARRAY_BUILTIN_ID
# error "Please define TYPEDARRAY_BUILTIN_ID"
#endif /* !TYPEDARRAY_BUILTIN_ID */
#include "ecma-builtin-helpers-macro-defines.inc.h"
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
TYPEDARRAY_BYTES_PER_ELEMENT,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
STRING_VALUE (LIT_MAGIC_STRING_NAME,
TYPEDARRAY_MAGIC_STRING_ID,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.2 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
TYPEDARRAY_BUILTIN_ID,
ECMA_PROPERTY_FIXED)
#include "ecma-builtin-helpers-macro-undefs.inc.h"
#undef TYPEDARRAY_BUILTIN_ID
#undef TYPEDARRAY_MAGIC_STRING_ID
#undef TYPEDARRAY_BYTES_PER_ELEMENT
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
@@ -32,6 +32,8 @@
#define BUILTIN_UNDERSCORED_ID typedarray
#include "ecma-builtin-internal-routines-template.inc.h"
#include "ecma-builtin-typedarray-helpers.h"
/** \addtogroup ecma ECMA
* @{
*
@@ -91,84 +93,16 @@ ecma_builtin_typedarray_from (ecma_value_t this_arg, /**< 'this' argument */
ecma_object_t *obj_p = ecma_get_object_from_value (this_arg);
uint8_t builtin_id = ecma_get_object_builtin_id (obj_p);
ecma_object_t *proto_p;
uint8_t element_size_shift;
lit_magic_string_id_t class_id;
switch (builtin_id)
const uint8_t builtin_id = ecma_get_object_builtin_id (obj_p);
if (!ecma_typedarray_helper_is_typedarray (builtin_id))
{
case ECMA_BUILTIN_ID_INT8ARRAY:
{
proto_p = ecma_builtin_get (ECMA_BUILTIN_ID_INT8ARRAY_PROTOTYPE);
element_size_shift = 0;
class_id = LIT_MAGIC_STRING_INT8_ARRAY_UL;
break;
}
case ECMA_BUILTIN_ID_UINT8ARRAY:
{
proto_p = ecma_builtin_get (ECMA_BUILTIN_ID_UINT8ARRAY_PROTOTYPE);
element_size_shift = 0;
class_id = LIT_MAGIC_STRING_UINT8_ARRAY_UL;
break;
}
case ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY:
{
proto_p = ecma_builtin_get (ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY_PROTOTYPE);
element_size_shift = 0;
class_id = LIT_MAGIC_STRING_UINT8_CLAMPED_ARRAY_UL;
break;
}
case ECMA_BUILTIN_ID_INT16ARRAY:
{
proto_p = ecma_builtin_get (ECMA_BUILTIN_ID_INT16ARRAY_PROTOTYPE);
element_size_shift = 1;
class_id = LIT_MAGIC_STRING_INT16_ARRAY_UL;
break;
}
case ECMA_BUILTIN_ID_UINT16ARRAY:
{
proto_p = ecma_builtin_get (ECMA_BUILTIN_ID_UINT16ARRAY_PROTOTYPE);
element_size_shift = 1;
class_id = LIT_MAGIC_STRING_UINT16_ARRAY_UL;
break;
}
case ECMA_BUILTIN_ID_INT32ARRAY:
{
proto_p = ecma_builtin_get (ECMA_BUILTIN_ID_INT32ARRAY_PROTOTYPE);
element_size_shift = 2;
class_id = LIT_MAGIC_STRING_INT32_ARRAY_UL;
break;
}
case ECMA_BUILTIN_ID_UINT32ARRAY:
{
proto_p = ecma_builtin_get (ECMA_BUILTIN_ID_UINT32ARRAY_PROTOTYPE);
element_size_shift = 2;
class_id = LIT_MAGIC_STRING_UINT32_ARRAY_UL;
break;
}
case ECMA_BUILTIN_ID_FLOAT32ARRAY:
{
proto_p = ecma_builtin_get (ECMA_BUILTIN_ID_FLOAT32ARRAY_PROTOTYPE);
element_size_shift = 2;
class_id = LIT_MAGIC_STRING_FLOAT32_ARRAY_UL;
break;
}
#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
case ECMA_BUILTIN_ID_FLOAT64ARRAY:
{
proto_p = ecma_builtin_get (ECMA_BUILTIN_ID_FLOAT64ARRAY_PROTOTYPE);
element_size_shift = 3;
class_id = LIT_MAGIC_STRING_FLOAT64_ARRAY_UL;
break;
}
#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
default:
{
return ecma_raise_type_error (ECMA_ERR_MSG ("'this' is not a typedarray constructor"));
}
return ecma_raise_type_error (ECMA_ERR_MSG ("'this' is not a typedarray constructor"));
}
ecma_object_t *proto_p = ecma_builtin_get (ecma_typedarray_helper_get_prototype_id (builtin_id));
const uint8_t element_size_shift = ecma_typedarray_helper_get_shift_size (builtin_id);
const lit_magic_string_id_t class_id = ecma_typedarray_helper_get_magic_string (builtin_id);
ecma_deref_object (proto_p);
return ecma_op_typedarray_from (source,
@@ -17,20 +17,10 @@
* Uint16Array prototype description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.3.4 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR,
ECMA_BUILTIN_ID_UINT16ARRAY,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
/* ES2015 22.2.6.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
2,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 2
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_UINT16ARRAY
#include "ecma-builtin-typedarray-prototype-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -30,6 +30,8 @@
#define BUILTIN_UNDERSCORED_ID uint16array
#include "ecma-builtin-internal-routines-template.inc.h"
#include "ecma-builtin-typedarray-helpers.h"
/** \addtogroup ecma ECMA
* @{
*
@@ -63,18 +65,8 @@ ecma_value_t
ecma_builtin_uint16array_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
ecma_length_t arguments_list_len) /**< number of arguments */
{
JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL);
ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_UINT16ARRAY_PROTOTYPE);
ecma_value_t val = ecma_op_create_typedarray (arguments_list_p,
arguments_list_len,
prototype_obj_p,
1,
LIT_MAGIC_STRING_UINT16_ARRAY_UL);
ecma_deref_object (prototype_obj_p);
return val;
return ecma_typedarray_helper_dispatch_construct (arguments_list_p, arguments_list_len,
ECMA_BUILTIN_ID_UINT16ARRAY);
} /* ecma_builtin_uint16array_dispatch_construct */
/**
@@ -17,35 +17,11 @@
* Uint16Array description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
2,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_UINT16_ARRAY_UL,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.2 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_UINT16ARRAY_PROTOTYPE,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 2
#define TYPEDARRAY_MAGIC_STRING_ID LIT_MAGIC_STRING_UINT16_ARRAY_UL
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_UINT16ARRAY_PROTOTYPE
#include "ecma-builtin-typedarray-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -17,20 +17,10 @@
* Uint32Array prototype description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.3.4 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR,
ECMA_BUILTIN_ID_UINT32ARRAY,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
/* ES2015 22.2.6.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
4,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 4
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_UINT32ARRAY
#include "ecma-builtin-typedarray-prototype-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -17,35 +17,11 @@
* Uint32Array description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
4,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_UINT32_ARRAY_UL,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.2 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_UINT32ARRAY_PROTOTYPE,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 4
#define TYPEDARRAY_MAGIC_STRING_ID LIT_MAGIC_STRING_UINT32_ARRAY_UL
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_UINT32ARRAY_PROTOTYPE
#include "ecma-builtin-typedarray-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -17,20 +17,10 @@
* Uint8Array prototype description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.3.4 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR,
ECMA_BUILTIN_ID_UINT8ARRAY,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
/* ES2015 22.2.6.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
1,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 1
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_UINT8ARRAY
#include "ecma-builtin-typedarray-prototype-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -30,6 +30,8 @@
#define BUILTIN_UNDERSCORED_ID uint8array
#include "ecma-builtin-internal-routines-template.inc.h"
#include "ecma-builtin-typedarray-helpers.h"
/** \addtogroup ecma ECMA
* @{
*
@@ -63,18 +65,8 @@ ecma_value_t
ecma_builtin_uint8array_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */
ecma_length_t arguments_list_len) /**< number of arguments */
{
JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL);
ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_UINT8ARRAY_PROTOTYPE);
ecma_value_t val = ecma_op_create_typedarray (arguments_list_p,
arguments_list_len,
prototype_obj_p,
0,
LIT_MAGIC_STRING_UINT8_ARRAY_UL);
ecma_deref_object (prototype_obj_p);
return val;
return ecma_typedarray_helper_dispatch_construct (arguments_list_p, arguments_list_len,
ECMA_BUILTIN_ID_UINT8ARRAY);
} /* ecma_builtin_uint8array_dispatch_construct */
/**
@@ -17,35 +17,11 @@
* Uint8Array description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
1,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_UINT8_ARRAY_UL,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.2 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_UINT8ARRAY_PROTOTYPE,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 1
#define TYPEDARRAY_MAGIC_STRING_ID LIT_MAGIC_STRING_UINT8_ARRAY_UL
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_UINT8ARRAY_PROTOTYPE
#include "ecma-builtin-typedarray-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -17,20 +17,10 @@
* Uint8ClampedArray prototype description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.3.4 */
OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR,
ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
/* ES2015 22.2.6.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
1,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 1
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY
#include "ecma-builtin-typedarray-prototype-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"
@@ -17,35 +17,11 @@
* Uint8ClampedArray description
*/
#include "ecma-builtin-helpers-macro-defines.inc.h"
#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.1 */
NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U,
1,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH,
3,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5 */
STRING_VALUE (LIT_MAGIC_STRING_NAME,
LIT_MAGIC_STRING_UINT8_CLAMPED_ARRAY_UL,
ECMA_PROPERTY_FIXED)
/* ES2015 22.2.5.2 */
OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE,
ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY_PROTOTYPE,
ECMA_PROPERTY_FIXED)
#define TYPEDARRAY_BYTES_PER_ELEMENT 1
#define TYPEDARRAY_MAGIC_STRING_ID LIT_MAGIC_STRING_UINT8_CLAMPED_ARRAY_UL
#define TYPEDARRAY_BUILTIN_ID ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY_PROTOTYPE
#include "ecma-builtin-typedarray-template.inc.h"
#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */
#include "ecma-builtin-helpers-macro-undefs.inc.h"