public inbox for jit@gcc.gnu.org
 help / color / mirror / Atom feed
From: David Malcolm <dmalcolm@redhat.com>
To: gcc-patches@gcc.gnu.org, jit@gcc.gnu.org
Cc: David Malcolm <dmalcolm@redhat.com>
Subject: [PATCH 04/27] New file: gcc/jit/notes.txt
Date: Wed, 01 Jan 2014 00:00:00 -0000	[thread overview]
Message-ID: <1414774977-25605-5-git-send-email-dmalcolm@redhat.com> (raw)
In-Reply-To: <1414774977-25605-1-git-send-email-dmalcolm@redhat.com>

An earlier version of this was posted as part of:
      "[PATCH 06/10] Heart of the JIT implementation (was: Re: [PATCH 0/5] Merger of jit branch (v2))"
        https://gcc.gnu.org/ml/gcc-patches/2014-10/msg01247.html

I've broken that up into separate patches for ease of review.

This first patch within gcc/jit adds a high-level overview
diagram of how the JIT library works.

gcc/jit/
	* notes.txt: New.
---
 gcc/jit/notes.txt | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 84 insertions(+)
 create mode 100644 gcc/jit/notes.txt

diff --git a/gcc/jit/notes.txt b/gcc/jit/notes.txt
new file mode 100644
index 0000000..d337cb4
--- /dev/null
+++ b/gcc/jit/notes.txt
@@ -0,0 +1,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
-- 
1.8.5.3

  parent reply	other threads:[~2014-10-31 17:38 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-01  0:00 [PATCH 00/27] Merger of jit branch v3 David Malcolm
2014-01-01  0:00 ` [PATCH 20/27] Documentation: Makefile and conf.py David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` [PATCH 25/27] Documentation: add "internals" subdirectory David Malcolm
2014-01-01  0:00 ` [PATCH 02/27] JIT-related changes outside of jit subdir David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` [PATCH 10/27] New file: gcc/jit/libgccjit.c David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00     ` David Malcolm
2014-01-01  0:00       ` Jeff Law
2014-01-01  0:00         ` [jit] Use ISALPHA and ISALNUM rather than writing our own David Malcolm
2014-01-01  0:00           ` Jeff Law
2014-01-01  0:00         ` [PATCH 10/27] New file: gcc/jit/libgccjit.c David Malcolm
2014-01-01  0:00           ` Jeff Law
2014-01-01  0:00             ` David Malcolm
2014-01-01  0:00 ` [PATCH 03/27] Add Sphinx to install.texi David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` [PATCH 17/27] New file: gcc/jit/libgccjit++.h David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` [PATCH 07/27] New file: gcc/jit/dummy-frontend.c David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` David Malcolm [this message]
2014-01-01  0:00   ` [PATCH 04/27] New file: gcc/jit/notes.txt Jeff Law
2014-01-01  0:00 ` [PATCH 01/27] gcc: configure and Makefile changes needed by jit David Malcolm
2014-01-01  0:00   ` Thomas Schwinge
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` [PATCH 22/27] Documentation: top-level index.rst David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` [PATCH 12/27] New file: gcc/jit/jit-recording.h David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00     ` David Malcolm
2014-01-01  0:00       ` Jeff Law
2014-01-01  0:00 ` [PATCH 11/27] New file: gcc/jit/jit-common.h David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` [PATCH 00/27] Merger of jit branch v3 Jeff Law
2014-01-01  0:00 ` [PATCH 13/27] New file: gcc/jit/jit-recording.c David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00     ` David Malcolm
2014-01-01  0:00       ` Jeff Law
2014-01-01  0:00 ` [PATCH 18/27] New file: gcc/jit/TODO.rst David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` [PATCH 08/27] New file: gcc/jit/libgccjit.h David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00     ` David Malcolm
2014-01-01  0:00 ` [PATCH 15/27] New file: gcc/jit/jit-playback.h David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` [PATCH 05/27] New file: gcc/jit/config-lang.in David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` [PATCH 14/27] New files: gcc/jit/jit-builtins.{c|h} David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00     ` David Malcolm
2014-01-01  0:00 ` [PATCH 09/27] New file: gcc/jit/libgccjit.map David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` [PATCH 23/27] Documentation: the "intro" subdirectory David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00     ` David Malcolm
2014-01-01  0:00       ` Jeff Law
2014-01-01  0:00 ` [PATCH 0/3] Minor tweaks to jit David Malcolm
2014-01-01  0:00   ` [PATCH 1/3] New test cases David Malcolm
2014-01-01  0:00   ` [PATCH 0/3] Minor tweaks to jit Jeff Law
2014-01-01  0:00     ` David Malcolm
2014-01-01  0:00   ` [PATCH 3/3] Add comments to various functions in libgccjit.h David Malcolm
2014-01-01  0:00   ` [PATCH 2/3] Documentation tweak David Malcolm
2014-01-01  0:00 ` [PATCH 06/27] New file: gcc/jit/Make-lang.in David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` [PATCH 21/27] Documentation: the "examples" subdirectory David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00 ` [PATCH 24/27] Documentation: add "topics" subdirectory David Malcolm
2014-01-01  0:00 ` [PATCH 16/27] New file: gcc/jit/jit-playback.c David Malcolm
2014-01-01  0:00   ` Jeff Law
2014-01-01  0:00     ` [jit] Drop the disabled debugging code within handle_locations David Malcolm

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1414774977-25605-5-git-send-email-dmalcolm@redhat.com \
    --to=dmalcolm@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jit@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).