]> granicus.if.org Git - php/commitdiff
Significant speed enhancements. I was underestimating the power of recent
authorMoriyoshi Koizumi <moriyoshi@php.net>
Fri, 17 Jan 2003 09:04:02 +0000 (09:04 +0000)
committerMoriyoshi Koizumi <moriyoshi@php.net>
Fri, 17 Jan 2003 09:04:02 +0000 (09:04 +0000)
CPUs :)

ext/standard/filters.c

index 676ccddeabbbe8c73c2dcf8aaa7a925e3b1e1872..85ee31de7bca486db2e27e4fbd09cf2809b8fc00 100644 (file)
@@ -533,6 +533,7 @@ static void php_conv_base64_decode_dtor(php_conv_base64_decode *inst)
        /* do nothing */
 }
 
+#define bmask(a) (0xffff >> (16 - a))
 static php_conv_err_t php_conv_base64_decode_convert(php_conv_base64_decode *inst, const char **in_pp, size_t *in_left_p, char **out_pp, size_t *out_left_p)
 {
        php_conv_err_t err;
@@ -545,12 +546,6 @@ static php_conv_err_t php_conv_base64_decode_convert(php_conv_base64_decode *ins
 
        const static unsigned int nbitsof_pack = 8;
 
-       static unsigned int bmask[17] = {
-               0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f,
-               0x00ff, 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff,
-               0xffff
-       };
-
        if (in_pp == NULL || in_left_p == NULL) {
                if (inst->eos || inst->urem_nbits == 0) { 
                        return SUCCESS;
@@ -580,7 +575,7 @@ static php_conv_err_t php_conv_base64_decode_convert(php_conv_base64_decode *ins
                } else {
                        urem_nbits -= pack_bcnt;
                        pack |= (urem >> urem_nbits);
-                       urem &= bmask[urem_nbits];
+                       urem &= bmask(urem_nbits);
                        pack_bcnt = 0;
                }
                if (pack_bcnt > 0) {
@@ -606,7 +601,7 @@ static php_conv_err_t php_conv_base64_decode_convert(php_conv_base64_decode *ins
                                } else {
                                        urem_nbits = 6 - pack_bcnt;
                                        pack |= (i >> urem_nbits);
-                                       urem = i & bmask[urem_nbits];
+                                       urem = i & bmask(urem_nbits);
                                        pack_bcnt = 0;
                                }
                        } else if (ustat) {
@@ -648,6 +643,7 @@ static php_conv_err_t php_conv_base64_decode_convert(php_conv_base64_decode *ins
 
        return err;
 }
+#undef bmask
 /* }}} */
 
 /* {{{ php_conv_qprint_encode */