diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.inc.h index 23149f33b..e6cbe62bb 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.inc.h @@ -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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.c index dca9a87a4..0e0978e4f 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.c +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.c @@ -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 */ /** diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.inc.h index 259bf6afd..eb007ece2 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.inc.h @@ -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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.inc.h index 52fccbd2a..0912c0a06 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.c index b825991c3..bb58d0a83 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.c +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.c @@ -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 */ /** diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.inc.h index 4e4299790..8a90194b4 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.inc.h @@ -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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.inc.h index 3455e12c4..8cfcc2e9e 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.c index 302a75908..ddfad2733 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.c +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.c @@ -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 */ /** diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.inc.h index 887b446f6..e303f0fa6 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.inc.h @@ -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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.inc.h index 5867495be..d885bfb8d 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.c index af4b420dc..dbe045b5e 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.c +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.c @@ -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 */ /** diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.inc.h index f45d486a4..37683ff70 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.inc.h @@ -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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.inc.h index 29a084220..63832d98c 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.c index d076a15c0..3a78a382a 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.c +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.c @@ -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 */ /** diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.inc.h index d88bb0a32..ac204ba91 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.inc.h @@ -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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-helpers.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-helpers.c new file mode 100644 index 000000000..617005ce7 --- /dev/null +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-helpers.c @@ -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 */ diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-helpers.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-helpers.h new file mode 100644 index 000000000..bb9478a7a --- /dev/null +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-helpers.h @@ -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 */ diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype-template.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype-template.inc.h new file mode 100644 index 000000000..83527a9c6 --- /dev/null +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype-template.inc.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 */ diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-template.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-template.inc.h new file mode 100644 index 000000000..d81a0c077 --- /dev/null +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-template.inc.h @@ -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 */ diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.c index 5485a341f..77c00c626 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.c +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.c @@ -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, diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.inc.h index f77cbfd8d..a93b54d79 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.inc.h @@ -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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.c index 5f29a4e1f..62c17a41e 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.c +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.c @@ -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 */ /** diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.inc.h index d25cc9cc1..ae96f95b7 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.inc.h @@ -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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.inc.h index 9d730d286..ea217de79 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.inc.h index ba1eab907..cf9d46677 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.inc.h index d55b45061..30543dc68 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.c index 71c89cdab..0c42cee46 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.c +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.c @@ -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 */ /** diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.inc.h index ed36f15bf..1555f8910 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.inc.h @@ -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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.inc.h index 014922b00..3dc17c455 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.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" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.inc.h index fe02d87fd..5cb9c6cca 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.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"