Branches

concurrent-marksweep

View source
concurrent-marksweep
  • Contributors
    1. Loading...
Author Commit Message Labels Comments Date
250+ commits behind default.
Armin Rigo
merge heads
Armin Rigo
Fix: conflict with global name 'error'.
Armin Rigo
Fix: these locks from the GC don't have anything to do with the GIL
Armin Rigo
hg merge default
Armin Rigo
Weakrefs.
Armin Rigo
Fix: I corrected the comment but not the actual value
Armin Rigo
Remove the extra debug prints.
Armin Rigo
fix. now test_direct passes
Armin Rigo
Tweak tweak tweak.
Armin Rigo
Random progress.
Armin Rigo
Redo the explicit collect(), at least the most useful case.
Armin Rigo
test_many_objects passes again :-)
Armin Rigo
Start implementing the new section.
Armin Rigo
hg merge default
Armin Rigo
Add a section to the documentation. Not implemented yet.
Armin Rigo
hg merge default
Armin Rigo
hg merge default
Armin Rigo
Document and start implementing an idea to make major collection parallel.
Armin Rigo
Add a textual introduction. Needs to think out more precisely what it implies for the rest of the document.
Armin Rigo
Move this outside the collector thread, to ensure that it is correctly nested in a debug_print("gc-*")
Armin Rigo
It seems that not using "borrowed vars" is much more efficient.
Armin Rigo
Tweaks.
Armin Rigo
hg merge default
Armin Rigo
Reorder the tests for performance.
Armin Rigo
Fixes.
Armin Rigo
Major collections.
Armin Rigo
Only trigger the next minor collection after enough data was allocated.
Armin Rigo
With this, targetgcbench works (but is terribly bad for now).
Armin Rigo
Fixes.
Armin Rigo
Bug fixes.
Armin Rigo
Varsized.
Armin Rigo
Fix enough to have the simplest test pass again. For now, kill the logic of pages, because it's a mess to reason both about it and about concurrentgen.txt at the same time. All objects are just malloc()ed.
Armin Rigo
In the middle of slow progress.
Armin Rigo
Oups, forgot to add this file. It's needed in debug_lltrace.
Armin Rigo
Starting to write the "3/4th concurrent" generational mark&sweep GC.
Armin Rigo
Add notes about the parallel generational mark-sweep GC.
Armin Rigo
hg merge default
Armin Rigo
Locking is needed in the AddressStack class, to access the pool of free pages (which is shared between all AddressStack instances, so accessed from the two threads concurrently).
Armin Rigo
Proper weakref support. In-progress.
Armin Rigo
Comment. A test in test_newgc sometimes fails, because of this.
Armin Rigo
Bah. A few hours of gdb'ing a pypy-c turned out this bug, that I explain in a one-page comment.
Armin Rigo
Fix a subtle bug.
Armin Rigo
Improve the test coverage by running the same tests several times in the same process. This is more likely to catch subtle bugs in the GC.
Armin Rigo
Trace all set{field,arrayitem,interiorfield}, even to non-gc objects.
Armin Rigo
Merge 3f26c4717b82 and 7cd9093a53f9 from branch 'lltrace'.
Armin Rigo
Fixes, but always for test_transformed_gc
Armin Rigo
Debugging help.
Armin Rigo
Fix.
Armin Rigo
Rename the write_barrier in concurrentms to "deletion_barrier", as it has subtly different semantics about when it is ok or not to kill a call to it.
Armin Rigo
Simplify the linked list support.
Armin Rigo
Finalizers, first version.
Armin Rigo
fix comments.
Armin Rigo
Support for weakrefs.
Armin Rigo
Fixes: custom_trace support again. The issue is that it was called by an indirect_call() with no known target set --- and so it was assumed to be able to raise.
Armin Rigo
Try to list all missing features.
Armin Rigo
Try to fix test_transformed_gc. Still not perfect...
Armin Rigo
Start to write debug info, very minimal for now
Armin Rigo
For now, do collections all the time (concurrently). Various fixes.
Armin Rigo
Kill the explicit C code manipulating GC strings and lists at start-up, and replace it with RPython code.
Armin Rigo
It seems to work better with "pages" that are bit bigger, at least on my laptop, running targetgcbench-c.
Armin Rigo
Fix for test_newgc.
Armin Rigo
One more test from test_transformed_gc passes.
Armin Rigo
Simplify.
Armin Rigo
Progress.
Armin Rigo
Translation fix.
Armin Rigo
Progress.
Armin Rigo
More tweaks.
Armin Rigo
Tweaks.
Armin Rigo
Refactor the header of objects: use a single 'Signed' field. Prompted to avoid C-level issues: reading a "void*" and then writing into a "char" that lives at the same address is supposed to be invalid C.
Armin Rigo
Hack hack hack until the translator is sure that the collector thread doesn't do anything with exceptions. This lets us keep the global exception state non-thread-local.
Armin Rigo
Translation fixes.
Armin Rigo
Add checks; fix a bug.
Armin Rigo
Translation fix.
Armin Rigo
Progress.
Armin Rigo
Add the tests to test_transformed_gc. Not passing so far, of course.
Armin Rigo
Use a real thread-local storage in lltype. Needed to run the tests of the concurrent GC.
Armin Rigo
Fix.
Armin Rigo
Start test_gc.
Armin Rigo
Fix.
Armin Rigo
Fix.
Armin Rigo
Also try to sweep the large objects.
Armin Rigo
In-progress.
Armin Rigo
malloc_varsize.
Armin Rigo
Do something about prebuilt GC objects.
Armin Rigo
The first few tests pass :-)
Armin Rigo
Marking.
Armin Rigo
Started.
Armin Rigo
A branch to play with trying out a "mostly-concurrent mark-sweep garbage collector": the GC would run in a separate thread.