Justin Ethier
785923f955
Partial GC coop for blocked mutator
2015-12-22 23:07:35 -05:00
Justin Ethier
ec8821b9ef
Use atomics to access thd->gc_status
2015-12-22 22:57:28 -05:00
Justin Ethier
6693b4533a
Fixed bug with previous change
...
Do not change mutator status prior to checking it
2015-12-22 03:15:45 -05:00
Justin Ethier
66ef2e2646
Added thread state helpers, avoid races during coop
2015-12-22 03:09:11 -05:00
Justin Ethier
be13df2abb
Perform deferred free of thread data
...
Mark a mutator's thread as old when a thread is terminated, and free it at a later time. This is done to prevent race conditions with the collector thread, which could be in the middle of working with a thread's data.
2015-12-21 22:57:36 -05:00
Justin Ethier
a5fefda485
WIP - thread cleanup
2015-12-20 22:48:22 -05:00
Justin Ethier
38c1ca7b31
Added thread_sleep
2015-12-18 23:53:24 -05:00
Justin Ethier
4110c6a4e1
New container for mutator threads
2015-12-18 22:05:37 -05:00
Justin Ethier
4e9bd1ea02
Added GC thread state, and notes
2015-12-18 23:49:32 -05:00
Justin Ethier
e57688a774
Added thread start/end functions to runtime
2015-12-17 22:45:45 -05:00
Justin Ethier
dfed77639a
Adding thread application stubs
2015-12-15 22:58:15 -05:00
Justin Ethier
ff18c50aac
Cleanup all thread data members
2015-12-14 21:30:51 -05:00
Justin Ethier
d8a96d17b7
Added header comment
2015-12-11 21:16:17 -05:00
Justin Ethier
29e6cb38e9
Tweaked GC thresholds
2015-12-10 21:48:19 -05:00
Justin Ethier
be9a07551e
Added notes
2015-12-10 23:13:40 -05:00
Justin Ethier
ded3f76cc8
Scheduling of GC
2015-12-10 23:11:22 -05:00
Justin Ethier
5fa6f19418
Adding stubs for collector scheduling
2015-12-09 22:55:46 -05:00
Justin Ethier
de0c19e1cd
Keep track of the amount of free space in the heap
2015-12-09 22:46:00 -05:00
Justin Ethier
15ac239d2f
Mark current continuation during GC coop
...
Mark both current cont (gc_cont + args) as well as all moved objects during cooperation. Trying to prevent cases of valid objects being collected when they should have been part of the continuation chain (IE, parens in read:parse).
2015-12-09 23:38:15 -05:00
Justin Ethier
ce500fff3e
Removed dead code and errant gc_mark_gray
2015-12-08 22:49:20 -05:00
Justin Ethier
a5dcb6c6a2
Potential debug tracing
2015-12-09 02:59:25 -05:00
Justin Ethier
9199bf512a
Separate debug printing in gc_mut_cooperate
2015-12-08 21:42:18 -05:00
Justin Ethier
6ad9e6098f
Removed hacky gc_stack functions
2015-12-08 21:37:01 -05:00
Justin Ethier
33447ebc57
New write barrier implementation
2015-12-07 22:34:29 -05:00
Justin Ethier
598c981ecb
Adding an experimental safety check
2015-12-08 03:02:30 -05:00
Justin Ethier
c4554c5af6
Added notes
2015-12-07 23:29:51 -05:00
Justin Ethier
5818ffc0eb
Temporarily reverting gc_stack change
2015-12-07 22:54:54 -05:00
Justin Ethier
e994d4aa76
Do thread locking outside of gc_mark_gray
...
Changed the locking to attempt to avoid race conditions where not all of the heap objects have been moved prior to the collector staring to process them.
2015-12-07 22:02:38 -05:00
Justin Ethier
9ded782a06
New approach to stack graying from write barrier
2015-12-06 22:37:08 -05:00
Justin Ethier
3d0d966e6d
Changed GC cooperation
...
Mark all objects moved to the heap, instead of just the typical roots.
2015-12-05 22:44:06 -05:00
Justin Ethier
17fbd853c7
Added note
2015-12-04 22:31:31 -05:00
Justin Ethier
09f4a638cf
Added notes
2015-12-05 02:55:28 -05:00
Justin Ethier
ef0571b45e
Move verbose output to stderr to make runtime logging easier
2015-12-03 23:14:18 -05:00
Justin Ethier
ea6167b90b
Fixed debug statements
2015-12-03 02:51:58 -05:00
Justin Ethier
f6e14ef3a8
Added debugging
2015-12-01 22:34:39 -05:00
Justin Ethier
c70a69c202
WIP
2015-12-01 22:41:11 -05:00
Justin Ethier
52f0868d24
Selectively compile debug traces
2015-11-30 21:40:16 -05:00
Justin Ethier
e29633f2b2
Fixed off-by-one error WRT last read/write
2015-12-01 03:07:34 -05:00
Justin Ethier
ae46e39c45
Added TODO
2015-12-01 00:22:54 -05:00
Justin Ethier
7276eea773
Added debugging
2015-11-30 23:00:30 -05:00
Justin Ethier
b5849e10ed
Added debug traces
2015-11-26 22:45:22 -05:00
Justin Ethier
604eb682c5
Trace object graph used to mark
2015-11-26 01:52:42 -05:00
Justin Ethier
c8d82f899f
Debug alloc info
2015-11-26 00:15:43 -05:00
Justin Ethier
a257423999
More debugging
2015-11-25 23:54:16 -05:00
Justin Ethier
e95eeb8732
Record marking
2015-11-25 23:51:13 -05:00
Justin Ethier
ff1fc10a90
Added debug statements
2015-11-25 23:46:50 -05:00
Justin Ethier
6ad6f6e254
Added debug traces
2015-11-25 02:58:05 -05:00
Justin Ethier
3e7877b402
Working around mark-free-list problem for now, need to revisit this.
2015-11-24 23:09:49 -05:00
Justin Ethier
469cfa4c08
Debugging - how could gc_sweep/p be a value type?
2015-11-21 02:57:32 -05:00
Justin Ethier
d13327cfd4
Debugging
2015-11-21 02:14:57 -05:00