[pypy-svn] r77155 - in pypy/branch/resoperation-refactoring/pypy/jit: backend/cli backend/llgraph backend/test backend/x86 backend/x86/test metainterp metainterp/optimizeopt metainterp/test

antocuni at codespeak.net antocuni at codespeak.net
Fri Sep 17 16:59:05 CEST 2010


Author: antocuni
Date: Fri Sep 17 16:59:02 2010
New Revision: 77155

Modified:
   pypy/branch/resoperation-refactoring/pypy/jit/backend/cli/method.py
   pypy/branch/resoperation-refactoring/pypy/jit/backend/llgraph/runner.py
   pypy/branch/resoperation-refactoring/pypy/jit/backend/test/runner_test.py
   pypy/branch/resoperation-refactoring/pypy/jit/backend/test/test_ll_random.py
   pypy/branch/resoperation-refactoring/pypy/jit/backend/test/test_random.py
   pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/assembler.py
   pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/regalloc.py
   pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/test/test_regalloc.py
   pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/test/test_runner.py
   pypy/branch/resoperation-refactoring/pypy/jit/metainterp/compile.py
   pypy/branch/resoperation-refactoring/pypy/jit/metainterp/history.py
   pypy/branch/resoperation-refactoring/pypy/jit/metainterp/logger.py
   pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/optimizer.py
   pypy/branch/resoperation-refactoring/pypy/jit/metainterp/resoperation.py
   pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/oparser.py
   pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_basic.py
   pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_loop.py
   pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_oparser.py
   pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_optimizeopt.py
   pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_virtualref.py
Log:
(david, antocuni): remove the fail_args field, and use the official API everywhere



Modified: pypy/branch/resoperation-refactoring/pypy/jit/backend/cli/method.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/backend/cli/method.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/backend/cli/method.py	Fri Sep 17 16:59:02 2010
@@ -357,10 +357,10 @@
         assert op.is_guard()
         if op in self.cliloop.guard2ops:
             inputargs, suboperations = self.cliloop.guard2ops[op]
-            self.match_var_fox_boxes(op.fail_args, inputargs)
+            self.match_var_fox_boxes(op.getfailargs(), inputargs)
             self.emit_operations(suboperations)
         else:
-            self.emit_return_failed_op(op, op.fail_args)
+            self.emit_return_failed_op(op, op.getfailargs())
 
     def emit_end(self):
         assert self.branches == []

Modified: pypy/branch/resoperation-refactoring/pypy/jit/backend/llgraph/runner.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/backend/llgraph/runner.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/backend/llgraph/runner.py	Fri Sep 17 16:59:02 2010
@@ -177,7 +177,7 @@
                 faildescr = op.getdescr()
                 assert isinstance(faildescr, history.AbstractFailDescr)
                 faildescr._fail_args_types = []
-                for box in op.fail_args:
+                for box in op.getfailargs():
                     if box is None:
                         type = history.HOLE
                     else:
@@ -186,7 +186,7 @@
                 fail_index = self.get_fail_descr_number(faildescr)
                 index = llimpl.compile_add_fail(c, fail_index)
                 faildescr._compiled_fail = c, index
-                for box in op.fail_args:
+                for box in op.getfailargs():
                     if box is not None:
                         llimpl.compile_add_fail_arg(c, var2index[box])
                     else:

Modified: pypy/branch/resoperation-refactoring/pypy/jit/backend/test/runner_test.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/backend/test/runner_test.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/backend/test/runner_test.py	Fri Sep 17 16:59:02 2010
@@ -75,7 +75,7 @@
                       ResOperation(rop.FINISH, results, None,
                                    descr=BasicFailDescr(0))]
         if operations[0].is_guard():
-            operations[0].fail_args = []
+            operations[0].setfailargs([])
             if not descr:
                 descr = BasicFailDescr(1)
         operations[0].setdescr(descr)
@@ -117,7 +117,7 @@
             ResOperation(rop.JUMP, [i1], None, descr=looptoken),
             ]
         inputargs = [i0]
-        operations[2].fail_args = [i1]
+        operations[2].setfailargs([i1])
         
         self.cpu.compile_loop(inputargs, operations, looptoken)
         self.cpu.set_future_value_int(0, 2)
@@ -138,7 +138,7 @@
             ResOperation(rop.JUMP, [i1], None, descr=looptoken),
             ]
         inputargs = [i0]
-        operations[2].fail_args = [None, None, i1, None]
+        operations[2].setfailargs([None, None, i1, None])
         
         self.cpu.compile_loop(inputargs, operations, looptoken)
         self.cpu.set_future_value_int(0, 2)
