Author: Carl Friedrich Bolz <cfb...@gmx.de> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit