Wasmtime
config.hh
Go to the documentation of this file.
1
5#ifndef WASMTIME_CONFIG_HH
6#define WASMTIME_CONFIG_HH
7
8#include <wasmtime/conf.h>
9#include <wasmtime/config.h>
10#include <wasmtime/error.hh>
11#include <wasmtime/helpers.hh>
13
14namespace wasmtime {
15
17enum class Strategy {
22};
23
25enum class OptLevel {
32};
33
44};
45
46#ifdef WASMTIME_FEATURE_POOLING_ALLOCATOR
54 WASMTIME_OWN_WRAPPER(PoolAllocationConfig,
55 wasmtime_pooling_allocation_config);
56
58
63 void max_unused_warm_slots(uint32_t max) {
65 max);
66 }
67
71 void decommit_batch_size(size_t batch_size) {
73 batch_size);
74 }
75
76#ifdef WASMTIME_FEATURE_ASYNC
81 void async_stack_keep_resident(size_t size) {
83 size);
84 }
85#endif // WASMTIME_FEATURE_ASYNC
86
91 void linear_memory_keep_resident(size_t size) {
93 ptr.get(), size);
94 }
95
100 void table_keep_resident(size_t size) {
102 }
103
108 void total_component_instances(uint32_t count) {
110 count);
111 }
112
117 void max_component_instance_size(size_t size) {
119 ptr.get(), size);
120 }
121
126 void max_core_instances_per_component(uint32_t count) {
128 ptr.get(), count);
129 }
130
135 void max_memories_per_component(uint32_t count) {
137 count);
138 }
139
144 void max_tables_per_component(uint32_t count) {
146 count);
147 }
148
153 void total_memories(uint32_t count) {
155 }
156
161 void total_tables(uint32_t count) {
163 }
164
165#ifdef WASMTIME_FEATURE_ASYNC
170 void total_stacks(uint32_t count) {
172 }
173#endif // WASMTIME_FEATURE_ASYNC
174
179 void total_core_instances(uint32_t count) {
181 count);
182 }
183
188 void max_core_instance_size(size_t size) {
190 size);
191 }
192
197 void max_tables_per_module(uint32_t tables) {
199 tables);
200 }
201
206 void table_elements(size_t elements) {
208 }
209
214 void max_memories_per_module(uint32_t memories) {
216 memories);
217 }
218
223 void max_memory_size(size_t bytes) {
225 }
226
231 void total_gc_heaps(uint32_t count) {
233 }
234};
235#endif // WASMTIME_FEATURE_POOLING_ALLOCATOR
236
246class Config {
247 WASMTIME_OWN_WRAPPER(Config, wasm_config);
248
250 Config() : ptr(wasm_config_new()) {}
251
256 void debug_info(bool enable) {
257 wasmtime_config_debug_info_set(ptr.get(), enable);
258 }
259
264 void epoch_interruption(bool enable) {
266 }
267
272 void consume_fuel(bool enable) {
273 wasmtime_config_consume_fuel_set(ptr.get(), enable);
274 }
275
279 void max_wasm_stack(size_t stack) {
280 wasmtime_config_max_wasm_stack_set(ptr.get(), stack);
281 }
282
283#ifdef WASMTIME_FEATURE_THREADS
287 void wasm_threads(bool enable) {
288 wasmtime_config_wasm_threads_set(ptr.get(), enable);
289 }
290#endif // WASMTIME_FEATURE_THREADS
291
295 void shared_memory(bool enable) {
296 wasmtime_config_shared_memory_set(ptr.get(), enable);
297 }
298
302 void wasm_tail_call(bool enable) {
303 wasmtime_config_wasm_tail_call_set(ptr.get(), enable);
304 }
305
306#ifdef WASMTIME_FEATURE_GC
311 void wasm_reference_types(bool enable) {
313 }
314#endif // WASMTIME_FEATURE_GC
315
319 void wasm_simd(bool enable) {
320 wasmtime_config_wasm_simd_set(ptr.get(), enable);
321 }
322
326 void wasm_relaxed_simd(bool enable) {
327 wasmtime_config_wasm_relaxed_simd_set(ptr.get(), enable);
328 }
329
334 void wasm_relaxed_simd_deterministic(bool enable) {
336 }
337
341 void wasm_bulk_memory(bool enable) {
342 wasmtime_config_wasm_bulk_memory_set(ptr.get(), enable);
343 }
344
348 void wasm_multi_value(bool enable) {
349 wasmtime_config_wasm_multi_value_set(ptr.get(), enable);
350 }
351
355 void wasm_multi_memory(bool enable) {
356 wasmtime_config_wasm_multi_memory_set(ptr.get(), enable);
357 }
358
362 void wasm_memory64(bool enable) {
363 wasmtime_config_wasm_memory64_set(ptr.get(), enable);
364 }
365
366#ifdef WASMTIME_FEATURE_GC
371 void wasm_gc(bool enable) { wasmtime_config_wasm_gc_set(ptr.get(), enable); }
372#endif // WASMTIME_FEATURE_GC
373
378 void wasm_function_references(bool enable) {
380 }
381
386 void wasm_wide_arithmetic(bool enable) {
388 }
389
390#ifdef WASMTIME_FEATURE_GC
395 void wasm_exceptions(bool enable) {
396 wasmtime_config_wasm_exceptions_set(ptr.get(), enable);
397 }
398#endif // WASMTIME_FEATURE_GC
399
404 void wasm_custom_page_sizes(bool enable) {
406 }
407
408#ifdef WASMTIME_FEATURE_COMPONENT_MODEL
413 void wasm_component_model(bool enable) {
415 }
416
421 void wasm_component_model_map(bool enable) {
423 }
424#endif // WASMTIME_FEATURE_COMPONENT_MODEL
425
426#ifdef WASMTIME_FEATURE_PARALLEL_COMPILATION
431 void parallel_compilation(bool enable) {
433 }
434#endif // WASMTIME_FEATURE_PARALLEL_COMPILATION
435
436#ifdef WASMTIME_FEATURE_COMPILER
440 void strategy(Strategy strategy) {
442 static_cast<wasmtime_strategy_t>(strategy));
443 }
444
448 void cranelift_debug_verifier(bool enable) {
450 }
451
455 void cranelift_nan_canonicalization(bool enable) {
457 }
458
462 void cranelift_opt_level(OptLevel level) {
464 ptr.get(), static_cast<wasmtime_opt_level_t>(level));
465 }
466
470 void cranelift_flag_enable(const std::string &flag) {
471 wasmtime_config_cranelift_flag_enable(ptr.get(), flag.c_str());
472 }
473
477 void cranelift_flag_set(const std::string &flag, const std::string &value) {
478 wasmtime_config_cranelift_flag_set(ptr.get(), flag.c_str(), value.c_str());
479 }
480#endif // WASMTIME_FEATURE_COMPILER
481
485 void profiler(ProfilingStrategy profiler) {
487 ptr.get(), static_cast<wasmtime_profiling_strategy_t>(profiler));
488 }
489
493 void memory_reservation(size_t size) {
495 }
496
501 void memory_reservation_for_growth(size_t size) {
503 }
504
508 void memory_guard_size(size_t size) {
510 }
511
516 void memory_may_move(bool enable) {
517 wasmtime_config_memory_may_move_set(ptr.get(), enable);
518 }
519
523 void memory_init_cow(bool enable) {
524 wasmtime_config_memory_init_cow_set(ptr.get(), enable);
525 }
526
530 void native_unwind_info(bool enable) {
532 }
533
537 void macos_use_mach_ports(bool enable) {
539 }
540
543 void signals_based_traps(bool enable) {
545 }
546
547#ifdef WASMTIME_FEATURE_CACHE
551 Result<std::monostate> cache_load_default() {
552 auto *error = wasmtime_config_cache_config_load(ptr.get(), nullptr);
553 if (error != nullptr) {
554 return Error(error);
555 }
556 return std::monostate();
557 }
558
562 Result<std::monostate> cache_load(const std::string &path) {
563 auto *error = wasmtime_config_cache_config_load(ptr.get(), path.c_str());
564 if (error != nullptr) {
565 return Error(error);
566 }
567 return std::monostate();
568 }
569#endif // WASMTIME_FEATURE_CACHE
570
571private:
572 template <typename T> static void raw_finalize(void *env) {
573 std::unique_ptr<T> ptr(reinterpret_cast<T *>(env));
574 }
575
576 template <typename M>
577 static uint8_t *raw_get_memory(void *env, size_t *byte_size,
578 size_t *byte_capacity) {
579 M *memory = reinterpret_cast<M *>(env);
580 return memory->get_memory(byte_size, byte_capacity);
581 }
582
583 template <typename M>
584 static wasmtime_error_t *raw_grow_memory(void *env, size_t new_size) {
585 M *memory = reinterpret_cast<M *>(env);
586 Result<std::monostate> result = memory->grow_memory(new_size);
587 if (!result)
588 return result.err().capi_release();
589 return nullptr;
590 }
591
592 template <typename T>
593 static wasmtime_error_t *
594 raw_new_memory(void *env, const wasm_memorytype_t *ty, size_t minimum,
595 size_t maximum, size_t reserved_size_in_bytes,
596 size_t guard_size_in_bytes,
597 wasmtime_linear_memory_t *memory_ret) {
598 using Memory = typename T::Memory;
599 T *creator = reinterpret_cast<T *>(env);
600 Result<Memory> result =
601 creator->new_memory(MemoryType::Ref(ty), minimum, maximum,
602 reserved_size_in_bytes, guard_size_in_bytes);
603 if (!result) {
604 return result.err().capi_release();
605 }
606 Memory memory = result.unwrap();
607 memory_ret->env = std::make_unique<Memory>(memory).release();
608 memory_ret->finalizer = raw_finalize<Memory>;
609 memory_ret->get_memory = raw_get_memory<Memory>;
610 memory_ret->grow_memory = raw_grow_memory<Memory>;
611 return nullptr;
612 }
613
614public:
620 template <typename T> void host_memory_creator(T creator) {
621 wasmtime_memory_creator_t config = {0};
622 config.env = std::make_unique<T>(creator).release();
623 config.finalizer = raw_finalize<T>;
624 config.new_memory = raw_new_memory<T>;
625 wasmtime_config_host_memory_creator_set(ptr.get(), &config);
626 }
627
628#ifdef WASMTIME_FEATURE_POOLING_ALLOCATOR
633 wasmtime_pooling_allocation_strategy_set(ptr.get(), config.capi());
634 }
635#endif // WASMTIME_FEATURE_POOLING_ALLOCATOR
636
644 void concurrency_support(bool enable) {
646 }
647};
648
649} // namespace wasmtime
650
651#endif // WASMTIME_CONFIG_HH
Configuration for Wasmtime.
Definition: config.hh:246
void host_memory_creator(T creator)
Configures a custom memory creator for this configuration and eventual Engine.
Definition: config.hh:620
void concurrency_support(bool enable)
Specifies whether support for concurrent execution of WebAssembly is supported within this store.
Definition: config.hh:644
void pooling_allocation_strategy(const PoolAllocationConfig &config)
Enables and configures the pooling allocation strategy.
Definition: config.hh:632
Errors coming from Wasmtime.
Definition: error.hh:26
Non-owning reference to a MemoryType, must not be used after the original owner has been deleted.
Definition: types/memory.hh:34
A WebAssembly linear memory.
Definition: memory.hh:27
Pool allocation configuration for Wasmtime.
Definition: config.hh:53
Fallible result type used for Wasmtime.
Definition: error.hh:70
E && err()
Returns the error, if present, aborts if this is not an error.
Definition: error.hh:84
T unwrap()
Returns the success, if present, aborts if this is an error.
Definition: error.hh:104
Build-time defines for how the C API was built.
Wasmtime-specific extensions to wasm_config_t.
WASM_API_EXTERN void wasmtime_pooling_allocation_config_total_gc_heaps_set(wasmtime_pooling_allocation_config_t *, uint32_t)
The maximum number of concurrent GC heaps supported (default is 1000).
WASM_API_EXTERN void wasmtime_pooling_allocation_config_total_component_instances_set(wasmtime_pooling_allocation_config_t *, uint32_t)
The maximum number of concurrent component instances supported (default is 1000).
WASM_API_EXTERN void wasmtime_pooling_allocation_config_table_keep_resident_set(wasmtime_pooling_allocation_config_t *, size_t)
How much memory, in bytes, to keep resident for each table after deallocation.
WASM_API_EXTERN void wasmtime_config_shared_memory_set(wasm_config_t *, bool)
Configures whether shared memories can be created.
WASM_API_EXTERN void wasmtime_config_wasm_tail_call_set(wasm_config_t *, bool)
Configures whether the WebAssembly tail call proposal is enabled.
WASM_API_EXTERN void wasmtime_config_max_wasm_stack_set(wasm_config_t *, size_t)
Configures the maximum stack size, in bytes, that JIT code can use.
WASM_API_EXTERN void wasmtime_config_wasm_multi_memory_set(wasm_config_t *, bool)
Configures whether the WebAssembly multi-memory proposal is enabled.
WASM_API_EXTERN wasmtime_error_t * wasmtime_config_cache_config_load(wasm_config_t *, const char *)
Enables Wasmtime's cache and loads configuration from the specified path.
WASM_API_EXTERN void wasmtime_pooling_allocation_config_max_core_instances_per_component_set(wasmtime_pooling_allocation_config_t *, uint32_t)
The maximum number of core instances a single component may contain (default is unlimited).
WASM_API_EXTERN void wasmtime_pooling_allocation_strategy_set(wasm_config_t *, const wasmtime_pooling_allocation_config_t *)
Sets the Wasmtime allocation strategy to use the pooling allocator. It does not take ownership of the...
WASM_API_EXTERN void wasmtime_config_wasm_component_model_set(wasm_config_t *, bool)
Configures whether the WebAssembly component-model proposal will be enabled for compilation.
WASM_API_EXTERN void wasmtime_config_wasm_custom_page_sizes_set(wasm_config_t *, bool)
Configures whether the WebAssembly custom-page-sizes proposal is enabled.
uint8_t wasmtime_strategy_t
Specifier for how Wasmtime will compile code, values are in wasmtime_strategy_enum.
Definition: config.h:22
WASM_API_EXTERN void wasmtime_pooling_allocation_config_linear_memory_keep_resident_set(wasmtime_pooling_allocation_config_t *, size_t)
How much memory, in bytes, to keep resident for each linear memory after deallocation.
WASM_API_EXTERN void wasmtime_config_memory_reservation_set(wasm_config_t *, uint64_t)
Configures the size, in bytes, of initial memory reservation size for linear memories.
WASM_API_EXTERN void wasmtime_config_wasm_wide_arithmetic_set(wasm_config_t *, bool)
Configures whether the WebAssembly wide-arithmetic proposal is enabled.
WASM_API_EXTERN void wasmtime_pooling_allocation_config_max_tables_per_module_set(wasmtime_pooling_allocation_config_t *, uint32_t)
The maximum number of defined tables for a core module (default is 1).
WASM_API_EXTERN void wasmtime_pooling_allocation_config_max_tables_per_component_set(wasmtime_pooling_allocation_config_t *, uint32_t)
The maximum number of tables that a single component may transitively contain (default is unlimited).
WASM_API_EXTERN wasmtime_pooling_allocation_config_t * wasmtime_pooling_allocation_config_new()
Creates a new pooling allocation configuration object. Must be deallocated with a call to wasmtime_po...
WASM_API_EXTERN void wasmtime_config_cranelift_flag_enable(wasm_config_t *, const char *)
Enables a target-specific flag in Cranelift.
WASM_API_EXTERN void wasmtime_config_parallel_compilation_set(wasm_config_t *, bool)
Configure whether wasmtime should compile a module using multiple threads.
WASM_API_EXTERN void wasmtime_pooling_allocation_config_max_unused_warm_slots_set(wasmtime_pooling_allocation_config_t *, uint32_t)
Configures the maximum number of “unused warm slots” to retain in the pooling allocator.
WASM_API_EXTERN void wasmtime_config_wasm_gc_set(wasm_config_t *, bool)
Configures whether the WebAssembly GC proposal is enabled.
WASM_API_EXTERN void wasmtime_config_macos_use_mach_ports_set(wasm_config_t *, bool)
Configures whether, when on macOS, Mach ports are used for exception handling instead of traditional ...
WASM_API_EXTERN void wasmtime_config_wasm_memory64_set(wasm_config_t *, bool)
Configures whether the WebAssembly memory64 proposal is enabled.
WASM_API_EXTERN void wasmtime_pooling_allocation_config_max_memories_per_module_set(wasmtime_pooling_allocation_config_t *, uint32_t)
The maximum number of defined linear memories for a module (default is 1).
WASM_API_EXTERN void wasmtime_config_wasm_relaxed_simd_set(wasm_config_t *, bool)
Configures whether the WebAssembly relaxed SIMD proposal is enabled.
WASM_API_EXTERN void wasmtime_pooling_allocation_config_total_memories_set(wasmtime_pooling_allocation_config_t *, uint32_t)
The maximum number of concurrent Wasm linear memories supported (default is 1000).
WASM_API_EXTERN void wasmtime_config_wasm_bulk_memory_set(wasm_config_t *, bool)
Configures whether the WebAssembly bulk memory proposal is enabled.
uint8_t wasmtime_profiling_strategy_t
Different ways wasmtime can enable profiling JIT code.
Definition: config.h:66
WASM_API_EXTERN void wasmtime_config_cranelift_flag_set(wasm_config_t *, const char *key, const char *value)
Sets a target-specific flag in Cranelift to the specified value.
WASM_API_EXTERN void wasmtime_config_wasm_threads_set(wasm_config_t *, bool)
Configures whether the WebAssembly threading proposal is enabled.
WASM_API_EXTERN void wasmtime_pooling_allocation_config_table_elements_set(wasmtime_pooling_allocation_config_t *, size_t)
The maximum table elements for any table defined in a module (default is 20000).
WASM_API_EXTERN void wasmtime_pooling_allocation_config_max_core_instance_size_set(wasmtime_pooling_allocation_config_t *, size_t)
The maximum size, in bytes, allocated for a core instance’s VMContext metadata.
WASM_API_EXTERN void wasmtime_config_strategy_set(wasm_config_t *, wasmtime_strategy_t)
Configures how JIT code will be compiled.
WASM_API_EXTERN void wasmtime_config_signals_based_traps_set(wasm_config_t *, bool)
Configures Wasmtime to not use signals-based trap handlers, for example disables SIGILL and SIGSEGV h...
@ WASMTIME_PROFILING_STRATEGY_VTUNE
Definition: config.h:83
@ WASMTIME_PROFILING_STRATEGY_PERFMAP
Definition: config.h:87
@ WASMTIME_PROFILING_STRATEGY_NONE
No profiling is enabled at runtime.
Definition: config.h:75
@ WASMTIME_PROFILING_STRATEGY_JITDUMP
Definition: config.h:78
WASM_API_EXTERN void wasmtime_config_memory_guard_size_set(wasm_config_t *, uint64_t)
Configures the guard region size for linear memory.
WASM_API_EXTERN void wasmtime_config_cranelift_debug_verifier_set(wasm_config_t *, bool)
Configures whether Cranelift's debug verifier is enabled.
WASM_API_EXTERN void wasmtime_pooling_allocation_config_total_stacks_set(wasmtime_pooling_allocation_config_t *, uint32_t)
The maximum number of execution stacks allowed for asynchronous execution, when enabled (default is 1...
@ WASMTIME_STRATEGY_CRANELIFT
Definition: config.h:36
@ WASMTIME_STRATEGY_AUTO
Definition: config.h:32
WASM_API_EXTERN void wasmtime_pooling_allocation_config_max_memories_per_component_set(wasmtime_pooling_allocation_config_t *, uint32_t)
The maximum number of Wasm linear memories that a single component may transitively contain (default ...
WASM_API_EXTERN void wasmtime_config_cranelift_opt_level_set(wasm_config_t *, wasmtime_opt_level_t)
Configures Cranelift's optimization level for JIT code.
WASM_API_EXTERN void wasmtime_config_consume_fuel_set(wasm_config_t *, bool)
Whether or not fuel is enabled for generated code.
WASM_API_EXTERN void wasmtime_config_debug_info_set(wasm_config_t *, bool)
Configures whether DWARF debug information is constructed at runtime to describe JIT code.
WASM_API_EXTERN void wasmtime_config_wasm_relaxed_simd_deterministic_set(wasm_config_t *, bool)
Configures whether the WebAssembly relaxed SIMD proposal is in deterministic mode.
WASM_API_EXTERN void wasmtime_config_wasm_exceptions_set(wasm_config_t *, bool)
Configures whether the WebAssembly exceptions proposal is enabled.
WASM_API_EXTERN void wasmtime_config_native_unwind_info_set(wasm_config_t *, bool)
Configures whether to generate native unwind information (e.g. .eh_frame on Linux).
@ WASMTIME_OPT_LEVEL_SPEED_AND_SIZE
Definition: config.h:58
@ WASMTIME_OPT_LEVEL_NONE
Generated code will not be optimized at all.
Definition: config.h:53
@ WASMTIME_OPT_LEVEL_SPEED
Generated code will be optimized purely for speed.
Definition: config.h:55
uint8_t wasmtime_opt_level_t
Specifier of what optimization level to use for generated JIT code.
Definition: config.h:44
WASM_API_EXTERN void wasmtime_config_profiler_set(wasm_config_t *, wasmtime_profiling_strategy_t)
Configures the profiling strategy used for JIT code.
WASM_API_EXTERN void wasmtime_config_wasm_simd_set(wasm_config_t *, bool)
Configures whether the WebAssembly SIMD proposal is enabled.
WASM_API_EXTERN void wasmtime_config_epoch_interruption_set(wasm_config_t *, bool)
Whether or not epoch-based interruption is enabled for generated code.
WASM_API_EXTERN void wasmtime_config_cranelift_nan_canonicalization_set(wasm_config_t *, bool)
Configures whether Cranelift should perform a NaN-canonicalization pass.
WASM_API_EXTERN void wasmtime_config_memory_reservation_for_growth_set(wasm_config_t *, uint64_t)
Configures the size, in bytes, of the extra virtual memory space reserved for memories to grow into a...
WASM_API_EXTERN void wasmtime_pooling_allocation_config_total_core_instances_set(wasmtime_pooling_allocation_config_t *, uint32_t)
The maximum number of concurrent core instances supported (default is 1000).
WASM_API_EXTERN void wasmtime_config_host_memory_creator_set(wasm_config_t *, wasmtime_memory_creator_t *)
WASM_API_EXTERN void wasmtime_pooling_allocation_config_total_tables_set(wasmtime_pooling_allocation_config_t *, uint32_t)
The maximum number of concurrent tables supported (default is 1000).
WASM_API_EXTERN void wasmtime_config_wasm_function_references_set(wasm_config_t *, bool)
Configures whether the WebAssembly typed function reference types proposal is enabled.
WASM_API_EXTERN void wasmtime_pooling_allocation_config_decommit_batch_size_set(wasmtime_pooling_allocation_config_t *, size_t)
The target number of decommits to do per batch.
WASM_API_EXTERN void wasmtime_config_wasm_reference_types_set(wasm_config_t *, bool)
Configures whether the WebAssembly reference types proposal is enabled.
WASM_API_EXTERN void wasmtime_config_memory_init_cow_set(wasm_config_t *, bool)
Configures whether copy-on-write memory-mapped data is used to initialize a linear memory.
WASM_API_EXTERN void wasmtime_config_concurrency_support_set(wasm_config_t *, bool)
Specifies whether support for concurrent execution of WebAssembly is supported within this store.
WASM_API_EXTERN void wasmtime_config_wasm_component_model_map_set(wasm_config_t *, bool)
Configures whether the WebAssembly component-model map type will be enabled for compilation.
WASM_API_EXTERN void wasmtime_config_wasm_multi_value_set(wasm_config_t *, bool)
Configures whether the WebAssembly multi value proposal is enabled.
WASM_API_EXTERN void wasmtime_pooling_allocation_config_max_memory_size_set(wasmtime_pooling_allocation_config_t *, size_t)
The maximum byte size that any WebAssembly linear memory may grow to.
WASM_API_EXTERN void wasmtime_config_memory_may_move_set(wasm_config_t *, bool)
Configures whether memory_reservation is the maximal size of linear memory.
WASM_API_EXTERN void wasmtime_pooling_allocation_config_max_component_instance_size_set(wasmtime_pooling_allocation_config_t *, size_t)
The maximum size, in bytes, allocated for a component instance’s VMComponentContext metadata.
WASM_API_EXTERN void wasmtime_pooling_allocation_config_async_stack_keep_resident_set(wasmtime_pooling_allocation_config_t *, size_t)
How much memory, in bytes, to keep resident for async stacks allocated with the pooling allocator.
Strategy
Strategies passed to Config::strategy
Definition: config.hh:17
@ Auto
Automatically selects the compilation strategy.
@ Cranelift
Requires Cranelift to be used for compilation.
OptLevel
Values passed to Config::cranelift_opt_level
Definition: config.hh:25
@ Speed
Optimize for speed.
@ None
No extra optimizations performed.
@ SpeedAndSize
Optimize for speed and generated code size.
ProfilingStrategy
Values passed to Config::profiler
Definition: config.hh:35
@ Perfmap
Profiling hooks via perfmap.
@ Vtune
Profiling hooks via VTune.
@ Jitdump
Profiling hooks via perf's jitdump.
An opaque object representing the type of a memory.
Errors generated by Wasmtime.
Definition: config.h:515
wasmtime_memory_get_callback_t get_memory
Callback to get the memory and size of this LinearMemory.
Definition: config.h:519
void * env
User provided value to be passed to get_memory and grow_memory.
Definition: config.h:517
void(* finalizer)(void *)
An optional finalizer for env.
Definition: config.h:523
wasmtime_memory_grow_callback_t grow_memory
Callback to request growing the memory.
Definition: config.h:521
Definition: config.h:549
void(* finalizer)(void *)
An optional finalizer for env.
Definition: config.h:555
wasmtime_new_memory_callback_t new_memory
The callback to create new memory, must be thread safe.
Definition: config.h:553
void * env
User provided value to be passed to new_memory.
Definition: config.h:551
wasm_config_t * wasm_config_new(void)
Creates a new empty configuration object.