aboutsummaryrefslogtreecommitdiff
path: root/src/include/jit/llvmjit.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/jit/llvmjit.h')
-rw-r--r--src/include/jit/llvmjit.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/include/jit/llvmjit.h b/src/include/jit/llvmjit.h
index 63b2fdfe591..bd201bb7ca1 100644
--- a/src/include/jit/llvmjit.h
+++ b/src/include/jit/llvmjit.h
@@ -30,19 +30,49 @@ extern "C"
#include "jit/jit.h"
+#include "nodes/pg_list.h"
typedef struct LLVMJitContext
{
JitContext base;
+
+ /* number of modules created */
+ size_t module_generation;
+
+ /* current, "open for write", module */
+ LLVMModuleRef module;
+
+ /* is there any pending code that needs to be emitted */
+ bool compiled;
+
+ /* # of objects emitted, used to generate non-conflicting names */
+ int counter;
+
+ /* list of handles for code emitted via Orc */
+ List *handles;
} LLVMJitContext;
+
+/* type and struct definitions */
+extern LLVMTypeRef TypeSizeT;
+
+extern LLVMValueRef AttributeTemplate;
+extern LLVMValueRef FuncStrlen;
+
+
extern void llvm_enter_fatal_on_oom(void);
extern void llvm_leave_fatal_on_oom(void);
extern void llvm_reset_after_error(void);
extern void llvm_assert_in_fatal_section(void);
extern LLVMJitContext *llvm_create_context(int jitFlags);
+extern LLVMModuleRef llvm_mutable_module(LLVMJitContext *context);
+extern char *llvm_expand_funcname(LLVMJitContext *context, const char *basename);
+extern void *llvm_get_function(LLVMJitContext *context, const char *funcname);
+extern void llvm_split_symbol_name(const char *name, char **modname, char **funcname);
+extern LLVMValueRef llvm_get_decl(LLVMModuleRef mod, LLVMValueRef f);
+extern void llvm_copy_attributes(LLVMValueRef from, LLVMValueRef to);
/*