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
Justin Ethier
ac7fec70a0
Finalize mutex prior to sweeping
2016-01-03 21:59:09 -05:00
Justin Ethier
de33b567a3
Missed a couple things...
2016-01-02 22:49:57 -05:00
Justin Ethier
36752be311
Stubs for mutex functions
2016-01-02 21:56:36 -05:00
Justin Ethier
71af17d7e7
Use atomic operations from libck
2015-12-29 22:05:07 -05:00
Justin Ethier
deae1693d5
Updated header comments
2015-12-23 23:02:38 -05:00
Justin Ethier
eaac66ab37
WIP
2015-12-23 22:09:10 -05:00
Justin Ethier
1f21b4688a
WIP
2015-12-24 02:20:18 -05:00
Justin Ethier
6ae7a88e53
Bugfix
2015-12-24 01:56:00 -05:00
Justin Ethier
43ff5c5454
Re-enable cooperation code
2015-12-24 01:32:40 -05:00
Justin Ethier
2e9c5addd5
WIP
2015-12-24 00:50:37 -05:00
Justin Ethier
c09dc43dde
First crack at gc_mutator_thread_runnable
2015-12-23 22:34:11 -05:00
Justin Ethier
cc36d6459d
Added collector_cooperated flag
2015-12-22 22:49:55 -05:00
Justin Ethier
8aefcbfd13
New mutator signatures
2015-12-22 22:39:51 -05:00
Justin Ethier
247b09fc88
Store cont before mutator is blocked
2015-12-22 22:19:04 -05:00
Justin Ethier
9fd4929bb0
Added notes
2015-12-23 02:25:52 -05:00
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