annotate src/pt-jit.h @ 14899:f25d2224fa02

Initial JIT support build-aux/common.mk: Add llvm flags. configure.ac: Link with llvm. src/Makefile: Add pt-jit. src/link-deps.mk: Link with llvm. src/oct-conf.in.h: Add llvm flags. src/toplev.cc: Add llvm flags. src/pt-eval.cc: Try to jit statements. src/pt-jit.cc: New file. src/pt-jit.h: New file
author Max Brister <max@2bass.com>
date Sun, 06 May 2012 20:17:30 -0600
parents
children 516b4a15b775
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14899
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
1 /*
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
2
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
3 Copyright (C) 2009-2012 John W. Eaton
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
4
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
5 This file is part of Octave.
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
6
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
10 option) any later version.
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
11
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
15 for more details.
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
16
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, see
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
19 <http://www.gnu.org/licenses/>.
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
20
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
21 */
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
22
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
23 #if !defined (octave_tree_jit_h)
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
24 #define octave_tree_jit_h 1
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
25
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
26 #include <map>
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
27 #include <stdexcept>
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
28 #include <vector>
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
29
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
30 #include "pt-walk.h"
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
31
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
32 class jit_fail_exception : public std::exception {};
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
33
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
34 // LLVM forward declares
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
35 namespace llvm
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
36 {
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
37 class Value;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
38 class Module;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
39 class FunctionPassManager;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
40 class ExecutionEngine;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
41 class Function;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
42 class BasicBlock;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
43 class LLVMContext;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
44 }
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
45
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
46 class tree;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
47
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
48 class
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
49 OCTINTERP_API
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
50 tree_jit : private tree_walker
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
51 {
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
52 public:
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
53 tree_jit (void);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
54
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
55 ~tree_jit (void);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
56
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
57 bool execute (tree& tee);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
58 private:
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
59 typedef void (*jit_function)(bool*, double*);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
60
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
61 class function_info
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
62 {
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
63 public:
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
64 function_info (void);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
65 function_info (jit_function fn, const std::vector<std::string>& args,
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
66 const std::vector<bool>& args_used);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
67
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
68 bool execute ();
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
69 private:
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
70 jit_function function;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
71 std::vector<std::string> arguments;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
72
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
73 // is the argument used? or is it just declared?
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
74 std::vector<bool> argument_used;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
75 };
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
76
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
77 struct variable_info
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
78 {
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
79 llvm::Value *defined;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
80 llvm::Value *value;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
81 bool use;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
82 };
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
83
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
84 function_info *compile (tree& tee);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
85
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
86 variable_info find (const std::string &name, bool use);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
87
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
88 void do_assign (variable_info vinfo, llvm::Value *value);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
89
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
90 void emit_print (const std::string& vname, llvm::Value *value);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
91
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
92 // tree_walker
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
93 void visit_anon_fcn_handle (tree_anon_fcn_handle&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
94
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
95 void visit_argument_list (tree_argument_list&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
96
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
97 void visit_binary_expression (tree_binary_expression&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
98
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
99 void visit_break_command (tree_break_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
100
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
101 void visit_colon_expression (tree_colon_expression&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
102
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
103 void visit_continue_command (tree_continue_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
104
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
105 void visit_global_command (tree_global_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
106
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
107 void visit_persistent_command (tree_persistent_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
108
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
109 void visit_decl_elt (tree_decl_elt&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
110
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
111 void visit_decl_init_list (tree_decl_init_list&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
112
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
113 void visit_simple_for_command (tree_simple_for_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
114
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
115 void visit_complex_for_command (tree_complex_for_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
116
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
117 void visit_octave_user_script (octave_user_script&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
118
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
119 void visit_octave_user_function (octave_user_function&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
120
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
121 void visit_octave_user_function_header (octave_user_function&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
122
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
123 void visit_octave_user_function_trailer (octave_user_function&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
124
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
125 void visit_function_def (tree_function_def&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
126
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
127 void visit_identifier (tree_identifier&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
128
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
129 void visit_if_clause (tree_if_clause&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
130
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
131 void visit_if_command (tree_if_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
132
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
133 void visit_if_command_list (tree_if_command_list&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
134
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
135 void visit_index_expression (tree_index_expression&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
136
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
137 void visit_matrix (tree_matrix&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
138
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
139 void visit_cell (tree_cell&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
140
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
141 void visit_multi_assignment (tree_multi_assignment&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
142
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
143 void visit_no_op_command (tree_no_op_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
144
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
145 void visit_constant (tree_constant&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
146
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
147 void visit_fcn_handle (tree_fcn_handle&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
148
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
149 void visit_parameter_list (tree_parameter_list&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
150
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
151 void visit_postfix_expression (tree_postfix_expression&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
152
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
153 void visit_prefix_expression (tree_prefix_expression&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
154
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
155 void visit_return_command (tree_return_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
156
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
157 void visit_return_list (tree_return_list&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
158
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
159 void visit_simple_assignment (tree_simple_assignment&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
160
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
161 void visit_statement (tree_statement&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
162
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
163 void visit_statement_list (tree_statement_list&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
164
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
165 void visit_switch_case (tree_switch_case&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
166
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
167 void visit_switch_case_list (tree_switch_case_list&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
168
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
169 void visit_switch_command (tree_switch_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
170
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
171 void visit_try_catch_command (tree_try_catch_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
172
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
173 void do_unwind_protect_cleanup_code (tree_statement_list *list);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
174
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
175 void visit_unwind_protect_command (tree_unwind_protect_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
176
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
177 void visit_while_command (tree_while_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
178
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
179 void visit_do_until_command (tree_do_until_command&);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
180
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
181 void fail (void);
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
182
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
183 typedef std::map<std::string, variable_info> var_map;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
184 typedef var_map::iterator var_map_iterator;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
185 typedef std::map<tree*, function_info*> finfo_map;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
186 typedef finfo_map::iterator finfo_map_iterator;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
187
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
188 std::vector<llvm::Value*> value_stack;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
189 var_map variables;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
190 finfo_map compiled_functions;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
191
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
192 llvm::LLVMContext &context;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
193 llvm::Module *module;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
194 llvm::FunctionPassManager *pass_manager;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
195 llvm::ExecutionEngine *engine;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
196 llvm::BasicBlock *entry_block;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
197
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
198 llvm::Function *print_double;
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
199 };
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
200
f25d2224fa02 Initial JIT support
Max Brister <max@2bass.com>
parents:
diff changeset
201 #endif