Chromium Code Reviews| Index: src/wasm/ast-decoder.cc |
| diff --git a/src/wasm/ast-decoder.cc b/src/wasm/ast-decoder.cc |
| index 4e19d0f6b6a1894851890ffb5bedbac1790f9c99..84b64d6d8ddf3d02306fbe94d6f1c90abbb17aae 100644 |
| --- a/src/wasm/ast-decoder.cc |
| +++ b/src/wasm/ast-decoder.cc |
| @@ -324,7 +324,7 @@ class WasmDecoder : public Decoder { |
| case kExprF64Const: |
| return 9; |
| case kSimdPrefix: { |
|
gdeepti
2016/10/24 21:43:32
Probably good to gate this on CHECK_PROTOTYPE_OPCO
titzer
2016/10/25 07:54:07
Since this is just the length function, I think it
aseemgarg
2016/10/25 20:56:47
Leaving as is. Can't use CHECK_PROTOTYPE_OPCODE as
|
| - byte simd_index = *(pc + 1); |
| + byte simd_index = checked_read_u8(pc, 1, "simd_index"); |
| WasmOpcode opcode = |
| static_cast<WasmOpcode>(kSimdPrefix << 8 | simd_index); |
| switch (opcode) { |
| @@ -341,7 +341,8 @@ class WasmDecoder : public Decoder { |
| return 3; |
| } |
| default: |
| - UNREACHABLE(); |
| + error("invalid SIMD opcode"); |
| + return 2; |
| } |
| } |
| default: |
| @@ -1139,7 +1140,7 @@ class WasmFullDecoder : public WasmDecoder { |
| case kSimdPrefix: { |
| CHECK_PROTOTYPE_OPCODE(wasm_simd_prototype); |
| len++; |
| - byte simd_index = *(pc_ + 1); |
| + byte simd_index = checked_read_u8(pc_, 1, "simd index"); |
| opcode = static_cast<WasmOpcode>(opcode << 8 | simd_index); |
| TRACE(" @%-4d #%02x #%02x:%-20s|", startrel(pc_), kSimdPrefix, |
| simd_index, WasmOpcodes::ShortOpcodeName(opcode)); |