Fix several style fixes for typed arrays and optimize filter a bit. (#1697)

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
Zoltan Herczeg
2017-03-30 16:06:11 +02:00
committed by GitHub
parent 41c63e08b1
commit 750e0ca9d5
5 changed files with 62 additions and 68 deletions
@@ -112,24 +112,23 @@ ecma_arraybuffer_new_object (ecma_length_t length) /**< length of the arraybuffe
*
* See also: ES2015 24.1.1.4
*
* @return ecma_object_t *
* @return cloned array buffer
*/
ecma_object_t *
ecma_arraybuffer_new_object_by_clone_arraybuffer (ecma_object_t *src_p, /**< the src arraybuffer */
ecma_length_t offset) /**< the offset */
ecma_arraybuffer_clone_arraybuffer (ecma_object_t *array_buf_p, /**< the cloned array buffer */
ecma_length_t offset) /**< start offset */
{
ecma_length_t length = ecma_arraybuffer_get_length (src_p);
JERRY_ASSERT (offset <= length);
JERRY_ASSERT (offset <= ecma_arraybuffer_get_length (array_buf_p));
ecma_length_t clone_length = length - offset;
ecma_object_t *dst_p = ecma_arraybuffer_new_object (clone_length);
lit_utf8_byte_t *src_buf = ecma_arraybuffer_get_buffer (src_p);
lit_utf8_byte_t *dst_buf = ecma_arraybuffer_get_buffer (dst_p);
memcpy (dst_buf, src_buf + offset, clone_length);
ecma_length_t length = ecma_arraybuffer_get_length (array_buf_p) - offset;
ecma_object_t *new_array_buf_p = ecma_arraybuffer_new_object (length);
lit_utf8_byte_t *src_buf_p = ecma_arraybuffer_get_buffer (array_buf_p);
lit_utf8_byte_t *dst_buf_p = ecma_arraybuffer_get_buffer (new_array_buf_p);
memcpy (dst_buf_p, src_buf_p + offset, length);
return dst_p;
} /* ecma_arraybuffer_new_object_by_clone_arraybuffer */
return new_array_buf_p;
} /* ecma_arraybuffer_clone_arraybuffer */
/**
* Helper function: check if the target is ArrayBuffer
@@ -137,8 +136,8 @@ ecma_arraybuffer_new_object_by_clone_arraybuffer (ecma_object_t *src_p, /**< the
*
* See also: ES2015 24.1.1.4
*
* @return bool True if it is ArrayBuffer
* Flase if it is not Object or it is not ArrayBuffer
* @return true - if value is an ArrayBuffer object
* false - otherwise
*/
bool
ecma_is_arraybuffer (ecma_value_t target) /**< the target value */
@@ -173,7 +172,7 @@ ecma_arraybuffer_get_length (ecma_object_t *object_p) /**< pointer to the ArrayB
*
* @return pointer to the data buffer
*/
lit_utf8_byte_t * __attr_pure___
inline lit_utf8_byte_t * __attr_pure___ __attr_always_inline___
ecma_arraybuffer_get_buffer (ecma_object_t *object_p) /**< pointer to the ArrayBuffer object */
{
JERRY_ASSERT (ecma_object_class_is (object_p, LIT_MAGIC_STRING_ARRAY_BUFFER_UL));
@@ -35,7 +35,7 @@ ecma_op_create_arraybuffer_object (const ecma_value_t *, ecma_length_t);
ecma_object_t *
ecma_arraybuffer_new_object (ecma_length_t lengh);
ecma_object_t *
ecma_arraybuffer_new_object_by_clone_arraybuffer (ecma_object_t *src_p, ecma_length_t offset);
ecma_arraybuffer_clone_arraybuffer (ecma_object_t *src_p, ecma_length_t offset);
lit_utf8_byte_t *
ecma_arraybuffer_get_buffer (ecma_object_t *obj_p) __attr_pure___;
ecma_length_t
@@ -314,8 +314,8 @@ ecma_typedarray_create_object_with_typedarray (ecma_object_t *typedarray_p, /**<
if (src_class_id == class_id)
{
arraybuffer_p = ecma_arraybuffer_new_object_by_clone_arraybuffer (src_arraybuffer_p,
byte_offset);
arraybuffer_p = ecma_arraybuffer_clone_arraybuffer (src_arraybuffer_p,
byte_offset);
}
else
{
@@ -487,7 +487,7 @@ ecma_op_typedarray_from (ecma_value_t items_val, /**< the source array-like obje
*
* @return the pointer to the internal arraybuffer
*/
ecma_object_t *
inline ecma_object_t * __attr_always_inline___
ecma_typedarray_get_arraybuffer (ecma_object_t *typedarray_p) /**< the pointer to the typedarray object */
{
JERRY_ASSERT (ecma_is_typedarray (ecma_make_object_value (typedarray_p)));
@@ -561,6 +561,18 @@ ecma_typedarray_get_offset (ecma_object_t *typedarray_p) /**< the pointer to the
return info_p->byte_offset;
} /* ecma_typedarray_get_offset */
/**
* Utility function: return the pointer of the data buffer referenced by the typed array
*
* @return pointer to the data buffer
*/
lit_utf8_byte_t *
ecma_typedarray_get_buffer (ecma_object_t *typedarray_p) /**< the pointer to the typed array object */
{
ecma_object_t *arraybuffer_p = ecma_typedarray_get_arraybuffer (typedarray_p);
return ecma_arraybuffer_get_buffer (arraybuffer_p) + ecma_typedarray_get_offset (typedarray_p);
} /* ecma_typedarray_get_buffer */
/**
* Create a new typedarray object.
@@ -718,18 +730,18 @@ ecma_op_create_typedarray (const ecma_value_t *arguments_list_p, /**< the arg li
/**
* Check if the value is typedarray
*
* @return True: it is a typedarray object
* False: it is not object or it is not a typedarray
* @return true - if value is a TypedArray object
* false - otherwise
*/
bool
ecma_is_typedarray (ecma_value_t target) /**< the target need to be checked */
ecma_is_typedarray (ecma_value_t value) /**< the target need to be checked */
{
if (!ecma_is_value_object (target))
if (!ecma_is_value_object (value))
{
return false;
}
ecma_object_t *obj_p = ecma_get_object_from_value (target);
ecma_object_t *obj_p = ecma_get_object_from_value (value);
if (ecma_get_object_type (obj_p) == ECMA_OBJECT_TYPE_PSEUDO_ARRAY)
{
@@ -772,7 +784,7 @@ ecma_op_typedarray_list_lazy_property_names (ecma_object_t *obj_p, /**< a TypedA
* See also: ES2015 9.4.5.8
*
* @return ecma value
* if failed, return undefined value
* returns undefined if index is greater or equal than length
*/
ecma_value_t
ecma_op_typedarray_get_index_prop (ecma_object_t *obj_p, /**< a TypedArray object */
@@ -34,6 +34,7 @@ ecma_value_t ecma_op_typedarray_from (ecma_value_t items_val,
lit_magic_string_id_t class_id);
ecma_length_t ecma_typedarray_get_length (ecma_object_t *typedarray_p);
ecma_length_t ecma_typedarray_get_offset (ecma_object_t *typedarray_p);
lit_utf8_byte_t *ecma_typedarray_get_buffer (ecma_object_t *typedarray_p);
uint8_t ecma_typedarray_get_element_size_shift (ecma_object_t *typedarray_p);
ecma_object_t *ecma_typedarray_get_arraybuffer (ecma_object_t *typedarray_p);
ecma_value_t ecma_op_create_typedarray (const ecma_value_t *arguments_list_p,