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

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

Issue 2594973003: [wasm] Rename ast-decoder.* to function-body-decoder.* (Closed)
Patch Set: Created 3 years, 12 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
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 6
7 #include "src/utils.h" 7 #include "src/utils.h"
8 #include "src/wasm/ast-decoder.h"
9 #include "src/wasm/decoder.h" 8 #include "src/wasm/decoder.h"
9 #include "src/wasm/function-body-decoder.h"
10 #include "src/wasm/wasm-external-refs.h" 10 #include "src/wasm/wasm-external-refs.h"
11 #include "src/wasm/wasm-limits.h" 11 #include "src/wasm/wasm-limits.h"
12 #include "src/wasm/wasm-module.h" 12 #include "src/wasm/wasm-module.h"
13 13
14 #include "src/zone/accounting-allocator.h" 14 #include "src/zone/accounting-allocator.h"
15 #include "src/zone/zone-containers.h" 15 #include "src/zone/zone-containers.h"
16 16
17 namespace v8 { 17 namespace v8 {
18 namespace internal { 18 namespace internal {
19 namespace wasm { 19 namespace wasm {
(...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 714
715 static const int kRunSteps = 1000; 715 static const int kRunSteps = 1000;
716 716
717 // A helper class to compute the control transfers for each bytecode offset. 717 // A helper class to compute the control transfers for each bytecode offset.
718 // Control transfers allow Br, BrIf, BrTable, If, Else, and End bytecodes to 718 // Control transfers allow Br, BrIf, BrTable, If, Else, and End bytecodes to
719 // be directly executed without the need to dynamically track blocks. 719 // be directly executed without the need to dynamically track blocks.
720 class ControlTransfers : public ZoneObject { 720 class ControlTransfers : public ZoneObject {
721 public: 721 public:
722 ControlTransferMap map_; 722 ControlTransferMap map_;
723 723
724 ControlTransfers(Zone* zone, AstLocalDecls* locals, const byte* start, 724 ControlTransfers(Zone* zone, BodyLocalDecls* locals, const byte* start,
725 const byte* end) 725 const byte* end)
726 : map_(zone) { 726 : map_(zone) {
727 // Represents a control flow label. 727 // Represents a control flow label.
728 struct CLabel : public ZoneObject { 728 struct CLabel : public ZoneObject {
729 const byte* target; 729 const byte* target;
730 ZoneVector<const byte*> refs; 730 ZoneVector<const byte*> refs;
731 731
732 explicit CLabel(Zone* zone) : target(nullptr), refs(zone) {} 732 explicit CLabel(Zone* zone) : target(nullptr), refs(zone) {}
733 733
734 // Bind this label to the given PC. 734 // Bind this label to the given PC.
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
865 if (result == map_.end()) { 865 if (result == map_.end()) {
866 V8_Fatal(__FILE__, __LINE__, "no control target for pc %zu", from); 866 V8_Fatal(__FILE__, __LINE__, "no control target for pc %zu", from);
867 } 867 }
868 return result->second; 868 return result->second;
869 } 869 }
870 }; 870 };
871 871
872 // Code and metadata needed to execute a function. 872 // Code and metadata needed to execute a function.
873 struct InterpreterCode { 873 struct InterpreterCode {
874 const WasmFunction* function; // wasm function 874 const WasmFunction* function; // wasm function
875 AstLocalDecls locals; // local declarations 875 BodyLocalDecls locals; // local declarations
876 const byte* orig_start; // start of original code 876 const byte* orig_start; // start of original code
877 const byte* orig_end; // end of original code 877 const byte* orig_end; // end of original code
878 byte* start; // start of (maybe altered) code 878 byte* start; // start of (maybe altered) code
879 byte* end; // end of (maybe altered) code 879 byte* end; // end of (maybe altered) code
880 ControlTransfers* targets; // helper for control flow. 880 ControlTransfers* targets; // helper for control flow.
881 881
882 const byte* at(pc_t pc) { return start + pc; } 882 const byte* at(pc_t pc) { return start + pc; }
883 }; 883 };
884 884
885 // The main storage for interpreter code. It maps {WasmFunction} to the 885 // The main storage for interpreter code. It maps {WasmFunction} to the
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
931 CHECK(DecodeLocalDecls(code->locals, code->start, code->end)); 931 CHECK(DecodeLocalDecls(code->locals, code->start, code->end));
932 code->targets = new (zone_) ControlTransfers( 932 code->targets = new (zone_) ControlTransfers(
933 zone_, &code->locals, code->orig_start, code->orig_end); 933 zone_, &code->locals, code->orig_start, code->orig_end);
934 } 934 }
935 return code; 935 return code;
936 } 936 }
937 937
938 int AddFunction(const WasmFunction* function, const byte* code_start, 938 int AddFunction(const WasmFunction* function, const byte* code_start,
939 const byte* code_end) { 939 const byte* code_end) {
940 InterpreterCode code = { 940 InterpreterCode code = {
941 function, AstLocalDecls(zone_), code_start, 941 function, BodyLocalDecls(zone_), code_start,
942 code_end, const_cast<byte*>(code_start), const_cast<byte*>(code_end), 942 code_end, const_cast<byte*>(code_start), const_cast<byte*>(code_end),
943 nullptr}; 943 nullptr};
944 944
945 DCHECK_EQ(interpreter_code_.size(), function->func_index); 945 DCHECK_EQ(interpreter_code_.size(), function->func_index);
946 interpreter_code_.push_back(code); 946 interpreter_code_.push_back(code);
947 return static_cast<int>(interpreter_code_.size()) - 1; 947 return static_cast<int>(interpreter_code_.size()) - 1;
948 } 948 }
949 949
950 bool SetFunctionCode(const WasmFunction* function, const byte* start, 950 bool SetFunctionCode(const WasmFunction* function, const byte* start,
951 const byte* end) { 951 const byte* end) {
(...skipping 936 matching lines...) Expand 10 before | Expand all | Expand 10 after
1888 1888
1889 ControlTransferMap WasmInterpreter::ComputeControlTransfersForTesting( 1889 ControlTransferMap WasmInterpreter::ComputeControlTransfersForTesting(
1890 Zone* zone, const byte* start, const byte* end) { 1890 Zone* zone, const byte* start, const byte* end) {
1891 ControlTransfers targets(zone, nullptr, start, end); 1891 ControlTransfers targets(zone, nullptr, start, end);
1892 return targets.map_; 1892 return targets.map_;
1893 } 1893 }
1894 1894
1895 } // namespace wasm 1895 } // namespace wasm
1896 } // namespace internal 1896 } // namespace internal
1897 } // namespace v8 1897 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698