Commit 327314a
committed
Add Regions and Cowns
- sudo CI=green
- Ownership: Extract common ownership functionality for reuse
- Ownership: Extract object graph traversal for reuse
- Ownership: Add regions
- Adding region.c
- IDK something something regions and docs
- Docs and progress
- This is ugly but cleanup is tomorrow
- Nicer union-find code 🎉
- More and more progress
- parent -> owner rename
- More clenaup
- More fun!
- Something compiles I guess
- Why is there no formatter!!!
- Progres progress progresss
- Ownership: Add to region
- Ownership: Plan in TODOs
- Ownership: expand invariant for regions
- Fix bug from bad interaction with incremental GC.
- Small Fixes
- Ownership: New regions module
- Ownership: The first regions and exceptions...
- Ownership: This is a .. journey
- Ownership: Bugfixes!!
- Ownership: _PyRegion_AddRefs
- Ownership: Start writing Tests
- More tests
- Ownership more tests
- Progress and interesting bugs
- Skybreaker!!!!
- Small bug fixes, progress and work on the wekend
- Cleanup and exception'al problems
- Actual text output o.O
- I believe staging region references works now?
- How is the bug still there
- Adding more write barriers
- Try close backend (There is no way this works)
- Try close testing and debugging one thing at a time
- Regions: From asserts to seg faults
- Regions: Cleaning works
- Regions: Debugging and dealloc/clear routines
- Region: New BridgeObject to access fields in internal regions,c
- Region: Move name into bridge object data
- Regions: Clear region on dealloc to allow region dealloc
- Regions: Planning for next week
- Region: extract objects from GC and track in Region
- Region: Notes on cowns
- Minor fixes to make it compile with GCC
- More GCC fixes
- Cowns: Drafting up cown callbacks
- Cown: Store cown in region
- TODOs
- Cowns: Add Cown Object
- Something compiles, but that doesn't mean much in C
- More is somehow compiling
- Basic cowns seems to be working
- Tests say more than a 100 words
- Minor fixes
- Disable GC asserts broken by regions
- Test cown.value field
- Cown REPR and cleanup
- Release the cowns!!!!
- Cowns: Acquire done :D
- Cowns: Use separate interpreter and thread ID and more methods
- Cowns: More tests :D
- Cowns: Release unused state field
- Cown: Complete broken docs
- Region: More Region object into core
- Region: Remove `_` prefix from write barriers
- More Write barriers... Literally
- Clean up
- Improve WB
- Stage Refs
- Slow steps, still LRC bugs
- FML, tests aren't even starting
- Tests are working-ish again
- Slow and steady wins the race
- Less rogue LRCs
- Another bug hunted and KILLED
- OSC one off, maybe due to open following pending merge tag?
- Better parent lookup
- Fix Union-Merge traversal with pending and other stuff
- More _PyRegion_Get to pycore header
- Document missing dict tests and add 4 new ones
- Migrate something to use regions
- Dict views mostly working
- Broken code and and fixed crashes
- Normal dictionary construction works now :D
- List and tuple write barriers that break everything
- More tests are passing, let's see
- Cleaup
- Regions: Track bridges of subregions in parent GC list
- Regions: Unfailable `RemoveRef`, more barriers in dicts and new `TakeRefs`
- Region: More write barrier for dicts
- Regions WB in dict.popitem()
- Regions: dict write barrier in setdefault
- The tests finally pass!
- Regions: Add LRC test and fix managed dict stuff
- Region: Improve cleaning call to clean dirty subregions
- Region: Add PyRegion_TakeRefs
- Region: RemoveRef can no longer fail
- Region: Store reason for dirty
- Regions: `clean()` now returns the number of cleaned regions
- Cowns: Add option to acquire a cown for the GC
- Cown: Add new tests for releasing open regions
- Regions: Correct off-by-one LRC and Cown release code
- Regions: Prevent the GC from setting flags in non-local objects
- Regions: Add `_PyDict_Reachable` to also visit unicode keys
- Region: Fix write barrier for instance attribute
- Regions: Make Region's `tp_clear` fail
- Regions: Fix warning with object cast
- Region: Fix freelist usage and keep region for dealloc
- Regions: Fix Of-by-one LRC error
- Regions: Fix stack ref LRC bug
- Regions: Fix another off-by-one in stackref
- Cowns: Allow switching owner to IP and back to GC
- Regions: Add `PyRegion_AddRefsArray()` write barrier
- Cowns: Fix switching to GC
- Cowns: Refactor release and switching
- Cowns: Set value to None if cannot switch to GC
- Regions: Don't randomly rip out objects out of GC lists
- Regions: Correct `_PyRegion_AddRefsArray()` write barrier
- Regions: Add `PyRegion_SameRegion` function
- Remove _PyRegion_SignalDealloc
- Clear region for recycled being objects
- Add basic movability
- sudo CI=green
- Disable (for now) unsupported platforms1 parent b65259d commit 327314a
77 files changed
Lines changed: 7623 additions & 461 deletions
File tree
- .github/workflows
- Include
- cpython
- internal
- Lib/test
- support
- test_regions
- Modules
- clinic
- Objects
- PCbuild
- Python
- Tools/c-analyzer/cpython
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
151 | 151 | | |
152 | 152 | | |
153 | 153 | | |
| 154 | + | |
154 | 155 | | |
155 | 156 | | |
156 | 157 | | |
157 | 158 | | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
163 | | - | |
164 | | - | |
165 | | - | |
166 | | - | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | | - | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
184 | | - | |
185 | | - | |
186 | | - | |
187 | | - | |
188 | | - | |
189 | | - | |
190 | | - | |
191 | | - | |
192 | | - | |
193 | | - | |
194 | | - | |
195 | | - | |
196 | | - | |
197 | | - | |
198 | | - | |
199 | 159 | | |
200 | 160 | | |
201 | 161 | | |
| |||
397 | 357 | | |
398 | 358 | | |
399 | 359 | | |
400 | | - | |
401 | | - | |
402 | | - | |
403 | | - | |
404 | | - | |
405 | | - | |
406 | | - | |
407 | | - | |
408 | | - | |
409 | | - | |
410 | | - | |
411 | | - | |
412 | | - | |
413 | | - | |
414 | | - | |
415 | | - | |
416 | | - | |
417 | | - | |
418 | | - | |
419 | | - | |
420 | | - | |
421 | | - | |
422 | | - | |
423 | | - | |
424 | | - | |
425 | | - | |
426 | | - | |
427 | | - | |
428 | | - | |
429 | | - | |
430 | 360 | | |
431 | 361 | | |
432 | 362 | | |
| |||
722 | 652 | | |
723 | 653 | | |
724 | 654 | | |
725 | | - | |
726 | | - | |
727 | 655 | | |
728 | 656 | | |
729 | 657 | | |
730 | 658 | | |
731 | | - | |
732 | | - | |
733 | 659 | | |
734 | 660 | | |
735 | 661 | | |
| |||
742 | 668 | | |
743 | 669 | | |
744 | 670 | | |
745 | | - | |
746 | 671 | | |
747 | 672 | | |
748 | 673 | | |
| |||
764 | 689 | | |
765 | 690 | | |
766 | 691 | | |
767 | | - | |
768 | | - | |
769 | 692 | | |
770 | 693 | | |
771 | 694 | | |
772 | 695 | | |
773 | 696 | | |
774 | 697 | | |
775 | 698 | | |
776 | | - | |
777 | | - | |
778 | | - | |
779 | | - | |
780 | | - | |
781 | | - | |
782 | | - | |
783 | 699 | | |
784 | 700 | | |
785 | 701 | | |
| |||
This file was deleted.
This file was deleted.
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
| 40 | + | |
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| |||
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
53 | | - | |
54 | | - | |
55 | | - | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
148 | 148 | | |
149 | 149 | | |
150 | 150 | | |
| 151 | + | |
151 | 152 | | |
152 | 153 | | |
153 | 154 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
245 | 245 | | |
246 | 246 | | |
247 | 247 | | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
248 | 256 | | |
249 | 257 | | |
250 | 258 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
| 6 | + | |
5 | 7 | | |
6 | 8 | | |
7 | 9 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | 33 | | |
| |||
38 | 39 | | |
39 | 40 | | |
40 | 41 | | |
| 42 | + | |
41 | 43 | | |
42 | 44 | | |
43 | 45 | | |
| |||
51 | 53 | | |
52 | 54 | | |
53 | 55 | | |
54 | | - | |
| 56 | + | |
55 | 57 | | |
56 | 58 | | |
57 | 59 | | |
| |||
0 commit comments