From: Andrei Zmievski Date: Mon, 16 Oct 2006 21:13:13 +0000 (+0000) Subject: Optimize ZEND_U_CASE_EQUAL() and move it to the header file. X-Git-Tag: RELEASE_1_0_0RC1~1275 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6d38ea2988dcf4f6086a49b80694a7b3d18a8535;p=php Optimize ZEND_U_CASE_EQUAL() and move it to the header file. --- diff --git a/Zend/zend.h b/Zend/zend.h index f822c56bdc..4f21ecf6dd 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -707,6 +707,22 @@ END_EXTERN_C() (!memcmp((ustr).s,(str),(slen))): \ (!zend_cmp_unicode_and_literal((ustr).u, ulen, str, slen))) +static inline int ZEND_U_CASE_EQUAL(zend_uchar type, zstr ustr, int ulen, char *str, int slen) +{ + zstr lcname; + int ret; + + if (type == IS_UNICODE) { + lcname.u = zend_ascii_to_unicode(str, slen+1 ZEND_FILE_LINE_CC); + ret = !u_memcasecmp(lcname.u, ustr.u, slen, 0); + } else { + lcname.s = zend_str_tolower_dup(ustr.s, ulen); + ret = !memcmp(lcname.s, str, slen); + } + efree(lcname.v); + return ret; +} + #endif /* ZEND_H */ diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 3bf3514144..227bfc746c 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1324,19 +1324,6 @@ void zend_do_end_function_declaration(znode *function_token TSRMLS_DC) } -static inline int ZEND_U_CASE_EQUAL(zend_uchar type, zstr ustr, int ulen, char *str, int slen) -{ - zstr lcname; - unsigned int lcname_len; - int ret; - - lcname = zend_u_str_case_fold(type, ustr, ulen, 0, &lcname_len); - ret = ZEND_U_EQUAL(type, lcname, lcname_len, str, slen); - efree(lcname.v); - return ret; -} - - void zend_do_receive_arg(zend_uchar op, znode *var, znode *offset, znode *initialization, znode *class_type, znode *varname, zend_uchar pass_by_reference TSRMLS_DC) { zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC);