[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