Changeset 314


Ignore:
Timestamp:
2006-12-10T03:31:42+01:00 (7 years ago)
Author:
moo
Message:

compiler cacher: passed most of the testcases

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/xcache.c

    r311 r314  
    942942    old_classinfo_cnt = zend_hash_num_elements(CG(class_table)); 
    943943    old_funcinfo_cnt  = zend_hash_num_elements(CG(function_table)); 
    944     old_constinfo_cnt  = zend_hash_num_elements(EG(zend_constants)); 
     944    old_constinfo_cnt = zend_hash_num_elements(EG(zend_constants)); 
    945945 
    946946    zend_try { 
     
    11401140    zend_bool gaveup = 0; 
    11411141    zend_bool catched = 0; 
    1142     zend_bool cached_php; 
     1142    zend_bool newlycompiled; 
    11431143    char *filename; 
    11441144    char opened_path_buffer[MAXPATHLEN]; 
     
    12291229    /* {{{ compile */ 
    12301230    if (stored_php) { 
    1231         cached_php = 1; 
     1231        newlycompiled = 0; 
    12321232        xce.data.php = stored_php; 
    12331233    } 
    12341234    else { 
    1235         cached_php = 0; 
     1235        newlycompiled = 1; 
    12361236 
    12371237        /* make compile inside sandbox */ 
    12381238        xc_sandbox_init(&sandbox, filename TSRMLS_CC); 
     1239 
     1240#ifdef HAVE_XCACHE_CONSTANT 
     1241        php.constinfos  = NULL; 
     1242#endif 
     1243        php.funcinfos   = NULL; 
     1244        php.classinfos  = NULL; 
     1245#ifdef ZEND_ENGINE_2_1 
     1246        php.autoglobals = NULL; 
     1247#endif 
    12391248        zend_try { 
    12401249            op_array = xc_compile_php(&php, h, type TSRMLS_CC); 
     
    12421251            catched = 1; 
    12431252        } zend_end_try(); 
    1244         xc_sandbox_free(&sandbox, 0 TSRMLS_CC); 
    1245  
     1253 
     1254        xce.data.php = &php; 
    12461255        if (catched) { 
    1247             cache->compiling = 0; 
    1248             zend_bailout(); 
    1249         } 
    1250  
    1251         xce.data.php = &php; 
     1256            goto err_aftersandbox; 
     1257        } 
    12521258    } 
    12531259    /* }}} */ 
     
    12731279    ENTER_LOCK_EX(cache) { /* {{{ php_store/entry_store */ 
    12741280        /* php_store */ 
    1275         if (!cached_php) { 
     1281        if (newlycompiled) { 
    12761282            stored_php = xc_php_store_dmz(&php TSRMLS_CC); 
    12771283            /* error */ 
     
    12971303    cache->compiling = 0; 
    12981304    if (catched) { 
    1299         zend_bailout(); 
    1300     } 
     1305        goto err_aftersandbox; 
     1306    } 
     1307 
     1308    xc_free_php(&php TSRMLS_CC); 
     1309    xc_sandbox_free(&sandbox, 0 TSRMLS_CC); 
    13011310 
    13021311    if (stored_xce) { 
     
    13111320        } 
    13121321        return xc_compile_restore(stored_xce, h TSRMLS_CC); 
     1322    } 
     1323    return op_array; 
     1324 
     1325err_aftersandbox: 
     1326    xc_free_php(&php TSRMLS_CC); 
     1327    xc_sandbox_free(&sandbox, 0 TSRMLS_CC); 
     1328 
     1329    if (catched) { 
     1330        cache->compiling = 0; 
     1331        zend_bailout(); 
    13131332    } 
    13141333    return op_array; 
Note: See TracChangeset for help on using the changeset viewer.