]> granicus.if.org Git - php/commitdiff
Fixed final dump "after optimizer"
authorDmitry Stogov <dmitry@zend.com>
Wed, 5 Jul 2017 18:48:01 +0000 (21:48 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 5 Jul 2017 18:48:01 +0000 (21:48 +0300)
ext/opcache/Optimizer/zend_optimizer.c

index 99f1cf6a981c01dbae7b22def108eb28ad1141f5..cfe10185be1cb3c0aa63df3fdea19b668980fb8a 100644 (file)
@@ -980,6 +980,10 @@ static void zend_optimize(zend_op_array      *op_array,
                }
        }
 
+       if (ZEND_OPTIMIZER_PASS_7 & ctx->optimization_level) {
+               return;
+       }
+
        if (ctx->debug_level & ZEND_DUMP_AFTER_OPTIMIZER) {
                zend_dump_op_array(op_array, 0, "after optimizer", NULL);
        }
@@ -1228,6 +1232,20 @@ int zend_optimize_script(zend_script *script, zend_long optimization_level, zend
                } ZEND_HASH_FOREACH_END();
        }
 
+       if (debug_level & ZEND_DUMP_AFTER_OPTIMIZER) {
+               ZEND_HASH_FOREACH_PTR(&script->function_table, op_array) {
+                       zend_dump_op_array(op_array, ZEND_DUMP_RT_CONSTANTS, "after optimizer", NULL);
+               } ZEND_HASH_FOREACH_END();
+
+               ZEND_HASH_FOREACH_PTR(&script->class_table, ce) {
+                       ZEND_HASH_FOREACH_STR_KEY_PTR(&ce->function_table, name, op_array) {
+                               if (op_array->scope == ce) {
+                                       zend_dump_op_array(op_array, ZEND_DUMP_RT_CONSTANTS, "after optimizer", NULL);
+                               }
+                       } ZEND_HASH_FOREACH_END();
+               } ZEND_HASH_FOREACH_END();
+       }
+
        if (ctx.constants) {
                zend_hash_destroy(ctx.constants);
        }