Source

pypy / pypy / rpython / memory / gcheader.py

Author Commit Message Labels Comments Date
Armin Rigo
Merge the n-forw-ptr branch, which removes the 'forw' field from the HDR of all the objects allocated by the SemiSpaceGC. in llarena, llmemory, lltype: This seems to be the amount of hacking needed to allow an arena to replace an object with another, and still have the old address work in order to go to the new object's header. This works only to some extend -- many operations on the old address still raise RuntimeError as before, in the hope that it will not allow nasty bugs to go unnoticed. i…
Armin Rigo
(arigo, cfbolz): Merge the kill-keepalives-again branch: - change the way interior pointers into structures and arrays are handled. Interior pointers are not allowed to cross function barriers any more. To achieve this, some new operations (setinteriorfield, getinteriorfield, getinteriorarraysize) are introduced - refactor the way the framework GCs are tested and move the semispace GC to the same type-saf…
Carl Friedrich Bolz
support for weakrefs in the mark-and-sweep gc.
Armin Rigo
Simplification of llmemory, triggered by the fact that two addresses would compare as different if they were obtained in different ways, even if they pointed to the same final object. The 'offset' field of fakeaddress is gone, and 'ob' is renamed to 'ptr'. It's always just a pointer. With the new stuff in lltype like direct_fieldptr() we can take pointers to fields, or array items, so no need for anything more. Hack a bit for arenas and address-of-length-of-array. A new test in rctypesobject that triggered this whole thing, and implementation of recursive data structures. l…
Armin Rigo
(arre, arigo) Introduced PyStructs, which are a Struct with PyObject-like memory management. Streamlined the various _gcstatus() flags to a single _gckind string that is either 'raw', 'gc' or 'cpy'. The PyStructs represent custom extensions of PyObject with new fields, for the ext compiler.
Armin Rigo
A pygame viewer for lltype data structures. There is an lloperation that will display one or several pointers or addresses, and you click your way along further pointers. Used from llhelpers as: from pypy.rpython.lltypesystem.lloperation import llop llop.debug_view(lltype.Void, myptr [, myptr...])
Samuele Pedroni
ah ah. too funny. started working on making the semispace gc tested with the transformer. tried to use test_gc to see if I broke something. there were some perplexing problems, discovered that the maze of setup and teardown in test_gc made it so that mark and sweep was not tested by it at all anymore and it shared some of the tweaked semispace problems. ah ah, that's why no prints. of course mark and sweep was brok…
Armin Rigo
(arigo, some pedronis) * added GCHeaderBuilder that contains the mappings between GcStructs and their GC headers. In this way the mapping is not global but specific to the currently compiled GC. * some fixes in the annotator to still propagate the constantness of Symbolics, without trying to constant-fold operations on them. * general niceifications