aboutsummaryrefslogtreecommitdiff
path: root/jerry-libc
diff options
context:
space:
mode:
authorXin Hu <Xin.A.Hu@intel.com>2015-12-15 00:39:34 -0500
committerRuben Ayrapetyan <r.ayrapetyan@samsung.com>2016-01-14 19:55:13 +0300
commitba95cb010ab7a5fee516e6a0555feec6ea67234e (patch)
tree9deb2c70e2c1e95aaf74a4af96a271263d7ef023 /jerry-libc
parentf6bd5afa429a14ad6288cbe63df54f67afd1ac85 (diff)
Update strcmp implementation, to improve performance
JerryScript-DCO-1.0-Signed-off-by: Xin Hu Xin.A.Hu@intel.com
Diffstat (limited to 'jerry-libc')
-rw-r--r--jerry-libc/jerry-libc.c40
1 files changed, 10 insertions, 30 deletions
diff --git a/jerry-libc/jerry-libc.c b/jerry-libc/jerry-libc.c
index 4db3063c..5e973ded 100644
--- a/jerry-libc/jerry-libc.c
+++ b/jerry-libc/jerry-libc.c
@@ -156,43 +156,23 @@ CALL_PRAGMA (GCC diagnostic pop)
/** Compare two strings. return an integer less than, equal to, or greater than zero
if s1 is found, respectively, to be less than, to match, or be greater than s2. */
int
-strcmp (const char *s1, const char *s2)
+strcmp (const char *str1, const char *str2)
{
- size_t i;
- if (s1 == NULL)
- {
- if (s2 != NULL)
- {
- return -1;
- }
- else
- {
- return 0;
- }
- }
- if (s2 == NULL)
+ int s1;
+ int s2;
+ do
{
- return 1;
- }
+ s1 = *str1++;
+ s2 = *str2++;
- for (i = 0; s1[i]; i++)
- {
- if (s1[i] > s2[i])
- {
- return 1;
- }
- else if (s1[i] < s2[i])
+ if (s1 == 0)
{
- return -1;
+ break;
}
}
+ while (s1 == s2);
- if (s2[i])
- {
- return -1;
- }
-
- return 0;
+ return (s1 < s2) ? -1 : (s1 > s2 ? 1 : 0);
}
/** Compare two strings. return an integer less than, equal to, or greater than zero