AOTHomologousImage.h 993 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include "Image.h"
  3. namespace hybridclr
  4. {
  5. namespace metadata
  6. {
  7. struct AOTFieldData
  8. {
  9. uint32_t typeDefIndex; // rowIndex - 1
  10. const Il2CppFieldDefinition* fieldDef;
  11. };
  12. enum class HomologousImageMode
  13. {
  14. CONSISTENT,
  15. SUPERSET,
  16. };
  17. class AOTHomologousImage : public Image
  18. {
  19. public:
  20. static AOTHomologousImage* FindImageByAssembly(const Il2CppAssembly* ass);
  21. static AOTHomologousImage* FindImageByAssemblyLocked(const Il2CppAssembly* ass, il2cpp::os::FastAutoLock& lock);
  22. static void RegisterLocked(AOTHomologousImage* image, il2cpp::os::FastAutoLock& lock);
  23. AOTHomologousImage() : _aotAssembly(nullptr) { }
  24. const Il2CppAssembly* GetAOTAssembly() const
  25. {
  26. return _aotAssembly;
  27. }
  28. LoadImageErrorCode Load(const byte* imageData, size_t length);
  29. const Il2CppType* GetModuleIl2CppType(uint32_t moduleRowIndex, uint32_t typeNamespace, uint32_t typeName, bool raiseExceptionIfNotFound) override;
  30. protected:
  31. const Il2CppAssembly* _aotAssembly;
  32. };
  33. }
  34. }