mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
Improve case conversion related fast paths (#4083)
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai daniel.batyai@h-lab.eu
This commit is contained in:
parent
40ad8c6e45
commit
611c8827ba
@ -788,16 +788,19 @@ lit_code_point_t
|
||||
lit_char_to_lower_case (lit_code_point_t cp, /**< code point */
|
||||
ecma_stringbuilder_t *builder_p) /**< string builder */
|
||||
{
|
||||
if (cp >= LIT_CHAR_UPPERCASE_A && cp <= LIT_CHAR_UPPERCASE_Z)
|
||||
if (cp <= LIT_UTF8_1_BYTE_CODE_POINT_MAX)
|
||||
{
|
||||
lit_utf8_byte_t lowercase_char = (lit_utf8_byte_t) (cp + (LIT_CHAR_LOWERCASE_A - LIT_CHAR_UPPERCASE_A));
|
||||
if (cp >= LIT_CHAR_UPPERCASE_A && cp <= LIT_CHAR_UPPERCASE_Z)
|
||||
{
|
||||
cp = (lit_utf8_byte_t) (cp + (LIT_CHAR_LOWERCASE_A - LIT_CHAR_UPPERCASE_A));
|
||||
}
|
||||
|
||||
if (builder_p != NULL)
|
||||
{
|
||||
ecma_stringbuilder_append_byte (builder_p, lowercase_char);
|
||||
ecma_stringbuilder_append_byte (builder_p, (lit_utf8_byte_t) cp);
|
||||
}
|
||||
|
||||
return lowercase_char;
|
||||
return cp;
|
||||
}
|
||||
|
||||
#if ENABLED (JERRY_UNICODE_CASE_CONVERSION)
|
||||
@ -859,16 +862,19 @@ lit_code_point_t
|
||||
lit_char_to_upper_case (lit_code_point_t cp, /**< code point */
|
||||
ecma_stringbuilder_t *builder_p) /**< string builder */
|
||||
{
|
||||
if (cp >= LIT_CHAR_LOWERCASE_A && cp <= LIT_CHAR_LOWERCASE_Z)
|
||||
if (cp <= LIT_UTF8_1_BYTE_CODE_POINT_MAX)
|
||||
{
|
||||
lit_utf8_byte_t uppercase_char = (lit_utf8_byte_t) (cp - (LIT_CHAR_LOWERCASE_A - LIT_CHAR_UPPERCASE_A));
|
||||
if (cp >= LIT_CHAR_LOWERCASE_A && cp <= LIT_CHAR_LOWERCASE_Z)
|
||||
{
|
||||
cp = (lit_utf8_byte_t) (cp - (LIT_CHAR_LOWERCASE_A - LIT_CHAR_UPPERCASE_A));
|
||||
}
|
||||
|
||||
if (builder_p != NULL)
|
||||
{
|
||||
ecma_stringbuilder_append_byte (builder_p, uppercase_char);
|
||||
ecma_stringbuilder_append_byte (builder_p, (lit_utf8_byte_t) cp);
|
||||
}
|
||||
|
||||
return uppercase_char;
|
||||
return cp;
|
||||
}
|
||||
|
||||
#if ENABLED (JERRY_UNICODE_CASE_CONVERSION)
|
||||
@ -929,7 +935,8 @@ bool
|
||||
lit_char_fold_to_lower (lit_code_point_t cp) /**< code point */
|
||||
{
|
||||
#if ENABLED (JERRY_UNICODE_CASE_CONVERSION)
|
||||
return (cp > LIT_UTF16_CODE_UNIT_MAX
|
||||
return (cp <= LIT_UTF8_1_BYTE_CODE_POINT_MAX
|
||||
|| cp > LIT_UTF16_CODE_UNIT_MAX
|
||||
|| (!lit_search_char_in_interval_array ((ecma_char_t) cp,
|
||||
lit_unicode_folding_skip_to_lower_interval_starts,
|
||||
lit_unicode_folding_skip_to_lower_interval_lengths,
|
||||
@ -952,7 +959,8 @@ bool
|
||||
lit_char_fold_to_upper (lit_code_point_t cp) /**< code point */
|
||||
{
|
||||
#if ENABLED (JERRY_UNICODE_CASE_CONVERSION)
|
||||
return (cp <= LIT_UTF16_CODE_UNIT_MAX
|
||||
return (cp > LIT_UTF8_1_BYTE_CODE_POINT_MAX
|
||||
&& cp <= LIT_UTF16_CODE_UNIT_MAX
|
||||
&& (lit_search_char_in_interval_array ((ecma_char_t) cp,
|
||||
lit_unicode_folding_to_upper_interval_starts,
|
||||
lit_unicode_folding_to_upper_interval_lengths,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user