Björn Lindqvist
fce5d4353a
VM: replace binary_payload_start() with slot_count()
...
This should simplify a little the address calculations when visiting
slots of an object
2015-07-06 22:49:38 +02:00
Björn Lindqvist
9d289e35f4
VM: macro FACTOR_FOR_EACH used in more places to drive iteration
2015-06-05 02:14:49 +02:00
Björn Lindqvist
a6e2834252
VM: refactoring to use the visit_object_array method
2015-05-09 20:04:21 -07:00
Björn Lindqvist
e4bb3058e0
VM: the copying_collector only contained one method, so it can easily be
...
merged with its base class
2015-05-09 20:04:21 -07:00
Björn Lindqvist
1d251f7b6a
VM: new function visit_object to replace trace_object
2015-02-28 14:14:30 -08:00
Björn Lindqvist
0798928996
VM: cleanup of some infrequently used functions that can be replaced with direct code
...
also replacing some bitshifts with easier to understand multiplies and
divides, they are equally fast nowadays
2015-02-28 14:14:30 -08:00
Björn Lindqvist
ab75e3b05d
VM: splits out the little ugly scan_next-object + goto-loop into a function trace_card()
2015-02-28 14:14:30 -08:00
Björn Lindqvist
8e91ca3e31
VM: simplification of the trace_partial_objects function
2015-02-28 14:14:30 -08: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
667e5768ba
VM: it's confusing that slot_visitors are called "workhorse" sometimes, let's standardize the name "visitor"
2015-02-28 14:14:29 -08:00
Björn Lindqvist
ee5fd49b9e
VM: simplified fixup_gc_workhorse::fixup_data by mering lots of functions only used once
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
ffe41b3d7f
VM: Fixup cast formatting after clang-format
...
clang-format doesn't recognize casts to non-pointer/non-template types
so it winds up adding a space between the right paren and the expression
and then failing to recognize prefix operators in the process
(e.g. foo = (cell) & bar; should be foo = (cell)&bar;). This commit
manually fixes up the major cases (fixnum, cell, all types ending in _t).
2013-05-13 14:59:24 -04:00
Erik Charlebois
7b1b1eef23
VM: Remove unnecessary _ suffix in constructors
2013-05-12 23:20:43 -04:00
Erik Charlebois
26ff071205
VM: Remove unnecessary explicit keywords
2013-05-12 21:48:38 -04:00
Erik Charlebois
66976a12bf
VM: Refactor collector.hpp to Factor style
2013-05-12 13:24:42 -04:00
Joe Groff
9236c05e60
vm: stage code block map fixup properly for GC
...
Don't update the map until the very last thing, and pass untranslated addresses to the iterator functors. Somewhat complicated by the fact that, for startup_fixup, the map is initialized with fixed-up values, so the fixup functor needs a flag indicating whether it operates with a fixed or unfixed code heap map.
2011-12-14 09:56:48 -08:00
Slava Pestov
e86f434f26
Add GC maps to ##box, ##box-long-long, ##alien-invoke, ##alien-indirect and ##call-gc; remove ##gc-map instruction
2010-06-14 19:39:46 -04:00
Slava Pestov
806e54630a
GC maps for more compact inline GC checks
2010-06-11 20:06:00 -04:00
Slava Pestov
b740a1fe5d
vm: use C++ exceptions instead of longjmp(), to make Windows crash more
2010-04-02 14:10:55 -04:00
Slava Pestov
73e105bfc4
vm: flush icache after GC
2009-11-24 21:36:35 -06:00
Slava Pestov
bfd4cce364
vm: compaction now updates the needs_fixup set
2009-11-24 19:29:59 -06: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
064c00f78d
New identity-hashcode primitive
2009-11-10 21:18:54 -06:00
Slava Pestov
84e191704e
vm: fix crash in profiler
2009-11-06 01:22:53 -06:00
Slava Pestov
b011295300
vm: fix 'become' when aging space is empty
2009-11-05 23:53:53 -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
5ae40e26ee
vm: remove promotion strategy, clean up compaction code
2009-11-01 03:47:09 -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
45a955b5bb
vm: fix typo in card tracing logic
2009-10-24 04:43:11 -05:00
Slava Pestov
03f4b4cdd6
vm: move binary_payload_start() method from factor_vm to object class
2009-10-24 04:27:45 -05:00
Slava Pestov
29a27cfde4
vm: data heap compaction work in progress
2009-10-24 04:18:33 -05:00
Slava Pestov
fd1e992e7d
vm: factor out code that visits object slots and code heap blocks into slot_visitor and code_block_visitor
2009-10-24 03:54:53 -05:00
Slava Pestov
810e309e0c
vm: rename userenv to special_objects
2009-10-23 00:33:53 -05:00
Slava Pestov
40351d40be
vm: use iostreams instead of printf for debug messages, clean up a few things
2009-10-21 20:12:57 -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
2e65366c6b
vm: rename myvm and parent_vm instance variables to parent, clean up casts in primitive definitions
2009-10-18 20:31:59 -05:00
Slava Pestov
236588208b
vm: rename F to false_object, and rename T to true_object
2009-10-18 20:26:21 -05:00
Slava Pestov
107c96f642
vm: code heap compaction at runtime using compact-gc primitive
2009-10-16 11:39:35 -05:00
Slava Pestov
85b746e7b5
vm: simpler and more efficient code heap compaction; restructure a few things to get ready for runtime code heap compaction
2009-10-16 04:33:35 -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
1796688acd
vm: during an aging collection, promote objects referenced from tenured directly to tenured
2009-10-14 06:03:52 -05:00
Slava Pestov
a4ea6ad339
vm: record bytes/objects copied again
2009-10-09 03:20:06 -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
6939759f46
vm: working on new object-oriented garbage collector
2009-10-07 15:48:09 -05:00