[pypy-svn] r77145 - in pypy/branch/resoperation-refactoring/pypy/jit: backend/cli backend/llgraph backend/llsupport/test backend/llvm backend/test backend/x86 backend/x86/test metainterp metainterp/optimizeopt metainterp/test
antocuni at codespeak.net
antocuni at codespeak.net
Fri Sep 17 15:34:07 CEST 2010
Author: antocuni
Date: Fri Sep 17 15:34:04 2010
New Revision: 77145
Modified:
pypy/branch/resoperation-refactoring/pypy/jit/backend/cli/method.py
pypy/branch/resoperation-refactoring/pypy/jit/backend/cli/runner.py
pypy/branch/resoperation-refactoring/pypy/jit/backend/llgraph/runner.py
pypy/branch/resoperation-refactoring/pypy/jit/backend/llsupport/test/test_gc.py
pypy/branch/resoperation-refactoring/pypy/jit/backend/llvm/compile.py
pypy/branch/resoperation-refactoring/pypy/jit/backend/test/runner_test.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_recompilation.py
pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/test/test_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/logger.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimize.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizefindnode.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/heap.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizeopt/optimizer.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/resoperation.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/simple_optimize.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_recursive.py
pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_virtualref.py
Log:
(david, antocuni): use the official API for getting and setting descrs
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 15:34:04 2010
@@ -209,7 +209,7 @@
for op in operations:
if op.getopnum() in (rop.GETFIELD_GC, rop.SETFIELD_GC):
box = op.args[0]
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, runner.FieldDescr)
box2classes.setdefault(box, []).append(descr.selfclass)
if op in self.cliloop.guard2ops:
@@ -544,7 +544,7 @@
self.emit_guard_overflow_impl(op, OpCodes.Brfalse)
def emit_op_jump(self, op):
- target_token = op.descr
+ target_token = op.getdescr()
assert isinstance(target_token, LoopToken)
if target_token.cliloop is self.cliloop:
# jump to the beginning of the loop
@@ -586,7 +586,7 @@
self.store_result(op)
def emit_op_instanceof(self, op):
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, runner.TypeDescr)
clitype = descr.get_clitype()
op.args[0].load(self)
@@ -604,7 +604,7 @@
self.store_result(op)
def emit_op_call_impl(self, op):
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, runner.StaticMethDescr)
delegate_type = descr.get_delegate_clitype()
meth_invoke = descr.get_meth_info()
@@ -619,7 +619,7 @@
emit_op_call_pure = emit_op_call
def emit_op_oosend(self, op):
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, runner.MethDescr)
clitype = descr.get_self_clitype()
methinfo = descr.get_meth_info()
@@ -639,7 +639,7 @@
self.store_result(op)
def emit_op_getfield_gc(self, op):
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, runner.FieldDescr)
clitype = descr.get_self_clitype()
fieldinfo = descr.get_field_info()
@@ -653,7 +653,7 @@
emit_op_getfield_gc_pure = emit_op_getfield_gc
def emit_op_setfield_gc(self, op):
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, runner.FieldDescr)
clitype = descr.get_self_clitype()
fieldinfo = descr.get_field_info()
@@ -665,7 +665,7 @@
self.il.Emit(OpCodes.Stfld, fieldinfo)
def emit_op_getarrayitem_gc(self, op):
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, runner.TypeDescr)
clitype = descr.get_array_clitype()
itemtype = descr.get_clitype()
@@ -678,7 +678,7 @@
emit_op_getarrayitem_gc_pure = emit_op_getarrayitem_gc
def emit_op_setarrayitem_gc(self, op):
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, runner.TypeDescr)
clitype = descr.get_array_clitype()
itemtype = descr.get_clitype()
@@ -689,7 +689,7 @@
self.il.Emit(OpCodes.Stelem, itemtype)
def emit_op_arraylen_gc(self, op):
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, runner.TypeDescr)
clitype = descr.get_array_clitype()
op.args[0].load(self)
@@ -698,7 +698,7 @@
self.store_result(op)
def emit_op_new_array(self, op):
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, runner.TypeDescr)
item_clitype = descr.get_clitype()
if item_clitype is None:
Modified: pypy/branch/resoperation-refactoring/pypy/jit/backend/cli/runner.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/backend/cli/runner.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/backend/cli/runner.py Fri Sep 17 15:34:04 2010
@@ -105,7 +105,7 @@
def _attach_token_to_faildescrs(self, token, operations):
for op in operations:
if op.is_guard():
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, AbstractFailDescr)
descr._loop_token = token
descr._guard_op = op
@@ -136,7 +136,7 @@
func = cliloop.funcbox.holder.GetFunc()
func(self.get_inputargs())
op = self.failing_ops[self.inputargs.get_failed_op()]
- return op.descr
+ return op.getdescr()
def set_future_value_int(self, index, intvalue):
self.get_inputargs().set_int(index, intvalue)
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 15:34:04 2010
@@ -152,14 +152,14 @@
def _compile_operations(self, c, operations, var2index):
for op in operations:
llimpl.compile_add(c, op.getopnum())
- descr = op.descr
+ descr = op.getdescr()
if isinstance(descr, Descr):
llimpl.compile_add_descr(c, descr.ofs, descr.typeinfo)
if isinstance(descr, history.LoopToken) and op.getopnum() != rop.JUMP:
llimpl.compile_add_loop_token(c, descr)
if self.is_oo and isinstance(descr, (OODescr, MethDescr)):
# hack hack, not rpython
- c._obj.externalobj.operations[-1].descr = descr
+ c._obj.externalobj.operations[-1].setdescr(descr)
for i in range(op.numargs()):
x = op.getarg(i)
if isinstance(x, history.Box):
@@ -174,7 +174,7 @@
raise Exception("'%s' args contain: %r" % (op.getopname(),
x))
if op.is_guard():
- faildescr = op.descr
+ faildescr = op.getdescr()
assert isinstance(faildescr, history.AbstractFailDescr)
faildescr._fail_args_types = []
for box in op.fail_args:
@@ -205,12 +205,12 @@
op = operations[-1]
assert op.is_final()
if op.getopnum() == rop.JUMP:
- targettoken = op.descr
+ targettoken = op.getdescr()
assert isinstance(targettoken, history.LoopToken)
compiled_version = targettoken._llgraph_compiled_version
llimpl.compile_add_jump_target(c, compiled_version)
elif op.getopnum() == rop.FINISH:
- faildescr = op.descr
+ faildescr = op.getdescr()
index = self.get_fail_descr_number(faildescr)
llimpl.compile_add_fail(c, index)
else:
Modified: pypy/branch/resoperation-refactoring/pypy/jit/backend/llsupport/test/test_gc.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/backend/llsupport/test/test_gc.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/backend/llsupport/test/test_gc.py Fri Sep 17 15:34:04 2010
@@ -262,7 +262,7 @@
assert newops[0].getarg(0) == v_base
assert newops[0].getarg(1) == v_value
assert newops[0].result is None
- wbdescr = newops[0].descr
+ wbdescr = newops[0].getdescr()
assert isinstance(wbdescr.jit_wb_if_flag, int)
assert isinstance(wbdescr.jit_wb_if_flag_byteofs, int)
assert isinstance(wbdescr.jit_wb_if_flag_singlebyte, int)
@@ -300,7 +300,7 @@
assert len(operations) == 2
assert operations[0].getopnum() == rop.GETFIELD_RAW
assert operations[0].getarg(0) == ConstInt(43)
- assert operations[0].descr == gc_ll_descr.single_gcref_descr
+ assert operations[0].getdescr() == gc_ll_descr.single_gcref_descr
v_box = operations[0].result
assert isinstance(v_box, BoxPtr)
assert operations[1].getopnum() == rop.PTR_EQ
@@ -366,7 +366,7 @@
assert operations[1].getopnum() == rop.SETFIELD_RAW
assert operations[1].getarg(0) == v_base
assert operations[1].getarg(1) == v_value
- assert operations[1].descr == field_descr
+ assert operations[1].getdescr() == field_descr
def test_rewrite_assembler_3(self):
# check write barriers before SETARRAYITEM_GC
@@ -391,4 +391,4 @@
assert operations[1].getarg(0) == v_base
assert operations[1].getarg(1) == v_index
assert operations[1].getarg(2) == v_value
- assert operations[1].descr == array_descr
+ assert operations[1].getdescr() == array_descr
Modified: pypy/branch/resoperation-refactoring/pypy/jit/backend/llvm/compile.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/backend/llvm/compile.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/backend/llvm/compile.py Fri Sep 17 15:34:04 2010
@@ -475,7 +475,7 @@
return location
def generate_GETFIELD_GC(self, op):
- loc = self._generate_field_gep(op.args[0], op.descr)
+ loc = self._generate_field_gep(op.args[0], op.getdescr())
self.vars[op.result] = llvm_rffi.LLVMBuildLoad(self.builder, loc, "")
generate_GETFIELD_GC_PURE = generate_GETFIELD_GC
@@ -483,7 +483,7 @@
generate_GETFIELD_RAW_PURE = generate_GETFIELD_GC
def generate_SETFIELD_GC(self, op):
- fielddescr = op.descr
+ fielddescr = op.getdescr()
loc = self._generate_field_gep(op.args[0], fielddescr)
assert isinstance(fielddescr, FieldDescr)
getarg = self.cpu.getarg_by_index[fielddescr.size_index]
@@ -491,7 +491,7 @@
llvm_rffi.LLVMBuildStore(self.builder, value_ref, loc, "")
def generate_CALL(self, op):
- calldescr = op.descr
+ calldescr = op.getdescr()
assert isinstance(calldescr, CallDescr)
ty_function_ptr = self.cpu.get_calldescr_ty_function_ptr(calldescr)
v = op.args[0]
@@ -579,7 +579,7 @@
self.vars[op.result] = llvm_rffi.LLVMBuildLoad(self.builder, loc, "")
def generate_ARRAYLEN_GC(self, op):
- arraydescr = op.descr
+ arraydescr = op.getdescr()
assert isinstance(arraydescr, ArrayDescr)
self._generate_len(op, arraydescr.ty_array_ptr,
self.cpu.const_array_index_length)
@@ -598,7 +598,7 @@
return location
def _generate_array_gep(self, op):
- arraydescr = op.descr
+ arraydescr = op.getdescr()
assert isinstance(arraydescr, ArrayDescr)
location = self._generate_gep(op, arraydescr.ty_array_ptr,
self.cpu.const_array_index_array)
@@ -612,7 +612,7 @@
def generate_SETARRAYITEM_GC(self, op):
loc = self._generate_array_gep(op)
- arraydescr = op.descr
+ arraydescr = op.getdescr()
assert isinstance(arraydescr, ArrayDescr)
getarg = self.cpu.getarg_by_index[arraydescr.itemsize_index]
value_ref = getarg(self, op.args[2])
@@ -660,7 +660,7 @@
return res
def generate_NEW(self, op):
- sizedescr = op.descr
+ sizedescr = op.getdescr()
assert isinstance(sizedescr, SizeDescr)
res = self._generate_new(self.cpu._make_const_int(sizedescr.size))
self.vars[op.result] = res
@@ -695,7 +695,7 @@
self.vars[op.result] = res
def generate_NEW_ARRAY(self, op):
- arraydescr = op.descr
+ arraydescr = op.getdescr()
assert isinstance(arraydescr, ArrayDescr)
self._generate_new_array(op, arraydescr.ty_array_ptr,
self.cpu._make_const_int(arraydescr.itemsize),
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 15:34:04 2010
@@ -1,5 +1,6 @@
import py, sys, random, os, struct, operator
from pypy.jit.metainterp.history import (AbstractFailDescr,
+ AbstractDescr,
BasicFailDescr,
BoxInt, Box, BoxPtr,
LoopToken,
@@ -39,7 +40,7 @@
else:
raise NotImplementedError(box)
res = self.cpu.execute_token(looptoken)
- if res is operations[-1].descr:
+ if res is operations[-1].getdescr():
self.guard_failed = False
else:
self.guard_failed = True
@@ -77,7 +78,7 @@
operations[0].fail_args = []
if not descr:
descr = BasicFailDescr(1)
- operations[0].descr = descr
+ operations[0].setdescr(descr)
inputargs = []
for box in valueboxes:
if isinstance(box, Box) and box not in inputargs:
@@ -910,7 +911,7 @@
ResOperation(rop.JUMP, jumpargs, None, descr=looptoken),
]
operations[2].fail_args = inputargs[:]
- operations[2].descr = faildescr
+ operations[2].setdescr(faildescr)
#
self.cpu.compile_loop(inputargs, operations, looptoken)
#
@@ -1412,7 +1413,7 @@
FUNC = self.FuncType([lltype.Ptr(S), lltype.Signed], lltype.Void)
func_ptr = llhelper(lltype.Ptr(FUNC), func_void)
funcbox = self.get_funcbox(self.cpu, func_ptr)
- class WriteBarrierDescr:
+ class WriteBarrierDescr(AbstractDescr):
jit_wb_if_flag = 4096
jit_wb_if_flag_byteofs = struct.pack("i", 4096).index('\x10')
jit_wb_if_flag_singlebyte = 0x10
@@ -1824,7 +1825,7 @@
f2 = float_add(f0, f1)
finish(f2)'''
loop = parse(ops)
- done_number = self.cpu.get_fail_descr_number(loop.operations[-1].descr)
+ done_number = self.cpu.get_fail_descr_number(loop.operations[-1].getdescr())
looptoken = LoopToken()
looptoken.outermost_jitdriver_sd = FakeJitDriverSD()
self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
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 15:34:04 2010
@@ -105,11 +105,11 @@
args.append('ConstInt(%d)' % v.value)
else:
raise NotImplementedError(v)
- if op.descr is None:
+ if op.getdescr() is None:
descrstr = ''
else:
try:
- descrstr = ', ' + op.descr._random_info
+ descrstr = ', ' + op.getdescr()._random_info
except AttributeError:
descrstr = ', descr=...'
print >>s, ' ResOperation(rop.%s, [%s], %s%s),' % (
@@ -284,7 +284,7 @@
builder.intvars[:] = original_intvars
else:
op = ResOperation(rop.GUARD_NO_OVERFLOW, [], None)
- op.descr = BasicFailDescr()
+ op.setdescr(BasicFailDescr())
op.fail_args = fail_subset
builder.loop.operations.append(op)
@@ -345,7 +345,7 @@
def produce_into(self, builder, r):
op, passing = self.gen_guard(builder, r)
builder.loop.operations.append(op)
- op.descr = BasicFailDescr()
+ op.setdescr(BasicFailDescr())
op.fail_args = builder.subset_of_intvars(r)
if not passing:
builder.should_fail_by = op
@@ -606,7 +606,7 @@
else:
raise NotImplementedError(box)
fail = cpu.execute_token(self.loop.token)
- assert fail is self.should_fail_by.descr
+ assert fail is self.should_fail_by.getdescr()
for i, v in enumerate(self.get_fail_args()):
if isinstance(v, (BoxFloat, ConstFloat)):
value = cpu.get_latest_value_float(i)
@@ -633,7 +633,7 @@
else:
op = ResOperation(rop.GUARD_EXCEPTION, [guard_op._exc_box],
BoxPtr())
- op.descr = BasicFailDescr()
+ op.setdescr(BasicFailDescr())
op.fail_args = []
return op
@@ -642,7 +642,7 @@
r = self.r
guard_op = self.guard_op
fail_args = guard_op.fail_args
- fail_descr = guard_op.descr
+ fail_descr = guard_op.getdescr()
op = self.should_fail_by
if not op.fail_args:
return False
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 15:34:04 2010
@@ -688,7 +688,7 @@
def regalloc_perform_with_guard(self, op, guard_op, faillocs,
arglocs, resloc, current_depths):
- faildescr = guard_op.descr
+ faildescr = guard_op.getdescr()
assert isinstance(faildescr, AbstractFailDescr)
faildescr._x86_current_depths = current_depths
failargs = guard_op.fail_args
@@ -1656,7 +1656,7 @@
def genop_guard_call_may_force(self, op, guard_op, guard_token,
arglocs, result_loc):
- faildescr = guard_op.descr
+ faildescr = guard_op.getdescr()
fail_index = self.cpu.get_fail_descr_number(faildescr)
self.mc.MOV_bi(FORCE_INDEX_OFS, fail_index)
self.genop_call(op, arglocs, result_loc)
@@ -1665,10 +1665,10 @@
def genop_guard_call_assembler(self, op, guard_op, guard_token,
arglocs, result_loc):
- faildescr = guard_op.descr
+ faildescr = guard_op.getdescr()
fail_index = self.cpu.get_fail_descr_number(faildescr)
self.mc.MOV_bi(FORCE_INDEX_OFS, fail_index)
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, LoopToken)
assert len(arglocs) - 2 == len(descr._x86_arglocs[0])
#
@@ -1753,7 +1753,7 @@
def genop_discard_cond_call_gc_wb(self, op, arglocs):
# use 'mc._mc' directly instead of 'mc', to avoid
# bad surprizes if the code buffer is mostly full
- descr = op.descr
+ descr = op.getdescr()
if we_are_translated():
cls = self.cpu.gc_ll_descr.has_write_barrier_class()
assert cls is not None and isinstance(descr, cls)
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 15:34:04 2010
@@ -268,7 +268,7 @@
selected_reg, need_lower_byte)
def _compute_loop_consts(self, inputargs, jump, looptoken):
- if jump.getopnum() != rop.JUMP or jump.descr is not looptoken:
+ if jump.getopnum() != rop.JUMP or jump.getdescr() is not looptoken:
loop_consts = {}
else:
loop_consts = {}
@@ -451,7 +451,7 @@
def consider_finish(self, op):
locs = [self.loc(op.getarg(i)) for i in range(op.numargs())]
locs_are_ref = [op.getarg(i).type == REF for i in range(op.numargs())]
- fail_index = self.assembler.cpu.get_fail_descr_number(op.descr)
+ fail_index = self.assembler.cpu.get_fail_descr_number(op.getdescr())
self.assembler.generate_failure(fail_index, locs, self.exc,
locs_are_ref)
self.possibly_free_vars_for_op(op)
@@ -663,7 +663,7 @@
self.Perform(op, arglocs, resloc)
def _consider_call(self, op, guard_not_forced_op=None):
- calldescr = op.descr
+ calldescr = op.getdescr()
assert isinstance(calldescr, BaseCallDescr)
assert len(calldescr.arg_classes) == op.numargs() - 1
size = calldescr.get_result_size(self.translate_support_code)
@@ -678,7 +678,7 @@
self._consider_call(op, guard_op)
def consider_call_assembler(self, op, guard_op):
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, LoopToken)
jd = descr.outermost_jitdriver_sd
assert jd is not None
@@ -739,10 +739,10 @@
def consider_new(self, op):
gc_ll_descr = self.assembler.cpu.gc_ll_descr
- if gc_ll_descr.can_inline_malloc(op.descr):
- self._fastpath_malloc(op, op.descr)
+ if gc_ll_descr.can_inline_malloc(op.getdescr()):
+ self._fastpath_malloc(op, op.getdescr())
else:
- args = gc_ll_descr.args_for_new(op.descr)
+ args = gc_ll_descr.args_for_new(op.getdescr())
arglocs = [imm(x) for x in args]
return self._call(op, arglocs)
@@ -813,13 +813,13 @@
gc_ll_descr = self.assembler.cpu.gc_ll_descr
if gc_ll_descr.get_funcptr_for_newarray is not None:
# framework GC
- args = self.assembler.cpu.gc_ll_descr.args_for_new_array(op.descr)
+ args = self.assembler.cpu.gc_ll_descr.args_for_new_array(op.getdescr())
arglocs = [imm(x) for x in args]
arglocs.append(self.loc(op.getarg(0)))
return self._call(op, arglocs)
# boehm GC (XXX kill the following code at some point)
scale_of_field, basesize, ofs_length, _ = (
- self._unpack_arraydescr(op.descr))
+ self._unpack_arraydescr(op.getdescr()))
return self._malloc_varsize(basesize, ofs_length, scale_of_field,
op.getarg(0), op.result)
@@ -843,7 +843,7 @@
return imm(ofs), imm(size), ptr
def consider_setfield_gc(self, op):
- ofs_loc, size_loc, ptr = self._unpack_fielddescr(op.descr)
+ ofs_loc, size_loc, ptr = self._unpack_fielddescr(op.getdescr())
assert isinstance(size_loc, ImmedLoc)
if size_loc.value == 1:
need_lower_byte = True
@@ -870,7 +870,7 @@
consider_unicodesetitem = consider_strsetitem
def consider_setarrayitem_gc(self, op):
- scale, ofs, _, ptr = self._unpack_arraydescr(op.descr)
+ scale, ofs, _, ptr = self._unpack_arraydescr(op.getdescr())
args = op.getarglist()
base_loc = self.rm.make_sure_var_in_reg(op.getarg(0), args)
if scale == 0:
@@ -887,7 +887,7 @@
consider_setarrayitem_raw = consider_setarrayitem_gc
def consider_getfield_gc(self, op):
- ofs_loc, size_loc, _ = self._unpack_fielddescr(op.descr)
+ ofs_loc, size_loc, _ = self._unpack_fielddescr(op.getdescr())
args = op.getarglist()
base_loc = self.rm.make_sure_var_in_reg(op.getarg(0), args)
self.rm.possibly_free_vars(args)
@@ -899,7 +899,7 @@
consider_getfield_gc_pure = consider_getfield_gc
def consider_getarrayitem_gc(self, op):
- scale, ofs, _, _ = self._unpack_arraydescr(op.descr)
+ scale, ofs, _, _ = self._unpack_arraydescr(op.getdescr())
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)
@@ -939,7 +939,7 @@
consider_unicodelen = consider_strlen
def consider_arraylen_gc(self, op):
- arraydescr = op.descr
+ arraydescr = op.getdescr()
assert isinstance(arraydescr, BaseArrayDescr)
ofs = arraydescr.get_ofs_length(self.translate_support_code)
args = op.getarglist()
@@ -961,7 +961,7 @@
def consider_jump(self, op):
assembler = self.assembler
assert self.jump_target_descr is None
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, LoopToken)
self.jump_target_descr = descr
nonfloatlocs, floatlocs = assembler.target_arglocs(self.jump_target_descr)
Modified: pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/test/test_recompilation.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/test/test_recompilation.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/backend/x86/test/test_recompilation.py Fri Sep 17 15:34:04 2010
@@ -47,7 +47,7 @@
finish(i3, i4, i5, i6, i7, i8, i9, descr=fdescr2)
'''
bridge = self.attach_bridge(ops, loop, -2)
- descr = loop.operations[2].descr
+ descr = loop.operations[2].getdescr()
new = descr._x86_bridge_frame_depth
assert descr._x86_bridge_param_depth == 0
# XXX: Maybe add enough ops to force stack on 64-bit as well?
@@ -114,8 +114,8 @@
assert loop.token._x86_param_depth == 0
# XXX: Maybe add enough ops to force stack on 64-bit as well?
if IS_X86_32:
- assert guard_op.descr._x86_bridge_frame_depth > loop_frame_depth
- assert guard_op.descr._x86_bridge_param_depth == 0
+ assert guard_op.getdescr()._x86_bridge_frame_depth > loop_frame_depth
+ assert guard_op.getdescr()._x86_bridge_param_depth == 0
self.cpu.set_future_value_int(0, 0)
self.cpu.set_future_value_int(1, 0)
self.cpu.set_future_value_int(2, 0)
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 15:34:04 2010
@@ -160,7 +160,7 @@
bridge = self.parse(ops, **kwds)
assert ([box.type for box in bridge.inputargs] ==
[box.type for box in guard_op.fail_args])
- faildescr = guard_op.descr
+ faildescr = guard_op.getdescr()
self.cpu.compile_bridge(faildescr, bridge.inputargs, bridge.operations)
return bridge
@@ -607,7 +607,7 @@
'''
bridge = self.attach_bridge(ops, loop, -2)
- assert loop.operations[-2].descr._x86_bridge_param_depth == self.expected_param_depth(2)
+ assert loop.operations[-2].getdescr()._x86_bridge_param_depth == self.expected_param_depth(2)
self.cpu.set_future_value_int(0, 4)
self.cpu.set_future_value_int(1, 7)
@@ -630,7 +630,7 @@
'''
bridge = self.attach_bridge(ops, loop, -2)
- assert loop.operations[-2].descr._x86_bridge_param_depth == self.expected_param_depth(2)
+ assert loop.operations[-2].getdescr()._x86_bridge_param_depth == self.expected_param_depth(2)
self.cpu.set_future_value_int(0, 4)
self.cpu.set_future_value_int(1, 7)
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 15:34:04 2010
@@ -65,7 +65,7 @@
jitdriver_sd = metainterp.jitdriver_sd
loop_token = make_loop_token(len(loop.inputargs), jitdriver_sd)
loop.token = loop_token
- loop.operations[-1].descr = loop_token # patch the target of the JUMP
+ loop.operations[-1].setdescr(loop_token) # patch the target of the JUMP
try:
old_loop_token = jitdriver_sd.warmstate.optimize_loop(
metainterp_sd, old_loop_tokens, loop)
@@ -540,7 +540,7 @@
op = new_loop.operations[-1]
if not isinstance(target_loop_token, TerminatingLoopToken):
# normal case
- op.descr = target_loop_token # patch the jump target
+ op.setdescr(target_loop_token) # patch the jump target
else:
# The target_loop_token is a pseudo loop token,
# e.g. loop_tokens_done_with_this_frame_void[0]
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 Fri Sep 17 15:34:04 2010
@@ -17,13 +17,13 @@
for graph, highlight in graphs:
for op in graph.get_operations():
if is_interesting_guard(op):
- graphs.append((SubGraph(op.descr._debug_suboperations),
+ graphs.append((SubGraph(op.getdescr()._debug_suboperations),
highlight))
graphpage = ResOpGraphPage(graphs, errmsg)
graphpage.display()
def is_interesting_guard(op):
- return hasattr(op.descr, '_debug_suboperations')
+ return hasattr(op.getdescr(), '_debug_suboperations')
class ResOpGraphPage(GraphPage):
@@ -155,7 +155,7 @@
op = operations[opindex]
lines.append(repr(op))
if is_interesting_guard(op):
- tgt = op.descr._debug_suboperations[0]
+ tgt = op.getdescr()._debug_suboperations[0]
tgt_g, tgt_i = self.all_operations[tgt]
self.genedge((graphindex, opstartindex),
(tgt_g, tgt_i),
@@ -168,7 +168,7 @@
(graphindex, opindex))
break
if op.getopnum() == rop.JUMP:
- tgt = op.descr
+ tgt = op.getdescr()
tgt_g = -1
if tgt is None:
tgt_g = graphindex
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 15:34:04 2010
@@ -769,9 +769,9 @@
if isinstance(box, Box):
assert box in seen
if op.is_guard():
- assert op.descr is not None
- if hasattr(op.descr, '_debug_suboperations'):
- ops = op.descr._debug_suboperations
+ assert op.getdescr() is not None
+ 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 []:
if box is not None:
@@ -786,7 +786,7 @@
seen[box] = True
assert operations[-1].is_final()
if operations[-1].getopnum() == rop.JUMP:
- target = operations[-1].descr
+ target = operations[-1].getdescr()
if target is not None:
assert isinstance(target, LoopToken)
@@ -816,9 +816,9 @@
return
result.extend(operations)
for op in operations:
- if op.is_guard() and op.descr:
- if hasattr(op.descr, '_debug_suboperations'):
- ops = op.descr._debug_suboperations
+ if op.is_guard() and op.getdescr():
+ if hasattr(op.getdescr(), '_debug_suboperations'):
+ ops = op.getdescr()._debug_suboperations
_list_all_operations(result, ops, omit_finish)
# ____________________________________________________________
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 15:34:04 2010
@@ -89,8 +89,8 @@
else:
res = ""
is_guard = op.is_guard()
- if op.descr is not None:
- descr = op.descr
+ if op.getdescr() is not None:
+ descr = op.getdescr()
if is_guard and self.guard_number:
index = self.metainterp_sd.cpu.get_fail_descr_number(descr)
r = "<Guard%d>" % index
Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimize.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimize.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimize.py Fri Sep 17 15:34:04 2010
@@ -43,7 +43,7 @@
finder.find_nodes_bridge(bridge)
for old_loop_token in old_loop_tokens:
if finder.bridge_matches(old_loop_token.specnodes):
- bridge.operations[-1].descr = old_loop_token # patch jump target
+ bridge.operations[-1].setdescr(old_loop_token) # patch jump target
optimize_bridge_1(metainterp_sd, bridge)
return old_loop_token
return None
Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizefindnode.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizefindnode.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/optimizefindnode.py Fri Sep 17 15:34:04 2010
@@ -163,7 +163,7 @@
argboxes = [self.get_constant_box(op.getarg(i))
for i in range(op.numargs())]
resbox = execute_nonspec(self.cpu, None,
- op.getopnum(), argboxes, op.descr)
+ op.getopnum(), argboxes, op.getdescr())
self.set_constant_node(op.result, resbox.constbox())
# default case: mark the arguments as escaping
for i in range(op.numargs()):
@@ -187,7 +187,7 @@
def find_nodes_NEW(self, op):
instnode = InstanceNode()
- instnode.structdescr = op.descr
+ instnode.structdescr = op.getdescr()
self.nodes[op.result] = instnode
def find_nodes_NEW_ARRAY(self, op):
@@ -197,7 +197,7 @@
return # var-sized arrays are not virtual
arraynode = InstanceNode()
arraynode.arraysize = lengthbox.getint()
- arraynode.arraydescr = op.descr
+ arraynode.arraydescr = op.getdescr()
self.nodes[op.result] = arraynode
def find_nodes_ARRAYLEN_GC(self, op):
@@ -226,7 +226,7 @@
if instnode.escaped:
fieldnode.mark_escaped()
return # nothing to be gained from tracking the field
- field = op.descr
+ field = op.getdescr()
assert isinstance(field, AbstractValue)
if instnode.curfields is None:
instnode.curfields = {}
@@ -237,7 +237,7 @@
instnode = self.getnode(op.getarg(0))
if instnode.escaped:
return # nothing to be gained from tracking the field
- field = op.descr
+ field = op.getdescr()
assert isinstance(field, AbstractValue)
if instnode.curfields is not None and field in instnode.curfields:
fieldnode = instnode.curfields[field]
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 Fri Sep 17 15:34:04 2010
@@ -117,7 +117,7 @@
if opnum == rop.CALL_ASSEMBLER:
effectinfo = None
else:
- effectinfo = op.descr.get_extra_info()
+ effectinfo = op.getdescr().get_extra_info()
if effectinfo is not None:
# XXX we can get the wrong complexity here, if the lists
# XXX stored on effectinfo are large
@@ -203,20 +203,20 @@
def force_lazy_setfield_if_necessary(self, op, value, write=False):
try:
- op1 = self.lazy_setfields[op.descr]
+ op1 = self.lazy_setfields[op.getdescr()]
except KeyError:
if write:
- self.lazy_setfields_descrs.append(op.descr)
+ self.lazy_setfields_descrs.append(op.getdescr())
else:
if self.getvalue(op1.getarg(0)) is not value:
- self.force_lazy_setfield(op.descr)
+ self.force_lazy_setfield(op.getdescr())
def optimize_GETFIELD_GC(self, op):
value = self.getvalue(op.getarg(0))
self.force_lazy_setfield_if_necessary(op, value)
# check if the field was read from another getfield_gc just before
# or has been written to recently
- fieldvalue = self.read_cached_field(op.descr, value)
+ fieldvalue = self.read_cached_field(op.getdescr(), value)
if fieldvalue is not None:
self.make_equal_to(op.result, fieldvalue)
return
@@ -226,34 +226,34 @@
self.emit_operation(op) # FIXME: These might need constant propagation?
# then remember the result of reading the field
fieldvalue = self.getvalue(op.result)
- self.cache_field_value(op.descr, value, fieldvalue)
+ self.cache_field_value(op.getdescr(), value, fieldvalue)
def optimize_SETFIELD_GC(self, op):
value = self.getvalue(op.getarg(0))
fieldvalue = self.getvalue(op.getarg(1))
self.force_lazy_setfield_if_necessary(op, value, write=True)
- self.lazy_setfields[op.descr] = op
+ self.lazy_setfields[op.getdescr()] = op
# remember the result of future reads of the field
- self.cache_field_value(op.descr, value, fieldvalue, write=True)
+ self.cache_field_value(op.getdescr(), value, fieldvalue, write=True)
def optimize_GETARRAYITEM_GC(self, op):
value = self.getvalue(op.getarg(0))
indexvalue = self.getvalue(op.getarg(1))
- fieldvalue = self.read_cached_arrayitem(op.descr, value, indexvalue)
+ fieldvalue = self.read_cached_arrayitem(op.getdescr(), value, indexvalue)
if fieldvalue is not None:
self.make_equal_to(op.result, fieldvalue)
return
###self.optimizer.optimize_default(op)
self.emit_operation(op) # FIXME: These might need constant propagation?
fieldvalue = self.getvalue(op.result)
- self.cache_arrayitem_value(op.descr, value, indexvalue, fieldvalue)
+ self.cache_arrayitem_value(op.getdescr(), value, indexvalue, fieldvalue)
def optimize_SETARRAYITEM_GC(self, op):
self.emit_operation(op)
value = self.getvalue(op.getarg(0))
fieldvalue = self.getvalue(op.getarg(2))
indexvalue = self.getvalue(op.getarg(1))
- self.cache_arrayitem_value(op.descr, value, indexvalue, fieldvalue,
+ self.cache_arrayitem_value(op.getdescr(), value, indexvalue, fieldvalue,
write=True)
def propagate_forward(self, op):
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 15:34:04 2010
@@ -340,7 +340,7 @@
def store_final_boxes_in_guard(self, op):
###pendingfields = self.heap_op_optimizer.force_lazy_setfields_for_guard()
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, compile.ResumeGuardDescr)
modifier = resume.ResumeDataVirtualAdder(descr, self.resumedata_memo)
newboxes = modifier.finish(self.values, self.pendingfields)
@@ -395,7 +395,7 @@
argboxes = [self.get_constant_box(op.getarg(i))
for i in range(op.numargs())]
resbox = execute_nonspec(self.cpu, None,
- op.getopnum(), argboxes, op.descr)
+ op.getopnum(), argboxes, op.getdescr())
self.make_constant(op.result, resbox.constbox())
if is_ovf:
self.i += 1 # skip next operation, it is the unneeded guard
@@ -404,7 +404,7 @@
# did we do the exact same operation already?
args = self.make_args_key(op)
oldop = self.pure_operations.get(args, None)
- if oldop is not None and oldop.descr is op.descr:
+ if oldop is not None and oldop.getdescr() is op.getdescr():
assert oldop.getopnum() == op.getopnum()
self.make_equal_to(op.result, self.getvalue(oldop.result))
if is_ovf:
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 Fri Sep 17 15:34:04 2010
@@ -24,7 +24,7 @@
def try_boolinvers(self, op, targs):
oldop = self.optimizer.pure_operations.get(targs, None)
- if oldop is not None and oldop.descr is op.descr:
+ if oldop is not None and oldop.getdescr() is op.getdescr():
value = self.getvalue(oldop.result)
if value.is_constant():
if value.box.same_constant(CONST_1):
@@ -50,7 +50,7 @@
oldopnum = opboolreflex[op.getopnum()] # FIXME: add INT_ADD, INT_MUL
targs = [args[1], args[0], ConstInt(oldopnum)]
oldop = self.optimizer.pure_operations.get(targs, None)
- if oldop is not None and oldop.descr is op.descr:
+ if oldop is not None and oldop.getdescr() is op.getdescr():
self.make_equal_to(op.result, self.getvalue(oldop.result))
return True
except KeyError:
@@ -139,7 +139,7 @@
# replace CALL_PURE with just CALL
args = op.getarglist()[1:]
self.emit_operation(ResOperation(rop.CALL, args, op.result,
- op.descr))
+ op.getdescr()))
def optimize_guard(self, op, constbox, emit_operation=True):
value = self.getvalue(op.getarg(0))
if value.is_constant():
@@ -182,9 +182,9 @@
args = [old_guard_op.getarg(0), op.getarg(1)])
self.optimizer.newoperations[value.last_guard_index] = new_guard_op
# hack hack hack. Change the guard_opnum on
- # new_guard_op.descr so that when resuming,
+ # new_guard_op.getdescr() so that when resuming,
# the operation is not skipped by pyjitpl.py.
- descr = new_guard_op.descr
+ descr = new_guard_op.getdescr()
assert isinstance(descr, compile.ResumeGuardDescr)
descr.guard_opnum = rop.GUARD_VALUE
descr.make_a_counter_per_value(new_guard_op)
@@ -222,9 +222,9 @@
args = [old_guard_op.getarg(0), op.getarg(1)])
self.optimizer.newoperations[value.last_guard_index] = new_guard_op
# hack hack hack. Change the guard_opnum on
- # new_guard_op.descr so that when resuming,
+ # new_guard_op.getdescr() so that when resuming,
# the operation is not skipped by pyjitpl.py.
- descr = new_guard_op.descr
+ descr = new_guard_op.getdescr()
assert isinstance(descr, compile.ResumeGuardDescr)
descr.guard_opnum = rop.GUARD_NONNULL_CLASS
emit_operation = False
@@ -314,7 +314,7 @@
value = self.getvalue(op.getarg(0))
realclassbox = value.get_constant_class(self.optimizer.cpu)
if realclassbox is not None:
- checkclassbox = self.optimizer.cpu.typedescr2classbox(op.descr)
+ checkclassbox = self.optimizer.cpu.typedescr2classbox(op.getdescr())
result = self.optimizer.cpu.ts.subclassOf(self.optimizer.cpu,
realclassbox,
checkclassbox)
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 Fri Sep 17 15:34:04 2010
@@ -285,7 +285,7 @@
def optimize_JUMP(self, op):
orgop = self.optimizer.loop.operations[-1]
exitargs = []
- target_loop_token = orgop.descr
+ target_loop_token = orgop.getdescr()
assert isinstance(target_loop_token, LoopToken)
specnodes = target_loop_token.specnodes
assert op.numargs() == len(specnodes)
@@ -344,7 +344,7 @@
if value.is_virtual():
# optimizefindnode should ensure that fieldvalue is found
assert isinstance(value, AbstractVirtualValue)
- fieldvalue = value.getfield(op.descr, None)
+ fieldvalue = value.getfield(op.getdescr(), None)
assert fieldvalue is not None
self.make_equal_to(op.result, fieldvalue)
else:
@@ -360,7 +360,7 @@
value = self.getvalue(op.getarg(0))
fieldvalue = self.getvalue(op.getarg(1))
if value.is_virtual():
- value.setfield(op.descr, fieldvalue)
+ value.setfield(op.getdescr(), fieldvalue)
else:
value.ensure_nonnull()
###self.heap_op_optimizer.optimize_SETFIELD_GC(op, value, fieldvalue)
@@ -370,7 +370,7 @@
self.make_virtual(op.getarg(0), op.result, op)
def optimize_NEW(self, op):
- self.make_vstruct(op.descr, op.result, op)
+ self.make_vstruct(op.getdescr(), op.result, op)
def optimize_NEW_ARRAY(self, op):
sizebox = self.get_constant_box(op.getarg(0))
@@ -379,8 +379,8 @@
# build a new one with the ConstInt argument
if not isinstance(op.getarg(0), ConstInt):
op = ResOperation(rop.NEW_ARRAY, [sizebox], op.result,
- descr=op.descr)
- self.make_varray(op.descr, sizebox.getint(), op.result, op)
+ descr=op.getdescr())
+ self.make_varray(op.getdescr(), sizebox.getint(), op.result, op)
else:
###self.optimize_default(op)
self.emit_operation(op)
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 15:34:04 2010
@@ -24,6 +24,11 @@
self.result = result
self.setdescr(descr)
+ def __setattr__(self, name, attr):
+ if name == 'descr':
+ assert False
+ object.__setattr__(self, name, attr)
+
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"
if args is None:
@@ -62,7 +67,7 @@
self.fail_args = fail_args
def getdescr(self):
- return self.descr
+ return self._descr
def setdescr(self, descr):
# for 'call', 'new', 'getfield_gc'...: the descr is a prebuilt
@@ -72,10 +77,10 @@
# cpu.calldescrof(), and cpu.typedescrof().
from pypy.jit.metainterp.history import check_descr
check_descr(descr)
- self.descr = descr
+ self._descr = descr
def clone(self):
- descr = self.descr
+ descr = self._descr
if descr is not None:
descr = descr.clone_if_mutable()
op = ResOperation(self._opnum, self._args, self.result, descr)
@@ -98,12 +103,12 @@
prefix = "%s:%s " % (self.name, self.pc)
else:
prefix = ""
- if self.descr is None or we_are_translated():
+ if self._descr is None or we_are_translated():
return '%s%s%s(%s)' % (prefix, sres, self.getopname(),
', '.join([str(a) for a in self._args]))
else:
return '%s%s%s(%s, descr=%r)' % (prefix, sres, self.getopname(),
- ', '.join([str(a) for a in self._args]), self.descr)
+ ', '.join([str(a) for a in self._args]), self._descr)
def getopname(self):
try:
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 Fri Sep 17 15:34:04 2010
@@ -18,7 +18,7 @@
op = ResOperation(rop.CALL, args, op.result, descr=descr)
elif op.getopnum() == rop.CALL_PURE:
args = op.getarglist()[1:]
- op = ResOperation(rop.CALL, args, op.result, op.descr)
+ op = ResOperation(rop.CALL, args, op.result, op.getdescr())
elif op.getopnum() == rop.VIRTUAL_REF:
op = ResOperation(rop.SAME_AS, [op.getarg(0)], op.result)
elif op.getopnum() == rop.VIRTUAL_REF_FINISH:
@@ -38,7 +38,7 @@
newoperations = []
for op in loop.operations:
if op.is_guard():
- descr = op.descr
+ descr = op.getdescr()
assert isinstance(descr, compile.ResumeGuardDescr)
modifier = resume.ResumeDataVirtualAdder(descr, memo)
newboxes = modifier.finish(EMPTY_VALUES)
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 15:34:04 2010
@@ -19,7 +19,7 @@
assert [op.getopnum() for op in loop.operations] == [rop.INT_ADD, rop.INT_SUB,
rop.FINISH]
assert len(loop.inputargs) == 2
- assert loop.operations[-1].descr
+ assert loop.operations[-1].getdescr()
def test_const_ptr_subops():
x = """
@@ -30,7 +30,7 @@
vtable = lltype.nullptr(S)
loop = parse(x, None, locals())
assert len(loop.operations) == 1
- assert loop.operations[0].descr
+ assert loop.operations[0].getdescr()
assert loop.operations[0].fail_args == []
def test_descr():
@@ -43,7 +43,7 @@
"""
stuff = Xyz()
loop = parse(x, None, locals())
- assert loop.operations[0].descr is stuff
+ assert loop.operations[0].getdescr() is stuff
def test_after_fail():
x = """
@@ -64,7 +64,7 @@
"""
stuff = Xyz()
loop = parse(x, None, locals())
- assert loop.operations[0].descr is stuff
+ assert loop.operations[0].getdescr() is stuff
def test_boxname():
x = """
@@ -119,7 +119,7 @@
jump()
'''
loop = parse(x)
- assert loop.operations[0].descr is loop.token
+ assert loop.operations[0].getdescr() is loop.token
def test_jump_target_other():
looptoken = LoopToken()
@@ -128,7 +128,7 @@
jump(descr=looptoken)
'''
loop = parse(x, namespace=locals())
- assert loop.operations[0].descr is looptoken
+ assert loop.operations[0].getdescr() is looptoken
def test_floats():
x = '''
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 15:34:04 2010
@@ -151,7 +151,7 @@
else:
remap[op2.result] = op1.result
if op1.getopnum() != rop.JUMP: # xxx obscure
- assert op1.descr == op2.descr
+ assert op1.getdescr() == op2.getdescr()
if op1.fail_args or op2.fail_args:
assert len(op1.fail_args) == len(op2.fail_args)
if strict_fail_args:
@@ -2327,7 +2327,7 @@
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
- fdescr = guard_op.descr
+ fdescr = guard_op.getdescr()
assert fdescr.guard_opnum == guard_opnum
reader = ResumeDataFakeReader(fdescr, fail_args,
MyMetaInterp(self.cpu))
Modified: pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_recursive.py
==============================================================================
--- pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_recursive.py (original)
+++ pypy/branch/resoperation-refactoring/pypy/jit/metainterp/test/test_recursive.py Fri Sep 17 15:34:04 2010
@@ -319,8 +319,8 @@
for loop in get_stats().loops:
assert len(loop.operations) <= length + 5 # because we only check once per metainterp bytecode
for op in loop.operations:
- if op.is_guard() and hasattr(op.descr, '_debug_suboperations'):
- assert len(op.descr._debug_suboperations) <= length + 5
+ if op.is_guard() and hasattr(op.getdescr(), '_debug_suboperations'):
+ assert len(op.getdescr()._debug_suboperations) <= length + 5
def test_inline_trace_limit(self):
myjitdriver = JitDriver(greens=[], reds=['n'])
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 15:34:04 2010
@@ -88,7 +88,7 @@
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.clear_latest_values = lambda count: None
- resumereader = ResumeDataDirectReader(cpu, guard_op.descr)
+ resumereader = ResumeDataDirectReader(cpu, guard_op.getdescr())
vrefinfo = self.metainterp.staticdata.virtualref_info
lst = []
vrefinfo.continue_tracing = lambda vref, virtual: \
@@ -100,7 +100,7 @@
lst[0][0]) # assert correct type
#
# try reloading from pyjitpl's point of view
- self.metainterp.rebuild_state_after_failure(guard_op.descr)
+ self.metainterp.rebuild_state_after_failure(guard_op.getdescr())
assert len(self.metainterp.framestack) == 1
assert len(self.metainterp.virtualref_boxes) == 2
assert self.metainterp.virtualref_boxes[0].value == bxs1[0].value
More information about the Pypy-commit
mailing list