The high-level overview diagram in jit/notes.txt showed the release of the JIT mutex in where I'd like it to be, rather than where it currently is.
Fix the diagram to reflect reality, and clarify various other things. Committed to trunk as r218488. gcc/jit/ChangeLog: * notes.txt: Show the beginning and ending of recording::context::compile vs playback::context::compile. Show the creation and unlinking of the tempdir. Show toplev::finalize. Move "RELEASE MUTEX" to the correct location. Show gcc_jit_result_release, and indicate where the dlopen/dlsym/dlclose occur. --- gcc/jit/notes.txt | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/gcc/jit/notes.txt b/gcc/jit/notes.txt index d337cb4..12bb6d6 100644 --- a/gcc/jit/notes.txt +++ b/gcc/jit/notes.txt @@ -18,9 +18,13 @@ Client Code . Generated . libgccjit.so │ . . . . V . . gcc_jit_context_compile . ──────────────────────────> . . + . . │ start of recording::context::compile () . . │ . . . . │ ACQUIRE MUTEX . . . │ . . + . . │ start of playback::context::compile () + . . │ (create tempdir) . + . . │ . . . . V───────────────────────> toplev::main (for now) . . . . │ . . . . (various code) @@ -65,13 +69,33 @@ Client Code . Generated . libgccjit.so . . . . (the middle─end and backend) . . . . ↓ . . <───────────────────────────── end of toplev::main - . . │ RELEASE MUTEX . . . │ . . - . . │ Convert assembler to DSO + . . V───────────────────────> toplev::finalize + . . . . │ (purge internal state) + . . <──────────────────────── end of toplev::finalize + . . │ . . + . . │ Convert assembler to DSO ("fake.so") + . . │ . . + . . │ Load DSO (dlopen "fake.so") . . │ . . - . . │ Load DSO . + . . │ end of playback::context::compile () + . . │ . . + . . │ playback::context dtor + . . ──> . . + . . │ Cleanup tempdir . + . . │ ("fake.so" is unlinked from the + . . │ filesystem at this point) + . . <── . . + . . │ . . + . . │ RELEASE MUTEX . + . . │ . . + . . │ end of recording::context::compile () <─────────────────────────── . . │ . . . . + V . . gcc_jit_result_get_code . + ──────────────────────────> . . + . . │ dlsym () within loaded DSO + <─────────────────────────── . . Get (void*). . . . │ . . . . │ Call it . . . . @@ -80,5 +104,11 @@ Client Code . Generated . libgccjit.so . │ . . . <─────────────── . . . │ . . . . +etc│ . . . . + │ . . . . + V . . gcc_jit_result_release . + ──────────────────────────> . . + . . │ dlclose () the loaded DSO + . . │ (code becomes uncallable) + <─────────────────────────── . . │ . . . . -etc -- 1.8.5.3