Index: src/debug.h |
=================================================================== |
--- src/debug.h (revision 4816) |
+++ src/debug.h (working copy) |
@@ -146,6 +146,11 @@ |
void SetDebugBreakAtReturn(); |
void ClearDebugBreakAtReturn(); |
+ bool IsDebugBreakSlot(); |
+ bool IsDebugBreakAtSlot(); |
+ void SetDebugBreakAtSlot(); |
+ void ClearDebugBreakAtSlot(); |
+ |
DISALLOW_COPY_AND_ASSIGN(BreakLocationIterator); |
}; |
@@ -323,6 +328,7 @@ |
enum AddressId { |
k_after_break_target_address, |
k_debug_break_return_address, |
+ k_debug_break_slot_address, |
k_register_address |
}; |
@@ -342,6 +348,12 @@ |
return &debug_break_return_; |
} |
+ // Access to the debug break in debug break slot code. |
+ static Code* debug_break_slot() { return debug_break_slot_; } |
+ static Code** debug_break_slot_address() { |
+ return &debug_break_slot_; |
+ } |
+ |
static const int kEstimatedNofDebugInfoEntries = 16; |
static const int kEstimatedNofBreakPointsInFunction = 16; |
@@ -370,6 +382,7 @@ |
static void AfterGarbageCollection(); |
// Code generator routines. |
+ static void GenerateSlot(MacroAssembler* masm); |
static void GenerateLoadICDebugBreak(MacroAssembler* masm); |
static void GenerateStoreICDebugBreak(MacroAssembler* masm); |
static void GenerateKeyedLoadICDebugBreak(MacroAssembler* masm); |
@@ -377,6 +390,7 @@ |
static void GenerateConstructCallDebugBreak(MacroAssembler* masm); |
static void GenerateReturnDebugBreak(MacroAssembler* masm); |
static void GenerateStubNoRegistersDebugBreak(MacroAssembler* masm); |
+ static void GenerateSlotDebugBreak(MacroAssembler* masm); |
static void GeneratePlainReturnLiveEdit(MacroAssembler* masm); |
static void GenerateFrameDropperLiveEdit(MacroAssembler* masm); |
@@ -472,6 +486,9 @@ |
// Code to call for handling debug break on return. |
static Code* debug_break_return_; |
+ // Code to call for handling debug break in debug break slots. |
+ static Code* debug_break_slot_; |
+ |
DISALLOW_COPY_AND_ASSIGN(Debug); |
}; |
@@ -895,6 +912,8 @@ |
return reinterpret_cast<Address>(Debug::after_break_target_address()); |
case Debug::k_debug_break_return_address: |
return reinterpret_cast<Address>(Debug::debug_break_return_address()); |
+ case Debug::k_debug_break_slot_address: |
+ return reinterpret_cast<Address>(Debug::debug_break_slot_address()); |
case Debug::k_register_address: |
return reinterpret_cast<Address>(Debug::register_address(reg_)); |
default: |