39c888230a 
								
							
								 
							
						 
						
							
							
								
								VM: new function set_safepoint_guard to replace the functions (un)guard_safepoint  
							
							
							
						 
						
							2015-08-24 07:23:40 -07:00  
				
					
						
							
							
								 
						
							
							
								56ddb59b00 
								
							
								 
							
						 
						
							
							
								
								VM: new function set_memory_locked(true/false)  
							
							... 
							
							
							
							it wraps the mprotect/VirtualProtect platform differences and makes it
so you can unify some windows/unix code path forks 
							
						 
						
							2015-08-24 07:23:40 -07:00  
				
					
						
							
							
								 
						
							
							
								2b1c6ca11a 
								
							
								 
							
						 
						
							
							
								
								VM: move the frame_predecessor() method to the code_heap class  
							
							
							
						 
						
							2015-08-14 20:19:54 -07:00  
				
					
						
							
							
								 
						
							
							
								b44db91f65 
								
							
								 
							
						 
						
							
							
								
								VM: init_code_heap is trivial and only used once, so let's remove it  
							
							
							
						 
						
							2015-08-04 16:02:08 +02:00  
				
					
						
							
							
								 
						
							
							
								801fdebde2 
								
							
								 
							
						 
						
							
							
								
								vm: bring back FACTOR_ASSERT.  
							
							
							
						 
						
							2015-07-06 15:18:09 -07:00  
				
					
						
							
							
								 
						
							
							
								4dfac78fc1 
								
							
								 
							
						 
						
							
							
								
								VM: move 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  
				
					
						
							
							
								 
						
							
							
								ee5fd49b9e 
								
							
								 
							
						 
						
							
							
								
								VM: simplified fixup_gc_workhorse::fixup_data by mering lots of functions only used once  
							
							
							
						 
						
							2015-01-15 09:29:14 +00:00  
				
					
						
							
							
								 
						
							
							
								693e8ad33a 
								
							
								 
							
						 
						
							
							
								
								VM: the clear_mark_bits methods are only called once -- make the calls inline instead  
							
							
							
						 
						
							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  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								4a96e6163b 
								
							
								 
							
						 
						
							
							
								
								VM: new primitive (callback-room) for querying the VM about memory usage  
							
							... 
							
							
							
							The word works exactly like (code-room) except it looks at the memory
