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