ExecData.h 965 B

123456789101112131415161718192021222324252627282930313233343536
  1. #ifndef MANDEL_EXECDATA_H
  2. #define MANDEL_EXECDATA_H
  3. #include <asmjit/asmjit.h>
  4. #include <memory>
  5. namespace mnd
  6. {
  7. struct ExecData
  8. {
  9. std::unique_ptr<asmjit::JitRuntime> jitRuntime;
  10. std::unique_ptr<asmjit::CodeHolder> code;
  11. std::unique_ptr<asmjit::x86::Compiler> compiler;
  12. void* iterationFunc;
  13. ExecData(void) :
  14. jitRuntime{ std::make_unique<asmjit::JitRuntime>() },
  15. code{ std::make_unique<asmjit::CodeHolder>() },
  16. compiler{ nullptr },
  17. iterationFunc{ nullptr }
  18. {
  19. code->init(jitRuntime->codeInfo());
  20. compiler = std::make_unique<asmjit::x86::Compiler>(code.get());
  21. }
  22. ExecData(ExecData&&) = default;
  23. ExecData(const ExecData&) = delete;
  24. ExecData& operator=(ExecData&&) = default;
  25. ExecData& operator=(const ExecData&) = delete;
  26. ~ExecData(void) = default;
  27. };
  28. }
  29. #endif // MANDEL_EXECDATA_H