35 const Class& receiver_class,
38 std::function<FunctionPtr(
Class&,
const String&)> lookup) {
40 if (FLAG_trace_resolving) {
61 bool need_to_create_method_extractor =
false;
67 UntaggedFunction::kDynamicInvocationForwarder,
77#if !defined(DART_PRECOMPILED_RUNTIME)
79 if (is_dyn_call && !
function.IsNull()) {
89 function = lookup(cls, demangled_getter_name);
91 if (allow_add && FLAG_lazy_dispatchers) {
92 need_to_create_method_extractor =
true;
101 if (need_to_create_method_extractor) {
107 }
else if (is_getter && receiver_class.
IsRecordClass() && allow_add &&
108 FLAG_lazy_dispatchers) {
115 const Class& receiver_class,
119 std::function<FunctionPtr(
Class&,
const String&)> lookup) {
127#if defined(DART_PRECOMPILED_RUNTIME)
132 !
function.IsFfiCallbackTrampoline());
145 if (FLAG_trace_resolving) {
150 function.AreValidArguments(args_desc, &error_message);
161 const Class& receiver_class,
171 const Class& receiver_class,
181 const Class& receiver_class,
185 std::mem_fn(
static_cast<FunctionPtr (
Class::*)(
const String&) const
>(
190 const Class& receiver_class,
194 std::mem_fn(
static_cast<FunctionPtr (
Class::*)(
const String&) const
>(
199 const Class& receiver_class,
209 const Class& receiver_class,
#define RELEASE_ASSERT(cond)
FunctionPtr LookupDynamicFunctionAllowPrivate(const String &name) const
bool IsRecordClass() const
FunctionPtr GetInvocationDispatcher(const String &target_name, const Array &args_desc, UntaggedFunction::Kind kind, bool create_if_absent) const
FunctionPtr GetRecordFieldGetter(const String &getter_name) const
FunctionPtr LookupFunctionReadLocked(const String &name) const
FunctionPtr LookupDynamicFunctionUnsafe(const String &name) const
ClassPtr SuperClass(ClassTable *class_table=nullptr) const
bool is_finalized() 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()
virtual const char * ToCString() const
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, bool allow_add)
static FunctionPtr ResolveDynamicAnyArgs(Zone *zone, const Class &receiver_class, const String &function_name, bool allow_add=true)
static FunctionPtr ResolveDynamicForReceiverClass(const Class &receiver_class, const String &function_name, const ArgumentsDescriptor &args_desc, bool allow_add=true)
static FunctionPtr ResolveDynamicAnyArgsAllowPrivate(Zone *zone, const Class &receiver_class, const String &function_name, bool allow_add)
static FunctionPtr ResolveDynamic(const Instance &receiver, const String &function_name, const ArgumentsDescriptor &args_desc)
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,...)
#define DEFINE_FLAG(type, name, default_value, comment)
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)
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)