dmitry Mon, 30 Jan 2012 10:51:02 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=322928
Log: Fixed (disabled) inline-caching for ZEND_OVERLOADED_FUNCTION methods Changed paths: U php/php-src/branches/PHP_5_4/NEWS U php/php-src/branches/PHP_5_4/Zend/zend_vm_def.h U php/php-src/branches/PHP_5_4/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_4/NEWS =================================================================== --- php/php-src/branches/PHP_5_4/NEWS 2012-01-30 10:08:11 UTC (rev 322927) +++ php/php-src/branches/PHP_5_4/NEWS 2012-01-30 10:51:02 UTC (rev 322928) @@ -5,6 +5,8 @@ . Fix bug #60895 (Possible invalid handler usage in windows random functions). (Pierre) . Fixed bug #51860 (Include fails with toplevel symlink to /). (Dmitry) + . Fixed (disabled) inline-caching for ZEND_OVERLOADED_FUNCTION methods. + (Dmitry) - OpenSSL: . Fix possible attack in SSL sockets with SSL 3.0 / TLS 1.0. Modified: php/php-src/branches/PHP_5_4/Zend/zend_vm_def.h =================================================================== --- php/php-src/branches/PHP_5_4/Zend/zend_vm_def.h 2012-01-30 10:08:11 UTC (rev 322927) +++ php/php-src/branches/PHP_5_4/Zend/zend_vm_def.h 2012-01-30 10:51:02 UTC (rev 322928) @@ -2187,6 +2187,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (OP2_TYPE == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -2284,7 +2285,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (OP2_TYPE == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (OP2_TYPE == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (OP1_TYPE == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { Modified: php/php-src/branches/PHP_5_4/Zend/zend_vm_execute.h =================================================================== --- php/php-src/branches/PHP_5_4/Zend/zend_vm_execute.h 2012-01-30 10:08:11 UTC (rev 322927) +++ php/php-src/branches/PHP_5_4/Zend/zend_vm_execute.h 2012-01-30 10:51:02 UTC (rev 322928) @@ -3453,7 +3453,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_CONST == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_CONST == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_CONST == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -4237,7 +4239,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_TMP_VAR == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_TMP_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_CONST == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -4900,7 +4904,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_VAR == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_CONST == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -5434,7 +5440,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_UNUSED == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_UNUSED == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_CONST == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -6088,7 +6096,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_CV == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_CV == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_CONST == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -7856,6 +7866,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CONST == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -8510,6 +8521,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_TMP_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -9175,6 +9187,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -10233,6 +10246,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CV == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -13298,6 +13312,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CONST == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -13394,7 +13409,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_CONST == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_CONST == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_VAR == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -15447,6 +15464,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_TMP_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -15544,7 +15562,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_TMP_VAR == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_TMP_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_VAR == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -17571,6 +17591,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -17668,7 +17689,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_VAR == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_VAR == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -18918,7 +18941,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_UNUSED == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_UNUSED == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_VAR == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -20641,6 +20666,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CV == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -20737,7 +20763,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_CV == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_CV == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_VAR == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -22103,6 +22131,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CONST == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -23350,6 +23379,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_TMP_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -24507,6 +24537,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -25931,6 +25962,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CV == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -28997,6 +29029,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CONST == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -30929,6 +30962,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_TMP_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -32926,6 +32960,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -35733,6 +35768,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CV == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); Modified: php/php-src/trunk/Zend/zend_vm_def.h =================================================================== --- php/php-src/trunk/Zend/zend_vm_def.h 2012-01-30 10:08:11 UTC (rev 322927) +++ php/php-src/trunk/Zend/zend_vm_def.h 2012-01-30 10:51:02 UTC (rev 322928) @@ -2187,6 +2187,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (OP2_TYPE == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -2284,7 +2285,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (OP2_TYPE == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (OP2_TYPE == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (OP1_TYPE == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { Modified: php/php-src/trunk/Zend/zend_vm_execute.h =================================================================== --- php/php-src/trunk/Zend/zend_vm_execute.h 2012-01-30 10:08:11 UTC (rev 322927) +++ php/php-src/trunk/Zend/zend_vm_execute.h 2012-01-30 10:51:02 UTC (rev 322928) @@ -3453,7 +3453,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_CONST == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_CONST == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_CONST == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -4237,7 +4239,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_TMP_VAR == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_TMP_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_CONST == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -4900,7 +4904,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_VAR == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_CONST == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -5434,7 +5440,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_UNUSED == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_UNUSED == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_CONST == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -6088,7 +6096,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_CV == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_CV == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_CONST == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -7856,6 +7866,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CONST == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -8510,6 +8521,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_TMP_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -9175,6 +9187,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -10233,6 +10246,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CV == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -13298,6 +13312,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CONST == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -13394,7 +13409,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_CONST == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_CONST == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_VAR == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -15447,6 +15464,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_TMP_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -15544,7 +15562,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_TMP_VAR == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_TMP_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_VAR == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -17571,6 +17591,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -17668,7 +17689,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_VAR == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_VAR == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -18918,7 +18941,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_UNUSED == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_UNUSED == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_VAR == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -20641,6 +20666,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CV == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -20737,7 +20763,9 @@ if (UNEXPECTED(EX(fbc) == NULL)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval); } - if (IS_CV == IS_CONST && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { + if (IS_CV == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && + EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0)) { if (IS_VAR == IS_CONST) { CACHE_PTR(opline->op2.literal->cache_slot, EX(fbc)); } else { @@ -22103,6 +22131,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CONST == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -23350,6 +23379,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_TMP_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -24507,6 +24537,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -25931,6 +25962,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CV == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -28997,6 +29029,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CONST == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -30929,6 +30962,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_TMP_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -32926,6 +32960,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_VAR == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc)); @@ -35733,6 +35768,7 @@ zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } if (IS_CV == IS_CONST && + EXPECTED(EX(fbc)->type <= ZEND_USER_FUNCTION) && EXPECTED((EX(fbc)->common.fn_flags & (ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_NEVER_CACHE)) == 0) && EXPECTED(EX(object) == object)) { CACHE_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope), EX(fbc));
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php