Changeset 716 in svn for trunk/optimizer.c


Ignore:
Timestamp:
2011-04-09T09:07:48+02:00 (4 years ago)
Author:
Xuefer
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.