21 const Class& receiver_class,
25#if defined(DART_PRECOMPILED_RUNTIME)
30 if (FLAG_trace_resolving) {
35 const bool is_dyn_call =
37 const String*
const demangled_name =
45 const String*
const method_name_to_extract =
52 cls = cls.SuperClass()) {
55 function = cls.GetInvocationDispatcher(
57 UntaggedFunction::kDynamicInvocationForwarder,
62 ASSERT(cls.is_finalized());
65 function = lookup(cls, *demangled_name);
67#if !defined(DART_PRECOMPILED_RUNTIME)
68 if (allow_add && is_dyn_call && !
function.IsNull()) {
79 function = lookup(cls, *method_name_to_extract);
89 return function.GetMethodExtractor(*demangled_name);
103 const Class& receiver_class,
115#if defined(DART_PRECOMPILED_RUNTIME)
120 !
function.IsFfiCallbackTrampoline());
133 if (FLAG_trace_resolving) {
138 function.AreValidArguments(args_desc, &error_message);
149 const Class& receiver_class,
159 const Class& receiver_class,
168 const Class& receiver_class,
172 std::mem_fn(
static_cast<FunctionPtr (
Class::*)(
const String&) const
>(
177 const Class& receiver_class,
181 std::mem_fn(
static_cast<FunctionPtr (
Class::*)(
const String&) const
>(
186 const Class& receiver_class,
#define RELEASE_ASSERT(cond)
const char * NameCString(NameVisibility name_visibility) const
FunctionPtr LookupDynamicFunctionAllowPrivate(const String &name) const
bool IsRecordClass() const
FunctionPtr GetRecordFieldGetter(const String &getter_name) const
FunctionPtr LookupFunctionReadLocked(const String &name) const
FunctionPtr LookupDynamicFunctionUnsafe(const String &name) const
static bool IsGetterName(const String &function_name)
static StringPtr NameFromGetter(const String &getter_name)
static bool IsDynamicInvocationForwarderName(const String &name)
static StringPtr DemangleDynamicInvocationForwarderName(const String &name)
SafepointRwLock * program_lock()
static FunctionPtr ResolveDynamicAnyArgs(Zone *zone, const Class &receiver_class, const String &function_name, bool allow_add)
static FunctionPtr ResolveDynamicFunction(Zone *zone, const Class &receiver_class, const String &function_name)
static FunctionPtr ResolveFunction(Zone *zone, const Class &receiver_class, const String &function_name)
static FunctionPtr ResolveDynamicForReceiverClassAllowPrivate(const Class &receiver_class, const String &function_name, const ArgumentsDescriptor &args_desc)
static FunctionPtr ResolveDynamicForReceiverClass(const Class &receiver_class, const String &function_name, const ArgumentsDescriptor &args_desc, bool allow_add)
static const char * ToCString(Thread *thread, StringPtr ptr)
static StringPtr New(Thread *thread, const char *cstr)
static Thread * Current()
IsolateGroup * isolate_group() const
#define THR_Print(format,...)
Dart_NativeFunction function
static FunctionPtr ResolveDynamicAnyArgsWithCustomLookup(Zone *zone, const Class &receiver_class, const String &function_name, bool allow_add, std::function< FunctionPtr(Class &, const String &)> lookup)
DEFINE_FLAG(bool, print_cluster_information, false, "Print information about clusters written to snapshot")
const char *const function_name
static FunctionPtr ResolveDynamicForReceiverClassWithCustomLookup(const Class &receiver_class, const String &function_name, const ArgumentsDescriptor &args_desc, bool allow_add, std::function< FunctionPtr(Class &, const String &)> lookup)