Commit 339ac270 authored by ishell's avatar ishell Committed by Commit bot

Ensure there is some space on JS stack available for bootstrapping.

Review URL: https://codereview.chromium.org/1203873005

Cr-Commit-Position: refs/heads/master@{#29256}
parent f1982eb4
......@@ -1541,7 +1541,7 @@ bool Genesis::CompileNative(Isolate* isolate, Vector<const char> name,
// environment has been at least partially initialized. Add a stack check
// before entering JS code to catch overflow early.
StackLimitCheck check(isolate);
if (check.HasOverflowed()) {
if (check.JsHasOverflowed(1 * KB)) {
isolate->StackOverflow();
return false;
}
......
......@@ -2772,15 +2772,15 @@ void Isolate::CheckDetachedContextsAfterGC() {
}
bool StackLimitCheck::JsHasOverflowed() const {
bool StackLimitCheck::JsHasOverflowed(uintptr_t gap) const {
StackGuard* stack_guard = isolate_->stack_guard();
#ifdef USE_SIMULATOR
// The simulator uses a separate JS stack.
Address jssp_address = Simulator::current(isolate_)->get_sp();
uintptr_t jssp = reinterpret_cast<uintptr_t>(jssp_address);
if (jssp < stack_guard->real_jslimit()) return true;
if (jssp - gap < stack_guard->real_jslimit()) return true;
#endif // USE_SIMULATOR
return GetCurrentStackPosition() < stack_guard->real_climit();
return GetCurrentStackPosition() - gap < stack_guard->real_climit();
}
......
......@@ -1481,7 +1481,7 @@ class StackLimitCheck BASE_EMBEDDED {
}
// Use this to check for stack-overflow when entering runtime from JS code.
bool JsHasOverflowed() const;
bool JsHasOverflowed(uintptr_t gap = 0) const;
private:
Isolate* isolate_;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment