v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
unwinder-arm.cc
Go to the documentation of this file.
1// Copyright 2020 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <memory>
6
11
12namespace v8 {
13
15 RegisterState* register_state) {
16 const i::Address base_addr =
17 reinterpret_cast<i::Address>(fp) +
18 i::EntryFrameConstants::kDirectCallerGeneralRegistersOffset;
19
20 if (!register_state->callee_saved) {
21 register_state->callee_saved = std::make_unique<CalleeSavedRegisters>();
22 }
23
24 register_state->callee_saved->arm_r4 =
25 reinterpret_cast<void*>(Load(base_addr + 0 * i::kSystemPointerSize));
26 register_state->callee_saved->arm_r5 =
27 reinterpret_cast<void*>(Load(base_addr + 1 * i::kSystemPointerSize));
28 register_state->callee_saved->arm_r6 =
29 reinterpret_cast<void*>(Load(base_addr + 2 * i::kSystemPointerSize));
30 register_state->callee_saved->arm_r7 =
31 reinterpret_cast<void*>(Load(base_addr + 3 * i::kSystemPointerSize));
32 register_state->callee_saved->arm_r8 =
33 reinterpret_cast<void*>(Load(base_addr + 4 * i::kSystemPointerSize));
34 register_state->callee_saved->arm_r9 =
35 reinterpret_cast<void*>(Load(base_addr + 5 * i::kSystemPointerSize));
36 register_state->callee_saved->arm_r10 =
37 reinterpret_cast<void*>(Load(base_addr + 6 * i::kSystemPointerSize));
38}
39
40} // namespace v8
constexpr int kSystemPointerSize
Definition globals.h:410
void GetCalleeSavedRegistersFromEntryFrame(void *fp, RegisterState *register_state)
i::Address Load(i::Address address)
Definition unwinder.cc:19
std::unique_ptr< CalleeSavedRegisters > callee_saved
Definition v8-unwinder.h:32