|
|
|
@ -369,21 +369,21 @@ ZEND_API void zend_execute(zend_op_array *op_array, zval *return_value TSRMLS_DC |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
execute_data = zend_vm_stack_push_call_frame( |
|
|
|
(zend_function*)op_array, 0, 0, EG(current_execute_data) ? EG(current_execute_data)->called_scope : NULL, EG(current_execute_data) ? Z_OBJ(EG(current_execute_data)->This) : NULL, NULL TSRMLS_CC); |
|
|
|
execute_data = zend_vm_stack_push_call_frame(VM_FRAME_TOP_CODE, |
|
|
|
(zend_function*)op_array, 0, EG(current_execute_data) ? EG(current_execute_data)->called_scope : NULL, EG(current_execute_data) ? Z_OBJ(EG(current_execute_data)->This) : NULL, NULL TSRMLS_CC); |
|
|
|
if (EG(current_execute_data)) { |
|
|
|
execute_data->symbol_table = zend_rebuild_symbol_table(TSRMLS_C); |
|
|
|
} else { |
|
|
|
execute_data->symbol_table = &EG(symbol_table); |
|
|
|
} |
|
|
|
EX(prev_execute_data) = EG(current_execute_data); |
|
|
|
i_init_execute_data(execute_data, op_array, return_value, VM_FRAME_TOP_CODE TSRMLS_CC); |
|
|
|
i_init_execute_data(execute_data, op_array, return_value TSRMLS_CC); |
|
|
|
zend_execute_ex(execute_data TSRMLS_CC); |
|
|
|
} |
|
|
|
|
|
|
|
static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
{ |
|
|
|
vm_frame_kind frame_kind = EX(frame_kind); |
|
|
|
vm_frame_kind frame_kind = VM_FRAME_KIND(EX(frame_info)); |
|
|
|
|
|
|
|
if (frame_kind == VM_FRAME_NESTED_FUNCTION) { |
|
|
|
zend_object *object; |
|
|
|
@ -601,12 +601,14 @@ static int ZEND_FASTCALL ZEND_DO_FCALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
zend_vm_stack_free_call_frame(call TSRMLS_CC); |
|
|
|
} else { |
|
|
|
call->prev_execute_data = execute_data; |
|
|
|
i_init_func_execute_data(call, &fbc->op_array, return_value, VM_FRAME_NESTED_FUNCTION TSRMLS_CC); |
|
|
|
i_init_func_execute_data(call, &fbc->op_array, return_value TSRMLS_CC); |
|
|
|
|
|
|
|
if (EXPECTED(zend_execute_ex == execute_ex)) { |
|
|
|
ZEND_VM_ENTER(); |
|
|
|
} else { |
|
|
|
call->frame_kind = VM_FRAME_TOP_FUNCTION; |
|
|
|
call->frame_info = VM_FRAME_INFO( |
|
|
|
VM_FRAME_TOP_FUNCTION, |
|
|
|
VM_FRAME_FLAGS(call->frame_info)); |
|
|
|
zend_execute_ex(call TSRMLS_CC); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1050,9 +1052,12 @@ static int ZEND_FASTCALL ZEND_NEW_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) |
|
|
|
} else { |
|
|
|
/* We are not handling overloaded classes right now */ |
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
constructor, opline->extended_value, |
|
|
|
RETURN_VALUE_USED(opline) ? |
|
|
|
ZEND_CALL_CTOR : (ZEND_CALL_CTOR | ZEND_CALL_CTOR_RESULT_UNUSED), |
|
|
|
VM_FRAME_INFO( |
|
|
|
VM_FRAME_NESTED_FUNCTION, |
|
|
|
RETURN_VALUE_USED(opline) ? |
|
|
|
ZEND_CALL_CTOR : (ZEND_CALL_CTOR | ZEND_CALL_CTOR_RESULT_UNUSED)), |
|
|
|
constructor, |
|
|
|
opline->extended_value, |
|
|
|
Z_CE_P(EX_VAR(opline->op1.var)), |
|
|
|
Z_OBJ(object_zval), |
|
|
|
EX(call) TSRMLS_CC); |
|
|
|
@ -1279,8 +1284,8 @@ static int ZEND_FASTCALL ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER |
|
|
|
zend_vm_stack_free_args(EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
if (Z_OBJ(call->This)) { |
|
|
|
if (call->flags & ZEND_CALL_CTOR) { |
|
|
|
if (!(call->flags & ZEND_CALL_CTOR_RESULT_UNUSED)) { |
|
|
|
if (call->frame_info & ZEND_CALL_CTOR) { |
|
|
|
if (!(call->frame_info & ZEND_CALL_CTOR_RESULT_UNUSED)) { |
|
|
|
GC_REFCOUNT(Z_OBJ(call->This))--; |
|
|
|
} |
|
|
|
if (GC_REFCOUNT(Z_OBJ(call->This)) == 1) { |
|
|
|
@ -1506,8 +1511,8 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE |
|
|
|
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc); |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, NULL, NULL, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
/*CHECK_EXCEPTION();*/ |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -1625,8 +1630,8 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE |
|
|
|
zend_error_noreturn(E_ERROR, "Function name must be a string"); |
|
|
|
ZEND_VM_CONTINUE(); /* Never reached */ |
|
|
|
} |
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -1657,8 +1662,8 @@ static int ZEND_FASTCALL ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPC |
|
|
|
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc); |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, NULL, NULL, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
@ -1681,8 +1686,8 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER |
|
|
|
CACHE_PTR(Z_CACHE_SLOT_P(fname), fbc); |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, NULL, NULL, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
} |
|
|
|
@ -1842,8 +1847,8 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_H |
|
|
|
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc); |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, NULL, NULL, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
/*CHECK_EXCEPTION();*/ |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -1962,8 +1967,8 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_H |
|
|
|
zend_error_noreturn(E_ERROR, "Function name must be a string"); |
|
|
|
ZEND_VM_CONTINUE(); /* Never reached */ |
|
|
|
} |
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -2028,8 +2033,8 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_H |
|
|
|
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc); |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, NULL, NULL, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
/*CHECK_EXCEPTION();*/ |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -2148,8 +2153,8 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_H |
|
|
|
zend_error_noreturn(E_ERROR, "Function name must be a string"); |
|
|
|
ZEND_VM_CONTINUE(); /* Never reached */ |
|
|
|
} |
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -2252,8 +2257,8 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA |
|
|
|
CACHE_PTR(Z_CACHE_SLOT_P(opline->op2.zv), fbc); |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, NULL, NULL, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, NULL, NULL, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
/*CHECK_EXCEPTION();*/ |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -2371,8 +2376,8 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA |
|
|
|
zend_error_noreturn(E_ERROR, "Function name must be a string"); |
|
|
|
ZEND_VM_CONTINUE(); /* Never reached */ |
|
|
|
} |
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -3019,8 +3024,8 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HA |
|
|
|
return_value = EX_VAR(opline->result.var); |
|
|
|
} |
|
|
|
|
|
|
|
call = zend_vm_stack_push_call_frame( |
|
|
|
(zend_function*)new_op_array, 0, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC); |
|
|
|
call = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_CODE, |
|
|
|
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC); |
|
|
|
|
|
|
|
if (EX(symbol_table)) { |
|
|
|
call->symbol_table = EX(symbol_table); |
|
|
|
@ -3029,11 +3034,11 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HA |
|
|
|
} |
|
|
|
|
|
|
|
call->prev_execute_data = execute_data; |
|
|
|
i_init_code_execute_data(call, new_op_array, return_value, VM_FRAME_NESTED_CODE TSRMLS_CC); |
|
|
|
i_init_code_execute_data(call, new_op_array, return_value TSRMLS_CC); |
|
|
|
if (EXPECTED(zend_execute_ex == execute_ex)) { |
|
|
|
ZEND_VM_ENTER(); |
|
|
|
} else { |
|
|
|
call->frame_kind = VM_FRAME_TOP_CODE; |
|
|
|
call->frame_info = VM_FRAME_TOP_CODE; |
|
|
|
zend_execute_ex(call TSRMLS_CC); |
|
|
|
} |
|
|
|
|
|
|
|
@ -4200,8 +4205,8 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER( |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, ce, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
if (IS_CONST == IS_UNUSED) { |
|
|
|
EX(call)->return_value = NULL; |
|
|
|
@ -4257,8 +4262,8 @@ static int ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCO |
|
|
|
object = NULL; |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
func, opline->extended_value, 0, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -5523,8 +5528,8 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER(ZE |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, ce, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
if (IS_TMP_VAR == IS_UNUSED) { |
|
|
|
EX(call)->return_value = NULL; |
|
|
|
@ -5580,8 +5585,8 @@ static int ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE |
|
|
|
object = NULL; |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
func, opline->extended_value, 0, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
zval_ptr_dtor_nogc(free_op2.var); |
|
|
|
CHECK_EXCEPTION(); |
|
|
|
@ -6718,8 +6723,8 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_VAR_HANDLER(ZE |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, ce, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
if (IS_VAR == IS_UNUSED) { |
|
|
|
EX(call)->return_value = NULL; |
|
|
|
@ -6775,8 +6780,8 @@ static int ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE |
|
|
|
object = NULL; |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
func, opline->extended_value, 0, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
zval_ptr_dtor_nogc(free_op2.var); |
|
|
|
CHECK_EXCEPTION(); |
|
|
|
@ -7664,8 +7669,8 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, ce, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
if (IS_UNUSED == IS_UNUSED) { |
|
|
|
EX(call)->return_value = NULL; |
|
|
|
@ -8653,8 +8658,8 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEN |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, ce, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
if (IS_CV == IS_UNUSED) { |
|
|
|
EX(call)->return_value = NULL; |
|
|
|
@ -8710,8 +8715,8 @@ static int ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_ |
|
|
|
object = NULL; |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
func, opline->extended_value, 0, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
func, opline->extended_value, called_scope, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
ZEND_VM_NEXT_OPCODE(); |
|
|
|
@ -9847,8 +9852,8 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HAND |
|
|
|
return_value = EX_VAR(opline->result.var); |
|
|
|
} |
|
|
|
|
|
|
|
call = zend_vm_stack_push_call_frame( |
|
|
|
(zend_function*)new_op_array, 0, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC); |
|
|
|
call = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_CODE, |
|
|
|
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC); |
|
|
|
|
|
|
|
if (EX(symbol_table)) { |
|
|
|
call->symbol_table = EX(symbol_table); |
|
|
|
@ -9857,11 +9862,11 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HAND |
|
|
|
} |
|
|
|
|
|
|
|
call->prev_execute_data = execute_data; |
|
|
|
i_init_code_execute_data(call, new_op_array, return_value, VM_FRAME_NESTED_CODE TSRMLS_CC); |
|
|
|
i_init_code_execute_data(call, new_op_array, return_value TSRMLS_CC); |
|
|
|
if (EXPECTED(zend_execute_ex == execute_ex)) { |
|
|
|
ZEND_VM_ENTER(); |
|
|
|
} else { |
|
|
|
call->frame_kind = VM_FRAME_TOP_CODE; |
|
|
|
call->frame_info = VM_FRAME_TOP_CODE; |
|
|
|
zend_execute_ex(call TSRMLS_CC); |
|
|
|
} |
|
|
|
|
|
|
|
@ -11070,8 +11075,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
@ -12236,8 +12241,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
zval_ptr_dtor_nogc(free_op2.var); |
|
|
|
|
|
|
|
@ -13403,8 +13408,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
zval_ptr_dtor_nogc(free_op2.var); |
|
|
|
|
|
|
|
@ -15159,8 +15164,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_ |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
@ -16576,8 +16581,8 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND |
|
|
|
return_value = EX_VAR(opline->result.var); |
|
|
|
} |
|
|
|
|
|
|
|
call = zend_vm_stack_push_call_frame( |
|
|
|
(zend_function*)new_op_array, 0, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC); |
|
|
|
call = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_CODE, |
|
|
|
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC); |
|
|
|
|
|
|
|
if (EX(symbol_table)) { |
|
|
|
call->symbol_table = EX(symbol_table); |
|
|
|
@ -16586,11 +16591,11 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND |
|
|
|
} |
|
|
|
|
|
|
|
call->prev_execute_data = execute_data; |
|
|
|
i_init_code_execute_data(call, new_op_array, return_value, VM_FRAME_NESTED_CODE TSRMLS_CC); |
|
|
|
i_init_code_execute_data(call, new_op_array, return_value TSRMLS_CC); |
|
|
|
if (EXPECTED(zend_execute_ex == execute_ex)) { |
|
|
|
ZEND_VM_ENTER(); |
|
|
|
} else { |
|
|
|
call->frame_kind = VM_FRAME_TOP_CODE; |
|
|
|
call->frame_info = VM_FRAME_TOP_CODE; |
|
|
|
zend_execute_ex(call TSRMLS_CC); |
|
|
|
} |
|
|
|
|
|
|
|
@ -18774,8 +18779,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
zval_ptr_dtor_nogc(free_op1.var); |
|
|
|
|
|
|
|
@ -18897,8 +18902,8 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZE |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, ce, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
if (IS_CONST == IS_UNUSED) { |
|
|
|
EX(call)->return_value = NULL; |
|
|
|
@ -21031,8 +21036,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
zval_ptr_dtor_nogc(free_op2.var); |
|
|
|
zval_ptr_dtor_nogc(free_op1.var); |
|
|
|
@ -21155,8 +21160,8 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, ce, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
if (IS_TMP_VAR == IS_UNUSED) { |
|
|
|
EX(call)->return_value = NULL; |
|
|
|
@ -23257,8 +23262,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
zval_ptr_dtor_nogc(free_op2.var); |
|
|
|
zval_ptr_dtor_nogc(free_op1.var); |
|
|
|
@ -23381,8 +23386,8 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, ce, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
if (IS_VAR == IS_UNUSED) { |
|
|
|
EX(call)->return_value = NULL; |
|
|
|
@ -24855,8 +24860,8 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(Z |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, ce, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
if (IS_UNUSED == IS_UNUSED) { |
|
|
|
EX(call)->return_value = NULL; |
|
|
|
@ -26675,8 +26680,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_ |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
zval_ptr_dtor_nogc(free_op1.var); |
|
|
|
|
|
|
|
@ -26798,8 +26803,8 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, ce, object, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, ce, object, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
if (IS_CV == IS_UNUSED) { |
|
|
|
EX(call)->return_value = NULL; |
|
|
|
@ -28292,8 +28297,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
@ -29691,8 +29696,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
zval_ptr_dtor_nogc(free_op2.var); |
|
|
|
|
|
|
|
@ -30997,8 +31002,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
zval_ptr_dtor_nogc(free_op2.var); |
|
|
|
|
|
|
|
@ -32813,8 +32818,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
@ -34213,8 +34218,8 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL |
|
|
|
return_value = EX_VAR(opline->result.var); |
|
|
|
} |
|
|
|
|
|
|
|
call = zend_vm_stack_push_call_frame( |
|
|
|
(zend_function*)new_op_array, 0, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC); |
|
|
|
call = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_CODE, |
|
|
|
(zend_function*)new_op_array, 0, EX(called_scope), Z_OBJ(EX(This)), NULL TSRMLS_CC); |
|
|
|
|
|
|
|
if (EX(symbol_table)) { |
|
|
|
call->symbol_table = EX(symbol_table); |
|
|
|
@ -34223,11 +34228,11 @@ static int ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL |
|
|
|
} |
|
|
|
|
|
|
|
call->prev_execute_data = execute_data; |
|
|
|
i_init_code_execute_data(call, new_op_array, return_value, VM_FRAME_NESTED_CODE TSRMLS_CC); |
|
|
|
i_init_code_execute_data(call, new_op_array, return_value TSRMLS_CC); |
|
|
|
if (EXPECTED(zend_execute_ex == execute_ex)) { |
|
|
|
ZEND_VM_ENTER(); |
|
|
|
} else { |
|
|
|
call->frame_kind = VM_FRAME_TOP_CODE; |
|
|
|
call->frame_info = VM_FRAME_TOP_CODE; |
|
|
|
zend_execute_ex(call TSRMLS_CC); |
|
|
|
} |
|
|
|
|
|
|
|
@ -36165,8 +36170,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
@ -38254,8 +38259,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_ |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
zval_ptr_dtor_nogc(free_op2.var); |
|
|
|
|
|
|
|
@ -40350,8 +40355,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_ |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
zval_ptr_dtor_nogc(free_op2.var); |
|
|
|
|
|
|
|
@ -43493,8 +43498,8 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H |
|
|
|
GC_REFCOUNT(obj)++; /* For $this pointer */ |
|
|
|
} |
|
|
|
|
|
|
|
EX(call) = zend_vm_stack_push_call_frame( |
|
|
|
fbc, opline->extended_value, 0, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
EX(call) = zend_vm_stack_push_call_frame(VM_FRAME_NESTED_FUNCTION, |
|
|
|
fbc, opline->extended_value, called_scope, obj, EX(call) TSRMLS_CC); |
|
|
|
|
|
|
|
|
|
|
|
CHECK_EXCEPTION(); |
|
|
|
|