Index: src/arm/assembler-arm.h |
=================================================================== |
--- src/arm/assembler-arm.h (revision 4816) |
+++ src/arm/assembler-arm.h (working copy) |
@@ -629,22 +629,39 @@ |
// Distance between start of patched return sequence and the emitted address |
// to jump to. |
#ifdef USE_BLX |
- // Return sequence is: |
+ // Patched return sequence is: |
// ldr ip, [pc, #0] @ emited address and start |
// blx ip |
static const int kPatchReturnSequenceAddressOffset = 0 * kInstrSize; |
#else |
- // Return sequence is: |
+ // Patched return sequence is: |
// mov lr, pc @ start of sequence |
// ldr pc, [pc, #-4] @ emited address |
static const int kPatchReturnSequenceAddressOffset = kInstrSize; |
#endif |
+ // Distance between start of patched debug break slot and the emitted address |
+ // to jump to. |
+#ifdef USE_BLX |
+ // Patched debug break slot code is: |
+ // ldr ip, [pc, #0] @ emited address and start |
+ // blx ip |
+ static const int kPatchDebugBreakSlotAddressOffset = 0 * kInstrSize; |
+#else |
+ // Patched debug break slot code is: |
+ // mov lr, pc @ start of sequence |
+ // ldr pc, [pc, #-4] @ emited address |
+ static const int kPatchDebugBreakSlotAddressOffset = kInstrSize; |
+#endif |
+ |
// Difference between address of current opcode and value read from pc |
// register. |
static const int kPcLoadDelta = 8; |
- static const int kJSReturnSequenceLength = 4; |
+ static const int kJSReturnSequenceInstructions = 4; |
+ static const int kDebugBreakSlotInstructions = 3; |
+ static const int kDebugBreakSlotLength = |
+ kDebugBreakSlotInstructions * kInstrSize; |
// --------------------------------------------------------------------------- |
// Code generation |
@@ -981,13 +998,16 @@ |
// Mark address of the ExitJSFrame code. |
void RecordJSReturn(); |
+ // Mark address of a debug break slot. |
+ void RecordDebugBreakSlot(); |
+ |
// Record a comment relocation entry that can be used by a disassembler. |
// Use --debug_code to enable. |
void RecordComment(const char* msg); |
void RecordPosition(int pos); |
void RecordStatementPosition(int pos); |
- void WriteRecordedPositions(); |
+ bool WriteRecordedPositions(); |
int pc_offset() const { return pc_ - buffer_; } |
int current_position() const { return current_position_; } |