Author: Carl Friedrich Bolz <[email protected]>
Branch: optinfo-into-bridges
Changeset: r87808:19183b43c40b
Date: 2016-10-14 17:00 +0200
http://bitbucket.org/pypy/pypy/changeset/19183b43c40b/
Log: just use an over-allocated list
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
@@ -56,7 +56,6 @@
metainterp_sd = optimizer.metainterp_sd
# class knowledge
- numb_state.grow(len(liveboxes)) # bit too much
bitfield = 0
shifts = 0
for box in liveboxes:
@@ -76,7 +75,6 @@
# heap knowledge
if optimizer.optheap:
triples = optimizer.optheap.serialize_optheap(liveboxes_set)
- numb_state.grow(len(triples) * 3 + 1)
numb_state.append_int(len(triples))
for box1, descr, box2 in triples:
index = metainterp_sd.descrs_dct.get(descr, -1)
@@ -87,7 +85,6 @@
numb_state.append_int(index)
numb_state.append_short(tag_box(box2, liveboxes_from_env, memo))
else:
- numb_state.grow(1)
numb_state.append_int(0)
def deserialize_optimizer_knowledge(optimizer, resumestorage, frontend_boxes,
liveboxes):
diff --git a/rpython/jit/metainterp/resumecode.py
b/rpython/jit/metainterp/resumecode.py
--- a/rpython/jit/metainterp/resumecode.py
+++ b/rpython/jit/metainterp/resumecode.py
@@ -22,6 +22,7 @@
"""
from rpython.rtyper.lltypesystem import rffi, lltype
+from rpython.rlib import objectmodel
NUMBERINGP = lltype.Ptr(lltype.GcForwardReference())
NUMBERING = lltype.GcStruct('Numbering',
@@ -89,13 +90,11 @@
class Writer(object):
def __init__(self, size):
- self.current = []
+ self.current = objectmodel.newlist_hint(size)
self.grow(size)
- self._pos = 0
def append_short(self, item):
- self.current[self._pos] = item
- self._pos += 1
+ self.current.append(item)
def append_int(self, item):
short = rffi.cast(rffi.SHORT, item)
@@ -103,13 +102,13 @@
return self.append_short(short)
def create_numbering(self):
- return create_numbering(self.current[:self._pos])
+ return create_numbering(self.current)
def grow(self, size):
- self.current.extend([rffi.cast(rffi.SHORT, 0)] * size)
+ pass
def patch_current_size(self, index):
- item = self._pos
+ item = len(self.current)
short = rffi.cast(rffi.SHORT, item)
assert rffi.cast(lltype.Signed, short) == item
self.current[index] = short
diff --git a/rpython/jit/metainterp/test/test_resumecode.py
b/rpython/jit/metainterp/test/test_resumecode.py
--- a/rpython/jit/metainterp/test/test_resumecode.py
+++ b/rpython/jit/metainterp/test/test_resumecode.py
@@ -38,8 +38,9 @@
@hypothesis_and_examples
def test_reader(l):
- w = Writer(len(l))
- for num in l:
- w.append_int(num)
- n = w.create_numbering()
- assert unpack_numbering(n) == l
+ for size in [len(l), 0]:
+ w = Writer(len(l))
+ for num in l:
+ w.append_int(num)
+ n = w.create_numbering()
+ assert unpack_numbering(n) == l
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit