[pypy-commit] pypy heapcache-refactor: Allow storing negative numbers in .position_and_flags
arigo
pypy.commits at gmail.com
Fri Mar 18 12:53:46 EDT 2016
Author: Armin Rigo <arigo at tunes.org>
Branch: heapcache-refactor
Changeset: r83132:1994d682f8b3
Date: 2016-03-18 17:52 +0100
http://bitbucket.org/pypy/pypy/changeset/1994d682f8b3/
Log: Allow storing negative numbers in .position_and_flags
diff --git a/rpython/jit/metainterp/heapcache.py b/rpython/jit/metainterp/heapcache.py
--- a/rpython/jit/metainterp/heapcache.py
+++ b/rpython/jit/metainterp/heapcache.py
@@ -1,6 +1,5 @@
from rpython.jit.metainterp.history import Const, ConstInt
from rpython.jit.metainterp.history import FrontendOp, RefFrontendOp
-from rpython.jit.metainterp.history import FO_REPLACED_WITH_CONST
from rpython.jit.metainterp.resoperation import rop, OpHelpers
from rpython.jit.metainterp.executor import constant_from_op
from rpython.rlib.rarithmetic import r_uint32, r_uint
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
@@ -642,8 +642,8 @@
# ____________________________________________________________
-FO_POSITION_MASK = r_uint(0x7FFFFFFF)
-FO_REPLACED_WITH_CONST = r_uint(0x80000000)
+FO_REPLACED_WITH_CONST = r_uint(1)
+FO_POSITION_SHIFT = 1
class FrontendOp(AbstractResOp):
@@ -651,11 +651,10 @@
_attrs_ = ('position_and_flags',)
def __init__(self, pos):
- assert pos >= 0
- self.position_and_flags = r_uint(pos)
+ self.position_and_flags = r_uint(pos << FO_POSITION_SHIFT)
def get_position(self):
- return intmask(self.position_and_flags & FO_POSITION_MASK)
+ return intmask(r_uint32(self.position_and_flags)) >> FO_POSITION_SHIFT
def is_replaced_with_const(self):
return bool(self.position_and_flags & FO_REPLACED_WITH_CONST)
More information about the pypy-commit
mailing list