| Index: runtime/vm/intermediate_language_x64.cc
|
| diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc
|
| index ec0bbc7602be704c3684b4f7aa88580c51a95693..7aaf5619acb2dc9f6031c27ad75dd4513e2502ba 100644
|
| --- a/runtime/vm/intermediate_language_x64.cc
|
| +++ b/runtime/vm/intermediate_language_x64.cc
|
| @@ -2638,9 +2638,14 @@ void CheckStackOverflowInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
|
|
| Register temp = locs()->temp(0).reg();
|
| // Generate stack overflow check.
|
| - __ LoadImmediate(
|
| - temp, Immediate(Isolate::Current()->stack_limit_address()), PP);
|
| - __ cmpq(RSP, Address(temp, 0));
|
| + if (compiler->is_optimizing()) {
|
| + __ LoadImmediate(
|
| + temp, Immediate(Isolate::Current()->stack_limit_address()), PP);
|
| + __ cmpq(RSP, Address(temp, 0));
|
| + } else {
|
| + __ LoadIsolate(temp);
|
| + __ cmpq(RSP, Address(temp, Isolate::stack_limit_offset()));
|
| + }
|
| __ j(BELOW_EQUAL, slow_path->entry_label());
|
| if (compiler->CanOSRFunction() && in_loop()) {
|
| // In unoptimized code check the usage counter to trigger OSR at loop
|
|
|