Author: Armin Rigo <[email protected]>
Branch: heapcache-refactor
Changeset: r83134:5f85929ae2ee
Date: 2016-03-18 18:00 +0100
http://bitbucket.org/pypy/pypy/changeset/5f85929ae2ee/
Log: Test and fix
diff --git a/rpython/jit/metainterp/history.py
b/rpython/jit/metainterp/history.py
--- a/rpython/jit/metainterp/history.py
+++ b/rpython/jit/metainterp/history.py
@@ -651,10 +651,15 @@
_attrs_ = ('position_and_flags',)
def __init__(self, pos):
- self.position_and_flags = r_uint(pos << FO_POSITION_SHIFT)
+ # p is the 32-bit position shifted left by one (might be negative,
+ # but casted to the 32-bit UINT type)
+ p = rffi.cast(rffi.UINT, pos << FO_POSITION_SHIFT)
+ self.position_and_flags = r_uint(p) # zero-extended to a full word
def get_position(self):
- return intmask(r_uint32(self.position_and_flags)) >> FO_POSITION_SHIFT
+ # p is the signed 32-bit position, from self.position_and_flags
+ p = rffi.cast(rffi.INT, self.position_and_flags)
+ return intmask(p) >> FO_POSITION_SHIFT
def is_replaced_with_const(self):
return bool(self.position_and_flags & FO_REPLACED_WITH_CONST)
diff --git a/rpython/jit/metainterp/test/test_history.py
b/rpython/jit/metainterp/test/test_history.py
--- a/rpython/jit/metainterp/test/test_history.py
+++ b/rpython/jit/metainterp/test/test_history.py
@@ -62,6 +62,12 @@
assert c5.nonnull()
assert c6.nonnull()
+def test_frontendop():
+ f = FrontendOp(42)
+ assert f.get_position() == 42
+ f = FrontendOp(-56)
+ assert f.get_position() == -56
+
class TestZTranslated(StandaloneTests):
def test_ztranslated_same_constant_float(self):
def fn(args):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit