com php-src: ZEND_INIT_FCALL_BY_NAME can have non -string literal: ext/opcache/Optimizer/optimize_func_ calls.c

From: Date: Fri, 15 Aug 2014 20:55:15 +0000
Subject: com php-src: ZEND_INIT_FCALL_BY_NAME can have non -string literal: ext/opcache/Optimizer/optimize_func_ calls.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-80859@lists.php.net to get a copy of this message
Commit: f72d6f97ecf976f00abc0dc21b5d1ef4838de60a Author: Nikita Popov <nikic@php.net> Fri, 15 Aug 2014 22:55:15 +0200 Parents: 9cfbf333b03f1a50394219f9d42871a6564b8ac6 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=f72d6f97ecf976f00abc0dc21b5d1ef4838de60a Log: ZEND_INIT_FCALL_BY_NAME can have non-string literal Changed paths: M ext/opcache/Optimizer/optimize_func_calls.c Diff: diff --git a/ext/opcache/Optimizer/optimize_func_calls.c b/ext/opcache/Optimizer/optimize_func_calls.c index b93fc36..9e3ed29 100644 --- a/ext/opcache/Optimizer/optimize_func_calls.c +++ b/ext/opcache/Optimizer/optimize_func_calls.c @@ -3,6 +3,10 @@ */ #if ZEND_EXTENSION_API_NO > PHP_5_3_X_API_NO +#define ZEND_OP2_IS_CONST_STRING(opline) \ + (ZEND_OP2_TYPE(opline) == IS_CONST && \ + Z_TYPE(op_array->literals[(opline)->op2.constant]) == IS_STRING) + typedef struct _optimizer_call_info { zend_function *func; zend_op *opline; @@ -25,7 +29,7 @@ static void optimize_func_calls(zend_op_array *op_array, zend_optimizer_ctx *ctx switch (opline->opcode) { case ZEND_INIT_FCALL_BY_NAME: case ZEND_INIT_NS_FCALL_BY_NAME: - if (ZEND_OP2_TYPE(opline) == IS_CONST) { + if (ZEND_OP2_IS_CONST_STRING(opline)) { zend_function *func; zval *function_name = &op_array->literals[opline->op2.constant + 1]; if ((func = zend_hash_find_ptr(&ctx->script->function_table, @@ -64,7 +68,7 @@ static void optimize_func_calls(zend_op_array *op_array, zend_optimizer_ctx *ctx } else if (opline->extended_value == 0 && call_stack[call].opline && call_stack[call].opline->opcode == ZEND_INIT_FCALL_BY_NAME && - ZEND_OP2_TYPE(call_stack[call].opline) == IS_CONST) { + ZEND_OP2_IS_CONST_STRING(call_stack[call].opline)) { zend_op *fcall = call_stack[call].opline;

« previous php.cvs (#80859) next »