[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