|
| template<typename... InterfaceArgs> |
| | WasmFullDecoder (Zone *zone, const WasmModule *module, WasmEnabledFeatures enabled, WasmDetectedFeatures *detected, const FunctionBody &body, InterfaceArgs &&... interface_args) |
| |
| | ~WasmFullDecoder () |
| |
| Interface & | interface () |
| |
| void | Decode () |
| |
| void | TraceFailed () |
| |
| const char * | SafeOpcodeNameAt (const uint8_t *pc) |
| |
| WasmCodePosition | position () const |
| |
| uint32_t | control_depth () const |
| |
| Control * | control_at (uint32_t depth) |
| |
| uint32_t | stack_size () const |
| |
| Value * | stack_value (uint32_t depth) const |
| |
| int32_t | current_catch () const |
| |
| uint32_t | control_depth_of_current_catch () const |
| |
| uint32_t | pc_relative_offset () const |
| |
| bool | is_local_initialized (uint32_t local_index) |
| |
| void | set_local_initialized (uint32_t local_index) |
| |
| uint32_t | locals_initialization_stack_depth () const |
| |
| void | RollbackLocalsInitialization (Control *c) |
| |
| void | InitializeInitializedLocalsTracking (int non_defaultable_locals) |
| |
| void | DecodeFunctionBody () |
| |
| bool | HasCatchAll (Control *block) const |
| |
| | WasmDecoder (Zone *zone, const WasmModule *module, WasmEnabledFeatures enabled, WasmDetectedFeatures *detected, const FunctionSig *sig, bool is_shared, const uint8_t *start, const uint8_t *end, uint32_t buffer_offset=0) |
| |
| Zone * | zone () const |
| |
| uint32_t | num_locals () const |
| |
| base::Vector< ValueType > | local_types () const |
| |
| ValueType | local_type (uint32_t index) const |
| |
| uint32_t | DecodeLocals (const uint8_t *pc) |
| |
| V8_INLINE void | DecodeError (Args... args) |
| |
| bool | Validate (const uint8_t *pc, TagIndexImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, GlobalIndexImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, SigIndexImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, StructIndexImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, FieldImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, ArrayIndexImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, CallFunctionImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, CallIndirectImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, BranchDepthImmediate &imm, size_t control_depth) |
| |
| bool | Validate (const uint8_t *pc, BranchTableImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, WasmOpcode opcode, SimdLaneImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, Simd128Immediate &imm) |
| |
| bool | Validate (const uint8_t *pc, BlockTypeImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, MemoryIndexImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, MemoryAccessImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, MemoryInitImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, MemoryCopyImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, TableInitImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, TableCopyImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, StringConstImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, TableIndexImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, SelectTypeImmediate &imm) |
| |
| bool | Validate (const uint8_t *pc, HeapTypeImmediate &imm) |
| |
| bool | CanReturnCall (const FunctionSig *target_sig) |
| |
| bool | ValidateElementSegment (const uint8_t *pc, IndexImmediate &imm) |
| |
| bool | ValidateLocal (const uint8_t *pc, IndexImmediate &imm) |
| |
| bool | ValidateFunction (const uint8_t *pc, IndexImmediate &imm) |
| |
| bool | ValidateCont (const uint8_t *pc, ContIndexImmediate &imm) |
| |
| bool | ValidateDataSegment (const uint8_t *pc, IndexImmediate &imm) |
| |
| bool | ValidateValueType (const uint8_t *pc, ValueType type) |
| |
| bool | ValidateHeapType (const uint8_t *pc, HeapType type) |
| |
| | Decoder (const uint8_t *start, const uint8_t *end, uint32_t buffer_offset=0) |
| |
| | Decoder (const base::Vector< const uint8_t > bytes, uint32_t buffer_offset=0) |
| |
| | Decoder (const uint8_t *start, const uint8_t *pc, const uint8_t *end, uint32_t buffer_offset=0) |
| |
| virtual | ~Decoder ()=default |
| |
| template<typename ValidationTag > |
| uint8_t | read_u8 (const uint8_t *pc, Name< ValidationTag > msg="expected 1 byte") |
| |
| template<typename ValidationTag > |
| uint16_t | read_u16 (const uint8_t *pc, Name< ValidationTag > msg="expected 2 bytes") |
| |
| template<typename ValidationTag > |
| uint32_t | read_u32 (const uint8_t *pc, Name< ValidationTag > msg="expected 4 bytes") |
| |
| template<typename ValidationTag > |
| uint64_t | read_u64 (const uint8_t *pc, Name< ValidationTag > msg="expected 8 bytes") |
| |
| template<typename ValidationTag > |
| std::pair< uint32_t, uint32_t > | read_u32v (const uint8_t *pc, Name< ValidationTag > name="LEB32") |
| |
| template<typename ValidationTag > |
| std::pair< int32_t, uint32_t > | read_i32v (const uint8_t *pc, Name< ValidationTag > name="signed LEB32") |
| |
| template<typename ValidationTag > |
| std::pair< uint64_t, uint32_t > | read_u64v (const uint8_t *pc, Name< ValidationTag > name="LEB64") |
| |
| template<typename ValidationTag > |
| std::pair< int64_t, uint32_t > | read_i64v (const uint8_t *pc, Name< ValidationTag > name="signed LEB64") |
| |
| template<typename ValidationTag > |
| std::pair< int64_t, uint32_t > | read_i33v (const uint8_t *pc, Name< ValidationTag > name="signed LEB33") |
| |
| template<typename ValidationTag > |
| std::pair< WasmOpcode, uint32_t > | read_prefixed_opcode (const uint8_t *pc, Name< ValidationTag > name="prefixed opcode") |
| |
| uint8_t | consume_u8 (const char *name="uint8_t") |
| |
| uint8_t | consume_u8 (const char *name, ITracer *tracer) |
| |
| uint16_t | consume_u16 (const char *name="uint16_t") |
| |
| uint32_t | consume_u32 (const char *name, ITracer *tracer) |
| |
| uint32_t | consume_u32v (const char *name="var_uint32") |
| |
| uint32_t | consume_u32v (const char *name, ITracer *tracer) |
| |
| int32_t | consume_i32v (const char *name="var_int32") |
| |
| uint64_t | consume_u64v (const char *name, ITracer *tracer) |
| |
| int64_t | consume_i64v (const char *name="var_int64") |
| |
| void | consume_bytes (uint32_t size, const char *name="skip") |
| |
| void | consume_bytes (uint32_t size, const char *name, ITracer *tracer) |
| |
| uint32_t | available_bytes () const |
| |
| bool | checkAvailable (uint32_t size) |
| |
| void V8_NOINLINE V8_PRESERVE_MOST | error (const char *msg) |
| |
| void V8_NOINLINE V8_PRESERVE_MOST | error (const uint8_t *pc, const char *msg) |
| |
| void V8_NOINLINE V8_PRESERVE_MOST | error (uint32_t offset, const char *msg) |
| |
| template<typename... Args> |
| void V8_NOINLINE V8_PRESERVE_MOST | errorf (const char *format, Args... args) |
| |
| template<typename... Args> |
| void V8_NOINLINE V8_PRESERVE_MOST | errorf (const uint8_t *pc, const char *format, Args... args) |
| |
| template<typename... Args> |
| void V8_NOINLINE V8_PRESERVE_MOST | errorf (uint32_t offset, const char *format, Args... args) |
| |
| void | traceByteRange (const uint8_t *start, const uint8_t *end) |
| |
| void | traceOffEnd () |
| |
| template<typename T , typename R = std::decay_t<T>> |
| Result< R > | toResult (T &&val) |
| |
| void | Reset (const uint8_t *start, const uint8_t *end, uint32_t buffer_offset=0) |
| |
| void | Reset (base::Vector< const uint8_t > bytes, uint32_t buffer_offset=0) |
| |
| bool | ok () const |
| |
| bool | failed () const |
| |
| bool | more () const |
| |
| const WasmError & | error () const |
| |
| const uint8_t * | start () const |
| |
| const uint8_t * | pc () const |
| |
| uint32_t V8_INLINE | position () const |
| |
| uint32_t V8_INLINE | pc_offset (const uint8_t *pc) const |
| |
| uint32_t | pc_offset () const |
| |
| uint32_t | buffer_offset () const |
| |
| uint32_t | GetBufferRelativeOffset (uint32_t offset) const |
| |
| const uint8_t * | end () const |
| |
| void | set_end (const uint8_t *end) |
| |
| bool | lookahead (int offset, uint8_t expected) |
| |
|
| | ASSERT_TRIVIALLY_COPYABLE (Value) |
| |
| void | SetSucceedingCodeDynamicallyUnreachable () |
| |
| void | MarkMightThrow () |
| |
| V8_INLINE ValueType | TableAddressType (const WasmTable *table) |
| |
| V8_INLINE ValueType | MemoryAddressType (const WasmMemory *memory) |
| |
| V8_INLINE MemoryAccessImmediate | MakeMemoryAccessImmediate (uint32_t pc_offset, uint32_t max_alignment) |
| |
| | DECODE (Nop) |
| |
| | DECODE (NopForTestingUnsupportedInLiftoff) |
| |
| | DECODE (Block) |
| |
| | DECODE (Rethrow) |
| |
| | DECODE (Throw) |
| |
| | DECODE (Try) |
| |
| | DECODE (Catch) |
| |
| | DECODE (Delegate) |
| |
| | DECODE (CatchAll) |
| |
| | DECODE (TryTable) |
| |
| | DECODE (ThrowRef) |
| |
| | DECODE (BrOnNull) |
| |
| | DECODE (BrOnNonNull) |
| |
| | DECODE (Loop) |
| |
| | DECODE (If) |
| |
| | DECODE (Else) |
| |
| | DECODE (End) |
| |
| | DECODE (Select) |
| |
| | DECODE (SelectWithType) |
| |
| | DECODE (Br) |
| |
| | DECODE (BrIf) |
| |
| | DECODE (BrTable) |
| |
| | DECODE (Return) |
| |
| | DECODE (Unreachable) |
| |
| | DECODE (I32Const) |
| |
| | DECODE (I64Const) |
| |
| | DECODE (F32Const) |
| |
| | DECODE (F64Const) |
| |
| | DECODE (RefNull) |
| |
| | DECODE (RefIsNull) |
| |
| | DECODE (RefFunc) |
| |
| | DECODE (RefAsNonNull) |
| |
| V8_INLINE | DECODE (LocalGet) |
| |
| | DECODE (LocalSet) |
| |
| | DECODE (LocalTee) |
| |
| | DECODE (Drop) |
| |
| | DECODE (GlobalGet) |
| |
| | DECODE (GlobalSet) |
| |
| | DECODE (TableGet) |
| |
| | DECODE (TableSet) |
| |
| | DECODE (LoadMem) |
| |
| | DECODE (StoreMem) |
| |
| | DECODE (MemoryGrow) |
| |
| | DECODE (MemorySize) |
| |
| | DECODE (CallFunction) |
| |
| | DECODE (CallIndirect) |
| |
| | DECODE (ReturnCall) |
| |
| | DECODE (ReturnCallIndirect) |
| |
| | DECODE (CallRef) |
| |
| | DECODE (ReturnCallRef) |
| |
| | DECODE (RefEq) |
| |
| | DECODE (ContNew) |
| |
| | DECODE (Resume) |
| |
| | DECODE (Suspend) |
| |
| | DECODE (Numeric) |
| |
| | DECODE (AsmJs) |
| |
| | DECODE (Simd) |
| |
| | DECODE (Atomic) |
| |
| | DECODE (GC) |
| |
| OpcodeHandler | GetOpcodeHandler (uint8_t opcode) |
| |
| void | EndControl () |
| |
| template<typename func > |
| V8_INLINE void | InitMerge (Merge< Value > *merge, uint32_t arity, func get_val) |
| |
| V8_INLINE int | EnsureStackArguments (int count) |
| |
| V8_NOINLINE V8_PRESERVE_MOST int | EnsureStackArguments_Slow (int count) |
| |
| V8_INLINE void | ValidateParameters (const FunctionSig *sig) |
| |
| V8_INLINE void | DropArgs (const FunctionSig *sig) |
| |
| V8_INLINE PoppedArgVector | PopArgs (const StructType *type) |
| |
| V8_INLINE void | DropArgs (const StructType *type) |
| |
| V8_INLINE PoppedArgVector | PopArgs (const FunctionSig *sig) |
| |
| Control * | PushControl (ControlKind kind, const BlockTypeImmediate &imm) |
| |
| void | PopControl () |
| |
| int | DecodeLoadMem (LoadType type, int prefix_len=1) |
| |
| int | DecodeLoadTransformMem (LoadType type, LoadTransformationKind transform, uint32_t opcode_length) |
| |
| int | DecodeLoadLane (WasmOpcode opcode, LoadType type, uint32_t opcode_length) |
| |
| int | DecodeStoreLane (WasmOpcode opcode, StoreType type, uint32_t opcode_length) |
| |
| bool | CheckStaticallyOutOfBounds (const WasmMemory *memory, uint64_t size, uint64_t offset) |
| |
| int | DecodeStoreMem (StoreType store, int prefix_len=1) |
| |
| uint32_t | SimdConstOp (uint32_t opcode_length) |
| |
| uint32_t | SimdExtractLane (WasmOpcode opcode, ValueType type, uint32_t opcode_length) |
| |
| uint32_t | SimdReplaceLane (WasmOpcode opcode, ValueType type, uint32_t opcode_length) |
| |
| uint32_t | Simd8x16ShuffleOp (uint32_t opcode_length) |
| |
| uint32_t | DecodeSimdOpcode (WasmOpcode opcode, uint32_t opcode_length) |
| |
| bool | TypeCheckAlwaysFails (Value obj, HeapType expected_type, bool null_succeeds) |
| |
| bool | TypeCheckAlwaysSucceeds (Value obj, HeapType type) |
| |
| Value | PopDescriptor (ModuleTypeIndex described_index) |
| |
| int | DecodeGCOpcode (WasmOpcode opcode, uint32_t opcode_length) |
| |
| int | ParseBrOnCast (WasmOpcode opcode, uint32_t pc_offset) |
| |
| int | DecodeStringNewWtf8 (unibrow::Utf8Variant variant, uint32_t opcode_length) |
| |
| int | DecodeStringMeasureWtf8 (unibrow::Utf8Variant variant, uint32_t opcode_length) |
| |
| int | DecodeStringEncodeWtf8 (unibrow::Utf8Variant variant, uint32_t opcode_length) |
| |
| int | DecodeStringViewWtf8Encode (unibrow::Utf8Variant variant, uint32_t opcode_length) |
| |
| int | DecodeStringNewWtf8Array (unibrow::Utf8Variant variant, uint32_t opcode_length) |
| |
| int | DecodeStringEncodeWtf8Array (unibrow::Utf8Variant variant, uint32_t opcode_length) |
| |
| int | DecodeStringRefOpcode (WasmOpcode opcode, uint32_t opcode_length) |
| |
| uint32_t | DecodeAtomicOpcode (WasmOpcode opcode, uint32_t opcode_length) |
| |
| unsigned | DecodeNumericOpcode (WasmOpcode opcode, uint32_t opcode_length) |
| |
| unsigned | DecodeAsmJsOpcode (WasmOpcode opcode, uint32_t opcode_length) |
| |
| V8_INLINE Value | CreateValue (ValueType type) |
| |
| V8_INLINE Value * | Push (Value value) |
| |
| V8_INLINE Value * | Push (ValueType type) |
| |
| void | PushMergeValues (Control *c, Merge< Value > *merge) |
| |
| V8_INLINE void | PushReturns (ReturnVector values) |
| |
| Value * | PushReturns (const FunctionSig *sig) |
| |
| V8_NOINLINE V8_PRESERVE_MOST void | PopTypeError (int index, Value val, const char *expected) |
| |
| V8_NOINLINE V8_PRESERVE_MOST void | PopTypeError (int index, Value val, std::string expected) |
| |
| V8_NOINLINE V8_PRESERVE_MOST void | PopTypeError (int index, Value val, ValueType expected) |
| |
| V8_NOINLINE V8_PRESERVE_MOST void | NotEnoughArgumentsError (int needed, int actual) |
| |
| V8_INLINE Value | Pop (int index, ValueType expected) |
| |
| V8_INLINE void | ValidateStackValue (int index, Value value, ValueType expected) |
| |
| V8_INLINE Value | Pop () |
| |
| V8_INLINE Value | Peek (int depth, int index, ValueType expected) |
| |
| V8_INLINE Value | Peek (int depth=0) |
| |
| V8_INLINE Value | Peek (ValueType expected) |
| |
template<typename... ValueTypes>
requires ((std::is_same_v<ValueType, ValueTypes> || std::is_base_of_v<IndependentValueType, ValueTypes>) && ...) |
| V8_INLINE std::conditional_t< sizeof...(ValueTypes)==1, Value, std::array< Value, sizeof...(ValueTypes)> > | Pop (ValueTypes... expected_types) |
| |
| Value | PopPackedArray (uint32_t operand_index, ValueType expected_element_type, WasmArrayAccess access) |
| |
| V8_INLINE void | Drop (int count=1) |
| |
| V8_INLINE void | Drop (const Value &) |
| |
| template<StackElementsCountMode strict_count, PushBranchValues push_branch_values, MergeType merge_type, RewriteStackTypes rewrite_types> |
| V8_INLINE bool | TypeCheckStackAgainstMerge (Merge< Value > *merge) |
| |
| template<StackElementsCountMode strict_count, PushBranchValues push_branch_values, MergeType merge_type, RewriteStackTypes rewrite_types> |
| V8_PRESERVE_MOST V8_NOINLINE bool | TypeCheckStackAgainstMerge_Slow (Merge< Value > *merge) |
| |
| template<StackElementsCountMode strict_count, MergeType merge_type> |
| bool | DoReturn () |
| |
| int | startrel (const uint8_t *ptr) |
| |
| void | FallThrough () |
| |
| bool | TypeCheckOneArmedIf (Control *c) |
| |
| bool | TypeCheckFallThru () |
| |
| template<PushBranchValues push_branch_values, RewriteStackTypes rewrite_types> |
| bool | TypeCheckBranch (Control *c) |
| |
| void | onFirstError () override |
| |
| int | BuildSimplePrototypeOperator (WasmOpcode opcode) |
| |
| int | BuildSimpleOperator (WasmOpcode opcode, const FunctionSig *sig) |
| |
| int | BuildSimpleOperator (WasmOpcode opcode, ValueType return_type, ValueType arg_type) |
| |
| int | BuildSimpleOperator (WasmOpcode opcode, ValueType return_type, ValueType lhs_type, ValueType rhs_type) |
| |
template<typename ValidationTag, typename Interface,
DecodingMode decoding_mode = kFunctionBody>
class v8::internal::wasm::WasmFullDecoder< ValidationTag, Interface, decoding_mode >
Definition at line 2875 of file function-body-decoder-impl.h.