Changeset 314 for trunk/xcache.c


Ignore:
Timestamp:
2006-12-10T03:31:42+01:00 (8 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.