a63f045c3e
Adds some necessary padding to ensure the frame is 16-byte aligned. We don't yet consider the bailout state, which will be handled separately. This patch also improves the code generated for ContinueTo*Builtin* stubs. Finally, it adds a test that checks the return value for Array.map in the case where a LAZY deopt results in a topmost builtin continuation frame - this is easy to break if the padding for the result is done incorrectly in NotifyBuiltinContinuation, but was not detected by existing tests. Bug: v8:6644 Change-Id: Id1a294950cdf535e2bfdb0ed27c67f077ec34f8a Reviewed-on: https://chromium-review.googlesource.com/704835 Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#48465}
34 lines
910 B
C++
34 lines
910 B
C++
// Copyright 2006-2008 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#if V8_TARGET_ARCH_IA32
|
|
|
|
#include "src/assembler.h"
|
|
#include "src/frame-constants.h"
|
|
#include "src/ia32/assembler-ia32-inl.h"
|
|
#include "src/ia32/assembler-ia32.h"
|
|
|
|
#include "src/ia32/frame-constants-ia32.h"
|
|
|
|
namespace v8 {
|
|
namespace internal {
|
|
|
|
Register JavaScriptFrame::fp_register() { return ebp; }
|
|
Register JavaScriptFrame::context_register() { return esi; }
|
|
Register JavaScriptFrame::constant_pool_pointer_register() { UNREACHABLE(); }
|
|
|
|
int InterpreterFrameConstants::RegisterStackSlotCount(int register_count) {
|
|
return register_count;
|
|
}
|
|
|
|
int BuiltinContinuationFrameConstants::PaddingSlotCount(int register_count) {
|
|
USE(register_count);
|
|
return 0;
|
|
}
|
|
|
|
} // namespace internal
|
|
} // namespace v8
|
|
|
|
#endif // V8_TARGET_ARCH_IA32
|