]> granicus.if.org Git - php/commitdiff
Optimized is_a
authorXinchen Hui <laruence@php.net>
Mon, 19 Jan 2015 14:10:01 +0000 (09:10 -0500)
committerXinchen Hui <laruence@php.net>
Mon, 19 Jan 2015 14:10:01 +0000 (09:10 -0500)
Zend/zend_builtin_functions.c

index f13a2da91dbbb2d44c0601f6ededc3caa2faa881..161bfb281209292ee3cbd65723484be4260f9510 100644 (file)
@@ -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);
+                       }
                }
        }