Revision: 21770
Author:   [email protected]
Date:     Wed Jun 11 13:40:18 2014 UTC
Log: Ignore live_edit_ flag when when dealing with LiveEdit in a debug break.

LiveEdit maybe disabled when we enter the break and again when we
leave it, but enabled in between.

TEST=https://codereview.chromium.org/329533002
[email protected]

Review URL: https://codereview.chromium.org/325183003
http://code.google.com/p/v8/source/detail?r=21770

Modified:
 /branches/bleeding_edge/src/debug.cc
 /branches/bleeding_edge/src/debug.h
 /branches/bleeding_edge/src/liveedit.cc
 /branches/bleeding_edge/src/liveedit.h

=======================================
--- /branches/bleeding_edge/src/debug.cc        Tue Jun  3 14:39:55 2014 UTC
+++ /branches/bleeding_edge/src/debug.cc        Wed Jun 11 13:40:18 2014 UTC
@@ -886,9 +886,8 @@
   HandleScope scope(isolate_);
   ASSERT(args.length() == 0);

-  if (live_edit_enabled()) {
-    thread_local_.frame_drop_mode_ = LiveEdit::FRAMES_UNTOUCHED;
-  }
+  // Initialize LiveEdit.
+  LiveEdit::InitializeThreadLocal(this);

   // Just continue if breaks are disabled or debugger cannot be loaded.
   if (break_disabled_) return;
@@ -2307,11 +2306,9 @@


 void Debug::SetAfterBreakTarget(JavaScriptFrame* frame) {
-  if (live_edit_enabled()) {
-    after_break_target_ =
- LiveEdit::AfterBreakTarget(thread_local_.frame_drop_mode_, isolate_);
-    if (after_break_target_ != NULL) return;  // LiveEdit did the job.
-  }
+  after_break_target_ = NULL;
+
+ if (LiveEdit::SetAfterBreakTarget(this)) return; // LiveEdit did the job.

   HandleScope scope(isolate_);
   PrepareForBreakPoints();
=======================================
--- /branches/bleeding_edge/src/debug.h Tue Jun  3 14:39:55 2014 UTC
+++ /branches/bleeding_edge/src/debug.h Wed Jun 11 13:40:18 2014 UTC
@@ -674,6 +674,7 @@
   friend class Isolate;
   friend class DebugScope;
   friend class DisableBreak;
+  friend class LiveEdit;
   friend class SuppressDebug;

   friend Handle<FixedArray> GetDebuggedFunctions();  // In test-debug.cc
=======================================
--- /branches/bleeding_edge/src/liveedit.cc     Thu Jun  5 08:56:38 2014 UTC
+++ /branches/bleeding_edge/src/liveedit.cc     Wed Jun 11 13:40:18 2014 UTC
@@ -805,11 +805,17 @@
 };


-Address LiveEdit::AfterBreakTarget(FrameDropMode mode, Isolate* isolate) {
+void LiveEdit::InitializeThreadLocal(Debug* debug) {
+  debug->thread_local_.frame_drop_mode_ = LiveEdit::FRAMES_UNTOUCHED;
+}
+
+
+bool LiveEdit::SetAfterBreakTarget(Debug* debug) {
   Code* code = NULL;
-  switch (mode) {
+  Isolate* isolate = debug->isolate_;
+  switch (debug->thread_local_.frame_drop_mode_) {
     case FRAMES_UNTOUCHED:
-      break;
+      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);
@@ -821,7 +827,7 @@
       break;
     case FRAME_DROPPED_IN_DIRECT_CALL:
       // Nothing to do, after_break_target is not used here.
-      break;
+      return true;
     case FRAME_DROPPED_IN_RETURN_CALL:
code = isolate->builtins()->builtin(Builtins::kFrameDropper_LiveEdit);
       break;
@@ -829,8 +835,8 @@
       UNREACHABLE();
       break;
   }
-  if (code == NULL) return NULL;
-  return code->entry();
+  debug->after_break_target_ = code->entry();
+  return true;
 }


=======================================
--- /branches/bleeding_edge/src/liveedit.h      Tue Jun  3 08:12:43 2014 UTC
+++ /branches/bleeding_edge/src/liveedit.h      Wed Jun 11 13:40:18 2014 UTC
@@ -74,7 +74,9 @@
     CURRENTLY_SET_MODE
   };

-  static Address AfterBreakTarget(FrameDropMode mode, Isolate* isolate);
+  static void InitializeThreadLocal(Debug* debug);
+
+  static bool SetAfterBreakTarget(Debug* debug);

   MUST_USE_RESULT static MaybeHandle<JSArray> GatherCompileInfo(
       Handle<Script> script,

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to