瀏覽代碼

Fix relative imports and use of unicode.

Bentley James Oakes 7 年之前
父節點
當前提交
bda3d76a92

+ 3 - 3
kernel/modelverse_jit/bytecode_interpreter.py

@@ -1,8 +1,8 @@
 """Interprets parsed bytecode graphs."""
 
-import modelverse_jit.bytecode_ir as bytecode_ir
-import modelverse_jit.runtime as jit_runtime
-import modelverse_kernel.primitives as primitive_functions
+import kernel.modelverse_jit.bytecode_ir as bytecode_ir
+import kernel.modelverse_jit.runtime as jit_runtime
+import kernel.modelverse_kernel.primitives as primitive_functions
 
 class BreakException(Exception):
     """A type of exception that is used to interpret 'break' instructions:

+ 3 - 3
kernel/modelverse_jit/bytecode_parser.py

@@ -1,8 +1,8 @@
 """Parses Modelverse bytecode graphs into bytecode ir."""
 
-import modelverse_jit.bytecode_ir as bytecode_ir
-import modelverse_jit.runtime as jit_runtime
-import modelverse_kernel.primitives as primitive_functions
+import kernel.modelverse_jit.bytecode_ir as bytecode_ir
+import kernel.modelverse_jit.runtime as jit_runtime
+import kernel.modelverse_kernel.primitives as primitive_functions
 
 class BytecodeParser(object):
     """Parses bytecode graphs."""

+ 3 - 3
kernel/modelverse_jit/bytecode_to_cfg.py

@@ -1,8 +1,8 @@
 """Converts bytecode IR to CFG IR."""
 
-import modelverse_jit.bytecode_ir as bytecode_ir
-import modelverse_jit.cfg_ir as cfg_ir
-import modelverse_jit.runtime as jit_runtime
+import kernel.modelverse_jit.bytecode_ir as bytecode_ir
+import kernel.modelverse_jit.cfg_ir as cfg_ir
+import kernel.modelverse_jit.runtime as jit_runtime
 
 def emit_debug_info_trace(block, debug_info, function_name):
     """Appends a tracing instruction to the given block that prints

+ 4 - 4
kernel/modelverse_jit/bytecode_to_tree.py

@@ -1,9 +1,9 @@
 """Naively converts bytecode IR to tree IR."""
 
-import modelverse_jit.bytecode_ir as bytecode_ir
-import modelverse_jit.tree_ir as tree_ir
-import modelverse_jit.runtime as jit_runtime
-import modelverse_kernel.primitives as primitive_functions
+import kernel.modelverse_jit.bytecode_ir as bytecode_ir
+import kernel.modelverse_jit.tree_ir as tree_ir
+import kernel.modelverse_jit.runtime as jit_runtime
+import kernel.modelverse_kernel.primitives as primitive_functions
 
 def get_parameter_names(compiled_function):
     """Gets the given compiled function's parameter names."""

+ 1 - 1
kernel/modelverse_jit/cfg_data_structures.py

@@ -1,6 +1,6 @@
 """Defines optimizations that replace Modelverse data structures by Python data structures."""
 
