RuntimeApi.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include "RuntimeApi.h"
  2. #include "codegen/il2cpp-codegen.h"
  3. #include "vm/InternalCalls.h"
  4. #include "vm/Array.h"
  5. #include "vm/Exception.h"
  6. #include "metadata/MetadataModule.h"
  7. #include "RuntimeConfig.h"
  8. namespace hybridclr
  9. {
  10. void RuntimeApi::RegisterInternalCalls()
  11. {
  12. il2cpp::vm::InternalCalls::Add("HybridCLR.RuntimeApi::LoadMetadataForAOTAssembly(System.Byte[],HybridCLR.HomologousImageMode)", (Il2CppMethodPointer)LoadMetadataForAOTAssembly);
  13. il2cpp::vm::InternalCalls::Add("HybridCLR.RuntimeApi::GetRuntimeOption(HybridCLR.RuntimeOptionId)", (Il2CppMethodPointer)GetRuntimeOption);
  14. il2cpp::vm::InternalCalls::Add("HybridCLR.RuntimeApi::SetRuntimeOption(HybridCLR.RuntimeOptionId,System.Int32)", (Il2CppMethodPointer)SetRuntimeOption);
  15. }
  16. int32_t RuntimeApi::LoadMetadataForAOTAssembly(Il2CppArray* dllBytes, int32_t mode)
  17. {
  18. if (!dllBytes)
  19. {
  20. il2cpp::vm::Exception::RaiseNullReferenceException();
  21. }
  22. return (int32_t)hybridclr::metadata::MetadataModule::LoadMetadataForAOTAssembly(il2cpp::vm::Array::GetFirstElementAddress(dllBytes), il2cpp::vm::Array::GetByteLength(dllBytes), (hybridclr::metadata::HomologousImageMode)mode);
  23. }
  24. int32_t RuntimeApi::GetRuntimeOption(int32_t optionId)
  25. {
  26. return hybridclr::RuntimeConfig::GetRuntimeOption((hybridclr::RuntimeOptionId)optionId);
  27. }
  28. void RuntimeApi::SetRuntimeOption(int32_t optionId, int32_t value)
  29. {
  30. hybridclr::RuntimeConfig::SetRuntimeOption((hybridclr::RuntimeOptionId)optionId, value);
  31. }
  32. }