aboutsummaryrefslogtreecommitdiff
path: root/gcc/jit/notes.txt
blob: d337cb46c43a4d970e4628f638400c592de58ce5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Client Code   . Generated .            libgccjit.so
              . code      .
              .           . JIT API  . JIT "Frontend". (libbackend.a)
....................................................................................
   │          .           .          .               .
    ──────────────────────────>      .               .
              .           .    │     .               .
              .           .    V     .               .
              .           .    ──> libgccjit.c       .
              .           .        │ (error-checking).
              .           .        │                 .
              .           .        ──> jit-recording.c
              .           .              (record API calls)
              .           .    <───────              .
              .           .    │     .               .
   <───────────────────────────      .               .
   │          .           .          .               .
   │          .           .          .               .
   V          .           .  gcc_jit_context_compile .
    ──────────────────────────>      .               .
              .           .    │     .               .
              .           .    │ ACQUIRE MUTEX       .
              .           .    │     .               .
              .           .    V───────────────────────> toplev::main (for now)
              .           .          .               .       │
              .           .          .               .   (various code)
              .           .          .               .       │
              .           .          .               .       V
              .           .          .    <───────────────── langhook:parse_file
              .           .          .    │          .
              .           .          .    │ (jit_langhook_parse_file)
              .           .          .    │          .
..........................................│..................VVVVVVVVVVVVV...
              .           .          .    │          .       No GC in here
              .           .          .    │ jit-playback.c
              .           .          .    │   (playback of API calls)
              .           .          .    ───────────────> creation of functions,
              .           .          .               .     types, expression trees
              .           .          .    <──────────────── etc
              .           .          .    │(handle_locations: add locations to
              .           .          .    │ linemap and associate them with trees)
              .           .          .    │          .
              .           .          .    │          .       No GC in here
..........................................│..................AAAAAAAAAAAAA...
              .           .          .    │ for each function
              .           .          .    ──> postprocess
              .           .          .        │      .
              .           .          .        ────────────> cgraph_finalize_function
              .           .          .        <────────────
              .           .          .     <──       .
              .           .          .    │          .
              .           .          .    ──────────────────> (end of
              .           .          .               .       │ langhook_parse_file)
              .           .          .               .       │
              .           .          .               .   (various code)
              .           .          .               .       │
              .           .          .               .       ↓
              .           .          .    <───────────────── langhook:write_globals
              .           .          .    │          .
              .           .          .    │ (jit_langhook_write_globals)
              .           .          .    │          .
              .           .          .    │          .
              .           .          .    ──────────────────> finalize_compilation_unit
              .           .          .               .       │
              .           .          .               .   (the middle─end and backend)
              .           .          .               .       ↓
              .           .    <───────────────────────────── end of toplev::main
              .           .    │ RELEASE MUTEX       .
              .           .    │     .               .
              .           .    │ Convert assembler to DSO
              .           .    │     .               .
              .           .    │ Load DSO            .
   <───────────────────────────      .               .
   │          .           .          .               .
   Get (void*).           .          .               .
   │          .           .          .               .
   │ Call it  .           .          .               .
   ───────────────>       .          .               .
              .    │      .          .               .
              .    │      .          .               .
   <───────────────       .          .               .
   │          .           .          .               .
   │          .           .          .               .
etc