]> granicus.if.org Git - php/commitdiff
Disable block pass for large functions
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 17 Mar 2017 11:48:03 +0000 (12:48 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 28 Mar 2017 20:07:37 +0000 (22:07 +0200)
(Backport of 7ea261685f179a7cddcc4196fc7f3f12572c3d49 to 7.0.)

ext/opcache/Optimizer/block_pass.c

index f69199b24e45299481c55739981ab2420ae23c29..413b8b10e2cb582f83495fa19dca4609c6461ef9 100644 (file)
@@ -2000,6 +2000,10 @@ void optimize_cfg(zend_op_array *op_array, zend_optimizer_ctx *ctx)
                return;
        }
 
+       if ((uint64_t) op_array->last * (op_array->last_var + op_array->T) > 512 * 1024 * 1024) {
+               return;
+       }
+
     /* Build CFG */
        checkpoint = zend_arena_checkpoint(ctx->arena);
        if (!find_code_blocks(op_array, &cfg, ctx)) {