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

#include <kernel_fingerprints.h>

Inheritance diagram for dart::kernel::KernelSourceFingerprintHelper:
dart::AllStatic

Static Public Member Functions

static uint32_t CalculateClassFingerprint (const Class &klass)
 
static uint32_t CalculateFieldFingerprint (const Field &field)
 
static uint32_t CalculateFunctionFingerprint (const Function &func)
 

Detailed Description

Definition at line 18 of file kernel_fingerprints.h.

Member Function Documentation

◆ CalculateClassFingerprint()

uint32_t dart::kernel::KernelSourceFingerprintHelper::CalculateClassFingerprint ( const Class klass)
static

Definition at line 958 of file kernel_fingerprints.cc.

959 {
960 Zone* zone = Thread::Current()->zone();
961 String& name = String::Handle(zone, klass.Name());
962 const Array& fields = Array::Handle(zone, klass.fields());
963 const Array& functions = Array::Handle(zone, klass.current_functions());
964 const Array& interfaces = Array::Handle(zone, klass.interfaces());
965 AbstractType& type = AbstractType::Handle(zone);
966
967 uint32_t hash = 0;
969
970 type = klass.super_type();
971 if (!type.IsNull()) {
972 name = type.Name();
974 }
975
976 Field& field = Field::Handle(zone);
977 // Calculate fingerprint for the class fields.
978 for (intptr_t i = 0; i < fields.Length(); ++i) {
979 field ^= fields.At(i);
980 uint32_t fingerprint = CalculateFieldFingerprint(field);
982 }
983
984 // Calculate fingerprint for the class functions.
985 Function& func = Function::Handle(zone);
986 for (intptr_t i = 0; i < functions.Length(); ++i) {
987 func ^= functions.At(i);
988 uint32_t fingerprint = CalculateFunctionFingerprint(func);
990 }
991
992 // Calculate fingerprint for the interfaces.
993 for (intptr_t i = 0; i < interfaces.Length(); ++i) {
994 type ^= interfaces.At(i);
995 name = type.Name();
997 }
998
999 return hash;
1000}
static uint32_t hash(const SkShaderBase::GradientInfo &v)
static Object & Handle()
Definition object.h:407
Zone * zone() const
static Thread * Current()
Definition thread.h:361
static uint32_t CalculateHash(uint32_t current, uint32_t val)
static uint32_t CalculateFunctionFingerprint(const Function &func)
static uint32_t CalculateFieldFingerprint(const Field &field)
const char *const name

◆ CalculateFieldFingerprint()

uint32_t dart::kernel::KernelSourceFingerprintHelper::CalculateFieldFingerprint ( const Field field)
static

Definition at line 1002 of file kernel_fingerprints.cc.

1003 {
1004 Thread* thread = Thread::Current();
1005 Zone* zone = thread->zone();
1006 const auto& info = KernelProgramInfo::Handle(zone, field.KernelProgramInfo());
1007
1008 TranslationHelper translation_helper(thread);
1009 translation_helper.InitFromKernelProgramInfo(info);
1010
1011 KernelFingerprintHelper helper(
1012 zone, &translation_helper,
1013 TypedDataView::Handle(zone, field.KernelLibrary()),
1014 field.KernelLibraryOffset());
1015 helper.SetOffset(field.kernel_offset());
1016 return helper.CalculateFieldFingerprint();
1017}
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
Definition DM.cpp:213

◆ CalculateFunctionFingerprint()

uint32_t dart::kernel::KernelSourceFingerprintHelper::CalculateFunctionFingerprint ( const Function func)
static

Definition at line 1019 of file kernel_fingerprints.cc.

1020 {
1021 Thread* thread = Thread::Current();
1022 Zone* zone = thread->zone();
1023 const auto& info = KernelProgramInfo::Handle(zone, func.KernelProgramInfo());
1024
1025 TranslationHelper translation_helper(thread);
1026 translation_helper.InitFromKernelProgramInfo(info);
1027
1028 KernelFingerprintHelper helper(
1029 zone, &translation_helper,
1030 TypedDataView::Handle(zone, func.KernelLibrary()),
1031 func.KernelLibraryOffset());
1032 helper.SetOffset(func.kernel_offset());
1033 return helper.CalculateFunctionFingerprint();
1034}

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