Renaming ecma_array_first_chunk_t -> ecma_collection_header_t; ecma_array_non_first_chunk_t -> ecma_collection_chunk_t.

This commit is contained in:
Ruben Ayrapetyan
2014-08-13 20:53:39 +04:00
parent 25ae71353d
commit 507b91973a
7 changed files with 72 additions and 79 deletions
+4 -5
View File
@@ -25,9 +25,8 @@ JERRY_STATIC_ASSERT(sizeof (ecma_property_t) <= sizeof (uint64_t));
FIXME(Pack ecma_object_t) FIXME(Pack ecma_object_t)
JERRY_STATIC_ASSERT(sizeof (ecma_object_t) <= 2 * sizeof (uint64_t)); JERRY_STATIC_ASSERT(sizeof (ecma_object_t) <= 2 * sizeof (uint64_t));
JERRY_STATIC_ASSERT(sizeof (ecma_array_header_t) <= sizeof (uint32_t)); JERRY_STATIC_ASSERT(sizeof (ecma_collection_header_t) == sizeof (uint64_t));
JERRY_STATIC_ASSERT(sizeof (ecma_array_first_chunk_t) == sizeof (uint64_t)); JERRY_STATIC_ASSERT(sizeof (ecma_collection_chunk_t) == sizeof (uint64_t));
JERRY_STATIC_ASSERT(sizeof (ecma_array_non_first_chunk_t) == sizeof (uint64_t));
JERRY_STATIC_ASSERT(sizeof (ecma_string_t) == sizeof (uint64_t)); JERRY_STATIC_ASSERT(sizeof (ecma_string_t) == sizeof (uint64_t));
JERRY_STATIC_ASSERT(sizeof (ecma_completion_value_t) == sizeof (uint32_t)); JERRY_STATIC_ASSERT(sizeof (ecma_completion_value_t) == sizeof (uint32_t));
@@ -98,8 +97,8 @@ JERRY_STATIC_ASSERT(sizeof (ecma_completion_value_t) == sizeof (uint32_t));
DECLARE_ROUTINES_FOR (object) DECLARE_ROUTINES_FOR (object)
DECLARE_ROUTINES_FOR (property) DECLARE_ROUTINES_FOR (property)
DECLARE_ROUTINES_FOR (number) DECLARE_ROUTINES_FOR (number)
DECLARE_ROUTINES_FOR (array_first_chunk) DECLARE_ROUTINES_FOR (collection_header)
DECLARE_ROUTINES_FOR (array_non_first_chunk) DECLARE_ROUTINES_FOR (collection_chunk)
DECLARE_ROUTINES_FOR (string) DECLARE_ROUTINES_FOR (string)
/** /**
+8 -8
View File
@@ -62,28 +62,28 @@ extern ecma_number_t *ecma_alloc_number (void);
extern void ecma_dealloc_number (ecma_number_t *number_p); extern void ecma_dealloc_number (ecma_number_t *number_p);
/** /**
* Allocate memory for first chunk of an ecma-array * Allocate memory for header of a collection
* *
* @return pointer to allocated memory * @return pointer to allocated memory
*/ */
extern ecma_array_first_chunk_t *ecma_alloc_array_first_chunk (void); extern ecma_collection_header_t *ecma_alloc_collection_header (void);
/** /**
* Dealloc memory from first chunk of an ecma-array * Dealloc memory from the collection's header
*/ */
extern void ecma_dealloc_array_first_chunk (ecma_array_first_chunk_t *first_chunk_p); extern void ecma_dealloc_collection_header (ecma_collection_header_t *collection_header_p);
/** /**
* Allocate memory for non-first chunk of an ecma-array * Allocate memory for non-first chunk of a collection
* *
* @return pointer to allocated memory * @return pointer to allocated memory
*/ */
extern ecma_array_non_first_chunk_t *ecma_alloc_array_non_first_chunk (void); extern ecma_collection_chunk_t* ecma_alloc_collection_chunk (void);
/** /**
* Dealloc memory from non-first chunk of an ecma-array * Dealloc memory from non-first chunk of a collection
*/ */
extern void ecma_dealloc_array_non_first_chunk (ecma_array_non_first_chunk_t *non_first_chunk_p); extern void ecma_dealloc_collection_chunk (ecma_collection_chunk_t *non_first_chunk_p);
/** /**
* Allocate memory for ecma-string descriptor * Allocate memory for ecma-string descriptor
+3 -3
View File
@@ -250,8 +250,8 @@ ecma_gc_mark (ecma_object_t *object_p, /**< start object */
switch (property_id) switch (property_id)
{ {
case ECMA_INTERNAL_PROPERTY_NUMBER_INDEXED_ARRAY_VALUES: /* an array of ecma-values */ case ECMA_INTERNAL_PROPERTY_NUMBER_INDEXED_ARRAY_VALUES: /* a collection of ecma-values */
case ECMA_INTERNAL_PROPERTY_STRING_INDEXED_ARRAY_VALUES: /* an array of ecma-values */ case ECMA_INTERNAL_PROPERTY_STRING_INDEXED_ARRAY_VALUES: /* a collection of ecma-values */
{ {
JERRY_UNIMPLEMENTED(); JERRY_UNIMPLEMENTED();
} }
@@ -264,7 +264,7 @@ ecma_gc_mark (ecma_object_t *object_p, /**< start object */
JERRY_UNREACHABLE(); JERRY_UNREACHABLE();
} }
case ECMA_INTERNAL_PROPERTY_FORMAL_PARAMETERS: /* an array of strings */ case ECMA_INTERNAL_PROPERTY_FORMAL_PARAMETERS: /* a collection of strings */
case ECMA_INTERNAL_PROPERTY_PROVIDE_THIS: /* a boolean */ case ECMA_INTERNAL_PROPERTY_PROVIDE_THIS: /* a boolean */
case ECMA_INTERNAL_PROPERTY_CLASS: /* an enum */ case ECMA_INTERNAL_PROPERTY_CLASS: /* an enum */
case ECMA_INTERNAL_PROPERTY_CODE: /* an integer */ case ECMA_INTERNAL_PROPERTY_CODE: /* an integer */
+14 -23
View File
@@ -76,8 +76,8 @@ typedef enum
ECMA_SIMPLE_VALUE_NULL, /**< null value */ ECMA_SIMPLE_VALUE_NULL, /**< null value */
ECMA_SIMPLE_VALUE_FALSE, /**< boolean false */ ECMA_SIMPLE_VALUE_FALSE, /**< boolean false */
ECMA_SIMPLE_VALUE_TRUE, /**< boolean true */ ECMA_SIMPLE_VALUE_TRUE, /**< boolean true */
ECMA_SIMPLE_VALUE_ARRAY_REDIRECT, /**< implementation defined value for an array's elements that exists, ECMA_SIMPLE_VALUE_ARRAY_REDIRECT, /**< implementation defined value for an array's elements that exist,
but is stored directly in the array's property list but are stored directly in the array's property list
(used for array elements with non-default attribute values) */ (used for array elements with non-default attribute values) */
ECMA_SIMPLE_VALUE__COUNT /** count of simple ecma-values */ ECMA_SIMPLE_VALUE__COUNT /** count of simple ecma-values */
} ecma_simple_value_t; } ecma_simple_value_t;
@@ -481,36 +481,27 @@ typedef float ecma_number_t;
#define ECMA_MAX_VALUE_OF_VALID_ARRAY_INDEX ((uint32_t) (-1)) #define ECMA_MAX_VALUE_OF_VALID_ARRAY_INDEX ((uint32_t) (-1))
/** /**
* Description of arrays'/strings' length * Description of a collection's/string's length
*/ */
typedef uint16_t ecma_length_t; typedef uint16_t ecma_length_t;
/** /**
* Description of an Array's header * Description of a collection's header.
*/ */
typedef struct typedef struct
{ {
/** Compressed pointer to next chunk */ /** Compressed pointer to next chunk with collection's data */
uint16_t next_chunk_cp; uint16_t next_chunk_cp;
/** Number of elements in the Array */ /** Number of elements in the collection */
ecma_length_t unit_number; ecma_length_t unit_number;
} ecma_array_header_t;
/** Place for the collection's data */
uint8_t data[ sizeof (uint64_t) - sizeof (uint32_t) ];
} ecma_collection_header_t;
/** /**
* Description of first chunk in a chain of chunks that contains an Array. * Description of non-first chunk in a collection's chain of chunks
*/
typedef struct
{
/** Array's header */
ecma_array_header_t header;
/** Elements */
uint8_t data[ sizeof (uint64_t) - sizeof (ecma_array_header_t) ];
} ecma_array_first_chunk_t;
/**
* Description of non-first chunk in a chain of chunks that contains an Array
*/ */
typedef struct typedef struct
{ {
@@ -519,7 +510,7 @@ typedef struct
/** Characters */ /** Characters */
uint8_t data[ sizeof (uint64_t) - sizeof (uint16_t) ]; uint8_t data[ sizeof (uint64_t) - sizeof (uint16_t) ];
} ecma_array_non_first_chunk_t; } ecma_collection_chunk_t;
/** /**
* Identifier for ecma-string's actual data container * Identifier for ecma-string's actual data container
@@ -527,7 +518,7 @@ typedef struct
typedef enum typedef enum
{ {
ECMA_STRING_CONTAINER_HEAP, /**< actual data is on the heap ECMA_STRING_CONTAINER_HEAP, /**< actual data is on the heap
in ecma_array_non_first_chunk_t */ in a ecma_collection_chunk_t chain */
ECMA_STRING_CONTAINER_LIT_TABLE, /**< actual data is in literal table */ ECMA_STRING_CONTAINER_LIT_TABLE, /**< actual data is in literal table */
ECMA_STRING_CONTAINER_IN_DESCRIPTOR /**< actual data is locally in the string's descriptor */ ECMA_STRING_CONTAINER_IN_DESCRIPTOR /**< actual data is locally in the string's descriptor */
} ecma_string_container_t; } ecma_string_container_t;
@@ -560,7 +551,7 @@ typedef struct
/** Index of string in literal table */ /** Index of string in literal table */
literal_index_t lit_index; literal_index_t lit_index;
/** Compressed pointer to array_non_first_chunk_t */ /** Compressed pointer to an ecma_collection_chunk_t */
unsigned int chunk_cp : ECMA_POINTER_FIELD_WIDTH; unsigned int chunk_cp : ECMA_POINTER_FIELD_WIDTH;
/** Actual data if placed locally in the descriptor */ /** Actual data if placed locally in the descriptor */
+27 -27
View File
@@ -67,7 +67,7 @@ ecma_new_ecma_string (const ecma_char_t *string_p) /**< zero-terminated string *
ecma_length_t chars_left = length; ecma_length_t chars_left = length;
JERRY_ASSERT (chars_left > 0); JERRY_ASSERT (chars_left > 0);
ecma_array_non_first_chunk_t *string_chunk_p = ecma_alloc_array_non_first_chunk (); ecma_collection_chunk_t *string_chunk_p = ecma_alloc_collection_chunk ();
ECMA_SET_NON_NULL_POINTER (string_desc_p->u.chunk_cp, string_chunk_p); ECMA_SET_NON_NULL_POINTER (string_desc_p->u.chunk_cp, string_chunk_p);
@@ -80,7 +80,7 @@ ecma_new_ecma_string (const ecma_char_t *string_p) /**< zero-terminated string *
chars_left = (ecma_length_t) (chars_left - chars_to_copy); chars_left = (ecma_length_t) (chars_left - chars_to_copy);
src_p += chars_to_copy; src_p += chars_to_copy;
ecma_array_non_first_chunk_t* next_string_chunk_p = ecma_alloc_array_non_first_chunk (); ecma_collection_chunk_t* next_string_chunk_p = ecma_alloc_collection_chunk ();
ECMA_SET_NON_NULL_POINTER (string_chunk_p->next_chunk_cp, next_string_chunk_p); ECMA_SET_NON_NULL_POINTER (string_chunk_p->next_chunk_cp, next_string_chunk_p);
string_chunk_p = next_string_chunk_p; string_chunk_p = next_string_chunk_p;
} }
@@ -109,15 +109,15 @@ ecma_free_string (ecma_string_t *string_p) /**< ecma-string */
if (string_p->container == ECMA_STRING_CONTAINER_HEAP) if (string_p->container == ECMA_STRING_CONTAINER_HEAP)
{ {
ecma_array_non_first_chunk_t *chunk_p = ECMA_GET_POINTER (string_p->u.chunk_cp); ecma_collection_chunk_t *chunk_p = ECMA_GET_POINTER (string_p->u.chunk_cp);
JERRY_ASSERT (chunk_p != NULL); JERRY_ASSERT (chunk_p != NULL);
while (chunk_p != NULL) while (chunk_p != NULL)
{ {
ecma_array_non_first_chunk_t *next_chunk_p = ECMA_GET_POINTER (chunk_p->next_chunk_cp); ecma_collection_chunk_t *next_chunk_p = ECMA_GET_POINTER (chunk_p->next_chunk_cp);
ecma_dealloc_array_non_first_chunk (chunk_p); ecma_dealloc_collection_chunk (chunk_p);
chunk_p = next_chunk_p; chunk_p = next_chunk_p;
} }
@@ -173,7 +173,7 @@ ecma_string_to_zt_string (ecma_string_t *string_desc_p, /**< ecma-string descrip
} }
case ECMA_STRING_CONTAINER_HEAP: case ECMA_STRING_CONTAINER_HEAP:
{ {
ecma_array_non_first_chunk_t *string_chunk_p = ECMA_GET_POINTER(string_desc_p->u.chunk_cp); ecma_collection_chunk_t *string_chunk_p = ECMA_GET_POINTER (string_desc_p->u.chunk_cp);
const ecma_length_t max_chars_in_chunk = sizeof (string_chunk_p->data) / sizeof (ecma_char_t); const ecma_length_t max_chars_in_chunk = sizeof (string_chunk_p->data) / sizeof (ecma_char_t);
@@ -265,28 +265,28 @@ ecma_compare_ecma_string_to_ecma_string (const ecma_string_t *string1_p, /* ecma
} }
JERRY_ASSERT (string2_p->container == ECMA_STRING_CONTAINER_HEAP); JERRY_ASSERT (string2_p->container == ECMA_STRING_CONTAINER_HEAP);
ecma_array_non_first_chunk_t *string1_chunk_p, *string2_chunk_p; ecma_collection_chunk_t *string1_chunk_p, *string2_chunk_p;
const ecma_char_t *cur_char_array_1_p, *cur_char_array_2_p; const ecma_char_t *cur_char_buffer_1_iter_p, *cur_char_buffer_2_iter_p;
const ecma_char_t *cur_char_array_1_end_p, *cur_char_array_2_end_p; const ecma_char_t *cur_char_buffer_1_end_p, *cur_char_buffer_2_end_p;
if (string1_p->container == ECMA_STRING_CONTAINER_IN_DESCRIPTOR) if (string1_p->container == ECMA_STRING_CONTAINER_IN_DESCRIPTOR)
{ {
string1_chunk_p = NULL; string1_chunk_p = NULL;
cur_char_array_1_p = string1_p->u.chars; cur_char_buffer_1_iter_p = string1_p->u.chars;
cur_char_array_1_end_p = cur_char_array_1_p + sizeof (string1_p->u.chars) / sizeof (ecma_char_t); cur_char_buffer_1_end_p = cur_char_buffer_1_iter_p + sizeof (string1_p->u.chars) / sizeof (ecma_char_t);
} }
else else
{ {
string1_chunk_p = ECMA_GET_POINTER (string1_p->u.chunk_cp); string1_chunk_p = ECMA_GET_POINTER (string1_p->u.chunk_cp);
cur_char_array_1_p = string1_chunk_p->data; cur_char_buffer_1_iter_p = string1_chunk_p->data;
cur_char_array_1_end_p = cur_char_array_1_p + sizeof (string1_chunk_p->data) / sizeof (ecma_char_t); cur_char_buffer_1_end_p = cur_char_buffer_1_iter_p + sizeof (string1_chunk_p->data) / sizeof (ecma_char_t);
} }
string2_chunk_p = ECMA_GET_POINTER (string2_p->u.chunk_cp); string2_chunk_p = ECMA_GET_POINTER (string2_p->u.chunk_cp);
cur_char_array_2_p = string2_chunk_p->data; cur_char_buffer_2_iter_p = string2_chunk_p->data;
cur_char_array_2_end_p = cur_char_array_2_p + sizeof (string2_chunk_p->data) / sizeof (ecma_char_t); cur_char_buffer_2_end_p = cur_char_buffer_2_iter_p + sizeof (string2_chunk_p->data) / sizeof (ecma_char_t);
/* /*
* The assertion check allows to combine update of cur_char_array_1_p and cur_char_array_2_p pointers, * The assertion check allows to combine update of cur_char_buffer_1_iter_p and cur_char_buffer_2_iter_p pointers,
* because: * because:
* - if we reached end of string in descriptor then we reached end of string => chars_left is zero; * - if we reached end of string in descriptor then we reached end of string => chars_left is zero;
* - if we reached end of string chunk in heap then we reached end of other string's chunk too * - if we reached end of string chunk in heap then we reached end of other string's chunk too
@@ -297,12 +297,12 @@ ecma_compare_ecma_string_to_ecma_string (const ecma_string_t *string1_p, /* ecma
while (chars_left > 0) while (chars_left > 0)
{ {
if (cur_char_array_1_p != cur_char_array_1_end_p if (cur_char_buffer_1_iter_p != cur_char_buffer_1_end_p
&& cur_char_array_2_p != cur_char_array_2_end_p) && cur_char_buffer_2_iter_p != cur_char_buffer_2_end_p)
{ {
JERRY_ASSERT (cur_char_array_2_p < cur_char_array_2_end_p); JERRY_ASSERT (cur_char_buffer_2_iter_p < cur_char_buffer_2_end_p);
if (*cur_char_array_1_p++ != *cur_char_array_2_p++) if (*cur_char_buffer_1_iter_p++ != *cur_char_buffer_2_iter_p++)
{ {
return false; return false;
} }
@@ -312,21 +312,21 @@ ecma_compare_ecma_string_to_ecma_string (const ecma_string_t *string1_p, /* ecma
continue; continue;
} }
if (cur_char_array_1_p == cur_char_array_1_end_p) if (cur_char_buffer_1_iter_p == cur_char_buffer_1_end_p)
{ {
JERRY_ASSERT (string1_p->container == ECMA_STRING_CONTAINER_HEAP JERRY_ASSERT (string1_p->container == ECMA_STRING_CONTAINER_HEAP
&& string2_p->container == ECMA_STRING_CONTAINER_HEAP); && string2_p->container == ECMA_STRING_CONTAINER_HEAP);
JERRY_ASSERT (cur_char_array_2_p == cur_char_array_2_end_p); JERRY_ASSERT (cur_char_buffer_2_iter_p == cur_char_buffer_2_end_p);
string1_chunk_p = ECMA_GET_POINTER (string1_chunk_p->next_chunk_cp); string1_chunk_p = ECMA_GET_POINTER (string1_chunk_p->next_chunk_cp);
JERRY_ASSERT (string1_chunk_p != NULL); JERRY_ASSERT (string1_chunk_p != NULL);
cur_char_array_1_p = string1_chunk_p->data; cur_char_buffer_1_iter_p = string1_chunk_p->data;
cur_char_array_1_end_p = cur_char_array_1_p + sizeof (string1_chunk_p->data) / sizeof (ecma_char_t); cur_char_buffer_1_end_p = cur_char_buffer_1_iter_p + sizeof (string1_chunk_p->data) / sizeof (ecma_char_t);
string2_chunk_p = ECMA_GET_POINTER (string2_chunk_p->next_chunk_cp); string2_chunk_p = ECMA_GET_POINTER (string2_chunk_p->next_chunk_cp);
JERRY_ASSERT (string2_chunk_p != NULL); JERRY_ASSERT (string2_chunk_p != NULL);
cur_char_array_2_p = string2_chunk_p->data; cur_char_buffer_2_iter_p = string2_chunk_p->data;
cur_char_array_2_end_p = cur_char_array_2_p + sizeof (string2_chunk_p->data) / sizeof (ecma_char_t); cur_char_buffer_2_end_p = cur_char_buffer_2_iter_p + sizeof (string2_chunk_p->data) / sizeof (ecma_char_t);
} }
} }
@@ -366,7 +366,7 @@ ecma_compare_zt_string_to_ecma_string (const ecma_char_t *string_p, /**< zero-te
ecma_length_t ecma_str_len = ecma_string_p->length; ecma_length_t ecma_str_len = ecma_string_p->length;
const ecma_char_t *current_chunk_chars_cur; const ecma_char_t *current_chunk_chars_cur;
const ecma_char_t *current_chunk_chars_end; const ecma_char_t *current_chunk_chars_end;
ecma_array_non_first_chunk_t *string_chunk_p = NULL; ecma_collection_chunk_t *string_chunk_p = NULL;
if (ecma_string_p->container == ECMA_STRING_CONTAINER_IN_DESCRIPTOR) if (ecma_string_p->container == ECMA_STRING_CONTAINER_IN_DESCRIPTOR)
{ {
+15 -12
View File
@@ -393,11 +393,14 @@ ecma_free_internal_property (ecma_property_t *property_p) /**< the property */
switch (property_id) switch (property_id)
{ {
case ECMA_INTERNAL_PROPERTY_NUMBER_INDEXED_ARRAY_VALUES: /* an array */ case ECMA_INTERNAL_PROPERTY_NUMBER_INDEXED_ARRAY_VALUES: /* a collection */
case ECMA_INTERNAL_PROPERTY_STRING_INDEXED_ARRAY_VALUES: /* an array */ case ECMA_INTERNAL_PROPERTY_STRING_INDEXED_ARRAY_VALUES: /* a collection */
case ECMA_INTERNAL_PROPERTY_FORMAL_PARAMETERS: /* an array */ case ECMA_INTERNAL_PROPERTY_FORMAL_PARAMETERS: /* a collection */
{ {
ecma_free_array (ECMA_GET_POINTER(property_value)); TODO (/* Free collection's elements */);
JERRY_UNIMPLEMENTED();
ecma_free_collection (ECMA_GET_POINTER(property_value));
break; break;
} }
@@ -483,26 +486,26 @@ ecma_delete_property (ecma_object_t *obj_p, /**< object */
} /* ecma_delete_property */ } /* ecma_delete_property */
/** /**
* Free all chunks of an array * Free all chunks of a collection
*/ */
void void
ecma_free_array (ecma_array_first_chunk_t *first_chunk_p) /**< first chunk of the array */ ecma_free_collection (ecma_collection_header_t *collection_header_p) /**< header of collection */
{ {
JERRY_ASSERT(first_chunk_p != NULL); JERRY_ASSERT(collection_header_p != NULL);
ecma_array_non_first_chunk_t *non_first_chunk_p = ECMA_GET_POINTER (first_chunk_p->header.next_chunk_cp); ecma_collection_chunk_t *non_first_chunk_p = ECMA_GET_POINTER (collection_header_p->next_chunk_cp);
ecma_dealloc_array_first_chunk (first_chunk_p); ecma_dealloc_collection_header (collection_header_p);
while (non_first_chunk_p != NULL) while (non_first_chunk_p != NULL)
{ {
ecma_array_non_first_chunk_t *next_chunk_p = ECMA_GET_POINTER (non_first_chunk_p->next_chunk_cp); ecma_collection_chunk_t *next_chunk_p = ECMA_GET_POINTER (non_first_chunk_p->next_chunk_cp);
ecma_dealloc_array_non_first_chunk (non_first_chunk_p); ecma_dealloc_collection_chunk (non_first_chunk_p);
non_first_chunk_p = next_chunk_p; non_first_chunk_p = next_chunk_p;
} }
} /* ecma_free_array */ } /* ecma_free_collection */
/** /**
* Construct empty property descriptor. * Construct empty property descriptor.
+1 -1
View File
@@ -139,7 +139,7 @@ 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 void ecma_delete_property (ecma_object_t *obj_p, ecma_property_t *prop_p);
extern void ecma_free_array (ecma_array_first_chunk_t *first_chunk_p); extern void ecma_free_collection (ecma_collection_header_t *collection_header_p);
extern ecma_property_descriptor_t ecma_make_empty_property_descriptor (void); extern ecma_property_descriptor_t ecma_make_empty_property_descriptor (void);