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
							
						 
						
							 
							
							
							
								
							
								f147bd4404 
								
							
								 
							
						 
						
							
							
								
								VM: uppercasing gc_op  
							
							 
							
							
							
						 
						
							2016-10-19 09:09:32 +02:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								aace892527 
								
							
								 
							
						 
						
							
							
								
								VM: rename of collect_growing_heap_op and collect_growing_heap()  
							
							 
							
							... 
							
							
							
							The idea is to "make room" for collect_growing_code_heap_op and
collect_growing_code_heap() to enable code heap growth. 
							
						 
						
							2016-10-13 02:13:09 +02:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								d71bd83f57 
								
							
								 
							
						 
						
							
							
								
								VM: removing the 1-arg overload of iterate() (better to be explicit about the fixup)  
							
							 
							
							
							
						 
						
							2016-09-22 17:03:38 +02:00  
						
					 
				
					
						
							
							
								 
								Alexander Iljin
							
						 
						
							 
							
							
							
								
							
								0d57734dab 
								
							
								 
							
						 
						
							
							
								
								vm: replace block comments /**/ with line comments //  
							
							 
							
							
							
						 
						
							2016-09-09 05:47:52 +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
							
						 
						
							 
							
							
							
								
							
								da3de080ee 
								
							
								 
							
						 
						
							
							
								
								VM: callback_entry_point() and update() can be removed  
							
							 
							
							
							
						 
						
							2015-09-02 21:54:39 +02:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								03d861976c 
								
							
								 
							
						 
						
							
							
								
								VM: new method visit_instruction_operands(), it replaces the instruction  
							
							 
							
							... 
							
							
							
							operand iteration code in compaction.cpp and image.cpp 
							
						 
						
							2015-08-04 16:02:09 +02:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								49a406d880 
								
							
								 
							
						 
						
							
							
								
								VM: using compute_external_address everywhere instead of store_external_address  
							
							 
							
							
							
						 
						
							2015-08-04 16:02:09 +02:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								718ea51d8a 
								
							
								 
							
						 
						
							
							
								
								VM: remove the collect_compact_code_impl(), collect_compact_impl() can  
							
							 
							
							... 
							
							
							
							be used instead
this might slow down collect_growing_heap(), but heap growth happens so
rarely that it shouldn't matter 
							
						 
						
							2015-08-04 16:02:08 +02:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								18ab09e493 
								
							
								 
							
						 
						
							
							
								
								VM: object_compaction_updater -> lambda func  
							
							 
							
							
							
						 
						
							2015-08-04 16:02:08 +02:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								a5a7232b8f 
								
							
								 
							
						 
						
							
							
								
								VM: use a function update_relocation to replace the  
							
							 
							
							... 
							
							
							
							code_block_compaction_relocation_visitor struct 
							
						 
						
							2015-08-04 16:02:08 +02:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								4bc0720e51 
								
							
								 
							
						 
						
							
							
								
								VM: more changes of structs to lambda functions  
							
							 
							
							
							
						 
						
							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
							
						 
						
							 
							
							
							
								
							
								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
							
						 
						
							 
							
							
							
								
							
								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
							
						 
						
							 
							
							
							
								
							
								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
							
						 
						
							 
							
							
							
								
							
								615420fe61 
								
							
								 
							
						 
						
							
							
								
								VM: calls to visit_code_roots() replaced with visit_uninitialized_code_blocks()  
							
							 
							
							
							
						 
						
							2015-01-15 09:29:13 +00: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  
						
					 
				
					
						
							
							
								 
								Steven Stewart-Gallus
							
						 
						
							 
							
							
							
								
							
								e6dade3f94 
								
							
								 
							
						 
						
							
							
								
								Lower the stack usage of a few functions  
							
							 
							
							... 
							
							
							
							In vm/compaction.cpp I rescoped some variables to lower the stack usage
from 592 to 560 bytes. I wasn't very successful with this. The stack
usage is larger than it looks because methods on the structures used
take an implicit this pointer and a reference to the data (so the data
has to live out it's full scope and can't be put in a register).
In vm/debug.cpp I made a large (1024 bytes) stack allocated buffer
simply dynamically allocated.
In vm/os-unix.cpp I rescoped signal handling structures to not coincide
with each other and reduced a very large (1024 bytes) amount of stack
usage to less than 500 bytes. 
							
						 
						
							2014-06-19 14:55:57 -07: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
							
						 
						
							 
							
							
							
								
							
								b918c3e646 
								
							
								 
							
						 
						
							
							
								
								VM: Remove redundant #ifdef FACTOR_DEBUGs  
							
							 
							
							... 
							
							
							
							FACTOR_DEBUG checks around asserts aren't needed, since FACTOR_ASSERT is
