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
Justin Ethier
d89a81eca6
More cleanup
2016-01-03 22:30:30 -05:00
Justin Ethier
4d7cd020cc
Cleanup
2016-01-03 22:17:47 -05:00