Browse Source

Implement CFG input, output->tree lowering

jonathanvdc 8 years ago
parent
commit
b2b27d5a0f
1 changed files with 11 additions and 1 deletions
  1. 11 1
      kernel/modelverse_jit/cfg_to_tree.py

+ 11 - 1
kernel/modelverse_jit/cfg_to_tree.py

@@ -395,6 +395,14 @@ class LoweringState(object):
         return bytecode_to_tree.create_assign(
         return bytecode_to_tree.create_assign(
             self.load_definition(value.pointer), self.load_definition(value.value))
             self.load_definition(value.pointer), self.load_definition(value.value))
 
 
+    def lower_input(self, _):
+        """Lowers an 'input' value."""
+        return bytecode_to_tree.create_input(self.jit.use_input_function)
+
+    def lower_output(self, value):
+        """Lowers an 'output' value."""
+        return bytecode_to_tree.create_output(self.load_definition(value.output_value))
+
     value_lowerings = {
     value_lowerings = {
         cfg_ir.Literal : lower_literal,
         cfg_ir.Literal : lower_literal,
         cfg_ir.CheckLocalExists : lower_check_local_exists,
         cfg_ir.CheckLocalExists : lower_check_local_exists,
@@ -403,7 +411,9 @@ class LoweringState(object):
         cfg_ir.AllocateRootNode : lower_alloc_root_node,
         cfg_ir.AllocateRootNode : lower_alloc_root_node,
         cfg_ir.DeallocateRootNode : lower_free_root_node,
         cfg_ir.DeallocateRootNode : lower_free_root_node,
         cfg_ir.LoadPointer : lower_load_pointer,
         cfg_ir.LoadPointer : lower_load_pointer,
-        cfg_ir.StoreAtPointer : lower_store_pointer
+        cfg_ir.StoreAtPointer : lower_store_pointer,
+        cfg_ir.Input : lower_input,
+        cfg_ir.Output : lower_output
     }
     }
 
 
     def lower_flow(self, flow):
     def lower_flow(self, flow):