| Index: src/mips/simulator-mips.h
|
| diff --git a/src/mips/simulator-mips.h b/src/mips/simulator-mips.h
|
| index 1459fbada3226e3dc68f024ca57088cafe455414..6de5163dda6d07050a62649946525bb281033ad5 100644
|
| --- a/src/mips/simulator-mips.h
|
| +++ b/src/mips/simulator-mips.h
|
| @@ -193,12 +193,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 MIPS instructions until the PC reaches end_sim_pc.
|
| void Execute();
|
| @@ -466,15 +466,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
|
| -// 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(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) {
|
|
|