Changeset 208 in svn for trunk/coverager.c


Ignore:
Timestamp:
2006-10-01T12:55:48+02:00 (9 years ago)
Author:
Xuefer
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.