| 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_; }
|
|
|