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

Reply via email to