Commit graph

356 commits

Author SHA1 Message Date
Justin Ethier
cdbf81c56a Forgot to lock for new_mutators 2019-06-11 15:54:12 -04:00
Justin Ethier
d1dbd7fae9 Issue #320 - Track threads that have not yet run
This allows (thread-join!) to be able to wait on these new threads
2019-06-10 13:16:39 -04:00
Justin Ethier
2202b3844f Mark child of atomic_type during tracing 2019-05-30 18:10:40 -04:00
Justin Ethier
d3e679fd03 Added atomic_type 2019-05-29 18:53:53 -04:00
Justin Ethier
4bc8bf1899 Copy immutable fields 2019-04-30 18:43:04 -04:00
Justin Ethier
3706647583 Refactoring 2019-03-21 17:16:21 -04:00
Justin Ethier
102244be21 Issue #304 - gc_copy_obj must to populate bignums
Even without bignums in the nursery we still need this code in place since gc_alloc calls it, and otherwise all of the callers would need to ensure bignums are properly initialized. There may be an opportunity here for optimization, but let's make sure everything works first!
2019-02-18 12:09:31 -05:00
Justin Ethier
e4085b2f1e Cleanup garbage chars 2018-11-29 17:59:01 -05:00
Justin Ethier
2ff11b1ace Experimental: remove unnecessary bignum code 2018-11-09 10:57:11 -05:00
Justin Ethier
b69f4f7233 Prevent segfault on ARM 2018-10-02 18:59:33 -04:00
Justin Ethier
388759853d Add docs 2018-08-24 12:52:23 -04:00
Justin Ethier
92a0160383 Simplify logic to match gc_sweep 2018-08-06 22:35:07 -04:00
Justin Ethier
2045df4932 Cleanup 2018-08-06 21:28:34 -04:00
Justin Ethier
79e21b64e0 Revise header comments 2018-08-08 17:25:06 -04:00
Justin Ethier
f0f071d3e2 Staging debug line 2018-08-08 12:19:16 -04:00
Justin Ethier
40c73203ce Issue #270 - Working through a solution 2018-08-06 20:15:06 -04:00
Justin Ethier
386e208eb8 Revert previous changed
noticed an intermittent crash running read1
2018-08-06 14:48:37 -04:00
Justin Ethier
219cdf2d66 Unify remaining/p math in gc_sweep_fixed_size 2018-08-06 13:58:16 -04:00
Justin Ethier
e383b45381 Do a better job of flagging free fixed-size pages 2018-08-03 13:24:57 -04:00
Justin Ethier
f8b409a8b9 Convert empty fixed-size page to bump&pop 2018-08-03 10:17:56 -04:00
Justin Ethier
e78a3e29bf Remove printf 2018-08-02 17:33:17 -04:00
Justin Ethier
c82223d0f4 Account for unswept heaps from last cycle 2018-08-02 17:45:01 -04:00
Justin Ethier
68a26e507b WIP, trying to cache unswept counts accurately 2018-08-02 13:46:25 -04:00
Justin Ethier
bb52f8db40 Issue #267 - Update free_size when sweeping bump&pop 2018-08-01 18:23:53 -04:00
Justin Ethier
6274eb2652 WIP 2018-08-01 16:58:14 -04:00
Justin Ethier
3ff33cbcb8 WIP - debugging cache of unswept count 2018-08-01 13:38:55 -04:00
Justin Ethier
ebc3247aa7 Remove unused code 2018-07-31 22:54:39 -04:00
Justin Ethier
7631607d87 Experimental tweaks 2018-07-31 13:42:50 -04:00
Justin Ethier
3369214c30 Cache number of unswept pages 2018-07-31 13:17:32 -04:00
Justin Ethier
dc89fbbc56 Added GC_COLLECT_UNDER_UNSWEPT_HEAP_COUNT
Also increased threshold from 2 to 3, to be a bit more aggresive with starting major GC's
2018-07-27 12:19:46 -04:00
Justin Ethier
da31b83e66 Remove dead comment 2018-07-26 17:44:39 -04:00
Justin Ethier
a2073b7803 Renamed member variable to "is_unswept" 2018-07-25 18:33:47 -04:00
Justin Ethier
37bd321245 Remove dead code and clean up formatting 2018-07-18 13:31:02 -04:00
Justin Ethier
91c67aee8b Added comments around trace/alloc/clear colors 2018-07-18 13:14:45 -04:00
Justin Ethier
df27292e6d Cleanup and remove unneeded code 2018-07-17 22:02:03 -04:00
Justin Ethier
972e11b04f Fix for complex numbers 2018-07-17 15:34:31 -04:00
Justin Ethier
67c50608f0 Temporarily re-enabling 2018-07-17 13:18:59 -04:00
Justin Ethier
50eb431225 Fully-disable fixed-size heaps for now 2018-07-17 13:08:24 -04:00
Justin Ethier
d7fa754d1f Temporarily revert gc_alloc code to stabilize
The code crashes even with these changes reverted, so something else is clearly wrong.
2018-07-16 18:58:04 -04:00
Justin Ethier
c89a434bf9 Fixing up fixed-size heaps 2018-07-16 18:33:30 -04:00
Justin Ethier
7994354835 WIP: fixed-size heaps 2018-07-16 13:17:58 -04:00
Justin Ethier
1343490c9b Experimental change to fix GC crashes
I think the real problem may be that we mark globals before waiting for the mutators to transition to the new Mark color. If we wait until after a minor gc to update the mark color, there is a window where the mutator may sweep, and this is after globals have been marked. So the newly marked objects may be accidentally freed by sweep!
2018-07-14 21:23:28 -04:00
Justin Ethier
5216131309 Temporary (?) failsafe in gc_sweep
Also account for collector's mark color when sweeping old objects. Sucks to have to make 3 comparisons but its better than risking accidentally freeing a traced object!
2018-07-13 22:35:44 -04:00
Justin Ethier
38b7a04fa8 Fix memory leak 2018-07-10 17:31:31 -04:00
Justin Ethier
1319b10b73 Fix segfault 2018-07-09 18:01:50 -04:00
Justin Ethier
68ddb831bb Fix compiler error 2018-07-09 17:57:52 -04:00
Justin Ethier
35a8784236 Add diagnostics 2018-07-09 17:56:36 -04:00
Justin Ethier
0df28b5ddc Experimenting with alternative gc init 2018-07-09 13:38:51 -04:00
Justin Ethier
2cba2f42fc Clean up gc_log() 2018-07-05 13:41:47 -04:00
Justin Ethier
053ef0ada5 Added gc_log() 2018-07-05 13:24:00 -04:00