com php-src: Avoid reallocation: Zend/zend_vm_def.h Zen d/zend_vm_execute.h
| From: | Dmitry Stogov | Date: | Mon, 09 Jun 2014 13:36:37 +0000 |
| Subject: | com php-src: Avoid reallocation: Zend/zend_vm_def.h Zen d/zend_vm_execute.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-78781@lists.php.net to get a copy of this message | ||
Commit: 371345bed6dc9c87ccc406ef4c2856826e40f72d
Author: Dmitry Stogov <dmitry@zend.com> Mon, 9 Jun 2014 17:36:37 +0400
Parents: 2d29f2d8d94591f7dab71c972f2e7c5909bb17ba
Branches: phpng
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=371345bed6dc9c87ccc406ef4c2856826e40f72d
Log:
Avoid reallocation
Changed paths:
M Zend/zend_vm_def.h
M Zend/zend_vm_execute.h
Diff:
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 9542419..6bf4c7c 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -4882,22 +4882,21 @@ ZEND_VM_HANDLER(142, ZEND_RAISE_ABSTRACT_ERROR, ANY, ANY)
ZEND_VM_HANDLER(58, ZEND_END_SILENCE, TMP, ANY)
{
USE_OPLINE
- zval restored_error_reporting;
+ char buf[MAX_LENGTH_OF_LONG + 1];
+ char *res;
SAVE_OPLINE();
if (!EG(error_reporting) && Z_LVAL_P(EX_VAR(opline->op1.var)) != 0) {
- ZVAL_LONG(&restored_error_reporting, Z_LVAL_P(EX_VAR(opline->op1.var)));
- EG(error_reporting) = Z_LVAL(restored_error_reporting);
- convert_to_string(&restored_error_reporting);
+ EG(error_reporting) = Z_LVAL_P(EX_VAR(opline->op1.var));
+ _zend_print_signed_to_buf(buf + sizeof(buf) - 1, EG(error_reporting), unsigned long, res);
if (EXPECTED(EG(error_reporting_ini_entry) != NULL)) {
if (EXPECTED(EG(error_reporting_ini_entry)->modified &&
EG(error_reporting_ini_entry)->value != EG(error_reporting_ini_entry)->orig_value)) {
efree(EG(error_reporting_ini_entry)->value);
}
- EG(error_reporting_ini_entry)->value = estrndup(Z_STRVAL(restored_error_reporting),
Z_STRLEN(restored_error_reporting));
- EG(error_reporting_ini_entry)->value_length = Z_STRLEN(restored_error_reporting);
+ EG(error_reporting_ini_entry)->value_length = buf + sizeof(buf) - 1 - res;
+ EG(error_reporting_ini_entry)->value = estrndup(res,
EG(error_reporting_ini_entry)->value_length);
}
- zval_dtor(&restored_error_reporting);
}
//??? if (EX(old_error_reporting) == EX_VAR(opline->op1.var)) {
//??? EX(old_error_reporting) = NULL;
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index b1198b2..d979ce4 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -8423,22 +8423,21 @@ static int ZEND_FASTCALL
ZEND_EXIT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
static int ZEND_FASTCALL ZEND_END_SILENCE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
- zval restored_error_reporting;
+ char buf[MAX_LENGTH_OF_LONG + 1];
+ char *res;
SAVE_OPLINE();
if (!EG(error_reporting) && Z_LVAL_P(EX_VAR(opline->op1.var)) != 0) {
- ZVAL_LONG(&restored_error_reporting, Z_LVAL_P(EX_VAR(opline->op1.var)));
- EG(error_reporting) = Z_LVAL(restored_error_reporting);
- convert_to_string(&restored_error_reporting);
+ EG(error_reporting) = Z_LVAL_P(EX_VAR(opline->op1.var));
+ _zend_print_signed_to_buf(buf + sizeof(buf) - 1, EG(error_reporting), unsigned long, res);
if (EXPECTED(EG(error_reporting_ini_entry) != NULL)) {
if (EXPECTED(EG(error_reporting_ini_entry)->modified &&
EG(error_reporting_ini_entry)->value != EG(error_reporting_ini_entry)->orig_value)) {
efree(EG(error_reporting_ini_entry)->value);
}
- EG(error_reporting_ini_entry)->value = estrndup(Z_STRVAL(restored_error_reporting),
Z_STRLEN(restored_error_reporting));
- EG(error_reporting_ini_entry)->value_length = Z_STRLEN(restored_error_reporting);
+ EG(error_reporting_ini_entry)->value_length = buf + sizeof(buf) - 1 - res;
+ EG(error_reporting_ini_entry)->value = estrndup(res,
EG(error_reporting_ini_entry)->value_length);
}
- zval_dtor(&restored_error_reporting);
}
//??? if (EX(old_error_reporting) == EX_VAR(opline->op1.var)) {
//??? EX(old_error_reporting) = NULL;