[pypy-dev] Crash!
Armin Rigo
arigo at tunes.org
Fri Sep 23 18:01:19 CEST 2005
Hi Ben,
On Thu, Sep 22, 2005 at 12:47:14PM +0100, Ben.Young at risk.sungard.com wrote:
> Current checkout, compiled pypy (windows as usual):
> -> Segfault
Grumble. We're still trying to reproduce the problem...
> On another point, I notice that when lists of pointers are resized lots of
> incref/decrefs happen when all that really needs to happen is a move
> operation (or even a memcpy of the whole block)? Also, could all lists of
> pointers share the same c representation, with casts from void*?
Yes, there are obvious inefficiencies here. We probably don't care too
much about reference counting in the immediate future, as producing a
version of PyPy using the Boehm garbage collector produces code that is
both much shorter and much faster.
At some point, however, we will need indeed to come back to this problem
and figure out good algorithms that can detect and remove the majority
of these wasted incref/decrefs. For example, a lot of references can be
"borrowed" from the caller or from another object, or even "stealed"
away from the caller or another object. If we can find good enough
algorithms, the case of list resizing would be solved by finding out
that we can steal the references from the old list. I think it would be
a better approach than special-casing list resizing with some kind of
memory-move operation.
A bientot,
Armin.
More information about the pypy-dev
mailing list