OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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_ARM64_ASSEMBLER_ARM64_H_ | 5 #ifndef V8_ARM64_ASSEMBLER_ARM64_H_ |
6 #define V8_ARM64_ASSEMBLER_ARM64_H_ | 6 #define V8_ARM64_ASSEMBLER_ARM64_H_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <map> | 9 #include <map> |
10 | 10 |
(...skipping 851 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
862 | 862 |
863 // Number of instructions generated for the return sequence in | 863 // Number of instructions generated for the return sequence in |
864 // FullCodeGenerator::EmitReturnSequence. | 864 // FullCodeGenerator::EmitReturnSequence. |
865 static const int kJSRetSequenceInstructions = 7; | 865 static const int kJSRetSequenceInstructions = 7; |
866 // Distance between start of patched return sequence and the emitted address | 866 // Distance between start of patched return sequence and the emitted address |
867 // to jump to. | 867 // to jump to. |
868 static const int kPatchReturnSequenceAddressOffset = 0; | 868 static const int kPatchReturnSequenceAddressOffset = 0; |
869 static const int kPatchDebugBreakSlotAddressOffset = 0; | 869 static const int kPatchDebugBreakSlotAddressOffset = 0; |
870 | 870 |
871 // Number of instructions necessary to be able to later patch it to a call. | 871 // Number of instructions necessary to be able to later patch it to a call. |
872 // See Debug::GenerateSlot() and BreakLocationIterator::SetDebugBreakAtSlot(). | 872 // See DebugCodegen::GenerateSlot() and |
| 873 // BreakLocationIterator::SetDebugBreakAtSlot(). |
873 static const int kDebugBreakSlotInstructions = 4; | 874 static const int kDebugBreakSlotInstructions = 4; |
874 static const int kDebugBreakSlotLength = | 875 static const int kDebugBreakSlotLength = |
875 kDebugBreakSlotInstructions * kInstructionSize; | 876 kDebugBreakSlotInstructions * kInstructionSize; |
876 | 877 |
877 static const int kPatchDebugBreakSlotReturnOffset = 2 * kInstructionSize; | 878 static const int kPatchDebugBreakSlotReturnOffset = 2 * kInstructionSize; |
878 | 879 |
879 // Prevent contant pool emission until EndBlockConstPool is called. | 880 // Prevent contant pool emission until EndBlockConstPool is called. |
880 // Call to this function can be nested but must be followed by an equal | 881 // Call to this function can be nested but must be followed by an equal |
881 // number of call to EndBlockConstpool. | 882 // number of call to EndBlockConstpool. |
882 void StartBlockConstPool(); | 883 void StartBlockConstPool(); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
928 void RecordDebugBreakSlot(); | 929 void RecordDebugBreakSlot(); |
929 | 930 |
930 // Record the emission of a constant pool. | 931 // Record the emission of a constant pool. |
931 // | 932 // |
932 // The emission of constant and veneer pools depends on the size of the code | 933 // The emission of constant and veneer pools depends on the size of the code |
933 // generated and the number of RelocInfo recorded. | 934 // generated and the number of RelocInfo recorded. |
934 // The Debug mechanism needs to map code offsets between two versions of a | 935 // The Debug mechanism needs to map code offsets between two versions of a |
935 // function, compiled with and without debugger support (see for example | 936 // function, compiled with and without debugger support (see for example |
936 // Debug::PrepareForBreakPoints()). | 937 // Debug::PrepareForBreakPoints()). |
937 // Compiling functions with debugger support generates additional code | 938 // Compiling functions with debugger support generates additional code |
938 // (Debug::GenerateSlot()). This may affect the emission of the pools and | 939 // (DebugCodegen::GenerateSlot()). This may affect the emission of the pools |
939 // cause the version of the code with debugger support to have pools generated | 940 // and cause the version of the code with debugger support to have pools |
940 // in different places. | 941 // generated in different places. |
941 // Recording the position and size of emitted pools allows to correctly | 942 // Recording the position and size of emitted pools allows to correctly |
942 // compute the offset mappings between the different versions of a function in | 943 // compute the offset mappings between the different versions of a function in |
943 // all situations. | 944 // all situations. |
944 // | 945 // |
945 // The parameter indicates the size of the pool (in bytes), including | 946 // The parameter indicates the size of the pool (in bytes), including |
946 // the marker and branch over the data. | 947 // the marker and branch over the data. |
947 void RecordConstPool(int size); | 948 void RecordConstPool(int size); |
948 | 949 |
949 | 950 |
950 // Instruction set functions ------------------------------------------------ | 951 // Instruction set functions ------------------------------------------------ |
(...skipping 1286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2237 class EnsureSpace BASE_EMBEDDED { | 2238 class EnsureSpace BASE_EMBEDDED { |
2238 public: | 2239 public: |
2239 explicit EnsureSpace(Assembler* assembler) { | 2240 explicit EnsureSpace(Assembler* assembler) { |
2240 assembler->CheckBufferSpace(); | 2241 assembler->CheckBufferSpace(); |
2241 } | 2242 } |
2242 }; | 2243 }; |
2243 | 2244 |
2244 } } // namespace v8::internal | 2245 } } // namespace v8::internal |
2245 | 2246 |
2246 #endif // V8_ARM64_ASSEMBLER_ARM64_H_ | 2247 #endif // V8_ARM64_ASSEMBLER_ARM64_H_ |
OLD | NEW |