[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