| Index: src/wasm/function-body-decoder.cc
 | 
| diff --git a/src/wasm/function-body-decoder.cc b/src/wasm/function-body-decoder.cc
 | 
| index 32a211e951669b720791924ac97357d71dddd8a0..4eebbab6326b9011ee83c593e0b21f0f8664fcca 100644
 | 
| --- a/src/wasm/function-body-decoder.cc
 | 
| +++ b/src/wasm/function-body-decoder.cc
 | 
| @@ -10,7 +10,9 @@
 | 
|  #include "src/zone/zone-containers.h"
 | 
|  
 | 
|  #include "src/wasm/decoder.h"
 | 
| +#include "src/wasm/function-body-decoder-impl.h"
 | 
|  #include "src/wasm/function-body-decoder.h"
 | 
| +#include "src/wasm/wasm-limits.h"
 | 
|  #include "src/wasm/wasm-module.h"
 | 
|  #include "src/wasm/wasm-opcodes.h"
 | 
|  
 | 
| @@ -149,28 +151,6 @@ struct Control {
 | 
|    (build() ? CheckForException(builder_->func(__VA_ARGS__)) : nullptr)
 | 
|  #define BUILD0(func) (build() ? CheckForException(builder_->func()) : nullptr)
 | 
|  
 | 
| -// Operand for SIMD lane operations.
 | 
| -struct SimdLaneOperand {
 | 
| -  uint8_t lane;
 | 
| -  unsigned length;
 | 
| -
 | 
| -  inline SimdLaneOperand(Decoder* decoder, const byte* pc) {
 | 
| -    lane = decoder->checked_read_u8(pc, 2, "lane");
 | 
| -    length = 1;
 | 
| -  }
 | 
| -};
 | 
| -
 | 
| -// Operand for SIMD shift operations.
 | 
| -struct SimdShiftOperand {
 | 
| -  uint8_t shift;
 | 
| -  unsigned length;
 | 
| -
 | 
| -  inline SimdShiftOperand(Decoder* decoder, const byte* pc) {
 | 
| -    shift = decoder->checked_read_u8(pc, 2, "shift");
 | 
| -    length = 1;
 | 
| -  }
 | 
| -};
 | 
| -
 | 
|  // Generic Wasm bytecode decoder with utilities for decoding operands,
 | 
|  // lengths, etc.
 | 
|  class WasmDecoder : public Decoder {
 | 
| @@ -209,7 +189,7 @@ class WasmDecoder : public Decoder {
 | 
|        uint32_t count = decoder->consume_u32v("local count");
 | 
|        if (decoder->failed()) return false;
 | 
|  
 | 
| -      if ((count + type_list->size()) > kMaxNumWasmLocals) {
 | 
| +      if ((count + type_list->size()) > kV8MaxWasmFunctionLocals) {
 | 
|          decoder->error(decoder->pc() - 1, "local count too large");
 | 
|          return false;
 | 
|        }
 | 
| @@ -722,10 +702,12 @@ class WasmFullDecoder : public WasmDecoder {
 | 
|      while (pc_ < end_) {  // decoding loop.
 | 
|        unsigned len = 1;
 | 
|        WasmOpcode opcode = static_cast<WasmOpcode>(*pc_);
 | 
| -      if (!WasmOpcodes::IsPrefixOpcode(opcode)) {
 | 
| -        TRACE("  @%-8d #%02x:%-20s|", startrel(pc_), opcode,
 | 
| +#if DEBUG
 | 
| +      if (FLAG_trace_wasm_decoder && !WasmOpcodes::IsPrefixOpcode(opcode)) {
 | 
| +        TRACE("  @%-8d #%-20s|", startrel(pc_),
 | 
|                WasmOpcodes::OpcodeName(opcode));
 | 
|        }
 | 
| +#endif
 | 
|  
 | 
|        FunctionSig* sig = WasmOpcodes::Signature(opcode);
 | 
|        if (sig) {
 | 
| @@ -1216,8 +1198,8 @@ class WasmFullDecoder : public WasmDecoder {
 | 
|              len++;
 | 
|              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::OpcodeName(opcode));
 | 
| +            TRACE("  @%-4d #%-20s|", startrel(pc_),
 | 
| +                  WasmOpcodes::OpcodeName(opcode));
 | 
|              len += DecodeSimdOpcode(opcode);
 | 
|              break;
 | 
|            }
 | 
| 
 |