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

Side by Side Diff: src/wasm/ast-decoder.cc

Issue 1776813003: adjust for wasm-demo Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 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/ast-decoder.h ('k') | src/wasm/decoder.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/base/platform/elapsed-timer.h" 5 #include "src/base/platform/elapsed-timer.h"
6 #include "src/signature.h" 6 #include "src/signature.h"
7 7
8 #include "src/bit-vector.h" 8 #include "src/bit-vector.h"
9 #include "src/flags.h" 9 #include "src/flags.h"
10 #include "src/handles.h" 10 #include "src/handles.h"
11 #include "src/zone-containers.h" 11 #include "src/zone-containers.h"
12 12
13 #include "src/wasm/ast-decoder.h" 13 #include "src/wasm/ast-decoder.h"
14 #include "src/wasm/decoder.h" 14 #include "src/wasm/decoder.h"
15 #include "src/wasm/wasm-module.h" 15 #include "src/wasm/wasm-module.h"
16 #include "src/wasm/wasm-opcodes.h" 16 #include "src/wasm/wasm-opcodes.h"
17 17
18 #include "src/compiler/wasm-compiler.h" 18 #include "src/compiler/wasm-compiler.h"
19 19
20 namespace v8 { 20 namespace v8 {
21 namespace internal { 21 namespace internal {
22 namespace wasm { 22 namespace wasm {
23 23
24 #if DEBUG
25 #define TRACE(...) \ 24 #define TRACE(...) \
26 do { \ 25 do { \
27 if (FLAG_trace_wasm_decoder) PrintF(__VA_ARGS__); \ 26 if (FLAG_trace_wasm_decoder) PrintF(__VA_ARGS__); \
28 } while (false) 27 } while (false)
29 #else
30 #define TRACE(...)
31 #endif
32 28
33 // The root of a decoded tree. 29 // The root of a decoded tree.
34 struct Tree { 30 struct Tree {
35 LocalType type; // tree type. 31 LocalType type; // tree type.
36 uint32_t count; // number of children. 32 uint32_t count; // number of children.
37 const byte* pc; // start of the syntax tree. 33 const byte* pc; // start of the syntax tree.
38 TFNode* node; // node in the TurboFan graph. 34 TFNode* node; // node in the TurboFan graph.
39 Tree* children[1]; // pointers to children. 35 Tree* children[1]; // pointers to children.
40 36
41 WasmOpcode opcode() const { return static_cast<WasmOpcode>(*pc); } 37 WasmOpcode opcode() const { return static_cast<WasmOpcode>(*pc); }
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 case kExprSetLocal: 232 case kExprSetLocal:
237 return 1; 233 return 1;
238 234
239 case kExprIf: 235 case kExprIf:
240 case kExprBrIf: 236 case kExprBrIf:
241 return 2; 237 return 2;
242 case kExprIfElse: 238 case kExprIfElse:
243 case kExprSelect: 239 case kExprSelect:
244 return 3; 240 return 3;
245 241
246 case kExprBlock: 242 case kExprBlock: {
243 BlockCountOperand operand(this, pc);
244 return operand.count;
245 }
247 case kExprLoop: { 246 case kExprLoop: {
248 BlockCountOperand operand(this, pc); 247 LoopCountOperand operand(this, pc);
249 return operand.count; 248 return operand.count;
250 } 249 }
251 250
252 case kExprCallFunction: { 251 case kExprCallFunction: {
253 FunctionIndexOperand operand(this, pc); 252 FunctionIndexOperand operand(this, pc);
254 return static_cast<int>( 253 return static_cast<int>(
255 function_env_->module->GetFunctionSignature(operand.index) 254 function_env_->module->GetFunctionSignature(operand.index)
256 ->parameter_count()); 255 ->parameter_count());
257 } 256 }
258 case kExprCallIndirect: { 257 case kExprCallIndirect: {
(...skipping 27 matching lines...) Expand all
286 int OpcodeLength(const byte* pc) { 285 int OpcodeLength(const byte* pc) {
287 switch (static_cast<WasmOpcode>(*pc)) { 286 switch (static_cast<WasmOpcode>(*pc)) {
288 #define DECLARE_OPCODE_CASE(name, opcode, sig) case kExpr##name: 287 #define DECLARE_OPCODE_CASE(name, opcode, sig) case kExpr##name:
289 FOREACH_LOAD_MEM_OPCODE(DECLARE_OPCODE_CASE) 288 FOREACH_LOAD_MEM_OPCODE(DECLARE_OPCODE_CASE)
290 FOREACH_STORE_MEM_OPCODE(DECLARE_OPCODE_CASE) 289 FOREACH_STORE_MEM_OPCODE(DECLARE_OPCODE_CASE)
291 #undef DECLARE_OPCODE_CASE 290 #undef DECLARE_OPCODE_CASE
292 { 291 {
293 MemoryAccessOperand operand(this, pc); 292 MemoryAccessOperand operand(this, pc);
294 return 1 + operand.length; 293 return 1 + operand.length;
295 } 294 }
296 case kExprBlock: 295 case kExprBlock: {
296 BlockCountOperand operand(this, pc);
297 return 1 + operand.length;
298 }
297 case kExprLoop: { 299 case kExprLoop: {
298 BlockCountOperand operand(this, pc); 300 LoopCountOperand operand(this, pc);
299 return 1 + operand.length; 301 return 1 + operand.length;
300 } 302 }
301 case kExprBr: 303 case kExprBr:
302 case kExprBrIf: { 304 case kExprBrIf: {
303 BreakDepthOperand operand(this, pc); 305 BreakDepthOperand operand(this, pc);
304 return 1 + operand.length; 306 return 1 + operand.length;
305 } 307 }
306 case kExprStoreGlobal: 308 case kExprStoreGlobal:
307 case kExprLoadGlobal: { 309 case kExprLoadGlobal: {
308 GlobalIndexOperand operand(this, pc); 310 GlobalIndexOperand operand(this, pc);
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
584 Shift(kAstEnd, operand.count); 586 Shift(kAstEnd, operand.count);
585 // The break environment is the outer environment. 587 // The break environment is the outer environment.
586 SsaEnv* break_env = ssa_env_; 588 SsaEnv* break_env = ssa_env_;
587 PushBlock(break_env); 589 PushBlock(break_env);
588 SetEnv("block:start", Steal(break_env)); 590 SetEnv("block:start", Steal(break_env));
589 } 591 }
590 len = 1 + operand.length; 592 len = 1 + operand.length;
591 break; 593 break;
592 } 594 }
593 case kExprLoop: { 595 case kExprLoop: {
594 BlockCountOperand operand(this, pc_); 596 LoopCountOperand operand(this, pc_);
595 if (operand.count < 1) { 597 if (operand.count < 1) {
596 Leaf(kAstStmt); 598 Leaf(kAstStmt);
597 } else { 599 } else {
598 Shift(kAstEnd, operand.count); 600 Shift(kAstEnd, operand.count);
599 // The break environment is the outer environment. 601 // The break environment is the outer environment.
600 SsaEnv* break_env = ssa_env_; 602 SsaEnv* break_env = ssa_env_;
601 PushBlock(break_env); 603 PushBlock(break_env);
602 SsaEnv* cont_env = Steal(break_env); 604 SsaEnv* cont_env = Steal(break_env);
603 // The continue environment is the inner environment. 605 // The continue environment is the inner environment.
604 PrepareForLoop(cont_env); 606 PrepareForLoop(cont_env);
(...skipping 1049 matching lines...) Expand 10 before | Expand all | Expand 10 after
1654 1656
1655 BitVector* AnalyzeLoopAssignmentForTesting(Zone* zone, FunctionEnv* env, 1657 BitVector* AnalyzeLoopAssignmentForTesting(Zone* zone, FunctionEnv* env,
1656 const byte* start, const byte* end) { 1658 const byte* start, const byte* end) {
1657 LoopAssignmentAnalyzer analyzer(zone, env); 1659 LoopAssignmentAnalyzer analyzer(zone, env);
1658 return analyzer.Analyze(start, end); 1660 return analyzer.Analyze(start, end);
1659 } 1661 }
1660 1662
1661 } // namespace wasm 1663 } // namespace wasm
1662 } // namespace internal 1664 } // namespace internal
1663 } // namespace v8 1665 } // namespace v8
OLDNEW
« no previous file with comments | « src/wasm/ast-decoder.h ('k') | src/wasm/decoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698