Index: src/liveedit.cc |
diff --git a/src/liveedit.cc b/src/liveedit.cc |
index e55f24ec3eabda772401057241f33f022aeccbdc..3983a3748a8bc53cb0e2fb15144ad4e224c279e6 100644 |
--- a/src/liveedit.cc |
+++ b/src/liveedit.cc |
@@ -805,6 +805,35 @@ class FunctionInfoListener { |
}; |
+Address LiveEdit::AfterBreakTarget(FrameDropMode mode, Isolate* isolate) { |
+ Code* code = NULL; |
+ switch (mode) { |
+ case FRAMES_UNTOUCHED: |
+ break; |
+ 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. |
+ code = isolate->builtins()->builtin(Builtins::kFrameDropper_LiveEdit); |
+ break; |
+ case FRAME_DROPPED_IN_DIRECT_CALL: |
+ // Nothing to do, after_break_target is not used here. |
+ break; |
+ case FRAME_DROPPED_IN_RETURN_CALL: |
+ code = isolate->builtins()->builtin(Builtins::kFrameDropper_LiveEdit); |
+ break; |
+ case CURRENTLY_SET_MODE: |
+ UNREACHABLE(); |
+ break; |
+ } |
+ if (code == NULL) return NULL; |
+ return code->entry(); |
+} |
+ |
+ |
MaybeHandle<JSArray> LiveEdit::GatherCompileInfo(Handle<Script> script, |
Handle<String> source) { |
Isolate* isolate = script->GetIsolate(); |