#include "src/wasm/function-body-decoder.h"
#include "src/flags/flags.h"
#include "src/utils/ostreams.h"
#include "src/wasm/canonical-types.h"
#include "src/wasm/function-body-decoder-impl.h"
#include "src/wasm/leb-helper.h"
#include "src/wasm/local-decl-encoder.h"
#include "src/wasm/wasm-limits.h"
#include "src/wasm/wasm-module.h"
#include "src/wasm/wasm-opcodes-inl.h"
#include "src/wasm/wasm-subtyping.h"
#include "src/zone/zone.h"
#include "test/common/flag-utils.h"
#include "test/common/wasm/flag-utils.h"
#include "test/common/wasm/test-signatures.h"
#include "test/common/wasm/wasm-macro-gen.h"
#include "test/unittests/test-utils.h"
#include "testing/gmock-support.h"
namespace v8::internal::wasm {
#define B1 …
#define B2 …
#define B3 …
#define WASM_IF_OP …
#define WASM_LOOP_OP …
#define EXPECT_OK …
static const uint8_t kCodeGetLocal0[] = …;
static const uint8_t kCodeGetLocal1[] = …;
static const uint8_t kCodeSetLocal0[] = …;
static const uint8_t kCodeTeeLocal0[] = …;
static const ValueType kValueTypes[] = …;
static const MachineType machineTypes[] = …;
static const WasmOpcode kInt32BinopOpcodes[] = …;
#define WASM_BRV_IF_ZERO …
constexpr size_t kMaxByteSizedLeb128 = …;
F;
using MakeSig = FixedSizeSignature<ValueType>;
enum MemoryType { … };
enum TableType { … };
class TestModuleBuilder { … };
template <class BaseTest>
class FunctionBodyDecoderTestBase : public WithZoneMixin<BaseTest> { … };
FunctionBodyDecoderTest;
TEST_F(FunctionBodyDecoderTest, Int32Const1) { … }
TEST_F(FunctionBodyDecoderTest, RefFunc) { … }
TEST_F(FunctionBodyDecoderTest, EmptyFunction) { … }
TEST_F(FunctionBodyDecoderTest, IncompleteIf1) { … }
TEST_F(FunctionBodyDecoderTest, Int32Const_fallthru) { … }
TEST_F(FunctionBodyDecoderTest, Int32Const_fallthru2) { … }
TEST_F(FunctionBodyDecoderTest, Int32Const) { … }
TEST_F(FunctionBodyDecoderTest, Int64Const) { … }
TEST_F(FunctionBodyDecoderTest, Float32Const) { … }
TEST_F(FunctionBodyDecoderTest, Float64Const) { … }
TEST_F(FunctionBodyDecoderTest, Int32Const_off_end) { … }
TEST_F(FunctionBodyDecoderTest, GetLocal0_param) { … }
TEST_F(FunctionBodyDecoderTest, GetLocal0_local) { … }
TEST_F(FunctionBodyDecoderTest, TooManyLocals) { … }
TEST_F(FunctionBodyDecoderTest, GetLocal0_param_n) { … }
TEST_F(FunctionBodyDecoderTest, GetLocalN_local) { … }
TEST_F(FunctionBodyDecoderTest, GetLocal0_fail_no_params) { … }
TEST_F(FunctionBodyDecoderTest, GetLocal1_fail_no_locals) { … }
TEST_F(FunctionBodyDecoderTest, GetLocal_off_end) { … }
TEST_F(FunctionBodyDecoderTest, NumLocalBelowLimit) { … }
TEST_F(FunctionBodyDecoderTest, NumLocalAtLimit) { … }
TEST_F(FunctionBodyDecoderTest, NumLocalAboveLimit) { … }
TEST_F(FunctionBodyDecoderTest, GetLocal_varint) { … }
TEST_F(FunctionBodyDecoderTest, GetLocal_toomany) { … }
TEST_F(FunctionBodyDecoderTest, Binops_off_end) { … }
TEST_F(FunctionBodyDecoderTest, BinopsAcrossBlock1) { … }
TEST_F(FunctionBodyDecoderTest, BinopsAcrossBlock2) { … }
TEST_F(FunctionBodyDecoderTest, BinopsAcrossBlock3) { … }
TEST_F(FunctionBodyDecoderTest, Nop) { … }
TEST_F(FunctionBodyDecoderTest, SetLocal0_void) { … }
TEST_F(FunctionBodyDecoderTest, SetLocal0_param) { … }
TEST_F(FunctionBodyDecoderTest, TeeLocal0_param) { … }
TEST_F(FunctionBodyDecoderTest, SetLocal0_local) { … }
TEST_F(FunctionBodyDecoderTest, TeeLocal0_local) { … }
TEST_F(FunctionBodyDecoderTest, TeeLocalN_local) { … }
TEST_F(FunctionBodyDecoderTest, BlockN) { … }
#define WASM_EMPTY_BLOCK …
TEST_F(FunctionBodyDecoderTest, Block0) { … }
TEST_F(FunctionBodyDecoderTest, Block0_fallthru1) { … }
TEST_F(FunctionBodyDecoderTest, Block0Block0) { … }
TEST_F(FunctionBodyDecoderTest, Block0_end) { … }
#undef WASM_EMPTY_BLOCK
TEST_F(FunctionBodyDecoderTest, Block1) { … }
TEST_F(FunctionBodyDecoderTest, Block1_i) { … }
TEST_F(FunctionBodyDecoderTest, Block1_f) { … }
TEST_F(FunctionBodyDecoderTest, Block1_continue) { … }
TEST_F(FunctionBodyDecoderTest, Block1_br) { … }
TEST_F(FunctionBodyDecoderTest, Block2_br) { … }
TEST_F(FunctionBodyDecoderTest, Block2) { … }
TEST_F(FunctionBodyDecoderTest, Block2b) { … }
TEST_F(FunctionBodyDecoderTest, Block2_fallthru) { … }
TEST_F(FunctionBodyDecoderTest, Block3) { … }
TEST_F(FunctionBodyDecoderTest, Block5) { … }
TEST_F(FunctionBodyDecoderTest, BlockType) { … }
TEST_F(FunctionBodyDecoderTest, BlockType_fail) { … }
TEST_F(FunctionBodyDecoderTest, BlockF32) { … }
TEST_F(FunctionBodyDecoderTest, BlockN_off_end) { … }
TEST_F(FunctionBodyDecoderTest, Block2_continue) { … }
TEST_F(FunctionBodyDecoderTest, Block3_continue) { … }
TEST_F(FunctionBodyDecoderTest, NestedBlock_return) { … }
TEST_F(FunctionBodyDecoderTest, BlockBrBinop) { … }
TEST_F(FunctionBodyDecoderTest, VoidBlockTypeVariants) { … }
TEST_F(FunctionBodyDecoderTest, If_empty1) { … }
TEST_F(FunctionBodyDecoderTest, If_empty2) { … }
TEST_F(FunctionBodyDecoderTest, If_empty3) { … }
TEST_F(FunctionBodyDecoderTest, If_empty4) { … }
TEST_F(FunctionBodyDecoderTest, If_empty_stack) { … }
TEST_F(FunctionBodyDecoderTest, If_incomplete1) { … }
TEST_F(FunctionBodyDecoderTest, If_incomplete2) { … }
TEST_F(FunctionBodyDecoderTest, If_else_else) { … }
TEST_F(FunctionBodyDecoderTest, IfEmpty) { … }
TEST_F(FunctionBodyDecoderTest, IfSet) { … }
TEST_F(FunctionBodyDecoderTest, IfElseEmpty) { … }
TEST_F(FunctionBodyDecoderTest, IfElseUnreachable1) { … }
TEST_F(FunctionBodyDecoderTest, IfElseUnreachable2) { … }
TEST_F(FunctionBodyDecoderTest, OneArmedIfWithArity) { … }
TEST_F(FunctionBodyDecoderTest, IfBreak) { … }
TEST_F(FunctionBodyDecoderTest, IfElseBreak) { … }
TEST_F(FunctionBodyDecoderTest, Block_else) { … }
TEST_F(FunctionBodyDecoderTest, IfNop) { … }
TEST_F(FunctionBodyDecoderTest, If_end) { … }
TEST_F(FunctionBodyDecoderTest, If_falloff1) { … }
TEST_F(FunctionBodyDecoderTest, IfElseNop) { … }
TEST_F(FunctionBodyDecoderTest, IfBlock1) { … }
TEST_F(FunctionBodyDecoderTest, IfBlock1b) { … }
TEST_F(FunctionBodyDecoderTest, IfBlock2a) { … }
TEST_F(FunctionBodyDecoderTest, IfBlock2b) { … }
TEST_F(FunctionBodyDecoderTest, IfElseSet) { … }
TEST_F(FunctionBodyDecoderTest, Loop0) { … }
TEST_F(FunctionBodyDecoderTest, Loop1) { … }
TEST_F(FunctionBodyDecoderTest, Loop2) { … }
TEST_F(FunctionBodyDecoderTest, Loop1_continue) { … }
TEST_F(FunctionBodyDecoderTest, Loop1_break) { … }
TEST_F(FunctionBodyDecoderTest, Loop2_continue) { … }
TEST_F(FunctionBodyDecoderTest, Loop2_break) { … }
TEST_F(FunctionBodyDecoderTest, InfiniteLoop1) { … }
TEST_F(FunctionBodyDecoderTest, InfiniteLoop2) { … }
TEST_F(FunctionBodyDecoderTest, Loop2_unreachable) { … }
TEST_F(FunctionBodyDecoderTest, LoopType) { … }
TEST_F(FunctionBodyDecoderTest, LoopType_void) { … }
TEST_F(FunctionBodyDecoderTest, LoopType_fail) { … }
TEST_F(FunctionBodyDecoderTest, ReturnVoid1) { … }
TEST_F(FunctionBodyDecoderTest, ReturnVoid2) { … }
TEST_F(FunctionBodyDecoderTest, ReturnVoid3) { … }
TEST_F(FunctionBodyDecoderTest, Unreachable1) { … }
TEST_F(FunctionBodyDecoderTest, Unreachable2) { … }
TEST_F(FunctionBodyDecoderTest, UnreachableLoop1) { … }
TEST_F(FunctionBodyDecoderTest, Unreachable_binop1) { … }
TEST_F(FunctionBodyDecoderTest, Unreachable_binop2) { … }
TEST_F(FunctionBodyDecoderTest, Unreachable_select1) { … }
TEST_F(FunctionBodyDecoderTest, Unreachable_select2) { … }
TEST_F(FunctionBodyDecoderTest, UnreachableRefTypes) { … }
TEST_F(FunctionBodyDecoderTest, If1) { … }
TEST_F(FunctionBodyDecoderTest, If_off_end) { … }
TEST_F(FunctionBodyDecoderTest, If_type1) { … }
TEST_F(FunctionBodyDecoderTest, If_type2) { … }
TEST_F(FunctionBodyDecoderTest, If_type3) { … }
TEST_F(FunctionBodyDecoderTest, If_type4) { … }
TEST_F(FunctionBodyDecoderTest, If_type5) { … }
TEST_F(FunctionBodyDecoderTest, Int64Local_param) { … }
TEST_F(FunctionBodyDecoderTest, Int64Locals) { … }
TEST_F(FunctionBodyDecoderTest, Int32Binops) { … }
TEST_F(FunctionBodyDecoderTest, DoubleBinops) { … }
TEST_F(FunctionBodyDecoderTest, FloatBinops) { … }
TEST_F(FunctionBodyDecoderTest, TypeConversions) { … }
TEST_F(FunctionBodyDecoderTest, MacrosVoid) { … }
TEST_F(FunctionBodyDecoderTest, MacrosContinue) { … }
TEST_F(FunctionBodyDecoderTest, MacrosVariadic) { … }
TEST_F(FunctionBodyDecoderTest, MacrosNestedBlocks) { … }
TEST_F(FunctionBodyDecoderTest, MultipleReturn) { … }
TEST_F(FunctionBodyDecoderTest, MultipleReturn_fallthru) { … }
TEST_F(FunctionBodyDecoderTest, MacrosInt32) { … }
TEST_F(FunctionBodyDecoderTest, MacrosInt64) { … }
TEST_F(FunctionBodyDecoderTest, AllSimpleExpressions) { … }
TEST_F(FunctionBodyDecoderTest, MemorySize) { … }
TEST_F(FunctionBodyDecoderTest, LoadMemOffset) { … }
TEST_F(FunctionBodyDecoderTest, LoadMemAlignment) { … }
TEST_F(FunctionBodyDecoderTest, StoreMemOffset) { … }
TEST_F(FunctionBodyDecoderTest, StoreMemOffset_void) { … }
TEST_F(FunctionBodyDecoderTest, LoadMemOffset_varint) { … }
TEST_F(FunctionBodyDecoderTest, StoreMemOffset_varint) { … }
TEST_F(FunctionBodyDecoderTest, AllLoadMemCombinations) { … }
TEST_F(FunctionBodyDecoderTest, AllStoreMemCombinations) { … }
TEST_F(FunctionBodyDecoderTest, SimpleCalls) { … }
TEST_F(FunctionBodyDecoderTest, CallsWithTooFewArguments) { … }
TEST_F(FunctionBodyDecoderTest, CallsWithMismatchedSigs2) { … }
TEST_F(FunctionBodyDecoderTest, CallsWithMismatchedSigs3) { … }
TEST_F(FunctionBodyDecoderTest, SimpleReturnCalls) { … }
TEST_F(FunctionBodyDecoderTest, ReturnCallsWithTooFewArguments) { … }
TEST_F(FunctionBodyDecoderTest, ReturnCallWithSubtype) { … }
TEST_F(FunctionBodyDecoderTest, ReturnCallsWithMismatchedSigs) { … }
TEST_F(FunctionBodyDecoderTest, SimpleIndirectReturnCalls) { … }
TEST_F(FunctionBodyDecoderTest, IndirectReturnCallsOutOfBounds) { … }
TEST_F(FunctionBodyDecoderTest, IndirectReturnCallsWithMismatchedSigs3) { … }
TEST_F(FunctionBodyDecoderTest, IndirectReturnCallsWithoutTableCrash) { … }
TEST_F(FunctionBodyDecoderTest, IncompleteIndirectReturnCall) { … }
TEST_F(FunctionBodyDecoderTest, MultiReturn) { … }
TEST_F(FunctionBodyDecoderTest, MultiReturnType) { … }
TEST_F(FunctionBodyDecoderTest, SimpleIndirectCalls) { … }
TEST_F(FunctionBodyDecoderTest, IndirectCallsOutOfBounds) { … }
TEST_F(FunctionBodyDecoderTest, IndirectCallsWithMismatchedSigs1) { … }
TEST_F(FunctionBodyDecoderTest, IndirectCallsWithMismatchedSigs2) { … }
TEST_F(FunctionBodyDecoderTest, TablesWithFunctionSubtyping) { … }
TEST_F(FunctionBodyDecoderTest, IndirectCallsWithoutTableCrash) { … }
TEST_F(FunctionBodyDecoderTest, IncompleteIndirectCall) { … }
TEST_F(FunctionBodyDecoderTest, IncompleteStore) { … }
TEST_F(FunctionBodyDecoderTest, IncompleteI8x16Shuffle) { … }
TEST_F(FunctionBodyDecoderTest, SimpleImportCalls) { … }
TEST_F(FunctionBodyDecoderTest, ImportCallsWithMismatchedSigs3) { … }
TEST_F(FunctionBodyDecoderTest, Int32Globals) { … }
TEST_F(FunctionBodyDecoderTest, ImmutableGlobal) { … }
TEST_F(FunctionBodyDecoderTest, Int32Globals_fail) { … }
TEST_F(FunctionBodyDecoderTest, Int64Globals) { … }
TEST_F(FunctionBodyDecoderTest, Float32Globals) { … }
TEST_F(FunctionBodyDecoderTest, Float64Globals) { … }
TEST_F(FunctionBodyDecoderTest, NullRefGlobals) { … }
TEST_F(FunctionBodyDecoderTest, NullExternRefGlobals) { … }
TEST_F(FunctionBodyDecoderTest, NullFuncRefGlobals) { … }
TEST_F(FunctionBodyDecoderTest, NullExnRefGlobals) { … }
TEST_F(FunctionBodyDecoderTest, AllGetGlobalCombinations) { … }
TEST_F(FunctionBodyDecoderTest, AllSetGlobalCombinations) { … }
TEST_F(FunctionBodyDecoderTest, TableSet) { … }
TEST_F(FunctionBodyDecoderTest, TableGet) { … }
TEST_F(FunctionBodyDecoderTest, MultiTableCallIndirect) { … }
TEST_F(FunctionBodyDecoderTest, WasmMemoryGrow) { … }
TEST_F(FunctionBodyDecoderTest, BreakEnd) { … }
TEST_F(FunctionBodyDecoderTest, BreakIfBinop) { … }
TEST_F(FunctionBodyDecoderTest, BreakIfBinop_fail) { … }
TEST_F(FunctionBodyDecoderTest, BreakIfUnrNarrow) { … }
TEST_F(FunctionBodyDecoderTest, BreakNesting1) { … }
TEST_F(FunctionBodyDecoderTest, BreakNesting2) { … }
TEST_F(FunctionBodyDecoderTest, BreakNesting3) { … }
TEST_F(FunctionBodyDecoderTest, BreaksWithMultipleTypes) { … }
TEST_F(FunctionBodyDecoderTest, BreakNesting_6_levels) { … }
TEST_F(FunctionBodyDecoderTest, Break_TypeCheck) { … }
TEST_F(FunctionBodyDecoderTest, Break_TypeCheckAll1) { … }
TEST_F(FunctionBodyDecoderTest, Break_TypeCheckAll2) { … }
TEST_F(FunctionBodyDecoderTest, Break_TypeCheckAll3) { … }
TEST_F(FunctionBodyDecoderTest, Break_Unify) { … }
TEST_F(FunctionBodyDecoderTest, BreakIf_cond_type) { … }
TEST_F(FunctionBodyDecoderTest, BreakIf_val_type) { … }
TEST_F(FunctionBodyDecoderTest, BreakIf_Unify) { … }
TEST_F(FunctionBodyDecoderTest, BrTable0) { … }
TEST_F(FunctionBodyDecoderTest, BrTable0b) { … }
TEST_F(FunctionBodyDecoderTest, BrTable0c) { … }
TEST_F(FunctionBodyDecoderTest, BrTable1a) { … }
TEST_F(FunctionBodyDecoderTest, BrTable1b) { … }
TEST_F(FunctionBodyDecoderTest, BrTable2a) { … }
TEST_F(FunctionBodyDecoderTest, BrTable2b) { … }
TEST_F(FunctionBodyDecoderTest, BrTableSubtyping) { … }
TEST_F(FunctionBodyDecoderTest, BrTable_off_end) { … }
TEST_F(FunctionBodyDecoderTest, BrTable_invalid_br1) { … }
TEST_F(FunctionBodyDecoderTest, BrTable_invalid_br2) { … }
TEST_F(FunctionBodyDecoderTest, BrTable_arity_mismatch1) { … }
TEST_F(FunctionBodyDecoderTest, BrTable_arity_mismatch2) { … }
TEST_F(FunctionBodyDecoderTest, BrTable_arity_mismatch_loop1) { … }
TEST_F(FunctionBodyDecoderTest, BrTable_arity_mismatch_loop2) { … }
TEST_F(FunctionBodyDecoderTest, BrTable_loop_block) { … }
TEST_F(FunctionBodyDecoderTest, BrTable_block_loop) { … }
TEST_F(FunctionBodyDecoderTest, BrTable_type_mismatch1) { … }
TEST_F(FunctionBodyDecoderTest, BrTable_type_mismatch2) { … }
TEST_F(FunctionBodyDecoderTest, BrTable_type_mismatch_unreachable) { … }
TEST_F(FunctionBodyDecoderTest, BrUnreachable1) { … }
TEST_F(FunctionBodyDecoderTest, BrUnreachable2) { … }
TEST_F(FunctionBodyDecoderTest, Brv1) { … }
TEST_F(FunctionBodyDecoderTest, Brv1_type) { … }
TEST_F(FunctionBodyDecoderTest, Brv1_type_n) { … }
TEST_F(FunctionBodyDecoderTest, BrvIf1) { … }
TEST_F(FunctionBodyDecoderTest, BrvIf1_type) { … }
TEST_F(FunctionBodyDecoderTest, BrvIf1_type_n) { … }
TEST_F(FunctionBodyDecoderTest, Select) { … }
TEST_F(FunctionBodyDecoderTest, Select_needs_value_type) { … }
TEST_F(FunctionBodyDecoderTest, Select_fail1) { … }
TEST_F(FunctionBodyDecoderTest, Select_fail2) { … }
TEST_F(FunctionBodyDecoderTest, Select_TypeCheck) { … }
TEST_F(FunctionBodyDecoderTest, SelectWithType) { … }
TEST_F(FunctionBodyDecoderTest, SelectWithType_fail) { … }
TEST_F(FunctionBodyDecoderTest, Throw) { … }
TEST_F(FunctionBodyDecoderTest, ThrowUnreachable) { … }
#define WASM_TRY_OP …
TEST_F(FunctionBodyDecoderTest, TryCatch) { … }
TEST_F(FunctionBodyDecoderTest, Rethrow) { … }
TEST_F(FunctionBodyDecoderTest, TryDelegate) { … }
#undef WASM_TRY_OP
#define WASM_TRY_TABLE_OP …
TEST_F(FunctionBodyDecoderTest, ThrowRef) { … }
TEST_F(FunctionBodyDecoderTest, TryTable) { … }
TEST_F(FunctionBodyDecoderTest, MultiValBlock1) { … }
TEST_F(FunctionBodyDecoderTest, MultiValBlock2) { … }
TEST_F(FunctionBodyDecoderTest, MultiValBlockBr) { … }
TEST_F(FunctionBodyDecoderTest, MultiValLoop1) { … }
TEST_F(FunctionBodyDecoderTest, MultiValIf) { … }
TEST_F(FunctionBodyDecoderTest, BlockParam) { … }
TEST_F(FunctionBodyDecoderTest, LoopParam) { … }
TEST_F(FunctionBodyDecoderTest, LoopParamBr) { … }
TEST_F(FunctionBodyDecoderTest, IfParam) { … }
TEST_F(FunctionBodyDecoderTest, Regression709741) { … }
TEST_F(FunctionBodyDecoderTest, MemoryInit) { … }
TEST_F(FunctionBodyDecoderTest, MemoryInitInvalid) { … }
TEST_F(FunctionBodyDecoderTest, DataDrop) { … }
TEST_F(FunctionBodyDecoderTest, DataSegmentIndexUnsigned) { … }
TEST_F(FunctionBodyDecoderTest, MemoryCopy) { … }
TEST_F(FunctionBodyDecoderTest, MemoryFill) { … }
TEST_F(FunctionBodyDecoderTest, BulkMemoryOpsWithoutMemory) { … }
TEST_F(FunctionBodyDecoderTest, TableInit) { … }
TEST_F(FunctionBodyDecoderTest, TableInitWrongType) { … }
TEST_F(FunctionBodyDecoderTest, TableInitInvalid) { … }
TEST_F(FunctionBodyDecoderTest, ElemDrop) { … }
TEST_F(FunctionBodyDecoderTest, TableInitDeclarativeElem) { … }
TEST_F(FunctionBodyDecoderTest, DeclarativeElemDrop) { … }
TEST_F(FunctionBodyDecoderTest, RefFuncDeclared) { … }
TEST_F(FunctionBodyDecoderTest, RefFuncUndeclared) { … }
TEST_F(FunctionBodyDecoderTest, ElemSegmentIndexUnsigned) { … }
TEST_F(FunctionBodyDecoderTest, TableCopy) { … }
TEST_F(FunctionBodyDecoderTest, TableCopyWrongType) { … }
TEST_F(FunctionBodyDecoderTest, TableGrow) { … }
TEST_F(FunctionBodyDecoderTest, TableSize) { … }
TEST_F(FunctionBodyDecoderTest, TableFill) { … }
TEST_F(FunctionBodyDecoderTest, TableOpsWithoutTable) { … }
TEST_F(FunctionBodyDecoderTest, TableCopyMultiTable) { … }
TEST_F(FunctionBodyDecoderTest, TableInitMultiTable) { … }
TEST_F(FunctionBodyDecoderTest, UnpackPackedTypes) { … }
ValueType ref(uint32_t type_index) { … }
ValueType refNull(uint32_t type_index) { … }
TEST_F(FunctionBodyDecoderTest, StructOrArrayNewDefault) { … }
TEST_F(FunctionBodyDecoderTest, DefaultableLocal) { … }
TEST_F(FunctionBodyDecoderTest, NonDefaultableLocals) { … }
TEST_F(FunctionBodyDecoderTest, RefEq) { … }
TEST_F(FunctionBodyDecoderTest, RefAsNonNull) { … }
TEST_F(FunctionBodyDecoderTest, RefNull) { … }
TEST_F(FunctionBodyDecoderTest, RefIsNull) { … }
TEST_F(FunctionBodyDecoderTest, BrOnNull) { … }
TEST_F(FunctionBodyDecoderTest, BrOnNonNull) { … }
TEST_F(FunctionBodyDecoderTest, GCStruct) { … }
TEST_F(FunctionBodyDecoderTest, GCArray) { … }
TEST_F(FunctionBodyDecoderTest, PackedFields) { … }
TEST_F(FunctionBodyDecoderTest, PackedTypesAsLocals) { … }
TEST_F(FunctionBodyDecoderTest, RefTestCast) { … }
TEST_F(FunctionBodyDecoderTest, BrOnCastOrCastFail) { … }
TEST_F(FunctionBodyDecoderTest, BrOnAbstractType) { … }
TEST_F(FunctionBodyDecoderTest, BrWithBottom) { … }
TEST_F(FunctionBodyDecoderTest, LocalTeeTyping) { … }
TEST_F(FunctionBodyDecoderTest, MergeNullableTypes) { … }
TEST_F(FunctionBodyDecoderTest, Regress_1154439) { … }
TEST_F(FunctionBodyDecoderTest, DropOnEmptyStack) { … }
TEST_F(FunctionBodyDecoderTest, AnyConvertExtern) { … }
TEST_F(FunctionBodyDecoderTest, ExternConvertAny) { … }
class BranchTableIteratorTest : public TestWithZone { … };
#define CHECK_BR_TABLE_LENGTH …
#define CHECK_BR_TABLE_ERROR …
TEST_F(BranchTableIteratorTest, count0) { … }
TEST_F(BranchTableIteratorTest, count1) { … }
TEST_F(BranchTableIteratorTest, error0) { … }
#undef CHECK_BR_TABLE_LENGTH
#undef CHECK_BR_TABLE_ERROR
struct PrintOpcodes { … };
std::ostream& operator<<(std::ostream& out, const PrintOpcodes& range) { … }
class WasmOpcodeLengthTest : public TestWithZone { … };
TEST_F(WasmOpcodeLengthTest, AllOpcodesImplemented) { … }
TEST_F(WasmOpcodeLengthTest, Statements) { … }
TEST_F(WasmOpcodeLengthTest, MiscExpressions) { … }
TEST_F(WasmOpcodeLengthTest, I32Const) { … }
TEST_F(WasmOpcodeLengthTest, I64Const) { … }
TEST_F(WasmOpcodeLengthTest, VariableLength) { … }
TEST_F(WasmOpcodeLengthTest, LoadsAndStores) { … }
TEST_F(WasmOpcodeLengthTest, MiscMemExpressions) { … }
TEST_F(WasmOpcodeLengthTest, SimpleExpressions) { … }
TEST_F(WasmOpcodeLengthTest, SimdExpressions) { … }
TEST_F(WasmOpcodeLengthTest, IllegalRefIndices) { … }
TEST_F(WasmOpcodeLengthTest, GCOpcodes) { … }
TEST_F(WasmOpcodeLengthTest, PrefixedOpcodesLEB) { … }
class TypeReaderTest : public TestWithZone { … };
TEST_F(TypeReaderTest, HeapTypeDecodingTest) { … }
class LocalDeclDecoderTest : public TestWithZone { … };
TEST_F(LocalDeclDecoderTest, EmptyLocals) { … }
TEST_F(LocalDeclDecoderTest, NoLocals) { … }
TEST_F(LocalDeclDecoderTest, WrongLocalDeclsCount1) { … }
TEST_F(LocalDeclDecoderTest, WrongLocalDeclsCount2) { … }
TEST_F(LocalDeclDecoderTest, OneLocal) { … }
TEST_F(LocalDeclDecoderTest, FiveLocals) { … }
TEST_F(LocalDeclDecoderTest, MixedLocals) { … }
TEST_F(LocalDeclDecoderTest, UseEncoder) { … }
TEST_F(LocalDeclDecoderTest, ExnRef) { … }
TEST_F(LocalDeclDecoderTest, InvalidTypeIndex) { … }
class BytecodeIteratorTest : public TestWithZone { … };
TEST_F(BytecodeIteratorTest, SimpleForeach) { … }
TEST_F(BytecodeIteratorTest, ForeachTwice) { … }
TEST_F(BytecodeIteratorTest, ForeachOffset) { … }
TEST_F(BytecodeIteratorTest, WithLocalDecls) { … }
class FunctionBodyDecoderTestOnBothMemoryTypes
: public FunctionBodyDecoderTestBase<
WithDefaultPlatformMixin<::testing::TestWithParam<MemoryType>>> { … };
std::string PrintMemoryType(::testing::TestParamInfo<MemoryType> info) { … }
INSTANTIATE_TEST_SUITE_P(…);
TEST_P(FunctionBodyDecoderTestOnBothMemoryTypes, IndexTypes) { … }
TEST_P(FunctionBodyDecoderTestOnBothMemoryTypes, 64BitOffsetOnMemory32) { … }
TEST_P(FunctionBodyDecoderTestOnBothMemoryTypes, 64BitOffsetOnMemory64) { … }
TEST_P(FunctionBodyDecoderTestOnBothMemoryTypes, MemorySize) { … }
TEST_P(FunctionBodyDecoderTestOnBothMemoryTypes, MemoryGrow) { … }
TEST_P(FunctionBodyDecoderTestOnBothMemoryTypes, CopyDifferentMemTypes) { … }
TEST_F(FunctionBodyDecoderTest, ExtendedMemoryAccessImmediate) { … }
class FunctionBodyDecoderTestTable64
: public FunctionBodyDecoderTestBase<
WithDefaultPlatformMixin<::testing::TestWithParam<TableType>>> { … };
std::string PrintTableType(::testing::TestParamInfo<TableType> info) { … }
INSTANTIATE_TEST_SUITE_P(…);
TEST_P(FunctionBodyDecoderTestTable64, Table64Set) { … }
TEST_P(FunctionBodyDecoderTestTable64, Table64Get) { … }
TEST_P(FunctionBodyDecoderTestTable64, Table64CallIndirect) { … }
TEST_P(FunctionBodyDecoderTestTable64, Table64ReturnCallIndirect) { … }
TEST_P(FunctionBodyDecoderTestTable64, Table64Grow) { … }
TEST_P(FunctionBodyDecoderTestTable64, Table64Size) { … }
TEST_P(FunctionBodyDecoderTestTable64, Table64Fill) { … }
TEST_P(FunctionBodyDecoderTestTable64, Table64Init) { … }
TEST_P(FunctionBodyDecoderTestTable64, Table64Copy) { … }
TEST_P(FunctionBodyDecoderTestTable64, Table64CopyDifferentTypes) { … }
#undef B1
#undef B2
#undef B3
#undef WASM_IF_OP
#undef WASM_LOOP_OP
#undef WASM_BRV_IF_ZERO
#undef EXPECT_OK
}