| Index: src/wasm/wasm-interpreter.cc
|
| diff --git a/src/wasm/wasm-interpreter.cc b/src/wasm/wasm-interpreter.cc
|
| index 05bcf8f597be30ccadcf3483accdfb15018f1248..c8700cad9c239c070407aa8ec2580a570465c035 100644
|
| --- a/src/wasm/wasm-interpreter.cc
|
| +++ b/src/wasm/wasm-interpreter.cc
|
| @@ -928,7 +928,7 @@ class CodeMap {
|
| InterpreterCode* Preprocess(InterpreterCode* code) {
|
| if (code->targets == nullptr && code->start) {
|
| // Compute the control targets map and the local declarations.
|
| - CHECK(DecodeLocalDecls(code->locals, code->start, code->end));
|
| + CHECK(DecodeLocalDecls(&code->locals, code->start, code->end));
|
| code->targets = new (zone_) ControlTransfers(
|
| zone_, &code->locals, code->orig_start, code->orig_end);
|
| }
|
| @@ -1070,7 +1070,7 @@ class ThreadImpl : public WasmInterpreter::Thread {
|
| // Limit of parameters.
|
| sp_t plimit() { return sp + code->function->sig->parameter_count(); }
|
| // Limit of locals.
|
| - sp_t llimit() { return plimit() + code->locals.total_local_count; }
|
| + sp_t llimit() { return plimit() + code->locals.type_list.size(); }
|
| };
|
|
|
| struct Block {
|
| @@ -1119,9 +1119,9 @@ class ThreadImpl : public WasmInterpreter::Thread {
|
| }
|
|
|
| pc_t InitLocals(InterpreterCode* code) {
|
| - for (auto p : code->locals.local_types) {
|
| + for (auto p : code->locals.type_list) {
|
| WasmVal val;
|
| - switch (p.first) {
|
| + switch (p) {
|
| case kWasmI32:
|
| val = WasmVal(static_cast<int32_t>(0));
|
| break;
|
| @@ -1138,9 +1138,9 @@ class ThreadImpl : public WasmInterpreter::Thread {
|
| UNREACHABLE();
|
| break;
|
| }
|
| - stack_.insert(stack_.end(), p.second, val);
|
| + stack_.push_back(val);
|
| }
|
| - return code->locals.decls_encoded_size;
|
| + return code->locals.encoded_size;
|
| }
|
|
|
| void CommitPc(pc_t pc) {
|
| @@ -1800,7 +1800,7 @@ bool WasmInterpreter::SetBreakpoint(const WasmFunction* function, pc_t pc,
|
| if (!code) return false;
|
| size_t size = static_cast<size_t>(code->end - code->start);
|
| // Check bounds for {pc}.
|
| - if (pc < code->locals.decls_encoded_size || pc >= size) return false;
|
| + if (pc < code->locals.encoded_size || pc >= size) return false;
|
| // Make a copy of the code before enabling a breakpoint.
|
| if (enabled && code->orig_start == code->start) {
|
| code->start = reinterpret_cast<byte*>(zone_.New(size));
|
| @@ -1821,7 +1821,7 @@ bool WasmInterpreter::GetBreakpoint(const WasmFunction* function, pc_t pc) {
|
| if (!code) return false;
|
| size_t size = static_cast<size_t>(code->end - code->start);
|
| // Check bounds for {pc}.
|
| - if (pc < code->locals.decls_encoded_size || pc >= size) return false;
|
| + if (pc < code->locals.encoded_size || pc >= size) return false;
|
| // Check if a breakpoint is present at that place in the code.
|
| return code->start[pc] == kInternalBreakpoint;
|
| }
|
|
|