Skip to content

Commit 0fa50fb

Browse files
committed
Reored conditions
1 parent d909a83 commit 0fa50fb

File tree

2 files changed

+60
-60
lines changed

2 files changed

+60
-60
lines changed

Zend/zend_vm_def.h

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2765,7 +2765,36 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, ANY, ANY)
27652765

27662766
LOAD_OPLINE();
27672767

2768-
if (UNEXPECTED(fbc->type == ZEND_INTERNAL_FUNCTION)) {
2768+
if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
2769+
EG(scope) = fbc->common.scope;
2770+
if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
2771+
if (RETURN_VALUE_USED(opline)) {
2772+
zend_generator_create_zval(call, &fbc->op_array, EX_VAR(opline->result.var));
2773+
} else {
2774+
zend_vm_stack_free_args(call);
2775+
}
2776+
2777+
zend_vm_stack_free_call_frame(call);
2778+
} else {
2779+
ret = NULL;
2780+
call->symbol_table = NULL;
2781+
if (RETURN_VALUE_USED(opline)) {
2782+
ret = EX_VAR(opline->result.var);
2783+
ZVAL_NULL(ret);
2784+
Z_VAR_FLAGS_P(ret) = 0;
2785+
}
2786+
2787+
call->prev_execute_data = execute_data;
2788+
i_init_func_execute_data(call, &fbc->op_array, ret);
2789+
2790+
if (EXPECTED(zend_execute_ex == execute_ex)) {
2791+
ZEND_VM_ENTER();
2792+
} else {
2793+
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
2794+
zend_execute_ex(call);
2795+
}
2796+
}
2797+
} else if (EXPECTED(fbc->type < ZEND_USER_FUNCTION)) {
27692798
int should_change_scope = 0;
27702799
zval *ret;
27712800

@@ -2833,35 +2862,6 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, ANY, ANY)
28332862
} else {
28342863
ZEND_VM_C_GOTO(fcall_end);
28352864
}
2836-
} else if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
2837-
EG(scope) = fbc->common.scope;
2838-
if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
2839-
if (RETURN_VALUE_USED(opline)) {
2840-
zend_generator_create_zval(call, &fbc->op_array, EX_VAR(opline->result.var));
2841-
} else {
2842-
zend_vm_stack_free_args(call);
2843-
}
2844-
2845-
zend_vm_stack_free_call_frame(call);
2846-
} else {
2847-
ret = NULL;
2848-
call->symbol_table = NULL;
2849-
if (RETURN_VALUE_USED(opline)) {
2850-
ret = EX_VAR(opline->result.var);
2851-
ZVAL_NULL(ret);
2852-
Z_VAR_FLAGS_P(ret) = 0;
2853-
}
2854-
2855-
call->prev_execute_data = execute_data;
2856-
i_init_func_execute_data(call, &fbc->op_array, ret);
2857-
2858-
if (EXPECTED(zend_execute_ex == execute_ex)) {
2859-
ZEND_VM_ENTER();
2860-
} else {
2861-
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
2862-
zend_execute_ex(call);
2863-
}
2864-
}
28652865
} else { /* ZEND_OVERLOADED_FUNCTION */
28662866
EG(scope) = fbc->common.scope;
28672867

Zend/zend_vm_execute.h

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,36 @@ static int ZEND_FASTCALL ZEND_DO_FCALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
513513

514514
LOAD_OPLINE();
515515

516-
if (UNEXPECTED(fbc->type == ZEND_INTERNAL_FUNCTION)) {
516+
if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
517+
EG(scope) = fbc->common.scope;
518+
if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
519+
if (RETURN_VALUE_USED(opline)) {
520+
zend_generator_create_zval(call, &fbc->op_array, EX_VAR(opline->result.var));
521+
} else {
522+
zend_vm_stack_free_args(call);
523+
}
524+
525+
zend_vm_stack_free_call_frame(call);
526+
} else {
527+
ret = NULL;
528+
call->symbol_table = NULL;
529+
if (RETURN_VALUE_USED(opline)) {
530+
ret = EX_VAR(opline->result.var);
531+
ZVAL_NULL(ret);
532+
Z_VAR_FLAGS_P(ret) = 0;
533+
}
534+
535+
call->prev_execute_data = execute_data;
536+
i_init_func_execute_data(call, &fbc->op_array, ret);
537+
538+
if (EXPECTED(zend_execute_ex == execute_ex)) {
539+
ZEND_VM_ENTER();
540+
} else {
541+
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
542+
zend_execute_ex(call);
543+
}
544+
}
545+
} else if (EXPECTED(fbc->type < ZEND_USER_FUNCTION)) {
517546
int should_change_scope = 0;
518547
zval *ret;
519548

@@ -581,35 +610,6 @@ static int ZEND_FASTCALL ZEND_DO_FCALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
581610
} else {
582611
goto fcall_end;
583612
}
584-
} else if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
585-
EG(scope) = fbc->common.scope;
586-
if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
587-
if (RETURN_VALUE_USED(opline)) {
588-
zend_generator_create_zval(call, &fbc->op_array, EX_VAR(opline->result.var));
589-
} else {
590-
zend_vm_stack_free_args(call);
591-
}
592-
593-
zend_vm_stack_free_call_frame(call);
594-
} else {
595-
ret = NULL;
596-
call->symbol_table = NULL;
597-
if (RETURN_VALUE_USED(opline)) {
598-
ret = EX_VAR(opline->result.var);
599-
ZVAL_NULL(ret);
600-
Z_VAR_FLAGS_P(ret) = 0;
601-
}
602-
603-
call->prev_execute_data = execute_data;
604-
i_init_func_execute_data(call, &fbc->op_array, ret);
605-
606-
if (EXPECTED(zend_execute_ex == execute_ex)) {
607-
ZEND_VM_ENTER();
608-
} else {
609-
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
610-
zend_execute_ex(call);
611-
}
612-
}
613613
} else { /* ZEND_OVERLOADED_FUNCTION */
614614
EG(scope) = fbc->common.scope;
615615

0 commit comments

Comments
 (0)