Author: fijal
Branch: jit-leaner-frontend
Changeset: r83062:106e5d6db9cb
Date: 2016-03-15 08:58 +0200
http://bitbucket.org/pypy/pypy/changeset/106e5d6db9cb/
Log: a different approach - let's try not to intern constants
diff --git a/rpython/jit/metainterp/opencoder.py
b/rpython/jit/metainterp/opencoder.py
--- a/rpython/jit/metainterp/opencoder.py
+++ b/rpython/jit/metainterp/opencoder.py
@@ -249,37 +249,36 @@
SMALL_INT_START <= box.getint() < SMALL_INT_STOP):
return tag(TAGINT, box.getint())
elif isinstance(box, ConstInt):
- self._consts_bigint += 1
- if not isinstance(box.getint(), int):
- # symbolics, for tests, don't worry about caching
- v = len(self._bigints) << 1
- self._bigints.append(box.getint())
- else:
- v = self._bigints_dict.get(box.getint(), -1)
- if v == -1:
- v = len(self._bigints) << 1
- self._bigints_dict[box.getint()] = v
- self._bigints.append(box.getint())
+ #self._consts_bigint += 1
+ #if not isinstance(box.getint(), int):
+ # # symbolics, for tests, don't worry about caching
+ # v = len(self._bigints) << 1
+ # self._bigints.append(box.getint())
+ #else:
+ # v = self._bigints_dict.get(box.getint(), -1)
+ # if v == -1:
+ v = len(self._bigints) << 1
+ # self._bigints_dict[box.getint()] = v
+ self._bigints.append(box.getint())
return tag(TAGCONSTOTHER, v)
elif isinstance(box, ConstFloat):
self._consts_float += 1
- v = self._floats_dict.get(box.getfloat(), -1)
- if v == -1:
- v = (len(self._floats) << 1) | 1
- self._floats_dict[box.getfloat()] = v
- self._floats.append(box.getfloat())
+ #v = self._floats_dict.get(box.getfloat(), -1)
+ #if v == -1:
+ v = (len(self._floats) << 1) | 1
+ #self._floats_dict[box.getfloat()] = v
+ self._floats.append(box.getfloat())
return tag(TAGCONSTOTHER, v)
else:
self._consts_ptr += 1
assert isinstance(box, ConstPtr)
if not box.getref_base():
return tag(TAGCONSTPTR, 0)
- addr = box.getref_base()
- v = self._refs_dict.get(addr, -1)
- if v == -1:
- v = len(self._refs)
- self._refs_dict[addr] = v
- self._refs.append(box.getref_base())
+ #v = self._refs_dict.get(addr, -1)
+ #if v == -1:
+ # v = len(self._refs)
+ # self._refs_dict[addr] = v
+ self._refs.append(box.getref_base())
return tag(TAGCONSTPTR, v)
elif isinstance(box, AbstractResOp):
return tag(TAGBOX, box.get_position())
diff --git a/rpython/jit/metainterp/test/test_opencoder.py
b/rpython/jit/metainterp/test/test_opencoder.py
--- a/rpython/jit/metainterp/test/test_opencoder.py
+++ b/rpython/jit/metainterp/test/test_opencoder.py
@@ -13,6 +13,9 @@
def __init__(self, index):
self.index = index
+class metainterp_sd(object):
+ pass
+
class FakeFrame(object):
parent_snapshot = None
@@ -38,7 +41,7 @@
class TestOpencoder(object):
def unpack(self, t):
- iter = t.get_iter()
+ iter = t.get_iter(metainterp_sd)
l = []
while not iter.done():
op = iter.next()
@@ -142,7 +145,7 @@
def test_packing(self, i):
t = Trace([])
t.record_snapshot_link(i)
- iter = t.get_iter()
+ iter = t.get_iter(metainterp_sd)
assert (((-iter._next() - 1) << 15) | (iter._next())) == i
def test_cut_trace_from(self):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit