1// Copyright 2014 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#ifndef V8_COMPILER_BACKEND_UNWINDING_INFO_WRITER_H_
6#define V8_COMPILER_BACKEND_UNWINDING_INFO_WRITER_H_
7
8#include "src/flags/flags.h"
9
10#if V8_TARGET_ARCH_ARM
11#include "src/compiler/backend/arm/unwinding-info-writer-arm.h"
12#elif V8_TARGET_ARCH_ARM64
13#include "src/compiler/backend/arm64/unwinding-info-writer-arm64.h"
14#elif V8_TARGET_ARCH_X64
15#include "src/compiler/backend/x64/unwinding-info-writer-x64.h"
16#elif V8_TARGET_ARCH_S390X
17#include "src/compiler/backend/s390/unwinding-info-writer-s390.h"
18#elif V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
19#include "src/compiler/backend/ppc/unwinding-info-writer-ppc.h"
20#else
21
22// Placeholder for unsupported architectures.
23
24#include "src/base/logging.h"
25
26namespace v8 {
27namespace internal {
28
29class EhFrameWriter;
30class Zone;
31
32namespace compiler {
33
34class InstructionBlock;
35
36static_assert(!FLAG_perf_prof_unwinding_info,
37              "--perf-prof-unwinding-info should be statically disabled if not "
38              "supported");
39
40class UnwindingInfoWriter {
41 public:
42  explicit UnwindingInfoWriter(Zone*) {}
43
44  void SetNumberOfInstructionBlocks(int number) {}
45
46  void BeginInstructionBlock(int pc_offset, const InstructionBlock*) {}
47
48  void EndInstructionBlock(const InstructionBlock*) {}
49
50  void Finish(int code_size) {}
51
52  EhFrameWriter* eh_frame_writer() { return nullptr; }
53};
54
55}  // namespace compiler
56}  // namespace internal
57}  // namespace v8
58
59#endif
60
61#endif  // V8_COMPILER_BACKEND_UNWINDING_INFO_WRITER_H_
62