|
@@ -0,0 +1,36 @@
|
|
|
|
+#ifndef MANDEL_EXECDATA_H
|
|
|
|
+#define MANDEL_EXECDATA_H
|
|
|
|
+
|
|
|
|
+#include <asmjit/asmjit.h>
|
|
|
|
+#include <memory>
|
|
|
|
+
|
|
|
|
+namespace mnd
|
|
|
|
+{
|
|
|
|
+ struct ExecData
|
|
|
|
+ {
|
|
|
|
+ std::unique_ptr<asmjit::JitRuntime> jitRuntime;
|
|
|
|
+ std::unique_ptr<asmjit::CodeHolder> code;
|
|
|
|
+ std::unique_ptr<asmjit::x86::Compiler> compiler;
|
|
|
|
+ void* iterationFunc;
|
|
|
|
+
|
|
|
|
+ ExecData(void) :
|
|
|
|
+ jitRuntime{ std::make_unique<asmjit::JitRuntime>() },
|
|
|
|
+ code{ std::make_unique<asmjit::CodeHolder>() },
|
|
|
|
+ compiler{ nullptr },
|
|
|
|
+ iterationFunc{ nullptr }
|
|
|
|
+ {
|
|
|
|
+ code->init(jitRuntime->codeInfo());
|
|
|
|
+ compiler = std::make_unique<asmjit::x86::Compiler>(code.get());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ExecData(ExecData&&) = default;
|
|
|
|
+ ExecData(const ExecData&) = delete;
|
|
|
|
+ ExecData& operator=(ExecData&&) = default;
|
|
|
|
+ ExecData& operator=(const ExecData&) = delete;
|
|
|
|
+
|
|
|
|
+ ~ExecData(void) = default;
|
|
|
|
+ };
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#endif // MANDEL_EXECDATA_H
|
|
|
|
+
|