v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
deoptimizer-arm64.cc
Go to the documentation of this file.
1// Copyright 2013 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 "src/api/api.h"
8
9namespace v8 {
10namespace internal {
11
13#ifdef V8_ENABLE_CONTROL_FLOW_INTEGRITY
15#else
17#endif
18
20
21// static
23
27 reinterpret_cast<Address>(simd128_registers_ + n));
28}
29
33 reinterpret_cast<Address>(simd128_registers_ + n));
34}
35
36void RegisterValues::SetDoubleRegister(unsigned n, Float64 value) {
39 value);
40}
41
42void FrameDescription::SetCallerPc(unsigned offset, intptr_t value) {
43 Address new_context =
44 static_cast<Address>(GetTop()) + offset + kPCOnStackSize;
45 value = PointerAuthentication::SignAndCheckPC(isolate_, value, new_context);
46 SetFrameSlot(offset, value);
47}
48
49void FrameDescription::SetCallerFp(unsigned offset, intptr_t value) {
50 SetFrameSlot(offset, value);
51}
52
53void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) {
54 // No embedded constant pool support.
56}
57
58void FrameDescription::SetPc(intptr_t pc) {
59 // TODO(v8:10026): We need to sign pointers to the embedded blob, which are
60 // stored in the isolate and code range objects.
64 }
65 pc_ = pc;
66}
67
68} // namespace internal
69} // namespace v8
static void PatchToJump(Address pc, Address new_pc)
static V8_EXPORT_PRIVATE const int kEagerDeoptExitSize
static V8_EXPORT_PRIVATE const int kAdaptShadowStackOffsetToSubtract
static Address EnsureValidReturnAddress(Isolate *isolate, Address address)
static V8_EXPORT_PRIVATE const int kLazyDeoptExitSize
void SetCallerFp(unsigned offset, intptr_t value)
void SetCallerConstantPool(unsigned offset, intptr_t value)
void SetCallerPc(unsigned offset, intptr_t value)
void SetFrameSlot(unsigned offset, intptr_t value)
static V8_INLINE Address SignAndCheckPC(Isolate *isolate, Address pc, Address sp)
static V8_INLINE Address StripPAC(Address pc)
void SetDoubleRegister(unsigned n, Float64 value)
Float64 GetDoubleRegister(unsigned n) const
Float32 GetFloatRegister(unsigned n) const
Simd128 simd128_registers_[Simd128Register::kNumRegisters]
#define ENABLE_CONTROL_FLOW_INTEGRITY_BOOL
Definition globals.h:167
int32_t offset
static V ReadUnalignedValue(Address p)
Definition memory.h:28
static void WriteUnalignedValue(Address p, V value)
Definition memory.h:41
FloatWithBits< 32 > Float32
Definition index.h:233
FloatWithBits< 64 > Float64
Definition index.h:234
constexpr int kPCOnStackSize
Definition globals.h:412
constexpr uint8_t kInstrSize
#define arraysize(array)
Definition macros.h:67
#define V8_ASSUME
Definition v8config.h:533