Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Static Public Member Functions | List of all members
dart::FactoryRecognizer Class Reference

#include <method_recognizer.h>

Inheritance diagram for dart::FactoryRecognizer:
dart::AllStatic

Static Public Member Functions

static intptr_t ResultCid (const Function &factory)
 
static intptr_t GetResultCidOfListFactory (Zone *zone, const Function &function, intptr_t argument_count)
 

Detailed Description

Definition at line 72 of file method_recognizer.h.

Member Function Documentation

◆ GetResultCidOfListFactory()

intptr_t dart::FactoryRecognizer::GetResultCidOfListFactory ( Zone zone,
const Function function,
intptr_t  argument_count 
)
static

Definition at line 348 of file method_recognizer.cc.

350 {
351 if (!function.IsFactory()) {
352 return kDynamicCid;
353 }
354
355 const Class& owner = Class::Handle(zone, function.Owner());
356 if ((owner.library() != Library::CoreLibrary()) &&
357 (owner.library() != Library::TypedDataLibrary())) {
358 return kDynamicCid;
359 }
360
361 if (owner.Name() == Symbols::List().ptr()) {
362 if (function.name() == Symbols::ListFactory().ptr()) {
364 return (argument_count == 1) ? kGrowableObjectArrayCid : kArrayCid;
365 } else if (function.name() == Symbols::ListFilledFactory().ptr()) {
367 return (argument_count == 3) ? kArrayCid : kDynamicCid;
368 }
369 }
370
371 return ResultCid(function);
372}
static intptr_t ResultCid(const Function &factory)
static LibraryPtr CoreLibrary()
Definition object.cc:14834
static LibraryPtr TypedDataLibrary()
Definition object.cc:14872
static Object & Handle()
Definition object.h:407
#define ASSERT(E)
Dart_NativeFunction function
Definition fuchsia.cc:51
int argument_count
Definition fuchsia.cc:52
@ kDynamicCid
Definition class_id.h:253

◆ ResultCid()

intptr_t dart::FactoryRecognizer::ResultCid ( const Function factory)
static

Definition at line 330 of file method_recognizer.cc.

330 {
331 ASSERT(factory.IsFactory());
332 const Class& function_class = Class::Handle(factory.Owner());
333 const Library& lib = Library::Handle(function_class.library());
334 ASSERT((lib.ptr() == Library::CoreLibrary()) ||
335 (lib.ptr() == Library::TypedDataLibrary()));
336 const String& factory_name = String::Handle(factory.name());
337 for (intptr_t i = 0;
338 factory_recognizer_list[i].symbol_id != Symbols::kIllegal; i++) {
340 factory_name,
342 return factory_recognizer_list[i].cid;
343 }
344 }
345 return kDynamicCid;
346}
static bool EqualsIgnoringPrivateKey(const String &str1, const String &str2)
Definition object.cc:24378
static const String & Symbol(intptr_t index)
Definition symbols.h:606
static const struct dart::@132 factory_recognizer_list[]
const intptr_t symbol_id

The documentation for this class was generated from the following files: