ecma_compare_ecma_strings_longpath performance improvement

- use switch to replace if

JerryScript-DCO-1.0-Signed-off-by: Xin Hu Xin.A.Hu@intel.com
This commit is contained in:
Xin Hu
2016-01-19 22:17:35 -05:00
committed by László Langó
parent dfb22c3441
commit 1466a5b317
+16 -30
View File
@@ -1043,30 +1043,35 @@ ecma_compare_ecma_strings_longpath (const ecma_string_t *string1_p, /* ecma-stri
{ {
if (string1_p->container == string2_p->container) if (string1_p->container == string2_p->container)
{ {
if (string1_p->container == ECMA_STRING_CONTAINER_LIT_TABLE) switch ((ecma_string_container_t) string1_p->container)
{
case ECMA_STRING_CONTAINER_LIT_TABLE:
{ {
JERRY_ASSERT (string1_p->u.lit_cp.packed_value != string2_p->u.lit_cp.packed_value); JERRY_ASSERT (string1_p->u.lit_cp.packed_value != string2_p->u.lit_cp.packed_value);
return false; return false;
} }
else if (string1_p->container == ECMA_STRING_CONTAINER_MAGIC_STRING) case ECMA_STRING_CONTAINER_MAGIC_STRING:
{ {
JERRY_ASSERT (string1_p->u.magic_string_id != string2_p->u.magic_string_id); JERRY_ASSERT (string1_p->u.magic_string_id != string2_p->u.magic_string_id);
return false; return false;
} }
else if (string1_p->container == ECMA_STRING_CONTAINER_MAGIC_STRING_EX) case ECMA_STRING_CONTAINER_MAGIC_STRING_EX:
{ {
JERRY_ASSERT (string1_p->u.magic_string_ex_id != string2_p->u.magic_string_ex_id); JERRY_ASSERT (string1_p->u.magic_string_ex_id != string2_p->u.magic_string_ex_id);
return false; return false;
} }
else if (string1_p->container == ECMA_STRING_CONTAINER_UINT32_IN_DESC) case ECMA_STRING_CONTAINER_UINT32_IN_DESC:
{ {
JERRY_ASSERT (string1_p->u.uint32_number != string2_p->u.uint32_number); JERRY_ASSERT (string1_p->u.uint32_number != string2_p->u.uint32_number);
return false; return false;
} }
default:
{
JERRY_ASSERT (string1_p->container == ECMA_STRING_CONTAINER_HEAP_NUMBER
|| string1_p->container == ECMA_STRING_CONTAINER_HEAP_CHUNKS);
break;
}
}
} }
const lit_utf8_size_t string1_size = ecma_string_get_size (string1_p); const lit_utf8_size_t string1_size = ecma_string_get_size (string1_p);
@@ -1111,29 +1116,10 @@ ecma_compare_ecma_strings_longpath (const ecma_string_t *string1_p, /* ecma-stri
return ecma_compare_chars_collection (chars_collection1_p, chars_collection2_p); return ecma_compare_chars_collection (chars_collection1_p, chars_collection2_p);
} }
case ECMA_STRING_CONTAINER_LIT_TABLE: default:
{ {
JERRY_ASSERT (string1_p->u.lit_cp.packed_value != string2_p->u.lit_cp.packed_value); JERRY_ASSERT (false);
break;
return false;
}
case ECMA_STRING_CONTAINER_MAGIC_STRING:
{
JERRY_ASSERT (string1_p->u.magic_string_id != string2_p->u.magic_string_id);
return false;
}
case ECMA_STRING_CONTAINER_MAGIC_STRING_EX:
{
JERRY_ASSERT (string1_p->u.magic_string_ex_id != string2_p->u.magic_string_ex_id);
return false;
}
case ECMA_STRING_CONTAINER_UINT32_IN_DESC:
{
JERRY_ASSERT (string1_p->u.uint32_number != string2_p->u.uint32_number);
return false;
} }
} }
} }