[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