5#ifndef V8_WASM_FUZZING_RANDOM_MODULE_GENERATION_H_
6#define V8_WASM_FUZZING_RANDOM_MODULE_GENERATION_H_
8#if !V8_ENABLE_WEBASSEMBLY
9#error This header should only be included if WebAssembly is enabled.
23#ifdef V8_WASM_RANDOM_FUZZERS
26enum WasmModuleGenerationOption { kGenerateSIMD, kGenerateWasmGC };
28struct WasmModuleGenerationOptions
29 :
public base::EnumSet<WasmModuleGenerationOption> {
30 bool generate_simd()
const {
return contains(kGenerateSIMD); }
31 bool generate_wasm_gc()
const {
return contains(kGenerateWasmGC); }
33 static constexpr WasmModuleGenerationOptions MVP() {
return {{}}; }
34 static constexpr WasmModuleGenerationOptions All() {
35 return {{kGenerateSIMD, kGenerateWasmGC}};
44 Zone*, WasmModuleGenerationOptions, base::Vector<const uint8_t> data);
47 Zone*, base::Vector<const uint8_t> data,
size_t* count);
50 Zone*, base::Vector<const uint8_t> data, std::vector<std::string>& callees,
51 std::vector<std::string>& inlinees);
bool contains(const C &container, const T &element)
base::Vector< uint8_t > GenerateRandomWasmModule(Zone *zone, WasmModuleGenerationOptions options, base::Vector< const uint8_t > data)
base::Vector< uint8_t > GenerateWasmModuleForInitExpressions(Zone *zone, base::Vector< const uint8_t > data, size_t *count)
base::Vector< uint8_t > GenerateWasmModuleForDeopt(Zone *zone, base::Vector< const uint8_t > data, std::vector< std::string > &callees, std::vector< std::string > &inlinees)
#define V8_EXPORT_PRIVATE