-import modelverse_jit.cfg_ir as cfg_ir
+import kernel.modelverse_jit.cfg_ir as cfg_ir
 
 SET_DEF_REWRITE_RULES = {
     'dict_keys':

+ 1 - 1
kernel/modelverse_jit/cfg_dominators.py

@@ -1,7 +1,7 @@
 """Computes dominator trees for control-flow graphs."""
 
 from collections import defaultdict
-import modelverse_jit.cfg_ir as cfg_ir
+import kernel.modelverse_jit.cfg_ir as cfg_ir
 
 def sort_postorder(entry_point):
     """Produces a postorder traversal of the graph with the given block as entry point."""

+ 5 - 5
kernel/modelverse_jit/cfg_optimization.py

@@ -1,11 +1,11 @@
 """Optimizes and analyzes CFG-IR."""
 
 from collections import defaultdict
-import modelverse_jit.cfg_ir as cfg_ir
-import modelverse_jit.cfg_dominators as cfg_dominators
-import modelverse_jit.cfg_ssa_construction as cfg_ssa_construction
-import modelverse_jit.cfg_data_structures as cfg_data_structures
-import modelverse_kernel.primitives as primitive_functions
+import kernel.modelverse_jit.cfg_ir as cfg_ir
+import kernel.modelverse_jit.cfg_dominators as cfg_dominators
+import kernel.modelverse_jit.cfg_ssa_construction as cfg_ssa_construction
+import kernel.modelverse_jit.cfg_data_structures as cfg_data_structures
+import kernel.modelverse_kernel.primitives as primitive_functions
 
 def is_empty_block(block):
     """Tests if the given block contains no parameters or definitions."""

+ 1 - 1
kernel/modelverse_jit/cfg_ssa_construction.py

@@ -1,7 +1,7 @@
 """Converts 'declare-local', 'load' and 'store' instructions into SSA form."""
 
 from collections import defaultdict
-import modelverse_jit.cfg_ir as cfg_ir
+import kernel.modelverse_jit.cfg_ir as cfg_ir
 
 def get_local_id(def_or_value):
     """Gets the node of the local resolved or declared by the given definition or value.

+ 4 - 4
kernel/modelverse_jit/cfg_to_tree.py

@@ -1,9 +1,9 @@
 """Lowers CFG-IR to tree-IR."""
 
-import modelverse_jit.cfg_ir as cfg_ir
-import modelverse_jit.tree_ir as tree_ir
-import modelverse_jit.runtime as jit_runtime
-import modelverse_jit.bytecode_to_tree as bytecode_to_tree
+import kernel.modelverse_jit.cfg_ir as cfg_ir
+import kernel.modelverse_jit.tree_ir as tree_ir
+import kernel.modelverse_jit.runtime as jit_runtime
+import kernel.modelverse_jit.bytecode_to_tree as bytecode_to_tree
 
 # The CFG deconstruction code here is based on the relooper algorithm
 # as detailed in https://github.com/kripken/Relooper/blob/master/paper.pdf

+ 4 - 4
kernel/modelverse_jit/intrinsics.py

@@ -1,8 +1,8 @@
 import time
-import modelverse_jit.jit as jit
-import modelverse_jit.tree_ir as tree_ir
-import modelverse_jit.cfg_ir as cfg_ir
-import modelverse_jit.runtime as jit_runtime
+import kernel.modelverse_jit.jit as jit
+import kernel.modelverse_jit.tree_ir as tree_ir
+import kernel.modelverse_jit.cfg_ir as cfg_ir
+import kernel.modelverse_jit.runtime as jit_runtime
 
 BINARY_INTRINSICS = {
     'value_eq' : '==',

+ 11 - 11
kernel/modelverse_jit/jit.py

@@ -1,17 +1,17 @@
 import math
 import keyword
 from collections import defaultdict
-import modelverse_kernel.primitives as primitive_functions
-import modelverse_jit.bytecode_parser as bytecode_parser
-import modelverse_jit.bytecode_to_tree as bytecode_to_tree
-import modelverse_jit.bytecode_to_cfg as bytecode_to_cfg
-import modelverse_jit.bytecode_ir as bytecode_ir
-import modelverse_jit.bytecode_interpreter as bytecode_interpreter
-import modelverse_jit.cfg_optimization as cfg_optimization
-import modelverse_jit.cfg_to_tree as cfg_to_tree
-import modelverse_jit.cfg_ir as cfg_ir
-import modelverse_jit.tree_ir as tree_ir
-import modelverse_jit.runtime as jit_runtime
+import kernel.modelverse_kernel.primitives as primitive_functions
+import kernel.modelverse_jit.bytecode_parser as bytecode_parser
+import kernel.modelverse_jit.bytecode_to_tree as bytecode_to_tree
+import kernel.modelverse_jit.bytecode_to_cfg as bytecode_to_cfg
+import kernel.modelverse_jit.bytecode_ir as bytecode_ir
+import kernel.modelverse_jit.bytecode_interpreter as bytecode_interpreter
+import kernel.modelverse_jit.cfg_optimization as cfg_optimization
+import kernel.modelverse_jit.cfg_to_tree as cfg_to_tree
+import kernel.modelverse_jit.cfg_ir as cfg_ir
+import kernel.modelverse_jit.tree_ir as tree_ir
+import kernel.modelverse_jit.runtime as jit_runtime
 
 # Import JitCompilationFailedException because it used to be defined
 # in this module.

+ 1 - 1
kernel/modelverse_jit/jit_primitives.py

@@ -1,6 +1,6 @@
 """Primitive functions that interface with the Modelverse JIT."""
 
-import modelverse_kernel.primitives as primitive_functions
+import kernel.modelverse_kernel.primitives as primitive_functions
 
 # pylint: disable=I0011,C0103
 

+ 1 - 1
kernel/modelverse_jit/runtime.py

@@ -1,4 +1,4 @@
-import modelverse_kernel.primitives as primitive_functions
+import kernel.modelverse_kernel.primitives as primitive_functions
 
 class JitCompilationFailedException(Exception):
     """A type of exception that is raised when the jit fails to compile a function."""

+ 19 - 6
kernel/modelverse_jit/tree_ir.py

@@ -28,7 +28,7 @@
 # Let's just agree to disagree on map vs list comprehensions, pylint.
 # pylint: disable=I0011,W0141
 
-import modelverse_jit.source_map as source_map
+import kernel.modelverse_jit.source_map as source_map
 
 PROFILING = False
 
@@ -172,7 +172,7 @@ class PythonGenerator(object):
         """Appends the given string to this code generator."""
         self.flush_state_definitions()
         self.code.append(text)
-        for _ in xrange(text.count('\n')):
+        for _ in range(text.count('\n')):
             self.source_map_builder.append_line()
 
     def append_indentation(self):
@@ -396,7 +396,7 @@ class SwitchInstruction(VoidInstruction):
     def create(self, new_children):
         """Creates a new instruction of this type from the given sequence of child instructions."""
         new_pairs = []
-        for i in xrange(len(self.conditions_and_clauses)):
+        for i in range(len(self.conditions_and_clauses)):
             new_pairs.append((new_children[2 * i], new_children[2 * i + 1]))
         return SwitchInstruction(new_pairs)
 
@@ -882,7 +882,7 @@ class DictionaryLiteralInstruction(Instruction):
     def create(self, new_children):
         """Creates a new instruction of this type from the given sequence of child instructions."""
         new_kv_pairs = []
-        for i in xrange(len(self.key_value_pairs)):
+        for i in range(len(self.key_value_pairs)):
             new_kv_pairs.append((new_children[2 * i], new_children[2 * i + 1]))
         return DictionaryLiteralInstruction(new_kv_pairs)
 
@@ -1096,7 +1096,14 @@ class VariableInstruction(Instruction):
     """A base class for instructions that access variables."""
     def __init__(self, name):
         Instruction.__init__(self)
-        if isinstance(name, str) or isinstance(name, unicode) or name is None:
+
+        try:
+            if isinstance(name, unicode):
+                self.name = VariableName(name)
+        except NameError:
+            pass
+
+        if isinstance(name, str) or name is None:
             self.name = VariableName(name)
         else:
             self.name = name
@@ -1182,7 +1189,13 @@ class TupleStoreLocalInstruction(VoidInstruction):
         tuple_lhs = []
         tuple_rhs = []
         for name, value in self.name_value_pairs:
-            if isinstance(name, str) or isinstance(name, unicode) or name is None:
+            try:
+                if isinstance(name, unicode):
+                    variable = VariableName(name)
+            except NameError:
+                pass
+
+            if isinstance(name, str) or name is None:
                 variable = VariableName(name)
             else:
                 variable = name