Introducing new type of ecma-string: concatenation of two ecma-strings (comparison is not implemented). loop_arithmetics_1kk.js: 2.8968 -> 2.8464.

This commit is contained in:
Ruben Ayrapetyan
2014-08-26 10:59:03 +04:00
parent d0963f6d3d
commit c72555d25f
3 changed files with 85 additions and 1 deletions
+9 -1
View File
@@ -542,8 +542,9 @@ typedef enum
ECMA_STRING_CONTAINER_HEAP_NUMBER, /**< actual data is on the heap as a ecma_number_t */
ECMA_STRING_CONTAINER_CHARS_IN_DESC, /**< actual data are several characters
stored locally in the string's descriptor */
ECMA_STRING_CONTAINER_UINT32_IN_DESC /**< actual data is UInt32-represeneted Number
ECMA_STRING_CONTAINER_UINT32_IN_DESC, /**< actual data is UInt32-represeneted Number
stored locally in the string's descriptor */
ECMA_STRING_CONTAINER_CONCATENATION /**< the ecma-string is concatenation of two specified ecma-strings */
} ecma_string_container_t;
FIXME (Move to library that should define the type (libserializer /* ? */))
@@ -585,6 +586,13 @@ typedef struct
/** UInt32-represented number placed locally in the descriptor */
uint32_t uint32_number;
/** Representation of concatenation */
struct
{
unsigned int string1_cp : ECMA_POINTER_FIELD_WIDTH;
unsigned int string2_cp : ECMA_POINTER_FIELD_WIDTH;
} concatenation;
} u;
} ecma_string_t;