| OLD | NEW |
| 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
| 2 // All Rights Reserved. | 2 // All Rights Reserved. |
| 3 // | 3 // |
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
| 5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
| 6 // met: | 6 // met: |
| 7 // | 7 // |
| 8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
| 9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
| 10 // | 10 // |
| (...skipping 1087 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1098 intptr_t pc_delta); | 1098 intptr_t pc_delta); |
| 1099 | 1099 |
| 1100 // Writes a single byte or word of data in the code stream. Used for | 1100 // Writes a single byte or word of data in the code stream. Used for |
| 1101 // inline tables, e.g., jump-tables. | 1101 // inline tables, e.g., jump-tables. |
| 1102 void db(uint8_t data); | 1102 void db(uint8_t data); |
| 1103 void dd(uint32_t data); | 1103 void dd(uint32_t data); |
| 1104 void dq(uint64_t data); | 1104 void dq(uint64_t data); |
| 1105 void dp(uintptr_t data) { dq(data); } | 1105 void dp(uintptr_t data) { dq(data); } |
| 1106 void dd(Label* label); | 1106 void dd(Label* label); |
| 1107 | 1107 |
| 1108 // Emits the address of the code stub's first instruction. | |
| 1109 void emit_code_stub_address(Code* stub); | |
| 1110 | |
| 1111 PositionsRecorder* positions_recorder() { return &positions_recorder_; } | 1108 PositionsRecorder* positions_recorder() { return &positions_recorder_; } |
| 1112 | 1109 |
| 1113 // Postpone the generation of the trampoline pool for the specified number of | 1110 // Postpone the generation of the trampoline pool for the specified number of |
| 1114 // instructions. | 1111 // instructions. |
| 1115 void BlockTrampolinePoolFor(int instructions); | 1112 void BlockTrampolinePoolFor(int instructions); |
| 1116 | 1113 |
| 1117 // Check if there is less than kGap bytes available in the buffer. | 1114 // Check if there is less than kGap bytes available in the buffer. |
| 1118 // If this is the case, we need to grow the buffer before emitting | 1115 // If this is the case, we need to grow the buffer before emitting |
| 1119 // an instruction or relocation information. | 1116 // an instruction or relocation information. |
| 1120 inline bool overflow() const { return pc_ >= reloc_info_writer.pos() - kGap; } | 1117 inline bool overflow() const { return pc_ >= reloc_info_writer.pos() - kGap; } |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1322 | 1319 |
| 1323 // Readable constants for compact branch handling in emit() | 1320 // Readable constants for compact branch handling in emit() |
| 1324 enum class CompactBranchType : bool { NO = false, COMPACT_BRANCH = true }; | 1321 enum class CompactBranchType : bool { NO = false, COMPACT_BRANCH = true }; |
| 1325 | 1322 |
| 1326 // Code emission. | 1323 // Code emission. |
| 1327 inline void CheckBuffer(); | 1324 inline void CheckBuffer(); |
| 1328 void GrowBuffer(); | 1325 void GrowBuffer(); |
| 1329 inline void emit(Instr x, | 1326 inline void emit(Instr x, |
| 1330 CompactBranchType is_compact_branch = CompactBranchType::NO); | 1327 CompactBranchType is_compact_branch = CompactBranchType::NO); |
| 1331 inline void emit(uint64_t x); | 1328 inline void emit(uint64_t x); |
| 1329 inline void CheckForEmitInForbiddenSlot(); |
| 1330 template <typename T> |
| 1331 inline void EmitHelper(T x); |
| 1332 inline void EmitHelper(Instr x, CompactBranchType is_compact_branch); |
| 1332 | 1333 |
| 1333 // Instruction generation. | 1334 // Instruction generation. |
| 1334 // We have 3 different kind of encoding layout on MIPS. | 1335 // We have 3 different kind of encoding layout on MIPS. |
| 1335 // However due to many different types of objects encoded in the same fields | 1336 // However due to many different types of objects encoded in the same fields |
| 1336 // we have quite a few aliases for each mode. | 1337 // we have quite a few aliases for each mode. |
| 1337 // Using the same structure to refer to Register and FPURegister would spare a | 1338 // Using the same structure to refer to Register and FPURegister would spare a |
| 1338 // few aliases, but mixing both does not look clean to me. | 1339 // few aliases, but mixing both does not look clean to me. |
| 1339 // Anyway we could surely implement this differently. | 1340 // Anyway we could surely implement this differently. |
| 1340 | 1341 |
| 1341 void GenInstrRegister(Opcode opcode, | 1342 void GenInstrRegister(Opcode opcode, |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1498 public: | 1499 public: |
| 1499 explicit EnsureSpace(Assembler* assembler) { | 1500 explicit EnsureSpace(Assembler* assembler) { |
| 1500 assembler->CheckBuffer(); | 1501 assembler->CheckBuffer(); |
| 1501 } | 1502 } |
| 1502 }; | 1503 }; |
| 1503 | 1504 |
| 1504 } // namespace internal | 1505 } // namespace internal |
| 1505 } // namespace v8 | 1506 } // namespace v8 |
| 1506 | 1507 |
| 1507 #endif // V8_ARM_ASSEMBLER_MIPS_H_ | 1508 #endif // V8_ARM_ASSEMBLER_MIPS_H_ |
| OLD | NEW |