ARM: Fix the debugger using wrong break stub for slot breaks
authorsgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 16 Mar 2011 12:47:43 +0000 (12:47 +0000)
committersgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 16 Mar 2011 12:47:43 +0000 (12:47 +0000)
On ARM the break at break slots wrongly used the break at return stub which assumes an object opinter in r0. At break slots there are no objects live in registers so a GC while at a break on a break stub could cause a crash as r0 was wrongly pushed on a internal frame to be handled by GC.
Review URL: http://codereview.chromium.org/6676037

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7203 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/arm/debug-arm.cc

index f19e693..22640ca 100644 (file)
@@ -115,7 +115,7 @@ void BreakLocationIterator::SetDebugBreakAtSlot() {
   patcher.masm()->mov(v8::internal::lr, v8::internal::pc);
   patcher.masm()->ldr(v8::internal::pc, MemOperand(v8::internal::pc, -4));
 #endif
-  patcher.Emit(Debug::debug_break_return()->entry());
+  patcher.Emit(Debug::debug_break_slot()->entry());
 }