Wire Sysio Wire Sysion 1.0.0
Loading...
Searching...
No Matches
executor.hpp
Go to the documentation of this file.
1#pragma once
2
4
5#include <stdint.h>
6#include <stddef.h>
7#include <exception>
8#include <setjmp.h>
9
10#include <list>
11#include <vector>
12#include <cstddef>
13
14namespace sysio { namespace chain {
15
16class apply_context;
17
18namespace eosvmoc {
19
20class code_cache_base;
21class memory;
22struct code_descriptor;
23
24class executor {
25 public:
26 executor(const code_cache_base& cc);
27 ~executor();
28
29 void execute(const code_descriptor& code, memory& mem, apply_context& context);
30
31 private:
32 uint8_t* code_mapping;
33 size_t code_mapping_size;
34 bool mapping_is_executable;
35
36 std::exception_ptr executors_exception_ptr;
37 sigjmp_buf executors_sigjmp_buf;
38 std::list<std::vector<std::byte>> executors_bounce_buffers;
39 std::vector<std::byte> globals_buffer;
40 execution_stack stack;
41};
42
43}}}
void execute(const code_descriptor &code, memory &mem, apply_context &context)
Definition executor.cpp:152
executor(const code_cache_base &cc)
Definition executor.cpp:136
unsigned char uint8_t
Definition stdint.h:124