@@ -161,7 +161,7 @@
             ResOperation(rop.JUMP, [i1], None, descr=looptoken),
             ]
         inputargs = [i0]
-        operations[2].fail_args = [i1]
+        operations[2].setfailargs([i1])
         wr_i1 = weakref.ref(i1)
         wr_guard = weakref.ref(operations[2])
         self.cpu.compile_loop(inputargs, operations, looptoken)
@@ -185,7 +185,7 @@
             ResOperation(rop.JUMP, [i1], None, descr=looptoken),
             ]
         inputargs = [i0]
-        operations[2].fail_args = [i1]
+        operations[2].setfailargs([i1])
         self.cpu.compile_loop(inputargs, operations, looptoken)
 
         i1b = BoxInt()
@@ -195,7 +195,7 @@
             ResOperation(rop.GUARD_TRUE, [i3], None, descr=faildescr2),
             ResOperation(rop.JUMP, [i1b], None, descr=looptoken),
         ]
-        bridge[1].fail_args = [i1b]
+        bridge[1].setfailargs([i1b])
 
         self.cpu.compile_bridge(faildescr1, [i1b], bridge)        
 
@@ -219,7 +219,7 @@
             ResOperation(rop.JUMP, [i1], None, descr=looptoken),
             ]
         inputargs = [i0]
-        operations[2].fail_args = [None, i1, None]
+        operations[2].setfailargs([None, i1, None])
         self.cpu.compile_loop(inputargs, operations, looptoken)
 
         i1b = BoxInt()
@@ -229,7 +229,7 @@
             ResOperation(rop.GUARD_TRUE, [i3], None, descr=faildescr2),
             ResOperation(rop.JUMP, [i1b], None, descr=looptoken),
         ]
-        bridge[1].fail_args = [i1b]
+        bridge[1].setfailargs([i1b])
 
         self.cpu.compile_bridge(faildescr1, [i1b], bridge)        
 
@@ -252,7 +252,7 @@
             ResOperation(rop.JUMP, [i1], None, descr=looptoken),
             ]
         inputargs = [i0]
-        operations[2].fail_args = [None, i1, None]
+        operations[2].setfailargs([None, i1, None])
         self.cpu.compile_loop(inputargs, operations, looptoken)
 
         self.cpu.set_future_value_int(0, 2)
@@ -318,7 +318,7 @@
                          descr=BasicFailDescr()),
             ResOperation(rop.JUMP, [z, t], None, descr=looptoken),
             ]
-        operations[-2].fail_args = [t, z]
+        operations[-2].setfailargs([t, z])
         cpu.compile_loop([x, y], operations, looptoken)
         self.cpu.set_future_value_int(0, 0)
         self.cpu.set_future_value_int(1, 10)
@@ -364,7 +364,7 @@
                     ResOperation(rop.FINISH, [v_res], None,
                                  descr=BasicFailDescr(2)),
                     ]
-                ops[1].fail_args = []
+                ops[1].setfailargs([])
             else:
                 v_exc = self.cpu.ts.BoxRef()
                 ops = [
@@ -373,7 +373,7 @@
                                  descr=BasicFailDescr(1)),
                     ResOperation(rop.FINISH, [], None, descr=BasicFailDescr(2)),
                     ]
-                ops[1].fail_args = [v_res]
+                ops[1].setfailargs([v_res])
             #
             looptoken = LoopToken()
             self.cpu.compile_loop([v1, v2], ops, looptoken)
@@ -910,7 +910,7 @@
                 ResOperation(rop.GUARD_TRUE, [i2], None),
                 ResOperation(rop.JUMP, jumpargs, None, descr=looptoken),
                 ]
-            operations[2].fail_args = inputargs[:]
+            operations[2].setfailargs(inputargs[:])
             operations[2].setdescr(faildescr)
             #
             self.cpu.compile_loop(inputargs, operations, looptoken)
@@ -976,7 +976,7 @@
             ResOperation(rop.GUARD_TRUE, [i2], None, descr=faildescr1),
             ResOperation(rop.FINISH, fboxes, None, descr=faildescr2),
             ]
-        operations[-2].fail_args = fboxes
+        operations[-2].setfailargs(fboxes)
         looptoken = LoopToken()
         self.cpu.compile_loop(fboxes, operations, looptoken)
 
@@ -1099,7 +1099,7 @@
                                          descr=BasicFailDescr(4)),
                             ResOperation(rop.FINISH, [], None,
                                          descr=BasicFailDescr(5))]
-                        operations[1].fail_args = []
+                        operations[1].setfailargs([])
                         looptoken = LoopToken()
                         # Use "set" to unique-ify inputargs
                         unique_testcase_list = list(set(testcase))
