| Index: test/unittests/wasm/module-decoder-unittest.cc | 
| diff --git a/test/unittests/wasm/module-decoder-unittest.cc b/test/unittests/wasm/module-decoder-unittest.cc | 
| index 0b363f68a3a59ae2081cb5b8abd521ce5e589345..c1368bbb4c3b03546f10c9a6a6555230ce09a9d9 100644 | 
| --- a/test/unittests/wasm/module-decoder-unittest.cc | 
| +++ b/test/unittests/wasm/module-decoder-unittest.cc | 
| @@ -98,9 +98,9 @@ TEST_F(WasmModuleVerifyTest, OneGlobal) { | 
| static const byte data[] = { | 
| kDeclGlobals, | 
| 1, | 
| -      NAME_OFFSET(0), | 
| -      kMemI32,  // memory type | 
| -      0,        // exported | 
| +      NAME_LENGTH(1), 'g',  // name | 
| +      kMemI32,              // memory type | 
| +      0,                    // exported | 
| }; | 
|  | 
| { | 
| @@ -113,7 +113,7 @@ TEST_F(WasmModuleVerifyTest, OneGlobal) { | 
|  | 
| WasmGlobal* global = &result.val->globals.back(); | 
|  | 
| -    EXPECT_EQ(0, global->name_offset); | 
| +    EXPECT_EQ(1, global->name_length); | 
| EXPECT_EQ(MachineType::Int32(), global->type); | 
| EXPECT_EQ(0, global->offset); | 
| EXPECT_FALSE(global->exported); | 
| @@ -152,9 +152,9 @@ static void AppendUint32v(std::vector<byte>& buffer, uint32_t val) { | 
|  | 
| TEST_F(WasmModuleVerifyTest, NGlobals) { | 
| static const byte data[] = { | 
| -      NAME_OFFSET(0),  // name offset | 
| -      kMemI32,         // memory type | 
| -      0,               // exported | 
| +      NO_NAME,  // name length | 
| +      kMemI32,  // memory type | 
| +      0,        // exported | 
| }; | 
|  | 
| for (uint32_t i = 0; i < 1000000; i = i * 13 + 1) { | 
| @@ -172,26 +172,13 @@ TEST_F(WasmModuleVerifyTest, NGlobals) { | 
| } | 
|  | 
|  | 
| -TEST_F(WasmModuleVerifyTest, GlobalWithInvalidNameOffset) { | 
| -  static const byte data[] = { | 
| -      kDeclGlobals, | 
| -      1,                 // declare one global | 
| -      NAME_OFFSET(300),  // name offset | 
| -      kMemI32,           // memory type | 
| -      0,                 // exported | 
| -  }; | 
| - | 
| -  EXPECT_FAILURE(data); | 
| -} | 
| - | 
| - | 
| TEST_F(WasmModuleVerifyTest, GlobalWithInvalidMemoryType) { | 
| static const byte data[] = { | 
| kDeclGlobals, | 
| -      1,               // declare one global | 
| -      NAME_OFFSET(0),  // name offset | 
| -      33,              // memory type | 
| -      0,               // exported | 
| +      1,        // declare one global | 
| +      NO_NAME,  // name length | 
| +      33,       // memory type | 
| +      0,        // exported | 
| }; | 
|  | 
| EXPECT_FAILURE(data); | 
| @@ -202,12 +189,12 @@ TEST_F(WasmModuleVerifyTest, TwoGlobals) { | 
| static const byte data[] = { | 
| kDeclGlobals, | 
| 2, | 
| -      NAME_OFFSET(0),  // #0: name offset | 
| -      kMemF32,         // memory type | 
| -      0,               // exported | 
| -      NAME_OFFSET(0),  // #1: name offset | 
| -      kMemF64,         // memory type | 
| -      1,               // exported | 
| +      NO_NAME,  // #0: name length | 
| +      kMemF32,  // memory type | 
| +      0,        // exported | 
| +      NO_NAME,  // #1: name length | 
| +      kMemF64,  // memory type | 
| +      1,        // exported | 
| }; | 
|  | 
| { | 
| @@ -221,12 +208,12 @@ TEST_F(WasmModuleVerifyTest, TwoGlobals) { | 
| WasmGlobal* g0 = &result.val->globals[0]; | 
| WasmGlobal* g1 = &result.val->globals[1]; | 
|  | 
| -    EXPECT_EQ(0, g0->name_offset); | 
| +    EXPECT_EQ(0, g0->name_length); | 
| EXPECT_EQ(MachineType::Float32(), g0->type); | 
| EXPECT_EQ(0, g0->offset); | 
| EXPECT_FALSE(g0->exported); | 
|  | 
| -    EXPECT_EQ(0, g1->name_offset); | 
| +    EXPECT_EQ(0, g1->name_length); | 
| EXPECT_EQ(MachineType::Float64(), g1->type); | 
| EXPECT_EQ(0, g1->offset); | 
| EXPECT_TRUE(g1->exported); | 
| @@ -288,16 +275,16 @@ TEST_F(WasmModuleVerifyTest, FunctionWithoutSig) { | 
| static const byte data[] = { | 
| kDeclFunctions, 1, | 
| // func#0 ------------------------------------------------------ | 
| -      SIG_INDEX(0),    // signature index | 
| -      NAME_OFFSET(0),  // name offset | 
| -      U32_LE(0),       // code start offset | 
| -      U32_LE(0),       // code end offset | 
| -      U16_LE(899),     // local int32 count | 
| -      U16_LE(799),     // local int64 count | 
| -      U16_LE(699),     // local float32 count | 
| -      U16_LE(599),     // local float64 count | 
| -      0,               // exported | 
| -      1                // external | 
| +      SIG_INDEX(0),  // signature index | 
| +      NO_NAME,       // name length | 
| +      U32_LE(0),     // code start offset | 
| +      U32_LE(0),     // code end offset | 
| +      U16_LE(899),   // local int32 count | 
| +      U16_LE(799),   // local int64 count | 
| +      U16_LE(699),   // local float32 count | 
| +      U16_LE(599),   // local float64 count | 
| +      0,             // exported | 
| +      1              // external | 
| }; | 
|  | 
| ModuleResult result = DecodeModule(data, data + arraysize(data)); | 
| @@ -307,7 +294,7 @@ TEST_F(WasmModuleVerifyTest, FunctionWithoutSig) { | 
|  | 
|  | 
| TEST_F(WasmModuleVerifyTest, OneEmptyVoidVoidFunction) { | 
| -  const int kCodeStartOffset = 31; | 
| +  const int kCodeStartOffset = 30; | 
| const int kCodeEndOffset = kCodeStartOffset + 1; | 
|  | 
| static const byte data[] = { | 
| @@ -317,13 +304,13 @@ TEST_F(WasmModuleVerifyTest, OneEmptyVoidVoidFunction) { | 
| // func#0 ------------------------------------------------------ | 
| kDeclFunctions, 1, | 
| kDeclFunctionLocals | kDeclFunctionExport | kDeclFunctionName, | 
| -      SIG_INDEX(0),    // signature index | 
| -      NAME_OFFSET(9),  // name offset | 
| -      U16_LE(1466),    // local int32 count | 
| -      U16_LE(1355),    // local int64 count | 
| -      U16_LE(1244),    // local float32 count | 
| -      U16_LE(1133),    // local float64 count | 
| -      1, 0,            // size | 
| +      SIG_INDEX(0),              // signature index | 
| +      NAME_LENGTH(2), 'h', 'i',  // name | 
| +      U16_LE(1466),              // local int32 count | 
| +      U16_LE(1355),              // local int64 count | 
| +      U16_LE(1244),              // local float32 count | 
| +      U16_LE(1133),              // local float64 count | 
| +      1, 0,                      // size | 
| kExprNop, | 
| }; | 
|  | 
| @@ -339,7 +326,8 @@ TEST_F(WasmModuleVerifyTest, OneEmptyVoidVoidFunction) { | 
|  | 
| WasmFunction* function = &result.val->functions.back(); | 
|  | 
| -    EXPECT_EQ(9, function->name_offset); | 
| +    EXPECT_EQ(18, function->name_offset); | 
| +    EXPECT_EQ(2, function->name_length); | 
| EXPECT_EQ(kCodeStartOffset, function->code_start_offset); | 
| EXPECT_EQ(kCodeEndOffset, function->code_end_offset); | 
|  | 
| @@ -373,7 +361,7 @@ TEST_F(WasmModuleVerifyTest, OneFunctionImported) { | 
| EXPECT_EQ(1, result.val->functions.size()); | 
| WasmFunction* function = &result.val->functions.back(); | 
|  | 
| -  EXPECT_EQ(0, function->name_offset); | 
| +  EXPECT_EQ(0, function->name_length); | 
| EXPECT_EQ(0, function->code_start_offset); | 
| EXPECT_EQ(0, function->code_end_offset); | 
|  | 
| @@ -409,7 +397,7 @@ TEST_F(WasmModuleVerifyTest, OneFunctionWithNopBody) { | 
| EXPECT_EQ(1, result.val->functions.size()); | 
| WasmFunction* function = &result.val->functions.back(); | 
|  | 
| -  EXPECT_EQ(0, function->name_offset); | 
| +  EXPECT_EQ(0, function->name_length); | 
| EXPECT_EQ(kCodeStartOffset, function->code_start_offset); | 
| EXPECT_EQ(kCodeEndOffset, function->code_end_offset); | 
|  | 
| @@ -449,7 +437,7 @@ TEST_F(WasmModuleVerifyTest, OneFunctionWithNopBody_WithLocals) { | 
| EXPECT_EQ(1, result.val->functions.size()); | 
| WasmFunction* function = &result.val->functions.back(); | 
|  | 
| -  EXPECT_EQ(0, function->name_offset); | 
| +  EXPECT_EQ(0, function->name_length); | 
| EXPECT_EQ(kCodeStartOffset, function->code_start_offset); | 
| EXPECT_EQ(kCodeEndOffset, function->code_end_offset); | 
|  | 
| @@ -466,31 +454,29 @@ TEST_F(WasmModuleVerifyTest, OneFunctionWithNopBody_WithLocals) { | 
|  | 
|  | 
| TEST_F(WasmModuleVerifyTest, OneGlobalOneFunctionWithNopBodyOneDataSegment) { | 
| -  static const byte kDeclMemorySize = 4; | 
| -  static const byte kCodeStartOffset = | 
| -      8 + 2 + kDeclMemorySize + kDeclGlobalSize + 4 + 2 + 17; | 
| +  static const byte kCodeStartOffset = 8 + 4 + 5 + 4 + 18; | 
| static const byte kCodeEndOffset = kCodeStartOffset + 3; | 
|  | 
| static const byte data[] = { | 
| kDeclMemory, 28, 28, 1, | 
| // global#0 -------------------------------------------------- | 
| -      kDeclGlobals, 1, 0, 0, 0, 0,  // name offset | 
| -      kMemU8,                       // memory type | 
| -      0,                            // exported | 
| +      kDeclGlobals, 1, 0,  // name length | 
| +      kMemU8,              // memory type | 
| +      0,                   // exported | 
| // sig#0 ----------------------------------------------------- | 
| kDeclSignatures, 1, 0, 0,  // void -> void | 
| // func#0 ---------------------------------------------------- | 
| kDeclFunctions, 1, kDeclFunctionLocals | kDeclFunctionName, 0, | 
| -      0,           // signature index | 
| -      9, 0, 0, 0,  // name offset | 
| -      1, 2,        // local int32 count | 
| -      3, 4,        // local int64 count | 
| -      5, 6,        // local float32 count | 
| -      7, 8,        // local float64 count | 
| -      3, 0,        // body size | 
| -      kExprNop,    // func#0 body | 
| -      kExprNop,    // func#0 body | 
| -      kExprNop,    // func#0 body | 
| +      0,            // signature index | 
| +      2, 'h', 'i',  // name | 
| +      1, 2,         // local int32 count | 
| +      3, 4,         // local int64 count | 
| +      5, 6,         // local float32 count | 
| +      7, 8,         // local float64 count | 
| +      3, 0,         // body size | 
| +      kExprNop,     // func#0 body | 
| +      kExprNop,     // func#0 body | 
| +      kExprNop,     // func#0 body | 
| // segment#0 ------------------------------------------------- | 
| kDeclDataSegments, 1, 0xae, 0xb3, 0x08, 0,  // dest addr | 
| 15, 0, 0, 0,                                // source offset | 
| @@ -509,14 +495,15 @@ TEST_F(WasmModuleVerifyTest, OneGlobalOneFunctionWithNopBodyOneDataSegment) { | 
|  | 
| WasmGlobal* global = &result.val->globals.back(); | 
|  | 
| -    EXPECT_EQ(0, global->name_offset); | 
| +    EXPECT_EQ(0, global->name_length); | 
| EXPECT_EQ(MachineType::Uint8(), global->type); | 
| EXPECT_EQ(0, global->offset); | 
| EXPECT_FALSE(global->exported); | 
|  | 
| WasmFunction* function = &result.val->functions.back(); | 
|  | 
| -    EXPECT_EQ(9, function->name_offset); | 
| +    EXPECT_EQ(27, function->name_offset); | 
| +    EXPECT_EQ(2, function->name_length); | 
| EXPECT_EQ(kCodeStartOffset, function->code_start_offset); | 
| EXPECT_EQ(kCodeEndOffset, function->code_end_offset); | 
|  | 
| @@ -1033,10 +1020,7 @@ TEST_F(WasmModuleVerifyTest, UnknownSectionSkipped) { | 
| 0,  // one byte section | 
| kDeclGlobals, | 
| 1, | 
| -      0, | 
| -      0, | 
| -      0, | 
| -      0,        // name offset | 
| +      0,        // name length | 
| kMemI32,  // memory type | 
| 0,        // exported | 
| }; | 
| @@ -1049,7 +1033,7 @@ TEST_F(WasmModuleVerifyTest, UnknownSectionSkipped) { | 
|  | 
| WasmGlobal* global = &result.val->globals.back(); | 
|  | 
| -  EXPECT_EQ(0, global->name_offset); | 
| +  EXPECT_EQ(0, global->name_length); | 
| EXPECT_EQ(MachineType::Int32(), global->type); | 
| EXPECT_EQ(0, global->offset); | 
| EXPECT_FALSE(global->exported); | 
| @@ -1070,9 +1054,9 @@ TEST_F(WasmModuleVerifyTest, ImportTable_nosigs) { | 
| TEST_F(WasmModuleVerifyTest, ImportTable_invalid_sig) { | 
| static const byte data[] = { | 
| kDeclSignatures, 0, kDeclImportTable, 1, | 
| -      SIG_INDEX(0),    // sig index | 
| -      NAME_OFFSET(1),  // module name | 
| -      NAME_OFFSET(1),  // function name | 
| +      IMPORT_SIG_INDEX(0),  // sig index | 
| +      NAME_LENGTH(1), 'm',  // module name | 
| +      NAME_LENGTH(1), 'f',  // function name | 
| }; | 
| EXPECT_FAILURE(data); | 
| } | 
| @@ -1083,10 +1067,10 @@ TEST_F(WasmModuleVerifyTest, ImportTable_one_sig) { | 
| 1, | 
| VOID_VOID_SIG, | 
| kDeclImportTable, | 
| -      1,               // -- | 
| -      U32V_1(0),       // sig index | 
| -      NAME_OFFSET(1),  // module name | 
| -      NAME_OFFSET(1)   // function name | 
| +      1,                    // -- | 
| +      IMPORT_SIG_INDEX(0),  // sig index | 
| +      NAME_LENGTH(1), 'm',  // module name | 
| +      NAME_LENGTH(1), 'f',  // function name | 
| }; | 
| EXPECT_VERIFIES(data); | 
| } | 
| @@ -1097,10 +1081,10 @@ TEST_F(WasmModuleVerifyTest, ImportTable_invalid_module) { | 
| 1, | 
| VOID_VOID_SIG, | 
| kDeclImportTable, | 
| -      1,               // -- | 
| -      SIG_INDEX(0),    // sig index | 
| -      NAME_OFFSET(0),  // module name | 
| -      NAME_OFFSET(1)   // function name | 
| +      1,                    // -- | 
| +      IMPORT_SIG_INDEX(0),  // sig index | 
| +      NO_NAME,              // module name | 
| +      NAME_LENGTH(1), 'f'   // function name | 
| }; | 
| EXPECT_FAILURE(data); | 
| } | 
| @@ -1108,9 +1092,9 @@ TEST_F(WasmModuleVerifyTest, ImportTable_invalid_module) { | 
| TEST_F(WasmModuleVerifyTest, ImportTable_off_end) { | 
| static const byte data[] = { | 
| kDeclSignatures, 1, VOID_VOID_SIG, kDeclImportTable, 1, | 
| -      SIG_INDEX(0),    // sig index | 
| -      NAME_OFFSET(1),  // module name | 
| -      NAME_OFFSET(1),  // function name | 
| +      IMPORT_SIG_INDEX(0),  // sig index | 
| +      NAME_LENGTH(1), 'm',  // module name | 
| +      NAME_LENGTH(1), 'f',  // function name | 
| }; | 
|  | 
| EXPECT_OFF_END_FAILURE(data, 5, sizeof(data)); | 
| @@ -1140,41 +1124,41 @@ TEST_F(WasmModuleVerifyTest, ExportTableOne) { | 
| EMPTY_FUNCTION(0),     // -- | 
| kDeclExportTable,  1,  // exports | 
| FUNC_INDEX(0),         // -- | 
| -      NAME_OFFSET(0)         // -- | 
| +      NO_NAME                // -- | 
| }; | 
| EXPECT_VERIFIES(data); | 
| } | 
|  | 
| TEST_F(WasmModuleVerifyTest, ExportTableTwo) { | 
| static const byte data[] = { | 
| -      kDeclSignatures,   1,  // sigs | 
| -      VOID_VOID_SIG,         // -- | 
| -      kDeclFunctions,    1,  // functions | 
| -      EMPTY_FUNCTION(0),     // -- | 
| -      kDeclExportTable,  2,  // exports | 
| -      FUNC_INDEX(0),         // -- | 
| -      NAME_OFFSET(1),        // -- | 
| -      FUNC_INDEX(0),         // -- | 
| -      NAME_OFFSET(2)         // -- | 
| +      kDeclSignatures,   1,                   // sigs | 
| +      VOID_VOID_SIG,                          // -- | 
| +      kDeclFunctions,    1,                   // functions | 
| +      EMPTY_FUNCTION(0),                      // -- | 
| +      kDeclExportTable,  2,                   // exports | 
| +      FUNC_INDEX(0),                          // -- | 
| +      NAME_LENGTH(4),    'n', 'a', 'm', 'e',  // -- | 
| +      FUNC_INDEX(0),                          // -- | 
| +      NAME_LENGTH(3),    'n', 'o', 'm'        // -- | 
| }; | 
| EXPECT_VERIFIES(data); | 
| } | 
|  | 
| TEST_F(WasmModuleVerifyTest, ExportTableThree) { | 
| static const byte data[] = { | 
| -      kDeclSignatures,   1,  // sigs | 
| -      VOID_VOID_SIG,         // -- | 
| -      kDeclFunctions,    3,  // functions | 
| -      EMPTY_FUNCTION(0),     // -- | 
| -      EMPTY_FUNCTION(0),     // -- | 
| -      EMPTY_FUNCTION(0),     // -- | 
| -      kDeclExportTable,  3,  // exports | 
| -      FUNC_INDEX(0),         // -- | 
| -      NAME_OFFSET(1),        // -- | 
| -      FUNC_INDEX(1),         // -- | 
| -      NAME_OFFSET(2),        // -- | 
| -      FUNC_INDEX(2),         // -- | 
| -      NAME_OFFSET(2)         // -- | 
| +      kDeclSignatures,   1,    // sigs | 
| +      VOID_VOID_SIG,           // -- | 
| +      kDeclFunctions,    3,    // functions | 
| +      EMPTY_FUNCTION(0),       // -- | 
| +      EMPTY_FUNCTION(0),       // -- | 
| +      EMPTY_FUNCTION(0),       // -- | 
| +      kDeclExportTable,  3,    // exports | 
| +      FUNC_INDEX(0),           // -- | 
| +      NAME_LENGTH(1),    'a',  // -- | 
| +      FUNC_INDEX(1),           // -- | 
| +      NAME_LENGTH(1),    'b',  // -- | 
| +      FUNC_INDEX(2),           // -- | 
| +      NAME_LENGTH(1),    'c'   // -- | 
| }; | 
| EXPECT_VERIFIES(data); | 
| } | 
| @@ -1182,15 +1166,15 @@ TEST_F(WasmModuleVerifyTest, ExportTableThree) { | 
| TEST_F(WasmModuleVerifyTest, ExportTableThreeOne) { | 
| for (int i = 0; i < 6; i++) { | 
| const byte data[] = { | 
| -        kDeclSignatures,   1,  // sigs | 
| -        VOID_VOID_SIG,         // -- | 
| -        kDeclFunctions,    3,  // functions | 
| -        EMPTY_FUNCTION(0),     // -- | 
| -        EMPTY_FUNCTION(0),     // -- | 
| -        EMPTY_FUNCTION(0),     // -- | 
| -        kDeclExportTable,  1,  // exports | 
| -        FUNC_INDEX(i),         // -- | 
| -        NAME_OFFSET(1)         // -- | 
| +        kDeclSignatures,   1,         // sigs | 
| +        VOID_VOID_SIG,                // -- | 
| +        kDeclFunctions,    3,         // functions | 
| +        EMPTY_FUNCTION(0),            // -- | 
| +        EMPTY_FUNCTION(0),            // -- | 
| +        EMPTY_FUNCTION(0),            // -- | 
| +        kDeclExportTable,  1,         // exports | 
| +        FUNC_INDEX(i),                // -- | 
| +        NAME_LENGTH(2),    'e', 'x',  // -- | 
| }; | 
|  | 
| if (i < 3) { | 
| @@ -1209,7 +1193,7 @@ TEST_F(WasmModuleVerifyTest, ExportTableOne_off_end) { | 
| EMPTY_FUNCTION(0),     // -- | 
| kDeclExportTable,  1,  // exports | 
| FUNC_INDEX(0),         // -- | 
| -      NAME_OFFSET(0)         // -- | 
| +      NO_NAME                // -- | 
| }; | 
|  | 
| for (int length = 13; length < sizeof(data); length++) { | 
|  |