mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Optimize instanceof_class/interface
instanceof_class does not need to check for a NULL pointer in the first iteration -- passing NULL to this function is illegal. instanceof_interface does not need to use instanceof_class(), it only has to check whether the CEs match exactly. There is no way for an interface to appear inside "parent", it will always be in "interfaces" only.
This commit is contained in:
parent
435f269108
commit
c63a0e005a
1 changed files with 3 additions and 3 deletions
|
@ -2311,12 +2311,12 @@ ZEND_API int ZEND_FASTCALL is_smaller_or_equal_function(zval *result, zval *op1,
|
|||
|
||||
static zend_always_inline zend_bool instanceof_class(const zend_class_entry *instance_ce, const zend_class_entry *ce) /* {{{ */
|
||||
{
|
||||
while (instance_ce) {
|
||||
do {
|
||||
if (instance_ce == ce) {
|
||||
return 1;
|
||||
}
|
||||
instance_ce = instance_ce->parent;
|
||||
}
|
||||
} while (instance_ce);
|
||||
return 0;
|
||||
}
|
||||
/* }}} */
|
||||
|
@ -2333,7 +2333,7 @@ static zend_bool ZEND_FASTCALL instanceof_interface(const zend_class_entry *inst
|
|||
}
|
||||
}
|
||||
}
|
||||
return instanceof_class(instance_ce, ce);
|
||||
return instance_ce == ce;
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue