[pypy-svn] r77123 - in pypy/branch/resoperation-refactoring/pypy/jit: backend/test backend/x86 metainterp metainterp/optimizeopt metainterp/test
antocuni at codespeak.net
antocuni at codespeak.net
Thu Sep 16 17:38:24 CEST 2010
Author: antocuni
Date: Thu Sep 16 17:38:23 2010
New Revision: 77123
Modified:
pypy/branch/resoperation-refactoring/pypy/jit/backend/test/test_random.py
pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/regalloc.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/compile.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/graphpage.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/history.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/heap.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/rewrite.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/virtualize.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/pyjitpl.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/resoperation.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/simple_optimize.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/oparser.py
Log:
(david, antocuni): replace sliceargs with getarglist, so that in the future
operations like CALL or JUMP will be able to implement it more efficiently
Modified: pypy/branch/resoperation-refactoring/pypy/jit/backend/test/test_random.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/backend/test/test_random.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/backend/test/test_random.py Thu Sep 16 17:38:23 2010
@@ -86,7 +86,7 @@
def process_operation(self, s, op, names, subops):
args = []
- for v in op.sliceargs(0, op.numargs()):
+ for v in op.getarglist():
if v in names:
args.append(names[v])
## elif isinstance(v, ConstAddr):
@@ -129,7 +129,7 @@
def print_loop_prebuilt(ops):
for op in ops:
- for arg in op.sliceargs(0, op.numargs()):
+ for arg in op.getarglist():
if isinstance(arg, ConstPtr):
if arg not in names:
writevar(arg, 'const_ptr')
@@ -553,7 +553,7 @@
endvars = []
used_later = {}
for op in loop.operations:
- for v in op.sliceargs(0, op.numargs()):
+ for v in op.getarglist():
used_later[v] = True
for v in startvars:
if v not in used_later:
@@ -581,7 +581,7 @@
return self.should_fail_by.fail_args
else:
assert self.should_fail_by.opnum == rop.FINISH
- return self.should_fail_by.sliceargs(0, self.should_fail_by.numargs())
+ return self.should_fail_by.getarglist()
def clear_state(self):
for v, S, fields in self.prebuilt_ptr_consts:
Modified: pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/regalloc.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/regalloc.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/regalloc.py Thu Sep 16 17:38:23 2010
@@ -462,7 +462,7 @@
def consider_guard_exception(self, op):
loc = self.rm.make_sure_var_in_reg(op.getarg(0))
box = TempBox()
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
loc1 = self.rm.force_allocate_reg(box, args)
if op.result in self.longevity:
# this means, is it ever used
@@ -494,7 +494,7 @@
def _consider_binop_part(self, op):
x = op.getarg(0)
argloc = self.loc(op.getarg(1))
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
loc = self.rm.force_result_in_reg(op.result, x, args)
self.rm.possibly_free_var(op.getarg(1))
return loc, argloc
@@ -529,7 +529,7 @@
loc2 = self.rm.convert_to_imm(op.getarg(1))
else:
loc2 = self.rm.make_sure_var_in_reg(op.getarg(1), selected_reg=ecx)
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
loc1 = self.rm.force_result_in_reg(op.result, op.getarg(0), args)
self.Perform(op, [loc1, loc2], loc1)
self.rm.possibly_free_vars_for_op(op)
@@ -570,7 +570,7 @@
pass
else:
arglocs[0] = self.rm.make_sure_var_in_reg(vx)
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
self.rm.possibly_free_vars(args)
if guard_op is None:
loc = self.rm.force_allocate_reg(op.result, args,
@@ -594,7 +594,7 @@
def _consider_float_op(self, op):
loc1 = self.xrm.loc(op.getarg(1))
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
loc0 = self.xrm.force_result_in_reg(op.result, op.getarg(0), args)
self.Perform(op, [loc0, loc1], loc0)
self.xrm.possibly_free_vars_for_op(op)
@@ -605,7 +605,7 @@
consider_float_truediv = _consider_float_op
def _consider_float_cmp(self, op, guard_op):
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
loc0 = self.xrm.make_sure_var_in_reg(op.getarg(0), args,
imm_fine=False)
loc1 = self.xrm.loc(op.getarg(1))
@@ -695,7 +695,7 @@
def consider_cond_call_gc_wb(self, op):
assert op.result is None
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
loc_newvalue = self.rm.make_sure_var_in_reg(op.getarg(1), args)
# ^^^ we force loc_newvalue in a reg (unless it's a Const),
# because it will be needed anyway by the following setfield_gc.
@@ -849,7 +849,7 @@
need_lower_byte = True
else:
need_lower_byte = False
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
base_loc = self.rm.make_sure_var_in_reg(op.getarg(0), args)
value_loc = self.make_sure_var_in_reg(op.getarg(1), args,
need_lower_byte=need_lower_byte)
@@ -859,7 +859,7 @@
consider_setfield_raw = consider_setfield_gc
def consider_strsetitem(self, op):
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
base_loc = self.rm.make_sure_var_in_reg(op.getarg(0), args)
ofs_loc = self.rm.make_sure_var_in_reg(op.getarg(1), args)
value_loc = self.rm.make_sure_var_in_reg(op.getarg(2), args,
@@ -871,7 +871,7 @@
def consider_setarrayitem_gc(self, op):
scale, ofs, _, ptr = self._unpack_arraydescr(op.descr)
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
base_loc = self.rm.make_sure_var_in_reg(op.getarg(0), args)
if scale == 0:
need_lower_byte = True
@@ -888,7 +888,7 @@
def consider_getfield_gc(self, op):
ofs_loc, size_loc, _ = self._unpack_fielddescr(op.descr)
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
base_loc = self.rm.make_sure_var_in_reg(op.getarg(0), args)
self.rm.possibly_free_vars(args)
result_loc = self.force_allocate_reg(op.result)
@@ -900,7 +900,7 @@
def consider_getarrayitem_gc(self, op):
scale, ofs, _, _ = self._unpack_arraydescr(op.descr)
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
base_loc = self.rm.make_sure_var_in_reg(op.getarg(0), args)
ofs_loc = self.rm.make_sure_var_in_reg(op.getarg(1), args)
self.rm.possibly_free_vars_for_op(op)
@@ -930,7 +930,7 @@
#consider_cast_ptr_to_int = consider_same_as
def consider_strlen(self, op):
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
base_loc = self.rm.make_sure_var_in_reg(op.getarg(0), args)
self.rm.possibly_free_vars_for_op(op)
result_loc = self.rm.force_allocate_reg(op.result)
@@ -942,14 +942,14 @@
arraydescr = op.descr
assert isinstance(arraydescr, BaseArrayDescr)
ofs = arraydescr.get_ofs_length(self.translate_support_code)
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
base_loc = self.rm.make_sure_var_in_reg(op.getarg(0), args)
self.rm.possibly_free_vars_for_op(op)
result_loc = self.rm.force_allocate_reg(op.result)
self.Perform(op, [base_loc, imm(ofs)], result_loc)
def consider_strgetitem(self, op):
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
base_loc = self.rm.make_sure_var_in_reg(op.getarg(0), args)
ofs_loc = self.rm.make_sure_var_in_reg(op.getarg(1), args)
self.rm.possibly_free_vars_for_op(op)
Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/compile.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/compile.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/compile.py Thu Sep 16 17:38:23 2010
@@ -546,7 +546,7 @@
# e.g. loop_tokens_done_with_this_frame_void[0]
# Replace the operation with the real operation we want, i.e. a FINISH
descr = target_loop_token.finishdescr
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
new_op = ResOperation(rop.FINISH, args, None, descr=descr)
new_loop.operations[-1] = new_op
Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/graphpage.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/graphpage.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/graphpage.py Thu Sep 16 17:38:23 2010
@@ -191,7 +191,7 @@
def getlinks(self):
boxes = {}
for op in self.all_operations:
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
args.append(op.result)
for box in args:
if getattr(box, 'is_box', False):
Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/history.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/history.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/history.py Thu Sep 16 17:38:23 2010
@@ -794,7 +794,7 @@
# RPython-friendly
print '%r: inputargs =' % self, self._dump_args(self.inputargs)
for op in self.operations:
- args = op.sliceargs(0, op.numargs())
+ args = op.getarglist()
print '\t', op.getopname(), self._dump_args(args), \
self._dump_box(op.result)
Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/heap.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/heap.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/heap.py Thu Sep 16 17:38:23 2010
@@ -167,7 +167,7 @@
# - CALL_MAY_FORCE: "call_may_force/setfield_gc/guard_not_forced"
# - is_ovf(): "int_add_ovf/setfield_gc/guard_no_overflow"
opnum = prevop.opnum
- lastop_args = lastop.sliceargs(0, lastop.numargs())
+ lastop_args = lastop.getarglist()
if ((prevop.is_comparison() or opnum == rop.CALL_MAY_FORCE
or prevop.is_ovf())
and prevop.result not in lastop_args):
Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/rewrite.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/rewrite.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/rewrite.py Thu Sep 16 17:38:23 2010
@@ -137,7 +137,7 @@
self.make_constant(op.result, op.getarg(0))
return
# replace CALL_PURE with just CALL
- args = op.sliceargs(1, op.numargs())
+ args = op.getarglist()[1:]
self.emit_operation(ResOperation(rop.CALL, args, op.result,
op.descr))
def optimize_guard(self, op, constbox, emit_operation=True):
Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/virtualize.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/virtualize.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/virtualize.py Thu Sep 16 17:38:23 2010
@@ -441,7 +441,7 @@
return # 0-length arraycopy
descr = op.getarg(0)
assert isinstance(descr, AbstractDescr)
- args = op.sliceargs(1, op.numargs())
+ args = op.getarglist()[1:]
self.emit_operation(ResOperation(rop.CALL, args, op.result,
descr))
Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/pyjitpl.py Thu Sep 16 17:38:23 2010
@@ -2112,8 +2112,9 @@
op = self.history.operations.pop()
assert op.opnum == rop.CALL_MAY_FORCE
num_green_args = targetjitdriver_sd.num_green_args
- greenargs = op.sliceargs(1, num_green_args+1)
- args = op.sliceargs(num_green_args+1, op.numargs())
+ arglist = op.getarglist()
+ greenargs = arglist[1:num_green_args+1]
+ args = arglist[num_green_args+1:]
assert len(args) == targetjitdriver_sd.num_red_args
vinfo = targetjitdriver_sd.virtualizable_info
if vinfo is not None:
Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/resoperation.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/resoperation.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/resoperation.py Thu Sep 16 17:38:23 2010
@@ -39,8 +39,8 @@
def setarglist(self, args):
self._args = args
- def sliceargs(self, start, stop):
- return [self.getarg(i) for i in range(start, stop)]
+ def getarglist(self):
+ return self._args
def setdescr(self, descr):
# for 'call', 'new', 'getfield_gc'...: the descr is a prebuilt
Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/simple_optimize.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/simple_optimize.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/simple_optimize.py Thu Sep 16 17:38:23 2010
@@ -14,10 +14,10 @@
if op.opnum == rop.ARRAYCOPY:
descr = op.getarg(0)
assert isinstance(descr, AbstractDescr)
- args = op.sliceargs(1, op.numargs())
+ args = op.getarglist()[1:]
op = ResOperation(rop.CALL, args, op.result, descr=descr)
elif op.opnum == rop.CALL_PURE:
- args = op.sliceargs(1, op.numargs())
+ args = op.getarglist()[1:]
op = ResOperation(rop.CALL, args, op.result, op.descr)
elif op.opnum == rop.VIRTUAL_REF:
op = ResOperation(rop.SAME_AS, [op.getarg(0)], op.result)
Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/oparser.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/oparser.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/oparser.py Thu Sep 16 17:38:23 2010
@@ -26,7 +26,7 @@
def opboxes(operations):
for op in operations:
yield op.result
- for box in op.sliceargs(0, op.numargs()):
+ for box in op.getarglist():
yield box
def allboxes():
for box in self.inputargs:
More information about the Pypy-commit
mailing list