]> granicus.if.org Git - php/commitdiff
Opcache compatibility for coalesce operator
authorNikita Popov <nikic@php.net>
Sun, 28 Sep 2014 10:31:52 +0000 (12:31 +0200)
committerNikita Popov <nikic@php.net>
Sun, 28 Sep 2014 10:31:52 +0000 (12:31 +0200)
ext/opcache/Optimizer/block_pass.c
ext/opcache/Optimizer/nop_removal.c
ext/opcache/Optimizer/pass1_5.c
ext/opcache/Optimizer/pass3.c
ext/opcache/Optimizer/zend_optimizer.c
ext/opcache/zend_persist.c

index ce4b23ae5572ba4fcb033139da22f6cff15890dd..73a65485a53ed2f2360c593df14b8ab7fa5d7beb 100644 (file)
@@ -169,6 +169,7 @@ static int find_code_blocks(zend_op_array *op_array, zend_cfg *cfg, zend_optimiz
                        case ZEND_FE_RESET:
                        case ZEND_NEW:
                        case ZEND_JMP_SET:
+                       case ZEND_COALESCE:
                                START_BLOCK_OP(ZEND_OP2(opline).opline_num);
                                START_BLOCK_OP(opno + 1);
                                break;
@@ -293,6 +294,7 @@ static int find_code_blocks(zend_op_array *op_array, zend_cfg *cfg, zend_optimiz
                                case ZEND_FE_RESET:
                                case ZEND_NEW:
                                case ZEND_JMP_SET:
+                               case ZEND_COALESCE:
                                case ZEND_FE_FETCH:
                                        cur_block->op2_to = &blocks[ZEND_OP2(opline).opline_num];
                                        /* break missing intentionally */
index 17cc8389909259990b4887c54705340b72e2c690..651950148c6756927c2c0876fcc23c6017a7f03d 100644 (file)
@@ -97,6 +97,7 @@ void zend_optimizer_nop_removal(zend_op_array *op_array)
                                case ZEND_FE_RESET:
                                case ZEND_NEW:
                                case ZEND_JMP_SET:
+                               case ZEND_COALESCE:
                                        ZEND_OP2(opline).opline_num -= shiftlist[ZEND_OP2(opline).opline_num];
                                        break;
                                case ZEND_JMPZNZ:
index 6a3f4e504d79beada8266f5677d217324222797a..f06f5cc55978d40c35bcc7c42b6bc0f483c91d75 100644 (file)
@@ -526,6 +526,7 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx TSRML
                case ZEND_NEW:
                case ZEND_DO_FCALL:
                case ZEND_JMP_SET:
+               case ZEND_COALESCE:
                        collect_constants = 0;
                        break;
                case ZEND_FETCH_R:
index 345e347a5bf0b3a2caa0221ab186dd6753e2e104..8d8cb50580231dca96519235680de71fe42ea975 100644 (file)
@@ -182,6 +182,7 @@ void zend_optimizer_pass3(zend_op_array *op_array TSRMLS_DC)
                                break;
 
                        case ZEND_JMP_SET:
+                       case ZEND_COALESCE:
                                if (op_array->fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK) {
                                        break;
                                }
index ca000abd36b781272b8f062929f0dbf46f4f2085..cd75817e0c0ef050e3cf2ffd15b2ffa57fb8c354 100644 (file)
@@ -438,6 +438,7 @@ static void zend_accel_optimize(zend_op_array      *op_array,
                        case ZEND_JMPZ_EX:
                        case ZEND_JMPNZ_EX:
                        case ZEND_JMP_SET:
+                       case ZEND_COALESCE:
                        case ZEND_NEW:
                        case ZEND_FE_RESET:
                        case ZEND_FE_FETCH:
@@ -475,6 +476,7 @@ static void zend_accel_optimize(zend_op_array      *op_array,
                        case ZEND_JMPZ_EX:
                        case ZEND_JMPNZ_EX:
                        case ZEND_JMP_SET:
+                       case ZEND_COALESCE:
                        case ZEND_NEW:
                        case ZEND_FE_RESET:
                        case ZEND_FE_FETCH:
index 05fbd4fc757df9ca27908dae0d7c7a4a92a0e0c9..6491b9d7810af1102d8d4edfdbc81d4574a27281 100644 (file)
@@ -373,6 +373,7 @@ static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_sc
                                        case ZEND_JMPZ_EX:
                                        case ZEND_JMPNZ_EX:
                                        case ZEND_JMP_SET:
+                                       case ZEND_COALESCE:
                                        case ZEND_NEW:
                                        case ZEND_FE_RESET:
                                        case ZEND_FE_FETCH: