[pypy-commit] pypy optresult: start killing things
fijal
noreply at buildbot.pypy.org
Thu Jun 4 18:38:17 CEST 2015
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult
Changeset: r77869:e525465d156c
Date: 2015-06-04 18:22 +0200
http://bitbucket.org/pypy/pypy/changeset/e525465d156c/
Log: start killing things
diff --git a/rpython/jit/backend/llsupport/gc.py b/rpython/jit/backend/llsupport/gc.py
--- a/rpython/jit/backend/llsupport/gc.py
+++ b/rpython/jit/backend/llsupport/gc.py
@@ -127,8 +127,9 @@
def gc_malloc_unicode(self, num_elem):
return self._bh_malloc_array(num_elem, self.unicode_descr)
- def _record_constptrs(self, op, gcrefs_output_list, ops_with_movable_const_ptr,
- changeable_const_pointers):
+ def _record_constptrs(self, op, gcrefs_output_list,
+ ops_with_movable_const_ptr,
+ changeable_const_pointers):
ops_with_movable_const_ptr[op] = []
for i in range(op.numargs()):
v = op.getarg(i)
@@ -152,7 +153,6 @@
def _rewrite_changeable_constptrs(self, op, ops_with_movable_const_ptr, moving_obj_tracker):
newops = []
for arg_i in ops_with_movable_const_ptr[op]:
- raise Exception("implement me")
v = op.getarg(arg_i)
# assert to make sure we got what we expected
assert isinstance(v, ConstPtr)
@@ -418,6 +418,7 @@
DEBUG = False # forced to True by x86/test/test_zrpy_gc.py
kind = 'framework'
round_up = True
+ layoutbuilder = None
def is_shadow_stack(self):
return self.gcrootmap.is_shadow_stack
diff --git a/rpython/jit/backend/llsupport/test/test_descr.py b/rpython/jit/backend/llsupport/test/test_descr.py
--- a/rpython/jit/backend/llsupport/test/test_descr.py
+++ b/rpython/jit/backend/llsupport/test/test_descr.py
@@ -13,24 +13,24 @@
T = lltype.GcStruct('T')
S = lltype.GcStruct('S', ('x', lltype.Char),
('y', lltype.Ptr(T)))
- descr_s = get_size_descr(None, c0, S, False)
- descr_t = get_size_descr(None, c0, T, False)
+ descr_s = get_size_descr(c0, S, False)
+ descr_t = get_size_descr(c0, T, False)
assert descr_s.size == symbolic.get_size(S, False)
assert descr_t.size == symbolic.get_size(T, False)
assert descr_s.count_fields_if_immutable() == -1
assert descr_t.count_fields_if_immutable() == -1
assert descr_t.gc_fielddescrs == []
assert len(descr_s.gc_fielddescrs) == 1
- assert descr_s == get_size_descr(None, c0, S, False)
- assert descr_s != get_size_descr(None, c1, S, False)
+ assert descr_s == get_size_descr(c0, S, False)
+ assert descr_s != get_size_descr(c1, S, False)
#
- descr_s = get_size_descr(None, c1, S, False)
+ descr_s = get_size_descr(c1, S, False)
assert isinstance(descr_s.size, Symbolic)
assert descr_s.count_fields_if_immutable() == -1
PARENT = lltype.Struct('P', ('x', lltype.Ptr(T)))
STRUCT = lltype.GcStruct('S', ('parent', PARENT), ('y', lltype.Ptr(T)))
- descr_struct = get_size_descr(None, c0, STRUCT, False)
+ descr_struct = get_size_descr(c0, STRUCT, False)
assert len(descr_struct.gc_fielddescrs) == 2
def test_get_size_descr_immut():
@@ -49,7 +49,7 @@
for STRUCT, expected in [(S, 0), (T, 1), (U, 3), (V, 3)]:
for translated in [False, True]:
c0 = GcCache(translated)
- descr_s = get_size_descr(None, c0, STRUCT, False)
+ descr_s = get_size_descr(c0, STRUCT, False)
assert descr_s.count_fields_if_immutable() == expected
def test_get_field_descr():
@@ -329,7 +329,7 @@
S = lltype.GcStruct('S', ('x', lltype.Char),
('y', lltype.Ptr(T)),
('z', lltype.Ptr(T)))
- descr1 = get_size_descr(None, c0, S, False)
+ descr1 = get_size_descr(c0, S, False)
s = symbolic.get_size(S, False)
assert repr_of_descr(descr1) == '<SizeDescr %d>' % s
#
diff --git a/rpython/jit/backend/llsupport/test/test_gc.py b/rpython/jit/backend/llsupport/test/test_gc.py
--- a/rpython/jit/backend/llsupport/test/test_gc.py
+++ b/rpython/jit/backend/llsupport/test/test_gc.py
@@ -23,7 +23,7 @@
#
# ---------- gc_malloc ----------
S = lltype.GcStruct('S', ('x', lltype.Signed))
- sizedescr = descr.get_size_descr(None, gc_ll_descr, S, False)
+ sizedescr = descr.get_size_descr(gc_ll_descr, S, False)
p = gc_ll_descr.gc_malloc(sizedescr)
assert record == [(sizedescr.size, p)]
del record[:]
@@ -143,7 +143,7 @@
def test_gc_malloc(self):
S = lltype.GcStruct('S', ('x', lltype.Signed))
- sizedescr = descr.get_size_descr(None, self.gc_ll_descr, S, False)
+ sizedescr = descr.get_size_descr(self.gc_ll_descr, S, False)
p = self.gc_ll_descr.gc_malloc(sizedescr)
assert lltype.typeOf(p) == llmemory.GCREF
assert self.llop1.record == [("fixedsize", repr(sizedescr.size),
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
@@ -351,161 +351,6 @@
CONST_NULL = ConstPtr(ConstPtr.value)
-class Box(AbstractValue):
- __slots__ = ()
- _extended_display = True
- _counter = 0
- is_box = True # hint that we want to make links in graphviz from this
-
- @staticmethod
- def _new(x):
- "NOT_RPYTHON"
- kind = getkind(lltype.typeOf(x))
- if kind == "int":
- intval = lltype.cast_primitive(lltype.Signed, x)
- return BoxInt(intval)
- elif kind == "ref":
- ptrval = lltype.cast_opaque_ptr(llmemory.GCREF, x)
- return BoxPtr(ptrval)
- elif kind == "float":
- return BoxFloat(longlong.getfloatstorage(x))
- else:
- raise NotImplementedError(kind)
-
- def nonconstbox(self):
- return self
-
- def __repr__(self):
- result = str(self)
- if self._extended_display:
- result += '(%s)' % self._getrepr_()
- return result
-
- def __str__(self):
- if not hasattr(self, '_str'):
- try:
- if self.type == INT:
- t = 'i'
- elif self.type == FLOAT:
- t = 'f'
- else:
- t = 'p'
- except AttributeError:
- t = 'b'
- self._str = '%s%d' % (t, Box._counter)
- Box._counter += 1
- return self._str
-
- def _get_str(self): # for debugging only
- return self.constbox()._get_str()
-
- def forget_value(self):
- raise NotImplementedError
-
-class BoxInt(Box):
- type = INT
- _attrs_ = ('value',)
-
- def __init__(self, value=0):
- raise Exception("boxes no longer supported")
- if not we_are_translated():
- if is_valid_int(value):
- value = int(value) # bool -> int
- else:
- assert lltype.typeOf(value) == lltype.Signed
- self.value = value
-
- def forget_value(self):
- self.value = 0
-
- def constbox(self):
- return ConstInt(self.value)
-
- def getint(self):
- return self.value
-
- def getaddr(self):
- return heaptracker.int2adr(self.value)
-
- def _get_hash_(self):
- return make_hashable_int(self.value)
-
- def nonnull(self):
- return self.value != 0
-
- def _getrepr_(self):
- return self.value
-
- def repr_rpython(self):
- return repr_rpython(self, 'bi')
-
-class BoxFloat(Box):
- type = FLOAT
- _attrs_ = ('value',)
-
- def __init__(self, valuestorage=longlong.ZEROF):
- xxxx
- assert lltype.typeOf(valuestorage) is longlong.FLOATSTORAGE
- self.value = valuestorage
-
- def forget_value(self):
- self.value = longlong.ZEROF
-
- def constbox(self):
- return ConstFloat(self.value)
-
- def getfloatstorage(self):
- return self.value
-
- def _get_hash_(self):
- return longlong.gethash(self.value)
-
- def nonnull(self):
- return bool(longlong.extract_bits(self.value))
-
- def _getrepr_(self):
- return self.getfloat()
-
- def repr_rpython(self):
- return repr_rpython(self, 'bf')
-
-class BoxPtr(Box):
- type = REF
- _attrs_ = ('value',)
-
- def __init__(self, value=lltype.nullptr(llmemory.GCREF.TO)):
- raise Exception("boxes no longer supported")
- assert lltype.typeOf(value) == llmemory.GCREF
- self.value = value
-
- def forget_value(self):
- self.value = lltype.nullptr(llmemory.GCREF.TO)
-
- def constbox(self):
- return ConstPtr(self.value)
-
- def getref_base(self):
- return self.value
-
- def getref(self, PTR):
- return lltype.cast_opaque_ptr(PTR, self.getref_base())
- getref._annspecialcase_ = 'specialize:arg(1)'
-
- def _get_hash_(self):
- if self.value:
- return lltype.identityhash(self.value)
- else:
- return 0
-
- def nonnull(self):
- return bool(self.value)
-
- def repr_rpython(self):
- return repr_rpython(self, 'bp')
-
- _getrepr_ = repr_pointer
-
-
# ____________________________________________________________
diff --git a/rpython/jit/metainterp/optimizeopt/__init__.py b/rpython/jit/metainterp/optimizeopt/__init__.py
--- a/rpython/jit/metainterp/optimizeopt/__init__.py
+++ b/rpython/jit/metainterp/optimizeopt/__init__.py
@@ -33,14 +33,14 @@
def build_opt_chain(metainterp_sd, enable_opts):
optimizations = []
- unroll = False # 'unroll' in enable_opts # 'enable_opts' is normally a dict
+ unroll = 'unroll' in enable_opts # 'enable_opts' is normally a dict
for name, opt in unroll_all_opts:
if name in enable_opts:
if opt is not None:
o = opt()
optimizations.append(o)
- if 1 or ('rewrite' not in enable_opts or 'virtualize' not in enable_opts
+ if ('rewrite' not in enable_opts or 'virtualize' not in enable_opts
or 'heap' not in enable_opts or 'unroll' not in enable_opts
or 'pure' not in enable_opts):
optimizations.append(OptSimplify(unroll))
@@ -59,7 +59,6 @@
loop.operations)
optimizations, unroll = build_opt_chain(metainterp_sd, enable_opts)
if unroll:
- raise Exception("unrolling disabled")
return optimize_unroll(metainterp_sd, jitdriver_sd, loop,
optimizations,
inline_short_preamble, start_state,
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
@@ -3,7 +3,7 @@
from rpython.jit.metainterp.logger import LogOperations
from rpython.jit.metainterp.history import Const, ConstInt, REF, ConstPtr
from rpython.jit.metainterp.optimizeopt.intutils import IntBound,\
- IntUnbounded, ConstIntBound, MININT, MAXINT
+ ConstIntBound, MININT, MAXINT
from rpython.jit.metainterp.optimizeopt.util import make_dispatcher_method
from rpython.jit.metainterp.resoperation import rop, AbstractResOp, GuardResOp
from rpython.jit.metainterp.optimizeopt import info
@@ -11,21 +11,6 @@
from rpython.rlib.objectmodel import specialize, we_are_translated
-class LenBound(object):
- def __init__(self, mode, descr, bound):
- self.mode = mode
- self.descr = descr
- self.bound = bound
-
- def clone(self):
- return LenBound(self.mode, self.descr, self.bound.clone())
-
- def generalization_of(self, other):
- return (other is not None and
- self.mode == other.mode and
- self.descr == other.descr and
- self.bound.contains_bound(other.bound))
-
CONST_0 = ConstInt(0)
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -106,6 +106,8 @@
escape_n(f)
jump()
"""
+ import pdb
+ pdb.set_trace()
self.optimize_loop(ops, ops)
def test_constant_propagate(self):
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_util.py b/rpython/jit/metainterp/optimizeopt/test/test_util.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_util.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_util.py
@@ -421,10 +421,7 @@
jump_args = jumpop.getarglist()[:]
operations = operations[:-1]
- memo = compile.Memo(inputargs, jump_args)
- cloned_operations = [op.clone(memo) for op in operations]
- for op in cloned_operations:
- op.is_source_op = True
+ xxx
preamble = TreeLoop('preamble')
preamble.inputargs = inputargs
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
@@ -390,8 +390,6 @@
assert short[-1].getopnum() == rop.JUMP
target_token = start_label.getdescr()
assert isinstance(target_token, TargetToken)
-
- xxx
# Turn guards into conditional jumps to the preamble
#for i in range(len(short)):
# op = short[i]
diff --git a/rpython/jit/metainterp/resoperation.py b/rpython/jit/metainterp/resoperation.py
--- a/rpython/jit/metainterp/resoperation.py
+++ b/rpython/jit/metainterp/resoperation.py
@@ -134,16 +134,6 @@
if self.type != 'v':
newop.copy_value_from(self)
return newop
-
- def clone(self, memo):
- args = [memo.get(arg, arg) for arg in self.getarglist()]
- descr = self.getdescr()
- op = ResOperation(self.getopnum(), args[:], descr)
- if not we_are_translated():
- op.name = self.name
- op.pc = self.pc
- memo.set(self, op)
- return op
def repr(self, memo, graytext=False):
# RPython-friendly version
@@ -344,14 +334,6 @@
newop.rd_frame_info_list = self.rd_frame_info_list
return newop
- def clone(self, memo):
- newop = AbstractResOp.clone(self, memo)
- assert isinstance(newop, GuardResOp)
- newop.setfailargs(self.getfailargs())
- newop.rd_snapshot = self.rd_snapshot
- newop.rd_frame_info_list = self.rd_frame_info_list
- return newop
-
# ===========
# type mixins
# ===========
@@ -377,9 +359,6 @@
def nonnull(self):
return self._resint != 0
- def clone_input_arg(self):
- return InputArgInt()
-
class FloatOp(object):
_mixin_ = True
@@ -402,9 +381,6 @@
def nonnull(self):
return bool(longlong.extract_bits(self._resfloat))
- def clone_input_arg(self):
- return InputArgFloat()
-
class RefOp(object):
_mixin_ = True
@@ -436,9 +412,6 @@
def nonnull(self):
return bool(self._resref)
- def clone_input_arg(self):
- return InputArgRef()
-
class AbstractInputArg(AbstractValue):
_forwarded = None
@@ -469,16 +442,10 @@
def __init__(self, intval=0):
self.setint(intval)
- def clone_input_arg(self):
- return InputArgInt()
-
class InputArgFloat(FloatOp, AbstractInputArg):
def __init__(self, f=0.0):
self.setfloatstorage(f)
- def clone_input_arg(self):
- return InputArgFloat()
-
class InputArgRef(RefOp, AbstractInputArg):
def __init__(self, r=lltype.nullptr(llmemory.GCREF.TO)):
self.setref_base(r)
@@ -486,9 +453,6 @@
def reset_value(self):
self.setref_base(lltype.nullptr(llmemory.GCREF.TO))
- def clone_input_arg(self):
- return InputArgRef()
-
# ============
# arity mixins
# ============
More information about the pypy-commit
mailing list