AtomicImpl.h 405 B

123456789101112131415161718192021222324252627
  1. #pragma once
  2. #if IL2CPP_TARGET_WINDOWS
  3. #include "os/Win32/WindowsHeaders.h"
  4. #include "c-api/Atomic-c-api.h"
  5. namespace il2cpp
  6. {
  7. namespace os
  8. {
  9. inline void Atomic::FullMemoryBarrier()
  10. {
  11. #if defined(_AMD64_)
  12. ::__faststorefence();
  13. #elif defined(_M_IX86)
  14. ::MemoryBarrier();
  15. #elif defined(_M_ARM)
  16. __dmb(_ARM_BARRIER_SY);
  17. #else
  18. #error Not implemented;
  19. #endif
  20. }
  21. }
  22. }
  23. #endif