Changeset 208


Ignore:
Timestamp:
2006-10-01T12:55:48+02:00 (8 years ago)
Author:
moo
Message:

coverager: simplify cov data and fix clean

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/coverager.c

    r207 r208  
    147147            for (; len >= sizeof(long) * 2; len -= sizeof(long) * 2, p += 2) { 
    148148                if (zend_hash_index_find(cov, p[0], (void**)&phits) == SUCCESS) { 
    149                     if (p[1] <= 0) { 
    150                         /* already marked */ 
     149                    if (p[1] == 0) { 
     150                        /* OPTIMIZE: already marked */ 
    151151                        continue; 
    152152                    } 
    153                     if (*phits > 0) { 
    154                         p[1] += *phits; 
    155                     } 
     153                    p[1] += *phits; 
    156154                } 
    157155                zend_hash_index_update(cov, p[0], &p[1], sizeof(p[1]), NULL); 
     
    173171    while (zend_hash_get_current_data_ex(cov, (void**)&phits, &pos) == SUCCESS) { 
    174172        *p++ = pos->h; 
    175         if (*phits <= 0) { 
    176             *p++ = 0; 
    177         } 
    178         else { 
    179             *p++ = *phits; 
     173        *p++ = *phits; 
     174        if (*phits > 0) { 
    180175            covlines ++; 
    181176        } 
     
    208203{ 
    209204    if (XG(coverages)) { 
     205        HashPosition pos; 
     206        coverager_t *pcov; 
     207 
     208        zend_hash_internal_pointer_reset_ex(XG(coverages), &pos); 
     209        while (zend_hash_get_current_data_ex(XG(coverages), (void **) &pcov, &pos) == SUCCESS) { 
     210            long *phits; 
     211            coverager_t cov; 
     212            HashPosition pos2; 
     213            uint size; 
     214 
     215            cov = *pcov; 
     216 
     217            zend_hash_internal_pointer_reset_ex(cov, &pos2); 
     218            while (zend_hash_get_current_data_ex(cov, (void**)&phits, &pos2) == SUCCESS) { 
     219                long hits = *phits; 
     220 
     221                if (hits != 0) { 
     222                    hits = 0; 
     223                    zend_hash_index_update(cov, pos2->h, &hits, sizeof(hits), NULL); 
     224                } 
     225                zend_hash_move_forward_ex(cov, &pos2); 
     226            } 
     227 
     228            zend_hash_move_forward_ex(XG(coverages), &pos); 
     229        } 
     230    } 
     231} 
     232/* }}} */ 
     233static void xc_coverager_cleanup(TSRMLS_D) /* {{{ */ 
     234{ 
     235    if (XG(coverages)) { 
    210236        zend_hash_destroy(XG(coverages)); 
    211237        efree(XG(coverages)); 
     
    218244{ 
    219245    XG(coverage_enabled) = 1; 
    220     xc_coverager_initenv(TSRMLS_C); 
    221246} 
    222247/* }}} */ 
     
    316341    if (XG(coverager)) { 
    317342        xc_coverager_autodump(TSRMLS_C); 
    318         xc_coverager_clean(TSRMLS_C); 
     343        xc_coverager_cleanup(TSRMLS_C); 
    319344    } 
    320345} 
     
    352377    } 
    353378    if (zend_hash_index_find(cov, line, (void**)&poldhits) == SUCCESS) { 
    354         if (hits == -1) { 
    355             /* already marked */ 
     379        if (hits == 0) { 
     380            /* OPTIMIZE: already marked */ 
    356381            return; 
    357382        } 
    358         if (*poldhits != -1) { 
    359             hits += *poldhits; 
    360         } 
     383        hits += *poldhits; 
    361384    } 
    362385    zend_hash_index_update(cov, line, &hits, sizeof(hits), NULL); 
     
    407430            case ZEND_EXT_FCALL_END: 
    408431#endif 
    409                 xc_coverager_add_hits(cov, op_array->opcodes[i].lineno, -1 TSRMLS_CC); 
     432                xc_coverager_add_hits(cov, op_array->opcodes[i].lineno, 0 TSRMLS_CC); 
    410433                break; 
    411434        } 
Note: See TracChangeset for help on using the changeset viewer.