Author: Maciej Fijalkowski <[email protected]>
Branch: optresult-unroll
Changeset: r79260:1e42367301da
Date: 2015-08-27 18:39 +0200
http://bitbucket.org/pypy/pypy/changeset/1e42367301da/
Log: work on rpythonization
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
@@ -523,6 +523,7 @@
@staticmethod
def check_consistency_of(inputargs, operations, check_descr=True):
+ "NOT_RPYTHON"
for box in inputargs:
assert not isinstance(box, Const), "Loop.inputargs contains %r" %
(box,)
seen = dict.fromkeys(inputargs)
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
@@ -67,7 +67,7 @@
pass
def make_guards(self, op, short):
- short.append(ResOperation(rop.GUARD_VALUE, [op, self._const]))
+ pass
class NonNullPtrInfo(PtrInfo):
_attrs_ = ('last_guard_pos',)
@@ -158,6 +158,7 @@
def copy_fields_to_const(self, constinfo, optheap):
if self._fields is not None:
info = constinfo._get_info(optheap)
+ assert isinstance(info, AbstractStructPtrInfo)
info._fields = self._fields[:]
def all_items(self):
@@ -440,6 +441,7 @@
arraydescr = self.arraydescr
if self._items is not None:
info = constinfo._get_array_info(arraydescr, optheap)
+ assert isinstance(info, ArrayPtrInfo)
info._items = self._items[:]
def _force_elements(self, op, optforce, descr):
@@ -599,6 +601,9 @@
def getconst(self):
return self._const
+ def make_guards(self, op, short):
+ short.append(ResOperation(rop.GUARD_VALUE, [op, self._const]))
+
def _get_info(self, optheap):
ref = self._const.getref_base()
info = optheap.const_infos.get(ref, None)
diff --git a/rpython/jit/metainterp/optimizeopt/shortpreamble.py
b/rpython/jit/metainterp/optimizeopt/shortpreamble.py
--- a/rpython/jit/metainterp/optimizeopt/shortpreamble.py
+++ b/rpython/jit/metainterp/optimizeopt/shortpreamble.py
@@ -1,5 +1,6 @@
from collections import OrderedDict
+from rpython.rlib.objectmodel import we_are_translated
from rpython.jit.metainterp.resoperation import ResOperation, OpHelpers,\
rop, AbstractResOp, AbstractInputArg
from rpython.jit.metainterp.history import Const, make_hashable_int,\
@@ -409,6 +410,7 @@
label_op = ResOperation(rop.LABEL, self.short_inputargs[:])
jump_op = ResOperation(rop.JUMP, self.short_preamble_jump)
# WARNING! the short_preamble_jump is shared on purpose
- TreeLoop.check_consistency_of(self.short_inputargs,
- self.short + [jump_op],
check_descr=False)
+ if not we_are_translated():
+ TreeLoop.check_consistency_of(self.short_inputargs,
+ self.short + [jump_op], check_descr=False)
return [label_op] + self.short + [jump_op]
diff --git a/rpython/jit/metainterp/optimizeopt/unroll.py
b/rpython/jit/metainterp/optimizeopt/unroll.py
--- a/rpython/jit/metainterp/optimizeopt/unroll.py
+++ b/rpython/jit/metainterp/optimizeopt/unroll.py
@@ -52,11 +52,15 @@
self.make_constant_class(op, known_class, False)
if isinstance(preamble_info, info.ArrayPtrInfo):
arr_info = info.ArrayPtrInfo(preamble_info.arraydescr)
- arr_info.lenbound = preamble_info.getlenbound(None).clone()
+ bound = preamble_info.getlenbound(None).clone()
+ assert isinstance(bound, intutils.IntBound)
+ arr_info.lenbound = bound
op.set_forwarded(arr_info)
if isinstance(preamble_info, StrPtrInfo):
str_info = StrPtrInfo(preamble_info.mode)
- str_info.lenbound = preamble_info.getlenbound(None).clone()
+ bound = preamble_info.getlenbound(None).clone()
+ assert isinstance(bound, intutils.IntBound)
+ str_info.lenbound = bound
op.set_forwarded(str_info)
if preamble_info.is_nonnull():
self.make_nonnull(op)
@@ -130,7 +134,9 @@
# the label_op again
label_op.initarglist(label_args + extra)
if new_virtual_state is not None:
- self.jump_to_preamble(start_label.getdescr(), end_jump, info)
+ celltoken = start_label.getdescr()
+ assert isinstance(celltoken, JitCellToken)
+ self.jump_to_preamble(celltoken, end_jump, info)
return (UnrollInfo(target_token, label_op, []),
self.optimizer._newoperations)
#return new_virtual_state, self.optimizer._newoperations
@@ -147,6 +153,7 @@
call_pure_results, True)
jump_op = operations[-1]
cell_token = jump_op.getdescr()
+ assert isinstance(cell_token, JitCellToken)
if not inline_short_preamble or len(cell_token.target_tokens) == 1:
return self.jump_to_preamble(cell_token, jump_op, info)
# force all the information that does not go to the short
diff --git a/rpython/jit/metainterp/optimizeopt/virtualstate.py
b/rpython/jit/metainterp/optimizeopt/virtualstate.py
--- a/rpython/jit/metainterp/optimizeopt/virtualstate.py
+++ b/rpython/jit/metainterp/optimizeopt/virtualstate.py
@@ -1,7 +1,7 @@
from rpython.jit.metainterp.walkvirtual import VirtualVisitor
from rpython.jit.metainterp.history import ConstInt, ConstPtr, ConstFloat
from rpython.jit.metainterp.optimizeopt.info import ArrayPtrInfo,\
- ArrayStructInfo
+ ArrayStructInfo, AbstractStructPtrInfo
from rpython.jit.metainterp.optimizeopt.intutils import \
MININT, MAXINT, IntBound
from rpython.jit.metainterp.resoperation import rop, ResOperation,\
@@ -175,6 +175,7 @@
def enum_forced_boxes(self, boxes, box, optimizer, force_boxes=False):
box = optimizer.get_box_replacement(box)
info = optimizer.getptrinfo(box)
+ assert isinstance(info, AbstractStructPtrInfo)
if info is None or not info.is_virtual():
raise BadVirtualState()
for i in range(len(self.fielddescrs)):
@@ -255,7 +256,7 @@
for i in range(len(self.fieldstate)):
fieldbox = info.getitem(self.arraydescr, i)
if fieldbox is None:
- xxx
+ raise Exception("do we ever get here?")
v = value.get_missing_null_value()
s = self.fieldstate[i]
if s.position > self.position:
diff --git a/rpython/jit/metainterp/optimizeopt/vstring.py
b/rpython/jit/metainterp/optimizeopt/vstring.py
--- a/rpython/jit/metainterp/optimizeopt/vstring.py
+++ b/rpython/jit/metainterp/optimizeopt/vstring.py
@@ -127,7 +127,8 @@
if self.lenbound and self.lenbound.lower >= 1:
if self.mode is mode_string:
lenop = ResOperation(rop.STRLEN, [op])
- elif self.mode is mode_unicode:
+ else:
+ assert self.mode is mode_unicode
lenop = ResOperation(rop.UNICODELEN, [op])
short.append(lenop)
self.lenbound.make_guards(lenop, short)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit