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 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 } | 303 } |
304 | 304 |
305 #define DECLARE_OPCODE_CASE(name, opcode, sig) \ | 305 #define DECLARE_OPCODE_CASE(name, opcode, sig) \ |
306 case kExpr##name: \ | 306 case kExpr##name: \ |
307 return kArity_##sig; | 307 return kArity_##sig; |
308 | 308 |
309 FOREACH_LOAD_MEM_OPCODE(DECLARE_OPCODE_CASE) | 309 FOREACH_LOAD_MEM_OPCODE(DECLARE_OPCODE_CASE) |
310 FOREACH_STORE_MEM_OPCODE(DECLARE_OPCODE_CASE) | 310 FOREACH_STORE_MEM_OPCODE(DECLARE_OPCODE_CASE) |
311 FOREACH_MISC_MEM_OPCODE(DECLARE_OPCODE_CASE) | 311 FOREACH_MISC_MEM_OPCODE(DECLARE_OPCODE_CASE) |
312 FOREACH_SIMPLE_OPCODE(DECLARE_OPCODE_CASE) | 312 FOREACH_SIMPLE_OPCODE(DECLARE_OPCODE_CASE) |
| 313 FOREACH_SIMPLE_MEM_OPCODE(DECLARE_OPCODE_CASE) |
313 FOREACH_ASMJS_COMPAT_OPCODE(DECLARE_OPCODE_CASE) | 314 FOREACH_ASMJS_COMPAT_OPCODE(DECLARE_OPCODE_CASE) |
314 FOREACH_SIMD_OPCODE(DECLARE_OPCODE_CASE) | 315 FOREACH_SIMD_OPCODE(DECLARE_OPCODE_CASE) |
315 #undef DECLARE_OPCODE_CASE | 316 #undef DECLARE_OPCODE_CASE |
316 default: | 317 default: |
317 UNREACHABLE(); | 318 UNREACHABLE(); |
318 return 0; | 319 return 0; |
319 } | 320 } |
320 } | 321 } |
321 | 322 |
322 int OpcodeLength(const byte* pc) { | 323 int OpcodeLength(const byte* pc) { |
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
968 case kExprF32StoreMem: | 969 case kExprF32StoreMem: |
969 len = DecodeStoreMem(kAstF32, MachineType::Float32()); | 970 len = DecodeStoreMem(kAstF32, MachineType::Float32()); |
970 break; | 971 break; |
971 case kExprF64StoreMem: | 972 case kExprF64StoreMem: |
972 len = DecodeStoreMem(kAstF64, MachineType::Float64()); | 973 len = DecodeStoreMem(kAstF64, MachineType::Float64()); |
973 break; | 974 break; |
974 | 975 |
975 case kExprMemorySize: | 976 case kExprMemorySize: |
976 Push(kAstI32, BUILD(MemSize, 0)); | 977 Push(kAstI32, BUILD(MemSize, 0)); |
977 break; | 978 break; |
978 case kExprGrowMemory: { | |
979 Value val = Pop(0, kAstI32); | |
980 USE(val); // TODO(titzer): build node for grow memory | |
981 Push(kAstI32, BUILD(Int32Constant, 0)); | |
982 break; | |
983 } | |
984 case kExprCallFunction: { | 979 case kExprCallFunction: { |
985 CallFunctionOperand operand(this, pc_); | 980 CallFunctionOperand operand(this, pc_); |
986 if (Validate(pc_, operand)) { | 981 if (Validate(pc_, operand)) { |
987 TFNode** buffer = PopArgs(operand.sig); | 982 TFNode** buffer = PopArgs(operand.sig); |
988 TFNode* call = | 983 TFNode* call = |
989 BUILD(CallDirect, operand.index, buffer, position()); | 984 BUILD(CallDirect, operand.index, buffer, position()); |
990 Push(GetReturnType(operand.sig), call); | 985 Push(GetReturnType(operand.sig), call); |
991 } | 986 } |
992 len = 1 + operand.length; | 987 len = 1 + operand.length; |
993 break; | 988 break; |
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1648 BitVector* AnalyzeLoopAssignmentForTesting(Zone* zone, size_t num_locals, | 1643 BitVector* AnalyzeLoopAssignmentForTesting(Zone* zone, size_t num_locals, |
1649 const byte* start, const byte* end) { | 1644 const byte* start, const byte* end) { |
1650 FunctionBody body = {nullptr, nullptr, nullptr, start, end}; | 1645 FunctionBody body = {nullptr, nullptr, nullptr, start, end}; |
1651 SR_WasmDecoder decoder(zone, nullptr, body); | 1646 SR_WasmDecoder decoder(zone, nullptr, body); |
1652 return decoder.AnalyzeLoopAssignmentForTesting(start, num_locals); | 1647 return decoder.AnalyzeLoopAssignmentForTesting(start, num_locals); |
1653 } | 1648 } |
1654 | 1649 |
1655 } // namespace wasm | 1650 } // namespace wasm |
1656 } // namespace internal | 1651 } // namespace internal |
1657 } // namespace v8 | 1652 } // namespace v8 |
OLD | NEW |