summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2010-07-17 17:47:06 +0000
committerFelipe Pena <felipe@php.net>2010-07-17 17:47:06 +0000
commit1ec1dcb0d6e6aefd51105e3390f9214d39d59a8f (patch)
tree22577822e2450091db7d8b3e25a10023cbee1af5
parent97c93c980e5144e4740d18db805bb39894036335 (diff)
downloadphp-git-1ec1dcb0d6e6aefd51105e3390f9214d39d59a8f.tar.gz
- Lets avoid unnecessary zend_verify_namespace() calls
-rw-r--r--Zend/zend_language_parser.y15
1 files changed, 10 insertions, 5 deletions
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index eb617fef3d..1ff548228c 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -37,6 +37,11 @@
if (Z_LVAL(CG(declarables).ticks)) { \
zend_do_ticks(TSRMLS_C); \
}
+
+#define ZEND_VERIFY_NS() \
+ if (CG(has_bracketed_namespaces) && !CG(in_namespace)) { \
+ zend_verify_namespace(TSRMLS_C); \
+ }
}
%name zend_lang_parse
@@ -147,15 +152,15 @@ namespace_start ::= NAMESPACE. { zend_do_begin_namespace(NULL, 1 TSRMLS_CC); }
namespace_start2 ::= NAMESPACE namespace_name(B). { zend_do_begin_namespace(&B, 1 TSRMLS_CC); }
top_statement ::= SEMICOLON. { ZEND_DO_TICKS(); }
-top_statement ::= statement. { zend_verify_namespace(TSRMLS_C); }
-top_statement ::= function_declaration_statement. { zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); }
-top_statement ::= class_declaration_statement. { zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); }
+top_statement ::= statement. { ZEND_VERIFY_NS(); }
+top_statement ::= function_declaration_statement. { ZEND_VERIFY_NS(); zend_do_early_binding(TSRMLS_C); }
+top_statement ::= class_declaration_statement. { ZEND_VERIFY_NS(); zend_do_early_binding(TSRMLS_C); }
top_statement ::= HALT_COMPILER LPAREN RPAREN SEMICOLON. { zend_do_halt_compiler_register(TSRMLS_C); }
top_statement ::= NAMESPACE namespace_name(B) SEMICOLON. { zend_do_begin_namespace(&B, 0 TSRMLS_CC); }
top_statement ::= namespace_start2 LBRACE top_statement_list RBRACE. { zend_do_end_namespace(TSRMLS_C); }
top_statement ::= namespace_start LBRACE top_statement_list RBRACE. { zend_do_end_namespace(TSRMLS_C); }
-top_statement ::= USE use_declarations SEMICOLON. { zend_verify_namespace(TSRMLS_C); }
-top_statement ::= constant_declaration SEMICOLON. { zend_verify_namespace(TSRMLS_C); }
+top_statement ::= USE use_declarations SEMICOLON. { ZEND_VERIFY_NS(); }
+top_statement ::= constant_declaration SEMICOLON. { ZEND_VERIFY_NS(); }
use_declarations ::= use_declarations COMMA use_declaration.
use_declarations ::= use_declaration.