Hi, On 2018-02-07 06:54:05 -0800, Andres Freund wrote: > I've pushed v10.0. The big (and pretty painful to make) change is that > now all the LLVM specific code lives in src/backend/jit/llvm, which is > built as a shared library which is loaded on demand. > > The layout is now as follows: > > src/backend/jit/jit.c: > Part of JITing always linked into the server. Supports loading the > LLVM using JIT library. > > src/backend/jit/llvm/ > Infrastructure: > llvmjit.c: > General code generation and optimization infrastructure > llvmjit_error.cpp, llvmjit_wrap.cpp: > Error / backward compat wrappers > llvmjit_inline.cpp: > Cross module inlining support > Code-Gen: > llvmjit_expr.c > Expression compilation > llvmjit_deform.c > Deform compilation
I've pushed a revised version that hopefully should address Jeff's wish/need of being able to experiment with this out of core. There's now a "jit_provider" PGC_POSTMASTER GUC that's by default set to "llvmjit". llvmjit.so is the .so implementing JIT using LLVM. It fills a set of callbacks via extern void _PG_jit_provider_init(JitProviderCallbacks *cb); which can also be implemented by any other potential provider. The other two biggest changes are that I've added a README https://git.postgresql.org/gitweb/?p=users/andresfreund/postgres.git;a=blob;f=src/backend/jit/README;hb=jit and that I've revised the configure support so it does more error checks, and moved it into config/llvm.m4. There's a larger smattering of small changes too. I'm pretty happy with how the separation of core / shlib looks now. I'm planning to work on cleaning and then pushing some of the preliminary patches (fixed tupledesc, grouping) over the next few days. Greetings, Andres Freund