| Index: src/mips64/simulator-mips64.h
|
| diff --git a/src/mips64/simulator-mips64.h b/src/mips64/simulator-mips64.h
|
| index 5ac178df64e293f437b77ca18f6a5f63db8103bb..dea9e30adfca7d41c0679858038b8ad394274705 100644
|
| --- a/src/mips64/simulator-mips64.h
|
| +++ b/src/mips64/simulator-mips64.h
|
| @@ -223,12 +223,12 @@ class Simulator {
|
| void set_pc(int64_t value);
|
| int64_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();
|
| @@ -509,15 +509,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) {
|
|
|