Fix issue 493: Infinite loop when debug break is set when entering function.apply.
authorsgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 5 Nov 2009 13:59:40 +0000 (13:59 +0000)
committersgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 5 Nov 2009 13:59:40 +0000 (13:59 +0000)
commit41d6cae46daa882df71acb6b982903a6c9810222
tree2285eca60ab3db60ac2fa0d855afb1d098060b00
parentb5a19c103605f56e107da5bf2399dd8109c9c18a
Fix issue 493: Infinite loop when debug break is set when entering function.apply.

In the generated code for function.apply there was a loop checking the stack limit for interruption. This loop would call into the runtime system to handle interuption and keep running until there was no interruption. However if the interuption was debug break the runtime system would never clear the interruption as debug break is prevented in builtins are prevented and the assumption here was that returning with the debug break flag set would move execution forward.

Renamed initial_jslimit and initial_climit to real_jslimit and real_climit. Renamed a few external references related to the stack limit as well.

Exposed the real stack limit to generated code to make the stack check when entering function.apply use the real stack limit and not the stack limit which is changed to signal interruption.

Added the real stack limit to the roots array.

BUG=http://code.google.com/p/v8/issues/detail?id=493
TEST=cctest/test-debug/DebugBreakFunctionApply
Review URL: http://codereview.chromium.org/345048

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3229 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
18 files changed:
src/arm/builtins-arm.cc
src/arm/regexp-macro-assembler-arm.cc
src/assembler.cc
src/assembler.h
src/execution.cc
src/execution.h
src/heap.cc
src/heap.h
src/ia32/builtins-ia32.cc
src/ia32/codegen-ia32.cc
src/ia32/fast-codegen-ia32.cc
src/ia32/regexp-macro-assembler-ia32.cc
src/serialize.cc
src/v8.cc
src/x64/builtins-x64.cc
src/x64/regexp-macro-assembler-x64.cc
test/cctest/test-debug.cc
test/cctest/test-serialize.cc