[pypy-commit] pypy optresult-unroll: ups

fijal noreply at buildbot.pypy.org
Thu Sep 3 20:24:05 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult-unroll
Changeset: r79401:9b54c2978f05
Date: 2015-09-03 20:21 +0200
http://bitbucket.org/pypy/pypy/changeset/9b54c2978f05/

Log:	ups

diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -302,6 +302,10 @@
                 return info.force_at_the_end_of_preamble(box,
                                                 self.optearlyforce, rec)
             return box
+        if box.type == 'i':
+            info = self.getrawptrinfo(box)
+            return info.force_at_the_end_of_preamble(box, self.optearlyforce,
+                                                     None)
         return box
 
     def flush(self):
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -8726,5 +8726,13 @@
         """
         self.optimize_loop(ops, expected, preamble)
 
+    def test_raw_buffer_in_preamble(self):
+        ops = """
+        [i1]
+        i0 = call_i(123, 10, descr=raw_malloc_descr)
+        jump(i0)
+        """
+        self.optimize_loop(ops, ops)
+
 class TestLLtype(OptimizeOptTest, LLtypeMixin):
     pass
diff --git a/rpython/jit/metainterp/optimizeopt/virtualstate.py b/rpython/jit/metainterp/optimizeopt/virtualstate.py
--- a/rpython/jit/metainterp/optimizeopt/virtualstate.py
+++ b/rpython/jit/metainterp/optimizeopt/virtualstate.py
@@ -350,8 +350,7 @@
     constbox = None
     known_class = None
     
-    def __init__(self, cpu, type, info, is_opaque=False):
-        self.is_opaque = is_opaque
+    def __init__(self, cpu, type, info):
         if info and info.is_constant():
             self.level = LEVEL_CONSTANT
             self.constbox = info.getconst()
@@ -382,8 +381,6 @@
         return False
 
     def _generate_guards(self, other, box, runtime_box, state):
-        if self.is_opaque:
-            box = None # generating guards for opaque pointers isn't safe
         # XXX This will always retrace instead of forcing anything which
         # might be what we want sometimes?
         if not isinstance(other, NotVirtualStateInfo):
@@ -668,7 +665,6 @@
         return VirtualState(state)
 
     def visit_not_virtual(self, box):
-        is_opaque = box in self.optimizer.opaque_pointers
         return NotVirtualStateInfo(self.optimizer.cpu, box.type,
                                    self.optimizer.getinfo(box))
 


More information about the pypy-commit mailing list