Commit Graph

1633 Commits (510f605df953a349113a69cd6f15a0903526536b)

Author SHA1 Message Date
Björn Lindqvist fa0ff77c45 VM: reset the unused parts of the data and retain stack segments with a bit pattern (good for debugging) 2015-04-29 09:31:54 -07:00
Björn Lindqvist acc1bd3221 compiler.*: removing the check-d and check-r slots from gc-map and adjusting code that depended on those 2015-04-29 09:31:53 -07:00
Björn Lindqvist 2cd2aa498a VM: the compiler doesn't emit any live overinitialized locations anymore
Any overinitialized location immediately becomes garbage and is not
reused again. This is very nice because then the gc maps can be
simpler again.
2015-04-29 09:31:53 -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 6b29c0ea00 VM: refactoring to remove redundancy in retainstack|datastack_to_array 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 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 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 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 f5dc4afb2e VM: better error message in case factor_vm::store_external_address fails 2015-01-28 14:58:22 +00:00
Björn Lindqvist 434e4ef4b7 VM: fix the debug printing so that instead of always printing to std::cout, you supply the stream to print to 2015-01-28 14:58:21 +00:00
Björn Lindqvist d18c48c75b VM: possible fix for #1265. the size of the stack frame appears to have been miscalculated in iterate_callstack which this commit fixes. 2015-01-15 09:29:14 +00: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 8ea1eea4e1 VM: instead of passing around the trace_contexts_p arg, just clear the contexts in primitive_save_image_and_exit() it has the same effect but is simpler 2015-01-15 09:29:14 +00:00
Björn Lindqvist 4d7bc4c169 VM: merge of slot_visitor and code_block_visitor
Looks like there is no reason for them to be separate classes and by
merging them you can simplify lots of code.
2015-01-15 09:29:14 +00: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 dc9e937beb VM: vm::iterate_active_callstacks is only used once, so it's simpler if the code body is "inline" 2015-01-15 09:29:14 +00:00
Björn Lindqvist b61eaa8a16 VM: the full_collector class isn't needed since it is only used once 2015-01-15 09:29:14 +00:00
Björn Lindqvist 693e8ad33a VM: the clear_mark_bits methods are only called once -- make the calls inline instead 2015-01-15 09:29:14 +00:00
Björn Lindqvist fb9fa12cdd VM: change the definition of entry_point in word and quotation from void* to cell
this gets rid of lots of redundant casts from void* to cell
2015-01-15 09:29:13 +00:00
Björn Lindqvist f0bf693beb VM: free_list_allocator::first_block, last_block and next_block_after can be refactored away 2015-01-15 09:29:13 +00:00
Björn Lindqvist 1beac119d8 VM: removes the template parameter from mark_bits
since mark_bits only deals with arithmetic on memory addresses, it
doesn't need to be specialized so it can be untemplateized
2015-01-15 09:29:13 +00:00
Björn Lindqvist af270cb4d8 VM converts the methods callstack::frame_top_at and code_block::offset to use cells instead of void*'s 2015-01-15 09:29:13 +00:00
Björn Lindqvist 615420fe61 VM: calls to visit_code_roots() replaced with visit_uninitialized_code_blocks() 2015-01-15 09:29:13 +00:00
Björn Lindqvist eb7a5ab1ba VM: some more fixing to make the types match better, converting void* to cell 2015-01-15 09:29:13 +00:00
Björn Lindqvist e47181e87a VM: change type of callstack_top and callstack_bottom from void* to cell
cell and void* is always the same size, but now you can remove lots of
redundant type casts from void* to cell.
2015-01-15 09:29:13 +00:00
Björn Lindqvist a6e191a490 VM: the frame_return_address and set_frame_return_address functions aren't needed (clearer to read/write the pointers directly) 2015-01-15 09:29:13 +00:00
Björn Lindqvist 11e906139b VM: code_block::scan, make it so the method always returns -1 if scan can't be determined, part of the fix for #1265 2015-01-15 09:29:13 +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
John Benediktsson 025283f252 vm: store full command-line including executable first argument. 2014-12-22 22:39:52 -08:00
John Benediktsson 70778b89ae Revert "VM: always clear the data and retainstack in general_error because they might contain uninitialized values (#1187)"
This reverts commit 378f208025.
2014-12-04 11:46:28 -08:00
Doug Coleman 875d2421df vm: We don't want ambiguity for which print triggered on a gc error. Differentiate the error messages. 2014-12-04 10:35:32 -08:00
Björn Lindqvist 378f208025 VM: always clear the data and retainstack in general_error because they might contain uninitialized values (#1187) 2014-12-04 10:26:23 -08:00
Björn Lindqvist 1cec8a7814 VM: modifying the uninitialized_blocks map in place instead of creating a new one is more efficient 2014-12-04 10:23:34 -08:00
Björn Lindqvist 451fc12411 VM: redundant if, trace_cards() doesnt do anything for empty generations anyway 2014-12-04 10:23:33 -08:00
Björn Lindqvist 93134b949f VM: the aging_collector and nursery_collector classes aren't needed because they are just simple instatiations of copying_collector 2014-12-04 10:23:33 -08:00
Björn Lindqvist 423e983514 VM: refactoring to get rid of the megamorphic_call_stub and check_code_pointer() words 2014-12-04 10:23:33 -08:00
Björn Lindqvist 885b5c7043 VM: no need for a nursery_space class, it's just a bump_allocator 2014-12-04 10:23:33 -08:00
John Benediktsson 4837ceebb4 vm: fix OS X issue with using symlinks from outside $factor. 2014-12-03 19:19:52 -08:00
Doug Coleman c675694619 vm: Annotate more places where we can gc.
Code formatting fix.
2014-11-29 19:25:46 -06:00
Björn Lindqvist 231f50039b VM: move next_object_after() and first_object() to aging_space (no iteration possible in nursery) 2014-11-21 02:16:04 -08:00
Björn Lindqvist 50c74fc496 VM: get rid of the duplicated nursery instance in vm->data->nursery
vm.nursery and vm->data->nursery are different objects. They get out
of sync when Factor code bumps vm.nursery but leaves vm->data->nursery
unchanged. The emptiness of vm->data->nursery meant that each_object()
never iterated it.
2014-11-21 02:16:03 -08:00
Björn Lindqvist 2a5e1e06f3 VM: each_object() can't iterate the nursery so instead we assume it's empty 2014-11-21 02:16:03 -08:00
Björn Lindqvist 2095fd57de VM: FACTOR_ASSERT so that data_root never wraps a null pointer, cause if it does, random crashes can happen 2014-11-17 17:27:36 -08:00
Björn Lindqvist 161eb0bb49 VM: fixed bignum_divide_unsigned_large_denominator so that it wont data_root-protect NULL-pointers 2014-11-17 17:27:36 -08:00
Björn Lindqvist f9869d8ad9 VM: remove bignum_roots.clear() (snuck in during rebase) 2014-11-17 17:27:36 -08:00
Björn Lindqvist 0e8e2af0a7 VM: adding a few forgotten .untagged() calls 2014-11-17 17:27:36 -08:00