Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(204)

Side by Side Diff: src/wasm/wasm-interpreter.cc

Issue 2094573002: [wasm] Cleaning up code (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/wasm/switch-logic.cc ('k') | src/wasm/wasm-macro-gen.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/wasm/wasm-interpreter.h" 5 #include "src/wasm/wasm-interpreter.h"
6 #include "src/wasm/ast-decoder.h" 6 #include "src/wasm/ast-decoder.h"
7 #include "src/wasm/decoder.h" 7 #include "src/wasm/decoder.h"
8 #include "src/wasm/wasm-external-refs.h" 8 #include "src/wasm/wasm-external-refs.h"
9 #include "src/wasm/wasm-module.h" 9 #include "src/wasm/wasm-module.h"
10 10
(...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 control_stack[control_stack.size() - operand.depth - 1].Ref( 815 control_stack[control_stack.size() - operand.depth - 1].Ref(
816 &map_, start, pc, value_depth, operand.arity > 0); 816 &map_, start, pc, value_depth, operand.arity > 0);
817 value_depth++; 817 value_depth++;
818 break; 818 break;
819 } 819 }
820 case kExprBrTable: { 820 case kExprBrTable: {
821 BranchTableOperand operand(&decoder, pc); 821 BranchTableOperand operand(&decoder, pc);
822 TRACE("control @%td $%zu: BrTable[arity=%u count=%u]\n", (pc - start), 822 TRACE("control @%td $%zu: BrTable[arity=%u count=%u]\n", (pc - start),
823 value_depth, operand.arity, operand.table_count); 823 value_depth, operand.arity, operand.table_count);
824 value_depth -= (operand.arity + 1); 824 value_depth -= (operand.arity + 1);
825 for (uint32_t i = 0; i < operand.table_count + 1; i++) { 825 for (uint32_t i = 0; i < operand.table_count + 1; ++i) {
826 uint32_t target = operand.read_entry(&decoder, i); 826 uint32_t target = operand.read_entry(&decoder, i);
827 control_stack[control_stack.size() - target - 1].Ref( 827 control_stack[control_stack.size() - target - 1].Ref(
828 &map_, start, pc + i, value_depth, operand.arity > 0); 828 &map_, start, pc + i, value_depth, operand.arity > 0);
829 } 829 }
830 value_depth++; 830 value_depth++;
831 break; 831 break;
832 } 832 }
833 default: { 833 default: {
834 value_depth = value_depth - OpcodeArity(pc, end) + 1; 834 value_depth = value_depth - OpcodeArity(pc, end) + 1;
835 break; 835 break;
(...skipping 30 matching lines...) Expand all
866 // metadata needed to execute each function. 866 // metadata needed to execute each function.
867 class CodeMap { 867 class CodeMap {
868 public: 868 public:
869 Zone* zone_; 869 Zone* zone_;
870 const WasmModule* module_; 870 const WasmModule* module_;
871 ZoneVector<InterpreterCode> interpreter_code_; 871 ZoneVector<InterpreterCode> interpreter_code_;
872 872
873 CodeMap(const WasmModule* module, Zone* zone) 873 CodeMap(const WasmModule* module, Zone* zone)
874 : zone_(zone), module_(module), interpreter_code_(zone) { 874 : zone_(zone), module_(module), interpreter_code_(zone) {
875 if (module == nullptr) return; 875 if (module == nullptr) return;
876 for (size_t i = 0; i < module->functions.size(); i++) { 876 for (size_t i = 0; i < module->functions.size(); ++i) {
877 const WasmFunction* function = &module->functions[i]; 877 const WasmFunction* function = &module->functions[i];
878 const byte* code_start = 878 const byte* code_start =
879 module->module_start + function->code_start_offset; 879 module->module_start + function->code_start_offset;
880 const byte* code_end = module->module_start + function->code_end_offset; 880 const byte* code_end = module->module_start + function->code_end_offset;
881 AddFunction(function, code_start, code_end); 881 AddFunction(function, code_start, code_end);
882 } 882 }
883 } 883 }
884 884
885 InterpreterCode* FindCode(const WasmFunction* function) { 885 InterpreterCode* FindCode(const WasmFunction* function) {
886 if (function->func_index < interpreter_code_.size()) { 886 if (function->func_index < interpreter_code_.size()) {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
957 //========================================================================== 957 //==========================================================================
958 // Implementation of public interface for WasmInterpreter::Thread. 958 // Implementation of public interface for WasmInterpreter::Thread.
959 //========================================================================== 959 //==========================================================================
960 960
961 virtual WasmInterpreter::State state() { return state_; } 961 virtual WasmInterpreter::State state() { return state_; }
962 962
963 virtual void PushFrame(const WasmFunction* function, WasmVal* args) { 963 virtual void PushFrame(const WasmFunction* function, WasmVal* args) {
964 InterpreterCode* code = codemap()->FindCode(function); 964 InterpreterCode* code = codemap()->FindCode(function);
965 CHECK_NOT_NULL(code); 965 CHECK_NOT_NULL(code);
966 frames_.push_back({code, 0, 0, stack_.size()}); 966 frames_.push_back({code, 0, 0, stack_.size()});
967 for (size_t i = 0; i < function->sig->parameter_count(); i++) { 967 for (size_t i = 0; i < function->sig->parameter_count(); ++i) {
968 stack_.push_back(args[i]); 968 stack_.push_back(args[i]);
969 } 969 }
970 frames_.back().ret_pc = InitLocals(code); 970 frames_.back().ret_pc = InitLocals(code);
971 TRACE(" => PushFrame(#%u @%zu)\n", code->function->func_index, 971 TRACE(" => PushFrame(#%u @%zu)\n", code->function->func_index,
972 frames_.back().ret_pc); 972 frames_.back().ret_pc);
973 } 973 }
974 974
975 virtual WasmInterpreter::State Run() { 975 virtual WasmInterpreter::State Run() {
976 do { 976 do {
977 TRACE(" => Run()\n"); 977 TRACE(" => Run()\n");
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
1650 PrintF("\n"); 1650 PrintF("\n");
1651 } 1651 }
1652 } 1652 }
1653 1653
1654 void TraceValueStack() { 1654 void TraceValueStack() {
1655 Frame* top = frames_.size() > 0 ? &frames_.back() : nullptr; 1655 Frame* top = frames_.size() > 0 ? &frames_.back() : nullptr;
1656 sp_t sp = top ? top->sp : 0; 1656 sp_t sp = top ? top->sp : 0;
1657 sp_t plimit = top ? top->plimit() : 0; 1657 sp_t plimit = top ? top->plimit() : 0;
1658 sp_t llimit = top ? top->llimit() : 0; 1658 sp_t llimit = top ? top->llimit() : 0;
1659 if (FLAG_trace_wasm_interpreter) { 1659 if (FLAG_trace_wasm_interpreter) {
1660 for (size_t i = sp; i < stack_.size(); i++) { 1660 for (size_t i = sp; i < stack_.size(); ++i) {
1661 if (i < plimit) 1661 if (i < plimit)
1662 PrintF(" p%zu:", i); 1662 PrintF(" p%zu:", i);
1663 else if (i < llimit) 1663 else if (i < llimit)
1664 PrintF(" l%zu:", i); 1664 PrintF(" l%zu:", i);
1665 else 1665 else
1666 PrintF(" s%zu:", i); 1666 PrintF(" s%zu:", i);
1667 WasmVal val = stack_[i]; 1667 WasmVal val = stack_[i];
1668 switch (val.type) { 1668 switch (val.type) {
1669 case kAstI32: 1669 case kAstI32:
1670 PrintF("i32:%d", val.to<int32_t>()); 1670 PrintF("i32:%d", val.to<int32_t>());
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1821 1821
1822 ControlTransferMap WasmInterpreter::ComputeControlTransfersForTesting( 1822 ControlTransferMap WasmInterpreter::ComputeControlTransfersForTesting(
1823 Zone* zone, const byte* start, const byte* end) { 1823 Zone* zone, const byte* start, const byte* end) {
1824 ControlTransfers targets(zone, 0, start, end); 1824 ControlTransfers targets(zone, 0, start, end);
1825 return targets.map_; 1825 return targets.map_;
1826 } 1826 }
1827 1827
1828 } // namespace wasm 1828 } // namespace wasm
1829 } // namespace internal 1829 } // namespace internal
1830 } // namespace v8 1830 } // namespace v8
OLDNEW
« no previous file with comments | « src/wasm/switch-logic.cc ('k') | src/wasm/wasm-macro-gen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698