[pypy-commit] pypy jit-leaner-frontend: remove unused detect_cpu

fijal pypy.commits at gmail.com
Tue Feb 16 12:49:58 EST 2016


Author: fijal
Branch: jit-leaner-frontend
Changeset: r82295:5652c389a739
Date: 2016-02-16 18:49 +0100
http://bitbucket.org/pypy/pypy/changeset/5652c389a739/

Log:	remove unused detect_cpu

diff --git a/pypy/config/pypyoption.py b/pypy/config/pypyoption.py
--- a/pypy/config/pypyoption.py
+++ b/pypy/config/pypyoption.py
@@ -39,10 +39,6 @@
     "_csv", "cppyy", "_pypyjson", "_vmprof",
 ])
 
-#if ((sys.platform.startswith('linux') or sys.platform == 'darwin')
-#    and os.uname()[4] == 'x86_64' and sys.maxint > 2**32):
-    # it's not enough that we get x86_64
-#    working_modules.add('_vmprof')
 
 translation_modules = default_modules.copy()
 translation_modules.update([
diff --git a/rpython/jit/metainterp/opencoder.py b/rpython/jit/metainterp/opencoder.py
--- a/rpython/jit/metainterp/opencoder.py
+++ b/rpython/jit/metainterp/opencoder.py
@@ -13,6 +13,8 @@
 class TraceIterator(object):
     def __init__(self, trace, end):
         self.trace = trace
+        self.inputargs = [rop.inputarg_from_tp(arg.type) for
+                          arg in self.trace.inputargs]
         self.pos = 0
         self._count = 0
         self.end = end
@@ -20,7 +22,7 @@
 
     def _get(self, i):
         if i < 0:
-            return self.trace.inputargs[-i - 1]
+            return self.inputargs[-i - 1]
         res = self._cache[i]
         assert res is not None
         return res
diff --git a/rpython/jit/metainterp/optimizeopt/heap.py b/rpython/jit/metainterp/optimizeopt/heap.py
--- a/rpython/jit/metainterp/optimizeopt/heap.py
+++ b/rpython/jit/metainterp/optimizeopt/heap.py
@@ -323,11 +323,11 @@
             Optimization.emit_operation(self, op)
 
     def emitting_operation(self, op):
-        if OpHelpers.has_no_side_effect(op.opnum):
+        if rop.has_no_side_effect(op.opnum):
             return
-        if op.is_ovf():
+        if rop.is_ovf(op.opnum):
             return
-        if op.is_guard():
+        if rop.is_guard(op.opnum):
             self.optimizer.pendingfields = (
                 self.force_lazy_sets_for_guard())
             return
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,8 +10,7 @@
 from rpython.jit.metainterp.typesystem import llhelper
 from rpython.rlib.objectmodel import specialize, we_are_translated
 from rpython.rlib.debug import debug_print
-from rpython.rlib.rarithmetic import r_uint
-from rpython.jit.metainterp import opencoder
+from rpython.jit.metainterp.optimize import SpeculativeError
 
 
 
@@ -56,27 +55,23 @@
         self.last_emitted_operation = op
         self.next_optimization.propagate_forward(op)
 
-    def getintbound(self, tagged):
-        tagged = self.get_box_replacement(tagged)
-        tag, val = opencoder.untag(tagged)
-        if tag == opencoder.TAGINT:
-            return ConstIntBound(val)
-        elif tag == opencoder.TAGCONST:
-            yyy
-        else:
-            assert tag == opencoder.TAGBOX
-        fw = self.optimizer.trace.get_info(self.optimizer.infos, val)
+    def getintbound(self, op):
+        assert op.type == 'i'
+        op = self.get_box_replacement(op)
+        if isinstance(op, ConstInt):
+            return ConstIntBound(op.getint())
+        fw = op.get_forwarded()
         if fw is not None:
             if isinstance(fw, IntBound):
                 return fw
             # rare case: fw might be a RawBufferPtrInfo
             return IntUnbounded()
+        assert op.type == 'i'
         intbound = IntBound(MININT, MAXINT)
-        self.optimizer.trace.set_info(self.optimizer.infos, val, intbound)
+        op.set_forwarded(intbound)
         return intbound
 
     def setintbound(self, op, bound):
-        xxx
         assert op.type == 'i'
         op = self.get_box_replacement(op)
         if op.is_constant():
@@ -344,20 +339,12 @@
             if self.get_box_replacement(op).is_constant():
                 return info.FloatConstInfo(self.get_box_replacement(op))
 
-    def get_box_replacement(self, tagged):
-        # tagged -> tagged
-        while True:
-            tag, v = opencoder.untag(tagged)
-            if tag != opencoder.TAGBOX:
-                return tagged
-            opnum = self.trace._ops[v]
-            if opnum >= 0:
-                return tagged
-            tagged = -opnum - 1
+    def get_box_replacement(self, op):
+        if op is None:
+            return op
+        return op.get_box_replacement()
 
     def force_box(self, op, optforce=None):
-        # XXX
-        return op
         op = self.get_box_replacement(op)
         if optforce is None:
             optforce = self
@@ -381,13 +368,6 @@
         return True
         return op in self.inparg_dict
 
-    def is_constant(self, tagged):
-        tagged = self.get_box_replacement(tagged)
-        tag, value = opencoder.untag(tagged)
-        if tag == opencoder.TAGINT or tag == opencoder.TAGCONST:
-            return True
-        return False
-
     def get_constant_box(self, box):
         box = self.get_box_replacement(box)
         if isinstance(box, Const):
@@ -418,16 +398,7 @@
         else:
             op.set_forwarded(newop)
 
-    def replace_op_with(self, op, newopnum, args=None, descr=None, output=False):
-        # recorded_op -> tagged
-        if not output:
-            newtag = self.trace.record_op_tag(newopnum, args, descr)
-        else:
-            newtag = self.output.record_op_output_tag(newopnum, args, descr)
-        self.trace.record_forwarding(op, newtag)
-        # XXX info forwarding
-        return newtag
-
+    def replace_op_with(self, op, newopnum, args=None, descr=None):
         newop = op.copy_and_change(newopnum, args, descr)
         if newop.type != 'v':
             op = self.get_box_replacement(op)
@@ -534,32 +505,25 @@
         else:
             return CONST_0
 
-    def propagate_all_forward(self, trace, call_pure_results=None,
-                              rename_inputargs=True, flush=True):
-        self.output = opencoder.Trace([]) # <- XXXX, put inputargs
-        self.infos = [None] * trace._count
-        self.trace = trace
-        #if rename_inputargs:
-        #    newargs = []
-        #    for inparg in inputargs:
-        #        new_arg = OpHelpers.inputarg_from_tp(inparg.type)
-        #        inparg.set_forwarded(new_arg)
-        #        newargs.append(new_arg)
-        #    self.init_inparg_dict_from(newargs)
-        #else:
-        #    newargs = inputargs
+    def propagate_all_forward(self, trace, call_pure_results=None, flush=True):
+        trace = trace.get_iter()
         self.call_pure_results = call_pure_results
-        #if ops[-1].getopnum() in (rop.FINISH, rop.JUMP):
-        #    last = len(ops) - 1
-        #    extra_jump = True
-        #else:
-        #    extra_jump = False
-        #    last = len(ops)
-        trace_iter = trace.get_iter()
-        while not trace_iter.done():
-            op = trace_iter.next()
+        while not trace.done():
             self._really_emitted_operation = None
-            self.first_optimization.propagate_forward(op)
+            op = trace.next()
+            if op.getopnum() in (rop.FINISH, rop.JUMP):
+                xxx
+            self.first_optimization.propagate_forward(trace.next())
+        xxxx
+        if ops[-1].getopnum() in (rop.FINISH, rop.JUMP):
+            last = len(ops) - 1
+            extra_jump = True
+        else:
+            extra_jump = False
+            last = len(ops)
+        for i in range(last):
+            self._really_emitted_operation = None
+            self.first_optimization.propagate_forward(ops[i])
         # accumulate counters
         if flush:
             self.flush()
@@ -582,34 +546,31 @@
         dispatch_opt(self, op)
 
     def emit_operation(self, op):
-        if rop.returns_bool_result(op.opnum):
+        if op.returns_bool_result():
             self.getintbound(op).make_bool()
-        tagged_op = self._emit_operation(op)
-        # XXX what is this about? looks pretty optional
-        #if op.type == 'i':
-        #    opinfo = op.get_forwarded()
-        #    if opinfo is not None:
-        #        assert isinstance(opinfo, IntBound)
-        #        if opinfo.is_constant():
-        #            op.set_forwarded(ConstInt(opinfo.getint()))
+        self._emit_operation(op)
+        op = self.get_box_replacement(op)
+        if op.type == 'i':
+            opinfo = op.get_forwarded()
+            if opinfo is not None:
+                assert isinstance(opinfo, IntBound)
+                if opinfo.is_constant():
+                    op.set_forwarded(ConstInt(opinfo.getint()))
 
     @specialize.argtype(0)
     def _emit_operation(self, op):
-        assert not rop.is_call_pure(op.opnum)
+        assert not op.is_call_pure()
         orig_op = op
-        tagged = self.get_box_replacement(op.get_tag())
-        if self.is_constant(tagged):
+        op = self.get_box_replacement(op)
+        if op.is_constant():
             return # can happen e.g. if we postpone the operation that becomes
             # constant
-        arglist = op.getarglist()
-        for i in range(len(arglist)):
-            arglist[i] = self.force_box(arglist[i])
-        opnum = op.opnum
-        tagged_op = self.replace_op_with(op, opnum, arglist, op.getdescr(),
-            output=True)
+        op = self.replace_op_with(op, op.getopnum())
+        for i in range(op.numargs()):
+            arg = self.force_box(op.getarg(i))
+            op.setarg(i, arg)
         self.metainterp_sd.profiler.count(jitprof.Counters.OPT_OPS)
-        if rop.is_guard(opnum):
-            xxx
+        if rop.is_guard(op.opnum):
             assert isinstance(op, GuardResOp)
             self.metainterp_sd.profiler.count(jitprof.Counters.OPT_GUARDS)
             pendingfields = self.pendingfields
@@ -620,16 +581,15 @@
                 return
             else:
                 op = self.emit_guard_operation(op, pendingfields)
-        elif rop.can_raise(opnum):
+        elif op.can_raise():
             self.exception_might_have_happened = True
-        #if ((op.has_no_side_effect() or op.is_guard() or op.is_jit_debug() or
-        #     op.is_ovf()) and not self.is_call_pure_pure_canraise(op)):
-        #    pass
-        #else:
-        #    self._last_guard_op = None
+        if ((op.has_no_side_effect() or op.is_guard() or op.is_jit_debug() or
+             op.is_ovf()) and not self.is_call_pure_pure_canraise(op)):
+            pass
+        else:
+            self._last_guard_op = None
         self._really_emitted_operation = op
-        #self._newoperations.append(op)
-        return tagged_op
+        self._newoperations.append(op)
 
     def emit_guard_operation(self, op, pendingfields):
         guard_op = self.replace_op_with(op, op.getopnum())
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
@@ -332,7 +332,7 @@
             descr = self.getdescr()
         if descr is DONT_CHANGE:
             descr = None
-        newop = ResOperation(opnum, args, descr)
+        newop = ResOperation(opnum, args, -1, descr)
         if self.type != 'v':
             newop.copy_value_from(self)
         return newop
@@ -1404,19 +1404,23 @@
     def is_comparison(opnum):
         return rop.is_always_pure(opnum) and rop.returns_bool_result(opnum)
 
-    def is_foldable_guard(self):
-        return rop._GUARD_FOLDABLE_FIRST <= self.getopnum() <= rop._GUARD_FOLDABLE_LAST
+    @staticmethod
+    def is_foldable_guard(opnum):
+        return rop._GUARD_FOLDABLE_FIRST <= opnum <= rop._GUARD_FOLDABLE_LAST
 
-    def is_guard_exception(self):
-        return (self.getopnum() == rop.GUARD_EXCEPTION or
-                self.getopnum() == rop.GUARD_NO_EXCEPTION)
+    @staticmethod
+    def is_guard_exception(opnum):
+        return (opnum == rop.GUARD_EXCEPTION or
+                opnum == rop.GUARD_NO_EXCEPTION)
 
-    def is_guard_overflow(self):
-        return (self.getopnum() == rop.GUARD_OVERFLOW or
-                self.getopnum() == rop.GUARD_NO_OVERFLOW)
+    @staticmethod
+    def is_guard_overflow(opnum):
+        return (opnum == rop.GUARD_OVERFLOW or
+                opnum == rop.GUARD_NO_OVERFLOW)
 
-    def is_jit_debug(self):
-        return rop._JIT_DEBUG_FIRST <= self.getopnum() <= rop._JIT_DEBUG_LAST
+    @staticmethod
+    def is_jit_debug(opnum):
+        return rop._JIT_DEBUG_FIRST <= opnum <= rop._JIT_DEBUG_LAST
 
     @staticmethod
     def is_always_pure(opnum):
@@ -1465,8 +1469,8 @@
                 opnum == rop.CALL_ASSEMBLER_N or
                 opnum == rop.CALL_ASSEMBLER_F)
 
-    def is_call_may_force(self):
-        opnum = self.opnum
+    @staticmethod
+    def is_call_may_force(opnum):
         return (opnum == rop.CALL_MAY_FORCE_I or
                 opnum == rop.CALL_MAY_FORCE_R or
                 opnum == rop.CALL_MAY_FORCE_N or
diff --git a/rpython/jit/metainterp/test/test_opencoder.py b/rpython/jit/metainterp/test/test_opencoder.py
--- a/rpython/jit/metainterp/test/test_opencoder.py
+++ b/rpython/jit/metainterp/test/test_opencoder.py
@@ -4,33 +4,20 @@
 from rpython.jit.metainterp.history import ConstInt
 from rpython.jit.metainterp.optimizeopt.optimizer import Optimizer
 
-class SimpleOptimizer(Optimizer):
-    class metainterp_sd:
-        class profiler:
-            @staticmethod
-            def count(*args):
-                pass
-
-    def __init__(self, trace):
-        self.trace = trace
-        self.optimizer = self # uh?
-        self.infos = [None] * trace._count
-        self.output = Trace([])
-
 class TestOpencoder(object):
     def unpack(self, t):
         iter = t.get_iter()
         l = []
         while not iter.done():
             l.append(iter.next())
-        return l
+        return iter.inputargs, l
 
     def test_simple_iterator(self):
         i0, i1 = InputArgInt(), InputArgInt()
         t = Trace([i0, i1])
         add = t.record_op(rop.INT_ADD, [i0, i1])
         t.record_op(rop.INT_ADD, [add, ConstInt(1)])
-        l = self.unpack(t)
+        (i0, i1), l = self.unpack(t)
         assert len(l) == 2
         assert l[0].opnum == rop.INT_ADD
         assert l[1].opnum == rop.INT_ADD
@@ -38,3 +25,9 @@
         assert l[1].getarg(0) is l[0]
         assert l[0].getarg(0) is i0
         assert l[0].getarg(1) is i1
+
+    def test_rd_snapshot(self):
+        i0, i1 = InputArgInt(), InputArgInt()
+        t = Trace([i0, i1])
+        add = t.record_op(rop.INT_ADD, [i0, i1])
+        guard_op = t.record_op(rop.GUARD_FALSE, [add])
\ No newline at end of file
diff --git a/rpython/rlib/rvmprof/cintf.py b/rpython/rlib/rvmprof/cintf.py
--- a/rpython/rlib/rvmprof/cintf.py
+++ b/rpython/rlib/rvmprof/cintf.py
@@ -7,8 +7,6 @@
 from rpython.rtyper.tool import rffi_platform as platform
 from rpython.rlib import rthread
 
-from rpython.jit.backend import detect_cpu
-
 class VMProfPlatformUnsupported(Exception):
     pass
 


More information about the pypy-commit mailing list