Changeset 716 for trunk/optimizer.c
- Timestamp:
- 04/09/2011 09:07:48 AM (2 years ago)
- Files:
-
- 1 modified
-
trunk/optimizer.c (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/optimizer.c
r657 r716 64 64 continue; 65 65 } 66 if ( opline->op2.op_type!= IS_CONST67 || 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) { 68 68 return FAILURE; 69 69 } 70 70 71 nest_levels = opline->op2.u.constant.value.lval;71 nest_levels = Z_OP_CONSTANT(opline->op2).value.lval; 72 72 original_nest_levels = nest_levels; 73 73 74 array_offset = opline->op1.u.opline_num;74 array_offset = Z_OP(opline->op1).opline_num; 75 75 do { 76 76 if (array_offset == -1) { … … 96 96 /* rewrite to jmp */ 97 97 if (opline->opcode == ZEND_BRK) { 98 opline->op1.u.opline_num = jmp_to->brk;98 Z_OP(opline->op1).opline_num = jmp_to->brk; 99 99 } 100 100 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; 104 104 opline->opcode = ZEND_JMP; 105 105 } … … 143 143 144 144 case ZEND_JMP: 145 fi->jmpout_op1 = opline->op1.u.opline_num;145 fi->jmpout_op1 = Z_OP(opline->op1).opline_num; 146 146 return SUCCESS; /* no fall */ 147 147 148 148 case ZEND_JMPZNZ: 149 fi->jmpout_op2 = opline->op2.u.opline_num;149 fi->jmpout_op2 = Z_OP(opline->op2).opline_num; 150 150 fi->jmpout_ext = (int) opline->extended_value; 151 151 return SUCCESS; /* no fall */ … … 168 168 #endif 169 169 case ZEND_FE_FETCH: 170 fi->jmpout_op2 = opline->op2.u.opline_num;170 fi->jmpout_op2 = Z_OP(opline->op2).opline_num; 171 171 break; 172 172 … … 186 186 /* }}} */ 187 187 #ifdef XCACHE_DEBUG 188 static void op_snprint(char *buf, int size, z node*op) /* {{{ */189 { 190 switch (op ->op_type) {188 static void op_snprint(char *buf, int size, zend_uchar op_type, znode_op *op) /* {{{ */ 189 { 190 switch (op_type) { 191 191 case IS_CONST: 192 192 { 193 193 zval result; 194 zval *zv = & op->u.constant;194 zval *zv = &Z_OP_CONSTANT(*op); 195 195 TSRMLS_FETCH(); 196 196 197 /* TODO: update for PHP 6 */ 197 198 php_start_ob_buffer(NULL, 0, 1 TSRMLS_CC); 198 199 php_var_export(&zv, 1 TSRMLS_CC); … … 206 207 207 208 case IS_TMP_VAR: 208 snprintf(buf, size, "t@%d", op->u.var);209 snprintf(buf, size, "t@%d", Z_OP(*op).var); 209 210 break; 210 211 211 212 case XCACHE_IS_CV: 212 213 case IS_VAR: 213 snprintf(buf, size, "v@%d", op->u.var);214 snprintf(buf, size, "v@%d", Z_OP(*op).var); 214 215 break; 215 216 216 217 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); 219 220 } 220 221 else { … … 224 225 225 226 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); 227 228 } 228 229 } … … 235 236 char buf_1[20]; 236 237 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); 240 241 fprintf(stderr, 241 242 "%3d %3d" … … 451 452 if (op_get_flowinfo(&fi, opline) == SUCCESS) { 452 453 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); 455 456 } 456 457 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); 459 460 } 460 461 if (fi.jmpout_ext != XC_OPNUM_INVALID) { … … 499 500 if (op_get_flowinfo(&fi, last) == SUCCESS) { 500 501 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); 503 504 } 504 505 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); 507 508 } 508 509 if (fi.jmpout_ext != XC_OPNUM_INVALID) {

