[PHP-CVS] com php-src: The /e modifier is deprecated: Zend/zend_vm_gen.php
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
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
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