dmitry Mon, 07 Dec 2009 08:14:48 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=291807
Log: Fixed bug #50351 (performance regression handling objects, ten times slower in 5.3 than in 5.2. foreach statement should not initiate GC) Bug: http://bugs.php.net/50351 (Assigned) performance regression handling objects, ten times slower in 5.3 than in 5.2 Changed paths: U php/php-src/branches/PHP_5_3/NEWS U php/php-src/branches/PHP_5_3/Zend/zend_vm_def.h U php/php-src/branches/PHP_5_3/Zend/zend_vm_execute.h U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2009-12-07 08:10:06 UTC (rev 291806) +++ php/php-src/branches/PHP_5_3/NEWS 2009-12-07 08:14:48 UTC (rev 291807) @@ -30,6 +30,8 @@ - Fixed memory leak in extension loading when an error occurs on Windows. (Pierre) +- Fixed bug #50351 (performance regression handling objects, ten times slower + in 5.3 than in 5.2). (Dmitry) - Fixed bug #50345 (nanosleep not detected properly on some solaris versions). (Jani) - Fixed bug #50340 (php.ini parser does not allow spaces in ini keys). (Jani) Modified: php/php-src/branches/PHP_5_3/Zend/zend_vm_def.h =================================================================== --- php/php-src/branches/PHP_5_3/Zend/zend_vm_def.h 2009-12-07 08:10:06 UTC (rev 291806) +++ php/php-src/branches/PHP_5_3/Zend/zend_vm_def.h 2009-12-07 08:14:48 UTC (rev 291807) @@ -3691,7 +3691,7 @@ { zend_op *opline = EX(opline); zend_free_op free_op1; - zval *array = GET_OP1_ZVAL_PTR(BP_VAR_R); + zval *array = EX_T(opline->op1.u.var).var.ptr; zval **value; char *str_key; uint str_key_len; @@ -3701,8 +3701,6 @@ int key_type = 0; zend_bool use_key = (zend_bool)(opline->extended_value & ZEND_FE_FETCH_WITH_KEY); - PZVAL_LOCK(array); - switch (zend_iterator_unwrap(array, &iter TSRMLS_CC)) { default: case ZEND_ITER_INVALID: Modified: php/php-src/branches/PHP_5_3/Zend/zend_vm_execute.h =================================================================== --- php/php-src/branches/PHP_5_3/Zend/zend_vm_execute.h 2009-12-07 08:10:06 UTC (rev 291806) +++ php/php-src/branches/PHP_5_3/Zend/zend_vm_execute.h 2009-12-07 08:14:48 UTC (rev 291807) @@ -8851,8 +8851,8 @@ static int ZEND_FASTCALL ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op1; - zval *array = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); + + zval *array = EX_T(opline->op1.u.var).var.ptr; zval **value; char *str_key; uint str_key_len; @@ -8862,8 +8862,6 @@ int key_type = 0; zend_bool use_key = (zend_bool)(opline->extended_value & ZEND_FE_FETCH_WITH_KEY); - PZVAL_LOCK(array); - switch (zend_iterator_unwrap(array, &iter TSRMLS_CC)) { default: case ZEND_ITER_INVALID: Modified: php/php-src/trunk/Zend/zend_vm_def.h =================================================================== --- php/php-src/trunk/Zend/zend_vm_def.h 2009-12-07 08:10:06 UTC (rev 291806) +++ php/php-src/trunk/Zend/zend_vm_def.h 2009-12-07 08:14:48 UTC (rev 291807) @@ -3861,7 +3861,7 @@ { zend_op *opline = EX(opline); zend_free_op free_op1; - zval *array = GET_OP1_ZVAL_PTR(BP_VAR_R); + zval *array = EX_T(opline->op1.u.var).var.ptr; zval **value; zstr str_key; uint str_key_len; @@ -3871,8 +3871,6 @@ int key_type = 0; zend_bool use_key = (zend_bool)(opline->extended_value & ZEND_FE_FETCH_WITH_KEY); - PZVAL_LOCK(array); - switch (zend_iterator_unwrap(array, &iter TSRMLS_CC)) { default: case ZEND_ITER_INVALID: Modified: php/php-src/trunk/Zend/zend_vm_execute.h =================================================================== --- php/php-src/trunk/Zend/zend_vm_execute.h 2009-12-07 08:10:06 UTC (rev 291806) +++ php/php-src/trunk/Zend/zend_vm_execute.h 2009-12-07 08:14:48 UTC (rev 291807) @@ -9199,8 +9199,8 @@ static int ZEND_FASTCALL ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_op *opline = EX(opline); - zend_free_op free_op1; - zval *array = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); + + zval *array = EX_T(opline->op1.u.var).var.ptr; zval **value; zstr str_key; uint str_key_len; @@ -9210,8 +9210,6 @@ int key_type = 0; zend_bool use_key = (zend_bool)(opline->extended_value & ZEND_FE_FETCH_WITH_KEY); - PZVAL_LOCK(array); - switch (zend_iterator_unwrap(array, &iter TSRMLS_CC)) { default: case ZEND_ITER_INVALID:
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php