diff options
author | Xinchen Hui <laruence@php.net> | 2015-01-19 09:10:01 -0500 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2015-01-19 09:10:01 -0500 |
commit | 442efdaaea3c1a06b01aa5f52c2ec05c3d64a0d1 (patch) | |
tree | 24c2dc6cc57b91b0fb3e09b0277ce28f087e05c8 | |
parent | d917484ab7678930bc6867caabed04ecec0baafc (diff) | |
download | php-git-442efdaaea3c1a06b01aa5f52c2ec05c3d64a0d1.tar.gz |
Optimized is_a
-rw-r--r-- | Zend/zend_builtin_functions.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index f13a2da91d..161bfb2812 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1014,14 +1014,18 @@ static void is_a_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool only_subclass) /* RETURN_FALSE; } - ce = zend_lookup_class_ex(class_name, NULL, 0); - if (!ce) { - retval = 0; + if (!only_subclass && EXPECTED(zend_string_equals(instance_ce->name, class_name))) { + retval = 1; } else { - if (only_subclass && instance_ce == ce) { + ce = zend_lookup_class_ex(class_name, NULL, 0); + if (!ce) { retval = 0; - } else { - retval = instanceof_function(instance_ce, ce); + } else { + if (only_subclass && instance_ce == ce) { + retval = 0; + } else { + retval = instanceof_function(instance_ce, ce); + } } } |