V8 Project
jitdump.h
Go to the documentation of this file.
1 #ifndef JITDUMP_H
2 #define JITDUMP_H
3 
4 #include <sys/time.h>
5 #include <time.h>
6 #include <stdint.h>
7 
8 /* JiTD */
9 #define JITHEADER_MAGIC 0x4A695444
10 #define JITHEADER_MAGIC_SW 0x4454694A
11 
12 #define PADDING_8ALIGNED(x) ((((x) + 7) & 7) ^ 7)
13 
14 #define JITHEADER_VERSION 1
15 
16 struct jitheader {
17  uint32_t magic; /* characters "jItD" */
18  uint32_t version; /* header version */
19  uint32_t total_size; /* total size of header */
20  uint32_t elf_mach; /* elf mach target */
21  uint32_t pad1; /* reserved */
22  uint32_t pid; /* JIT process id */
23  uint64_t timestamp; /* timestamp */
24 };
25 
32 };
33 
34 /* record prefix (mandatory in each record) */
35 struct jr_prefix {
38  uint64_t timestamp;
39 };
40 
41 struct jr_code_load {
42  struct jr_prefix p;
43 
46  uint64_t vma;
47  uint64_t code_addr;
48  uint64_t code_size;
49  uint64_t code_index;
50 };
51 
52 struct jr_code_close {
53  struct jr_prefix p;
54 };
55 
56 struct jr_code_move {
57  struct jr_prefix p;
58 
61  uint64_t vma;
62  uint64_t old_code_addr;
63  uint64_t new_code_addr;
64  uint64_t code_size;
65  uint64_t code_index;
66 };
67 
69  struct jr_prefix p;
70 
71  uint64_t code_addr;
72  uint64_t nr_entry;
73 };
74 
75 union jr_entry {
76  struct jr_code_debug_info info;
77  struct jr_code_close close;
78  struct jr_code_load load;
79  struct jr_code_move move;
80  struct jr_prefix prefix;
81 };
82 
83 #endif /* !JITDUMP_H */
jit_record_type
Definition: jitdump.h:26
@ JIT_CODE_CLOSE
Definition: jitdump.h:30
@ JIT_CODE_LOAD
Definition: jitdump.h:27
@ JIT_CODE_MAX
Definition: jitdump.h:31
@ JIT_CODE_MOVE
Definition: jitdump.h:28
@ JIT_CODE_DEBUG_INFO
Definition: jitdump.h:29
uint64_t timestamp
Definition: jitdump.h:23
uint32_t magic
Definition: jitdump.h:17
uint32_t pid
Definition: jitdump.h:22
uint32_t total_size
Definition: jitdump.h:19
uint32_t version
Definition: jitdump.h:18
uint32_t pad1
Definition: jitdump.h:21
uint32_t elf_mach
Definition: jitdump.h:20
struct jr_prefix p
Definition: jitdump.h:53
uint64_t nr_entry
Definition: jitdump.h:72
uint64_t code_addr
Definition: jitdump.h:71
struct jr_prefix p
Definition: jitdump.h:69
uint64_t code_addr
Definition: jitdump.h:47
uint64_t code_index
Definition: jitdump.h:49
struct jr_prefix p
Definition: jitdump.h:42
uint32_t tid
Definition: jitdump.h:45
uint32_t pid
Definition: jitdump.h:44
uint64_t vma
Definition: jitdump.h:46
uint64_t code_size
Definition: jitdump.h:48
uint64_t old_code_addr
Definition: jitdump.h:62
uint64_t vma
Definition: jitdump.h:61
struct jr_prefix p
Definition: jitdump.h:57
uint64_t new_code_addr
Definition: jitdump.h:63
uint64_t code_size
Definition: jitdump.h:64
uint32_t pid
Definition: jitdump.h:59
uint64_t code_index
Definition: jitdump.h:65
uint32_t tid
Definition: jitdump.h:60
uint32_t total_size
Definition: jitdump.h:37
uint64_t timestamp
Definition: jitdump.h:38
uint32_t id
Definition: jitdump.h:36
Definition: jitdump.h:75
struct jr_code_move move
Definition: jitdump.h:79
struct jr_code_debug_info info
Definition: jitdump.h:76
struct jr_prefix prefix
Definition: jitdump.h:80
struct jr_code_load load
Definition: jitdump.h:78
struct jr_code_close close
Definition: jitdump.h:77