[pypy-commit] pypy jit-cleanup: Move cls_of_box() to cpu and kill rpython.jit.metainterp.typesystem
rlamy
pypy.commits at gmail.com
Sat Apr 6 13:00:35 EDT 2019
Author: Ronan Lamy <ronan.lamy at 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
More information about the pypy-commit
mailing list