Explorar o código

Define bytecode_to_cfg.py skeleton

jonathanvdc %!s(int64=8) %!d(string=hai) anos
pai
achega
a322c1c039
Modificáronse 1 ficheiros con 69 adicións e 0 borrados
  1. 69 0
      kernel/modelverse_jit/bytecode_to_cfg.py

+ 69 - 0
kernel/modelverse_jit/bytecode_to_cfg.py

@@ -0,0 +1,69 @@
+"""Converts bytecode IR to CFG IR."""
+
+import modelverse_jit.bytecode_ir as bytecode_ir
+import modelverse_jit.cfg_ir as cfg_ir
+
+class AnalysisState(object):
+    """State that is common to the bytecode->CFG transformation of a function."""
+    def __init__(self):
+        pass
+
+    def analyze_if(self, instruction):
+        raise NotImplementedError()
+
+    def analyze_while(self, instruction):
+        raise NotImplementedError()
+
+    def analyze_return(self, instruction):
+        raise NotImplementedError()
+
+    def analyze_constant(self, instruction):
+        raise NotImplementedError()
+
+    def analyze_resolve(self, instruction):
+        raise NotImplementedError()
+
+    def analyze_declare(self, instruction):
+        raise NotImplementedError()
+
+    def analyze_global(self, instruction):
+        raise NotImplementedError()
+
+    def analyze_assign(self, instruction):
+        raise NotImplementedError()
+
+    def analyze_access(self, instruction):
+        raise NotImplementedError()
+
+    def analyze_output(self, instruction):
+        raise NotImplementedError()
+
+    def analyze_input(self, instruction):
+        raise NotImplementedError()
+
+    def analyze_call(self, instruction):
+        raise NotImplementedError()
+
+    def analyze_break(self, instruction):
+        raise NotImplementedError()
+
+    def analyze_continue(self, instruction):
+        raise NotImplementedError()
+
+    instruction_analyzers = {
+        bytecode_ir.SelectInstruction : analyze_if,
+        bytecode_ir.WhileInstruction : analyze_while,
+        bytecode_ir.ReturnInstruction : analyze_return,
+        bytecode_ir.ConstantInstruction : analyze_constant,
+        bytecode_ir.ResolveInstruction : analyze_resolve,
+        bytecode_ir.DeclareInstruction : analyze_declare,
+        bytecode_ir.GlobalInstruction : analyze_global,
+        bytecode_ir.AssignInstruction : analyze_assign,
+        bytecode_ir.AccessInstruction : analyze_access,
+        bytecode_ir.OutputInstruction : analyze_output,
+        bytecode_ir.InputInstruction : analyze_input,
+        bytecode_ir.CallInstruction : analyze_call,
+        bytecode_ir.BreakInstruction : analyze_break,
+        bytecode_ir.ContinueInstruction : analyze_continue
+    }
+