Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(160)

Side by Side Diff: src/compiler/arm/unwinding-info-writer-arm.h

Issue 2026313002: Emit unwinding information for TurboFan code. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@eh-frame
Patch Set: Clarify assumptions on frame ction/dtion routines in arm/arm64. Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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_ARM_UNWINDING_INFO_WRITER_H_
6 #define V8_COMPILER_ARM_UNWINDING_INFO_WRITER_H_
7
8 #include <unordered_map>
9 #include "src/eh-frame.h"
10
11 namespace v8 {
12 namespace internal {
13 namespace compiler {
14
15 class InstructionBlock;
16
17 class UnwindingInfoWriter {
18 public:
19 UnwindingInfoWriter() : saved_lr_(false), block_will_exit_(false) {}
20
21 void BeginInstructionBlock(int pc_offset, const InstructionBlock* block);
22 void EndInstructionBlock(const InstructionBlock* block);
23
24 void MarkLinkRegisterOnTopOfStack(int pc_offset);
25 void MarkPopLinkRegisterFromTopOfStack(int pc_offset);
26
27 void MarkFrameConstructed(int at_pc);
28 void MarkFrameDeconstructed(int at_pc);
29
30 void MarkBlockWillExit() { block_will_exit_ = true; }
31
32 void Finish(int code_size) { eh_frame_writer_.Finish(code_size); }
33
34 EhFrameWriter* eh_frame_writer() { return &eh_frame_writer_; }
35
36 private:
37 EhFrameWriter eh_frame_writer_;
38
39 struct BlockInitialState {
40 bool saved_lr_;
41 };
42
43 bool saved_lr_;
44 bool block_will_exit_;
45
46 std::unordered_map<int, BlockInitialState> block_initial_states_;
Jarin 2016/07/06 07:09:42 Nit: Could not you use a zone vector here? It seem
47 static_assert(kIntSize >= kInt32Size, "int too small to encode a RpoNumber");
Jarin 2016/07/06 07:09:42 Normally, we use STATIC_ASSERT.
Stefano Sanfilippo 2016/07/06 13:25:10 I followed the comment at line 216 of src/base/mac
Jarin 2016/07/07 07:31:40 Ah, good to know. Thanks.
48 };
49
50 } // namespace compiler
51 } // namespace internal
52 } // namespace v8
53
54 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698