From: Xinchen Hui Date: Mon, 19 Jan 2015 14:10:01 +0000 (-0500) Subject: Optimized is_a X-Git-Tag: PRE_PHP7_REMOVALS~25^2~88 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=442efdaaea3c1a06b01aa5f52c2ec05c3d64a0d1;p=php Optimized is_a --- 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); + } } }