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