Index: src/wasm/module-decoder.cc |
diff --git a/src/wasm/module-decoder.cc b/src/wasm/module-decoder.cc |
index 435ded6b1a807dd5c6cc34d486f3df3ba9f0e7bc..326c2e26ab541515db785537f4173f0ad1b6ef21 100644 |
--- a/src/wasm/module-decoder.cc |
+++ b/src/wasm/module-decoder.cc |
@@ -233,7 +233,8 @@ class ModuleDecoder : public Decoder { |
if (failed()) break; |
TRACE("DecodeGlobal[%d] module+%d\n", i, |
static_cast<int>(pc_ - start_)); |
- module->globals.push_back({0, 0, MachineType::Int32(), 0, false}); |
+ // Add an uninitialized global and pass a pointer to it. |
+ module->globals.push_back({0, 0, kAstStmt, 0, false}); |
WasmGlobal* global = &module->globals.back(); |
DecodeGlobalInModule(global); |
} |
@@ -481,7 +482,7 @@ class ModuleDecoder : public Decoder { |
global->name_offset = consume_string(&global->name_length, false); |
DCHECK(unibrow::Utf8::Validate(start_ + global->name_offset, |
global->name_length)); |
- global->type = mem_type(); |
+ global->type = consume_local_type(); |
global->offset = 0; |
global->exported = consume_u8("exported") != 0; |
} |
@@ -527,7 +528,8 @@ class ModuleDecoder : public Decoder { |
return; |
} |
for (WasmGlobal& global : module->globals) { |
- byte size = WasmOpcodes::MemSize(global.type); |
+ byte size = |
+ WasmOpcodes::MemSize(WasmOpcodes::MachineTypeFor(global.type)); |
offset = (offset + size - 1) & ~(size - 1); // align |
global.offset = offset; |
offset += size; |
@@ -635,39 +637,6 @@ class ModuleDecoder : public Decoder { |
} |
} |
- // Reads a single 8-bit integer, interpreting it as a memory type. |
- MachineType mem_type() { |
- byte val = consume_u8("memory type"); |
- MemTypeCode t = static_cast<MemTypeCode>(val); |
- switch (t) { |
- case kMemI8: |
- return MachineType::Int8(); |
- case kMemU8: |
- return MachineType::Uint8(); |
- case kMemI16: |
- return MachineType::Int16(); |
- case kMemU16: |
- return MachineType::Uint16(); |
- case kMemI32: |
- return MachineType::Int32(); |
- case kMemU32: |
- return MachineType::Uint32(); |
- case kMemI64: |
- return MachineType::Int64(); |
- case kMemU64: |
- return MachineType::Uint64(); |
- case kMemF32: |
- return MachineType::Float32(); |
- case kMemF64: |
- return MachineType::Float64(); |
- case kMemS128: |
- return MachineType::Simd128(); |
- default: |
- error(pc_ - 1, "invalid memory type"); |
- return MachineType::None(); |
- } |
- } |
- |
// Parses a type entry, which is currently limited to functions only. |
FunctionSig* consume_sig() { |
const byte* pos = pc_; |