]> granicus.if.org Git - php/commitdiff
MFZE1 (use token instead of global for opcode counting)
authorJason Greene <jason@php.net>
Wed, 14 Aug 2002 01:40:59 +0000 (01:40 +0000)
committerJason Greene <jason@php.net>
Wed, 14 Aug 2002 01:40:59 +0000 (01:40 +0000)
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_globals.h
Zend/zend_language_parser.y

index 1561c2b9bf7705fa778cb05943d855449bfd80de..bb7403b0c239cbd7233f55992e1748ec2f011c8c 100644 (file)
@@ -2857,7 +2857,6 @@ void zend_do_foreach_end(znode *foreach_token, znode *open_brackets_token TSRMLS
 void zend_do_declare_begin(TSRMLS_D)
 {
        zend_stack_push(&CG(declare_stack), &CG(declarables), sizeof(zend_declarables));
-       CG(declarables).beginop = get_next_op_number(CG(active_op_array));
 }
 
 
@@ -2873,13 +2872,13 @@ void zend_do_declare_stmt(znode *var, znode *val TSRMLS_DC)
 }
 
 
-void zend_do_declare_end(TSRMLS_D)
+void zend_do_declare_end(znode *declare_token TSRMLS_DC)
 {
        zend_declarables *declarables;
 
        zend_stack_top(&CG(declare_stack), (void **) &declarables);
        /* We should restore if there was more than (current - start) - (ticks?1:0) opcodes */
-       if ((get_next_op_number(CG(active_op_array)) - CG(declarables).beginop) - ((CG(declarables).ticks.value.lval)?1:0)) {
+       if ((get_next_op_number(CG(active_op_array)) - declare_token->u.opline_num) - ((CG(declarables).ticks.value.lval)?1:0)) {
                CG(declarables) = *declarables;
        }
 }
index 90e99d7b0384670e37aebf1cc1dfcb82e82d983f..69f98864d788b052b35ca9bac1d27ab7e6877b10 100644 (file)
@@ -366,7 +366,7 @@ void zend_do_foreach_end(znode *foreach_token, znode *open_brackets_token TSRMLS
 
 void zend_do_declare_begin(TSRMLS_D);
 void zend_do_declare_stmt(znode *var, znode *val TSRMLS_DC);
-void zend_do_declare_end(TSRMLS_D);
+void zend_do_declare_end(znode *declare_token TSRMLS_DC);
 
 void zend_do_end_heredoc(TSRMLS_D);
 
index 969222e08219c5ad4d91d9028b55b6023d11e365..fa9cde9cf11b54bf0ff621df1c494bc6b44915fe 100644 (file)
@@ -58,7 +58,6 @@ END_EXTERN_C()
 
 typedef struct _zend_declarables {
        zval ticks;
-       zend_uint beginop;
 } zend_declarables;
 
 
index b90339bf3da6db0ea977f32a65db37f5fedf6c67..099e6f45d3361538ac9a5ea2d5618641b415474d 100644 (file)
@@ -207,7 +207,7 @@ unticked_statement:
        |       T_UNSET '(' unset_variables ')' ';'
        |       T_FOREACH '(' variable T_AS { zend_do_foreach_begin(&$1, &$3, &$2, &$4, 1 TSRMLS_CC); } w_variable foreach_optional_arg ')' { zend_do_foreach_cont(&$6, &$7, &$4 TSRMLS_CC); } foreach_statement { zend_do_foreach_end(&$1, &$2 TSRMLS_CC); }
        |       T_FOREACH '(' expr_without_variable T_AS { zend_do_foreach_begin(&$1, &$3, &$2, &$4, 0 TSRMLS_CC); } w_variable foreach_optional_arg ')' { zend_do_foreach_cont(&$6, &$7, &$4 TSRMLS_CC); } foreach_statement { zend_do_foreach_end(&$1, &$2 TSRMLS_CC); }
-       |       T_DECLARE { zend_do_declare_begin(TSRMLS_C); } '(' declare_list ')' declare_statement { zend_do_declare_end(TSRMLS_C); }
+       |       T_DECLARE { $1.u.opline_num = get_next_op_number(CG(active_op_array)); zend_do_declare_begin(TSRMLS_C); } '(' declare_list ')' declare_statement { zend_do_declare_end(&$1 TSRMLS_CC); }
        |       ';'             /* empty statement */
        |       T_TRY { zend_do_try(&$1 TSRMLS_CC); } '{' inner_statement_list '}'
                T_CATCH '(' catch_or_import_class_entry T_VARIABLE ')' { zend_do_begin_catch(&$1, &$8, &$9, 1 TSRMLS_CC); } '{' inner_statement_list '}' { zend_do_end_catch(&$1 TSRMLS_CC); }