@@ -1463,7 +1463,7 @@
         ResOperation(rop.GUARD_NOT_FORCED, [], None, descr=faildescr),
         ResOperation(rop.FINISH, [i0], None, descr=BasicFailDescr(0))
         ]
-        ops[2].fail_args = [i1, i0]
+        ops[2].setfailargs([i1, i0])
         looptoken = LoopToken()
         self.cpu.compile_loop([i0, i1], ops, looptoken)
         self.cpu.set_future_value_int(0, 20)
@@ -1507,7 +1507,7 @@
         ResOperation(rop.GUARD_NOT_FORCED, [], None, descr=faildescr),
         ResOperation(rop.FINISH, [i2], None, descr=BasicFailDescr(0))
         ]
-        ops[2].fail_args = [i1, i2, i0]
+        ops[2].setfailargs([i1, i2, i0])
         looptoken = LoopToken()
         self.cpu.compile_loop([i0, i1], ops, looptoken)
         self.cpu.set_future_value_int(0, 20)
@@ -1552,7 +1552,7 @@
         ResOperation(rop.GUARD_NOT_FORCED, [], None, descr=faildescr),
         ResOperation(rop.FINISH, [f2], None, descr=BasicFailDescr(0))
         ]
-        ops[2].fail_args = [i1, f2, i0]
+        ops[2].setfailargs([i1, f2, i0])
         looptoken = LoopToken()
         self.cpu.compile_loop([i0, i1], ops, looptoken)
         self.cpu.set_future_value_int(0, 20)

Modified: pypy/branch/resoperation-refactoring/pypy/jit/backend/test/test_ll_random.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/backend/test/test_ll_random.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/backend/test/test_ll_random.py	Fri Sep 17 16:59:02 2010
@@ -464,7 +464,7 @@
         self.put(builder, args, descr)
         op = ResOperation(rop.GUARD_NO_EXCEPTION, [], None,
                           descr=BasicFailDescr())
-        op.fail_args = fail_subset
+        op.setfailargs(fail_subset)
         builder.loop.operations.append(op)
 
 # 5. Non raising-call and GUARD_EXCEPTION
@@ -486,7 +486,7 @@
         exc_box = ConstAddr(llmemory.cast_ptr_to_adr(vtableptr), builder.cpu)
         op = ResOperation(rop.GUARD_EXCEPTION, [exc_box], BoxPtr(),
                           descr=BasicFailDescr())
-        op.fail_args = builder.subset_of_intvars(r)
+        op.setfailargs(builder.subset_of_intvars(r))
         op._exc_box = None
         builder.should_fail_by = op
         builder.guard_op = op
@@ -507,7 +507,7 @@
         exc_box = ConstAddr(llmemory.cast_ptr_to_adr(exc), builder.cpu)
         op = ResOperation(rop.GUARD_EXCEPTION, [exc_box], BoxPtr(),
                           descr=BasicFailDescr())
-        op.fail_args = fail_subset
+        op.setfailargs(fail_subset)
         builder.loop.operations.append(op)
 
 # 4. raising call and guard_no_exception
@@ -524,7 +524,7 @@
         op = ResOperation(rop.GUARD_NO_EXCEPTION, [], BoxPtr(),
                           descr=BasicFailDescr())
         op._exc_box = ConstAddr(llmemory.cast_ptr_to_adr(exc), builder.cpu)
-        op.fail_args = builder.subset_of_intvars(r)
+        op.setfailargs(builder.subset_of_intvars(r))
         builder.should_fail_by = op
         builder.guard_op = op
         builder.loop.operations.append(op)
@@ -548,7 +548,7 @@
         op = ResOperation(rop.GUARD_EXCEPTION, [other_box], BoxPtr(),
                           descr=BasicFailDescr())
         op._exc_box = ConstAddr(llmemory.cast_ptr_to_adr(exc), builder.cpu)
-        op.fail_args = builder.subset_of_intvars(r)
+        op.setfailargs(builder.subset_of_intvars(r))
         builder.should_fail_by = op
         builder.guard_op = op
         builder.loop.operations.append(op)

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	Fri Sep 17 16:59:02 2010
@@ -191,7 +191,7 @@
         if self.should_fail_by is None:
             fail_args = self.loop.operations[-1].args
         else:
