| Index: src/wasm/module-decoder.cc
|
| diff --git a/src/wasm/module-decoder.cc b/src/wasm/module-decoder.cc
|
| index 417d71fbe71ab44db3deea0d1a6b67c4177fd774..b17d529ba3a70e2d31a24d8dbdfbdf7bb2a018e1 100644
|
| --- a/src/wasm/module-decoder.cc
|
| +++ b/src/wasm/module-decoder.cc
|
| @@ -118,6 +118,10 @@ class ModuleDecoder : public Decoder {
|
| break;
|
| }
|
|
|
| + TRACE(" +%d section name : \"%.*s\"\n",
|
| + static_cast<int>(section_name_start - start_),
|
| + string_length < 20 ? string_length : 20, section_name_start);
|
| +
|
| WasmSection::Code section =
|
| WasmSection::lookup(section_name_start, string_length);
|
|
|
| @@ -171,8 +175,7 @@ class ModuleDecoder : public Decoder {
|
| 0, // name_offset
|
| 0, // name_length
|
| 0, // code_start_offset
|
| - 0, // code_end_offset
|
| - false}); // exported
|
| + 0}); // code_end_offset
|
| WasmFunction* function = &module->functions.back();
|
| function->sig_index = consume_sig_index(module, &function->sig);
|
| }
|
| @@ -204,44 +207,6 @@ class ModuleDecoder : public Decoder {
|
| }
|
| break;
|
| }
|
| - case WasmSection::Code::OldFunctions: {
|
| - int length;
|
| - uint32_t functions_count = consume_u32v(&length, "functions count");
|
| - module->functions.reserve(SafeReserve(functions_count));
|
| - // Set up module environment for verification.
|
| - ModuleEnv menv;
|
| - menv.module = module;
|
| - menv.instance = nullptr;
|
| - menv.origin = origin_;
|
| - // Decode functions.
|
| - for (uint32_t i = 0; i < functions_count; i++) {
|
| - if (failed()) break;
|
| - TRACE("DecodeFunction[%d] module+%d\n", i,
|
| - static_cast<int>(pc_ - start_));
|
| -
|
| - module->functions.push_back({nullptr, // sig
|
| - i, // func_index
|
| - 0, // sig_index
|
| - 0, // name_offset
|
| - 0, // name_length
|
| - 0, // code_start_offset
|
| - 0, // code_end_offset
|
| - false}); // exported
|
| - WasmFunction* function = &module->functions.back();
|
| - DecodeFunctionInModule(module, function, false);
|
| - }
|
| - if (ok() && verify_functions) {
|
| - for (uint32_t i = 0; i < functions_count; i++) {
|
| - if (failed()) break;
|
| - WasmFunction* function = &module->functions[i];
|
| - VerifyFunctionBody(i, &menv, function);
|
| - if (result_.failed()) {
|
| - error(result_.error_pc, result_.error_msg.get());
|
| - }
|
| - }
|
| - }
|
| - break;
|
| - }
|
| case WasmSection::Code::Names: {
|
| int length;
|
| const byte* pos = pc_;
|
| @@ -464,7 +429,6 @@ class ModuleDecoder : public Decoder {
|
| function->name_length = 0; // ---- name length
|
| function->code_start_offset = off(pc_); // ---- code start
|
| function->code_end_offset = off(limit_); // ---- code end
|
| - function->exported = false; // ---- exported
|
|
|
| if (ok()) VerifyFunctionBody(0, module_env, function);
|
|
|
| @@ -498,46 +462,6 @@ class ModuleDecoder : public Decoder {
|
| global->exported = consume_u8("exported") != 0;
|
| }
|
|
|
| - // Decodes a single function entry inside a module starting at {pc_}.
|
| - // TODO(titzer): legacy function body; remove
|
| - void DecodeFunctionInModule(WasmModule* module, WasmFunction* function,
|
| - bool verify_body = true) {
|
| - byte decl_bits = consume_u8("function decl");
|
| -
|
| - const byte* sigpos = pc_;
|
| - function->sig_index = consume_u16("signature index");
|
| -
|
| - if (function->sig_index >= module->signatures.size()) {
|
| - return error(sigpos, "invalid signature index");
|
| - } else {
|
| - function->sig = module->signatures[function->sig_index];
|
| - }
|
| -
|
| - TRACE(" +%d <function attributes:%s%s>\n", static_cast<int>(pc_ - start_),
|
| - decl_bits & kDeclFunctionName ? " name" : "",
|
| - decl_bits & kDeclFunctionExport ? " exported" : "");
|
| -
|
| - function->exported = decl_bits & kDeclFunctionExport;
|
| -
|
| - if (decl_bits & kDeclFunctionName) {
|
| - function->name_offset =
|
| - consume_string(&function->name_length, function->exported);
|
| - }
|
| -
|
| - uint16_t size = consume_u16("body size");
|
| - if (ok()) {
|
| - if ((pc_ + size) > limit_) {
|
| - return error(pc_, limit_,
|
| - "expected %d bytes for function body, fell off end", size);
|
| - }
|
| - function->code_start_offset = static_cast<uint32_t>(pc_ - start_);
|
| - function->code_end_offset = function->code_start_offset + size;
|
| - TRACE(" +%d %-20s: (%d bytes)\n", static_cast<int>(pc_ - start_),
|
| - "function body", size);
|
| - pc_ += size;
|
| - }
|
| - }
|
| -
|
| bool IsWithinLimit(uint32_t limit, uint32_t offset, uint32_t size) {
|
| if (offset > limit) return false;
|
| if ((offset + size) < offset) return false; // overflow
|
|
|