@@ -446,7 +446,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_
446
446
if (UNEXPECTED(EX(symbol_table) != NULL)) {
447
447
zend_clean_and_cache_symbol_table(EX(symbol_table));
448
448
}
449
- zend_vm_stack_free_extra_args( execute_data);
449
+ zend_vm_stack_free_extra_args_ex(call_info, execute_data);
450
450
old_execute_data = execute_data;
451
451
execute_data = EG(current_execute_data) = EX(prev_execute_data);
452
452
if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
@@ -471,7 +471,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_
471
471
}
472
472
EG(scope) = EX(func)->op_array.scope;
473
473
474
- zend_vm_stack_free_call_frame( old_execute_data);
474
+ zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
475
475
476
476
if (UNEXPECTED(EG(exception) != NULL)) {
477
477
const zend_op *old_opline = EX(opline);
@@ -491,7 +491,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_
491
491
efree_size(EX(func), sizeof(zend_op_array));
492
492
old_execute_data = execute_data;
493
493
execute_data = EG(current_execute_data) = EX(prev_execute_data);
494
- zend_vm_stack_free_call_frame( old_execute_data);
494
+ zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
495
495
496
496
zend_attach_symbol_table(execute_data);
497
497
if (UNEXPECTED(EG(exception) != NULL)) {
@@ -508,7 +508,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_
508
508
if (UNEXPECTED(EX(symbol_table) != NULL)) {
509
509
zend_clean_and_cache_symbol_table(EX(symbol_table));
510
510
}
511
- zend_vm_stack_free_extra_args( execute_data);
511
+ zend_vm_stack_free_extra_args_ex(call_info, execute_data);
512
512
EG(current_execute_data) = EX(prev_execute_data);
513
513
if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
514
514
OBJ_RELEASE((zend_object*)EX(func)->op_array.prototype);
@@ -529,7 +529,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_
529
529
}
530
530
EG(current_execute_data) = EX(prev_execute_data);
531
531
}
532
- zend_vm_stack_free_call_frame( execute_data);
532
+ zend_vm_stack_free_call_frame_ex(call_info, execute_data);
533
533
534
534
ZEND_VM_RETURN();
535
535
}
@@ -2058,32 +2058,32 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_H
2058
2058
try_function_name:
2059
2059
if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
2060
2060
const char *colon;
2061
-
2061
+
2062
2062
if ((colon = zend_memrchr(Z_STRVAL_P(function_name), ':', Z_STRLEN_P(function_name))) != NULL &&
2063
2063
colon > Z_STRVAL_P(function_name) &&
2064
2064
*(colon-1) == ':'
2065
2065
) {
2066
2066
zend_string *mname;
2067
2067
size_t cname_length = colon - Z_STRVAL_P(function_name) - 1;
2068
2068
size_t mname_length = Z_STRLEN_P(function_name) - cname_length - (sizeof("::") - 1);
2069
-
2069
+
2070
2070
if (!mname_length) {
2071
2071
zend_error(E_EXCEPTION | E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(function_name));
2072
2072
2073
2073
HANDLE_EXCEPTION();
2074
2074
}
2075
-
2075
+
2076
2076
lcname = zend_string_init(Z_STRVAL_P(function_name), cname_length, 0);
2077
-
2077
+
2078
2078
called_scope = zend_fetch_class_by_name(lcname, NULL, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
2079
2079
if (UNEXPECTED(called_scope == NULL)) {
2080
2080
zend_string_release(lcname);
2081
2081
CHECK_EXCEPTION();
2082
2082
ZEND_VM_NEXT_OPCODE();
2083
2083
}
2084
-
2084
+
2085
2085
mname = zend_string_init(Z_STRVAL_P(function_name) + (cname_length + sizeof("::") - 1), mname_length, 0);
2086
-
2086
+
2087
2087
if (called_scope->get_static_method) {
2088
2088
fbc = called_scope->get_static_method(called_scope, mname);
2089
2089
} else {
@@ -2098,10 +2098,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_H
2098
2098
2099
2099
HANDLE_EXCEPTION();
2100
2100
}
2101
-
2101
+
2102
2102
zend_string_release(lcname);
2103
2103
zend_string_release(mname);
2104
-
2104
+
2105
2105
if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
2106
2106
if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
2107
2107
zend_error(E_DEPRECATED,
@@ -2135,6 +2135,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_H
2135
2135
called_scope = NULL;
2136
2136
object = NULL;
2137
2137
}
2138
+
2138
2139
} else if (IS_CONST != IS_CONST &&
2139
2140
EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT) &&
2140
2141
Z_OBJ_HANDLER_P(function_name, get_closure) &&
@@ -2529,32 +2530,32 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_CV_HAND
2529
2530
try_function_name:
2530
2531
if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
2531
2532
const char *colon;
2532
-
2533
+
2533
2534
if ((colon = zend_memrchr(Z_STRVAL_P(function_name), ':', Z_STRLEN_P(function_name))) != NULL &&
2534
2535
colon > Z_STRVAL_P(function_name) &&
2535
2536
*(colon-1) == ':'
2536
2537
) {
2537
2538
zend_string *mname;
2538
2539
size_t cname_length = colon - Z_STRVAL_P(function_name) - 1;
2539
2540
size_t mname_length = Z_STRLEN_P(function_name) - cname_length - (sizeof("::") - 1);
2540
-
2541
+
2541
2542
if (!mname_length) {
2542
2543
zend_error(E_EXCEPTION | E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(function_name));
2543
2544
2544
2545
HANDLE_EXCEPTION();
2545
2546
}
2546
-
2547
+
2547
2548
lcname = zend_string_init(Z_STRVAL_P(function_name), cname_length, 0);
2548
-
2549
+
2549
2550
called_scope = zend_fetch_class_by_name(lcname, NULL, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
2550
2551
if (UNEXPECTED(called_scope == NULL)) {
2551
2552
zend_string_release(lcname);
2552
2553
CHECK_EXCEPTION();
2553
2554
ZEND_VM_NEXT_OPCODE();
2554
2555
}
2555
-
2556
+
2556
2557
mname = zend_string_init(Z_STRVAL_P(function_name) + (cname_length + sizeof("::") - 1), mname_length, 0);
2557
-
2558
+
2558
2559
if (called_scope->get_static_method) {
2559
2560
fbc = called_scope->get_static_method(called_scope, mname);
2560
2561
} else {
@@ -2569,10 +2570,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_CV_HAND
2569
2570
2570
2571
HANDLE_EXCEPTION();
2571
2572
}
2572
-
2573
+
2573
2574
zend_string_release(lcname);
2574
2575
zend_string_release(mname);
2575
-
2576
+
2576
2577
if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
2577
2578
if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
2578
2579
zend_error(E_DEPRECATED,
@@ -2606,6 +2607,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_CV_HAND
2606
2607
called_scope = NULL;
2607
2608
object = NULL;
2608
2609
}
2610
+
2609
2611
} else if (IS_CV != IS_CONST &&
2610
2612
EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT) &&
2611
2613
Z_OBJ_HANDLER_P(function_name, get_closure) &&
@@ -2781,32 +2783,32 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_
2781
2783
try_function_name:
2782
2784
if ((IS_TMP_VAR|IS_VAR) != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
2783
2785
const char *colon;
2784
-
2786
+
2785
2787
if ((colon = zend_memrchr(Z_STRVAL_P(function_name), ':', Z_STRLEN_P(function_name))) != NULL &&
2786
2788
colon > Z_STRVAL_P(function_name) &&
2787
2789
*(colon-1) == ':'
2788
2790
) {
2789
2791
zend_string *mname;
2790
2792
size_t cname_length = colon - Z_STRVAL_P(function_name) - 1;
2791
2793
size_t mname_length = Z_STRLEN_P(function_name) - cname_length - (sizeof("::") - 1);
2792
-
2794
+
2793
2795
if (!mname_length) {
2794
2796
zend_error(E_EXCEPTION | E_ERROR, "Call to undefined function %s()", Z_STRVAL_P(function_name));
2795
2797
zval_ptr_dtor_nogc(free_op2);
2796
2798
HANDLE_EXCEPTION();
2797
2799
}
2798
-
2800
+
2799
2801
lcname = zend_string_init(Z_STRVAL_P(function_name), cname_length, 0);
2800
-
2802
+
2801
2803
called_scope = zend_fetch_class_by_name(lcname, NULL, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
2802
2804
if (UNEXPECTED(called_scope == NULL)) {
2803
2805
zend_string_release(lcname);
2804
2806
CHECK_EXCEPTION();
2805
2807
ZEND_VM_NEXT_OPCODE();
2806
2808
}
2807
-
2809
+
2808
2810
mname = zend_string_init(Z_STRVAL_P(function_name) + (cname_length + sizeof("::") - 1), mname_length, 0);
2809
-
2811
+
2810
2812
if (called_scope->get_static_method) {
2811
2813
fbc = called_scope->get_static_method(called_scope, mname);
2812
2814
} else {
@@ -2821,10 +2823,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_
2821
2823
zval_ptr_dtor_nogc(free_op2);
2822
2824
HANDLE_EXCEPTION();
2823
2825
}
2824
-
2826
+
2825
2827
zend_string_release(lcname);
2826
2828
zend_string_release(mname);
2827
-
2829
+
2828
2830
if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
2829
2831
if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
2830
2832
zend_error(E_DEPRECATED,
0 commit comments