already conditionally defined by FACTOR_DEBUG. 
							
						 
						
							2013-05-12 23:44:32 -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
							
						 
						
							 
							
							
							
								
							
								2bed6f6a25 
								
							
								 
							
						 
						
							
							
								
								VM: Refactor compaction.cpp to Factor style  
							
							 
							
							
							
						 
						
							2013-05-12 13:24:42 -04:00  
						
					 
				
					
						
							
							
								 
								Doug Coleman
							
						 
						
							 
							
							
							
								
							
								106ecdb6dd 
								
							
								 
							
						 
						
							
							
								
								compaction: Less than is the new greater than.  Fixes   #558 .  
							
							 
							
							
							
						 
						
							2012-07-25 17:57:50 -07:00  
						
					 
				
					
						
							
							
								 
								Doug Coleman
							
						 
						
							 
							
							
							
								
							
								e9ec95ad4f 
								
							
								 
							
						 
						
							
							
								
								compaction: Inifnite headaches--cured! Two compact functions, one was not like the other.  
							
							 
							
							
							
						 
						
							2012-05-27 18:26:03 -07: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  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								d12b6e375b 
								
							
								 
							
						 
						
							
							
								
								vm: iterate_callstack_reversed in slot_visitor  
							
							 
							
							
							
						 
						
							2011-12-14 09:56:47 -08:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								083b856604 
								
							
								 
							
						 
						
							
							
								
								vm: reinitialize all_blocks from scratch after gc  
							
							 
							
							... 
							
							
							
							Faster and more likely to be correct than trying to fixup the existing set 
							
						 
						
							2011-12-12 19:05:48 -08:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								81911b9f87 
								
							
								 
							
						 
						
							
							
								
								vm: initialize all_blocks map from image  
							
							 
							
							... 
							
							
							
							um, code blocks from the image need to go in the set too 
							
						 
						
							2011-11-23 11:11:26 -08:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								2705fc67cb 
								
							
								 
							
						 
						
							
							
								
								vm: keep a set of all code_blocks in the code_heap  
							
							 
							
							... 
							
							
							
							This way looking up code blocks by return address is an O(log n) set lookup rather than an O(n) linear scan. 
							
						 
						
							2011-11-23 11:11:26 -08:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								e3e2788414 
								
							
								 
							
						 
						
							
							
								
								vm: walk code roots from sample callstacks  
							
							 
							
							
							
						 
						
							2011-11-02 13:23:08 -07:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								0f5e0eada5 
								
							
								 
							
						 
						
							
							
								
								vm: fix high_fragmentation_p assertion  
							
							 
							
							
							
						 
						
							2011-09-05 23:30:28 -07:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								83b8717bad 
								
							
								 
							
						 
						
							
							
								
								Clean up some GC logic and fix a bug where large object allocation could grow the heap unnecessarily  
							
							 
							
							
							
						 
						
							2011-09-05 16:28:00 -07: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
							
						 
						
							 
							
							
							
								
							
								4405a66f99 
								
							
								 
							
						 
						
							
							
								
								vm: fix RT_HERE fixup on image load  
							
							 
							
							
							
						 
						
							2010-06-11 21:54:47 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								806e54630a 
								
							
								 
							
						 
						
							
							
								
								GC maps for more compact inline GC checks  
							
							 
							
							
							
						 
						
							2010-06-11 20:06:00 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								637a77c018 
								
							
								 
							
						 
						
							
							
								
								Stop wearing monocle and use the term "entry point" instead of "XT" throughout VM and compiler; also remove two unused relocation types  
							
							 
							
							
							
						 
						
							2010-01-18 20:54:00 +13:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								e4da687413 
								
							
								 
							
						 
						
							
							
								
								vm: Tweak Factor VM to compile with Microsoft Visual Studio on Windows, in addition to Mingw. Add an Nmakefile which can be used for this purpose. Rename Makefile to GNUmakefile.  
							
							 
							
							
							
						 
						
							2010-01-17 03:43:22 +13:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								7271900e6f 
								
							
								 
							
						 
						
							
							
								
								vm: code cleanup  
							
							 
							
							
							
						 
						
							2009-12-26 15:24:21 +13:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								0068bce934 
								
							
								 
							
						 
						
							
							
								
								vm: big overhaul of non-optimizing compiler  
							
							 
							
							... 
							
							
							
							- change some primitives into sub-primitives: fixnum+ fixnum- fixnum* inline-cache-miss inline-cache-miss-tail
- rename some relocation types for clarity
- some other minor re-organizations and cleanups 
							
						 
						
							2009-12-15 07:20:09 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								eb840dcf41 
								
							
								 
							
						 
						
							
							
								
								RT_HERE now takes its argument from the literal table rather than the parameter table, reducing image size further  
							
							 
							
							
							
						 
						
							2009-12-02 04:55:48 -06:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								68c09f0e93 
								
							
								 
							
						 
						
							
							
								
								Split literal table into literal and parameter tables, literal table is discarded after code block initialization  
							
							 
							
							
							
						 
						
							2009-12-02 04:28:15 -06:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								147edb1ce9 
								
							
								 
							
						 
						
							
							
								
								vm: update callback stub machine code at the end of compaction to prevent it from seeing an inconsistent data stack  
							
							 
							
							
							
						 
						
							2009-12-02 03:31:57 -06:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								d49c86ba11 
								
							
								 
							
						 
						
							
							
								
								vm: Clean up more code duplication and rename a few methods  
							
							 
							
							
							
						 
						
							2009-12-02 01:17:30 -06:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								c6602bda27 
								
							
								 
							
						 
						
							
							
								
								Big cleanup of literal table and relocation-related code  
							
							 
							
							... 
							
							
							
							- new way to iterate over instruction_operands cleans up relocation code
- move some methods out of the VM class to clean up code
- if debugging is on, die earlier if attempting to allocate inside GC
- callback heap entries are now code_blocks
- replace block_granularity with data_alignment 
							
						 
						
							2009-12-02 00:48:41 -06:00