Wire Sysio Wire Sysion 1.0.0
Loading...
Searching...
No Matches
intrinsic_mapping.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4#include <limits>
5#include <string_view>
6
7namespace sysio { namespace chain { namespace eosvmoc {
8//NEVER reorder or remove indexes; the PIC uses the indexes in this table as an offset in to a jump
9// table. Adding on the bottom is fine and requires no other updates elsewhere
10namespace detail {
11 template <typename... Args>
12 inline constexpr auto generate_table( Args&&... args ) {
13 return std::array<std::string_view, sizeof...(Args)> { args... };
14 }
15} // ns sysio::chain::eosvmoc::detail
16
17inline constexpr auto get_intrinsic_table() {
19 "eosvmoc_internal.unreachable",
20 "eosvmoc_internal.grow_memory",
21 "eosvmoc_internal.div0_or_overflow",
22 "eosvmoc_internal.indirect_call_mismatch",
23 "eosvmoc_internal.indirect_call_oob",
24 "eosvmoc_internal.depth_assert",
25 "sysio_injection.call_depth_assert", //now unused; left for purposes of not upsetting existing code mappings
26 "sysio_injection.checktime", //now unused; left for purposes of not upsetting existing code mappings
27 "env.__ashlti3",
28 "env.__ashrti3",
29 "env.__lshlti3",
30 "env.__lshrti3",
31 "env.__divti3",
32 "env.__udivti3",
33 "env.__modti3",
34 "env.__umodti3",
35 "env.__multi3",
36 "env.__addtf3",
37 "env.__subtf3",
38 "env.__multf3",
39 "env.__divtf3",
40 "env.__eqtf2",
41 "env.__netf2",
42 "env.__getf2",
43 "env.__gttf2",
44 "env.__lttf2",
45 "env.__letf2",
46 "env.__cmptf2",
47 "env.__unordtf2",
48 "env.__negtf2",
49 "env.__floatsitf",
50 "env.__floatunsitf",
51 "env.__floatditf",
52 "env.__floatunditf",
53 "env.__floattidf",
54 "env.__floatuntidf",
55 "env.__floatsidf",
56 "env.__extendsftf2",
57 "env.__extenddftf2",
58 "env.__fixtfti",
59 "env.__fixtfdi",
60 "env.__fixtfsi",
61 "env.__fixunstfti",
62 "env.__fixunstfdi",
63 "env.__fixunstfsi",
64 "env.__fixsfti",
65 "env.__fixdfti",
66 "env.__fixunssfti",
67 "env.__fixunsdfti",
68 "env.__trunctfdf2",
69 "env.__trunctfsf2",
70 "env.is_feature_active",
71 "env.activate_feature",
72 "env.get_resource_limits",
73 "env.set_resource_limits",
74 "env.set_proposed_producers",
75 "env.set_proposed_producers_ex",
76 "env.get_blockchain_parameters_packed",
77 "env.set_blockchain_parameters_packed",
78 "env.is_privileged",
79 "env.set_privileged",
80 "env.preactivate_feature",
81 "env.get_active_producers",
82 "env.db_store_i64",
83 "env.db_update_i64",
84 "env.db_remove_i64",
85 "env.db_get_i64",
86 "env.db_next_i64",
87 "env.db_previous_i64",
88 "env.db_find_i64",
89 "env.db_lowerbound_i64",
90 "env.db_upperbound_i64",
91 "env.db_end_i64",
92 "env.db_idx64_store",
93 "env.db_idx64_remove",
94 "env.db_idx64_update",
95 "env.db_idx64_find_primary",
96 "env.db_idx64_find_secondary",
97 "env.db_idx64_lowerbound",
98 "env.db_idx64_upperbound",
99 "env.db_idx64_end",
100 "env.db_idx64_next",
101 "env.db_idx64_previous",
102 "env.db_idx128_store",
103 "env.db_idx128_remove",
104 "env.db_idx128_update",
105 "env.db_idx128_find_primary",
106 "env.db_idx128_find_secondary",
107 "env.db_idx128_lowerbound",
108 "env.db_idx128_upperbound",
109 "env.db_idx128_end",
110 "env.db_idx128_next",
111 "env.db_idx128_previous",
112 "env.db_idx_double_store",
113 "env.db_idx_double_remove",
114 "env.db_idx_double_update",
115 "env.db_idx_double_find_primary",
116 "env.db_idx_double_find_secondary",
117 "env.db_idx_double_lowerbound",
118 "env.db_idx_double_upperbound",
119 "env.db_idx_double_end",
120 "env.db_idx_double_next",
121 "env.db_idx_double_previous",
122 "env.db_idx_long_double_store",
123 "env.db_idx_long_double_remove",
124 "env.db_idx_long_double_update",
125 "env.db_idx_long_double_find_primary",
126 "env.db_idx_long_double_find_secondary",
127 "env.db_idx_long_double_lowerbound",
128 "env.db_idx_long_double_upperbound",
129 "env.db_idx_long_double_end",
130 "env.db_idx_long_double_next",
131 "env.db_idx_long_double_previous",
132 "env.db_idx256_store",
133 "env.db_idx256_remove",
134 "env.db_idx256_update",
135 "env.db_idx256_find_primary",
136 "env.db_idx256_find_secondary",
137 "env.db_idx256_lowerbound",
138 "env.db_idx256_upperbound",
139 "env.db_idx256_end",
140 "env.db_idx256_next",
141 "env.db_idx256_previous",
142 "env.assert_recover_key",
143 "env.recover_key",
144 "env.assert_sha256",
145 "env.assert_sha1",
146 "env.assert_sha512",
147 "env.assert_ripemd160",
148 "env.sha1",
149 "env.sha256",
150 "env.sha512",
151 "env.ripemd160",
152 "env.check_transaction_authorization",
153 "env.check_permission_authorization",
154 "env.get_permission_last_used",
155 "env.get_account_creation_time",
156 "env.current_time",
157 "env.publication_time",
158 "env.is_feature_activated",
159 "env.get_sender",
160 "env.abort",
161 "env.sysio_assert",
162 "env.sysio_assert_message",
163 "env.sysio_assert_code",
164 "env.sysio_exit",
165 "env.read_action_data",
166 "env.action_data_size",
167 "env.current_receiver",
168 "env.require_recipient",
169 "env.require_auth",
170 "env.require_auth2",
171 "env.has_auth",
172 "env.is_account",
173 "env.prints",
174 "env.prints_l",
175 "env.printi",
176 "env.printui",
177 "env.printi128",
178 "env.printui128",
179 "env.printsf",
180 "env.printdf",
181 "env.printqf",
182 "env.printn",
183 "env.printhex",
184 "env.read_transaction",
185 "env.transaction_size",
186 "env.expiration",
187 "env.tapos_block_prefix",
188 "env.tapos_block_num",
189 "env.get_action",
190 "env.send_inline",
191 "env.send_context_free_inline",
192 "env.send_deferred",
193 "env.cancel_deferred",
194 "env.get_context_free_data",
195 "env.memcpy",
196 "env.memmove",
197 "env.memcmp",
198 "env.memset",
199 "sysio_injection._sysio_f32_add",
200 "sysio_injection._sysio_f32_sub",
201 "sysio_injection._sysio_f32_mul",
202 "sysio_injection._sysio_f32_div",
203 "sysio_injection._sysio_f32_min",
204 "sysio_injection._sysio_f32_max",
205 "sysio_injection._sysio_f32_copysign",
206 "sysio_injection._sysio_f32_abs",
207 "sysio_injection._sysio_f32_neg",
208 "sysio_injection._sysio_f32_sqrt",
209 "sysio_injection._sysio_f32_ceil",
210 "sysio_injection._sysio_f32_floor",
211 "sysio_injection._sysio_f32_trunc",
212 "sysio_injection._sysio_f32_nearest",
213 "sysio_injection._sysio_f32_eq",
214 "sysio_injection._sysio_f32_ne",
215 "sysio_injection._sysio_f32_lt",
216 "sysio_injection._sysio_f32_le",
217 "sysio_injection._sysio_f32_gt",
218 "sysio_injection._sysio_f32_ge",
219 "sysio_injection._sysio_f64_add",
220 "sysio_injection._sysio_f64_sub",
221 "sysio_injection._sysio_f64_mul",
222 "sysio_injection._sysio_f64_div",
223 "sysio_injection._sysio_f64_min",
224 "sysio_injection._sysio_f64_max",
225 "sysio_injection._sysio_f64_copysign",
226 "sysio_injection._sysio_f64_abs",
227 "sysio_injection._sysio_f64_neg",
228 "sysio_injection._sysio_f64_sqrt",
229 "sysio_injection._sysio_f64_ceil",
230 "sysio_injection._sysio_f64_floor",
231 "sysio_injection._sysio_f64_trunc",
232 "sysio_injection._sysio_f64_nearest",
233 "sysio_injection._sysio_f64_eq",
234 "sysio_injection._sysio_f64_ne",
235 "sysio_injection._sysio_f64_lt",
236 "sysio_injection._sysio_f64_le",
237 "sysio_injection._sysio_f64_gt",
238 "sysio_injection._sysio_f64_ge",
239 "sysio_injection._sysio_f32_promote",
240 "sysio_injection._sysio_f64_demote",
241 "sysio_injection._sysio_f32_trunc_i32s",
242 "sysio_injection._sysio_f64_trunc_i32s",
243 "sysio_injection._sysio_f32_trunc_i32u",
244 "sysio_injection._sysio_f64_trunc_i32u",
245 "sysio_injection._sysio_f32_trunc_i64s",
246 "sysio_injection._sysio_f64_trunc_i64s",
247 "sysio_injection._sysio_f32_trunc_i64u",
248 "sysio_injection._sysio_f64_trunc_i64u",
249 "sysio_injection._sysio_i32_to_f32",
250 "sysio_injection._sysio_i64_to_f32",
251 "sysio_injection._sysio_ui32_to_f32",
252 "sysio_injection._sysio_ui64_to_f32",
253 "sysio_injection._sysio_i32_to_f64",
254 "sysio_injection._sysio_i64_to_f64",
255 "sysio_injection._sysio_ui32_to_f64",
256 "sysio_injection._sysio_ui64_to_f64",
257 "env.set_action_return_value",
258 "env.get_wasm_parameters_packed",
259 "env.set_wasm_parameters_packed",
260 "env.get_parameters_packed",
261 "env.set_parameters_packed",
262 "env.get_code_hash",
263 "env.alt_bn128_add",
264 "env.alt_bn128_mul",
265 "env.alt_bn128_pair",
266 "env.mod_exp",
267 "env.sha3",
268 "env.blake2_f",
269 "env.k1_recover",
270 "env.get_block_num"
271 );
272}
273inline constexpr std::size_t find_intrinsic_index(std::string_view hf) {
274 constexpr auto hosts = get_intrinsic_table();
275 for ( std::size_t i = 0; i < hosts.size(); ++i )
276 if ( hosts[i] == hf )
277 return i;
278 return std::numeric_limits<std::size_t>::max();
279}
280
281inline constexpr std::size_t intrinsic_table_size() {
282 return std::tuple_size<decltype(get_intrinsic_table())>::value;
283}
284}}}
constexpr auto generate_table(Args &&... args)
constexpr std::size_t find_intrinsic_index(std::string_view hf)
constexpr auto get_intrinsic_table()
constexpr std::size_t intrinsic_table_size()
#define value
Definition pkcs11.h:157