diff src/interp-core/jit-ir.h @ 15191:ed4f4fb78586

Move type inference from jit_convert to jit_infer * jit-ir.cc (jit_block_list::print, jit_block_list::print_dom): New function. (operator<<): New overload. * jit-ir.h (jit_block_list::print, jit_block_list::print_dom): New declaration. (operator<<): New overload. (jit_block::compute_idom): Change signature. * pt-jit.cc (jit_convert::jit_convert): Remove type inference code. (jit_convert::find_variable): vmap_t renamed to variable_map. (jit_convert::append_users_term, jit_convert::construct_ssa, jit_convert::do_construct_ssa, jit_convert::remove_dead, jit_convert::place_releases, jit_convert::release_temp, jit_convert::release_dead_phi, jit_convert::simplify_phi): Moved to jit_infer. (jit_convert_llvm::jit_convert_llvm): Compute arguments. (jit_info::jit_info): Update to use jit_infer. (jit_info::initialize): Rename to jit_info::compile. * pt-jit.h (jit_convert::append_users_term, jit_convert::construct_ssa, jit_convert::do_construct_ssa, jit_convert::remove_dead, jit_convert::place_releases, jit_convert::release_temp, jit_convert::release_dead_phi, jit_convert::simplify_phi, jit_convert::push_worklist, jit_convert::append_users): Moved to jit_infer. (jit_convert::print_blocks, jit_convert::print_dom): Moved to jit_block_list. (jit_convert_llvm::jit_convert_llvm): Do not take jit_convert as parameter. (jit_convert_llvm::jit_convert_llvm): Remove arguments parameter. (jit_convert_llvm::get_arguments): New function. (jit_infer): New class. (jit_info::initialize): Rename to jit_info::compile.
author Max Brister <max@2bass.com>
date Thu, 16 Aug 2012 18:51:30 -0500
parents a7a56b436de2
children
line wrap: on
line diff
--- a/src/interp-core/jit-ir.h	Thu Aug 16 12:18:52 2012 -0400
+++ b/src/interp-core/jit-ir.h	Thu Aug 16 18:51:30 2012 -0500
@@ -102,7 +102,6 @@
 
   const value_list& constants (void) const { return mconstants; }
 
-  // this would be easier with variadic templates
   template <typename T>
   T *create (void)
   {
@@ -127,6 +126,7 @@
   JIT_CREATE (4)
 
 #undef JIT_CREATE
+#undef DECL_ARG
 private:
   void track_value (jit_value *v);
 
@@ -168,11 +168,17 @@
 
   void insert_before (jit_block *loc, jit_block *ablock);
 
+  std::ostream& print (std::ostream& os, const std::string& header) const;
+
+  std::ostream& print_dom (std::ostream& os) const;
+
   void push_back (jit_block *b);
 private:
   std::list<jit_block *> mlist;
 };
 
+std::ostream& operator<<(std::ostream& os, const jit_block_list& blocks);
+
 class
 jit_value : public jit_internal_list<jit_value, jit_use>
 {
@@ -660,10 +666,10 @@
   // See for idom computation algorithm
   // Cooper, Keith D.; Harvey, Timothy J; and Kennedy, Ken (2001).
   // "A Simple, Fast Dominance Algorithm"
-  void compute_idom (jit_block *entry_block)
+  void compute_idom (jit_block& entry_block)
   {
     bool changed;
-    entry_block->idom = entry_block;
+    entry_block.idom = &entry_block;
     do
       changed = update_idom (mvisit_count);
     while (changed);