5#ifndef V8_WASM_FUNCTION_BODY_DECODER_H_
6#define V8_WASM_FUNCTION_BODY_DECODER_H_
8#if !V8_ENABLE_WEBASSEMBLY
9#error This header should only be included if WebAssembly is enabled.
20class AccountingAllocator;
27class WasmDetectedFeatures;
28class WasmEnabledFeatures;
52 WasmDetectedFeatures* detected,
const FunctionBody& body);
66 const uint8_t*
end,
Zone* zone);
72 const uint8_t*
end,
Zone* zone);
75 Zone* zone, uint32_t num_locals,
const uint8_t*
start,
const uint8_t*
end,
76 bool* loop_is_innermost);
160 read_u8<Decoder::NoValidationTag>(
pc_,
"expected bytecode"));
173 auto [opcode,
length] = read_prefixed_opcode<Decoder::NoValidationTag>(
pc_);
177 const uint8_t*
pc()
const {
return pc_; }
iterator_base(const uint8_t *ptr, const uint8_t *end)
bool operator==(const iterator_base &that) const
iterator_base & operator++()
offset_iterator(const uint8_t *start, const uint8_t *ptr, const uint8_t *end)
opcode_iterator(const uint8_t *ptr, const uint8_t *end)
base::iterator_range< opcode_iterator > opcodes() const
const uint8_t * pc() const
base::iterator_range< offset_iterator > offsets() const
WasmOpcode prefixed_opcode()
const v8::base::TimeTicks end_
bool CheckHardwareSupportsSimd()
bool DecodeLocalDecls(WasmEnabledFeatures enabled, BodyLocalDecls *decls, const WasmModule *module, bool is_shared, const uint8_t *start, const uint8_t *end, Zone *zone)
bool ValidateAndDecodeLocalDeclsForTesting(WasmEnabledFeatures enabled, BodyLocalDecls *decls, const WasmModule *module, bool is_shared, const uint8_t *start, const uint8_t *end, Zone *zone)
DecodeResult ValidateFunctionBody(Zone *zone, WasmEnabledFeatures enabled, const WasmModule *module, WasmDetectedFeatures *detected, const FunctionBody &body)
unsigned OpcodeLength(const uint8_t *pc, const uint8_t *end)
BitVector * AnalyzeLoopAssignmentForTesting(Zone *zone, uint32_t num_locals, const uint8_t *start, const uint8_t *end, bool *loop_is_innermost)
wasm::WasmModule WasmModule
JSArrayBuffer::IsDetachableBit is_shared
#define NON_EXPORTED_BASE(code)
#define DCHECK_LT(v1, v2)
#define V8_EXPORT_PRIVATE
FunctionBody(const FunctionSig *sig, uint32_t offset, const uint8_t *start, const uint8_t *end, bool is_shared)