diff options
Diffstat (limited to 'deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc')
-rw-r--r-- | deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc b/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc index c907e83c3f..c121383426 100644 --- a/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc +++ b/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc @@ -3147,7 +3147,7 @@ void CodeGenerator::AssembleConstructFrame() { } #if V8_ENABLE_WEBASSEMBLY - if (info()->IsWasm() && required_slots > 128) { + if (info()->IsWasm() && required_slots * kSystemPointerSize > 4 * KB) { // For WebAssembly functions with big frames we have to do the stack // overflow check before we construct the frame. Otherwise we may not // have enough space on the stack to call the runtime for the stack @@ -3156,7 +3156,7 @@ void CodeGenerator::AssembleConstructFrame() { // If the frame is bigger than the stack, we throw the stack overflow // exception unconditionally. Thereby we can avoid the integer overflow // check in the condition code. - if (required_slots * kSystemPointerSize < FLAG_stack_size * 1024) { + if (required_slots * kSystemPointerSize < FLAG_stack_size * KB) { UseScratchRegisterScope scope(tasm()); Register scratch = scope.AcquireX(); __ Ldr(scratch, FieldMemOperand( @@ -3178,12 +3178,11 @@ void CodeGenerator::AssembleConstructFrame() { } __ Call(wasm::WasmCode::kWasmStackOverflow, RelocInfo::WASM_STUB_CALL); - // We come from WebAssembly, there are no references for the GC. + // The call does not return, hence we can ignore any references and just + // define an empty safepoint. ReferenceMap* reference_map = zone()->New<ReferenceMap>(zone()); RecordSafepoint(reference_map); - if (FLAG_debug_code) { - __ Brk(0); - } + if (FLAG_debug_code) __ Brk(0); __ Bind(&done); } #endif // V8_ENABLE_WEBASSEMBLY |