5#ifndef V8_WASM_MODULE_DECODER_H_
6#define V8_WASM_MODULE_DECODER_H_
8#if !V8_ENABLE_WEBASSEMBLY
9#error This header should only be included if WebAssembly is enabled.
90 WasmEnabledFeatures enabled_features,
93 std::shared_ptr<metrics::Recorder> metrics_recorder,
95 WasmDetectedFeatures* detected_features);
99 WasmEnabledFeatures enabled_features,
101 ModuleOrigin origin, WasmDetectedFeatures* detected_features);
109 WasmEnabledFeatures enabled_features,
Zone* zone,
115 WasmEnabledFeatures enabled,
Zone* zone, ModuleWireBytes wire_bytes,
150 size_t* total_allocated_size);
202 std::unique_ptr<ModuleDecoderImpl>
impl_;
NameMap element_segment_names_
IndirectNameMap label_names_
DecodedNameSection(base::Vector< const uint8_t > wire_bytes, WireBytesRef name_section)
IndirectNameMap local_names_
IndirectNameMap field_names_
NameMap data_segment_names_
WasmModule * module() const
void DecodeSection(SectionCode section_code, base::Vector< const uint8_t > bytes, uint32_t offset)
void StartCodeSection(WireBytesRef section_bytes)
const std::shared_ptr< WasmModule > & shared_module() const
ModuleResult FinishDecoding()
ModuleDecoder(WasmEnabledFeatures enabled_features, WasmDetectedFeatures *detected_features)
void DecodeModuleHeader(base::Vector< const uint8_t > bytes)
static size_t IdentifyUnknownSection(ModuleDecoder *decoder, base::Vector< const uint8_t > bytes, uint32_t offset, SectionCode *result)
std::unique_ptr< ModuleDecoderImpl > impl_
void DecodeFunctionBody(uint32_t index, uint32_t size, uint32_t offset)
bool CheckFunctionsCount(uint32_t functions_count, uint32_t error_offset)
ZoneVector< RpoNumber > & result
std::vector< std::pair< int, int > > FunctionOffsets
const char * SectionName(SectionCode code)
@ kLastKnownModuleSection
void DecodeFunctionNames(base::Vector< const uint8_t > wire_bytes, NameMap &names)
void DecodeCanonicalTypeNames(base::Vector< const uint8_t > wire_bytes, const WasmModule *module, std::vector< base::OwnedVector< char > > &typenames, std::map< uint32_t, std::vector< base::OwnedVector< char > > > &fieldnames, size_t *total_allocated_size)
ModuleResult DecodeWasmModuleForDisassembler(base::Vector< const uint8_t > wire_bytes, ITracer *tracer)
AsmJsOffsetsResult DecodeAsmJsOffsets(base::Vector< const uint8_t > encoded_offsets)
bool IsValidSectionCode(uint8_t byte)
ModuleResult DecodeWasmModule(WasmEnabledFeatures enabled_features, base::Vector< const uint8_t > wire_bytes, bool validate_functions, ModuleOrigin origin, Counters *counters, std::shared_ptr< metrics::Recorder > metrics_recorder, v8::metrics::Recorder::ContextId context_id, DecodingMethod decoding_method, WasmDetectedFeatures *detected_features)
Result< const FunctionSig * > DecodeWasmSignatureForTesting(WasmEnabledFeatures enabled_features, Zone *zone, base::Vector< const uint8_t > bytes)
WasmError ValidateFunctions(const WasmModule *module, WasmEnabledFeatures enabled_features, base::Vector< const uint8_t > wire_bytes, std::function< bool(int)> filter, WasmDetectedFeatures *detected_features_out)
Result< std::unique_ptr< WasmFunction > > FunctionResult
std::vector< CustomSectionOffset > DecodeCustomSections(base::Vector< const uint8_t > bytes)
ConstantExpression DecodeWasmInitExprForTesting(WasmEnabledFeatures enabled_features, base::Vector< const uint8_t > bytes, ValueType expected)
Result< std::shared_ptr< WasmModule > > ModuleResult
FunctionResult DecodeWasmFunctionForTesting(WasmEnabledFeatures enabled_features, Zone *zone, ModuleWireBytes wire_bytes, const WasmModule *module, base::Vector< const uint8_t > function_bytes)
WasmError GetWasmErrorWithName(base::Vector< const uint8_t > wire_bytes, int func_index, const WasmModule *module, WasmError error)
#define V8_EXPORT_PRIVATE
int source_position_number_conversion
std::vector< AsmJsOffsetEntry > entries
std::vector< AsmJsOffsetFunctionEntries > functions