123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- #pragma once
- #include "il2cpp-config.h"
- struct Il2CppMetadataField
- {
- uint32_t offset;
- uint32_t typeIndex;
- const char* name;
- bool isStatic;
- };
- enum Il2CppMetadataTypeFlags
- {
- kNone = 0,
- kValueType = 1 << 0,
- kArray = 1 << 1,
- kArrayRankMask = 0xFFFF0000
- };
- struct Il2CppMetadataType
- {
- Il2CppMetadataTypeFlags flags; // If it's an array, rank is encoded in the upper 2 bytes
- Il2CppMetadataField* fields;
- uint32_t fieldCount;
- uint32_t staticsSize;
- uint8_t* statics;
- uint32_t baseOrElementTypeIndex;
- char* name;
- const char* assemblyName;
- uint64_t typeInfoAddress;
- uint32_t size;
- };
- struct Il2CppMetadataSnapshot
- {
- uint32_t typeCount;
- Il2CppMetadataType* types;
- };
- struct Il2CppManagedMemorySection
- {
- uint64_t sectionStartAddress;
- uint32_t sectionSize;
- uint8_t* sectionBytes;
- };
- struct Il2CppManagedHeap
- {
- uint32_t sectionCount;
- Il2CppManagedMemorySection* sections;
- };
- struct Il2CppStacks
- {
- uint32_t stackCount;
- Il2CppManagedMemorySection* stacks;
- };
- struct NativeObject
- {
- uint32_t gcHandleIndex;
- uint32_t size;
- uint32_t instanceId;
- uint32_t classId;
- uint32_t referencedNativeObjectIndicesCount;
- uint32_t* referencedNativeObjectIndices;
- };
- struct Il2CppGCHandles
- {
- uint32_t trackedObjectCount;
- uint64_t* pointersToObjects;
- };
- struct Il2CppRuntimeInformation
- {
- uint32_t pointerSize;
- uint32_t objectHeaderSize;
- uint32_t arrayHeaderSize;
- uint32_t arrayBoundsOffsetInHeader;
- uint32_t arraySizeOffsetInHeader;
- uint32_t allocationGranularity;
- };
- struct Il2CppManagedMemorySnapshot
- {
- Il2CppManagedHeap heap;
- Il2CppStacks stacks;
- Il2CppMetadataSnapshot metadata;
- Il2CppGCHandles gcHandles;
- Il2CppRuntimeInformation runtimeInformation;
- void* additionalUserInformation;
- };
- namespace il2cpp
- {
- namespace vm
- {
- namespace MemoryInformation
- {
- typedef void(*ClassReportFunc)(Il2CppClass* klass, void* context);
- typedef void(*DataReportFunc)(void* data, void* context);
- struct IterationContext
- {
- DataReportFunc callback;
- void* userData;
- };
- void ReportIL2CppClasses(ClassReportFunc callback, void* context);
- void ReportGcHeapSection(void* context, void* start, void* end);
- void ReportGcHandleTarget(Il2CppObject* obj, void* context);
- Il2CppManagedMemorySnapshot* CaptureManagedMemorySnapshot();
- void FreeCapturedManagedMemorySnapshot(Il2CppManagedMemorySnapshot* snapshot);
- }
- }
- }
|