[pypy-commit] pypy optimizeopt-cleanup: Replace method Optimization.getrawptrinfo() with function getrawptrinfo()
rlamy
pypy.commits at gmail.com
Fri May 10 19:48:38 EDT 2019
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: optimizeopt-cleanup
Changeset: r96593:34d57de52fa1
Date: 2019-05-11 00:47 +0100
http://bitbucket.org/pypy/pypy/changeset/34d57de52fa1/
Log: Replace method Optimization.getrawptrinfo() with function
getrawptrinfo()
diff --git a/rpython/jit/metainterp/optimizeopt/info.py b/rpython/jit/metainterp/optimizeopt/info.py
--- a/rpython/jit/metainterp/optimizeopt/info.py
+++ b/rpython/jit/metainterp/optimizeopt/info.py
@@ -9,7 +9,6 @@
from rpython.jit.metainterp.optimize import InvalidLoop
from .util import get_box_replacement
-
INFO_NULL = 0
INFO_NONNULL = 1
INFO_UNKNOWN = 2
@@ -110,7 +109,7 @@
def mark_last_guard(self, optimizer):
if (optimizer.getlastop() is None or
- not optimizer.getlastop().is_guard()):
+ not optimizer.getlastop().is_guard()):
# there can be a really emitted operation that's not a guard
# e.g. a setfield, ignore those
return
@@ -468,7 +467,7 @@
return self.parent.getitem_raw(self.offset+offset, itemsize, descr)
def setitem_raw(self, offset, itemsize, descr, itemop):
- self.parent.setitem_raw(self.offset+offset, itemsize, descr, itemop)
+ self.parent.setitem_raw(self.offset + offset, itemsize, descr, itemop)
def _force_elements(self, op, optforce, descr):
if self.parent.is_virtual():
@@ -639,7 +638,7 @@
def _compute_index(self, index, fielddescr):
all_fdescrs = fielddescr.get_arraydescr().get_all_fielddescrs()
if all_fdescrs is None:
- return 0 # annotation hack
+ return 0 # annotation hack
one_size = len(all_fdescrs)
return index * one_size + fielddescr.get_field_descr().get_index()
@@ -675,8 +674,7 @@
for index in range(self.getlength()):
for fielddescr in fielddescrs:
itemop = self._items[i]
- if (itemop is not None and
- not isinstance(itemop, Const)):
+ if (itemop is not None and not isinstance(itemop, Const)):
ptrinfo = optimizer.getptrinfo(itemop)
if ptrinfo and ptrinfo.is_virtual():
ptrinfo.visitor_walk_recursive(itemop, visitor,
@@ -703,7 +701,8 @@
def _get_info(self, descr, optheap):
ref = self._const.getref_base()
- if not ref: raise InvalidLoop # null protection
+ if not ref:
+ raise InvalidLoop # null protection
info = optheap.const_infos.get(ref, None)
if info is None:
info = StructPtrInfo(descr)
@@ -712,7 +711,8 @@
def _get_array_info(self, descr, optheap):
ref = self._const.getref_base()
- if not ref: raise InvalidLoop # null protection
+ if not ref:
+ raise InvalidLoop # null protection
info = optheap.const_infos.get(ref, None)
if info is None:
info = ArrayPtrInfo(descr)
@@ -778,8 +778,8 @@
return self._unpack_str(mode)
def getlenbound(self, mode):
- from rpython.jit.metainterp.optimizeopt.intutils import ConstIntBound,\
- IntLowerBound
+ from rpython.jit.metainterp.optimizeopt.intutils import (
+ ConstIntBound, IntLowerBound)
length = self.getstrlen1(mode)
if length < 0:
@@ -846,3 +846,23 @@
def make_guards(self, op, short, optimizer):
short.append(ResOperation(rop.GUARD_VALUE, [op, self._const]))
+
+
+def getrawptrinfo(op):
+ from rpython.jit.metainterp.optimizeopt.intutils import IntBound
+ assert op.type == 'i'
+ op = op.get_box_replacement()
+ assert op.type == 'i'
+ if isinstance(op, ConstInt):
+ return ConstPtrInfo(op)
+ fw = op.get_forwarded()
+ if isinstance(fw, IntBound):
+ return None
+ if fw is not None:
+ if isinstance(fw, AbstractRawPtrInfo):
+ return fw
+ fw = RawStructPtrInfo()
+ op.set_forwarded(fw)
+ assert isinstance(fw, AbstractRawPtrInfo)
+ return fw
+ return None
diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -10,6 +10,7 @@
deserialize_optimizer_knowledge)
from rpython.jit.metainterp.resoperation import (
rop, AbstractResOp, GuardResOp, OpHelpers)
+from .info import getrawptrinfo
from rpython.jit.metainterp.optimizeopt import info
from rpython.jit.metainterp.optimize import InvalidLoop
from rpython.rlib.objectmodel import specialize, we_are_translated
@@ -137,7 +138,7 @@
def getptrinfo(self, op):
if op.type == 'i':
- return self.getrawptrinfo(op)
+ return getrawptrinfo(op)
elif op.type == 'f':
return None
assert op.type == 'r'
@@ -157,24 +158,6 @@
return True
return False
- def getrawptrinfo(self, op):
- assert op.type == 'i'
- op = get_box_replacement(op)
- assert op.type == 'i'
- if isinstance(op, ConstInt):
- return info.ConstPtrInfo(op)
- fw = op.get_forwarded()
- if isinstance(fw, IntBound):
- return None
- if fw is not None:
- if isinstance(fw, info.AbstractRawPtrInfo):
- return fw
- fw = info.RawStructPtrInfo()
- op.set_forwarded(fw)
- assert isinstance(fw, info.AbstractRawPtrInfo)
- return fw
- return None
-
def replace_op_with(self, op, newopnum, args=None, descr=None):
return self.optimizer.replace_op_with(op, newopnum, args, descr)
@@ -327,7 +310,7 @@
self.optearlyforce, rec)
return box
if box.type == 'i':
- info = self.getrawptrinfo(box)
+ info = getrawptrinfo(box)
if info is not None:
return info.force_at_the_end_of_preamble(box,
self.optearlyforce, None)
@@ -854,7 +837,7 @@
opinfo = self.getptrinfo(op)
return opinfo is not None and opinfo.is_virtual()
if op.type == 'i':
- opinfo = self.getrawptrinfo(op)
+ opinfo = getrawptrinfo(op)
return opinfo is not None and opinfo.is_virtual()
return False
diff --git a/rpython/jit/metainterp/optimizeopt/virtualize.py b/rpython/jit/metainterp/optimizeopt/virtualize.py
--- a/rpython/jit/metainterp/optimizeopt/virtualize.py
+++ b/rpython/jit/metainterp/optimizeopt/virtualize.py
@@ -5,8 +5,8 @@
from rpython.jit.metainterp.optimizeopt.optimizer import REMOVED
from rpython.jit.metainterp.optimizeopt.util import (
make_dispatcher_method, get_box_replacement)
-
from rpython.jit.metainterp.optimizeopt.rawbuffer import InvalidRawOperation
+from .info import getrawptrinfo
from rpython.jit.metainterp.resoperation import rop, ResOperation
@@ -246,13 +246,13 @@
self.last_emitted_operation = REMOVED
def do_RAW_FREE(self, op):
- opinfo = self.getrawptrinfo(op.getarg(1))
+ opinfo = getrawptrinfo(op.getarg(1))
if opinfo and opinfo.is_virtual():
return
return self.emit(op)
def optimize_INT_ADD(self, op):
- opinfo = self.getrawptrinfo(op.getarg(0))
+ opinfo = getrawptrinfo(op.getarg(0))
offsetbox = self.get_constant_box(op.getarg(1))
if opinfo and opinfo.is_virtual() and offsetbox is not None:
offset = offsetbox.getint()
@@ -315,7 +315,7 @@
return offset, itemsize, descr
def optimize_GETARRAYITEM_RAW_I(self, op):
- opinfo = self.getrawptrinfo(op.getarg(0))
+ opinfo = getrawptrinfo(op.getarg(0))
if opinfo and opinfo.is_virtual():
indexbox = self.get_constant_box(op.getarg(1))
if indexbox is not None:
@@ -333,7 +333,7 @@
optimize_GETARRAYITEM_RAW_F = optimize_GETARRAYITEM_RAW_I
def optimize_SETARRAYITEM_RAW(self, op):
- opinfo = self.getrawptrinfo(op.getarg(0))
+ opinfo = getrawptrinfo(op.getarg(0))
if opinfo and opinfo.is_virtual():
indexbox = self.get_constant_box(op.getarg(1))
if indexbox is not None:
@@ -355,7 +355,7 @@
return offset, itemsize, descr
def optimize_RAW_LOAD_I(self, op):
- opinfo = self.getrawptrinfo(op.getarg(0))
+ opinfo = getrawptrinfo(op.getarg(0))
if opinfo and opinfo.is_virtual():
offsetbox = self.get_constant_box(op.getarg(1))
if offsetbox is not None:
@@ -371,7 +371,7 @@
optimize_RAW_LOAD_F = optimize_RAW_LOAD_I
def optimize_RAW_STORE(self, op):
- opinfo = self.getrawptrinfo(op.getarg(0))
+ opinfo = getrawptrinfo(op.getarg(0))
if opinfo and opinfo.is_virtual():
offsetbox = self.get_constant_box(op.getarg(1))
if offsetbox is not None:
diff --git a/rpython/jit/metainterp/resume.py b/rpython/jit/metainterp/resume.py
--- a/rpython/jit/metainterp/resume.py
+++ b/rpython/jit/metainterp/resume.py
@@ -224,12 +224,13 @@
def _number_boxes(self, iter, arr, optimizer, numb_state):
""" Number boxes from one snapshot
"""
+ from rpython.jit.metainterp.optimizeopt.info import getrawptrinfo
num_boxes = numb_state.num_boxes
num_virtuals = numb_state.num_virtuals
liveboxes = numb_state.liveboxes
for item in arr:
box = iter.get(rffi.cast(lltype.Signed, item))
- box = optimizer.get_box_replacement(box)
+ box = box.get_box_replacement()
if isinstance(box, Const):
tagged = self.getconst(box)
@@ -241,7 +242,7 @@
info = optimizer.getptrinfo(box)
is_virtual = (info is not None and info.is_virtual())
if box.type == 'i':
- info = optimizer.getrawptrinfo(box)
+ info = getrawptrinfo(box)
is_virtual = (info is not None and info.is_virtual())
if is_virtual:
tagged = tag(num_virtuals, TAGVIRTUAL)
@@ -414,6 +415,7 @@
return tagbits == TAGVIRTUAL
def finish(self, pending_setfields=[]):
+ from rpython.jit.metainterp.optimizeopt.info import getrawptrinfo
optimizer = self.optimizer
# compute the numbering
storage = self.storage
@@ -442,7 +444,7 @@
info = optimizer.getptrinfo(box)
else:
assert box.type == 'i'
- info = optimizer.getrawptrinfo(box)
+ info = getrawptrinfo(box)
assert info.is_virtual()
info.visitor_walk_recursive(box, self, optimizer)
diff --git a/rpython/jit/metainterp/test/test_resume.py b/rpython/jit/metainterp/test/test_resume.py
--- a/rpython/jit/metainterp/test/test_resume.py
+++ b/rpython/jit/metainterp/test/test_resume.py
@@ -15,7 +15,7 @@
unpack_numbering, create_numbering)
from rpython.jit.metainterp.opencoder import Trace
-from rpython.jit.metainterp.optimizeopt import info
+from rpython.jit.metainterp.optimizeopt import info, util
from rpython.jit.metainterp.history import (
ConstInt, Const, AbstractDescr, ConstPtr, ConstFloat, IntFrontendOp,
RefFrontendOp, CONST_NULL)
@@ -51,12 +51,8 @@
op = op.get_forwarded()
return op
- def getrawptrinfo(self, op):
- op = self.get_box_replacement(op)
- return op.get_forwarded()
-
def getptrinfo(self, op):
- op = self.get_box_replacement(op)
+ op = util.get_box_replacement(op)
return op.get_forwarded()
More information about the pypy-commit
mailing list