| Index: src/debug/liveedit.cc
|
| diff --git a/src/debug/liveedit.cc b/src/debug/liveedit.cc
|
| index d192b755d72c551fb08e4043f824347f64355868..f1f3f2391a60403c0107af3d5257b79a92c4295d 100644
|
| --- a/src/debug/liveedit.cc
|
| +++ b/src/debug/liveedit.cc
|
| @@ -811,10 +811,6 @@ bool LiveEdit::SetAfterBreakTarget(Debug* debug) {
|
| switch (debug->thread_local_.frame_drop_mode_) {
|
| case FRAMES_UNTOUCHED:
|
| return false;
|
| - case FRAME_DROPPED_IN_IC_CALL:
|
| - // We must have been calling IC stub. Do not go there anymore.
|
| - code = isolate->builtins()->builtin(Builtins::kPlainReturn_LiveEdit);
|
| - break;
|
| case FRAME_DROPPED_IN_DEBUG_SLOT_CALL:
|
| // Debug break slot stub does not return normally, instead it manually
|
| // cleans the stack and jumps. We should patch the jump address.
|
| @@ -1491,17 +1487,13 @@ static bool FixTryCatchHandler(StackFrame* top_frame,
|
| // a. successful work of frame dropper code which eventually gets control,
|
| // b. being compatible with regular stack structure for various stack
|
| // iterators.
|
| -// Returns address of stack allocated pointer to restarted function,
|
| -// the value that is called 'restarter_frame_function_pointer'. The value
|
| -// at this address (possibly updated by GC) may be used later when preparing
|
| -// 'step in' operation.
|
| // Frame structure (conforms InternalFrame structure):
|
| // -- code
|
| // -- SMI maker
|
| // -- function (slot is called "context")
|
| // -- frame base
|
| -static Object** SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
|
| - Handle<Code> code) {
|
| +static void SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
|
| + Handle<Code> code) {
|
| DCHECK(bottom_js_frame->is_java_script());
|
|
|
| Address fp = bottom_js_frame->fp();
|
| @@ -1513,9 +1505,6 @@ static Object** SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
|
| Memory::Object_at(fp + InternalFrameConstants::kCodeOffset) = *code;
|
| Memory::Object_at(fp + StandardFrameConstants::kMarkerOffset) =
|
| Smi::FromInt(StackFrame::INTERNAL);
|
| -
|
| - return reinterpret_cast<Object**>(&Memory::Object_at(
|
| - fp + StandardFrameConstants::kContextOffset));
|
| }
|
|
|
|
|
| @@ -1523,11 +1512,9 @@ static Object** SetUpFrameDropperFrame(StackFrame* bottom_js_frame,
|
| // frames in range. Anyway the bottom frame is restarted rather than dropped,
|
| // and therefore has to be a JavaScript frame.
|
| // Returns error message or NULL.
|
| -static const char* DropFrames(Vector<StackFrame*> frames,
|
| - int top_frame_index,
|
| +static const char* DropFrames(Vector<StackFrame*> frames, int top_frame_index,
|
| int bottom_js_frame_index,
|
| - LiveEdit::FrameDropMode* mode,
|
| - Object*** restarter_frame_function_pointer) {
|
| + LiveEdit::FrameDropMode* mode) {
|
| if (!LiveEdit::kFrameDropperSupported) {
|
| return "Stack manipulations are not supported in this architecture.";
|
| }
|
| @@ -1542,12 +1529,8 @@ static const char* DropFrames(Vector<StackFrame*> frames,
|
| Isolate* isolate = bottom_js_frame->isolate();
|
| Code* pre_top_frame_code = pre_top_frame->LookupCode();
|
| bool frame_has_padding = true;
|
| - if (pre_top_frame_code->is_inline_cache_stub() &&
|
| - pre_top_frame_code->is_debug_stub()) {
|
| - // OK, we can drop inline cache calls.
|
| - *mode = LiveEdit::FRAME_DROPPED_IN_IC_CALL;
|
| - } else if (pre_top_frame_code ==
|
| - isolate->builtins()->builtin(Builtins::kSlot_DebugBreak)) {
|
| + if (pre_top_frame_code ==
|
| + isolate->builtins()->builtin(Builtins::kSlot_DebugBreak)) {
|
| // OK, we can drop debug break slot.
|
| *mode = LiveEdit::FRAME_DROPPED_IN_DEBUG_SLOT_CALL;
|
| } else if (pre_top_frame_code ==
|
| @@ -1641,10 +1624,7 @@ static const char* DropFrames(Vector<StackFrame*> frames,
|
| *top_frame_pc_address = code->entry();
|
| pre_top_frame->SetCallerFp(bottom_js_frame->fp());
|
|
|
| - *restarter_frame_function_pointer =
|
| - SetUpFrameDropperFrame(bottom_js_frame, code);
|
| -
|
| - DCHECK((**restarter_frame_function_pointer)->IsJSFunction());
|
| + SetUpFrameDropperFrame(bottom_js_frame, code);
|
|
|
| for (Address a = unused_stack_top;
|
| a < unused_stack_bottom;
|
| @@ -1805,10 +1785,8 @@ static const char* DropActivationsInActiveThreadImpl(Isolate* isolate,
|
| }
|
|
|
| LiveEdit::FrameDropMode drop_mode = LiveEdit::FRAMES_UNTOUCHED;
|
| - Object** restarter_frame_function_pointer = NULL;
|
| - const char* error_message = DropFrames(frames, top_frame_index,
|
| - bottom_js_frame_index, &drop_mode,
|
| - &restarter_frame_function_pointer);
|
| + const char* error_message =
|
| + DropFrames(frames, top_frame_index, bottom_js_frame_index, &drop_mode);
|
|
|
| if (error_message != NULL) {
|
| return error_message;
|
| @@ -1822,8 +1800,7 @@ static const char* DropActivationsInActiveThreadImpl(Isolate* isolate,
|
| break;
|
| }
|
| }
|
| - debug->FramesHaveBeenDropped(
|
| - new_id, drop_mode, restarter_frame_function_pointer);
|
| + debug->FramesHaveBeenDropped(new_id, drop_mode);
|
| return NULL;
|
| }
|
|
|
|
|