| Index: src/compiler/arm64/unwinding-info-writer-arm64.h
|
| diff --git a/src/compiler/arm64/unwinding-info-writer-arm64.h b/src/compiler/arm64/unwinding-info-writer-arm64.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5f49292578ad4c851117a3b01ed2cb46b9caed6e
|
| --- /dev/null
|
| +++ b/src/compiler/arm64/unwinding-info-writer-arm64.h
|
| @@ -0,0 +1,54 @@
|
| +// Copyright 2016 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.
|
| +
|
| +#ifndef V8_COMPILER_ARM64_UNWINDING_INFO_WRITER_H_
|
| +#define V8_COMPILER_ARM64_UNWINDING_INFO_WRITER_H_
|
| +
|
| +#include <unordered_map>
|
| +#include "src/eh-frame.h"
|
| +
|
| +namespace v8 {
|
| +namespace internal {
|
| +namespace compiler {
|
| +
|
| +class InstructionBlock;
|
| +
|
| +class UnwindingInfoWriter {
|
| + public:
|
| + UnwindingInfoWriter() : saved_lr_(false), block_will_exit_(false) {}
|
| +
|
| + void BeginInstructionBlock(int pc_offset, const InstructionBlock* block);
|
| + void EndInstructionBlock(const InstructionBlock* block);
|
| +
|
| + void MarkLinkRegisterOnTopOfStack(int pc_offset);
|
| + void MarkPopLinkRegisterFromTopOfStack(int pc_offset);
|
| +
|
| + void MarkFrameConstructed(int pc_base);
|
| + void MarkFrameDeconstructed(int pc_base);
|
| +
|
| + void MarkBlockWillExit() { block_will_exit_ = true; }
|
| +
|
| + void Finish(int code_size) { eh_frame_writer_.Finish(code_size); }
|
| +
|
| + EhFrameWriter* eh_frame_writer() { return &eh_frame_writer_; }
|
| +
|
| + private:
|
| + EhFrameWriter eh_frame_writer_;
|
| +
|
| + struct BlockInitialState {
|
| + bool saved_lr_;
|
| + };
|
| +
|
| + bool saved_lr_;
|
| + bool block_will_exit_;
|
| +
|
| + std::unordered_map<int, BlockInitialState> block_initial_states_;
|
| + static_assert(kIntSize >= kInt32Size, "int too small to encode a RpoNumber");
|
| +};
|
| +
|
| +} // namespace compiler
|
| +} // namespace internal
|
| +} // namespace v8
|
| +
|
| +#endif
|
|
|