Merge branch 'PHP-5.4' into PHP-5.5

Conflicts:
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
This commit is contained in:
Xinchen Hui 2013-07-14 11:53:56 +08:00
commit 2c4f823437
3 changed files with 146 additions and 71 deletions

21
Zend/tests/bug65254.phpt Normal file
View File

@ -0,0 +1,21 @@
--TEST--
Bug #65254 (Exception not catchable when exception thrown in autoload with a namespace)
--FILE--
<?php
function __autoload($class)
{
eval("namespace ns_test; class test {}");
throw new \Exception('abcd');
}
try
{
\ns_test\test::go();
}
catch (Exception $e)
{
echo 'caught';
}
--EXPECT--
caught

View File

@ -2517,9 +2517,11 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, CONST|VAR, CONST|TMP|VAR|UNUS
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -3532,9 +3534,11 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST)
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -3912,15 +3916,17 @@ ZEND_VM_HANDLER(74, ZEND_UNSET_VAR, CONST|TMP|VAR|CV, UNUSED|CONST|VAR)
ce = CACHED_PTR(opline->op2.literal->cache_slot); ce = CACHED_PTR(opline->op2.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(EG(exception) != NULL)) {
if (OP1_TYPE != IS_CONST && varname == &tmp) { if (OP1_TYPE != IS_CONST && varname == &tmp) {
zval_dtor(&tmp); zval_dtor(&tmp);
} else if (OP1_TYPE == IS_VAR || OP1_TYPE == IS_CV) { } else if (OP1_TYPE == IS_VAR || OP1_TYPE == IS_CV) {
zval_ptr_dtor(&varname); zval_ptr_dtor(&varname);
} }
FREE_OP1(); FREE_OP1();
CHECK_EXCEPTION(); HANDLE_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); }
if (UNEXPECTED(ce == NULL)) {
zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
} }
CACHE_PTR(opline->op2.literal->cache_slot, ce); CACHE_PTR(opline->op2.literal->cache_slot, ce);
} }

View File

