Rework the way we handle the fact that the ARM simulator uses a
authorager@chromium.org <ager@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 5 Nov 2009 13:27:21 +0000 (13:27 +0000)
committerager@chromium.org <ager@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 5 Nov 2009 13:27:21 +0000 (13:27 +0000)
commitb5a19c103605f56e107da5bf2399dd8109c9c18a
tree08be1c59561c2dbd4317c47a53a29d52b1fba3ea
parentec7034e65ba94f598bfb7eeafa5d4251f2c6b8c9
Rework the way we handle the fact that the ARM simulator uses a
separate JS stack.

In exception handling, we need to be able to compare addresses into
the JavaScript portion of the stack with the address of a C++ handler
on the stack.  Since the stacks are separate on the simulator, we need
a JavaScript stack address corresponding to a C++ try catch handler in
order to perform valid address comparisons.

On the simulator, we now link the C++ try catch handlers indirectly
through the JS stack and use the JS stack indirection address for
comparisons.

      JS                    C++

                           handler
 [C++ address]   <------    next_
                \
                 \
                  \---->   handler
 [C++ address]   <------    next_

On actual hardware the C++ try catch handlers continue to be directly
linked.

BUG=http://code.google.com/p/v8/issues/detail?id=271
Review URL: http://codereview.chromium.org/360004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3228 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
13 files changed:
include/v8.h
src/api.cc
src/arm/simulator-arm.cc
src/arm/simulator-arm.h
src/execution.cc
src/ia32/simulator-ia32.h
src/regexp-macro-assembler.cc
src/simulator.h [new file with mode: 0644]
src/top.cc
src/top.h
src/v8.cc
src/x64/simulator-x64.h
test/cctest/cctest.status