Parcourir la source

Implement CFG input, output->tree lowering

jonathanvdc il y a 8 ans
Parent
commit
b2b27d5a0f
1 fichiers modifiés avec 11 ajouts et 1 suppressions
  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(
             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 = {
         cfg_ir.Literal : lower_literal,
         cfg_ir.CheckLocalExists : lower_check_local_exists,
@@ -403,7 +411,9 @@ class LoweringState(object):
         cfg_ir.AllocateRootNode : lower_alloc_root_node,
         cfg_ir.DeallocateRootNode : lower_free_root_node,
         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):