Commit graph

351 commits

Author SHA1 Message Date
Justin Ethier
40416364f8 Refactoring 2016-04-20 23:00:04 -04:00
Justin Ethier
63a2204efc Refactoring 2016-04-20 22:20:02 -04:00
Justin Ethier
b14d25afc9 Decrease memory usage of object header 2016-04-20 21:46:28 -04:00
Justin Ethier
7815cebd5a GC for opaques 2016-04-19 22:11:31 -04:00
Justin Ethier
6d9b1436ec Tweak initial heap size 2016-04-13 21:21:48 -04:00
Justin Ethier
b0b02c0dc7 Move fprintf to GC trace 2016-04-12 22:37:06 -04:00
Justin Ethier
1578127410 Grow heap more slowly 2016-04-12 22:17:32 -04:00
Justin Ethier
71d085091d Fully-generalize gc algorithms
Updated code to support 3 types of heaps, based on size. Need to be able to use the old algorithms to inspect the active size of each heap. We need to collect if one of the sub-heaps is almost full, even if the others are mostly empty.
2016-04-12 21:47:41 -04:00
Justin Ethier
8d8ce71c92 Revert previous change, for now 2016-04-12 23:44:13 -04:00
Justin Ethier
0de7c6b98b Experimenting with gradual heap growth 2016-04-12 23:10:21 -04:00
Justin Ethier
89881e901a Experimenting with a medium object heap 2016-04-12 21:34:18 -04:00
Justin Ethier
b18aadb229 Temporarily disable growing heap after GC
To get this working properly, would need to figure out if any sub-heaps are nearly full. Since we grow these heaps anyway as needed, this code is not strictly required. So diabling for now to get cyclone to build and run again.
2016-04-11 21:18:34 -04:00
Justin Ethier
9174e320dc WIP - use differnt heap for small objects 2016-04-11 23:37:49 -04:00
Justin Ethier
a63f9a729e Refactoring 2016-04-01 21:48:01 -04:00
Justin Ethier
0da8dabc5a Renamed macro 2016-04-01 21:03:40 -04:00
Justin Ethier
42faaae217 Do not include free sizes of 0 in min count 2016-03-25 23:19:10 -04:00
Justin Ethier
a8946428c5 Report used size 2016-03-25 22:18:42 -04:00
Justin Ethier
1ce9fee354 Added gc_print_stats 2016-03-25 22:13:56 -04:00
Justin Ethier
d73686194b GC bytevectors 2016-03-23 03:53:04 -04:00
Justin Ethier
9889248cab Removed unused closure types 2016-03-22 21:49:12 -04:00
Justin Ethier
23fd4268a3 More conservative locking when collector cooperates
Try to prevent cases where the mutator and collector are both running minor GC at the same time.
2016-03-04 21:58:31 -05:00
Justin Ethier
38099bb3c6 Fixed compiler warnings 2016-03-03 21:49:48 -05:00
Justin Ethier
edca776b42 Removed debug code 2016-03-03 20:48:14 -05:00
Justin Ethier
e034459e81 Added GC thresholds 2016-03-03 23:11:35 -05:00
Justin Ethier
758bb25ba9 Tweaking GC parameters, but not done yet 2016-03-02 23:02:17 -05:00
Justin Ethier
6376a0eb2c Qualify logging as verbose 2016-03-02 21:25:05 -05:00
Justin Ethier
c9a69ae208 Added debug flag to get GC thread PID 2016-03-02 21:21:05 -05:00
Justin Ethier
127acb143e Add GC safety check before clearing major GC vars 2016-03-02 19:35:14 -05:00
Justin Ethier
76b5cbce00 Refactor gc_mut_update and handle TRACE case 2016-02-29 23:02:30 -05:00
Justin Ethier
98a18a225a Handle old stack objects on write barrier
The gc_mut_update write barrier should not assume that the old object is on the heap, lets also gray the old object if it happens to be on the stack. Worst case, we mark an extra object here or there. Best case, may prevent gc_allocated_bytes receiving forward pointers.
2016-02-29 03:08:18 +00:00
Justin Ethier
a98990b2e0 Apply pending_writes after cooperating on behalf
Apply pending_writes back to last_write after the collector cooperates on behalf of a mutator.
2016-02-27 22:56:59 -05:00
Justin Ethier
86bdf0c5aa Refactoring 2016-02-27 22:44:03 -05:00
Justin Ethier
cef2abfb7e Refactoring 2016-02-24 21:06:24 -05:00
Justin Ethier
dc19539bff Tweak GC debugging 2016-02-24 22:30:40 -05:00
Justin Ethier
7c49e59ad6 Added safety check 2016-02-23 21:59:12 -05:00
Justin Ethier
22814ffc52 Handle block/runnable with a primitive as the cont 2016-02-23 23:25:53 -05:00
Justin Ethier
aedb380f04 Use standard type 2016-02-17 22:41:03 -05:00
Justin Ethier
168e7d123d Compiles on x86_64 2016-02-17 22:35:28 -05:00
Justin Ethier
e9fef4133a Fix 64-bit compiler issues 2016-02-17 21:50:47 -05:00
Justin Ethier
1f00e07c0a Fixes to cond_var 2016-02-16 02:46:23 -05:00
Justin Ethier
8fdd2c46ba Added condition variable type 2016-02-16 01:09:02 -05:00
Justin Ethier
730434bb14 Added header comment block. 2016-02-14 22:35:04 -05:00
Justin Ethier
b560fda1c2 Added function comment for gc_mark_gray2 2016-01-20 22:44:30 -05:00
Justin Ethier
3bbf64d440 Added comments 2016-01-20 23:48:04 -05:00
Justin Ethier
a0c758c0b1 Ensure thread data fields are initialized 2016-01-17 21:39:51 -05:00
Justin Ethier
87c266a44a Adding exception stack to thread data 2016-01-12 03:21:36 -05:00
Justin Ethier
4d2b59966c Bug fixes, comments 2016-01-05 19:14:31 -05:00
Justin Ethier
72eda149c5 Use minor GC code to move GC coop result to heap
This allows the code to move any object to the heap, instead of the previous hack. There may be more overhead calling the full minor GC code, however, most objects should already have been moved and by definition this would only happen after a function has blocked for a length of time. So, both should minimize the additional overhead.
2016-01-04 22:39:37 -05:00
Justin Ethier
a2ba71f965 Two changes:
- Remove debug code from gc module
- Handle receiving non-heap allocated objects during GC cooperation
2016-01-04 22:13:55 -05:00
Justin Ethier
e28951a8d5 Move the mutation table into thread data. 2016-01-04 22:54:23 -05:00