Implement DataView.prototype.{set, get}Big{U}int64 methods (#4315)

Co-authored by Adam Szilagyi aszilagy@inf.u-szeged.hu

JerryScript-DCO-1.0-Signed-off-by: Csaba Osztrogonác csaba.osztrogonac@h-lab.eu
This commit is contained in:
Csaba Osztrogonác
2020-10-28 11:46:52 +01:00
committed by GitHub
parent 2007188373
commit 3115d4dc16
7 changed files with 77 additions and 48 deletions
@@ -52,6 +52,10 @@ enum
#if ENABLED (JERRY_NUMBER_TYPE_FLOAT64)
ECMA_DATAVIEW_PROTOTYPE_GET_FLOAT64,
#endif /* ENABLED (JERRY_NUMBER_TYPE_FLOAT64) */
#if ENABLED (JERRY_BUILTIN_BIGINT)
ECMA_DATAVIEW_PROTOTYPE_GET_BIGINT64,
ECMA_DATAVIEW_PROTOTYPE_GET_BIGUINT64,
#endif /* ENABLED (JERRY_BUILTIN_BIGINT) */
ECMA_DATAVIEW_PROTOTYPE_SET_INT8,
ECMA_DATAVIEW_PROTOTYPE_SET_UINT8,
ECMA_DATAVIEW_PROTOTYPE_SET_UINT8_CLAMPED, /* unused value */
@@ -63,6 +67,10 @@ enum
#if ENABLED (JERRY_NUMBER_TYPE_FLOAT64)
ECMA_DATAVIEW_PROTOTYPE_SET_FLOAT64,
#endif /* ENABLED (JERRY_NUMBER_TYPE_FLOAT64) */
#if ENABLED (JERRY_BUILTIN_BIGINT)
ECMA_DATAVIEW_PROTOTYPE_SET_BIGINT64,
ECMA_DATAVIEW_PROTOTYPE_SET_BIGUINT64,
#endif /* ENABLED (JERRY_BUILTIN_BIGINT) */
};
#define BUILTIN_INC_HEADER_NAME "ecma-builtin-dataview-prototype.inc.h"
@@ -162,6 +170,10 @@ ecma_builtin_dataview_prototype_dispatch_routine (uint16_t builtin_routine_id, /
case ECMA_DATAVIEW_PROTOTYPE_GET_INT32:
case ECMA_DATAVIEW_PROTOTYPE_GET_UINT16:
case ECMA_DATAVIEW_PROTOTYPE_GET_UINT32:
#if ENABLED (JERRY_BUILTIN_BIGINT)
case ECMA_DATAVIEW_PROTOTYPE_GET_BIGINT64:
case ECMA_DATAVIEW_PROTOTYPE_GET_BIGUINT64:
#endif /* ENABLED (JERRY_BUILTIN_BIGINT) */
{
ecma_value_t little_endian = arguments_number > 1 ? arguments_list_p[1] : ECMA_VALUE_FALSE;
ecma_typedarray_type_t id = (ecma_typedarray_type_t) (builtin_routine_id - ECMA_DATAVIEW_PROTOTYPE_GET_INT8);
@@ -176,6 +188,10 @@ ecma_builtin_dataview_prototype_dispatch_routine (uint16_t builtin_routine_id, /
case ECMA_DATAVIEW_PROTOTYPE_SET_INT32:
case ECMA_DATAVIEW_PROTOTYPE_SET_UINT16:
case ECMA_DATAVIEW_PROTOTYPE_SET_UINT32:
#if ENABLED (JERRY_BUILTIN_BIGINT)
case ECMA_DATAVIEW_PROTOTYPE_SET_BIGINT64:
case ECMA_DATAVIEW_PROTOTYPE_SET_BIGUINT64:
#endif /* ENABLED (JERRY_BUILTIN_BIGINT) */
{
ecma_value_t value_to_set = arguments_number > 1 ? arguments_list_p[1] : ECMA_VALUE_UNDEFINED;
ecma_value_t little_endian = arguments_number > 2 ? arguments_list_p[2] : ECMA_VALUE_FALSE;
@@ -56,6 +56,12 @@ ROUTINE (LIT_MAGIC_STRING_SET_INT32_UL, ECMA_DATAVIEW_PROTOTYPE_SET_INT32, 2, 2)
ROUTINE (LIT_MAGIC_STRING_SET_UINT8_UL, ECMA_DATAVIEW_PROTOTYPE_SET_UINT8, 2, 2)
ROUTINE (LIT_MAGIC_STRING_SET_UINT16_UL, ECMA_DATAVIEW_PROTOTYPE_SET_UINT16, 2, 2)
ROUTINE (LIT_MAGIC_STRING_SET_UINT32_UL, ECMA_DATAVIEW_PROTOTYPE_SET_UINT32, 2, 2)
#if ENABLED (JERRY_BUILTIN_BIGINT)
ROUTINE (LIT_MAGIC_STRING_GET_BIGINT64, ECMA_DATAVIEW_PROTOTYPE_GET_BIGINT64, 2, 1)
ROUTINE (LIT_MAGIC_STRING_GET_BIGUINT64, ECMA_DATAVIEW_PROTOTYPE_GET_BIGUINT64, 2, 1)
ROUTINE (LIT_MAGIC_STRING_SET_BIGINT64, ECMA_DATAVIEW_PROTOTYPE_SET_BIGINT64, 2, 2)
ROUTINE (LIT_MAGIC_STRING_SET_BIGUINT64, ECMA_DATAVIEW_PROTOTYPE_SET_BIGUINT64, 2, 2)
#endif /* ENABLED (JERRY_BUILTIN_BIGINT) */
/* ECMA-262 v6, 24.2.4.1 */
ACCESSOR_READ_ONLY (LIT_MAGIC_STRING_BUFFER,