Commit:    d60e3c6ef53986e82178bb657ad907edc16d2c34
Author:    Nikita Popov <ni...@php.net>         Sat, 25 Aug 2012 20:07:01 +0200
Parents:   bd70d155885fdc087afba912c1b290615b864e2f 
35951d4be0bd27c85519995a95429bd0d0a76a00
Branches:  master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=d60e3c6ef53986e82178bb657ad907edc16d2c34

Log:
Merge remote-tracking branch 'php-src/master' into addGeneratorsSupport

Conflicts:
        Zend/zend_language_parser.y
        Zend/zend_vm_execute.skl

Changed paths:
  MM  Zend/zend_compile.c
  MM  Zend/zend_compile.h
  MM  Zend/zend_language_parser.y
  MM  Zend/zend_vm_def.h
  MM  Zend/zend_vm_execute.h
  MM  Zend/zend_vm_execute.skl


Diff:
diff --cc Zend/zend_vm_def.h
index 1016679,92c5fcf..ffd81b0
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@@ -3049,20 -3053,12 +3051,20 @@@ ZEND_VM_HANDLER(111, ZEND_RETURN_BY_REF
  
        FREE_OP1_IF_VAR();
  
-       if (EX(op_array)->has_finally_block) {
-               ZEND_VM_DISPATCH_TO_HELPER_EX(zend_finally_handler_leaving, 
type, ZEND_RETURN_BY_REF);
+       if (EXPECTED(!EX(op_array)->has_finally_block)) {
+               ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper);
        }
-       ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper);
+       ZEND_VM_DISPATCH_TO_HELPER_EX(zend_finally_handler_leaving, type, 
ZEND_RETURN_BY_REF);
  }
  
 +ZEND_VM_HANDLER(161, ZEND_GENERATOR_RETURN, ANY, ANY)
 +{
 +      if (EX(op_array)->has_finally_block) {
 +              ZEND_VM_DISPATCH_TO_HELPER_EX(zend_finally_handler_leaving, 
type, ZEND_RETURN);
 +      }
 +      ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper);
 +}
 +
  ZEND_VM_HANDLER(108, ZEND_THROW, CONST|TMP|VAR|CV, ANY)
  {
        USE_OPLINE
diff --cc Zend/zend_vm_execute.h
index a643967,1e0b2b5..b0e05b1
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@@ -409,26 -400,6 +409,26 @@@ zend_execute_data *zend_create_execute_
        EX(function_state).function = (zend_function *) op_array;
        EX(function_state).arguments = NULL;
  
 +      return execute_data;
 +}
 +
 +ZEND_API void execute_ex(zend_execute_data *execute_data TSRMLS_DC)
 +{
 +      DCL_OPLINE
- 
-       zend_bool original_in_execution = EG(in_execution);
++      zend_bool original_in_execution;
 +
 +
 +
 +      if (EG(exception)) {
 +              return;
 +      }
 +
++      original_in_execution = EG(in_execution);
 +      EG(in_execution) = 1;
 +
 +      LOAD_REGS();
 +      LOAD_OPLINE();
 +
        while (1) {
        int ret;
  #ifdef ZEND_WIN32
diff --cc Zend/zend_vm_execute.skl
index 25b3d71,0c5e8a3..58e5631
--- a/Zend/zend_vm_execute.skl
+++ b/Zend/zend_vm_execute.skl
@@@ -70,28 -63,6 +70,28 @@@ zend_execute_data *zend_create_execute_
        EX(function_state).function = (zend_function *) op_array;
        EX(function_state).arguments = NULL;
  
 +      return execute_data;
 +}
 +
 +ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data *execute_data TSRMLS_DC)
 +{
 +      DCL_OPLINE
- 
-       zend_bool original_in_execution = EG(in_execution);
++      zend_bool original_in_execution;
 +
 +      {%HELPER_VARS%}
 +
 +      {%INTERNAL_LABELS%}
 +
 +      if (EG(exception)) {
 +              return;
 +      }
 +
++      original_in_execution = EG(in_execution);
 +      EG(in_execution) = 1;
 +
 +      LOAD_REGS();
 +      LOAD_OPLINE();
 +
        while (1) {
      {%ZEND_VM_CONTINUE_LABEL%}
  #ifdef ZEND_WIN32


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to