def should_compile(self, method): # don't compile functions that have same parameter but differ return type if method in self.conflict_methods: return False # synthetic method if is_synthetic_method(method) or is_native_method(method): return False method_triple = get_method_triple(method) cls_name, name, _ = method_triple # Android VM may find the wrong method using short jni name # don't compile function if there is a same named native method if (cls_name, name) in self.native_methods: return False full_name = ''.join(method_triple) for rule in self._keep_filters: if rule.search(full_name): return False if full_name in self._compile_full_match: return True if method in self.annotated_methods: return True for rule in self._compile_filters: if rule.search(full_name): return True return False
def _add_annotation_method(self, method): if not is_synthetic_method(method) and not is_native_method(method): self.annotated_methods.add(method)