diff options
author | Zidong Jiang <zidong.jiang@intel.com> | 2017-01-24 22:06:31 +0800 |
---|---|---|
committer | László Langó <llango.u-szeged@partner.samsung.com> | 2017-01-24 15:06:31 +0100 |
commit | 0547b31c163e2137df7ec0c9b3e0775d52ce7fef (patch) | |
tree | 1b6dc269acaf88b4631bbaacd5a517a7157db839 | |
parent | 124582793fbff723c01de2cdd21f482f4395f987 (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
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); |