diff --git a/src/liballocator/mem-heap.c b/src/liballocator/mem-heap.c index b9e3450d2..8943787da 100644 --- a/src/liballocator/mem-heap.c +++ b/src/liballocator/mem-heap.c @@ -86,10 +86,11 @@ typedef enum */ typedef struct mem_block_header_t { - mem_magic_num_of_block_t magic_num; /**< magic number - MEM_MAGIC_NUM_OF_ALLOCATED_BLOCK for allocated block - and MEM_MAGIC_NUM_OF_FREE_BLOCK for free block */ + mem_magic_num_of_block_t magic_num; /**< magic number - MEM_MAGIC_NUM_OF_ALLOCATED_BLOCK for allocated block + and MEM_MAGIC_NUM_OF_FREE_BLOCK for free block */ struct mem_block_header_t *neighbours[ MEM_DIRECTION_COUNT ]; /**< neighbour blocks */ - size_t allocated_bytes; /**< allocated area size - for allocated blocks; 0 - for free blocks */ + size_t allocated_bytes; /**< allocated area size - for allocated blocks; + 0 - for free blocks */ } mem_block_header_t; /** @@ -509,7 +510,8 @@ size_t mem_heap_recommend_allocation_size (size_t minimum_allocation_size) /**< minimum allocation size */ { size_t minimum_allocation_size_with_block_header = minimum_allocation_size + sizeof (mem_block_header_t); - size_t heap_chunk_aligned_allocation_size = JERRY_ALIGNUP(minimum_allocation_size_with_block_header, MEM_HEAP_CHUNK_SIZE); + size_t heap_chunk_aligned_allocation_size = JERRY_ALIGNUP(minimum_allocation_size_with_block_header, + MEM_HEAP_CHUNK_SIZE); return heap_chunk_aligned_allocation_size - sizeof (mem_block_header_t); } /* mem_heap_recommend_allocation_size */ diff --git a/src/liballocator/mem-pool.c b/src/liballocator/mem-pool.c index bc7f068f6..41447788b 100644 --- a/src/liballocator/mem-pool.c +++ b/src/liballocator/mem-pool.c @@ -123,7 +123,8 @@ mem_pool_free_chunk (mem_pool_state_t *pool_p, /**< pool */ uint8_t *chunk_p) /**< chunk pointer */ { JERRY_ASSERT(pool_p->free_chunks_number < pool_p->chunks_number); - JERRY_ASSERT(chunk_p >= MEM_POOL_SPACE_START(pool_p) && chunk_p <= MEM_POOL_SPACE_START(pool_p) + pool_p->chunks_number * MEM_POOL_CHUNK_SIZE); + JERRY_ASSERT(chunk_p >= MEM_POOL_SPACE_START(pool_p) + && chunk_p <= MEM_POOL_SPACE_START(pool_p) + pool_p->chunks_number * MEM_POOL_CHUNK_SIZE); JERRY_ASSERT(((uintptr_t) chunk_p - (uintptr_t) MEM_POOL_SPACE_START(pool_p)) % MEM_POOL_CHUNK_SIZE == 0); mem_check_pool (pool_p); diff --git a/src/liballocator/mem-pool.h b/src/liballocator/mem-pool.h index b20f0f432..766eb42b7 100644 --- a/src/liballocator/mem-pool.h +++ b/src/liballocator/mem-pool.h @@ -40,14 +40,16 @@ typedef uint16_t mem_pool_chunk_index_t; * State of a memory pool */ typedef struct mem_pool_state_t { - unsigned int chunks_number : MEM_POOL_MAX_CHUNKS_NUMBER_LOG; /**< number of chunks (mem_pool_chunk_index_t) */ - unsigned int free_chunks_number : MEM_POOL_MAX_CHUNKS_NUMBER_LOG; /**< number of free chunks (mem_pool_chunk_index_t) */ + /** Number of chunks (mem_pool_chunk_index_t) */ + unsigned int chunks_number : MEM_POOL_MAX_CHUNKS_NUMBER_LOG; + /** Number of free chunks (mem_pool_chunk_index_t) */ + unsigned int free_chunks_number : MEM_POOL_MAX_CHUNKS_NUMBER_LOG; - unsigned int first_free_chunk : MEM_POOL_MAX_CHUNKS_NUMBER_LOG; /**< offset of first free chunk - from the beginning of the pool - (mem_pool_chunk_index_t) */ + /** Offset of first free chunk from the beginning of the pool (mem_pool_chunk_index_t) */ + unsigned int first_free_chunk : MEM_POOL_MAX_CHUNKS_NUMBER_LOG; - unsigned int next_pool_cp : MEM_HEAP_OFFSET_LOG; /**< pointer to the next pool with same chunk size */ + /** Pointer to the next pool with same chunk size */ + unsigned int next_pool_cp : MEM_HEAP_OFFSET_LOG; } mem_pool_state_t; extern void mem_pool_init (mem_pool_state_t *pool_p, size_t pool_size); diff --git a/src/libecmaobjects/ecma-helpers-value.c b/src/libecmaobjects/ecma-helpers-value.c index d4d55b75a..f85dde9ca 100644 --- a/src/libecmaobjects/ecma-helpers-value.c +++ b/src/libecmaobjects/ecma-helpers-value.c @@ -407,7 +407,8 @@ ecma_is_completion_value_throw (ecma_completion_value_t value) /**< completion v */ bool ecma_is_completion_value_normal_simple_value (ecma_completion_value_t value, /**< completion value */ - ecma_simple_value_t simple_value) /**< simple value to check for equality with */ + ecma_simple_value_t simple_value) /**< simple value to check + for equality with */ { return (value.type == ECMA_COMPLETION_TYPE_NORMAL && value.value.value_type == ECMA_TYPE_SIMPLE diff --git a/src/libecmaobjects/ecma-helpers.c b/src/libecmaobjects/ecma-helpers.c index 23f025609..7aac921ca 100644 --- a/src/libecmaobjects/ecma-helpers.c +++ b/src/libecmaobjects/ecma-helpers.c @@ -106,10 +106,12 @@ ecma_create_object_lex_env (ecma_object_t *outer_lexical_environment_p, /**< out ECMA_SET_POINTER(new_lexical_environment_p->u.lexical_environment.outer_reference_p, outer_lexical_environment_p); - ecma_property_t *provide_this_prop_p = ecma_create_internal_property (new_lexical_environment_p, ECMA_INTERNAL_PROPERTY_PROVIDE_THIS); + ecma_property_t *provide_this_prop_p = ecma_create_internal_property (new_lexical_environment_p, + ECMA_INTERNAL_PROPERTY_PROVIDE_THIS); provide_this_prop_p->u.internal_property.value = provide_this; - ecma_property_t *binding_object_prop_p = ecma_create_internal_property (new_lexical_environment_p, ECMA_INTERNAL_PROPERTY_BINDING_OBJECT); + ecma_property_t *binding_object_prop_p = ecma_create_internal_property (new_lexical_environment_p, + ECMA_INTERNAL_PROPERTY_BINDING_OBJECT); ECMA_SET_POINTER(binding_object_prop_p->u.internal_property.value, binding_obj_p); ecma_gc_update_may_ref_younger_object_flag_by_object (new_lexical_environment_p, binding_obj_p); diff --git a/src/libecmaobjects/ecma-helpers.h b/src/libecmaobjects/ecma-helpers.h index 4d6067964..ec297385a 100644 --- a/src/libecmaobjects/ecma-helpers.h +++ b/src/libecmaobjects/ecma-helpers.h @@ -67,7 +67,9 @@ extern ecma_value_t ecma_make_object_value (ecma_object_t* object_p); extern ecma_value_t ecma_copy_value (const ecma_value_t value, bool do_ref_if_object); extern void ecma_free_value (const ecma_value_t value, bool do_deref_if_object); -extern ecma_completion_value_t ecma_make_completion_value (ecma_completion_type_t type, ecma_value_t value, uint8_t target); +extern ecma_completion_value_t ecma_make_completion_value (ecma_completion_type_t type, + ecma_value_t value, + uint8_t target); extern ecma_completion_value_t ecma_make_simple_completion_value (ecma_simple_value_t simple_value); extern ecma_completion_value_t ecma_make_throw_value (ecma_object_t *exception_p); extern ecma_completion_value_t ecma_make_empty_completion_value (void); @@ -76,25 +78,45 @@ extern void ecma_free_completion_value (ecma_completion_value_t completion_value extern bool ecma_is_completion_value_normal (ecma_completion_value_t value); extern bool ecma_is_completion_value_throw (ecma_completion_value_t value); -extern bool ecma_is_completion_value_normal_simple_value (ecma_completion_value_t value, ecma_simple_value_t simple_value); +extern bool ecma_is_completion_value_normal_simple_value (ecma_completion_value_t value, + ecma_simple_value_t simple_value); extern bool ecma_is_completion_value_normal_true (ecma_completion_value_t value); extern bool ecma_is_completion_value_normal_false (ecma_completion_value_t value); extern bool ecma_is_empty_completion_value (ecma_completion_value_t value); /* ecma-helpers.c */ -extern ecma_object_t* ecma_create_object (ecma_object_t *prototype_object_p, bool is_extensible, ecma_object_type_t type); +extern ecma_object_t* ecma_create_object (ecma_object_t *prototype_object_p, + bool is_extensible, + ecma_object_type_t type); extern ecma_object_t* ecma_create_decl_lex_env (ecma_object_t *outer_lexical_environment_p); -extern ecma_object_t* ecma_create_object_lex_env (ecma_object_t *outer_lexical_environment_p, ecma_object_t *binding_obj_p, bool provide_this); +extern ecma_object_t* ecma_create_object_lex_env (ecma_object_t *outer_lexical_environment_p, + ecma_object_t *binding_obj_p, + bool provide_this); -extern ecma_property_t* ecma_create_internal_property (ecma_object_t *object_p, ecma_internal_property_id_t property_id); -extern ecma_property_t* ecma_find_internal_property (ecma_object_t *object_p, ecma_internal_property_id_t property_id); -extern ecma_property_t* ecma_get_internal_property (ecma_object_t *object_p, ecma_internal_property_id_t property_id); +extern ecma_property_t* ecma_create_internal_property (ecma_object_t *object_p, + ecma_internal_property_id_t property_id); +extern ecma_property_t* ecma_find_internal_property (ecma_object_t *object_p, + ecma_internal_property_id_t property_id); +extern ecma_property_t* ecma_get_internal_property (ecma_object_t *object_p, + ecma_internal_property_id_t property_id); -extern ecma_property_t *ecma_create_named_data_property (ecma_object_t *obj_p, const ecma_char_t *name_p, ecma_property_writable_value_t writable, ecma_property_enumerable_value_t enumerable, ecma_property_configurable_value_t configurable); -extern ecma_property_t *ecma_create_named_accessor_property (ecma_object_t *obj_p, const ecma_char_t *name_p, ecma_object_t *get_p, ecma_object_t *set_p, ecma_property_enumerable_value_t enumerable, ecma_property_configurable_value_t configurable); -extern ecma_property_t *ecma_find_named_property (ecma_object_t *obj_p, const ecma_char_t *name_p); -extern ecma_property_t *ecma_get_named_property (ecma_object_t *obj_p, const ecma_char_t *name_p); -extern ecma_property_t *ecma_get_named_data_property (ecma_object_t *obj_p, const ecma_char_t *name_p); +extern ecma_property_t *ecma_create_named_data_property (ecma_object_t *obj_p, + const ecma_char_t *name_p, + ecma_property_writable_value_t writable, + ecma_property_enumerable_value_t enumerable, + ecma_property_configurable_value_t configurable); +extern ecma_property_t *ecma_create_named_accessor_property (ecma_object_t *obj_p, + const ecma_char_t *name_p, + ecma_object_t *get_p, + ecma_object_t *set_p, + ecma_property_enumerable_value_t enumerable, + ecma_property_configurable_value_t configurable); +extern ecma_property_t *ecma_find_named_property (ecma_object_t *obj_p, + const ecma_char_t *name_p); +extern ecma_property_t *ecma_get_named_property (ecma_object_t *obj_p, + const ecma_char_t *name_p); +extern ecma_property_t *ecma_get_named_data_property (ecma_object_t *obj_p, + const ecma_char_t *name_p); extern void ecma_free_internal_property (ecma_property_t *prop_p); extern void ecma_free_named_data_property (ecma_property_t *prop_p); @@ -104,10 +126,14 @@ extern void ecma_free_property (ecma_property_t *prop_p); extern void ecma_delete_property (ecma_object_t *obj_p, ecma_property_t *prop_p); extern ecma_array_first_chunk_t* ecma_new_ecma_string (const ecma_char_t *string_p); -extern ssize_t ecma_copy_ecma_string_chars_to_buffer (ecma_array_first_chunk_t *first_chunk_p, uint8_t *buffer_p, size_t buffer_size); +extern ssize_t ecma_copy_ecma_string_chars_to_buffer (ecma_array_first_chunk_t *first_chunk_p, + uint8_t *buffer_p, + size_t buffer_size); extern ecma_array_first_chunk_t* ecma_duplicate_ecma_string (ecma_array_first_chunk_t *first_chunk_p); -extern bool ecma_compare_zt_string_to_ecma_string (const ecma_char_t *string_p, const ecma_array_first_chunk_t *ecma_string_p); -extern bool ecma_compare_ecma_string_to_ecma_string (const ecma_array_first_chunk_t *string1_p, const ecma_array_first_chunk_t *string2_p); +extern bool ecma_compare_zt_string_to_ecma_string (const ecma_char_t *string_p, + const ecma_array_first_chunk_t *ecma_string_p); +extern bool ecma_compare_ecma_string_to_ecma_string (const ecma_array_first_chunk_t *string1_p, + const ecma_array_first_chunk_t *string2_p); extern void ecma_free_array (ecma_array_first_chunk_t *first_chunk_p); extern ecma_property_descriptor_t ecma_make_empty_property_descriptor (void); diff --git a/src/libecmaoperations/ecma-comparison.c b/src/libecmaoperations/ecma-comparison.c index bd0de1e37..001f99c1d 100644 --- a/src/libecmaoperations/ecma-comparison.c +++ b/src/libecmaoperations/ecma-comparison.c @@ -120,8 +120,12 @@ ecma_op_abstract_relational_compare (ecma_value_t x, /**< first operand */ ecma_value_t second_converted_value = left_first ? y : x; // 1., 2. - ECMA_TRY_CATCH(prim_first_converted_value, ecma_op_to_primitive (first_converted_value, ECMA_PREFERRED_TYPE_NUMBER), ret_value); - ECMA_TRY_CATCH(prim_second_converted_value, ecma_op_to_primitive (second_converted_value, ECMA_PREFERRED_TYPE_NUMBER), ret_value); + ECMA_TRY_CATCH(prim_first_converted_value, + ecma_op_to_primitive (first_converted_value, ECMA_PREFERRED_TYPE_NUMBER), + ret_value); + ECMA_TRY_CATCH(prim_second_converted_value, + ecma_op_to_primitive (second_converted_value, ECMA_PREFERRED_TYPE_NUMBER), + ret_value); px = left_first ? prim_first_converted_value : prim_second_converted_value; py = left_first ? prim_second_converted_value : prim_first_converted_value; diff --git a/src/libecmaoperations/ecma-global-object.c b/src/libecmaoperations/ecma-global-object.c index ad80c228b..8b43efa9e 100644 --- a/src/libecmaoperations/ecma-global-object.c +++ b/src/libecmaoperations/ecma-global-object.c @@ -62,8 +62,9 @@ ecma_op_create_global_object (void) ecma_object_t *glob_obj_p = ecma_create_object (NULL, true, ECMA_OBJECT_TYPE_GENERAL); + const ecma_char_t* undefined_identifier_p = ecma_get_magic_string (ECMA_MAGIC_STRING_UNDEFINED); ecma_property_t *undefined_prop_p = ecma_create_named_data_property (glob_obj_p, - ecma_get_magic_string (ECMA_MAGIC_STRING_UNDEFINED), + undefined_identifier_p, ECMA_PROPERTY_NOT_WRITABLE, ECMA_PROPERTY_NOT_ENUMERABLE, ECMA_PROPERTY_NOT_CONFIGURABLE); diff --git a/src/libecmaoperations/ecma-lex-env.h b/src/libecmaoperations/ecma-lex-env.h index d39248f3c..2b4c8a01d 100644 --- a/src/libecmaoperations/ecma-lex-env.h +++ b/src/libecmaoperations/ecma-lex-env.h @@ -29,16 +29,28 @@ */ /* ECMA-262 v5, Table 17. Abstract methods of Environment Records */ -extern ecma_completion_value_t ecma_op_has_binding (ecma_object_t *lex_env_p, const ecma_char_t *name_p); -extern ecma_completion_value_t ecma_op_create_mutable_binding (ecma_object_t *lex_env_p, const ecma_char_t *name_p, bool is_deletable); -extern ecma_completion_value_t ecma_op_set_mutable_binding (ecma_object_t *lex_env_p, const ecma_char_t *name_p, ecma_value_t value, bool is_strict); -extern ecma_completion_value_t ecma_op_get_binding_value (ecma_object_t *lex_env_p, const ecma_char_t *name_p, bool is_strict); -extern ecma_completion_value_t ecma_op_delete_binding (ecma_object_t *lex_env_p, const ecma_char_t *name_p); +extern ecma_completion_value_t ecma_op_has_binding (ecma_object_t *lex_env_p, + const ecma_char_t *name_p); +extern ecma_completion_value_t ecma_op_create_mutable_binding (ecma_object_t *lex_env_p, + const ecma_char_t *name_p, + bool is_deletable); +extern ecma_completion_value_t ecma_op_set_mutable_binding (ecma_object_t *lex_env_p, + const ecma_char_t *name_p, + ecma_value_t value, + bool is_strict); +extern ecma_completion_value_t ecma_op_get_binding_value (ecma_object_t *lex_env_p, + const ecma_char_t *name_p, + bool is_strict); +extern ecma_completion_value_t ecma_op_delete_binding (ecma_object_t *lex_env_p, + const ecma_char_t *name_p); extern ecma_completion_value_t ecma_op_implicit_this_value (ecma_object_t *lex_env_p); /* ECMA-262 v5, Table 18. Additional methods of Declarative Environment Records */ -extern void ecma_op_create_immutable_binding (ecma_object_t *lex_env_p, const ecma_char_t *name_p); -extern void ecma_op_initialize_immutable_binding (ecma_object_t *lex_env_p, const ecma_char_t *name_p, ecma_value_t value); +extern void ecma_op_create_immutable_binding (ecma_object_t *lex_env_p, + const ecma_char_t *name_p); +extern void ecma_op_initialize_immutable_binding (ecma_object_t *lex_env_p, + const ecma_char_t *name_p, + ecma_value_t value); extern ecma_object_t* ecma_op_create_global_environment (void); diff --git a/src/libecmaoperations/ecma-operations.h b/src/libecmaoperations/ecma-operations.h index d0c99c635..b9d2a96ab 100644 --- a/src/libecmaoperations/ecma-operations.h +++ b/src/libecmaoperations/ecma-operations.h @@ -27,10 +27,13 @@ * @{ */ -extern ecma_reference_t ecma_op_get_identifier_reference (ecma_object_t *lex_env_p, const ecma_char_t *name_p, bool is_strict); +extern ecma_reference_t ecma_op_get_identifier_reference (ecma_object_t *lex_env_p, + const ecma_char_t *name_p, + bool is_strict); extern ecma_completion_value_t ecma_op_get_value (ecma_reference_t ref); -extern ecma_completion_value_t ecma_op_put_value (ecma_reference_t ref, ecma_value_t value); +extern ecma_completion_value_t ecma_op_put_value (ecma_reference_t ref, + ecma_value_t value); extern void ecma_finalize (void); diff --git a/src/libecmaoperations/ecma-reference.h b/src/libecmaoperations/ecma-reference.h index dd210fa3f..b702ccb9c 100644 --- a/src/libecmaoperations/ecma-reference.h +++ b/src/libecmaoperations/ecma-reference.h @@ -28,8 +28,12 @@ * @{ */ -extern ecma_reference_t ecma_op_get_identifier_reference (ecma_object_t *lex_env_p, const ecma_char_t *name_p, bool is_strict); -extern ecma_reference_t ecma_make_reference (ecma_value_t base, const ecma_char_t *name_p, bool is_strict); +extern ecma_reference_t ecma_op_get_identifier_reference (ecma_object_t *lex_env_p, + const ecma_char_t *name_p, + bool is_strict); +extern ecma_reference_t ecma_make_reference (ecma_value_t base, + const ecma_char_t *name_p, + bool is_strict); extern void ecma_free_reference (const ecma_reference_t ref); /**