]> granicus.if.org Git - php/commitdiff
Optimize ZEND_U_CASE_EQUAL() and move it to the header file.
authorAndrei Zmievski <andrei@php.net>
Mon, 16 Oct 2006 21:13:13 +0000 (21:13 +0000)
committerAndrei Zmievski <andrei@php.net>
Mon, 16 Oct 2006 21:13:13 +0000 (21:13 +0000)
Zend/zend.h
Zend/zend_compile.c

index f822c56bdcce592d84512ccd322b1b48353058ed..4f21ecf6dd73bb2e69aecfcf4d7d053418165fce 100644 (file)
@@ -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 */
 
index 3bf3514144d429f9290a3ef6b5ce4b8920270b95..227bfc746c53e5747bc3629594b60182f62e7a36 100644 (file)
@@ -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);