[PHP-CVS] com php-src: The /e modifier is deprecated: Zend/zend_vm_gen.php

2012-11-03 Thread Xinchen Hui
Commit:3c6b0db05285d2374abc392360d6540c32f6ed66
Author:Xinchen Hui larue...@php.net Sun, 4 Nov 2012 00:53:45 +0800
Parents:   6dbf431541faee60fe1cc84daebc582fa6a982d5
Branches:  master

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

Log:
The /e modifier is deprecated

Changed paths:
  M  Zend/zend_vm_gen.php


Diff:
diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php
index ee2b0b2..bd5f2de 100644
--- a/Zend/zend_vm_gen.php
+++ b/Zend/zend_vm_gen.php
@@ -387,52 +387,67 @@ function gen_code($f, $spec, $kind, $export, $code, $op1, 
$op2, $name) {
// Updating code according to selected threading model
switch($kind) {
case ZEND_VM_KIND_CALL:
-   $code = preg_replace(
+   $code = preg_replace_callback(
array(
/EXECUTE_DATA/m,

/ZEND_VM_DISPATCH_TO_HANDLER\(\s*([A-Z_]*)\s*\)/m,
-   
/ZEND_VM_DISPATCH_TO_HELPER\(\s*([A-Za-z_]*)\s*\)/me,
-   
/ZEND_VM_DISPATCH_TO_HELPER_EX\(\s*([A-Za-z_]*)\s*,\s*[A-Za-z_]*\s*,\s*(.*)\s*\);/me,
-   ),
-   array(
-   execute_data,
-   return 
\\1.($spec?_SPEC:).$prefix[$op1].$prefix[$op2]._HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU),
-   'return 
'.helper_name('\\1',$spec,'$op1','$op2').'(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU)',
-   'return 
'.helper_name('\\1',$spec,'$op1','$op2').'(\\2, 
ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);',
+   
/ZEND_VM_DISPATCH_TO_HELPER\(\s*([A-Za-z_]*)\s*\)/m,
+   
/ZEND_VM_DISPATCH_TO_HELPER_EX\(\s*([A-Za-z_]*)\s*,\s*[A-Za-z_]*\s*,\s*(.*)\s*\);/m,
),
+   function($matches) use ($spec, $prefix, $op1, 
$op2) {
+   if (strncasecmp($matches[0], 
EXECUTE_DATA, strlen(EXECUTE_DATA)) == 0) {
+   return execute_data;
+   } else if (strncasecmp($matches[0], 
ZEND_VM_DISPATCH_TO_HANDLER, strlen(ZEND_VM_DISPATCH_TO_HANDLER)) == 0) {
+   return return  . $matches[1] 
. ($spec?_SPEC:) . $prefix[$op1] . $prefix[$op2] . 
_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+   } else if (strncasecmp($matches[0], 
ZEND_VM_DISPATCH_TO_HELPER_EX, strlen(ZEND_VM_DISPATCH_TO_HELPER_EX)) == 0) 
{
+   return return  . 
helper_name($matches[1], $spec, $op1, $op2) . ( . $matches[2]. , 
ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);;
+   } else {
+   return return  . 
helper_name($matches[1], $spec, $op1, $op2) . 
(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+   }
+   },
$code);
break;
case ZEND_VM_KIND_SWITCH:
-   $code = preg_replace(
+   $code = preg_replace_callback(
array(
/EXECUTE_DATA/m,

/ZEND_VM_DISPATCH_TO_HANDLER\(\s*([A-Z_]*)\s*\)/m,
-   
/ZEND_VM_DISPATCH_TO_HELPER\(\s*([A-Za-z_]*)\s*\)/me,
-   
/ZEND_VM_DISPATCH_TO_HELPER_EX\(\s*([A-Za-z_]*)\s*,\s*([A-Za-z_]*)\s*,\s*(.*)\s*\);/me,
+   
/ZEND_VM_DISPATCH_TO_HELPER\(\s*([A-Za-z_]*)\s*\)/m,
+   
/ZEND_VM_DISPATCH_TO_HELPER_EX\(\s*([A-Za-z_]*)\s*,\s*([A-Za-z_]*)\s*,\s*(.*)\s*\);/m,
),
-   array(
-   execute_data,
-   goto 
\\1.($spec?_SPEC:).$prefix[$op1].$prefix[$op2]._LABEL,
-   'goto 
'.helper_name('\\1',$spec,'$op1','$op2'),
-   '\\2 = \\3; goto 
'.helper_name('\\1',$spec,'$op1','$op2').';',
-   ),
-   $code);
+   function($matches) use ($spec, $prefix, $op1, 
$op2) {
+   if (strncasecmp($matches[0], 
EXECUTE_DATA, strlen(EXECUTE_DATA)) == 0) {
+   return execute_data;
+   } else if (strncasecmp($matches[0], 
ZEND_VM_DISPATCH_TO_HANDLER, 

[PHP-CVS] com php-src: Fixed bug #63428 (The behavior of execute() changed): Zend/zend_generators.c Zend/zend_vm_execute.h Zend/zend_vm_execute.skl

2012-11-03 Thread Xinchen Hui
Commit:7bcb8780e0ed042888f88c78919b7726be9ea931
Author:Xinchen Hui larue...@php.net Sun, 4 Nov 2012 12:48:35 +0800
Parents:   3c6b0db05285d2374abc392360d6540c32f6ed66
Branches:  master

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

Log:
Fixed bug #63428 (The behavior of execute() changed)

Bugs:
https://bugs.php.net/63428

Changed paths:
  M  Zend/zend_generators.c
  M  Zend/zend_vm_execute.h
  M  Zend/zend_vm_execute.skl


Diff:
diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c
index fba62dd..87f0644 100644
--- a/Zend/zend_generators.c
+++ b/Zend/zend_generators.c
@@ -461,6 +461,10 @@ static zend_function *zend_generator_get_constructor(zval 
*object TSRMLS_DC) /*
 
 void zend_generator_resume(zend_generator *generator TSRMLS_DC) /* {{{ */
 {
+   if (EG(exception)) {
+   return;
+   }
+
/* The generator is already closed, thus can't resume */
if (!generator-execute_data) {
return;
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 8c4b594..7a2cfc8 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -419,10 +419,6 @@ ZEND_API void execute_ex(zend_execute_data *execute_data 
TSRMLS_DC)
 
 
 
-   if (EG(exception)) {
-   return;
-   }
-
original_in_execution = EG(in_execution);
EG(in_execution) = 1;
 
@@ -459,9 +455,10 @@ ZEND_API void execute_ex(zend_execute_data *execute_data 
TSRMLS_DC)
 
 ZEND_API void execute(zend_op_array *op_array TSRMLS_DC)
 {
-   zend_execute_data *execute_data = 
zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC);
-
-   execute_ex(execute_data TSRMLS_CC);
+   if (EG(exception)) {
+   return;
+   } 
+   execute_ex(zend_create_execute_data_from_op_array(op_array, 0 
TSRMLS_CC) TSRMLS_CC);
 }
 
 static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
diff --git a/Zend/zend_vm_execute.skl b/Zend/zend_vm_execute.skl
index 58e5631..2a6fd71 100644
--- a/Zend/zend_vm_execute.skl
+++ b/Zend/zend_vm_execute.skl
@@ -82,10 +82,6 @@ ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data 
*execute_data TSRMLS_DC)
 
{%INTERNAL_LABELS%}
 
-   if (EG(exception)) {
-   return;
-   }
-
original_in_execution = EG(in_execution);
EG(in_execution) = 1;
 
@@ -110,9 +106,10 @@ ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data 
*execute_data TSRMLS_DC)
 
 ZEND_API void {%EXECUTOR_NAME%}(zend_op_array *op_array TSRMLS_DC)
 {
-   zend_execute_data *execute_data = 
zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC);
-
-   {%EXECUTOR_NAME%}_ex(execute_data TSRMLS_CC);
+   if (EG(exception)) {
+   return;
+   } 
+   {%EXECUTOR_NAME%}_ex(zend_create_execute_data_from_op_array(op_array, 0 
TSRMLS_CC) TSRMLS_CC);
 }
 
 {%EXTERNAL_EXECUTOR%}


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



Re: [PHP-CVS] com php-src: Fixed bug #63428 (The behavior of execute() changed): Zend/zend_generators.c Zend/zend_vm_execute.h Zend/zend_vm_execute.skl

2012-11-03 Thread Laruence
Nikic:
   you may want to review this.

thanks
On 11/4/12, Xinchen Hui larue...@php.net wrote:
 Commit:7bcb8780e0ed042888f88c78919b7726be9ea931
 Author:Xinchen Hui larue...@php.net Sun, 4 Nov 2012 12:48:35
 +0800
 Parents:   3c6b0db05285d2374abc392360d6540c32f6ed66
 Branches:  master

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

 Log:
 Fixed bug #63428 (The behavior of execute() changed)

 Bugs:
 https://bugs.php.net/63428

 Changed paths:
   M  Zend/zend_generators.c
   M  Zend/zend_vm_execute.h
   M  Zend/zend_vm_execute.skl


 Diff:
 diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c
 index fba62dd..87f0644 100644
 --- a/Zend/zend_generators.c
 +++ b/Zend/zend_generators.c
 @@ -461,6 +461,10 @@ static zend_function
 *zend_generator_get_constructor(zval *object TSRMLS_DC) /*

  void zend_generator_resume(zend_generator *generator TSRMLS_DC) /* {{{ */
  {
 + if (EG(exception)) {
 + return;
 + }
 +
   /* The generator is already closed, thus can't resume */
   if (!generator-execute_data) {
   return;
 diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
 index 8c4b594..7a2cfc8 100644
 --- a/Zend/zend_vm_execute.h
 +++ b/Zend/zend_vm_execute.h
 @@ -419,10 +419,6 @@ ZEND_API void execute_ex(zend_execute_data
 *execute_data TSRMLS_DC)



 - if (EG(exception)) {
 - return;
 - }
 -
   original_in_execution = EG(in_execution);
   EG(in_execution) = 1;

 @@ -459,9 +455,10 @@ ZEND_API void execute_ex(zend_execute_data
 *execute_data TSRMLS_DC)

  ZEND_API void execute(zend_op_array *op_array TSRMLS_DC)
  {
 - zend_execute_data *execute_data =
 zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC);
 -
 - execute_ex(execute_data TSRMLS_CC);
 + if (EG(exception)) {
 + return;
 + }
 + execute_ex(zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC)
 TSRMLS_CC);
  }

  static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
 diff --git a/Zend/zend_vm_execute.skl b/Zend/zend_vm_execute.skl
 index 58e5631..2a6fd71 100644
 --- a/Zend/zend_vm_execute.skl
 +++ b/Zend/zend_vm_execute.skl
 @@ -82,10 +82,6 @@ ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data
 *execute_data TSRMLS_DC)

   {%INTERNAL_LABELS%}

 - if (EG(exception)) {
 - return;
 - }
 -
   original_in_execution = EG(in_execution);
   EG(in_execution) = 1;

 @@ -110,9 +106,10 @@ ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data
 *execute_data TSRMLS_DC)

  ZEND_API void {%EXECUTOR_NAME%}(zend_op_array *op_array TSRMLS_DC)
  {
 - zend_execute_data *execute_data =
 zend_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC);
 -
 - {%EXECUTOR_NAME%}_ex(execute_data TSRMLS_CC);
 + if (EG(exception)) {
 + return;
 + }
 + {%EXECUTOR_NAME%}_ex(zend_create_execute_data_from_op_array(op_array, 0
 TSRMLS_CC) TSRMLS_CC);
  }

  {%EXTERNAL_EXECUTOR%}


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




-- 
惠新宸laruence
Senior PHP Engineer
http://www.laruence.com

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