Skip to content

Commit f394028

Browse files
committed
Move duplicated code into functions
1 parent 042709c commit f394028

File tree

1 file changed

+25
-20
lines changed

1 file changed

+25
-20
lines changed

Zend/Optimizer/zend_optimizer.c

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,26 @@ void zend_optimizer_shift_jump(zend_op_array *op_array, zend_op *opline, uint32_
792792
}
793793
}
794794

795+
static bool zend_optimizer_ignore_class(zend_class_entry *ce, zend_string *filename)
796+
{
797+
return ce->type == ZEND_USER_CLASS
798+
&& !(ce->ce_flags & ZEND_ACC_PRELOADED)
799+
&& (!ce->info.user.filename || ce->info.user.filename != filename);
800+
}
801+
802+
static bool zend_optimizer_ignore_function(zend_function *fbc, zend_string *filename)
803+
{
804+
if (fbc->type == ZEND_INTERNAL_FUNCTION) {
805+
return false;
806+
} else if (fbc->type == ZEND_USER_FUNCTION) {
807+
return !(fbc->op_array.fn_flags & ZEND_ACC_PRELOADED)
808+
&& (!fbc->op_array.filename && fbc->op_array.filename != filename);
809+
} else {
810+
ZEND_ASSERT(fbc->type == ZEND_EVAL_CODE);
811+
return true;
812+
}
813+
}
814+
795815
zend_class_entry *zend_optimizer_get_class_entry(
796816
const zend_script *script, const zend_op_array *op_array, zend_string *lcname) {
797817
zend_class_entry *ce = script ? zend_hash_find_ptr(&script->class_table, lcname) : NULL;
@@ -800,10 +820,7 @@ zend_class_entry *zend_optimizer_get_class_entry(
800820
}
801821

802822
ce = zend_hash_find_ptr(CG(class_table), lcname);
803-
if (ce
804-
&& (ce->type == ZEND_INTERNAL_CLASS
805-
|| (ce->ce_flags & ZEND_ACC_PRELOADED)
806-
|| (op_array && ce->info.user.filename == op_array->filename))) {
823+
if (ce && !zend_optimizer_ignore_class(ce, op_array ? op_array->filename : NULL)) {
807824
return ce;
808825
}
809826

@@ -846,12 +863,8 @@ const zend_class_constant *zend_fetch_class_const_info(
846863
ce = zend_optimizer_get_class_entry(script, op_array, Z_STR_P(op1 + 1));
847864
} else {
848865
zend_class_entry *tmp = zend_hash_find_ptr(EG(class_table), Z_STR_P(op1 + 1));
849-
if (tmp != NULL) {
850-
if (tmp->type == ZEND_INTERNAL_CLASS
851-
|| (tmp->ce_flags & ZEND_ACC_PRELOADED)
852-
|| (tmp->info.user.filename && tmp->info.user.filename == op_array->filename)) {
853-
ce = tmp;
854-
}
866+
if (tmp != NULL && !zend_optimizer_ignore_class(tmp, op_array->filename)) {
867+
ce = tmp;
855868
}
856869
}
857870
}
@@ -899,11 +912,7 @@ zend_function *zend_optimizer_get_called_func(
899912
if (script && (func = zend_hash_find_ptr(&script->function_table, function_name)) != NULL) {
900913
return func;
901914
} else if ((func = zend_hash_find_ptr(EG(function_table), function_name)) != NULL) {
902-
if (func->type == ZEND_INTERNAL_FUNCTION) {
903-
return func;
904-
} else if (func->type == ZEND_USER_FUNCTION
905-
&& ((func->op_array.fn_flags & ZEND_ACC_PRELOADED)
906-
|| (func->op_array.filename && func->op_array.filename == op_array->filename))) {
915+
if (!zend_optimizer_ignore_function(func, op_array->filename)) {
907916
return func;
908917
}
909918
}
@@ -917,11 +926,7 @@ zend_function *zend_optimizer_get_called_func(
917926
if (script && (func = zend_hash_find_ptr(&script->function_table, Z_STR_P(function_name)))) {
918927
return func;
919928
} else if ((func = zend_hash_find_ptr(EG(function_table), Z_STR_P(function_name))) != NULL) {
920-
if (func->type == ZEND_INTERNAL_FUNCTION) {
921-
return func;
922-
} else if (func->type == ZEND_USER_FUNCTION
923-
&& ((func->op_array.fn_flags & ZEND_ACC_PRELOADED)
924-
|| (func->op_array.filename && func->op_array.filename == op_array->filename))) {
929+
if (!zend_optimizer_ignore_function(func, op_array->filename)) {
925930
return func;
926931
}
927932
}

0 commit comments

Comments
 (0)