Changeset 716 for trunk/optimizer.c


Ignore:
Timestamp:
2011-04-09T09:07:48+02:00 (3 years ago)
Author:
moo
Message:

PHP 6: initial catch up with php 6 literals and trait

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/optimizer.c

    r657 r716  
    6464            continue; 
    6565        } 
    66         if (opline->op2.op_type != IS_CONST 
    67          || opline->op2.u.constant.type != IS_LONG) { 
     66        if (Z_OP_TYPE(opline->op2) != IS_CONST 
     67         || Z_OP_CONSTANT(opline->op2).type != IS_LONG) { 
    6868            return FAILURE; 
    6969        } 
    7070 
    71         nest_levels = opline->op2.u.constant.value.lval; 
     71        nest_levels = Z_OP_CONSTANT(opline->op2).value.lval; 
    7272        original_nest_levels = nest_levels; 
    7373 
    74         array_offset = opline->op1.u.opline_num; 
     74        array_offset = Z_OP(opline->op1).opline_num; 
    7575        do { 
    7676            if (array_offset == -1) { 
     
    9696        /* rewrite to jmp */ 
    9797        if (opline->opcode == ZEND_BRK) { 
    98             opline->op1.u.opline_num = jmp_to->brk; 
     98            Z_OP(opline->op1).opline_num = jmp_to->brk; 
    9999        } 
    100100        else { 
    101             opline->op1.u.opline_num = jmp_to->cont; 
    102         } 
    103         opline->op2.op_type = IS_UNUSED; 
     101            Z_OP(opline->op1).opline_num = jmp_to->cont; 
     102        } 
     103        Z_OP_TYPE(opline->op2) = IS_UNUSED; 
    104104        opline->opcode = ZEND_JMP; 
    105105    } 
     
    143143 
    144144    case ZEND_JMP: 
    145         fi->jmpout_op1 = opline->op1.u.opline_num; 
     145        fi->jmpout_op1 = Z_OP(opline->op1).opline_num; 
    146146        return SUCCESS; /* no fall */ 
    147147 
    148148    case ZEND_JMPZNZ: 
    149         fi->jmpout_op2 = opline->op2.u.opline_num; 
     149        fi->jmpout_op2 = Z_OP(opline->op2).opline_num; 
    150150        fi->jmpout_ext = (int) opline->extended_value; 
    151151        return SUCCESS; /* no fall */ 
     
    168168#endif       
    169169    case ZEND_FE_FETCH: 
    170         fi->jmpout_op2 = opline->op2.u.opline_num; 
     170        fi->jmpout_op2 = Z_OP(opline->op2).opline_num; 
    171171        break; 
    172172 
     
    186186/* }}} */ 
    187187#ifdef XCACHE_DEBUG 
    188 static void op_snprint(char *buf, int size, znode *op) /* {{{ */ 
    189 { 
    190     switch (op->op_type) { 
     188static void op_snprint(char *buf, int size, zend_uchar op_type, znode_op *op) /* {{{ */ 
     189{ 
     190    switch (op_type) { 
    191191    case IS_CONST: 
    192192        { 
    193193            zval result; 
    194             zval *zv = &op->u.constant; 
     194            zval *zv = &Z_OP_CONSTANT(*op); 
    195195            TSRMLS_FETCH(); 
    196196 
     197            /* TODO: update for PHP 6 */ 
    197198            php_start_ob_buffer(NULL, 0, 1 TSRMLS_CC); 
    198199            php_var_export(&zv, 1 TSRMLS_CC); 
     
    206207 
    207208    case IS_TMP_VAR: 
    208         snprintf(buf, size, "t@%d", op->u.var); 
     209        snprintf(buf, size, "t@%d", Z_OP(*op).var); 
    209210        break; 
    210211 
    211212    case XCACHE_IS_CV: 
    212213    case IS_VAR: 
    213         snprintf(buf, size, "v@%d", op->u.var); 
     214        snprintf(buf, size, "v@%d", Z_OP(*op).var); 
    214215        break; 
    215216 
    216217    case IS_UNUSED: 
    217         if (op->u.opline_num) { 
    218             snprintf(buf, size, "u#%d", op->u.opline_num); 
     218        if (Z_OP(*op).opline_num) { 
     219            snprintf(buf, size, "u#%d", Z_OP(op).opline_num); 
    219220        } 
    220221        else { 
     
    224225 
    225226    default: 
    226         snprintf(buf, size, "%d %d", op->op_type, op->u.var); 
     227        snprintf(buf, size, "%d %d", op->op_type, Z_OP(op).var); 
    227228    } 
    228229} 
     
    235236        char buf_1[20]; 
    236237        char buf_2[20]; 
    237         op_snprint(buf_r, sizeof(buf_r), &opline->result); 
    238         op_snprint(buf_1, sizeof(buf_1), &opline->op1); 
    239         op_snprint(buf_2, sizeof(buf_2), &opline->op2); 
     238        op_snprint(buf_r, sizeof(buf_r), Z_OP_TYPE(opline->result), &opline->result); 
     239        op_snprint(buf_1, sizeof(buf_1), Z_OP_TYPE(opline->op1),    &opline->op1); 
     240        op_snprint(buf_2, sizeof(buf_2), Z_OP_TYPE(opline->op2),    &opline->op2); 
    240241        fprintf(stderr, 
    241242                "%3d %3d" 
     
    451452        if (op_get_flowinfo(&fi, opline) == SUCCESS) { 
    452453            if (fi.jmpout_op1 != XC_OPNUM_INVALID) { 
    453                 opline->op1.u.opline_num = bbids[fi.jmpout_op1]; 
    454                 assert(opline->op1.u.opline_num != BBID_INVALID); 
     454                Z_OP(opline->op1).opline_num = bbids[fi.jmpout_op1]; 
     455                assert(Z_OP(opline->op1).opline_num != BBID_INVALID); 
    455456            } 
    456457            if (fi.jmpout_op2 != XC_OPNUM_INVALID) { 
    457                 opline->op2.u.opline_num = bbids[fi.jmpout_op2]; 
    458                 assert(opline->op2.u.opline_num != BBID_INVALID); 
     458                Z_OP(opline->op2).opline_num = bbids[fi.jmpout_op2]; 
     459                assert(Z_OP(opline->op2).opline_num != BBID_INVALID); 
    459460            } 
    460461            if (fi.jmpout_ext != XC_OPNUM_INVALID) { 
     
    499500        if (op_get_flowinfo(&fi, last) == SUCCESS) { 
    500501            if (fi.jmpout_op1 != XC_OPNUM_INVALID) { 
    501                 last->op1.u.opline_num = bbs_get(bbs, fi.jmpout_op1)->opnum; 
    502                 assert(last->op1.u.opline_num != BBID_INVALID); 
     502                Z_OP(last->op1).opline_num = bbs_get(bbs, fi.jmpout_op1)->opnum; 
     503                assert(Z_OP(last->op1).opline_num != BBID_INVALID); 
    503504            } 
    504505            if (fi.jmpout_op2 != XC_OPNUM_INVALID) { 
    505                 last->op2.u.opline_num = bbs_get(bbs, fi.jmpout_op2)->opnum; 
    506                 assert(last->op2.u.opline_num != BBID_INVALID); 
     506                Z_OP(last->op2).opline_num = bbs_get(bbs, fi.jmpout_op2)->opnum; 
     507                assert(Z_OP(last->op2).opline_num != BBID_INVALID); 
    507508            } 
    508509            if (fi.jmpout_ext != XC_OPNUM_INVALID) { 
Note: See TracChangeset for help on using the changeset viewer.