usage in the callback heap instead of the code heap. 
							
						 
						
							2014-09-29 07:30:21 -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  
				
					
						
							
							
								 
						
							
							
								88d7c10d03 
								
							
								 
							
						 
						
							
							
								
								VM: Replace u8-64, s8-64, cell, fixnum with stdint.h equivalents  
							
							
							
						 
						
							2013-05-13 00:28:25 -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  
				
					
						
							
							
								 
						
							
							
								7f56458820 
								
							
								 
							
						 
						
							
							
								
								VM: Refactor code_heap to Factor style  
							
							
							
						 
						
							2013-05-12 13:24:42 -04:00  
				
					
						
							
							
								 
						
							
							
								ca2ea548be 
								
							
								 
							
						 
						
							
							
								
								VM: Remove exec bit from VM source files  
							
							
							
						 
						
							2013-05-11 17:04:23 -04:00  
				
					
						
							
							
								 
						
							
							
								2b33dde782 
								
							
								 
							
						 
						
							
							
								
								vm: Add more Allocates memory comments.  
							
							
							
						 
						
							2013-03-25 17:52:30 -07:00  
				
					
						
							
							
								 
						
							
							
								000efd9bbb 
								
							
								 
							
						 
						
							
							
								
								vm: Add messages about things that can allocate. Fix a gc bug in the primitive for quotation-code.  
							
							
							
						 
						
							2012-08-15 21:30:55 -07:00  
				
					
						
							
							
								 
						
							
							
								842eb27785 
								
							
								 
							
						 
						
							
							
								
								vm: cleanups  
							
							
							
						 
						
							2011-12-14 09:56:50 -08:00  
				
					
						
							
							
								 
						
							
							
								2f20ee6fb0 
								
							
								 
							
						 
						
							
							
								
								vm: fix types after rebase  
							
							
							
						 
						
							2011-12-14 09:56:49 -08: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  
				
					
						
							
							
								 
						
							
							
								3868895b56 
								
							
								 
							
						 
						
							
							
								
								vm: make all_blocks a set of cells  
							
							... 
							
							
							
							gcc was doing bad things assuming the pointer given to upper_bound was aligned 
							
						 
						
							2011-12-14 09:56:46 -08:00  
				
					
						
							
							
								 
						
							
							
								36d1e0a78c 
								
							
								 
							
						 
						
							
							
								
								vm: verifier shouldn't check for leftovers  
							
							... 
							
							
							
							It doesn't work after things have been freed 
							
						 
						
							2011-12-14 09:56:45 -08:00  
				
					
						
							
							
								 
						
							
							
								e21f316583 
								
							
								 
							
						 
						
							
							
								
								vm: store stack frame size in code blocks  
							
							... 
							
							
							
							Change modify-code-heap primitive so it takes a sixth element in each array for the frame size. 
							
						 
						
							2011-12-14 09:56:45 -08:00  
				
					
						
							
							
								 
						
							
							
								bd7e6b33f8 
								
							
								 
							
						 
						
							
							
								
								vm: erase code blocks from all_blocks during sweep  
							
							... 
							
							
							
							Fixes  #437  
						
							2011-12-13 12:28:09 -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  
				
					
						
							
							
								 
						
							
							
								4bbb2f5b72 
								
							
								 
							
						 
						
							
							
								
								vm: only verify all_blocks set if it's invalid  
							
							... 
							
							
							
							Verifying on every sample is way too slow to be practical when debugging bootstrap. 
							
						 
						
							2011-12-12 19:04:56 -08:00  
				
					
						
							
							
								 
						
							
							
								15c4b7aa57 
								
							
								 
							
						 
						
							
							
								
								vm: verify code heap's all_blocks set when DEBUG  
							
							
							
						 
						
							2011-11-23 11:11:27 -08:00  
				
					
						
							
							
								 
						
							
							
								0a1a252cdb 
								
							
								 
							
						 
						
							
							
								
								vm: replace assert with FACTOR_ASSERT  
							
							... 
							
							
							
							Factor is finally a real C++ project and has a custom assert macro. Assertion failures were still getting caught as exceptions and causing failure loops. Write our own macro that calls factor::abort on failure. 
							
						 
						
							2011-11-23 11:11:26 -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  
				
					
						
							
							
								 
						
							
							
								c31530caec 
								
							
								 
							
						 
						
							
							
								
								vm: strip out call-counting profiler  
							
							... 
							
							
							
							This makes the separate "code" and "entry_point" fields in word and quotation redundant, so also remove them to reclaim an additional cell per word and quotation object, which should help with #318 . 
							
						 
						
							2011-11-10 16:01:07 -08:00  
				
					
						
							
							
								 
						
							
							
								2d5360778f 
								
							
								 
							
						 
						
							
							
								
								cleanups from code review  
							
							
							
						 
						
							2011-10-27 21:18:23 -07:00  
				
					
						
							
							
								 
						
							
							
								a6b80f3efa 
								
							
								 
							
						 
						
							
							
								
								vm: code_block_for_address method -> code_heap  
							
							
							
						 
						
							2011-10-27 21:18:20 -07:00  
				
					
						
							
							
								 
						
							
							
								dca0fd3487 
								
							
								 
							
						 
						
							
							
								
								vm: Revert extra canary page before callstack  
							
							... 
							
							
							
							This reverts commit 7d5c8d6990385b94569116a23163d7e75ae21f49. We pretty much can't avoid unwinding frames without some more drastic redesign. 
							
						 
						
							2011-10-27 21:14:50 -07:00  
				
					
						
							
							
								 
						
							
							
								c3f007ce0a 
								
							
								 
							
						 
						
							
							
								
								vm: allocate an extra canary page before callstack  
							
							... 
							
							
							
							This will let us safely unguard the callstack overflow guard page as a grace page so the callstack overflow handler can do its business without discarding frames. 
							
						 
						
							2011-10-27 21:14:49 -07:00  
				
					
						
							
							
								 
						
							
							
								4c8dec1e98 
								
							
								 
							
						 
						
							
							
								
								vm: take a page from code_heap for safepoints  
							
							
							
						 
						
							2011-10-27 21:14:44 -07:00  
				
					
						
							
							
								 
						
							
							
								f791c8c5d2 
								
							
								 
							
						 
						
							
							
								
								Squashed commit of the following:  
							
							... 
							
							
							
							commit 197dbe9a6733775ac0ea19b3da4bd4dc3c85418c
