Commit Graph

32 Commits (master)

Author SHA1 Message Date
Björn Lindqvist 752c895d23 VM: refactor gc_event so that the phase times are stored in an array
So that you don't need a new method for each gc phase to time.
2016-10-20 00:34:18 +02:00
Björn Lindqvist c02d913579 VM: big refactoring removing the gc_workhorse
Each collector were a slot_visitor containing a gc_workhorse containing
a policy class. This commit removes the gc_workhorse and the policies
and instead "inlines" the common code in the collector bodies. So there
is more code duplication, but the control flow doesn't "jump around" so
much so it is easier to understand. It also makes the nursery gc faster
because its collection code can be optimized better without the
workhorse/policy system.
2016-09-22 13:12:59 +02:00
Alexander Iljin 0d57734dab vm: replace block comments /**/ with line comments // 2016-09-09 05:47:52 +02:00
Björn Lindqvist 583fb5825b VM: removes the collector class
The cheneys_algorithm() method can be moved to slot_visitor (because it
kind of visists objects), and then there is no need for the collector
class.
2016-05-04 17:52:04 +02:00
Björn Lindqvist f629a95b03 VM: moving collector methods to slot_visitor methods
collector::trace_cards moved to slot_visitor::visit_cards and
collector::trace_code_heap_roots moved to
slot_visitor::visit_code_heap_roots. Both those methods are pointer visitors
2016-05-04 00:32:17 +02:00
Björn Lindqvist 58ad5fb4ce VM: all the started_<blah>() replaced with reset_timer() 2016-04-24 15:21:17 +02:00
Björn Lindqvist a23bb8cf16 VM: nr of code blocks scanned always = points_to_<gen>.size() 2016-04-22 12:01:26 +02:00
Björn Lindqvist 685a795aa0 VM: to_tenured_collector isn't needed, it's just a normal collector instance 2015-05-09 20:04:21 -07:00
Björn Lindqvist a43a455990 VM: the unmarker classes are not needed, easier to just send the unmask pattern to the trace_cards function directly 2015-02-28 14:14:30 -08:00
Björn Lindqvist b5a206c587 VM: new function visit_mark_stack() to factor out the mark stack iteration 2015-02-28 14:14:29 -08:00
Björn Lindqvist 5490c50217 VM: visit_roots and visit_contexts where always called in tandem, make a new method visit_all_roots that calls them both 2015-02-28 14:14:29 -08:00
Björn Lindqvist d2aea0f606 VM: replaced the reset_generation() generic method with one method for each generation 2015-01-15 09:29:14 +00:00
Björn Lindqvist 8ee1f890f2 VM: refactoring intended to remove trace_*-methods that are just
simple delegations to the data/code_visitor instances
2015-01-15 09:29:12 +00:00
Erik Charlebois 7b1b1eef23 VM: Remove unnecessary _ suffix in constructors 2013-05-12 23:20:43 -04:00
Erik Charlebois 93b586da31 VM: Refactor to_tenured_collector.cpp/hpp to Factor style 2013-05-12 13:24:47 -04:00
Slava Pestov 2498a4d881 vm: don't call nano_count() from the GC at all, unless GC event recording is on 2010-09-04 13:21:45 -07:00
Slava Pestov 001a3f2847 vm: mark sweep now traces code block references; rename embedded_pointer to instruction_operand 2009-11-23 19:17:12 -06:00
Slava Pestov b28619ce2f vm: minor GC traces embedded pointers 2009-11-22 13:37:39 -06:00
Slava Pestov e4ad642134 vm: 4 bit tags, new representation of alien objects makes unbox-any-c-ptr more efficient (work in progress) 2009-11-02 04:25:54 -06:00
Slava Pestov 6f7607eed7 vm: clean up card unmarking 2009-10-30 03:15:50 -05:00
Slava Pestov 91cec17e52 vm: get GC events working, -verbosegc switch now produces more info 2009-10-26 23:57:26 -05:00
Slava Pestov e793a72060 vm: remove crummy old GC stats, split off free list code, clean up various other things 2009-10-26 22:08:35 -05:00
Slava Pestov af855b7fa9 vm: debugging mark-sweep 2009-10-21 19:41:54 -05:00
Slava Pestov 814f6371d6 vm: mark sweep gc for tenured space work in progress 2009-10-20 22:20:49 -05:00
Slava Pestov d22d5466fc vm: move factor_vm::untagged_object_size() to object::size() 2009-10-20 13:13:39 -05:00
Slava Pestov 0a3d08bc52 vm: make the code nice and pretty 2009-10-16 02:55:02 -05:00
Slava Pestov 70dcecf61a vm: don't flush instruction cache twice per code block on a major GC on PowerPC 2009-10-15 22:31:41 -05:00
Slava Pestov 45eb68fa38 vm: during tenuring stage of aging collection, if tenured space fills up, it would attempt a to_tenured collection. this will succeed if all roots were tenured. however, this is unsound, because there's now an untraced segment of tenured space. fix: if tenuring fails, go on to do a full collection instead 2009-10-15 05:51:11 -05:00
Slava Pestov d34c7854cd vm: simplify card marking logic, and unmark more cards during aging collections by checking if they actually contained young pointers or not 2009-10-09 01:37:45 -05:00
Slava Pestov 21f55ab1a3 vm: more efficient code heap remembered set 2009-10-08 23:10:32 -05:00
Slava Pestov dbf0dd4a2d vm: split off parts of data_gc into sub-files and clean up logic 2009-10-08 02:10:28 -05:00
Slava Pestov 6939759f46 vm: working on new object-oriented garbage collector 2009-10-07 15:48:09 -05:00