2a409c79e0 
								
							
								 
							
						 
						
							
							
								
								vm: Fix unused variable warnings on Windows.  
							
							
							
						 
						
							2018-07-13 00:48:58 -05:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								f147bd4404 
								
							
								 
							
						 
						
							
							
								
								VM: uppercasing gc_op  
							
							
							
						 
						
							2016-10-19 09:09:32 +02:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								d71bd83f57 
								
							
								 
							
						 
						
							
							
								
								VM: removing the 1-arg overload of iterate() (better to be explicit about the fixup)  
							
							
							
						 
						
							2016-09-22 17:03:38 +02:00  
				
					
						
							
							
								 
						
							
							
								0d57734dab 
								
							
								 
							
						 
						
							
							
								
								vm: replace block comments /**/ with line comments //  
							
							
							
						 
						
							2016-09-09 05:47:52 +02:00  
				
					
						
							
							
								 
						
							
							
								58ad5fb4ce 
								
							
								 
							
						 
						
							
							
								
								VM: all the started_<blah>() replaced with reset_timer()  
							
							
							
						 
						
							2016-04-24 15:21:17 +02:00  
				
					
						
							
							
								 
						
							
							
								da3de080ee 
								
							
								 
							
						 
						
							
							
								
								VM: callback_entry_point() and update() can be removed  
							
							
							
						 
						
							2015-09-02 21:54:39 +02:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								49a406d880 
								
							
								 
							
						 
						
							
							
								
								VM: using compute_external_address everywhere instead of store_external_address  
							
							
							
						 
						
							2015-08-04 16:02:09 +02:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								18ab09e493 
								
							
								 
							
						 
						
							
							
								
								VM: object_compaction_updater -> lambda func  
							
							
							
						 
						
							2015-08-04 16:02:08 +02:00  
				
					
						
							
							
								 
						
							
							
								a5a7232b8f 
								
							
								 
							
						 
						
							
							
								
								VM: use a function update_relocation to replace the  
							
							... 
							
							
							
							code_block_compaction_relocation_visitor struct 
							
						 
						
							2015-08-04 16:02:08 +02:00  
				
					
						
							
							
								 
						
							
							
								4bc0720e51 
								
							
								 
							
						 
						
							
							
								
								VM: more changes of structs to lambda functions  
							
							
							
						 
						
							2015-07-06 22:49:38 +02:00  
				
					
						
							
							
								 
						
							
							
								9d289e35f4 
								
							
								 
							
						 
						
							
							
								
								VM: macro FACTOR_FOR_EACH used in more places to drive iteration  
							
							
							
						 
						
							2015-06-05 02:14:49 +02:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								615420fe61 
								
							
								 
							
						 
						
							
							
								
								VM: calls to visit_code_roots() replaced with visit_uninitialized_code_blocks()  
							
							
							
						 
						
							2015-01-15 09:29:13 +00:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								7b1b1eef23 
								
							
								 
							
						 
						
							
							
								
								VM: Remove unnecessary _ suffix in constructors  
							
							
							
						 
						
							2013-05-12 23:20:43 -04:00  
				
					
						
							
							
								 
						
							
							
								26ff071205 
								
							
								 
							
						 
						
							
							
								
								VM: Remove unnecessary explicit keywords  
							
							
							
						 
						
							2013-05-12 21:48:38 -04:00  
				
					
						
							
							
								 
						
							
							
								2bed6f6a25 
								
							
								 
							
						 
						
							
							
								
								VM: Refactor compaction.cpp to Factor style  
							
							
							
						 
						
							2013-05-12 13:24:42 -04:00  
				
					
						
							
							
								 
						
							
							
								106ecdb6dd 
								
							
								 
							
						 
						
							
							
								
								compaction: Less than is the new greater than.  Fixes   #558 .  
							
							
							
						 
						
							2012-07-25 17:57:50 -07:00  
				
					
						
							
							
								 
						
							
							
								e9ec95ad4f 
								
							
								 
							
						 
						
							
							
								
								compaction: Inifnite headaches--cured! Two compact functions, one was not like the other.  
							
							
							
						 
						
							2012-05-27 18:26:03 -07:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								d12b6e375b 
								
							
								 
							
						 
						
							
							
								
								vm: iterate_callstack_reversed in slot_visitor  
							
							
							
						 
						
							2011-12-14 09:56:47 -08:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								e3e2788414 
								
							
								 
							
						 
						
							
							
								
								vm: walk code roots from sample callstacks  
							
							
							
						 
						
							2011-11-02 13:23:08 -07:00  
				
					
						
							
							
								 
						
							
							
								0f5e0eada5 
								
							
								 
							
						 
						
							
							
								
								vm: fix high_fragmentation_p assertion  
							
							
							
						 
						
							2011-09-05 23:30:28 -07:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								4405a66f99 
								
							
								 
							
						 
						
							
							
								
								vm: fix RT_HERE fixup on image load  
							
							
							
						 
						
							2010-06-11 21:54:47 -04:00  
				
					
						
							
							
								 
						
							
							
								806e54630a 
								
							
								 
							
						 
						
							
							
								
								GC maps for more compact inline GC checks  
							
							
							
						 
						
							2010-06-11 20:06:00 -04:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								7271900e6f 
								
							
								 
							
						 
						
							
							
								
								vm: code cleanup  
							
							
							
						 
						
							2009-12-26 15:24:21 +13:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								d49c86ba11 
								
							
								 
							
						 
						
							
							
								
								vm: Clean up more code duplication and rename a few methods  
							
							
							
						 
						
							2009-12-02 01:17:30 -06:00