-            fail_args = self.should_fail_by.fail_args
+            fail_args = self.should_fail_by.getfailargs()
         for i, v in enumerate(fail_args):
             if isinstance(v, (BoxFloat, ConstFloat)):
                 print >>s, ('    assert cpu.get_latest_value_float(%d) == %r'
@@ -285,7 +285,7 @@
         else:
             op = ResOperation(rop.GUARD_NO_OVERFLOW, [], None)
         op.setdescr(BasicFailDescr())
-        op.fail_args = fail_subset
+        op.setfailargs(fail_subset)
         builder.loop.operations.append(op)
 
 class BinaryOvfOperation(AbstractOvfOperation, BinaryOperation):
@@ -346,7 +346,7 @@
         op, passing = self.gen_guard(builder, r)
         builder.loop.operations.append(op)
         op.setdescr(BasicFailDescr())
-        op.fail_args = builder.subset_of_intvars(r)
+        op.setfailargs(builder.subset_of_intvars(r))
         if not passing:
             builder.should_fail_by = op
             builder.guard_op = op
@@ -577,8 +577,8 @@
 
     def get_fail_args(self):
         if self.should_fail_by.is_guard():
-            assert self.should_fail_by.fail_args is not None
-            return self.should_fail_by.fail_args
+            assert self.should_fail_by.getfailargs() is not None
+            return self.should_fail_by.getfailargs()
         else:
             assert self.should_fail_by.getopnum() == rop.FINISH
             return self.should_fail_by.getarglist()
@@ -634,25 +634,25 @@
                 op = ResOperation(rop.GUARD_EXCEPTION, [guard_op._exc_box],
                                   BoxPtr())
             op.setdescr(BasicFailDescr())
-            op.fail_args = []
+            op.setfailargs([])
             return op
 
         if self.dont_generate_more:
             return False
         r = self.r
         guard_op = self.guard_op
-        fail_args = guard_op.fail_args
+        fail_args = guard_op.getfailargs()
         fail_descr = guard_op.getdescr()
         op = self.should_fail_by
-        if not op.fail_args:
+        if not op.getfailargs():
             return False
         # generate the branch: a sequence of operations that ends in a FINISH
         subloop = DummyLoop([])
         if guard_op.is_guard_exception():
             subloop.operations.append(exc_handling(guard_op))
         bridge_builder = self.builder.fork(self.builder.cpu, subloop,
-                                           op.fail_args[:])
-        self.generate_ops(bridge_builder, r, subloop, op.fail_args[:])
+                                           op.getfailargs()[:])
+        self.generate_ops(bridge_builder, r, subloop, op.getfailargs()[:])
         # note that 'self.guard_op' now points to the guard that will fail in
         # this new bridge, while 'guard_op' still points to the guard that
         # has just failed.

Modified: pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/assembler.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/assembler.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/assembler.py	Fri Sep 17 16:59:02 2010
@@ -691,7 +691,7 @@
         faildescr = guard_op.getdescr()
         assert isinstance(faildescr, AbstractFailDescr)
         faildescr._x86_current_depths = current_depths
-        failargs = guard_op.fail_args
+        failargs = guard_op.getfailargs()
         guard_opnum = guard_op.getopnum()
         guard_token = self.implement_guard_recovery(guard_opnum,
                                                     faildescr, failargs,

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	Fri Sep 17 16:59:02 2010
@@ -318,7 +318,7 @@
         self.assembler.regalloc_perform(op, arglocs, result_loc)
 
     def locs_for_fail(self, guard_op):
-        return [self.loc(v) for v in guard_op.fail_args]
+        return [self.loc(v) for v in guard_op.getfailargs()]
 
     def perform_with_guard(self, op, guard_op, arglocs, result_loc):
         faillocs = self.locs_for_fail(guard_op)
@@ -330,7 +330,7 @@
                                                    current_depths)
         if op.result is not None:
             self.possibly_free_var(op.result)
-        self.possibly_free_vars(guard_op.fail_args)
+        self.possibly_free_vars(guard_op.getfailargs())
 
     def perform_guard(self, guard_op, arglocs, result_loc):
         faillocs = self.locs_for_fail(guard_op)
@@ -344,7 +344,7 @@
         self.assembler.regalloc_perform_guard(guard_op, faillocs, arglocs,
                                               result_loc,
                                               current_depths)
-        self.possibly_free_vars(guard_op.fail_args)        
+        self.possibly_free_vars(guard_op.getfailargs())        
 
     def PerformDiscard(self, op, arglocs):
         if not we_are_translated():
@@ -369,7 +369,7 @@
         if operations[i + 1].getarg(0) is not op.result:
             return False
         if (self.longevity[op.result][1] > i + 1 or
-            op.result in operations[i + 1].fail_args):
+            op.result in operations[i + 1].getfailargs()):
             return False
         return True
 
