aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZidong Jiang <zidong.jiang@intel.com>2017-01-24 22:06:31 +0800
committerLászló Langó <llango.u-szeged@partner.samsung.com>2017-01-24 15:06:31 +0100
commit0547b31c163e2137df7ec0c9b3e0775d52ce7fef (patch)
tree1b6dc269acaf88b4631bbaacd5a517a7157db839
parent124582793fbff723c01de2cdd21f482f4395f987 (diff)
[ES2015][TypedArray] add other 8 types (#1532)
Add Uint8Array, Int16Array Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array and Uint8ClampedArray. Support the conversion between any pairs of those types. JerryScript-DCO-1.0-Signed-off-by: Zidong Jiang zidong.jiang@intel.com
-rw-r--r--jerry-core/CMakeLists.txt25
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-global.inc.h35
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c8
-rw-r--r--jerry-core/ecma/builtin-objects/ecma-builtins.inc.h114
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.c43
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.inc.h51
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.c86
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.inc.h66
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.c44
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.inc.h51
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.c88
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.inc.h66
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.c43
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.inc.h51
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.c86
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.inc.h66
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.c43
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.inc.h51
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.c86
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.inc.h66
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.c (renamed from jerry-core/ecma/builtin-objects/ecma-builtin-int8array-prototype.c)2
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.inc.h (renamed from jerry-core/ecma/builtin-objects/ecma-builtin-int8array-prototype.inc.h)0
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.c (renamed from jerry-core/ecma/builtin-objects/ecma-builtin-int8array.c)16
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.inc.h (renamed from jerry-core/ecma/builtin-objects/ecma-builtin-int8array.inc.h)0
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.c (renamed from jerry-core/ecma/builtin-objects/ecma-builtin-typedarray-prototype.c)2
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.inc.h (renamed from jerry-core/ecma/builtin-objects/ecma-builtin-typedarray-prototype.inc.h)0
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.c (renamed from jerry-core/ecma/builtin-objects/ecma-builtin-typedarray.c)8
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.inc.h (renamed from jerry-core/ecma/builtin-objects/ecma-builtin-typedarray.inc.h)0
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.c43
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.inc.h51
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.c86
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.inc.h66
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.c43
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.inc.h51
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.c86
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.inc.h66
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.c43
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.inc.h51
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.c86
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.inc.h66
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.c43
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.inc.h51
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.c86
-rw-r--r--jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.inc.h66
-rw-r--r--jerry-core/ecma/operations/ecma-typedarray-object.c254
-rw-r--r--jerry-core/ecma/operations/ecma-typedarray-object.h2
-rw-r--r--jerry-core/lit/lit-magic-strings.inc.h2
-rw-r--r--tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-010.js29
-rw-r--r--tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-011.js21
-rw-r--r--tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-012.js22
-rw-r--r--tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-013.js22
-rw-r--r--tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-014.js24
-rw-r--r--tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-015.js24
-rw-r--r--tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-016.js24
-rw-r--r--tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-017.js22
-rw-r--r--tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-018.js22
-rw-r--r--tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-019.js22
-rw-r--r--tests/jerry-test-suite/es2015/22/22.02/22.02.05/22.02.05-001.js9
-rw-r--r--tests/jerry-test-suite/es2015/22/22.02/22.02.06/22.02.06-001.js8
59 files changed, 2607 insertions, 81 deletions
diff --git a/jerry-core/CMakeLists.txt b/jerry-core/CMakeLists.txt
index e9f2380c..d4f6107b 100644
--- a/jerry-core/CMakeLists.txt
+++ b/jerry-core/CMakeLists.txt
@@ -51,6 +51,7 @@ set(INCLUDE_CORE
"${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/ecma/base"
"${CMAKE_CURRENT_SOURCE_DIR}/ecma/builtin-objects"
+ "${CMAKE_CURRENT_SOURCE_DIR}/ecma/builtin-objects/typedarray"
"${CMAKE_CURRENT_SOURCE_DIR}/ecma/operations"
"${CMAKE_CURRENT_SOURCE_DIR}/jcontext"
"${CMAKE_CURRENT_SOURCE_DIR}/jmem"
@@ -62,22 +63,24 @@ set(INCLUDE_CORE
# Sources
# Jerry core
-file(GLOB SOURCE_CORE_API *.c)
-file(GLOB SOURCE_CORE_ECMA_BASE ecma/base/*.c)
-file(GLOB SOURCE_CORE_ECMA_BUILTINS ecma/builtin-objects/*.c)
-file(GLOB SOURCE_CORE_ECMA_OPERATIONS ecma/operations/*.c)
-file(GLOB SOURCE_CORE_JCONTEXT jcontext/*.c)
-file(GLOB SOURCE_CORE_JMEM jmem/*.c)
-file(GLOB SOURCE_CORE_JRT jrt/*.c)
-file(GLOB SOURCE_CORE_LIT lit/*.c)
-file(GLOB SOURCE_CORE_PARSER_JS parser/js/*.c)
-file(GLOB SOURCE_CORE_PARSER_REGEXP parser/regexp/*.c)
-file(GLOB SOURCE_CORE_VM vm/*.c)
+file(GLOB SOURCE_CORE_API *.c)
+file(GLOB SOURCE_CORE_ECMA_BASE ecma/base/*.c)
+file(GLOB SOURCE_CORE_ECMA_BUILTINS ecma/builtin-objects/*.c)
+file(GLOB SOURCE_CORE_ECMA_BUILTINS_TYPEDARRAY ecma/builtin-objects/typedarray/*.c)
+file(GLOB SOURCE_CORE_ECMA_OPERATIONS ecma/operations/*.c)
+file(GLOB SOURCE_CORE_JCONTEXT jcontext/*.c)
+file(GLOB SOURCE_CORE_JMEM jmem/*.c)
+file(GLOB SOURCE_CORE_JRT jrt/*.c)
+file(GLOB SOURCE_CORE_LIT lit/*.c)
+file(GLOB SOURCE_CORE_PARSER_JS parser/js/*.c)
+file(GLOB SOURCE_CORE_PARSER_REGEXP parser/regexp/*.c)
+file(GLOB SOURCE_CORE_VM vm/*.c)
set(SOURCE_CORE_FILES
${SOURCE_CORE_API}
${SOURCE_CORE_ECMA_BASE}
${SOURCE_CORE_ECMA_BUILTINS}
+ ${SOURCE_CORE_ECMA_BUILTINS_TYPEDARRAY}
${SOURCE_CORE_ECMA_OPERATIONS}
${SOURCE_CORE_JCONTEXT}
${SOURCE_CORE_JMEM}
diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-global.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-global.inc.h
index d9cb27d7..7c9e0269 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtin-global.inc.h
+++ b/jerry-core/ecma/builtin-objects/ecma-builtin-global.inc.h
@@ -170,6 +170,41 @@ OBJECT_VALUE (LIT_MAGIC_STRING_ARRAY_BUFFER_UL,
OBJECT_VALUE (LIT_MAGIC_STRING_INT8_ARRAY_UL,
ECMA_BUILTIN_ID_INT8ARRAY,
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
+
+OBJECT_VALUE (LIT_MAGIC_STRING_UINT8_ARRAY_UL,
+ ECMA_BUILTIN_ID_UINT8ARRAY,
+ ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
+
+OBJECT_VALUE (LIT_MAGIC_STRING_INT16_ARRAY_UL,
+ ECMA_BUILTIN_ID_INT16ARRAY,
+ ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
+
+OBJECT_VALUE (LIT_MAGIC_STRING_UINT16_ARRAY_UL,
+ ECMA_BUILTIN_ID_UINT16ARRAY,
+ ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
+
+OBJECT_VALUE (LIT_MAGIC_STRING_INT32_ARRAY_UL,
+ ECMA_BUILTIN_ID_INT32ARRAY,
+ ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
+
+OBJECT_VALUE (LIT_MAGIC_STRING_UINT32_ARRAY_UL,
+ ECMA_BUILTIN_ID_UINT32ARRAY,
+ ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
+
+OBJECT_VALUE (LIT_MAGIC_STRING_FLOAT32_ARRAY_UL,
+ ECMA_BUILTIN_ID_FLOAT32ARRAY,
+ ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
+
+#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
+OBJECT_VALUE (LIT_MAGIC_STRING_FLOAT64_ARRAY_UL,
+ ECMA_BUILTIN_ID_FLOAT64ARRAY,
+ ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
+#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
+
+OBJECT_VALUE (LIT_MAGIC_STRING_UINT8_CLAMPED_ARRAY_UL,
+ ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY,
+ ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
+
#endif /* !CONFIG_DISABLE_ARRAYBUFFER_BUILTIN */
/* Routine properties:
* (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */
diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c
index 886fae30..4ec91262 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c
+++ b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c
@@ -82,9 +82,9 @@ ecma_builtin_helper_object_to_string (const ecma_value_t this_arg) /**< this arg
/* Building string "[object #type#]" where type is 'Undefined',
'Null' or one of possible object's classes.
- The string with null character is maximum 19 characters long. */
- const lit_utf8_size_t buffer_size = 19;
- JMEM_DEFINE_LOCAL_ARRAY (str_buffer, buffer_size, lit_utf8_byte_t);
+ The string with null character is maximum 27 characters long. */
+ const lit_utf8_size_t buffer_size = 27;
+ lit_utf8_byte_t str_buffer[buffer_size];
lit_utf8_byte_t *buffer_ptr = str_buffer;
@@ -106,8 +106,6 @@ ecma_builtin_helper_object_to_string (const ecma_value_t this_arg) /**< this arg
ret_string_p = ecma_new_ecma_string_from_utf8 (str_buffer, (lit_utf8_size_t) (buffer_ptr - str_buffer));
- JMEM_FINALIZE_LOCAL_ARRAY (str_buffer);
-
return ecma_make_string_value (ret_string_p);
} /* ecma_builtin_helper_object_to_string */
diff --git a/jerry-core/ecma/builtin-objects/ecma-builtins.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtins.inc.h
index 7654a308..75510ae2 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtins.inc.h
+++ b/jerry-core/ecma/builtin-objects/ecma-builtins.inc.h
@@ -349,6 +349,120 @@ BUILTIN (ECMA_BUILTIN_ID_INT8ARRAY,
true,
int8array)
+BUILTIN (ECMA_BUILTIN_ID_UINT8ARRAY_PROTOTYPE,
+ ECMA_OBJECT_TYPE_GENERAL,
+ ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
+ true,
+ true,
+ uint8array_prototype)
+
+BUILTIN (ECMA_BUILTIN_ID_UINT8ARRAY,
+ ECMA_OBJECT_TYPE_FUNCTION,
+ ECMA_BUILTIN_ID_TYPEDARRAY,
+ true,
+ true,
+ uint8array)
+
+BUILTIN (ECMA_BUILTIN_ID_INT16ARRAY_PROTOTYPE,
+ ECMA_OBJECT_TYPE_GENERAL,
+ ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
+ true,
+ true,
+ int16array_prototype)
+
+BUILTIN (ECMA_BUILTIN_ID_INT16ARRAY,
+ ECMA_OBJECT_TYPE_FUNCTION,
+ ECMA_BUILTIN_ID_TYPEDARRAY,
+ true,
+ true,
+ int16array)
+
+BUILTIN (ECMA_BUILTIN_ID_UINT16ARRAY_PROTOTYPE,
+ ECMA_OBJECT_TYPE_GENERAL,
+ ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
+ true,
+ true,
+ uint16array_prototype)
+
+BUILTIN (ECMA_BUILTIN_ID_UINT16ARRAY,
+ ECMA_OBJECT_TYPE_FUNCTION,
+ ECMA_BUILTIN_ID_TYPEDARRAY,
+ true,
+ true,
+ uint16array)
+
+BUILTIN (ECMA_BUILTIN_ID_INT32ARRAY_PROTOTYPE,
+ ECMA_OBJECT_TYPE_GENERAL,
+ ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
+ true,
+ true,
+ int32array_prototype)
+
+BUILTIN (ECMA_BUILTIN_ID_INT32ARRAY,
+ ECMA_OBJECT_TYPE_FUNCTION,
+ ECMA_BUILTIN_ID_TYPEDARRAY,
+ true,
+ true,
+ int32array)
+
+BUILTIN (ECMA_BUILTIN_ID_UINT32ARRAY_PROTOTYPE,
+ ECMA_OBJECT_TYPE_GENERAL,
+ ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
+ true,
+ true,
+ uint32array_prototype)
+
+BUILTIN (ECMA_BUILTIN_ID_UINT32ARRAY,
+ ECMA_OBJECT_TYPE_FUNCTION,
+ ECMA_BUILTIN_ID_TYPEDARRAY,
+ true,
+ true,
+ uint32array)
+
+BUILTIN (ECMA_BUILTIN_ID_FLOAT32ARRAY_PROTOTYPE,
+ ECMA_OBJECT_TYPE_GENERAL,
+ ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
+ true,
+ true,
+ float32array_prototype)
+
+BUILTIN (ECMA_BUILTIN_ID_FLOAT32ARRAY,
+ ECMA_OBJECT_TYPE_FUNCTION,
+ ECMA_BUILTIN_ID_TYPEDARRAY,
+ true,
+ true,
+ float32array)
+
+#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
+BUILTIN (ECMA_BUILTIN_ID_FLOAT64ARRAY_PROTOTYPE,
+ ECMA_OBJECT_TYPE_GENERAL,
+ ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
+ true,
+ true,
+ float64array_prototype)
+
+BUILTIN (ECMA_BUILTIN_ID_FLOAT64ARRAY,
+ ECMA_OBJECT_TYPE_FUNCTION,
+ ECMA_BUILTIN_ID_TYPEDARRAY,
+ true,
+ true,
+ float64array)
+#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
+
+BUILTIN (ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY_PROTOTYPE,
+ ECMA_OBJECT_TYPE_GENERAL,
+ ECMA_BUILTIN_ID_TYPEDARRAY_PROTOTYPE,
+ true,
+ true,
+ uint8clampedarray_prototype)
+
+BUILTIN (ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY,
+ ECMA_OBJECT_TYPE_FUNCTION,
+ ECMA_BUILTIN_ID_TYPEDARRAY,
+ true,
+ true,
+ uint8clampedarray)
+
#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
/* The Global object (15.1) */
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.c
new file mode 100644
index 00000000..b75fc6a0
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.c
@@ -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.
+ */
+
+#include "ecma-builtins.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-float32array-prototype.inc.h"
+#define BUILTIN_UNDERSCORED_ID float32array_prototype
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup float32arrayprototype ECMA Float32Array.prototype object built-in
+ * @{
+ */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..b3775d10
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.inc.h
@@ -0,0 +1,51 @@
+/* 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.
+ */
+
+/*
+ * Float32Array prototype description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.c
new file mode 100644
index 00000000..8585c7db
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.c
@@ -0,0 +1,86 @@
+/* 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-builtins.h"
+#include "ecma-exceptions.h"
+#include "ecma-gc.h"
+#include "ecma-globals.h"
+#include "ecma-helpers.h"
+#include "ecma-typedarray-object.h"
+#include "jrt.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-float32array.inc.h"
+#define BUILTIN_UNDERSCORED_ID float32array
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup float32array ECMA Float32Array object built-in
+ * @{
+ */
+
+/**
+ * Handle calling [[Call]] of Float32Array
+ *
+ * @return ecma value
+ */
+ecma_value_t
+ecma_builtin_float32array_dispatch_call (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);
+
+ return ecma_raise_type_error (ECMA_ERR_MSG ("Float32Array cannot be directly called"));
+} /* ecma_builtin_float32array_dispatch_call */
+
+/**
+ * Handle calling [[Construct]] of Float32Array
+ *
+ * @return ecma value
+ */
+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;
+} /* ecma_builtin_float32array_dispatch_construct */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..45ec43bc
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.inc.h
@@ -0,0 +1,66 @@
+/* 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.
+ */
+
+/*
+ * Float32Array description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.c
new file mode 100644
index 00000000..1928318b
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.c
@@ -0,0 +1,44 @@
+/* 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-builtins.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-float64array-prototype.inc.h"
+#define BUILTIN_UNDERSCORED_ID float64array_prototype
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup float64arrayprototype ECMA Float64Array.prototype object built-in
+ * @{
+ */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..8bcfb008
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.inc.h
@@ -0,0 +1,51 @@
+/* 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.
+ */
+
+/*
+ * Float64Array prototype description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.c
new file mode 100644
index 00000000..4d5819ef
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.c
@@ -0,0 +1,88 @@
+/* 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-builtins.h"
+#include "ecma-exceptions.h"
+#include "ecma-gc.h"
+#include "ecma-globals.h"
+#include "ecma-helpers.h"
+#include "ecma-typedarray-object.h"
+#include "jrt.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-float64array.inc.h"
+#define BUILTIN_UNDERSCORED_ID float64array
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup float64array ECMA Float64Array object built-in
+ * @{
+ */
+
+/**
+ * Handle calling [[Call]] of Float64Array
+ *
+ * @return ecma value
+ */
+ecma_value_t
+ecma_builtin_float64array_dispatch_call (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);
+
+ return ecma_raise_type_error (ECMA_ERR_MSG ("Float64Array cannot be directly called"));
+} /* ecma_builtin_float64array_dispatch_call */
+
+/**
+ * Handle calling [[Construct]] of Float64Array
+ *
+ * @return ecma value
+ */
+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;
+} /* ecma_builtin_float64array_dispatch_construct */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..8be4d019
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.inc.h
@@ -0,0 +1,66 @@
+/* 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.
+ */
+
+/*
+ * Float64Array description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.c
new file mode 100644
index 00000000..910ca6f6
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.c
@@ -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.
+ */
+
+#include "ecma-builtins.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-int16array-prototype.inc.h"
+#define BUILTIN_UNDERSCORED_ID int16array_prototype
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup int16arrayprototype ECMA Int16Array.prototype object built-in
+ * @{
+ */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..fa6027ba
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.inc.h
@@ -0,0 +1,51 @@
+/* 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.
+ */
+
+/*
+ * Int16Array prototype description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.c
new file mode 100644
index 00000000..9b945419
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.c
@@ -0,0 +1,86 @@
+/* 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-builtins.h"
+#include "ecma-exceptions.h"
+#include "ecma-gc.h"
+#include "ecma-globals.h"
+#include "ecma-helpers.h"
+#include "ecma-typedarray-object.h"
+#include "jrt.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-int16array.inc.h"
+#define BUILTIN_UNDERSCORED_ID int16array
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup int64array ECMA Int16Array object built-in
+ * @{
+ */
+
+/**
+ * Handle calling [[Call]] of Int16Array
+ *
+ * @return ecma value
+ */
+ecma_value_t
+ecma_builtin_int16array_dispatch_call (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);
+
+ return ecma_raise_type_error (ECMA_ERR_MSG ("Int16Array cannot be directly called"));
+} /* ecma_builtin_int16array_dispatch_call */
+
+/**
+ * Handle calling [[Construct]] of Int16Array
+ *
+ * @return ecma value
+ */
+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;
+} /* ecma_builtin_int16array_dispatch_construct */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..f25d779e
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.inc.h
@@ -0,0 +1,66 @@
+/* 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.
+ */
+
+/*
+ * Int16Array description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.c
new file mode 100644
index 00000000..a22002ad
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.c
@@ -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.
+ */
+
+#include "ecma-builtins.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-int32array-prototype.inc.h"
+#define BUILTIN_UNDERSCORED_ID int32array_prototype
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup int32arrayprototype ECMA Int32Array.prototype object built-in
+ * @{
+ */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..e5b3c71c
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.inc.h
@@ -0,0 +1,51 @@
+/* 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.
+ */
+
+/*
+ * Int32Array prototype description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.c
new file mode 100644
index 00000000..415a689f
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.c
@@ -0,0 +1,86 @@
+/* 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-builtins.h"
+#include "ecma-exceptions.h"
+#include "ecma-gc.h"
+#include "ecma-globals.h"
+#include "ecma-helpers.h"
+#include "ecma-typedarray-object.h"
+#include "jrt.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-int32array.inc.h"
+#define BUILTIN_UNDERSCORED_ID int32array
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup int32array ECMA Int32Array object built-in
+ * @{
+ */
+
+/**
+ * Handle calling [[Call]] of Int32Array
+ *
+ * @return ecma value
+ */
+ecma_value_t
+ecma_builtin_int32array_dispatch_call (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);
+
+ return ecma_raise_type_error (ECMA_ERR_MSG ("Int32Array cannot be directly called"));
+} /* ecma_builtin_int32array_dispatch_call */
+
+/**
+ * Handle calling [[Construct]] of Int32Array
+ *
+ * @return ecma value
+ */
+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;
+} /* ecma_builtin_int32array_dispatch_construct */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..160b8a1d
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.inc.h
@@ -0,0 +1,66 @@
+/* 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.
+ */
+
+/*
+ * Int32Array description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-int8array-prototype.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.c
index d34c842c..5ec08b97 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtin-int8array-prototype.c
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.c
@@ -30,7 +30,7 @@
* \addtogroup ecmabuiltins
* @{
*
- * \addtogroup int8array prototype ECMA Int8Array.prototype object built-in
+ * \addtogroup int8arrayprototype ECMA Int8Array.prototype object built-in
* @{
*/
diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-int8array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.inc.h
index 6b0f2d0d..6b0f2d0d 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtin-int8array-prototype.inc.h
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.inc.h
diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-int8array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.c
index d0439931..7cfc39bb 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtin-int8array.c
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.c
@@ -36,16 +36,13 @@
* \addtogroup ecmabuiltins
* @{
*
- * \addtogroup string ECMA Int8Array object built-in
+ * \addtogroup int8array ECMA Int8Array object built-in
* @{
*/
/**
* Handle calling [[Call]] of Int8Array
*
- * ES2015 22.2.4 The TypedArray constructors are not intended
- * to be called as a function and will throw an exception when called in that manner.
- *
* @return ecma value
*/
ecma_value_t
@@ -58,10 +55,7 @@ ecma_builtin_int8array_dispatch_call (const ecma_value_t *arguments_list_p, /**<
} /* ecma_builtin_int8array_dispatch_call */
/**
- * Handle calling [[Construct]] of built-in %TypedArray% object
- *
- * ES2015 22.2.1 If %TypedArray% is directly called or
- * called as part of a new expression an exception is thrown
+ * Handle calling [[Construct]] of Int8Array
*
* @return ecma value
*/
@@ -83,4 +77,10 @@ ecma_builtin_int8array_dispatch_construct (const ecma_value_t *arguments_list_p,
return val;
} /* ecma_builtin_int8array_dispatch_construct */
+/**
+ * @}
+ * @}
+ * @}
+ */
+
#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-int8array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.inc.h
index 08d26b8b..08d26b8b 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtin-int8array.inc.h
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.inc.h
diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-typedarray-prototype.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.c
index 7751bbae..c2727ee1 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtin-typedarray-prototype.c
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.c
@@ -40,7 +40,7 @@
* \addtogroup ecmabuiltins
* @{
*
- * \addtogroup typedarray prototype ECMA %TypedArray%.prototype object built-in
+ * \addtogroup typedarrayprototype ECMA %TypedArray%.prototype object built-in
* @{
*/
diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-typedarray-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.inc.h
index ea8521b1..ea8521b1 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtin-typedarray-prototype.inc.h
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.inc.h
diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-typedarray.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.c
index 44c98832..19a32ad3 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtin-typedarray.c
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.c
@@ -37,7 +37,7 @@
* \addtogroup ecmabuiltins
* @{
*
- * \addtogroup string ECMA %TypedArray% object built-in
+ * \addtogroup typedarray ECMA %TypedArray% object built-in
* @{
*/
@@ -121,4 +121,10 @@ ecma_builtin_typedarray_dispatch_construct (const ecma_value_t *arguments_list_p
return ecma_raise_type_error (ECMA_ERR_MSG ("TypedArray intrinstic cannot be called by a 'new' expression"));
} /* ecma_builtin_typedarray_dispatch_construct */
+/**
+ * @}
+ * @}
+ * @}
+ */
+
#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-typedarray.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.inc.h
index 0e1cbaa0..0e1cbaa0 100644
--- a/jerry-core/ecma/builtin-objects/ecma-builtin-typedarray.inc.h
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.inc.h
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.c
new file mode 100644
index 00000000..d4a49875
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.c
@@ -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.
+ */
+
+#include "ecma-builtins.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-uint16array-prototype.inc.h"
+#define BUILTIN_UNDERSCORED_ID uint16array_prototype
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup uint16arrayprototype ECMA Uint16Array.prototype object built-in
+ * @{
+ */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..79a1582d
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.inc.h
@@ -0,0 +1,51 @@
+/* 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.
+ */
+
+/*
+ * Uint16Array prototype description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.c
new file mode 100644
index 00000000..0602a8f3
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.c
@@ -0,0 +1,86 @@
+/* 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-builtins.h"
+#include "ecma-exceptions.h"
+#include "ecma-gc.h"
+#include "ecma-globals.h"
+#include "ecma-helpers.h"
+#include "ecma-typedarray-object.h"
+#include "jrt.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-uint16array.inc.h"
+#define BUILTIN_UNDERSCORED_ID uint16array
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup uint16array ECMA Uint16Array object built-in
+ * @{
+ */
+
+/**
+ * Handle calling [[Call]] of Uint16Array
+ *
+ * @return ecma value
+ */
+ecma_value_t
+ecma_builtin_uint16array_dispatch_call (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);
+
+ return ecma_raise_type_error (ECMA_ERR_MSG ("Uint16Array cannot be directly called"));
+} /* ecma_builtin_uint16array_dispatch_call */
+
+/**
+ * Handle calling [[Construct]] of Uint16Array
+ *
+ * @return ecma value
+ */
+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;
+} /* ecma_builtin_uint16array_dispatch_construct */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..307dc1ed
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.inc.h
@@ -0,0 +1,66 @@
+/* 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.
+ */
+
+/*
+ * Uint16Array description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.c
new file mode 100644
index 00000000..488b6500
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.c
@@ -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.
+ */
+
+#include "ecma-builtins.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-uint32array-prototype.inc.h"
+#define BUILTIN_UNDERSCORED_ID uint32array_prototype
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup uint32arrayprototype ECMA Uint32Array.prototype object built-in
+ * @{
+ */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..ee0e56ea
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.inc.h
@@ -0,0 +1,51 @@
+/* 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.
+ */
+
+/*
+ * Uint32Array prototype description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.c
new file mode 100644
index 00000000..1e3ea44d
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.c
@@ -0,0 +1,86 @@
+/* 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-builtins.h"
+#include "ecma-exceptions.h"
+#include "ecma-gc.h"
+#include "ecma-globals.h"
+#include "ecma-helpers.h"
+#include "ecma-typedarray-object.h"
+#include "jrt.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-uint32array.inc.h"
+#define BUILTIN_UNDERSCORED_ID uint32array
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup uint32array ECMA Uint32Array object built-in
+ * @{
+ */
+
+/**
+ * Handle calling [[Call]] of Uint32Array
+ *
+ * @return ecma value
+ */
+ecma_value_t
+ecma_builtin_uint32array_dispatch_call (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);
+
+ return ecma_raise_type_error (ECMA_ERR_MSG ("Uint32Array cannot be directly called"));
+} /* ecma_builtin_uint32array_dispatch_call */
+
+/**
+ * Handle calling [[Construct]] of Uint32Array
+ *
+ * @return ecma value
+ */
+ecma_value_t
+ecma_builtin_uint32array_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_UINT32ARRAY_PROTOTYPE);
+ ecma_value_t val = ecma_op_create_typedarray (arguments_list_p,
+ arguments_list_len,
+ prototype_obj_p,
+ 2,
+ LIT_MAGIC_STRING_UINT32_ARRAY_UL);
+
+ ecma_deref_object (prototype_obj_p);
+
+ return val;
+} /* ecma_builtin_uint32array_dispatch_construct */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..ca87d81a
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.inc.h
@@ -0,0 +1,66 @@
+/* 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.
+ */
+
+/*
+ * Uint32Array description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.c
new file mode 100644
index 00000000..94cbaf44
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.c
@@ -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.
+ */
+
+#include "ecma-builtins.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-uint8array-prototype.inc.h"
+#define BUILTIN_UNDERSCORED_ID uint8array_prototype
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup uint8arrayprototype ECMA Uint8Array.prototype object built-in
+ * @{
+ */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..4c23eb76
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.inc.h
@@ -0,0 +1,51 @@
+/* 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.
+ */
+
+/*
+ * Uint8Array prototype description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.c
new file mode 100644
index 00000000..b85b129f
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.c
@@ -0,0 +1,86 @@
+/* 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-builtins.h"
+#include "ecma-exceptions.h"
+#include "ecma-gc.h"
+#include "ecma-globals.h"
+#include "ecma-helpers.h"
+#include "ecma-typedarray-object.h"
+#include "jrt.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-uint8array.inc.h"
+#define BUILTIN_UNDERSCORED_ID uint8array
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup uint8array ECMA Uint8Array object built-in
+ * @{
+ */
+
+/**
+ * Handle calling [[Call]] of Uint8Array
+ *
+ * @return ecma value
+ */
+ecma_value_t
+ecma_builtin_uint8array_dispatch_call (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);
+
+ return ecma_raise_type_error (ECMA_ERR_MSG ("Uint8Array cannot be directly called"));
+} /* ecma_builtin_uint8array_dispatch_call */
+
+/**
+ * Handle calling [[Construct]] of Uint8Array
+ *
+ * @return ecma value
+ */
+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;
+} /* ecma_builtin_uint8array_dispatch_construct */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..0c0000fb
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.inc.h
@@ -0,0 +1,66 @@
+/* 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.
+ */
+
+/*
+ * Uint8Array description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.c
new file mode 100644
index 00000000..4921c3b9
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.c
@@ -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.
+ */
+
+#include "ecma-builtins.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-uint8clampedarray-prototype.inc.h"
+#define BUILTIN_UNDERSCORED_ID uint8clampedarray_prototype
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup uint8clampedarrayprototype ECMA Uint8ClampedArray.prototype object built-in
+ * @{
+ */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..9ff3dacf
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.inc.h
@@ -0,0 +1,51 @@
+/* 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.
+ */
+
+/*
+ * Uint8ClampedArray prototype description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.c b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.c
new file mode 100644
index 00000000..533e1534
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.c
@@ -0,0 +1,86 @@
+/* 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-builtins.h"
+#include "ecma-exceptions.h"
+#include "ecma-gc.h"
+#include "ecma-globals.h"
+#include "ecma-helpers.h"
+#include "ecma-typedarray-object.h"
+#include "jrt.h"
+
+#ifndef CONFIG_DISABLE_TYPEDARRAY_BUILTIN
+
+#define ECMA_BUILTINS_INTERNAL
+#include "ecma-builtins-internal.h"
+
+#define BUILTIN_INC_HEADER_NAME "ecma-builtin-uint8clampedarray.inc.h"
+#define BUILTIN_UNDERSCORED_ID uint8clampedarray
+#include "ecma-builtin-internal-routines-template.inc.h"
+
+/** \addtogroup ecma ECMA
+ * @{
+ *
+ * \addtogroup ecmabuiltins
+ * @{
+ *
+ * \addtogroup uint8clampedarray ECMA Uint8ClampedArray object built-in
+ * @{
+ */
+
+/**
+ * Handle calling [[Call]] of Uint8ClampedArray
+ *
+ * @return ecma value
+ */
+ecma_value_t
+ecma_builtin_uint8clampedarray_dispatch_call (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);
+
+ return ecma_raise_type_error (ECMA_ERR_MSG ("Uint8ClampedArray cannot be directly called"));
+} /* ecma_builtin_uint8clampedarray_dispatch_call */
+
+/**
+ * Handle calling [[Construct]] of Uint8ClampedArray
+ *
+ * @return ecma value
+ */
+ecma_value_t
+ecma_builtin_uint8clampedarray_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_UINT8CLAMPEDARRAY_PROTOTYPE);
+ ecma_value_t val = ecma_op_create_typedarray (arguments_list_p,
+ arguments_list_len,
+ prototype_obj_p,
+ 0,
+ LIT_MAGIC_STRING_UINT8_CLAMPED_ARRAY_UL);
+
+ ecma_deref_object (prototype_obj_p);
+
+ return val;
+} /* ecma_builtin_uint8clampedarray_dispatch_construct */
+
+/**
+ * @}
+ * @}
+ * @}
+ */
+
+#endif /* !CONFIG_DISABLE_TYPEDARRAY_BUILTIN */
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
new file mode 100644
index 00000000..766ed1d3
--- /dev/null
+++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.inc.h
@@ -0,0 +1,66 @@
+/* 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.
+ */
+
+/*
+ * Uint8ClampedArray description
+ */
+#ifndef NUMBER_VALUE
+# define NUMBER_VALUE(name, number_value, prop_attributes)
+#endif /* !NUMBER_VALUE */
+
+#ifndef STRING_VALUE
+# define STRING_VALUE(name, magic_string_id, prop_attributes)
+#endif /* !STRING_VALUE */
+
+#ifndef OBJECT_VALUE
+# define OBJECT_VALUE(name, obj_builtin_id, prop_attributes)
+#endif /* !OBJECT_VALUE */
+
+#ifndef ROUTINE
+# define ROUTINE(name, c_function_name, args_number, length_prop_value)
+#endif /* !ROUTINE */
+
+/* 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)
+
+#undef SIMPLE_VALUE
+#undef NUMBER_VALUE
+#undef STRING_VALUE
+#undef OBJECT_VALUE
+#undef ROUTINE
+#undef ACCESSOR_READ_WRITE
+#undef ACCESSOR_READ_ONLY
diff --git a/jerry-core/ecma/operations/ecma-typedarray-object.c b/jerry-core/ecma/operations/ecma-typedarray-object.c
index 69ccd0ca..03d987ff 100644
--- a/jerry-core/ecma/operations/ecma-typedarray-object.c
+++ b/jerry-core/ecma/operations/ecma-typedarray-object.c
@@ -30,11 +30,177 @@
/** \addtogroup ecma ECMA
* @{
*
- * \addtogroup ecmatypedarrayobject ECMA %TypedArray% object related routines
+ * \addtogroup ecmatypedarrayobject ECMA TypedArray object related routines
* @{
*/
/**
+ * Convert the value in location,
+ * cast it from type to ecma_number_t
+ * then assign to variale number
+ */
+#define GET_ELEMENT(type, location, number) \
+ type v = *((type *) location); \
+ number = (ecma_number_t) v;
+
+/**
+ * Cast the number from ecma_numbet_t into type,
+ * and store the number in the location
+ */
+#define SET_ELEMENT(type, location, number) \
+ int64_t v = (int64_t) number; \
+ *((type *) location) = (type) v;
+
+/**
+ * set typedarray's element value
+ *
+ * @return ecma_number_t: the value of the element
+ */
+static ecma_number_t
+get_typedarray_element (lit_utf8_byte_t *src, /**< the location in the internal arraybuffer */
+ lit_magic_string_id_t class_id) /**< class name of the typedarray */
+{
+ ecma_number_t ret_num;
+
+ switch (class_id)
+ {
+ case LIT_MAGIC_STRING_INT8_ARRAY_UL:
+ {
+ GET_ELEMENT (int8_t, src, ret_num);
+ break;
+ }
+ case LIT_MAGIC_STRING_UINT8_ARRAY_UL:
+ case LIT_MAGIC_STRING_UINT8_CLAMPED_ARRAY_UL:
+ {
+ GET_ELEMENT (uint8_t, src, ret_num);
+ break;
+ }
+ case LIT_MAGIC_STRING_INT16_ARRAY_UL:
+ {
+ GET_ELEMENT (int16_t, src, ret_num);
+ break;
+ }
+ case LIT_MAGIC_STRING_UINT16_ARRAY_UL:
+ {
+ GET_ELEMENT (uint16_t, src, ret_num);
+ break;
+ }
+ case LIT_MAGIC_STRING_INT32_ARRAY_UL:
+ {
+ GET_ELEMENT (int32_t, src, ret_num);
+ break;
+ }
+ case LIT_MAGIC_STRING_UINT32_ARRAY_UL:
+ {
+ GET_ELEMENT (uint32_t, src, ret_num);
+ break;
+ }
+ case LIT_MAGIC_STRING_FLOAT32_ARRAY_UL:
+ {
+ GET_ELEMENT (float, src, ret_num);
+ break;
+ }
+#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
+ case LIT_MAGIC_STRING_FLOAT64_ARRAY_UL:
+ {
+ GET_ELEMENT (double, src, ret_num);
+ break;
+ }
+#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
+ default:
+ {
+ JERRY_UNREACHABLE ();
+ }
+ }
+
+ return ret_num;
+} /* get_typedarray_element */
+
+/**
+ * set typedarray's element value
+ */
+static void
+set_typedarray_element (lit_utf8_byte_t *dst, /**< the location in the internal arraybuffer */
+ ecma_number_t value, /**< the number value to set */
+ lit_magic_string_id_t class_id) /**< class name of the typedarray */
+{
+ switch (class_id)
+ {
+ case LIT_MAGIC_STRING_INT8_ARRAY_UL:
+ {
+ SET_ELEMENT (int8_t, dst, value);
+ break;
+ }
+ case LIT_MAGIC_STRING_UINT8_ARRAY_UL:
+ {
+ SET_ELEMENT (uint8_t, dst, value);
+ break;
+ }
+ case LIT_MAGIC_STRING_UINT8_CLAMPED_ARRAY_UL:
+ {
+ uint8_t clamped;
+
+ if (value > 255)
+ {
+ clamped = 255;
+ }
+ else if (value < 0)
+ {
+ clamped = 0;
+ }
+ else
+ {
+ clamped = (uint8_t) value;
+
+ if (clamped + 0.5 < value
+ || (clamped + 0.5 == value && clamped % 2 == 1))
+ {
+ clamped ++;
+ }
+ }
+ *((uint8_t *) dst) = clamped;
+ break;
+ }
+ case LIT_MAGIC_STRING_INT16_ARRAY_UL:
+ {
+ SET_ELEMENT (int16_t, dst, value);
+ break;
+ }
+ case LIT_MAGIC_STRING_UINT16_ARRAY_UL:
+ {
+ SET_ELEMENT (uint16_t, dst, value);
+ break;
+ }
+ case LIT_MAGIC_STRING_INT32_ARRAY_UL:
+ {
+ SET_ELEMENT (int32_t, dst, value);
+ break;
+ }
+ case LIT_MAGIC_STRING_UINT32_ARRAY_UL:
+ {
+ SET_ELEMENT (uint32_t, dst, value);
+ break;
+ }
+ case LIT_MAGIC_STRING_FLOAT32_ARRAY_UL:
+ {
+ *((float *) dst) = (float) value;
+ break;
+ }
+#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64
+ case LIT_MAGIC_STRING_FLOAT64_ARRAY_UL:
+ {
+ *((double *) dst) = (double) value;
+ break;
+ }
+#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */
+ default:
+ {
+ JERRY_UNREACHABLE ();
+ }
+ }
+} /* set_typedarray_element */
+
+/**
* Create a TypedArray object by given array_length
*
* See also: ES2015 22.2.1.2.1
@@ -70,8 +236,8 @@ ecma_typedarray_create_object_with_length (ecma_length_t array_length, /**< leng
* @return pointer to the new typedarray object
*/
static ecma_object_t *
-ecma_typedarray_create_object_with_buffer (ecma_object_t *arraybuffer_p,
- ecma_length_t byte_offset,
+ecma_typedarray_create_object_with_buffer (ecma_object_t *arraybuffer_p, /**< the arraybuffer inside */
+ ecma_length_t byte_offset, /**< the byte offset of the arraybuffer */
ecma_length_t array_length, /**< length of the typedarray */
ecma_object_t *proto_p, /**< prototype object */
uint8_t element_size_shift, /**< the size shift of the element length */
@@ -136,8 +302,22 @@ ecma_typedarray_create_object_with_typedarray (ecma_object_t *typedarray_p, /**<
}
else
{
- /** TODO: add other typed */
- JERRY_UNREACHABLE ();
+ ecma_length_t byte_length = array_length << element_size_shift;
+ arraybuffer_p = ecma_arraybuffer_new_object (byte_length);
+ lit_utf8_byte_t *src_buf = ecma_arraybuffer_get_buffer (src_arraybuffer_p);
+ lit_utf8_byte_t *dst_buf = ecma_arraybuffer_get_buffer (arraybuffer_p);
+ uint8_t src_element_size_shift = ecma_typedarray_get_element_size_shift (typedarray_p);
+
+ for (uint32_t i = 0; i < array_length; i++)
+ {
+ ecma_number_t tmp = get_typedarray_element (src_buf,
+ ecma_object_get_class_name (typedarray_p));
+ /** check dst type and set value to dst typedarray */
+ set_typedarray_element (dst_buf, tmp, class_id);
+
+ src_buf = src_buf + (1 << src_element_size_shift);
+ dst_buf = dst_buf + (1 << element_size_shift);
+ }
}
ecma_object_t *object_p = ecma_typedarray_create_object_with_buffer (arraybuffer_p,
@@ -163,7 +343,7 @@ ecma_typedarray_create_object_with_typedarray (ecma_object_t *typedarray_p, /**<
ecma_value_t
ecma_op_typedarray_from (ecma_value_t items_val, /**< the source array-like object */
ecma_value_t map_fn_val, /**< map function */
- ecma_value_t this_val, /** this_arg for the above map function */
+ ecma_value_t this_val, /**< this_arg for the above map function */
ecma_object_t *proto_p, /**< prototype object */
uint8_t element_size_shift, /**< the size shift of the element length */
lit_magic_string_id_t class_id) /**< class name of the typedarray */
@@ -218,7 +398,7 @@ ecma_op_typedarray_from (ecma_value_t items_val, /**< the source array-like obje
{
if (func_object_p != NULL)
{
- /* 17.d 17.f*/
+ /* 17.d 17.f */
current_index = ecma_make_uint32_value (index);
ecma_value_t call_args[] = { current_value, current_index};
@@ -572,24 +752,9 @@ ecma_op_typedarray_get_index_prop (ecma_object_t *obj_p, /**< a TypedArray objec
ecma_length_t byte_pos = (index << shift) + offset;
lit_magic_string_id_t class_id = ecma_object_get_class_name (obj_p);
lit_utf8_byte_t *target_p = ecma_arraybuffer_get_buffer (arraybuffer_p) + byte_pos;
- ecma_value_t value;
-
- switch (class_id)
- {
- case LIT_MAGIC_STRING_INT8_ARRAY_UL:
- {
- int8_t v = *((int8_t *) target_p);
- value = ecma_make_number_value ((ecma_number_t) v);
- break;
- }
- default:
- {
- /** TODO: implement other types */
- JERRY_UNREACHABLE ();
- }
- }
+ ecma_number_t value = get_typedarray_element (target_p, class_id);
- return value;
+ return ecma_make_number_value (value);
} /* ecma_op_typedarray_get_index_prop */
/**
@@ -649,40 +814,25 @@ ecma_op_typedarray_set_index_prop (ecma_object_t *obj_p,/**< a TypedArray object
{
JERRY_ASSERT (ecma_is_typedarray (ecma_make_object_value (obj_p)));
- ecma_value_t error_val = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
-
- ECMA_OP_TO_NUMBER_TRY_CATCH (value_num, value, error_val);
-
ecma_length_t array_length = ecma_typedarray_get_length (obj_p);
if (index >= array_length)
{
- error_val = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED);
- }
- else
- {
- ecma_object_t *arraybuffer_p = ecma_typedarray_get_arraybuffer (obj_p);
- ecma_length_t offset = ecma_typedarray_get_offset (obj_p);
- uint8_t shift = ecma_typedarray_get_element_size_shift (obj_p);
- ecma_length_t byte_pos = (index << shift) + offset;
- lit_magic_string_id_t class_id = ecma_object_get_class_name (obj_p);
- lit_utf8_byte_t *target_p = ecma_arraybuffer_get_buffer (arraybuffer_p) + byte_pos;
-
- switch (class_id)
- {
- case LIT_MAGIC_STRING_INT8_ARRAY_UL:
- {
- *((int8_t *) target_p) = (int8_t) value_num;
- break;
- }
- default:
- {
- /** TODO: implement other types */
- JERRY_UNREACHABLE ();
- }
- }
+ return false;
}
+ ecma_value_t error_val = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
+
+ ECMA_OP_TO_NUMBER_TRY_CATCH (value_num, value, error_val);
+
+ ecma_object_t *arraybuffer_p = ecma_typedarray_get_arraybuffer (obj_p);
+ ecma_length_t offset = ecma_typedarray_get_offset (obj_p);
+ uint8_t shift = ecma_typedarray_get_element_size_shift (obj_p);
+ ecma_length_t byte_pos = (index << shift) + offset;
+ lit_magic_string_id_t class_id = ecma_object_get_class_name (obj_p);
+ lit_utf8_byte_t *target_p = ecma_arraybuffer_get_buffer (arraybuffer_p) + byte_pos;
+ set_typedarray_element (target_p, value_num, class_id);
+
ECMA_OP_TO_NUMBER_FINALIZE (value_num);
if (ecma_is_value_empty (error_val))
diff --git a/jerry-core/ecma/operations/ecma-typedarray-object.h b/jerry-core/ecma/operations/ecma-typedarray-object.h
index c142ad5f..ac0906f2 100644
--- a/jerry-core/ecma/operations/ecma-typedarray-object.h
+++ b/jerry-core/ecma/operations/ecma-typedarray-object.h
@@ -22,7 +22,7 @@
/** \addtogroup ecma ECMA
* @{
*
- * \addtogroup ecmatypedarrayobject ECMA typedArray object related routines
+ * \addtogroup ecmatypedarrayobject ECMA TypedArray object related routines
* @{
*/
diff --git a/jerry-core/lit/lit-magic-strings.inc.h b/jerry-core/lit/lit-magic-strings.inc.h
index 13c68160..6a1c45ec 100644
--- a/jerry-core/lit/lit-magic-strings.inc.h
+++ b/jerry-core/lit/lit-magic-strings.inc.h
@@ -205,8 +205,8 @@ LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_INT16_ARRAY_UL)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_INT16_ARRAY_UL, "Int16Array")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_INT32_ARRAY_UL, "Int32Array")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_RANGE_ERROR_UL, "RangeError")
-LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UINT8_ARRAY_UL, "Uint8Array")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TYPED_ARRAY_UL, "TypedArray")
+LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UINT8_ARRAY_UL, "Uint8Array")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BYTE_LENGTH_UL, "byteLength")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BYTE_OFFSET_UL, "byteOffset")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_CHAR_CODE_AT_UL, "charCodeAt")
diff --git a/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-010.js b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-010.js
new file mode 100644
index 00000000..c923db7a
--- /dev/null
+++ b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-010.js
@@ -0,0 +1,29 @@
+/* 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.
+ */
+
+var a = new Float32Array([0.1, -3.4, 65535.9]);
+var b = new Int16Array(a);
+var c = new Uint8Array(a);
+var d = new Int32Array(a);
+
+assert(b[0] === 0);
+assert(b[1] === -3);
+assert(b[2] === -1);
+assert(c[0] === 0);
+assert(c[1] === 253);
+assert(c[2] === 255);
+assert(d[0] === 0);
+assert(d[1] === -3);
+assert(d[2] === 65535);
diff --git a/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-011.js b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-011.js
new file mode 100644
index 00000000..0f90ce2b
--- /dev/null
+++ b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-011.js
@@ -0,0 +1,21 @@
+/* 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.
+ */
+
+var a = new Uint8ClampedArray([1.5, 2.5, -1.5, 10000]);
+
+assert(a[0] === 2);
+assert(a[1] === 2);
+assert(a[2] === 0);
+assert(a[3] === 255);
diff --git a/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-012.js b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-012.js
new file mode 100644
index 00000000..e2c90a32
--- /dev/null
+++ b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-012.js
@@ -0,0 +1,22 @@
+/* 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.
+ */
+
+var a = new Float64Array(2);
+
+a[0] = 0.1;
+a[1] = -2.3;
+
+assert(a[0] === 0.1);
+assert(a[1] === -2.3);
diff --git a/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-013.js b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-013.js
new file mode 100644
index 00000000..26b6e5bb
--- /dev/null
+++ b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-013.js
@@ -0,0 +1,22 @@
+/* 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.
+ */
+
+var a = new Float32Array(2);
+
+a[0] = 0.1;
+a[1] = -2.3;
+
+assert(a[0] === 0.10000000149011612);
+assert(a[1] === -2.299999952316284);
diff --git a/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-014.js b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-014.js
new file mode 100644
index 00000000..86c75ae1
--- /dev/null
+++ b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-014.js
@@ -0,0 +1,24 @@
+/* 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.
+ */
+
+var a = new Int16Array(3);
+
+a[0] = 0xffff;
+a[1] = 0xff0001;
+a[2] = -2.3;
+
+assert(a[0] === -1);
+assert(a[1] === 1);
+assert(a[2] === -2);
diff --git a/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-015.js b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-015.js
new file mode 100644
index 00000000..3a9d5009
--- /dev/null
+++ b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-015.js
@@ -0,0 +1,24 @@
+/* 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.
+ */
+
+var a = new Int32Array(3);
+
+a[0] = 0xffffffff;
+a[1] = 0xff00000001;
+a[2] = -2.3;
+
+assert(a[0] === -1);
+assert(a[1] === 1);
+assert(a[2] === -2);
diff --git a/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-016.js b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-016.js
new file mode 100644
index 00000000..2bf77660
--- /dev/null
+++ b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-016.js
@@ -0,0 +1,24 @@
+/* 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.
+ */
+
+var a = new Int8Array(3);
+
+a[0] = 0xff;
+a[1] = 0xff01;
+a[2] = -2.3;
+
+assert(a[0] === -1);
+assert(a[1] === 1);
+assert(a[2] === -2);
diff --git a/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-017.js b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-017.js
new file mode 100644
index 00000000..7bdce3d6
--- /dev/null
+++ b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-017.js
@@ -0,0 +1,22 @@
+/* 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.
+ */
+
+var a = new Uint32Array(2);
+
+a[0] = 0x123456789A;
+a[1] = -2.3;
+
+assert(a[0] === 0x3456789A);
+assert(a[1] === 4294967294); // 0x100000000 - 2
diff --git a/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-018.js b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-018.js
new file mode 100644
index 00000000..a56998f3
--- /dev/null
+++ b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-018.js
@@ -0,0 +1,22 @@
+/* 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.
+ */
+
+var a = new Uint16Array(2);
+
+a[0] = 0x123456789A;
+a[1] = -2.3;
+
+assert(a[0] === 0x789A);
+assert(a[1] === 65534); // 0x10000 - 2
diff --git a/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-019.js b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-019.js
new file mode 100644
index 00000000..2debbc4b
--- /dev/null
+++ b/tests/jerry-test-suite/es2015/22/22.02/22.02.01/22.02.01-019.js
@@ -0,0 +1,22 @@
+/* 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.
+ */
+
+var a = new Uint8Array(2);
+
+a[0] = 0x123456789A;
+a[1] = -2.3;
+
+assert(a[0] === 0x9A);
+assert(a[1] === 254); // 0x100 - 2
diff --git a/tests/jerry-test-suite/es2015/22/22.02/22.02.05/22.02.05-001.js b/tests/jerry-test-suite/es2015/22/22.02/22.02.05/22.02.05-001.js
index a7c6a9be..f074acb4 100644
--- a/tests/jerry-test-suite/es2015/22/22.02/22.02.05/22.02.05-001.js
+++ b/tests/jerry-test-suite/es2015/22/22.02/22.02.05/22.02.05-001.js
@@ -14,3 +14,12 @@
*/
assert(Int8Array.BYTES_PER_ELEMENT === 1);
+assert(Uint8Array.BYTES_PER_ELEMENT === 1);
+assert(Uint8ClampedArray.BYTES_PER_ELEMENT === 1);
+assert(Int16Array.BYTES_PER_ELEMENT === 2);
+assert(Uint16Array.BYTES_PER_ELEMENT === 2);
+assert(Int32Array.BYTES_PER_ELEMENT === 4);
+assert(Uint32Array.BYTES_PER_ELEMENT === 4);
+assert(Float32Array.BYTES_PER_ELEMENT === 4);
+assert(Float64Array.BYTES_PER_ELEMENT === 8);
+
diff --git a/tests/jerry-test-suite/es2015/22/22.02/22.02.06/22.02.06-001.js b/tests/jerry-test-suite/es2015/22/22.02/22.02.06/22.02.06-001.js
index 39ee5897..2c139d48 100644
--- a/tests/jerry-test-suite/es2015/22/22.02/22.02.06/22.02.06-001.js
+++ b/tests/jerry-test-suite/es2015/22/22.02/22.02.06/22.02.06-001.js
@@ -14,3 +14,11 @@
*/
assert(Int8Array.prototype.BYTES_PER_ELEMENT === 1);
+assert(Uint8Array.prototype.BYTES_PER_ELEMENT === 1);
+assert(Uint8ClampedArray.prototype.BYTES_PER_ELEMENT === 1);
+assert(Int16Array.prototype.BYTES_PER_ELEMENT === 2);
+assert(Uint16Array.prototype.BYTES_PER_ELEMENT === 2);
+assert(Int32Array.prototype.BYTES_PER_ELEMENT === 4);
+assert(Uint32Array.prototype.BYTES_PER_ELEMENT === 4);
+assert(Float32Array.prototype.BYTES_PER_ELEMENT === 4);
+assert(Float64Array.prototype.BYTES_PER_ELEMENT === 8);