Reviewers: Søren Gjesse,

Message:
Hi Soren

In my using debugger (for liveedit development) I ran into a case when
KeyedLoadIC gets a broken pointer (pointer to object with zapped out fields).

From what I learned, a pointer does not survive garbage collection invoked from
debugger code. I guess we have to declare edx (and probably eax also) as
registers with pointers.

In my case (that crashes) KeyedLoadIC is called for reading argument #0 value. So I can't really guess, whether "0" stored in eax is a direct integer or SMI.

Please advise, whether my guess is close to truth.

I will have to fix comments before committing, that's for sure.

Peter

Description:
Enable GC update for pointers in GenerateKeyedLoadICDebugBreak

Please review this at http://codereview.chromium.org/660257

Affected files:
  M src/ia32/debug-ia32.cc


Index: src/ia32/debug-ia32.cc
diff --git a/src/ia32/debug-ia32.cc b/src/ia32/debug-ia32.cc
index a9e26263f54d5655ceed28a5902f7aef90b41bed..a894da7100c045c37d5759eda4627b00906cd98d 100644
--- a/src/ia32/debug-ia32.cc
+++ b/src/ia32/debug-ia32.cc
@@ -147,8 +147,12 @@ void Debug::GenerateKeyedLoadICDebugBreak(MacroAssembler* masm) {
   // Register state for keyed IC load call (from ic-ia32.cc).
   // ----------- S t a t e -------------
   //  No registers used on entry.
+  //
+  //  Or is it:
+  //  -- edx    : value
+  //  -- eax    : key
   // -----------------------------------
-  Generate_DebugBreakCallHelper(masm, 0, false);
+  Generate_DebugBreakCallHelper(masm, eax.bit() | edx.bit(), false);
 }




--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to