@@ -416,7 +416,7 @@
                         raise AssertionError
                     longevity[arg] = (start_live[arg], i)
             if op.is_guard():
-                for arg in op.fail_args:
+                for arg in op.getfailargs():
                     if arg is None: # hole
                         continue
                     assert isinstance(arg, Box)

Modified: pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/test/test_regalloc.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/test/test_regalloc.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/test/test_regalloc.py	Fri Sep 17 16:59:02 2010
@@ -159,7 +159,7 @@
         assert guard_op.is_guard()
         bridge = self.parse(ops, **kwds)
         assert ([box.type for box in bridge.inputargs] ==
-                [box.type for box in guard_op.fail_args])
+                [box.type for box in guard_op.getfailargs()])
         faildescr = guard_op.getdescr()
         self.cpu.compile_bridge(faildescr, bridge.inputargs, bridge.operations)
         return bridge

Modified: pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/test/test_runner.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/test/test_runner.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/test/test_runner.py	Fri Sep 17 16:59:02 2010
@@ -265,7 +265,7 @@
                         ResOperation(rop.FINISH, [ConstInt(0)], None,
                                      descr=BasicFailDescr()),
                         ]
-                    ops[-2].fail_args = [i1]
+                    ops[-2].setfailargs([i1])
                     looptoken = LoopToken()
                     self.cpu.compile_loop([b], ops, looptoken)
                     if op == rop.INT_IS_TRUE:
@@ -314,7 +314,7 @@
                         ResOperation(rop.FINISH, [ConstInt(0)], None,
                                      descr=BasicFailDescr()),
                         ]
-                    ops[-2].fail_args = [i1]
+                    ops[-2].setfailargs([i1])
                     inputargs = [i for i in (a, b) if isinstance(i, Box)]
                     looptoken = LoopToken()
                     self.cpu.compile_loop(inputargs, ops, looptoken)
@@ -353,7 +353,7 @@
             ResOperation(rop.JUMP, [i1], None, descr=looptoken),
             ]
         inputargs = [i0]
-        operations[3].fail_args = [i1]
+        operations[3].setfailargs([i1])
         self.cpu.compile_loop(inputargs, operations, looptoken)
         name, loopaddress, loopsize = agent.functions[0]
         assert name == "Loop # 0: hello"
@@ -368,7 +368,7 @@
             ResOperation(rop.DEBUG_MERGE_POINT, [FakeString("bye")], None),
             ResOperation(rop.JUMP, [i1b], None, descr=looptoken),
         ]
-        bridge[1].fail_args = [i1b]
+        bridge[1].setfailargs([i1b])
 
         self.cpu.compile_bridge(faildescr1, [i1b], bridge)        
         name, address, size = agent.functions[1]
@@ -462,7 +462,7 @@
                 cmp_result = BoxInt()
                 ops.append(ResOperation(float_op, args, cmp_result))
                 ops.append(ResOperation(guard_op, [cmp_result], None, descr=BasicFailDescr()))
-                ops[-1].fail_args = [failed]
+                ops[-1].setfailargs([failed])
 
             ops.append(ResOperation(rop.FINISH, [finished], None, descr=BasicFailDescr()))
 

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	Fri Sep 17 16:59:02 2010
@@ -233,14 +233,14 @@
         self.metainterp_sd = metainterp_sd
 
     def store_final_boxes(self, guard_op, boxes):
-        guard_op.fail_args = boxes
+        guard_op.setfailargs(boxes)
         self.guard_opnum = guard_op.getopnum()
 
     def make_a_counter_per_value(self, guard_value_op):
         assert guard_value_op.getopnum() == rop.GUARD_VALUE
         box = guard_value_op.getarg(0)
         try:
-            i = guard_value_op.fail_args.index(box)
+            i = guard_value_op.getfailargs().index(box)
         except ValueError:
             return     # xxx probably very rare
         else:
@@ -598,6 +598,6 @@
         ResOperation(rop.GUARD_NO_EXCEPTION, [], None, descr=faildescr),
         ResOperation(rop.FINISH, finishargs, None, descr=jd.portal_finishtoken)
         ]
-    operations[1].fail_args = []
+    operations[1].setfailargs([])
     cpu.compile_loop(inputargs, operations, loop_token)
     return loop_token

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	Fri Sep 17 16:59:02 2010
@@ -773,12 +773,12 @@
                 if hasattr(op.getdescr(), '_debug_suboperations'):
                     ops = op.getdescr()._debug_suboperations
                     TreeLoop.check_consistency_of_branch(ops, seen.copy())
-                for box in op.fail_args or []:
+                for box in op.getfailargs() or []:
                     if box is not None:
                         assert isinstance(box, Box)
                         assert box in seen
             else:
