| 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/signature.h" | 5 #include "src/signature.h" |
| 6 | 6 |
| 7 #include "src/bit-vector.h" | 7 #include "src/bit-vector.h" |
| 8 #include "src/flags.h" | 8 #include "src/flags.h" |
| 9 #include "src/handles.h" | 9 #include "src/handles.h" |
| 10 #include "src/zone-containers.h" | 10 #include "src/zone-containers.h" |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 FOREACH_SIGNATURE(DECLARE_ARITY); | 249 FOREACH_SIGNATURE(DECLARE_ARITY); |
| 250 #undef DECLARE_ARITY | 250 #undef DECLARE_ARITY |
| 251 | 251 |
| 252 switch (static_cast<WasmOpcode>(*pc)) { | 252 switch (static_cast<WasmOpcode>(*pc)) { |
| 253 case kExprI8Const: | 253 case kExprI8Const: |
| 254 case kExprI32Const: | 254 case kExprI32Const: |
| 255 case kExprI64Const: | 255 case kExprI64Const: |
| 256 case kExprF64Const: | 256 case kExprF64Const: |
| 257 case kExprF32Const: | 257 case kExprF32Const: |
| 258 case kExprGetLocal: | 258 case kExprGetLocal: |
| 259 case kExprLoadGlobal: | 259 case kExprGetGlobal: |
| 260 case kExprNop: | 260 case kExprNop: |
| 261 case kExprUnreachable: | 261 case kExprUnreachable: |
| 262 case kExprEnd: | 262 case kExprEnd: |
| 263 case kExprBlock: | 263 case kExprBlock: |
| 264 case kExprLoop: | 264 case kExprLoop: |
| 265 return 0; | 265 return 0; |
| 266 | 266 |
| 267 case kExprStoreGlobal: | 267 case kExprSetGlobal: |
| 268 case kExprSetLocal: | 268 case kExprSetLocal: |
| 269 case kExprElse: | 269 case kExprElse: |
| 270 return 1; | 270 return 1; |
| 271 | 271 |
| 272 case kExprBr: { | 272 case kExprBr: { |
| 273 BreakDepthOperand operand(this, pc); | 273 BreakDepthOperand operand(this, pc); |
| 274 return operand.arity; | 274 return operand.arity; |
| 275 } | 275 } |
| 276 case kExprBrIf: { | 276 case kExprBrIf: { |
| 277 BreakDepthOperand operand(this, pc); | 277 BreakDepthOperand operand(this, pc); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 #undef DECLARE_OPCODE_CASE | 332 #undef DECLARE_OPCODE_CASE |
| 333 { | 333 { |
| 334 MemoryAccessOperand operand(this, pc); | 334 MemoryAccessOperand operand(this, pc); |
| 335 return 1 + operand.length; | 335 return 1 + operand.length; |
| 336 } | 336 } |
| 337 case kExprBr: | 337 case kExprBr: |
| 338 case kExprBrIf: { | 338 case kExprBrIf: { |
| 339 BreakDepthOperand operand(this, pc); | 339 BreakDepthOperand operand(this, pc); |
| 340 return 1 + operand.length; | 340 return 1 + operand.length; |
| 341 } | 341 } |
| 342 case kExprStoreGlobal: | 342 case kExprSetGlobal: |
| 343 case kExprLoadGlobal: { | 343 case kExprGetGlobal: { |
| 344 GlobalIndexOperand operand(this, pc); | 344 GlobalIndexOperand operand(this, pc); |
| 345 return 1 + operand.length; | 345 return 1 + operand.length; |
| 346 } | 346 } |
| 347 | 347 |
| 348 case kExprCallFunction: { | 348 case kExprCallFunction: { |
| 349 CallFunctionOperand operand(this, pc); | 349 CallFunctionOperand operand(this, pc); |
| 350 return 1 + operand.length; | 350 return 1 + operand.length; |
| 351 } | 351 } |
| 352 case kExprCallIndirect: { | 352 case kExprCallIndirect: { |
| 353 CallIndirectOperand operand(this, pc); | 353 CallIndirectOperand operand(this, pc); |
| (...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 884 case kExprSetLocal: { | 884 case kExprSetLocal: { |
| 885 LocalIndexOperand operand(this, pc_); | 885 LocalIndexOperand operand(this, pc_); |
| 886 if (Validate(pc_, operand)) { | 886 if (Validate(pc_, operand)) { |
| 887 Value val = Pop(0, local_type_vec_[operand.index]); | 887 Value val = Pop(0, local_type_vec_[operand.index]); |
| 888 if (ssa_env_->locals) ssa_env_->locals[operand.index] = val.node; | 888 if (ssa_env_->locals) ssa_env_->locals[operand.index] = val.node; |
| 889 Push(val.type, val.node); | 889 Push(val.type, val.node); |
| 890 } | 890 } |
| 891 len = 1 + operand.length; | 891 len = 1 + operand.length; |
| 892 break; | 892 break; |
| 893 } | 893 } |
| 894 case kExprLoadGlobal: { | 894 case kExprGetGlobal: { |
| 895 GlobalIndexOperand operand(this, pc_); | 895 GlobalIndexOperand operand(this, pc_); |
| 896 if (Validate(pc_, operand)) { | 896 if (Validate(pc_, operand)) { |
| 897 Push(operand.type, BUILD(LoadGlobal, operand.index)); | 897 Push(operand.type, BUILD(GetGlobal, operand.index)); |
| 898 } | 898 } |
| 899 len = 1 + operand.length; | 899 len = 1 + operand.length; |
| 900 break; | 900 break; |
| 901 } | 901 } |
| 902 case kExprStoreGlobal: { | 902 case kExprSetGlobal: { |
| 903 GlobalIndexOperand operand(this, pc_); | 903 GlobalIndexOperand operand(this, pc_); |
| 904 if (Validate(pc_, operand)) { | 904 if (Validate(pc_, operand)) { |
| 905 Value val = Pop(0, operand.type); | 905 Value val = Pop(0, operand.type); |
| 906 BUILD(StoreGlobal, operand.index, val.node); | 906 BUILD(SetGlobal, operand.index, val.node); |
| 907 Push(val.type, val.node); | 907 Push(val.type, val.node); |
| 908 } | 908 } |
| 909 len = 1 + operand.length; | 909 len = 1 + operand.length; |
| 910 break; | 910 break; |
| 911 } | 911 } |
| 912 case kExprI32LoadMem8S: | 912 case kExprI32LoadMem8S: |
| 913 len = DecodeLoadMem(kAstI32, MachineType::Int8()); | 913 len = DecodeLoadMem(kAstI32, MachineType::Int8()); |
| 914 break; | 914 break; |
| 915 case kExprI32LoadMem8U: | 915 case kExprI32LoadMem8U: |
| 916 len = DecodeLoadMem(kAstI32, MachineType::Uint8()); | 916 len = DecodeLoadMem(kAstI32, MachineType::Uint8()); |
| (...skipping 785 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1702 BitVector* AnalyzeLoopAssignmentForTesting(Zone* zone, size_t num_locals, | 1702 BitVector* AnalyzeLoopAssignmentForTesting(Zone* zone, size_t num_locals, |
| 1703 const byte* start, const byte* end) { | 1703 const byte* start, const byte* end) { |
| 1704 FunctionBody body = {nullptr, nullptr, nullptr, start, end}; | 1704 FunctionBody body = {nullptr, nullptr, nullptr, start, end}; |
| 1705 WasmFullDecoder decoder(zone, nullptr, body); | 1705 WasmFullDecoder decoder(zone, nullptr, body); |
| 1706 return decoder.AnalyzeLoopAssignmentForTesting(start, num_locals); | 1706 return decoder.AnalyzeLoopAssignmentForTesting(start, num_locals); |
| 1707 } | 1707 } |
| 1708 | 1708 |
| 1709 } // namespace wasm | 1709 } // namespace wasm |
| 1710 } // namespace internal | 1710 } // namespace internal |
| 1711 } // namespace v8 | 1711 } // namespace v8 |
| OLD | NEW |