Browse Source

Apply tree optimizations to lowered CFG

jonathanvdc 8 years ago
parent
commit
14f6d31ab7
2 changed files with 8 additions and 2 deletions
  1. 1 1
      kernel/modelverse_jit/cfg_to_tree.py
  2. 7 1
      kernel/modelverse_jit/jit.py

+ 1 - 1
kernel/modelverse_jit/cfg_to_tree.py

@@ -1002,4 +1002,4 @@ def lower_flow_graph(entry_point, jit):
         lowered_body = reloop_function_body(entry_point).lower(cfg_lowerer)
         lowered_body = tree_ir.CompoundInstruction(
             cfg_lowerer.lower_jump(cfg_ir.create_jump(entry_point)), lowered_body)
-    return tree_ir.map_and_simplify(lambda x: x, lowered_body)
+    return lowered_body

+ 7 - 1
kernel/modelverse_jit/jit.py

@@ -687,7 +687,13 @@ def compile_function_body_fast(jit, function_name, body_id, _):
             "CFG for function '%s' at '%d':\n%s" % (
                 function_name, body_id,
                 '\n'.join(map(str, cfg_ir.get_all_reachable_blocks(entry_point)))))
+
+    # Lower the CFG to tree IR.
+    constructed_body = cfg_to_tree.lower_flow_graph(entry_point, jit)
+
+    # Optimize the tree that was generated.
+    constructed_body, = yield [("CALL_ARGS", [optimize_tree_ir, (constructed_body,)])]
     raise primitive_functions.PrimitiveFinished(
         create_bare_function(
             function_name, parameter_list,
-            cfg_to_tree.lower_flow_graph(entry_point, jit)))
+            constructed_body))