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
+30 -44
View File
@@ -1043,29 +1043,34 @@ 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)
{ {
JERRY_ASSERT (string1_p->u.lit_cp.packed_value != string2_p->u.lit_cp.packed_value); case ECMA_STRING_CONTAINER_LIT_TABLE:
{
return false; JERRY_ASSERT (string1_p->u.lit_cp.packed_value != string2_p->u.lit_cp.packed_value);
} 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; }
} case ECMA_STRING_CONTAINER_UINT32_IN_DESC:
else if (string1_p->container == 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;
}
} }
} }
@@ -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;
} }
} }
} }