Changeset 162 for eaccelerator/trunk/optimize.c
- Timestamp:
- 02/17/06 18:35:50 (3 years ago)
- Files:
-
- eaccelerator/trunk/optimize.c (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
eaccelerator/trunk/optimize.c
r133 r162 65 65 } BBlink; 66 66 67 #if 068 67 static void dump_bb(BB* bb, zend_op_array *op_array) { 69 68 BB* p = bb; … … 131 130 fflush(stdout); 132 131 } 133 #endif 132 133 static void dump_array(int nb,void *pos,char type) 134 { int j; 135 136 switch(type) { 137 case 'i': { 138 int *ptr=pos; 139 for (j=0;j<nb;j++) { 140 zend_printf("%d:%6d ",j,*ptr); 141 ptr++; 142 } 143 } 144 break; 145 case 'x': { 146 int *ptr=pos; 147 for (j=0;j<nb;j++) { 148 zend_printf("%d:%x ",j,*ptr); 149 ptr++; 150 } 151 } 152 break; 153 case 'c': { 154 unsigned char *ptr=pos; 155 for (j=0;j<nb;j++) { 156 /* if (*ptr>=32 && *ptr<128) zend_printf("%d:%c",j,*ptr); 157 else if (*ptr>=128) zend_printf("%d:%2x",j,*ptr); 158 else if (*ptr<16) zend_printf("%d:&%1x",j,*ptr); 159 else zend_printf("%d:$%1x",j,(*ptr)-16); */ 160 zend_printf("%d:%1x ",j,*ptr); 161 ptr++; 162 } 163 } 164 break; 165 default: 166 for (j=0;j<nb;j++) 167 zend_printf("# "); 168 } 169 zend_printf("<br>\n"); 170 } 134 171 135 172 #define SET_TO_NOP(op) \ … … 251 288 break; 252 289 case ZEND_UNSET_VAR: 290 #ifndef ZEND_ENGINE_2_1 291 /* Pre-PHP 5.1 only */ 253 292 case ZEND_UNSET_DIM_OBJ: 254 293 end->result.op_type = IS_UNUSED; 255 294 break; 295 #else 296 case ZEND_UNSET_DIM: 297 case ZEND_UNSET_OBJ: 298 end->result.op_type = IS_UNUSED; 299 break; 300 #endif 256 301 case ZEND_RECV: 257 302 case ZEND_RECV_INIT: 258 303 /*case ZEND_ADD_ARRAY_ELEMENT:*/ 259 304 case ZEND_INCLUDE_OR_EVAL: 305 #ifndef ZEND_ENGINE_2_1 306 /* Pre-PHP 5.1 only */ 260 307 case ZEND_JMP_NO_CTOR: 308 #else 309 case ZEND_NEW: 310 #endif 261 311 case ZEND_FE_FETCH: 262 312 #ifdef ZEND_ENGINE_2 313 case ZEND_INIT_METHOD_CALL: 314 case ZEND_INIT_STATIC_METHOD_CALL: 263 315 case ZEND_ASSIGN_DIM: 264 316 case ZEND_DECLARE_CLASS: … … 1280 1332 } 1281 1333 goto jmp_2; 1334 #ifndef ZEND_ENGINE_2_1 1335 /* Pre-PHP 5.1 only */ 1282 1336 case ZEND_JMP_NO_CTOR: 1337 #else 1338 case ZEND_NEW: 1339 #endif 1283 1340 case ZEND_FE_FETCH: 1284 1341 jmp_2: … … 1715 1772 } else 1716 1773 #endif 1774 1717 1775 if ((op->opcode == ZEND_ADD || 1718 1776 op->opcode == ZEND_SUB || … … 2444 2502 op->opcode == ZEND_POST_INC || 2445 2503 op->opcode == ZEND_POST_DEC || 2504 #ifndef ZEND_ENGINE_2_1 2505 /* Pre-PHP 5.1 only */ 2446 2506 op->opcode == ZEND_UNSET_DIM_OBJ || 2507 #else 2508 op->opcode == ZEND_UNSET_DIM || 2509 op->opcode == ZEND_UNSET_OBJ || 2510 #endif 2447 2511 op->opcode == ZEND_INCLUDE_OR_EVAL 2448 2512 #ifdef ZEND_ENGINE_2 … … 2722 2786 case ZEND_JMPZ_EX: 2723 2787 case ZEND_JMPNZ_EX: 2788 #ifndef ZEND_ENGINE_2_1 2789 /* Pre-PHP 5.1 only */ 2724 2790 case ZEND_JMP_NO_CTOR: 2791 #else 2792 case ZEND_NEW: 2793 case ZEND_FE_RESET: 2794 #endif 2725 2795 case ZEND_FE_FETCH: 2726 2796 bb[line_num+1].start = op+1; … … 2841 2911 #endif 2842 2912 case ZEND_UNSET_VAR: 2913 #ifndef ZEND_ENGINE_2_1 2914 /* Pre-PHP 5.1 only */ 2843 2915 case ZEND_UNSET_DIM_OBJ: 2844 2916 op->result.op_type = IS_UNUSED; 2845 2917 break; 2918 #else 2919 case ZEND_UNSET_DIM: 2920 op->result.op_type = IS_UNUSED; 2921 break; 2922 case ZEND_UNSET_OBJ: 2923 op->result.op_type = IS_UNUSED; 2924 break; 2925 #endif 2846 2926 default: 2847 2927 break; … … 2895 2975 case ZEND_JMPZ_EX: 2896 2976 case ZEND_JMPNZ_EX: 2977 #ifndef ZEND_ENGINE_2_1 2978 /* Pre-PHP 5.1 only */ 2897 2979 case ZEND_JMP_NO_CTOR: 2980 #else 2981 case ZEND_NEW: 2982 case ZEND_FE_RESET: 2983 #endif 2898 2984 case ZEND_FE_FETCH: 2899 2985 p->jmp_2 = &bb[op->op2.u.opline_num]; … … 3110 3196 while (start < op) { 3111 3197 --op; 3198 /* zend_printf("op=%d\n", op-op_array->opcodes); */ 3112 3199 #ifdef ZEND_ENGINE_2 3113 3200 op_data = NULL; … … 3137 3224 if (op->opcode == ZEND_DO_FCALL_BY_NAME) { 3138 3225 op->op1.op_type = IS_UNUSED; 3226 } else if (op->opcode == ZEND_FETCH_CONSTANT) { 3227 op->op1.u.var = VAR_VAL(assigned[r]); 3228 op->op1.op_type = IS_CONST; 3139 3229 } else { 3140 3230 op->op1.u.var = VAR_VAL(assigned[r]); … … 3151 3241 GET_REG(r); 3152 3242 op->extended_value = VAR_VAL(assigned[r]); 3153 }3154 if (op->opcode == ZEND_OP_DATA) {3155 op_data = op;3156 --op;3157 if (op->op1.op_type == IS_VAR || op->op1.op_type == IS_TMP_VAR) {3158 int r = VAR_NUM(op->op1.u.var);3159 GET_REG(r);3160 op->op1.u.var = VAR_VAL(assigned[r]);3161 }3162 if (op->op2.op_type == IS_VAR || op->op2.op_type == IS_TMP_VAR) {3163 int r = VAR_NUM(op->op2.u.var);3164 GET_REG(r);3165 op->op2.u.var = VAR_VAL(assigned[r]);3166 }3167 3243 } 3168 3244 #endif … … 3193 3269 } 3194 3270 } 3195 #ifdef ZEND_ENGINE_23196 if (op_data != NULL && op_data->op2.op_type == IS_VAR) {3197 FREE_REG(VAR_NUM(op_data->op2.u.var));3198 }3199 #endif3200 3271 } 3201 3272 } … … 3280 3351 emit_cfg(op_array, bb); 3281 3352 reassign_registers(op_array, bb, global); 3353 /* dump_bb(bb, op_array); */ 3282 3354 3283 3355 free_alloca(global);