Author: Richard Plangger <r...@pasra.at>
Branch: vecopt2
Changeset: r77130:7a9dab462e3d
Date: 2015-05-01 21:19 +0200
http://bitbucket.org/pypy/pypy/changeset/7a9dab462e3d/

Log:    changes to make rpython happy

diff --git a/rpython/jit/backend/x86/regalloc.py 
b/rpython/jit/backend/x86/regalloc.py
--- a/rpython/jit/backend/x86/regalloc.py
+++ b/rpython/jit/backend/x86/regalloc.py
@@ -1510,8 +1510,8 @@
         # to save it.
         #argloc = self.loc(op.getarg(0))
         self.xrm.force_result_in_reg(op.result, op.getarg(0))
-        if op.getarg(1).value != op.getarg(2).value:
-            raise NotImplementedError("signext not implemented")
+        #if op.getarg(1).value != op.getarg(2).value:
+        #    raise NotImplementedError("signext not implemented")
 
     def consider_guard_early_exit(self, op):
         pass
diff --git a/rpython/jit/metainterp/optimizeopt/dependency.py 
b/rpython/jit/metainterp/optimizeopt/dependency.py
--- a/rpython/jit/metainterp/optimizeopt/dependency.py
+++ b/rpython/jit/metainterp/optimizeopt/dependency.py
@@ -429,6 +429,7 @@
         self.memory_refs = {}
         self.schedulable_nodes = []
         self.index_vars = {}
+        self.comparison_vars = {}
         self.guards = []
         self.build_dependencies()
 
@@ -447,7 +448,7 @@
         #
         label_pos = 0
         jump_pos = len(self.nodes)-1
-        intformod = IntegralForwardModification(self.memory_refs, 
self.index_vars)
+        intformod = IntegralForwardModification(self.memory_refs, 
self.index_vars, self.comparison_vars)
         # pass 1
         for i,node in enumerate(self.nodes):
             op = node.op
@@ -685,8 +686,9 @@
 
 class IntegralForwardModification(object):
     """ Calculates integral modifications on an integer box. """
-    def __init__(self, memory_refs, index_vars):
+    def __init__(self, memory_refs, index_vars, comparison_vars):
         self.index_vars = index_vars
+        self.comparison_vars = comparison_vars
         self.memory_refs = memory_refs
 
     def is_const_integral(self, box):
@@ -710,7 +712,7 @@
         if not self.is_const_integral(box_a1):
             right = self.get_or_create(box_a1)
         box_r = op.result
-        self.index_vars[box_r] = IndexGuard(op.getopnum(), left, right)
+        self.comparison_vars[box_r] = IndexGuard(op.getopnum(), left, right)
 
     additive_func_source = """
     def operation_{name}(self, op, node):
@@ -802,11 +804,11 @@
         if self.lindex_var and self.rindex_var:
             return (self.lindex_var, self.rindex_var)
         elif self.lindex_var:
-            return (self.lindex_var,)
+            return (self.lindex_var, None)
         elif self.rindex_var:
-            return (self.rindex_var,)
+            return (self.rindex_var, None)
         else:
-            assert False, "integer comparison must have left or right index"
+            return (None, None)
 
     def adapt_operation(self, op):
         pass
@@ -832,6 +834,7 @@
     def less(self, other):
         if self.same_variable(other):
             return self.diff(other) < 0
+        return False
 
     def clone(self):
         c = IndexVar(self.var)
diff --git a/rpython/jit/metainterp/optimizeopt/vectorize.py 
b/rpython/jit/metainterp/optimizeopt/vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/vectorize.py
@@ -132,7 +132,8 @@
         # use the target token of the label
         assert jump_op.getopnum() in (rop.LABEL, rop.JUMP)
         target_token = label_op.getdescr()
-        target_token.assumed_classes = {}
+        if not we_are_translated():
+            target_token.assumed_classes = {}
         if jump_op.getopnum() == rop.LABEL:
             jump_op = ResOperation(rop.JUMP, jump_op.getarglist(), None, 
target_token)
         else:
@@ -427,6 +428,7 @@
         strongest_guards = {}
         strongest_guards_var = {}
         index_vars = self.dependency_graph.index_vars
+        comparison_vars = self.dependency_graph.comparison_vars
         operations = self.loop.operations
         var_for_guard = {}
         for i in range(len(operations)-1, -1, -1):
@@ -435,8 +437,10 @@
                 for arg in op.getarglist():
                     var_for_guard[arg] = True
                     try:
-                        comparison = index_vars[arg]
-                        for index_var in comparison.getindex_vars():
+                        comparison = comparison_vars[arg]
+                        for index_var in list(comparison.getindex_vars()):
+                            if not index_var:
+                                continue
                             var = index_var.getvariable()
                             strongest_known = strongest_guards_var.get(var, 
None)
                             if not strongest_known:
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to