Author: Ronan Lamy <ronan.l...@gmail.com> Branch: jit-cleanup Changeset: r96423:690f56c5e4e9 Date: 2019-04-06 02:51 +0100 http://bitbucket.org/pypy/pypy/changeset/690f56c5e4e9/
Log: Move cls_of_box() to cpu and kill rpython.jit.metainterp.typesystem diff --git a/rpython/jit/backend/arm/test/test_regalloc.py b/rpython/jit/backend/arm/test/test_regalloc.py --- a/rpython/jit/backend/arm/test/test_regalloc.py +++ b/rpython/jit/backend/arm/test/test_regalloc.py @@ -150,7 +150,6 @@ EffectInfo.MOST_GENERAL) f10_calldescr = cpu.calldescrof(F10PTR.TO, F10PTR.TO.ARGS, F10PTR.TO.RESULT, EffectInfo.MOST_GENERAL) - typesystem = 'lltype' namespace = locals().copy() class TestRegallocSimple(CustomBaseTestRegalloc): diff --git a/rpython/jit/backend/model.py b/rpython/jit/backend/model.py --- a/rpython/jit/backend/model.py +++ b/rpython/jit/backend/model.py @@ -1,6 +1,9 @@ import weakref from rpython.rlib.debug import debug_start, debug_print, debug_stop from rpython.rtyper.lltypesystem import lltype, llmemory +from rpython.rtyper.rclass import OBJECTPTR +from rpython.jit.metainterp.history import ConstInt +from rpython.jit.metainterp.support import ptr2int class CPUTotalTracker(object): total_compiled_loops = 0 @@ -9,8 +12,6 @@ total_freed_bridges = 0 class AbstractCPU(object): - from rpython.jit.metainterp.typesystem import llhelper as ts - supports_floats = False supports_longlong = False # ^^^ This is only useful on 32-bit platforms. If True, @@ -194,6 +195,10 @@ x = llmemory.cast_int_to_adr(x) return llmemory.cast_adr_to_ptr(x, TYPE) + def cls_of_box(self, box): + obj = lltype.cast_opaque_ptr(OBJECTPTR, box.getref_base()) + return ConstInt(ptr2int(obj.typeptr)) + # ---------- the backend-dependent operations ---------- diff --git a/rpython/jit/metainterp/blackhole.py b/rpython/jit/metainterp/blackhole.py --- a/rpython/jit/metainterp/blackhole.py +++ b/rpython/jit/metainterp/blackhole.py @@ -4,7 +4,8 @@ from rpython.jit.metainterp.jitexc import get_llexception, reraise from rpython.jit.metainterp import jitexc from rpython.jit.metainterp.history import MissingValue -from rpython.jit.metainterp.support import adr2int, int2adr, int_signext +from rpython.jit.metainterp.support import ( + adr2int, int2adr, ptr2int, int_signext) from rpython.rlib import longlong2float from rpython.rlib.debug import ll_assert, make_sure_not_resized from rpython.rlib.debug import check_annotation diff --git a/rpython/jit/metainterp/optimizeopt/bridgeopt.py b/rpython/jit/metainterp/optimizeopt/bridgeopt.py --- a/rpython/jit/metainterp/optimizeopt/bridgeopt.py +++ b/rpython/jit/metainterp/optimizeopt/bridgeopt.py @@ -142,7 +142,7 @@ class_known = bitfield & mask mask >>= 1 if class_known: - cls = optimizer.cpu.ts.cls_of_box(frontend_boxes[i]) + cls = optimizer.cpu.cls_of_box(frontend_boxes[i]) optimizer.make_constant_class(box, cls) # heap knowledge diff --git a/rpython/jit/metainterp/optimizeopt/info.py b/rpython/jit/metainterp/optimizeopt/info.py --- a/rpython/jit/metainterp/optimizeopt/info.py +++ b/rpython/jit/metainterp/optimizeopt/info.py @@ -15,7 +15,7 @@ class AbstractInfo(AbstractValue): _attrs_ = () - + is_info_class = True def force_box(self, op, optforce): @@ -89,7 +89,7 @@ class NonNullPtrInfo(PtrInfo): _attrs_ = ('last_guard_pos',) last_guard_pos = -1 - + def is_nonnull(self): return True @@ -469,7 +469,7 @@ def setitem_raw(self, offset, itemsize, descr, itemop): self.parent.setitem_raw(self.offset+offset, itemsize, descr, itemop) - + def _force_elements(self, op, optforce, descr): if self.parent.is_virtual(): self.parent._force_elements(op, optforce, descr) @@ -643,7 +643,7 @@ return 0 # annotation hack one_size = len(all_fdescrs) return index * one_size + fielddescr.get_field_descr().get_index() - + def setinteriorfield_virtual(self, index, fielddescr, fld): index = self._compute_index(index, fielddescr) self._items[index] = fld @@ -693,7 +693,7 @@ class ConstPtrInfo(PtrInfo): _attrs_ = ('_const',) - + def __init__(self, const): self._const = const @@ -719,7 +719,7 @@ if info is None: info = ArrayPtrInfo(descr) optheap.const_infos[ref] = info - return info + return info def getfield(self, fielddescr, optheap=None): info = self._get_info(fielddescr.get_parent_descr(), optheap) @@ -755,7 +755,7 @@ # guard_gc_type if not cpu.check_is_object(self._const.getref_base()): return None - return cpu.ts.cls_of_box(self._const) + return cpu.cls_of_box(self._const) def same_info(self, other): if not isinstance(other, ConstPtrInfo): @@ -804,7 +804,7 @@ return -1 return len(s) elif mode is vstring.mode_unicode: - s = self._unpack_str(vstring.mode_unicode) + s = self._unpack_str(vstring.mode_unicode) if s is None: return -1 return len(s) @@ -835,7 +835,7 @@ targetbox, CONST_0, offsetbox, lgt, mode) - + class FloatConstInfo(AbstractInfo): def __init__(self, const): self._const = const diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py b/rpython/jit/metainterp/optimizeopt/rewrite.py --- a/rpython/jit/metainterp/optimizeopt/rewrite.py +++ b/rpython/jit/metainterp/optimizeopt/rewrite.py @@ -393,7 +393,7 @@ # class cannot possibly match (see test_issue2926) if info and info.is_constant(): c = self.get_box_replacement(op.getarg(0)) - vtable = optimizer.cpu.ts.cls_of_box(c).getint() + vtable = optimizer.cpu.cls_of_box(c).getint() if optimizer._check_subclass(vtable, op.getarg(1).getint()): return raise InvalidLoop("GUARD_SUBCLASS(const) proven to always fail") @@ -482,7 +482,7 @@ 'guard that it is not NULL') previous_classbox = info.get_known_class(self.optimizer.cpu) if previous_classbox is not None: - expected_classbox = self.optimizer.cpu.ts.cls_of_box(c_value) + expected_classbox = self.optimizer.cpu.cls_of_box(c_value) assert expected_classbox is not None if not previous_classbox.same_constant( expected_classbox): diff --git a/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py b/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py --- a/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py +++ b/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py @@ -31,13 +31,13 @@ class BaseTestGenerateGuards(BaseTest): def setup_class(self): - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) value = info.InstancePtrInfo(None, classbox) self.knownclass_info = not_virtual(self.cpu, 'r', value) - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.node2addr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.node2addr)) value = info.InstancePtrInfo(None, classbox) self.knownclass_info2 = not_virtual(self.cpu, 'r', value) - + def guards(self, info1, info2, box, runtime_box, expected, inputargs=None): if inputargs is None: inputargs = [box] @@ -97,13 +97,13 @@ # subsequently in all cases, so we just need to ensure that this case does # not cause segfaults. optimizer = FakeOptimizer(self.cpu) - classbox1 = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox1 = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) innervalue1 = info.InstancePtrInfo( known_class=classbox1, is_virtual=True, descr=self.valuedescr.get_parent_descr()) for field in self.valuedescr.get_parent_descr().get_all_fielddescrs(): innervalue1.setfield(field, None, ConstInt(42)) - classbox2 = self.cpu.ts.cls_of_box(InputArgRef(self.myptr3)) + classbox2 = self.cpu.cls_of_box(InputArgRef(self.myptr3)) innervalue2 = info.InstancePtrInfo( known_class=classbox2, is_virtual=True, descr=self.valuedescr3.get_parent_descr()) @@ -175,7 +175,7 @@ ptr = info.PtrInfo() nonnull = info.NonNullPtrInfo() - clsbox = self.cpu.ts.cls_of_box(InputArgRef(self.myptr)) + clsbox = self.cpu.cls_of_box(InputArgRef(self.myptr)) knownclass = info.InstancePtrInfo(known_class=clsbox) const = info.ConstPtrInfo(ConstPtr(self.myptr)) inorder = [ptr, nonnull, knownclass, const] @@ -264,10 +264,10 @@ nonnull_info = not_virtual(self.cpu, 'r', info.NonNullPtrInfo()) - classbox1 = self.cpu.ts.cls_of_box(ConstPtr(self.nodeaddr)) + classbox1 = self.cpu.cls_of_box(ConstPtr(self.nodeaddr)) knownclass_info = not_virtual(self.cpu, 'r', info.InstancePtrInfo(None, classbox1)) - classbox2 = self.cpu.ts.cls_of_box(ConstPtr(self.node2addr)) + classbox2 = self.cpu.cls_of_box(ConstPtr(self.node2addr)) knownclass2_info = not_virtual(self.cpu, 'r', info.InstancePtrInfo(None, classbox2)) @@ -455,20 +455,20 @@ self.check_no_guards(info1, info2) def test_known_class(self): - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) value1 = info.InstancePtrInfo(None, classbox) info1 = not_virtual(self.cpu, 'r', value1) info2 = not_virtual(self.cpu, 'r', None) expected = """ [p0] - guard_nonnull_class(p0, ConstClass(node_vtable)) [] + guard_nonnull_class(p0, ConstClass(node_vtable)) [] """ self.guards(info1, info2, InputArgRef(), InputArgRef(self.nodeaddr), expected) self.check_invalid(info1, info2, InputArgRef()) def test_known_class_value(self): - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) value1 = info.InstancePtrInfo(None, classbox) box = InputArgRef() guards = [] @@ -493,7 +493,7 @@ self.compare(guards, expected, [box]) def test_equal_inputargs(self): - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) value = info.InstancePtrInfo(None, classbox) knownclass_info = not_virtual(self.cpu, 'r', value) vstate1 = VirtualState([knownclass_info, knownclass_info]) @@ -531,7 +531,7 @@ def test_generate_guards_on_virtual_fields_matches_array(self): - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) innervalue1 = info.InstancePtrInfo(None, classbox) innerinfo1 = not_virtual(self.cpu, 'r', innervalue1) innerinfo1.position = 1 @@ -561,7 +561,7 @@ self.guards(info1, info2, runtime_box, runtime_box, expected, [box]) def test_generate_guards_on_virtual_fields_matches_instance(self): - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) innervalue1 = info.InstancePtrInfo(None, classbox) innerinfo1 = not_virtual(self.cpu, 'r', innervalue1) innerinfo1.position = 1 @@ -589,7 +589,7 @@ self.guards(info1, info2, nodebox, runtime_box, expected, [node2box]) def test_generate_guards_on_virtual_fields_matches_struct(self): - constclassbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + constclassbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) innervalue1 = info.InstancePtrInfo(None, constclassbox) innerinfo1 = not_virtual(self.cpu, 'r', innervalue1) innerinfo1.position = 1 @@ -620,7 +620,7 @@ [node2box]) def test_generate_guards_on_virtual_fields_matches_arraystruct(self): - constclassbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + constclassbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) innervalue1 = info.InstancePtrInfo(None, constclassbox) innerinfo1 = not_virtual(self.cpu, 'r', innervalue1) innerinfo1.position = 1 @@ -630,7 +630,7 @@ NODE = lltype.Struct('NODE', ('x', llmemory.GCREF)) ARRAY = lltype.GcArray(NODE) descr = self.cpu.fielddescrof(NODE, 'x') - + arraydescr = self.cpu.arraydescrof(ARRAY) info1 = VArrayStructStateInfo(arraydescr, [descr], 1) @@ -680,7 +680,7 @@ unknown_info2 = not_virtual(self.cpu, 'r', info.InstancePtrInfo()) info3.fieldstate = [unknown_info1, unknown_info2] - vstate3 = VirtualState([info3]) + vstate3 = VirtualState([info3]) assert vstate3.generalization_of(vstate2, FakeOptimizer(self.cpu)) assert vstate3.generalization_of(vstate1, FakeOptimizer(self.cpu)) assert not vstate2.generalization_of(vstate3, FakeOptimizer(self.cpu)) @@ -688,7 +688,7 @@ def test_virtuals_with_nonmatching_fields(self): info1 = VirtualStateInfo(ConstInt(42), [1, 2]) - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) value = info.InstancePtrInfo(None, classbox) knownclass_info = not_virtual(self.cpu, 'r', value) info1.fieldstate = [knownclass_info, knownclass_info] @@ -696,7 +696,7 @@ assert vstate1.generalization_of(vstate1, FakeOptimizer(self.cpu)) info2 = VirtualStateInfo(ConstInt(42), [1, 2]) - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.node2addr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.node2addr)) value = info.InstancePtrInfo(None, classbox) knownclass_info = not_virtual(self.cpu, 'r', value) info2.fieldstate = [knownclass_info, knownclass_info] @@ -708,7 +708,7 @@ def test_virtuals_with_nonmatching_descrs(self): info1 = VirtualStateInfo(ConstInt(42), [10, 20]) - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) value = info.InstancePtrInfo(None, classbox) knownclass_info = not_virtual(self.cpu, 'r', value) info1.fieldstate = [knownclass_info, knownclass_info] @@ -716,7 +716,7 @@ assert vstate1.generalization_of(vstate1, FakeOptimizer(self.cpu)) info2 = VirtualStateInfo(ConstInt(42), [1, 2]) - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.node2addr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.node2addr)) value = info.InstancePtrInfo(None, classbox) knownclass_info = not_virtual(self.cpu, 'r', value) info2.fieldstate = [knownclass_info, knownclass_info] @@ -725,10 +725,10 @@ assert not vstate2.generalization_of(vstate1, FakeOptimizer(self.cpu)) assert not vstate1.generalization_of(vstate2, FakeOptimizer(self.cpu)) - + def test_virtuals_with_nonmatching_classes(self): info1 = VirtualStateInfo(ConstInt(42), [1, 2]) - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) value = info.InstancePtrInfo(None, classbox) knownclass_info = not_virtual(self.cpu, 'r', value) info1.fieldstate = [knownclass_info, knownclass_info] @@ -736,7 +736,7 @@ assert vstate1.generalization_of(vstate1, FakeOptimizer(self.cpu)) info2 = VirtualStateInfo(ConstInt(7), [1, 2]) - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.node2addr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.node2addr)) value = info.InstancePtrInfo(None, classbox) knownclass_info = not_virtual(self.cpu, 'r', value) info2.fieldstate = [knownclass_info, knownclass_info] @@ -748,7 +748,7 @@ def test_nonvirtual_is_not_virtual(self): info1 = VirtualStateInfo(ConstInt(42), [1, 2]) - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) value = info.InstancePtrInfo(None, classbox) knownclass_info = not_virtual(self.cpu, 'r', value) info1.fieldstate = [knownclass_info, knownclass_info] @@ -764,7 +764,7 @@ def test_arrays_with_nonmatching_fields(self): info1 = VArrayStateInfo(42) - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) value = info.InstancePtrInfo(None, classbox) knownclass_info = not_virtual(self.cpu, 'r', value) info1.fieldstate = [knownclass_info, knownclass_info] @@ -772,7 +772,7 @@ assert vstate1.generalization_of(vstate1, FakeOptimizer(self.cpu)) info2 = VArrayStateInfo(42) - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.node2addr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.node2addr)) value = info.InstancePtrInfo(None, classbox) knownclass_info = not_virtual(self.cpu, 'r', value) info2.fieldstate = [knownclass_info, knownclass_info] @@ -784,7 +784,7 @@ def test_arrays_of_different_sizes(self): info1 = VArrayStateInfo(42) - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) value = info.InstancePtrInfo(None, classbox) knownclass_info = not_virtual(self.cpu, 'r', value) info1.fieldstate = [knownclass_info, knownclass_info] @@ -792,7 +792,7 @@ assert vstate1.generalization_of(vstate1, FakeOptimizer(self.cpu)) info2 = VArrayStateInfo(42) - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.node2addr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.node2addr)) value = info.InstancePtrInfo(None, classbox) knownclass_info = not_virtual(self.cpu, 'r', value) info2.fieldstate = [knownclass_info] @@ -815,7 +815,7 @@ assert not vstate2.generalization_of(vstate1, FakeOptimizer(self.cpu)) assert not vstate1.generalization_of(vstate2, FakeOptimizer(self.cpu)) - + def test_nonvirtual_is_not_array(self): info1 = VArrayStateInfo(42) info1.fieldstate = [self.knownclass_info, self.knownclass_info] @@ -827,10 +827,10 @@ assert not vstate2.generalization_of(vstate1, FakeOptimizer(self.cpu)) assert not vstate1.generalization_of(vstate2, FakeOptimizer(self.cpu)) - + def test_crash_varay_clear(self): - classbox = self.cpu.ts.cls_of_box(InputArgRef(self.nodeaddr)) + classbox = self.cpu.cls_of_box(InputArgRef(self.nodeaddr)) innervalue1 = info.InstancePtrInfo(None, classbox) innerinfo1 = not_virtual(self.cpu, 'r', innervalue1) innerinfo1.position = 1 @@ -873,13 +873,13 @@ values) data = compile.BridgeCompileData(trace, runtime_boxes, enable_opts=self.enable_opts, inline_short_preamble=True) - + info, newops = optimize_trace(metainterp_sd, None, data) if info.final(): bridge.operations = newops bridge.inputargs = info.inputargs return info - + def optimize_bridge(self, loops, bridge, expected, expected_target='Loop', boxvalues=None): if isinstance(loops, str): @@ -966,7 +966,7 @@ """ self.optimize_bridge(loop, bridge, expected, boxvalues=[self.myptr]) - def test_cached_unused_nonnull(self): + def test_cached_unused_nonnull(self): loop = """ [p0] p1 = getfield_gc_r(p0, descr=nextdescr) @@ -985,10 +985,10 @@ p1 = getfield_gc_r(p0, descr=nextdescr) guard_nonnull(p1) [] jump(p0) - """ + """ self.optimize_bridge(loop, bridge, expected, boxvalues=[self.myptr]) - def test_cached_invalid_nonnull(self): + def test_cached_invalid_nonnull(self): loop = """ [p0] p1 = getfield_gc_r(p0, descr=nextdescr) @@ -998,7 +998,7 @@ bridge = """ [p0] p1 = getfield_gc_r(p0, descr=nextdescr) - guard_value(p1, ConstPtr(nullptr)) [] + guard_value(p1, ConstPtr(nullptr)) [] jump(p0) """ self.optimize_bridge(loop, bridge, bridge, 'Preamble', @@ -1074,7 +1074,7 @@ guard_is_object(p0) [] guard_subclass(p0, ConstClass(node_vtable)) [] p1 = getfield_gc_r(p0, descr=nextdescr) - guard_value(p1, ConstPtr(myptr)) [] + guard_value(p1, ConstPtr(myptr)) [] jump(p0) """ self.optimize_bridge(loop, bridge, expected, 'Loop', [self.myptr]) @@ -1159,7 +1159,7 @@ guard_nonnull(p1) [] guard_is_object(p1) [] guard_class(p1, ConstClass(node_vtable)) [] - jump(p0) + jump(p0) """ self.optimize_bridge(loop, bridge, expected, 'Loop', [self.myptr]) @@ -1190,7 +1190,7 @@ ifoo = arraylen_gc(p0, descr=arraydescr) i3 = getarrayitem_gc_i(p0, 10, descr=arraydescr) jump(p0, i3) - """ + """ self.optimize_bridge(loop, bridge, expected, 'Loop0', [self.myptr]) bridge = """ [p0] @@ -1231,10 +1231,10 @@ [p0] p1 = getfield_gc_r(p0, descr=nextdescr) i2 = getarrayitem_gc_i(p1, 15, descr=arraydescr) - i3 = arraylen_gc(p1, descr=arraydescr) # Should be killed by backend + i3 = arraylen_gc(p1, descr=arraydescr) # Should be killed by backend i4 = getarrayitem_gc_i(p1, 10, descr=arraydescr) jump(p0, p1, i4) - """ + """ self.optimize_bridge(loop, bridge, expected) bridge = """ [p0] @@ -1251,7 +1251,7 @@ guard_true(i4) [] i5 = getarrayitem_gc_i(p1, 10, descr=arraydescr) jump(p0, p1, i5) - """ + """ self.optimize_bridge(loop, bridge, expected) bridge = """ [p0] @@ -1270,7 +1270,7 @@ guard_true(i4) [] i5 = getarrayitem_gc_i(p1, 10, descr=arraydescr) jump(p0, p1, i5) - """ + """ self.optimize_bridge(loop, bridge, expected, 'Loop', [self.myptr]) def test_cached_setarrayitem_gc(self): @@ -1308,7 +1308,7 @@ loop = """ [p5] i10 = getfield_gc_i(p5, descr=valuedescr) - call_n(i10, descr=nonwritedescr) + call_n(i10, descr=nonwritedescr) setfield_gc(p5, 1, descr=valuedescr) jump(p5) """ @@ -1344,7 +1344,7 @@ i10 = getfield_gc_i(p5, descr=valuedescr) i11 = getfield_gc_i(p6, descr=chardescr) call_n(i10, i11, descr=nonwritedescr) - setfield_gc(p6, i10, descr=nextdescr) + setfield_gc(p6, i10, descr=nextdescr) jump(p5, p6) """ bridge = """ @@ -1379,7 +1379,7 @@ def setup_class(self): py.test.skip("rewrite") - + def test_short_box_duplication_direct(self): class Optimizer(FakeOptimizer): def produce_potential_short_preamble_ops(_self, sb): @@ -1436,7 +1436,7 @@ if op and op.result == int_neg.getarg(0)] assert len(getfield) == 1 assert getfield[0].getarg(0) in [self.p1, self.p2] - + def test_prioritize2(self): class Optimizer(FakeOptimizer): def produce_potential_short_preamble_ops(_self, sb): @@ -1454,7 +1454,7 @@ if op and op.result == int_neg.getarg(0)] assert len(getfield) == 1 assert getfield[0].getarg(0) == self.p2 - + def test_prioritize3(self): class Optimizer(FakeOptimizer): def produce_potential_short_preamble_ops(_self, sb): diff --git a/rpython/jit/metainterp/optimizeopt/virtualstate.py b/rpython/jit/metainterp/optimizeopt/virtualstate.py --- a/rpython/jit/metainterp/optimizeopt/virtualstate.py +++ b/rpython/jit/metainterp/optimizeopt/virtualstate.py @@ -596,14 +596,14 @@ raise VirtualStatesCantMatch('trying to match ptr with non-ptr??!') if other.level == LEVEL_UNKNOWN: if (runtime_box and runtime_box.nonnull() and - self.known_class.same_constant(cpu.ts.cls_of_box(runtime_box))): + self.known_class.same_constant(cpu.cls_of_box(runtime_box))): op = ResOperation(rop.GUARD_NONNULL_CLASS, [box, self.known_class]) extra_guards.append(op) else: raise VirtualStatesCantMatch("other's class is unknown") elif other.level == LEVEL_NONNULL: if (runtime_box and self.known_class.same_constant( - cpu.ts.cls_of_box(runtime_box))): + cpu.cls_of_box(runtime_box))): op = ResOperation(rop.GUARD_CLASS, [box, self.known_class]) extra_guards.append(op) else: @@ -615,7 +615,7 @@ else: assert other.level == LEVEL_CONSTANT if (other.constbox.nonnull() and - self.known_class.same_constant(cpu.ts.cls_of_box(other.constbox))): + self.known_class.same_constant(cpu.cls_of_box(other.constbox))): pass else: raise VirtualStatesCantMatch("classes don't match") diff --git a/rpython/jit/metainterp/pyjitpl.py b/rpython/jit/metainterp/pyjitpl.py --- a/rpython/jit/metainterp/pyjitpl.py +++ b/rpython/jit/metainterp/pyjitpl.py @@ -1383,7 +1383,8 @@ exc_value = self.metainterp.last_exc_value assert exc_value assert self.metainterp.class_of_last_exc_is_const - return self.metainterp.cpu.ts.cls_of_box(ConstPtr(lltype.cast_opaque_ptr(llmemory.GCREF, exc_value))) + exc_cls = rclass.ll_cast_to_object(exc_value).typeptr + return ConstInt(ptr2int(exc_cls)) @arguments() def opimpl_last_exc_value(self): @@ -1583,7 +1584,7 @@ return promoted_box def cls_of_box(self, box): - return self.metainterp.cpu.ts.cls_of_box(box) + return self.metainterp.cpu.cls_of_box(box) @specialize.arg(1) def execute(self, opnum, *argboxes): diff --git a/rpython/jit/metainterp/test/test_bridgeopt.py b/rpython/jit/metainterp/test/test_bridgeopt.py --- a/rpython/jit/metainterp/test/test_bridgeopt.py +++ b/rpython/jit/metainterp/test/test_bridgeopt.py @@ -15,18 +15,14 @@ from hypothesis import strategies, given -class FakeTS(object): + +class FakeCPU(object): def __init__(self, dct): self.dct = dct def cls_of_box(self, box): return self.dct[box] - -class FakeCPU(object): - def __init__(self, dct): - self.ts = FakeTS(dct) - class FakeOptimizer(object): metainterp_sd = None optheap = None diff --git a/rpython/jit/metainterp/test/test_compile.py b/rpython/jit/metainterp/test/test_compile.py --- a/rpython/jit/metainterp/test/test_compile.py +++ b/rpython/jit/metainterp/test/test_compile.py @@ -5,7 +5,7 @@ from rpython.jit.metainterp.compile import compile_tmp_callback from rpython.jit.metainterp import jitexc from rpython.rlib.rjitlog import rjitlog as jl -from rpython.jit.metainterp import jitprof, typesystem, compile +from rpython.jit.metainterp import jitprof, compile from rpython.jit.metainterp.optimizeopt.test.test_util import LLtypeMixin from rpython.jit.tool.oparser import parse, convert_loop_to_trace from rpython.jit.metainterp.optimizeopt import ALL_OPTS_DICT @@ -19,7 +19,6 @@ class tracker: pass - ts = typesystem.llhelper def __init__(self): self.seen = [] diff --git a/rpython/jit/metainterp/test/test_quasiimmut.py b/rpython/jit/metainterp/test/test_quasiimmut.py --- a/rpython/jit/metainterp/test/test_quasiimmut.py +++ b/rpython/jit/metainterp/test/test_quasiimmut.py @@ -4,7 +4,6 @@ from rpython.rtyper.lltypesystem import lltype, llmemory from rpython.rtyper import rclass from rpython.rtyper.rclass import FieldListAccessor, IR_QUASIIMMUTABLE -from rpython.jit.metainterp import typesystem from rpython.jit.metainterp.quasiimmut import QuasiImmut from rpython.jit.metainterp.quasiimmut import get_current_qmut_instance from rpython.jit.metainterp.test.support import LLJitMixin @@ -23,8 +22,6 @@ assert not foo.mutate_x class FakeCPU: - ts = typesystem.llhelper - def bh_getfield_gc_r(self, gcref, fielddescr): assert fielddescr == mutatefielddescr foo = lltype.cast_opaque_ptr(lltype.Ptr(STRUCT), gcref) diff --git a/rpython/jit/metainterp/test/test_warmspot.py b/rpython/jit/metainterp/test/test_warmspot.py --- a/rpython/jit/metainterp/test/test_warmspot.py +++ b/rpython/jit/metainterp/test/test_warmspot.py @@ -578,7 +578,6 @@ class TestWarmspotDirect(object): def setup_class(cls): - from rpython.jit.metainterp.typesystem import llhelper from rpython.jit.codewriter.support import annotate from rpython.jit.metainterp.warmspot import WarmRunnerDesc from rpython.rtyper.rclass import OBJECT, OBJECT_VTABLE @@ -615,7 +614,6 @@ supports_floats = False supports_longlong = False supports_singlefloats = False - ts = llhelper translate_support_code = False stats = "stats" diff --git a/rpython/jit/metainterp/typesystem.py b/rpython/jit/metainterp/typesystem.py deleted file mode 100644 --- a/rpython/jit/metainterp/typesystem.py +++ /dev/null @@ -1,21 +0,0 @@ -from rpython.rtyper.lltypesystem import lltype, llmemory -from rpython.rtyper import rclass -from rpython.jit.metainterp import history -from rpython.jit.metainterp.support import ptr2int -from rpython.rlib.objectmodel import r_dict - - -class TypeSystemHelper(object): - - def _freeze_(self): - return True - -class LLTypeHelper(TypeSystemHelper): - - name = 'lltype' - - def cls_of_box(self, box): - obj = lltype.cast_opaque_ptr(rclass.OBJECTPTR, box.getref_base()) - return history.ConstInt(ptr2int(obj.typeptr)) - -llhelper = LLTypeHelper() diff --git a/rpython/jit/metainterp/virtualizable.py b/rpython/jit/metainterp/virtualizable.py --- a/rpython/jit/metainterp/virtualizable.py +++ b/rpython/jit/metainterp/virtualizable.py @@ -284,7 +284,6 @@ force_virtualizable_if_necessary._always_inline_ = True # all_graphs = self.warmrunnerdesc.translator.graphs - ts = self.warmrunnerdesc.cpu.ts FUNC = lltype.FuncType([self.VTYPEPTR], lltype.Void) funcptr = self.warmrunnerdesc.helper_func( lltype.Ptr(FUNC), force_virtualizable_if_necessary) diff --git a/rpython/jit/tool/oparser_model.py b/rpython/jit/tool/oparser_model.py --- a/rpython/jit/tool/oparser_model.py +++ b/rpython/jit/tool/oparser_model.py @@ -8,7 +8,6 @@ from rpython.jit.metainterp.history import TreeLoop, JitCellToken from rpython.jit.metainterp.history import ConstInt, ConstPtr, ConstFloat from rpython.jit.metainterp.history import BasicFailDescr, BasicFinalDescr, TargetToken - from rpython.jit.metainterp.typesystem import llhelper from rpython.jit.metainterp.opencoder import Trace from rpython.jit.metainterp.history import get_const_ptr_for_string @@ -119,11 +118,6 @@ def ptr_to_int(obj): return id(obj) - class llhelper(object): - pass - - MockLoopModel.llhelper.BoxRef = MockLoopModel.BoxRef - return MockLoopModel _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit