Improve typedArray get, set (#3023)
Here are the following changes:
- The getter and setter methods are callback based now, and we can use
them with the proper typedArray id
- The typedArray set_element and get_element methods are using memcpy now.
- There is a new struct which contains basic informations from typedArray,
and we are using this in most of the prototype methods.
- Eliminated ecma_op_typedarray_set_index_prop and
ecma_op_typedarray_get_index_prop, because these methods
also calculated the same informations which are in the new
struct, so we use the new method instead.
Co-authored-by: Robert Fancsik frobert@inf.u-szeged.hu
JerryScript-DCO-1.0-Signed-off-by: Adam Szilagyi aszilagy@inf.u-szeged.hu
This commit is contained in:
committed by
Dániel Bátyai
parent
f1883b9e7d
commit
c3510fc03d
@@ -15,7 +15,6 @@
|
||||
|
||||
#include "ecma-arraybuffer-object.h"
|
||||
#include "ecma-builtins.h"
|
||||
#include "ecma-builtin-typedarray-helpers.h"
|
||||
#include "ecma-exceptions.h"
|
||||
#include "ecma-gc.h"
|
||||
#include "ecma-helpers.h"
|
||||
@@ -250,7 +249,7 @@ ecma_op_dataview_get_set_view_value (ecma_value_t view, /**< the operation's 'vi
|
||||
ecma_value_t is_little_endian_value, /**< the operation's
|
||||
* 'isLittleEndian' argument */
|
||||
ecma_value_t value_to_set, /**< the operation's 'value' argument */
|
||||
uint8_t type) /**< the operation's 'type' argument */
|
||||
ecma_typedarray_type_t id) /**< the operation's 'type' argument */
|
||||
{
|
||||
/* 1 - 2. */
|
||||
ecma_dataview_object_t *view_p = ecma_op_dataview_get_object (view);
|
||||
@@ -293,7 +292,7 @@ ecma_op_dataview_get_set_view_value (ecma_value_t view, /**< the operation's 'vi
|
||||
uint32_t view_size = view_p->header.u.class_prop.u.length;
|
||||
|
||||
/* 12. */
|
||||
uint8_t element_size = (uint8_t) (1 << (ecma_typedarray_helper_get_shift_size (type)));
|
||||
uint8_t element_size = (uint8_t) (1 << (ecma_typedarray_helper_get_shift_size (id)));
|
||||
|
||||
/* 13. */
|
||||
if ((uint32_t) get_index + element_size > view_size)
|
||||
@@ -303,7 +302,6 @@ ecma_op_dataview_get_set_view_value (ecma_value_t view, /**< the operation's 'vi
|
||||
|
||||
/* 14. */
|
||||
uint32_t buffer_index = (uint32_t) get_index + view_offset;
|
||||
lit_magic_string_id_t id = ecma_typedarray_helper_get_magic_string (type);
|
||||
lit_utf8_byte_t *block_p = ecma_arraybuffer_get_buffer (buffer_p) + buffer_index;
|
||||
|
||||
bool system_is_little_endian = ecma_dataview_check_little_endian ();
|
||||
|
||||
Reference in New Issue
Block a user