Show
Ignore:
Timestamp:
02/17/06 18:35:50 (3 years ago)
Author:
zoeloelip
Message:

Merged PHP_5_1 branch with HEAD

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • eaccelerator/trunk/optimize.c

    r133 r162  
    6565} BBlink; 
    6666 
    67 #if 0 
    6867static void dump_bb(BB* bb, zend_op_array *op_array) { 
    6968  BB* p = bb; 
     
    131130  fflush(stdout); 
    132131} 
    133 #endif 
     132 
     133static 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
    134171 
    135172#define SET_TO_NOP(op) \ 
     
    251288               break; 
    252289             case ZEND_UNSET_VAR: 
     290#ifndef ZEND_ENGINE_2_1 
     291/* Pre-PHP 5.1 only */ 
    253292             case ZEND_UNSET_DIM_OBJ: 
    254293               end->result.op_type = IS_UNUSED; 
    255294               break; 
     295#else 
     296             case ZEND_UNSET_DIM: 
     297             case ZEND_UNSET_OBJ: 
     298               end->result.op_type = IS_UNUSED; 
     299               break; 
     300#endif 
    256301             case ZEND_RECV: 
    257302             case ZEND_RECV_INIT: 
    258303             /*case ZEND_ADD_ARRAY_ELEMENT:*/ 
    259304             case ZEND_INCLUDE_OR_EVAL: 
     305#ifndef ZEND_ENGINE_2_1 
     306/* Pre-PHP 5.1 only */ 
    260307             case ZEND_JMP_NO_CTOR: 
     308#else 
     309             case ZEND_NEW: 
     310#endif 
    261311             case ZEND_FE_FETCH: 
    262312#ifdef ZEND_ENGINE_2 
     313             case ZEND_INIT_METHOD_CALL: 
     314             case ZEND_INIT_STATIC_METHOD_CALL: 
    263315             case ZEND_ASSIGN_DIM: 
    264316             case ZEND_DECLARE_CLASS: 
     
    12801332            } 
    12811333            goto jmp_2; 
     1334#ifndef ZEND_ENGINE_2_1 
     1335/* Pre-PHP 5.1 only */ 
    12821336          case ZEND_JMP_NO_CTOR: 
     1337#else 
     1338          case ZEND_NEW: 
     1339#endif 
    12831340          case ZEND_FE_FETCH: 
    12841341jmp_2: 
     
    17151772    } else  
    17161773#endif 
     1774 
    17171775    if ((op->opcode == ZEND_ADD || 
    17181776                op->opcode == ZEND_SUB || 
     
    24442502          op->opcode == ZEND_POST_INC || 
    24452503          op->opcode == ZEND_POST_DEC || 
     2504#ifndef ZEND_ENGINE_2_1 
     2505/* Pre-PHP 5.1 only */ 
    24462506          op->opcode == ZEND_UNSET_DIM_OBJ || 
     2507#else 
     2508          op->opcode == ZEND_UNSET_DIM || 
     2509          op->opcode == ZEND_UNSET_OBJ || 
     2510#endif 
    24472511          op->opcode == ZEND_INCLUDE_OR_EVAL 
    24482512#ifdef ZEND_ENGINE_2 
     
    27222786                        case ZEND_JMPZ_EX: 
    27232787                        case ZEND_JMPNZ_EX: 
     2788#ifndef ZEND_ENGINE_2_1 
     2789/* Pre-PHP 5.1 only */ 
    27242790                        case ZEND_JMP_NO_CTOR: 
     2791#else 
     2792                        case ZEND_NEW: 
     2793                        case ZEND_FE_RESET: 
     2794#endif 
    27252795                        case ZEND_FE_FETCH: 
    27262796                                bb[line_num+1].start = op+1; 
     
    28412911#endif 
    28422912                        case ZEND_UNSET_VAR: 
     2913#ifndef ZEND_ENGINE_2_1 
     2914/* Pre-PHP 5.1 only */ 
    28432915                        case ZEND_UNSET_DIM_OBJ: 
    28442916                                op->result.op_type = IS_UNUSED; 
    28452917                                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 
    28462926                        default: 
    28472927                                break; 
     
    28952975                                case ZEND_JMPZ_EX: 
    28962976                                case ZEND_JMPNZ_EX: 
     2977#ifndef ZEND_ENGINE_2_1 
     2978/* Pre-PHP 5.1 only */ 
    28972979                                case ZEND_JMP_NO_CTOR: 
     2980#else 
     2981                                case ZEND_NEW: 
     2982                                case ZEND_FE_RESET: 
     2983#endif 
    28982984                                case ZEND_FE_FETCH: 
    28992985                                        p->jmp_2 = &bb[op->op2.u.opline_num]; 
     
    31103196      while (start < op) { 
    31113197        --op; 
     3198        /* zend_printf("op=%d\n", op-op_array->opcodes); */ 
    31123199#ifdef ZEND_ENGINE_2 
    31133200        op_data = NULL; 
     
    31373224          if (op->opcode == ZEND_DO_FCALL_BY_NAME) { 
    31383225            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; 
    31393229          } else { 
    31403230            op->op1.u.var = VAR_VAL(assigned[r]); 
     
    31513241          GET_REG(r); 
    31523242          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           } 
    31673243        } 
    31683244#endif 
     
    31933269          } 
    31943270        } 
    3195 #ifdef ZEND_ENGINE_2 
    3196         if (op_data != NULL && op_data->op2.op_type == IS_VAR) { 
    3197           FREE_REG(VAR_NUM(op_data->op2.u.var)); 
    3198         } 
    3199 #endif 
    32003271      } 
    32013272    } 
     
    32803351    emit_cfg(op_array, bb); 
    32813352    reassign_registers(op_array, bb, global); 
     3353    /* dump_bb(bb, op_array); */ 
    32823354 
    32833355    free_alloca(global);