[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