Optimize string concatenation. (#2141)
This patch adds two new string concatenation functions: ecma_append_chars_to_string and ecma_append_magic_string_to_string The former appends a cesu8 byte array and the latter appends a magic string to the end of an ecma-string. These two free (dereference) their ecma-string argument, and this change is also applied to the original ecma_concat_ecma_strings function which simplifies string handling in most cases. JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
@@ -18,15 +18,11 @@
|
||||
|
||||
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING__EMPTY, "")
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_NEW_LINE_CHAR, "\n")
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SPACE_CHAR, " ")
|
||||
#if !defined (CONFIG_DISABLE_JSON_BUILTIN)
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_DOUBLE_QUOTE_CHAR, "\"")
|
||||
#endif
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_COMMA_CHAR, ",")
|
||||
#if !defined (CONFIG_DISABLE_NUMBER_BUILTIN)
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MINUS_CHAR, "-")
|
||||
#endif
|
||||
#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN)
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SLASH_CHAR, "/")
|
||||
#endif
|
||||
@@ -35,19 +31,7 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_COLON_CHAR, ":")
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_E_U, "E")
|
||||
#endif
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LEFT_SQUARE_CHAR, "[")
|
||||
#if !defined (CONFIG_DISABLE_JSON_BUILTIN)
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BACKSLASH_CHAR, "\\")
|
||||
#endif
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_RIGHT_SQUARE_CHAR, "]")
|
||||
#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN)
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_G_CHAR, "g")
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_I_CHAR, "i")
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_M_CHAR, "m")
|
||||
#endif
|
||||
#if !defined (CONFIG_DISABLE_JSON_BUILTIN)
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LEFT_BRACE_CHAR, "{")
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_RIGHT_BRACE_CHAR, "}")
|
||||
#endif
|
||||
#if !defined (CONFIG_DISABLE_MATH_BUILTIN)
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PI_U, "PI")
|
||||
#endif
|
||||
@@ -550,7 +534,7 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_OWN_PROPERTY_DESCRIPTOR_UL, "getOwnPr
|
||||
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING__FUNCTION_TO_STRING, "function(){/* ecmascript */}")
|
||||
|
||||
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (0, LIT_MAGIC_STRING__EMPTY)
|
||||
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (1, LIT_MAGIC_STRING_NEW_LINE_CHAR)
|
||||
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (1, LIT_MAGIC_STRING_SPACE_CHAR)
|
||||
#if !defined (CONFIG_DISABLE_MATH_BUILTIN)
|
||||
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_PI_U)
|
||||
#elif !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN)
|
||||
|
||||
@@ -23,22 +23,14 @@
|
||||
[LIT_MAGIC_STRINGS]
|
||||
|
||||
LIT_MAGIC_STRING__EMPTY = ""
|
||||
LIT_MAGIC_STRING_NEW_LINE_CHAR = "\n"
|
||||
LIT_MAGIC_STRING_SPACE_CHAR = " "
|
||||
LIT_MAGIC_STRING_DOUBLE_QUOTE_CHAR = "\""
|
||||
LIT_MAGIC_STRING_COMMA_CHAR = ","
|
||||
LIT_MAGIC_STRING_MINUS_CHAR = "-"
|
||||
LIT_MAGIC_STRING_SLASH_CHAR = "/"
|
||||
LIT_MAGIC_STRING_COLON_CHAR = ":"
|
||||
LIT_MAGIC_STRING_E_U = "E"
|
||||
LIT_MAGIC_STRING_LEFT_SQUARE_CHAR = "["
|
||||
LIT_MAGIC_STRING_BACKSLASH_CHAR = "\\"
|
||||
LIT_MAGIC_STRING_RIGHT_SQUARE_CHAR = "]"
|
||||
LIT_MAGIC_STRING_G_CHAR = "g"
|
||||
LIT_MAGIC_STRING_I_CHAR = "i"
|
||||
LIT_MAGIC_STRING_M_CHAR = "m"
|
||||
LIT_MAGIC_STRING_LEFT_BRACE_CHAR = "{"
|
||||
LIT_MAGIC_STRING_RIGHT_BRACE_CHAR = "}"
|
||||
LIT_MAGIC_STRING_PI_U = "PI"
|
||||
LIT_MAGIC_STRING_OF = "of"
|
||||
LIT_MAGIC_STRING_LN2_U = "LN2"
|
||||
|
||||
Reference in New Issue
Block a user