Chromium Code Reviews| Index: src/debug/debug.h |
| diff --git a/src/debug/debug.h b/src/debug/debug.h |
| index b3bb3c46a64cfa2d673f69c4bac9b6dc5809aaeb..4d41f69112d229f2fbf097da4741f9299a7c2bbe 100644 |
| --- a/src/debug/debug.h |
| +++ b/src/debug/debug.h |
| @@ -426,7 +426,6 @@ class Debug { |
| // Internal logic |
| bool Load(); |
| void Break(JavaScriptFrame* frame); |
| - void SetAfterBreakTarget(JavaScriptFrame* frame); |
| // Scripts handling. |
| Handle<FixedArray> GetLoadedScripts(); |
| @@ -494,8 +493,7 @@ class Debug { |
| bool IsBreakAtReturn(JavaScriptFrame* frame); |
| // Support for LiveEdit |
| - void FramesHaveBeenDropped(StackFrame::Id new_break_frame_id, |
| - LiveEditFrameDropMode mode); |
| + void UpdateBreakFrameId(); |
| // Threading support. |
| char* ArchiveDebug(char* to); |
| @@ -538,10 +536,8 @@ class Debug { |
| StackFrame::Id break_frame_id() { return thread_local_.break_frame_id_; } |
| int break_id() { return thread_local_.break_id_; } |
| - Handle<Object> return_value() { return thread_local_.return_value_; } |
| - void set_return_value(Handle<Object> value) { |
| - thread_local_.return_value_ = value; |
| - } |
| + Object* return_value() { return thread_local_.return_value_; } |
| + void set_return_value(Object* value) { thread_local_.return_value_ = value; } |
| // Support for embedding into generated code. |
| Address is_active_address() { |
| @@ -552,10 +548,6 @@ class Debug { |
| return reinterpret_cast<Address>(&hook_on_function_call_); |
| } |
| - Address after_break_target_address() { |
| - return reinterpret_cast<Address>(&after_break_target_); |
| - } |
| - |
| Address last_step_action_address() { |
| return reinterpret_cast<Address>(&thread_local_.last_step_action_); |
| } |
| @@ -564,6 +556,15 @@ class Debug { |
| return reinterpret_cast<Address>(&thread_local_.suspended_generator_); |
| } |
| + Address new_fp_address() { |
| + return reinterpret_cast<Address>(&thread_local_.new_fp_); |
| + } |
| + |
| + void DropToFP(Address fp) { |
| + // Drop to a lower a frame. |
|
jgruber
2017/01/17 13:29:58
Nit: 'a lower a'.
A diagram or brief description
Yang
2017/01/18 07:49:08
Done. Added comment.
|
| + if (fp > thread_local_.new_fp_) thread_local_.new_fp_ = fp; |
| + } |
| + |
| StepAction last_step_action() { return thread_local_.last_step_action_; } |
| DebugFeatureTracker* feature_tracker() { return &feature_tracker_; } |
| @@ -697,11 +698,6 @@ class Debug { |
| // List of active debug info objects. |
| DebugInfoListNode* debug_info_list_; |
| - // Storage location for jump when exiting debug break calls. |
| - // Note that this address is not GC safe. It should be computed immediately |
| - // before returning to the DebugBreakCallHelper. |
| - Address after_break_target_; |
| - |
| // Used to collect histogram data on debugger feature usage. |
| DebugFeatureTracker feature_tracker_; |
| @@ -738,10 +734,14 @@ class Debug { |
| // Value of accumulator in interpreter frames. In non-interpreter frames |
| // this value will be the hole. |
|
jgruber
2017/01/17 13:29:58
Is the comment about the hole still valid?
Yang
2017/01/18 07:49:07
Done.
|
| - Handle<Object> return_value_; |
| + Object* return_value_; |
| + // The suspended generator object to track when stepping. |
| Object* suspended_generator_; |
| + // The new frame pointer to drop to when restarting a frame. |
| + Address new_fp_; |
|
jgruber
2017/01/17 13:29:58
Nit: 'new_fp_' isn't very descriptive, maybe somet
Yang
2017/01/18 07:49:08
renamed to restart_fp_
|
| + |
| int async_task_count_; |
| }; |
| @@ -858,15 +858,10 @@ class DebugCodegen : public AllStatic { |
| static void GenerateDebugBreakStub(MacroAssembler* masm, |
| DebugBreakCallHelperMode mode); |
| - // FrameDropper is a code replacement for a JavaScript frame with possibly |
| - // several frames above. |
| - // There is no calling conventions here, because it never actually gets |
| - // called, it only gets returned to. |
| - static void GenerateFrameDropperLiveEdit(MacroAssembler* masm); |
| - |
| - |
| static void GenerateSlot(MacroAssembler* masm, RelocInfo::Mode mode); |
| + static void GenerateFrameDropperTrampoline(MacroAssembler* masm); |
| + |
| static void PatchDebugBreakSlot(Isolate* isolate, Address pc, |
| Handle<Code> code); |
| static bool DebugBreakSlotIsPatched(Address pc); |