From: Nikita Popov Date: Wed, 22 Jul 2015 11:12:54 +0000 (+0200) Subject: Emit EXT_STMT for each statement X-Git-Tag: php-7.0.0beta3~5^2~109 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cff6cbc01f64029abe76421d332e91ed655b5b43;p=php Emit EXT_STMT for each statement I'm excluding unticked statements for this (in 5.x they were included) as this would just result in two consecutive EXT_STMTs. Also add all class statements to unticked statements, these would generate superfluous EXT_STMT/TICKS in the parent op_array. --- diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index ce4365896c..64ad77d4a7 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -2047,7 +2047,9 @@ static inline zend_bool zend_is_call(zend_ast *ast) /* {{{ */ static inline zend_bool zend_is_unticked_stmt(zend_ast *ast) /* {{{ */ { - return ast->kind == ZEND_AST_STMT_LIST || ast->kind == ZEND_AST_LABEL; + return ast->kind == ZEND_AST_STMT_LIST || ast->kind == ZEND_AST_LABEL + || ast->kind == ZEND_AST_PROP_DECL || ast->kind == ZEND_AST_CLASS_CONST_DECL + || ast->kind == ZEND_AST_USE_TRAIT || ast->kind == ZEND_AST_METHOD; } /* }}} */ @@ -6969,6 +6971,10 @@ void zend_compile_stmt(zend_ast *ast) /* {{{ */ CG(zend_lineno) = ast->lineno; + if ((CG(compiler_options) & ZEND_COMPILE_EXTENDED_INFO) && !zend_is_unticked_stmt(ast)) { + zend_do_extended_info(); + } + switch (ast->kind) { case ZEND_AST_STMT_LIST: zend_compile_stmt_list(ast);