diff options
Diffstat (limited to 'src/include/jit/jit.h')
-rw-r--r-- | src/include/jit/jit.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/include/jit/jit.h b/src/include/jit/jit.h index dac8d593eb0..703c5011dae 100644 --- a/src/include/jit/jit.h +++ b/src/include/jit/jit.h @@ -19,6 +19,8 @@ #define PGJIT_NONE 0 #define PGJIT_PERFORM 1 << 0 #define PGJIT_OPT3 1 << 1 +/* reserved for PGJIT_INLINE */ +#define PGJIT_EXPR 1 << 3 typedef struct JitContext @@ -47,11 +49,14 @@ extern void _PG_jit_provider_init(JitProviderCallbacks *cb); typedef void (*JitProviderInit) (JitProviderCallbacks *cb); typedef void (*JitProviderResetAfterErrorCB) (void); typedef void (*JitProviderReleaseContextCB) (JitContext *context); +struct ExprState; +typedef bool (*JitProviderCompileExprCB) (struct ExprState *state); struct JitProviderCallbacks { JitProviderResetAfterErrorCB reset_after_error; JitProviderReleaseContextCB release_context; + JitProviderCompileExprCB compile_expr; }; @@ -60,6 +65,7 @@ extern bool jit_enabled; extern char *jit_provider; extern bool jit_debugging_support; extern bool jit_dump_bitcode; +extern bool jit_expressions; extern bool jit_profiling_support; extern double jit_above_cost; extern double jit_optimize_above_cost; @@ -68,4 +74,11 @@ extern double jit_optimize_above_cost; extern void jit_reset_after_error(void); extern void jit_release_context(JitContext *context); +/* + * Functions for attempting to JIT code. Callers must accept that these might + * not be able to perform JIT (i.e. return false). + */ +extern bool jit_compile_expr(struct ExprState *state); + + #endif /* JIT_H */ |