@ -1423,7 +1423,6 @@ static int ZEND_FASTCALL ZEND_BRK_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
SAVE_OPLINE(); SAVE_OPLINE();
el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num, el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num,
EX(op_array), execute_data TSRMLS_CC); EX(op_array), execute_data TSRMLS_CC);
ZEND_VM_JMP(EX(op_array)->opcodes + el->brk); ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
} }
@ -1435,7 +1434,6 @@ static int ZEND_FASTCALL ZEND_CONT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
SAVE_OPLINE(); SAVE_OPLINE();
el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num, el = zend_brk_cont(Z_LVAL_P(opline->op2.zv), opline->op1.opline_num,
EX(op_array), execute_data TSRMLS_CC); EX(op_array), execute_data TSRMLS_CC);
ZEND_VM_JMP(EX(op_array)->opcodes + el->cont); ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
} }
@ -3540,9 +3538,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER(
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -3714,9 +3714,11 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCO
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -3901,15 +3903,17 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HA
ce = CACHED_PTR(opline->op2.literal->cache_slot); ce = CACHED_PTR(opline->op2.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(EG(exception) != NULL)) {
if (IS_CONST != IS_CONST && varname == &tmp) { if (IS_CONST != IS_CONST && varname == &tmp) {
zval_dtor(&tmp); zval_dtor(&tmp);
} else if (IS_CONST == IS_VAR || IS_CONST == IS_CV) { } else if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
zval_ptr_dtor(&varname); zval_ptr_dtor(&varname);
} }
CHECK_EXCEPTION(); HANDLE_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); }
if (UNEXPECTED(ce == NULL)) {
zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
} }
CACHE_PTR(opline->op2.literal->cache_slot, ce); CACHE_PTR(opline->op2.literal->cache_slot, ce);
} }
@ -4533,9 +4537,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER(ZE
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -5395,9 +5401,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_VAR_HANDLER(ZE
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -5662,15 +5670,17 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HAND
ce = CACHED_PTR(opline->op2.literal->cache_slot); ce = CACHED_PTR(opline->op2.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(EG(exception) != NULL)) {
if (IS_CONST != IS_CONST && varname == &tmp) { if (IS_CONST != IS_CONST && varname == &tmp) {
zval_dtor(&tmp); zval_dtor(&tmp);
} else if (IS_CONST == IS_VAR || IS_CONST == IS_CV) { } else if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
zval_ptr_dtor(&varname); zval_ptr_dtor(&varname);
} }
CHECK_EXCEPTION(); HANDLE_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); }
if (UNEXPECTED(ce == NULL)) {
zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
} }
CACHE_PTR(opline->op2.literal->cache_slot, ce); CACHE_PTR(opline->op2.literal->cache_slot, ce);
} }
@ -6113,9 +6123,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -6362,15 +6374,17 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_H
ce = CACHED_PTR(opline->op2.literal->cache_slot); ce = CACHED_PTR(opline->op2.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(EG(exception) != NULL)) {
if (IS_CONST != IS_CONST && varname == &tmp) { if (IS_CONST != IS_CONST && varname == &tmp) {
zval_dtor(&tmp); zval_dtor(&tmp);
} else if (IS_CONST == IS_VAR || IS_CONST == IS_CV) { } else if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
zval_ptr_dtor(&varname); zval_ptr_dtor(&varname);
} }
CHECK_EXCEPTION(); HANDLE_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); }
if (UNEXPECTED(ce == NULL)) {
zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
} }
CACHE_PTR(opline->op2.literal->cache_slot, ce); CACHE_PTR(opline->op2.literal->cache_slot, ce);
} }
@ -6972,9 +6986,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEN
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -9170,15 +9186,17 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HAND
ce = CACHED_PTR(opline->op2.literal->cache_slot); ce = CACHED_PTR(opline->op2.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(EG(exception) != NULL)) {
if (IS_TMP_VAR != IS_CONST && varname == &tmp) { if (IS_TMP_VAR != IS_CONST && varname == &tmp) {
zval_dtor(&tmp); zval_dtor(&tmp);
} else if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) { } else if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
zval_ptr_dtor(&varname); zval_ptr_dtor(&varname);
} }
zval_dtor(free_op1.var); zval_dtor(free_op1.var);
CHECK_EXCEPTION(); HANDLE_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); }
if (UNEXPECTED(ce == NULL)) {
zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
} }
CACHE_PTR(opline->op2.literal->cache_slot, ce); CACHE_PTR(opline->op2.literal->cache_slot, ce);
} }
@ -10899,15 +10917,17 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLE
ce = CACHED_PTR(opline->op2.literal->cache_slot); ce = CACHED_PTR(opline->op2.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(EG(exception) != NULL)) {
if (IS_TMP_VAR != IS_CONST && varname == &tmp) { if (IS_TMP_VAR != IS_CONST && varname == &tmp) {
zval_dtor(&tmp); zval_dtor(&tmp);
} else if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) { } else if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
zval_ptr_dtor(&varname); zval_ptr_dtor(&varname);
} }
zval_dtor(free_op1.var); zval_dtor(free_op1.var);
CHECK_EXCEPTION(); HANDLE_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); }
if (UNEXPECTED(ce == NULL)) {
zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
} }
CACHE_PTR(opline->op2.literal->cache_slot, ce); CACHE_PTR(opline->op2.literal->cache_slot, ce);
} }
@ -11478,15 +11498,17 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HAN
ce = CACHED_PTR(opline->op2.literal->cache_slot); ce = CACHED_PTR(opline->op2.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(EG(exception) != NULL)) {
if (IS_TMP_VAR != IS_CONST && varname == &tmp) { if (IS_TMP_VAR != IS_CONST && varname == &tmp) {
zval_dtor(&tmp); zval_dtor(&tmp);
} else if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) { } else if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
zval_ptr_dtor(&varname); zval_ptr_dtor(&varname);
} }
zval_dtor(free_op1.var); zval_dtor(free_op1.var);
CHECK_EXCEPTION(); HANDLE_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); }
if (UNEXPECTED(ce == NULL)) {
zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
} }
CACHE_PTR(opline->op2.literal->cache_slot, ce); CACHE_PTR(opline->op2.literal->cache_slot, ce);
} }
@ -15411,9 +15433,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZE
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -15585,9 +15609,11 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -15772,15 +15798,17 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HAND
ce = CACHED_PTR(opline->op2.literal->cache_slot); ce = CACHED_PTR(opline->op2.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(EG(exception) != NULL)) {
if (IS_VAR != IS_CONST && varname == &tmp) { if (IS_VAR != IS_CONST && varname == &tmp) {
zval_dtor(&tmp); zval_dtor(&tmp);
} else if (IS_VAR == IS_VAR || IS_VAR == IS_CV) { } else if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
zval_ptr_dtor(&varname); zval_ptr_dtor(&varname);
} }
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
CHECK_EXCEPTION(); HANDLE_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); }
if (UNEXPECTED(ce == NULL)) {
zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
} }
CACHE_PTR(opline->op2.literal->cache_slot, ce); CACHE_PTR(opline->op2.literal->cache_slot, ce);
} }
@ -17763,9 +17791,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -20079,9 +20109,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -20346,15 +20378,17 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLE
ce = CACHED_PTR(opline->op2.literal->cache_slot); ce = CACHED_PTR(opline->op2.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(EG(exception) != NULL)) {
if (IS_VAR != IS_CONST && varname == &tmp) { if (IS_VAR != IS_CONST && varname == &tmp) {
zval_dtor(&tmp); zval_dtor(&tmp);
} else if (IS_VAR == IS_VAR || IS_VAR == IS_CV) { } else if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
zval_ptr_dtor(&varname); zval_ptr_dtor(&varname);
} }
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
CHECK_EXCEPTION(); HANDLE_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); }
if (UNEXPECTED(ce == NULL)) {
zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
} }
CACHE_PTR(opline->op2.literal->cache_slot, ce); CACHE_PTR(opline->op2.literal->cache_slot, ce);
} }
@ -21516,9 +21550,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(Z
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -21765,15 +21801,17 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HAN
ce = CACHED_PTR(opline->op2.literal->cache_slot); ce = CACHED_PTR(opline->op2.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(EG(exception) != NULL)) {
if (IS_VAR != IS_CONST && varname == &tmp) { if (IS_VAR != IS_CONST && varname == &tmp) {
zval_dtor(&tmp); zval_dtor(&tmp);
} else if (IS_VAR == IS_VAR || IS_VAR == IS_CV) { } else if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
zval_ptr_dtor(&varname); zval_ptr_dtor(&varname);
} }
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
CHECK_EXCEPTION(); HANDLE_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); }
if (UNEXPECTED(ce == NULL)) {
zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
} }
CACHE_PTR(opline->op2.literal->cache_slot, ce); CACHE_PTR(opline->op2.literal->cache_slot, ce);
} }
@ -23532,9 +23570,11 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -25206,9 +25246,11 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPC
ce = CACHED_PTR(opline->op1.literal->cache_slot); ce = CACHED_PTR(opline->op1.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op1.zv), Z_STRLEN_P(opline->op1.zv), opline->op1.literal + 1, opline->extended_value TSRMLS_CC);
if (UNEXPECTED(EG(exception) != NULL)) {
HANDLE_EXCEPTION();
}
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(ce == NULL)) {
CHECK_EXCEPTION(); zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op1.zv));
ZEND_VM_NEXT_OPCODE();
} }
CACHE_PTR(opline->op1.literal->cache_slot, ce); CACHE_PTR(opline->op1.literal->cache_slot, ce);
} }
@ -33023,15 +33065,17 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDL
ce = CACHED_PTR(opline->op2.literal->cache_slot); ce = CACHED_PTR(opline->op2.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(EG(exception) != NULL)) {
if (IS_CV != IS_CONST && varname == &tmp) { if (IS_CV != IS_CONST && varname == &tmp) {
zval_dtor(&tmp); zval_dtor(&tmp);
} else if (IS_CV == IS_VAR || IS_CV == IS_CV) { } else if (IS_CV == IS_VAR || IS_CV == IS_CV) {
zval_ptr_dtor(&varname); zval_ptr_dtor(&varname);
} }
CHECK_EXCEPTION(); HANDLE_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); }
if (UNEXPECTED(ce == NULL)) {
zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
} }
CACHE_PTR(opline->op2.literal->cache_slot, ce); CACHE_PTR(opline->op2.literal->cache_slot, ce);
} }
@ -37324,15 +37368,17 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER
ce = CACHED_PTR(opline->op2.literal->cache_slot); ce = CACHED_PTR(opline->op2.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(EG(exception) != NULL)) {
if (IS_CV != IS_CONST && varname == &tmp) { if (IS_CV != IS_CONST && varname == &tmp) {
zval_dtor(&tmp); zval_dtor(&tmp);
} else if (IS_CV == IS_VAR || IS_CV == IS_CV) { } else if (IS_CV == IS_VAR || IS_CV == IS_CV) {
zval_ptr_dtor(&varname); zval_ptr_dtor(&varname);
} }
CHECK_EXCEPTION(); HANDLE_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); }
if (UNEXPECTED(ce == NULL)) {
zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
} }
CACHE_PTR(opline->op2.literal->cache_slot, ce); CACHE_PTR(opline->op2.literal->cache_slot, ce);
} }
@ -38614,15 +38660,17 @@ static int ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HAND
ce = CACHED_PTR(opline->op2.literal->cache_slot); ce = CACHED_PTR(opline->op2.literal->cache_slot);
} else { } else {
ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC); ce = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), opline->op2.literal + 1, 0 TSRMLS_CC);
if (UNEXPECTED(ce == NULL)) { if (UNEXPECTED(EG(exception) != NULL)) {
if (IS_CV != IS_CONST && varname == &tmp) { if (IS_CV != IS_CONST && varname == &tmp) {
zval_dtor(&tmp); zval_dtor(&tmp);
} else if (IS_CV == IS_VAR || IS_CV == IS_CV) { } else if (IS_CV == IS_VAR || IS_CV == IS_CV) {
zval_ptr_dtor(&varname); zval_ptr_dtor(&varname);
} }
CHECK_EXCEPTION(); HANDLE_EXCEPTION();
ZEND_VM_NEXT_OPCODE(); }
if (UNEXPECTED(ce == NULL)) {
zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL_P(opline->op2.zv));
} }
CACHE_PTR(opline->op2.literal->cache_slot, ce); CACHE_PTR(opline->op2.literal->cache_slot, ce);
} }