Improve ecma_string_t descriptor (#3016)
This patch introduces several changes conntect to ecma-strings: - Extend the size of the reference counter to 28 bytes from 13 - Extend the size of the string hash to 32 bytes from 16 to use the extact FNV-1a hash - Introduce ECMA_STATIC_STRING_FLAG to reduce the number of string ref/derefs for static strings. - Introduce ECMA_STRING_CONTAINER_ASCII_STRING to store run-time allocated ASCII strings more efficiently - Remove ECMA_STRING_CONTAINER_LIT_NUMBER to half the storage size of the parsing time allocated floating point numbers - Rework the global number storage, to store only the floating point numbers - Optimize the lookup in the global number/string/symbol tables via reduce the number of NULL checks during decompressing the next element pointers - Reduce the code duplication in ecma_concat_ecma_strings and ecma_append_chars_to_string - Improve ecma_string_get_char with optional arguments to make it more reusable. JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu
This commit is contained in:
@@ -476,7 +476,7 @@ ecma_op_container_foreach (ecma_value_t this_arg, /**< this argument */
|
||||
}
|
||||
else if (ecma_prop_name_is_map_key (prop_name_p))
|
||||
{
|
||||
key_arg = prop_name_p->u.value;
|
||||
key_arg = ((ecma_extended_string_t *) prop_name_p)->u.value;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -730,7 +730,7 @@ ecma_op_container_iterator_next (ecma_value_t this_val, /**< this argument */
|
||||
}
|
||||
else if (ecma_prop_name_is_map_key (prop_name_p))
|
||||
{
|
||||
key_arg = prop_name_p->u.value;
|
||||
key_arg = ((ecma_extended_string_t *) prop_name_p)->u.value;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -111,7 +111,7 @@ ecma_get_symbol_description (ecma_string_t *symbol_p) /**< ecma-symbol */
|
||||
JERRY_ASSERT (symbol_p != NULL);
|
||||
JERRY_ASSERT (ecma_prop_name_is_symbol (symbol_p));
|
||||
|
||||
return ecma_get_string_from_value (symbol_p->u.symbol_descriptor);
|
||||
return ecma_get_string_from_value (((ecma_extended_string_t *) symbol_p)->u.symbol_descriptor);
|
||||
} /* ecma_get_symbol_description */
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user