[pypy-svn] r67142 - in pypy/branch/pyjitpl5-constspecnode/pypy/jit/metainterp: . test

antocuni at codespeak.net antocuni at codespeak.net
Mon Aug 24 10:57:49 CEST 2009


Author: antocuni
Date: Mon Aug 24 10:57:48 2009
New Revision: 67142

Modified:
   pypy/branch/pyjitpl5-constspecnode/pypy/jit/metainterp/optimizeopt.py
   pypy/branch/pyjitpl5-constspecnode/pypy/jit/metainterp/specnode.py
   pypy/branch/pyjitpl5-constspecnode/pypy/jit/metainterp/test/test_optimizeopt.py
Log:
(iko, antocuni) optimize away constants from inputargs and exitargs


Modified: pypy/branch/pyjitpl5-constspecnode/pypy/jit/metainterp/optimizeopt.py
==============================================================================
--- pypy/branch/pyjitpl5-constspecnode/pypy/jit/metainterp/optimizeopt.py	(original)
+++ pypy/branch/pyjitpl5-constspecnode/pypy/jit/metainterp/optimizeopt.py	Mon Aug 24 10:57:48 2009
@@ -295,14 +295,14 @@
 class __extend__(SpecNode):
     def setup_virtual_node(self, optimizer, box, newinputargs):
         newinputargs.append(box)
-    def setup_constant_node(self, optimizer, box):
-        pass
     def teardown_virtual_node(self, optimizer, value, newexitargs):
         newexitargs.append(value.force_box())
 
 class __extend__(ConstantSpecNode):
-    def setup_constant_node(self, optimizer, box):
+    def setup_virtual_node(self, optimizer, box, newinputargs):
         optimizer.make_constant(box)
+    def teardown_virtual_node(self, optimizer, value, newexitargs):
+        pass
 
 class __extend__(AbstractVirtualStructSpecNode):
     def setup_virtual_node(self, optimizer, box, newinputargs):
@@ -469,7 +469,6 @@
         newinputargs = []
         for i in range(len(inputargs)):
             specnodes[i].setup_virtual_node(self, inputargs[i], newinputargs)
-            specnodes[i].setup_constant_node(self, inputargs[i])
         self.loop.inputargs = newinputargs
 
     # ----------

Modified: pypy/branch/pyjitpl5-constspecnode/pypy/jit/metainterp/specnode.py
==============================================================================
--- pypy/branch/pyjitpl5-constspecnode/pypy/jit/metainterp/specnode.py	(original)
+++ pypy/branch/pyjitpl5-constspecnode/pypy/jit/metainterp/specnode.py	Mon Aug 24 10:57:48 2009
@@ -5,6 +5,12 @@
     __metaclass__ = extendabletype     # extended in optimizefindnode.py
     __slots__ = ()
 
+    def equals(self, other):
+        raise NotImplementedError
+ 
+    def extract_runtime_data(self, cpu, valuebox, resultlist):
+        raise NotImplementedError
+
 
 class NotSpecNode(SpecNode):
     __slots__ = ()
@@ -27,6 +33,10 @@
         return isinstance(other, ConstantSpecNode) and \
                self.constbox == other.constbox
 
+    def extract_runtime_data(self, cpu, valuebox, resultlist):
+        raise NotImplementedError
+
+
 class AbstractVirtualStructSpecNode(SpecNode):
     def __init__(self, fields):
         self.fields = fields    # list: [(fieldofs, subspecnode)]

Modified: pypy/branch/pyjitpl5-constspecnode/pypy/jit/metainterp/test/test_optimizeopt.py
==============================================================================
--- pypy/branch/pyjitpl5-constspecnode/pypy/jit/metainterp/test/test_optimizeopt.py	(original)
+++ pypy/branch/pyjitpl5-constspecnode/pypy/jit/metainterp/test/test_optimizeopt.py	Mon Aug 24 10:57:48 2009
@@ -231,8 +231,8 @@
         jump(ConstPtr(myptr))
         """
         expected = """
-        [p1]
-        jump(ConstPtr(myptr))
+        []
+        jump()
         """
         self.optimize_loop(ops, 'Constant(myptr)', expected, p1=self.nodebox.value)
         
@@ -1046,11 +1046,11 @@
         jump(p1)
         """
         expected = """
-        [p1]
+        []
         i1 = getfield_gc(ConstPtr(myptr), descr=valuedescr)
         escape(i1)
         escape(i1)
-        jump(ConstPtr(myptr))
+        jump()
         """
         self.optimize_loop(ops, 'Constant(myptr)', expected, p1=self.nodebox.value)
 



More information about the Pypy-commit mailing list