vfy_jclass vfy_get_superclass (vfy_jclass klass) { vfy_jclass k; k = CLASSTYPE_SUPER (klass); return k; }
/* Search in the superclasses of SEARCHED_CLASS for a method matching METHOD_NAME and signature SIGNATURE. A private helper for lookup_do. */ static tree find_method_in_superclasses (tree searched_class, int flags, tree method_name, tree signature, tree (*signature_builder) (tree)) { tree klass; for (klass = CLASSTYPE_SUPER (searched_class); klass != NULL_TREE; klass = CLASSTYPE_SUPER (klass)) { tree method; method = shallow_find_method (klass, flags, method_name, signature, signature_builder); if (method != NULL_TREE) return method; } return NULL_TREE; }
/* Search in class SEARCHED_CLASS (and its superclasses) for a method matching METHOD_NAME and signature SIGNATURE. FLAGS control some parameters of the search. SEARCH_INTERFACE means also search interfaces and superinterfaces of SEARCHED_CLASS. SEARCH_SUPER means skip SEARCHED_CLASS and start with its superclass. SEARCH_VISIBLE means skip methods for which METHOD_INVISIBLE is set. Return the matched method DECL or NULL_TREE. SIGNATURE_BUILDER is used on method candidates to build their (sometimes partial) signature. */ static tree lookup_do (tree searched_class, int flags, tree method_name, tree signature, tree (*signature_builder) (tree)) { tree method; tree orig_class = searched_class; if (searched_class == NULL_TREE) return NULL_TREE; if (flags & SEARCH_SUPER) { searched_class = CLASSTYPE_SUPER (searched_class); if (searched_class == NULL_TREE) return NULL_TREE; } /* First look in our own methods. */ method = shallow_find_method (searched_class, flags, method_name, signature, signature_builder); if (method) return method; /* Then look in our superclasses. */ if (! CLASS_INTERFACE (TYPE_NAME (searched_class))) method = find_method_in_superclasses (searched_class, flags, method_name, signature, signature_builder); if (method) return method; /* If that doesn't work, look in our interfaces. */ if (flags & SEARCH_INTERFACE) method = find_method_in_interfaces (orig_class, flags, method_name, signature, signature_builder); return method; }