Chromium Code Reviews| Index: src/arm/simulator-arm.h |
| diff --git a/src/arm/simulator-arm.h b/src/arm/simulator-arm.h |
| index eea43efc53a97a30cf44e8d690be34c5a28b740d..a972a77d411c47480bd572bd662b625eb66f73c2 100644 |
| --- a/src/arm/simulator-arm.h |
| +++ b/src/arm/simulator-arm.h |
| @@ -181,12 +181,12 @@ class Simulator { |
| void set_pc(int32_t value); |
| int32_t get_pc() const; |
| - Address get_sp() { |
| + Address get_sp() const { |
| return reinterpret_cast<Address>(static_cast<intptr_t>(get_register(sp))); |
| } |
| // Accessor to the internal simulator stack area. |
| - uintptr_t StackLimit() const; |
| + uintptr_t StackLimit(uintptr_t c_limit) const; |
| // Executes ARM instructions until the PC reaches end_sim_pc. |
| void Execute(); |
| @@ -439,15 +439,14 @@ class Simulator { |
| // The simulator has its own stack. Thus it has a different stack limit from |
| -// the C-based native code. Setting the c_limit to indicate a very small |
| -// stack cause stack overflow errors, since the simulator ignores the input. |
| -// This is unlikely to be an issue in practice, though it might cause testing |
|
Michael Starzinger
2015/08/24 13:46:31
You claim this to unlikely be an issue in practice
|
| -// trouble down the line. |
| +// the C-based native code. The JS-based limit normally points near the end of |
| +// the simulator stack. When the C-based limit is exhausted we reflect that by |
| +// lowering the JS-based limit as well, to make stack checks trigger. |
| class SimulatorStack : public v8::internal::AllStatic { |
| public: |
| static inline uintptr_t JsLimitFromCLimit(v8::internal::Isolate* isolate, |
| uintptr_t c_limit) { |
| - return Simulator::current(isolate)->StackLimit(); |
| + return Simulator::current(isolate)->StackLimit(c_limit); |
| } |
| static inline uintptr_t RegisterCTryCatch(uintptr_t try_catch_address) { |