-                assert op.fail_args is None
+                assert op.getfailargs() is None
             box = op.result
             if box is not None:
                 assert isinstance(box, Box)

Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/logger.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/logger.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/logger.py	Fri Sep 17 16:59:02 2010
@@ -97,9 +97,9 @@
                 else:
                     r = self.repr_of_descr(descr)
                 args += ', descr=' +  r
-            if is_guard and op.fail_args is not None:
+            if is_guard and op.getfailargs() is not None:
                 fail_args = ' [' + ", ".join([self.repr_of_arg(memo, arg)
-                                              for arg in op.fail_args]) + ']'
+                                              for arg in op.getfailargs()]) + ']'
             else:
                 fail_args = ''
             debug_print(res + op.getopname() +

Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/optimizer.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/optimizer.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/optimizer.py	Fri Sep 17 16:59:02 2010
@@ -362,7 +362,7 @@
                 else:
                     raise AssertionError("uh?")
                 newop = ResOperation(opnum, [op.getarg(0)], op.result, descr)
-                newop.fail_args = op.getfailargs()
+                newop.setfailargs(op.getfailargs())
                 return newop
             else:
                 # a real GUARD_VALUE.  Make it use one counter per value.

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	Fri Sep 17 16:59:02 2010
@@ -7,12 +7,12 @@
 class BaseResOperation(object):
     """The central ResOperation class, representing one operation."""
 
-    # for 'guard_*'
-    fail_args = None
+    __slots__ = ['_fail_args', '_opnum', '_args', 'result', '_descr',
+                 'name', 'pc', '_exc_box', '__weakref__']
 
     # debug
-    name = ""
-    pc = 0
+    ## name = ""
+    ## pc = 0
 
     def __init__(self, opnum, args, result, descr=None):
         make_sure_not_resized(args)
@@ -23,11 +23,13 @@
         assert not isinstance(result, list)
         self.result = result
         self.setdescr(descr)
+        
+        self._fail_args = None
+        self.pc = 0
+        self.name = ''
 
-    def __setattr__(self, name, attr):
-        if name == 'descr':
-            assert False
-        object.__setattr__(self, name, attr)
+    ## def __init__(self, result):
+    ##     self.result = result
 
     def copy_and_change(self, opnum, args=None, result=None, descr=None):
         "shallow copy: the returned operation is meant to be used in place of self"
@@ -44,27 +46,35 @@
 
     def getopnum(self):
         return self._opnum
+        #raise NotImplementedError
 
     def getarg(self, i):
         return self._args[i]
+        #raise NotImplementedError
 
     def setarg(self, i, box):
         self._args[i] = box
+        #raise NotImplementedError
 
     def numargs(self):
         return len(self._args)
+        #raise NotImplementedError
 
     def setarglist(self, args):
+        # XXX: is it really needed?
         self._args = args
+        #raise NotImplementedError
 
     def getarglist(self):
         return self._args
+        #raise NotImplementedError
 
     def getfailargs(self):
-        return self.fail_args
+        return self._fail_args
+        #raise NotImplementedError
 
     def setfailargs(self, fail_args):
-        self.fail_args = fail_args
+        self._fail_args = fail_args
 
     def getdescr(self):
         return self._descr
@@ -83,8 +93,8 @@
         descr = self._descr
         if descr is not None:
             descr = descr.clone_if_mutable()
-        op = ResOperation(self._opnum, self._args, self.result, descr)
-        op.fail_args = self.fail_args
+        op = ResOperation(self.getopnum(), self._args, self.result, descr)
+        op._fail_args = self._fail_args
         op.name = self.name
         if not we_are_translated():
             op.pc = self.pc
@@ -103,7 +113,7 @@
             prefix = "%s:%s   " % (self.name, self.pc)
         else:
             prefix = ""
-        if self._descr is None or we_are_translated():
+        if self.getdescr() is None or we_are_translated():
             return '%s%s%s(%s)' % (prefix, sres, self.getopname(),
                                  ', '.join([str(a) for a in self._args]))
         else:
@@ -112,50 +122,52 @@
 
     def getopname(self):
         try:
-            return opname[self._opnum].lower()
+            return opname[self.getopnum()].lower()
         except KeyError:
-            return '<%d>' % self._opnum
+            return '<%d>' % self.getopnum()
 
     def is_guard(self):
-        return rop._GUARD_FIRST <= self._opnum <= rop._GUARD_LAST
+        return rop._GUARD_FIRST <= self.getopnum() <= rop._GUARD_LAST
 
     def is_foldable_guard(self):
-        return rop._GUARD_FOLDABLE_FIRST <= self._opnum <= rop._GUARD_FOLDABLE_LAST
+        return rop._GUARD_FOLDABLE_FIRST <= self.getopnum() <= rop._GUARD_FOLDABLE_LAST
 
     def is_guard_exception(self):
-        return (self._opnum == rop.GUARD_EXCEPTION or
-                self._opnum == rop.GUARD_NO_EXCEPTION)
+        return (self.getopnum() == rop.GUARD_EXCEPTION or
+                self.getopnum() == rop.GUARD_NO_EXCEPTION)
 
     def is_guard_overflow(self):
-        return (self._opnum == rop.GUARD_OVERFLOW or
-                self._opnum == rop.GUARD_NO_OVERFLOW)
+        return (self.getopnum() == rop.GUARD_OVERFLOW or
+                self.getopnum() == rop.GUARD_NO_OVERFLOW)
 
     def is_always_pure(self):
-        return rop._ALWAYS_PURE_FIRST <= self._opnum <= rop._ALWAYS_PURE_LAST
+        return rop._ALWAYS_PURE_FIRST <= self.getopnum() <= rop._ALWAYS_PURE_LAST
 
     def has_no_side_effect(self):
-        return rop._NOSIDEEFFECT_FIRST <= self._opnum <= rop._NOSIDEEFFECT_LAST
+        return rop._NOSIDEEFFECT_FIRST <= self.getopnum() <= rop._NOSIDEEFFECT_LAST
 
     def can_raise(self):
-        return rop._CANRAISE_FIRST <= self._opnum <= rop._CANRAISE_LAST
+        return rop._CANRAISE_FIRST <= self.getopnum() <= rop._CANRAISE_LAST
 
     def is_ovf(self):
-        return rop._OVF_FIRST <= self._opnum <= rop._OVF_LAST
+        return rop._OVF_FIRST <= self.getopnum() <= rop._OVF_LAST
 
     def is_comparison(self):
         return self.is_always_pure() and self.returns_bool_result()
 
     def is_final(self):
-        return rop._FINAL_FIRST <= self._opnum <= rop._FINAL_LAST
+        return rop._FINAL_FIRST <= self.getopnum() <= rop._FINAL_LAST
 
     def returns_bool_result(self):
-        opnum = self._opnum
+        opnum = self.getopnum()
         if we_are_translated():
             assert opnum >= 0
         elif opnum < 0:
             return False     # for tests
         return opboolresult[opnum]
 
+
+
 # ____________________________________________________________
 
 _oplist = [

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	Fri Sep 17 16:59:02 2010
@@ -238,13 +238,13 @@
         rvar = self.box_for_var(res)
         self.vars[res] = rvar
         res = ResOperation(opnum, args, rvar, descr)
-        res.fail_args = fail_args
+        res.setfailargs(fail_args)
         return res
 
     def parse_op_no_result(self, line):
         opnum, args, descr, fail_args = self.parse_op(line)
         res = ResOperation(opnum, args, None, descr)
-        res.fail_args = fail_args
+        res.setfailargs(fail_args)
         return res
 
     def parse_next_op(self, line):

Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_basic.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_basic.py	Fri Sep 17 16:59:02 2010
@@ -296,7 +296,7 @@
             found = 0
             for op in get_stats().loops[0]._all_operations():
                 if op.getopname() == 'guard_true':
-                    liveboxes = op.fail_args
+                    liveboxes = op.getfailargs()
                     assert len(liveboxes) == 3
                     for box in liveboxes:
                         assert isinstance(box, history.BoxInt)

Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_loop.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_loop.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_loop.py	Fri Sep 17 16:59:02 2010
@@ -178,7 +178,7 @@
             found = 0
             for op in get_stats().loops[0]._all_operations():
                 if op.getopname() == 'guard_true':
-                    liveboxes = op.fail_args
+                    liveboxes = op.getfailargs()
                     assert len(liveboxes) == 2     # x, y (in some order)
                     assert isinstance(liveboxes[0], history.BoxInt)
                     assert isinstance(liveboxes[1], history.BoxInt)

Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_oparser.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_oparser.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_oparser.py	Fri Sep 17 16:59:02 2010
@@ -31,7 +31,7 @@
     loop = parse(x, None, locals())
     assert len(loop.operations) == 1
     assert loop.operations[0].getdescr()
-    assert loop.operations[0].fail_args == []
+    assert loop.operations[0].getfailargs() == []
 
 def test_descr():
     class Xyz(AbstractDescr):

Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_optimizeopt.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_optimizeopt.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_optimizeopt.py	Fri Sep 17 16:59:02 2010
@@ -50,11 +50,11 @@
     fdescr.rd_snapshot = resume.Snapshot(snapshot0, [b1])
     #
     opt.store_final_boxes_in_guard(op)
-    if op.fail_args == [b0, b1]:
+    if op.getfailargs() == [b0, b1]:
         assert fdescr.rd_numb.nums      == [tag(1, TAGBOX)]
         assert fdescr.rd_numb.prev.nums == [tag(0, TAGBOX)]
     else:
-        assert op.fail_args == [b1, b0]
+        assert op.getfailargs() == [b1, b0]
         assert fdescr.rd_numb.nums      == [tag(0, TAGBOX)]
         assert fdescr.rd_numb.prev.nums == [tag(1, TAGBOX)]
     assert fdescr.rd_virtuals is None
@@ -152,14 +152,14 @@
             remap[op2.result] = op1.result
         if op1.getopnum() != rop.JUMP:      # xxx obscure
             assert op1.getdescr() == op2.getdescr()
-        if op1.fail_args or op2.fail_args:
-            assert len(op1.fail_args) == len(op2.fail_args)
+        if op1.getfailargs() or op2.getfailargs():
+            assert len(op1.getfailargs()) == len(op2.getfailargs())
             if strict_fail_args:
-                for x, y in zip(op1.fail_args, op2.fail_args):
+                for x, y in zip(op1.getfailargs(), op2.getfailargs()):
                     assert x == remap.get(y, y)
             else:
-                fail_args1 = set(op1.fail_args)
-                fail_args2 = set([remap.get(y, y) for y in op2.fail_args])
+                fail_args1 = set(op1.getfailargs())
+                fail_args2 = set([remap.get(y, y) for y in op2.getfailargs()])
                 assert fail_args1 == fail_args2
     assert len(oplist1) == len(oplist2)
     print '-'*57
@@ -211,7 +211,7 @@
         self.metainterp_sd = metainterp_sd
         self.original_greenkey = original_greenkey
     def store_final_boxes(self, op, boxes):
-        op.fail_args = boxes
+        op.setfailargs(boxes)
     def __eq__(self, other):
         return type(self) is type(other)      # xxx obscure
 
@@ -2326,7 +2326,7 @@
         from pypy.jit.metainterp.test.test_resume import ResumeDataFakeReader
         from pypy.jit.metainterp.test.test_resume import MyMetaInterp
         guard_op, = [op for op in self.loop.operations if op.is_guard()]
-        fail_args = guard_op.fail_args
+        fail_args = guard_op.getfailargs()
         fdescr = guard_op.getdescr()
         assert fdescr.guard_opnum == guard_opnum
         reader = ResumeDataFakeReader(fdescr, fail_args,

Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_virtualref.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_virtualref.py	(original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_virtualref.py	Fri Sep 17 16:59:02 2010
@@ -72,10 +72,10 @@
         ops = self.metainterp.staticdata.stats.loops[0].operations
         [guard_op] = [op for op in ops
                          if op.getopnum() == rop.GUARD_NOT_FORCED]
-        bxs1 = [box for box in guard_op.fail_args
+        bxs1 = [box for box in guard_op.getfailargs()
                   if str(box._getrepr_()).endswith('.X')]
         assert len(bxs1) == 1
-        bxs2 = [box for box in guard_op.fail_args
+        bxs2 = [box for box in guard_op.getfailargs()
                   if str(box._getrepr_()).endswith('JitVirtualRef')]
         assert len(bxs2) == 1
         JIT_VIRTUAL_REF = self.vrefinfo.JIT_VIRTUAL_REF
@@ -84,9 +84,9 @@
         # try reloading from blackhole.py's point of view
         from pypy.jit.metainterp.resume import ResumeDataDirectReader
         cpu = self.metainterp.cpu
-        cpu.get_latest_value_count = lambda : len(guard_op.fail_args)
-        cpu.get_latest_value_int = lambda i:guard_op.fail_args[i].getint()
-        cpu.get_latest_value_ref = lambda i:guard_op.fail_args[i].getref_base()
+        cpu.get_latest_value_count = lambda : len(guard_op.getfailargs())
+        cpu.get_latest_value_int = lambda i:guard_op.getfailargs()[i].getint()
+        cpu.get_latest_value_ref = lambda i:guard_op.getfailargs()[i].getref_base()
         cpu.clear_latest_values = lambda count: None
         resumereader = ResumeDataDirectReader(cpu, guard_op.getdescr())
         vrefinfo = self.metainterp.staticdata.virtualref_info



More information about the Pypy-commit mailing list