diff src/jit-typeinfo.h @ 15019:ae3670d4df29

Update the execution engine's global mapping for external functions * src/jit_typeinfo.cc: (octave_jit_print_double): Rename to octave_jit_print_scalar (jit_function::do_add_mapping): New function. (jit_typeinfo::jit_typeinfo, jit_typeinfo::add_print): Add mappings. (jit_typeinfo::do_insert_error_check): Rename builder argument. * src/jit_typeinfo.h: (jit_function::add_mapping): New function. (jit_function::do_add_mapping): New declaration. (jit_typeinfo::add_print): Take function ptr as argument.
author Max Brister <max@2bass.com>
date Thu, 26 Jul 2012 10:40:26 -0500
parents 005cb78e1dd1
children bc32288f4a42
line wrap: on
line diff
--- a/src/jit-typeinfo.h	Thu Jul 26 08:13:22 2012 -0700
+++ b/src/jit-typeinfo.h	Thu Jul 26 10:40:26 2012 -0500
@@ -231,6 +231,12 @@
 
   jit_function (const jit_function& fn);
 
+  template <typename T>
+  void add_mapping (llvm::ExecutionEngine *engine, T fn)
+  {
+    do_add_mapping (engine, reinterpret_cast<void *> (fn));
+  }
+
   bool valid (void) const { return llvm_function; }
 
   std::string name (void) const;
@@ -289,6 +295,8 @@
 
   const std::vector<jit_type *>& arguments (void) const { return args; }
 private:
+  void do_add_mapping (llvm::ExecutionEngine *engine, void *fn);
+
   llvm::Module *module;
   llvm::Function *llvm_function;
   jit_type *mresult;
@@ -533,7 +541,7 @@
                       llvm::Type *llvm_type);
 
 
-  void add_print (jit_type *ty);
+  void add_print (jit_type *ty, void *fptr);
 
   void add_binary_op (jit_type *ty, int op, int llvm_op);