v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
code-comments.h
Go to the documentation of this file.
1// Copyright 2018 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_CODEGEN_CODE_COMMENTS_H_
6#define V8_CODEGEN_CODE_COMMENTS_H_
7
8#include <ostream>
9#include <string>
10#include <vector>
11
12#include "include/v8-internal.h"
13#include "src/base/macros.h"
14
15namespace v8 {
16namespace internal {
17
18class Assembler;
19
20// InstructionStream comments section layout:
21// byte count content
22// ------------------------------------------------------------------------
23// 4 size as uint32_t (only for a check)
24// [Inline array of CodeCommentEntry in increasing pc_offset order]
25// ┌ 4 pc_offset of entry as uint32_t
26// ├ 4 length of the comment including terminating '\0'
27// └ <variable length> characters of the comment including terminating '\0'
28
30 uint32_t pc_offset;
31 std::string comment;
32 uint32_t comment_length() const;
33 uint32_t size() const;
34};
35
37 public:
38 V8_EXPORT_PRIVATE void Add(uint32_t pc_offset, std::string comment);
39 void Emit(Assembler* assm);
40 size_t entry_count() const;
41 uint32_t section_size() const;
42
43 private:
44 uint32_t byte_count_ = 0;
45 std::vector<CodeCommentEntry> comments_;
46};
47
49 public:
50 CodeCommentsIterator(Address code_comments_start,
51 uint32_t code_comments_size);
52 uint32_t size() const;
53 const char* GetComment() const;
54 uint32_t GetCommentSize() const;
55 uint32_t GetPCOffset() const;
56 void Next();
57 bool HasCurrent() const;
58
59 private:
63};
64
65} // namespace internal
66} // namespace v8
67
68#endif // V8_CODEGEN_CODE_COMMENTS_H_
V8_EXPORT_PRIVATE void Add(uint32_t pc_offset, std::string comment)
std::vector< CodeCommentEntry > comments_
int pc_offset
#define V8_EXPORT_PRIVATE
Definition macros.h:460