Author: Doug Coleman <doug.coleman@gmail.com>
Date:   Sat Sep 18 19:01:38 2010 -0500
    Fix bootstrap, move privileges to windows.privileges
commit 521c622f8afb15bf42d263c738cb990560dc29cb
Author: Doug Coleman <doug.coleman@gmail.com>
Date:   Sat Sep 18 18:26:30 2010 -0500
    Hopefully fix bootstrap
commit eb3f22928b59758b9505430034044b5b94705da2
Author: Doug Coleman <doug.coleman@gmail.com>
Date:   Sat Sep 18 18:19:05 2010 -0500
    Remove wince from factor codebase
commit 619d6c99415f46208a7ede6a04b0ccda46b15360
Author: Doug Coleman <doug.coleman@gmail.com>
Date:   Sat Sep 18 16:07:46 2010 -0500
    Remove Windows CE from vm/ 
							
						 
						
							2010-09-19 19:13:25 -05:00  
				
					
						
							
							
								 
						
							
							
								b23aac1beb 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: open-code parameter boxing and unboxing for certain C types  
							
							
							
						 
						
							2010-07-19 10:25:13 -04:00  
				
					
						
							
							
								 
						
							
							
								e5e51c40a1 
								
							
								 
							
						 
						
							
							
								
								vm: implement frame-based SEH for 64-bit Windows  
							
							
							
						 
						
							2010-04-08 10:32:14 -07:00  
				
					
						
							
							
								 
						
							
							
								26cae00eeb 
								
							
								 
							
						 
						
							
							
								
								Add code heap introspection primitive to VM, and make a code-blocks word in tools.memory that wraps a useful interface around this. Add a lookup-return-address word and use this in tools.disassembler.utils  
							
							
							
						 
						
							2010-02-03 23:11:32 +13:00  
				
					
						
							
							
								 
						
							
							
								3259ef4bec 
								
							
								 
							
						 
						
							
							
								
								vm: modify-code-heap primitive now takes a pair of parameters, update-existing? and reset-pics?. If no generic words were changed, PICs do not need to be reset. If no existing words were redefined, the code heap doesn't have to be traced at all. Speeds up compilation of PEGs since those create lots of compilation units  
							
							
							
						 
						
							2010-02-03 23:11:28 +13: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  
				
					
						
							
							
								 
						
							
							
								63edd20a55 
								
							
								 
							
						 
						
							
							
								
								vm: eliminating register variables work in progress. Works on x86-32 with non-optimizing compiler  
							
							
							
						 
						
							2009-12-19 10:59:56 +13:00  
				
					
						
							
							
								 
						
							
							
								1454e534fe 
								
							
								 
							
						 
						
							
							
								
								fix a couple of warnings on win64  
							
							
							
						 
						
							2009-12-13 20:00:02 -06:00  
				
					
						
							
							
								 
						
							
							
								066d2836ca 
								
							
								 
							
						 
						
							
							
								
								Get modify-code-heap working if stack traces are stripped (but then it won't update existing code blocks), and rename code_heap::code_heap_free() to code_heap::free()  
							
							
							
						 
						
							2009-12-02 05:27: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