Author: Armin Rigo <[email protected]>
Branch:
Changeset: r71779:94a0df43071c
Date: 2014-05-29 19:50 +0200
http://bitbucket.org/pypy/pypy/changeset/94a0df43071c/
Log: Fix noConst(): recent improvements to heapcache mean this hack no
longer works. Use instead some direct way.
diff --git a/rpython/jit/codewriter/jtransform.py
b/rpython/jit/codewriter/jtransform.py
--- a/rpython/jit/codewriter/jtransform.py
+++ b/rpython/jit/codewriter/jtransform.py
@@ -561,8 +561,10 @@
return [SpaceOperation('-live-', [], None), op1, None]
if hints.get('force_virtualizable'):
return SpaceOperation('hint_force_virtualizable', [op.args[0]],
None)
- else:
- log.WARNING('ignoring hint %r at %r' % (hints, self.graph))
+ if hints.get('force_no_const'): # for tests only
+ assert getkind(op.args[0].concretetype) == 'int'
+ return SpaceOperation('int_same_as', [op.args[0]], op.result)
+ log.WARNING('ignoring hint %r at %r' % (hints, self.graph))
def _rewrite_raw_malloc(self, op, name, args):
d = op.args[1].value.copy()
diff --git a/rpython/jit/metainterp/blackhole.py
b/rpython/jit/metainterp/blackhole.py
--- a/rpython/jit/metainterp/blackhole.py
+++ b/rpython/jit/metainterp/blackhole.py
@@ -380,6 +380,10 @@
# ----------
+ @arguments("i", returns="i")
+ def bhimpl_int_same_as(a):
+ return a
+
@arguments("i", "i", returns="i")
def bhimpl_int_add(a, b):
return intmask(a + b)
diff --git a/rpython/jit/metainterp/pyjitpl.py
b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -231,6 +231,14 @@
''' % (_opimpl, _opimpl.upper())).compile()
@arguments("box")
+ def opimpl_int_same_as(self, box):
+ # for tests only: emits a same_as, forcing the result to be in a Box
+ resbox = history.BoxInt(box.getint())
+ self.metainterp._record_helper_nonpure_varargs(
+ rop.SAME_AS, resbox, None, [box])
+ return resbox
+
+ @arguments("box")
def opimpl_ptr_nonzero(self, box):
return self.execute(rop.PTR_NE, box, history.CONST_NULL)
diff --git a/rpython/jit/metainterp/test/support.py
b/rpython/jit/metainterp/test/support.py
--- a/rpython/jit/metainterp/test/support.py
+++ b/rpython/jit/metainterp/test/support.py
@@ -273,6 +273,5 @@
def noConst(x):
"""Helper function for tests, returning 'x' as a BoxInt/BoxPtr
even if it is a ConstInt/ConstPtr."""
- f1 = _Foo(); f2 = _Foo()
- f1.x = x; f2.x = 0
- return f1.x
+ from rpython.rlib import jit
+ return jit.hint(x, force_no_const=True)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit