summaryrefslogtreecommitdiff
path: root/src/include/jit/jit.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/jit/jit.h')
-rw-r--r--src/include/jit/jit.h13
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 */