OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef V8_COMPILER_INSTRUCTION_CODES_H_ | 5 #ifndef V8_COMPILER_INSTRUCTION_CODES_H_ |
6 #define V8_COMPILER_INSTRUCTION_CODES_H_ | 6 #define V8_COMPILER_INSTRUCTION_CODES_H_ |
7 | 7 |
8 #include <iosfwd> | 8 #include <iosfwd> |
9 | 9 |
10 #if V8_TARGET_ARCH_ARM | 10 #if V8_TARGET_ARCH_ARM |
(...skipping 15 matching lines...) Expand all Loading... |
26 #else | 26 #else |
27 #define TARGET_ARCH_OPCODE_LIST(V) | 27 #define TARGET_ARCH_OPCODE_LIST(V) |
28 #define TARGET_ADDRESSING_MODE_LIST(V) | 28 #define TARGET_ADDRESSING_MODE_LIST(V) |
29 #endif | 29 #endif |
30 #include "src/utils.h" | 30 #include "src/utils.h" |
31 | 31 |
32 namespace v8 { | 32 namespace v8 { |
33 namespace internal { | 33 namespace internal { |
34 namespace compiler { | 34 namespace compiler { |
35 | 35 |
| 36 // Modes for ArchRecordWrite below. |
| 37 enum class RecordWriteMode { kValueIsMap, kValueIsPointer, kValueIsAny }; |
| 38 |
| 39 std::ostream& operator<<(std::ostream&, RecordWriteMode); |
| 40 |
| 41 |
36 // Target-specific opcodes that specify which assembly sequence to emit. | 42 // Target-specific opcodes that specify which assembly sequence to emit. |
37 // Most opcodes specify a single instruction. | 43 // Most opcodes specify a single instruction. |
38 #define ARCH_OPCODE_LIST(V) \ | 44 #define ARCH_OPCODE_LIST(V) \ |
39 V(ArchCallCodeObject) \ | 45 V(ArchCallCodeObject) \ |
40 V(ArchTailCallCodeObject) \ | 46 V(ArchTailCallCodeObject) \ |
41 V(ArchCallJSFunction) \ | 47 V(ArchCallJSFunction) \ |
42 V(ArchTailCallJSFunction) \ | 48 V(ArchTailCallJSFunction) \ |
43 V(ArchPrepareCallCFunction) \ | 49 V(ArchPrepareCallCFunction) \ |
44 V(ArchCallCFunction) \ | 50 V(ArchCallCFunction) \ |
45 V(ArchLazyBailout) \ | 51 V(ArchLazyBailout) \ |
46 V(ArchJmp) \ | 52 V(ArchJmp) \ |
47 V(ArchLookupSwitch) \ | 53 V(ArchLookupSwitch) \ |
48 V(ArchTableSwitch) \ | 54 V(ArchTableSwitch) \ |
49 V(ArchNop) \ | 55 V(ArchNop) \ |
50 V(ArchDeoptimize) \ | 56 V(ArchDeoptimize) \ |
51 V(ArchRet) \ | 57 V(ArchRet) \ |
52 V(ArchStackPointer) \ | 58 V(ArchStackPointer) \ |
53 V(ArchFramePointer) \ | 59 V(ArchFramePointer) \ |
54 V(ArchTruncateDoubleToI) \ | 60 V(ArchTruncateDoubleToI) \ |
| 61 V(ArchRecordWrite) \ |
55 V(CheckedLoadInt8) \ | 62 V(CheckedLoadInt8) \ |
56 V(CheckedLoadUint8) \ | 63 V(CheckedLoadUint8) \ |
57 V(CheckedLoadInt16) \ | 64 V(CheckedLoadInt16) \ |
58 V(CheckedLoadUint16) \ | 65 V(CheckedLoadUint16) \ |
59 V(CheckedLoadWord32) \ | 66 V(CheckedLoadWord32) \ |
60 V(CheckedLoadWord64) \ | 67 V(CheckedLoadWord64) \ |
61 V(CheckedLoadFloat32) \ | 68 V(CheckedLoadFloat32) \ |
62 V(CheckedLoadFloat64) \ | 69 V(CheckedLoadFloat64) \ |
63 V(CheckedStoreWord8) \ | 70 V(CheckedStoreWord8) \ |
64 V(CheckedStoreWord16) \ | 71 V(CheckedStoreWord16) \ |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 typedef BitField<AddressingMode, 8, 5> AddressingModeField; | 158 typedef BitField<AddressingMode, 8, 5> AddressingModeField; |
152 typedef BitField<FlagsMode, 13, 2> FlagsModeField; | 159 typedef BitField<FlagsMode, 13, 2> FlagsModeField; |
153 typedef BitField<FlagsCondition, 15, 5> FlagsConditionField; | 160 typedef BitField<FlagsCondition, 15, 5> FlagsConditionField; |
154 typedef BitField<int, 20, 12> MiscField; | 161 typedef BitField<int, 20, 12> MiscField; |
155 | 162 |
156 } // namespace compiler | 163 } // namespace compiler |
157 } // namespace internal | 164 } // namespace internal |
158 } // namespace v8 | 165 } // namespace v8 |
159 | 166 |
160 #endif // V8_COMPILER_INSTRUCTION_CODES_H_ | 167 #endif // V8_COMPILER_INSTRUCTION_CODES_H_ |
OLD | NEW |