OLD | NEW |
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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/wasm/asm-wasm-builder.h" | 7 #include "src/wasm/asm-wasm-builder.h" |
8 #include "src/wasm/wasm-macro-gen.h" | 8 #include "src/wasm/wasm-macro-gen.h" |
9 #include "src/wasm/wasm-opcodes.h" | 9 #include "src/wasm/wasm-opcodes.h" |
10 | 10 |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 if (stmt->statements()->length() == 1) { | 103 if (stmt->statements()->length() == 1) { |
104 ExpressionStatement* expr = | 104 ExpressionStatement* expr = |
105 stmt->statements()->at(0)->AsExpressionStatement(); | 105 stmt->statements()->at(0)->AsExpressionStatement(); |
106 if (expr != nullptr) { | 106 if (expr != nullptr) { |
107 if (expr->expression()->IsAssignment()) { | 107 if (expr->expression()->IsAssignment()) { |
108 RECURSE(VisitExpressionStatement(expr)); | 108 RECURSE(VisitExpressionStatement(expr)); |
109 return; | 109 return; |
110 } | 110 } |
111 } | 111 } |
112 } | 112 } |
113 DCHECK(in_function_); | 113 if (in_function_) { |
114 BlockVisitor visitor(this, stmt->AsBreakableStatement(), kExprBlock, false, | 114 BlockVisitor visitor(this, stmt->AsBreakableStatement(), kExprBlock, |
115 static_cast<byte>(stmt->statements()->length())); | 115 false, |
116 RECURSE(VisitStatements(stmt->statements())); | 116 static_cast<byte>(stmt->statements()->length())); |
117 DCHECK(block_size_ >= 0); | 117 RECURSE(VisitStatements(stmt->statements())); |
| 118 DCHECK(block_size_ >= 0); |
| 119 } else { |
| 120 RECURSE(VisitStatements(stmt->statements())); |
| 121 } |
118 } | 122 } |
119 | 123 |
120 class BlockVisitor { | 124 class BlockVisitor { |
121 private: | 125 private: |
122 int prev_block_size_; | 126 int prev_block_size_; |
123 uint32_t index_; | 127 uint32_t index_; |
124 AsmWasmBuilderImpl* builder_; | 128 AsmWasmBuilderImpl* builder_; |
125 | 129 |
126 public: | 130 public: |
127 BlockVisitor(AsmWasmBuilderImpl* builder, BreakableStatement* stmt, | 131 BlockVisitor(AsmWasmBuilderImpl* builder, BreakableStatement* stmt, |
(...skipping 1156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1284 // that zone in constructor may be thrown away once wasm module is written. | 1288 // that zone in constructor may be thrown away once wasm module is written. |
1285 WasmModuleIndex* AsmWasmBuilder::Run() { | 1289 WasmModuleIndex* AsmWasmBuilder::Run() { |
1286 AsmWasmBuilderImpl impl(isolate_, zone_, literal_, foreign_); | 1290 AsmWasmBuilderImpl impl(isolate_, zone_, literal_, foreign_); |
1287 impl.Compile(); | 1291 impl.Compile(); |
1288 WasmModuleWriter* writer = impl.builder_->Build(zone_); | 1292 WasmModuleWriter* writer = impl.builder_->Build(zone_); |
1289 return writer->WriteTo(zone_); | 1293 return writer->WriteTo(zone_); |
1290 } | 1294 } |
1291 } // namespace wasm | 1295 } // namespace wasm |
1292 } // namespace internal | 1296 } // namespace internal |
1293 } // namespace v8 | 1297 } // namespace v8 |
OLD | NEW |