Joe Groff
							
						 
						
							 
							
							
							
								
							
								943596575a 
								
							
								 
							
						 
						
							
							
								
								use radix literals  
							
							 
							
							
							
						 
						
							2011-11-23 19:03:40 -08:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								e0dc236725 
								
							
								 
							
						 
						
							
							
								
								cpu.*.bootstrap: clear faulting flag directly  
							
							 
							
							... 
							
							
							
							No reason to go through a safepoint in unwind-native-frames really. 
							
						 
						
							2011-11-12 13:02:57 -08:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								e24400679f 
								
							
								 
							
						 
						
							
							
								
								vm: more defense against multi-faulting  
							
							 
							
							... 
							
							
							
							* Clear faulting_p from a safepoint rather than inside general_error, because jumping into unwind-native-frames could blow up.
* Handle multiple faults from fatal_error by breakpointing. Is there anything else we can safely do at that point?
* Verify memory protection faults in the top half of the signal handlers because signal dispatch could fault. Treat memory faults during gc or fep as fatal errors.
* Add a function factor_vm::abort() that restores the default SIGABRT handler and ::abort()s. Use it from fatal_error() so we get useful context from gdb and so the user gets feedback from the system crash reporter that Factor blew up and didn't just disappear.
* In factorbug(), don't proceed with .s .r .c if it would be unsafe to do so.
* Don't pile on signals if we've already called fatal_error(). 
							
						 
						
							2011-11-12 13:02:57 -08:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								c736b04ada 
								
							
								 
							
						 
						
							
							
								
								cpu.x86.*.bootstrap: save flags in signal-handlers  
							
							 
							
							
							
						 
						
							2011-11-04 11:56:01 -07:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								d9293337bb 
								
							
								 
							
						 
						
							
							
								
								cpu.x86.64.bootstrap: save all the regs on signal  
							
							 
							
							... 
							
							
							
							Appears to fix another sporadic crash from mason on x86-64. There's no reason to cut corners here, really. 
							
						 
						
							2011-11-04 10:01:56 -07:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								6bb46a3f1e 
								
							
								 
							
						 
						
							
							
								
								vm: always generate safepoints in jit  
							
							 
							
							... 
							
							
							
							Even if there's no stack frame we still need to safepoint before leaving the function. Fixes  #332 . 
							
						 
						
							2011-11-03 11:57:43 -07:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								2d5360778f 
								
							
								 
							
						 
						
							
							
								
								cleanups from code review  
							
							 
							
							
							
						 
						
							2011-10-27 21:18:23 -07:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								c70a1004f8 
								
							
								 
							
						 
						
							
							
								
								cpu.x86.64: also must save ctx-reg  
							
							 
							
							
							
						 
						
							2011-10-27 21:18:21 -07:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								ff2d480d98 
								
							
								 
							
						 
						
							
							
								
								cpu.x86.32: update for resumable signal handlers  
							
							 
							
							
							
						 
						
							2011-10-27 21:18:19 -07:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								d6eae2f42d 
								
							
								 
							
						 
						
							
							
								
								vm: suppress signal-handler stack frame generation  
							
							 
							
							... 
							
							
							
							This is a hack; see #295  
							
						 
						
							2011-10-27 21:18:19 -07:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								402e1155a5 
								
							
								 
							
						 
						
							
							
								
								vm: resumably handle signals from leaf procedures  
							
							 
							
							
							
						 
						
							2011-10-27 21:18:18 -07:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								1386212d23 
								
							
								 
							
						 
						
							
							
								
								vm: dispatch signal handlers through subprimitive  
							
							 
							
							... 
							
							
							
							We also need to save C ABI volatile registers before calling the signal handler in order to be able to reliably resume. Add signal-handler and leaf-signal-handler subprimitives to preserve volatile registers before invoking the signal handler C function. 
							
						 
						
							2011-10-27 21:18:18 -07:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								68518e741e 
								
							
								 
							
						 
						
							
							
								
								cpu.x86.(32,64).bootstrap: get rid of PUSH malarky  
							
							 
							
							... 
							
							
							
							In the function prologue, move the stack pointer once after the stack frame is set up instead of PUSHing the stack frame piece by piece. 
							
						 
						
							2011-10-27 21:14:50 -07:00  
						
					 
				
					
						
							
							
								 
								Joe Groff
							
						 
						
							 
							
							
							
								
							
								4be5eadb34 
								
							
								 
							
						 
						
							
							
								
								cpu.x86.bootstrap: add safepoint to jit-epilog  
							
							 
							
							
							
						 
						
							2011-10-27 21:14:45 -07:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								f8e475485a 
								
							
								 
							
						 
						
							
							
								
								Add RT_INLINE_CACHE_MISS relocation type to avoid frequent dlsym lookups when compiling PICs.  Fixes   #123  
							
							 
							
							
							
						 
						
							2011-10-03 00:26:21 -07:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								05f7419f2f 
								
							
								 
							
						 
						
							
							
								
								Rework non-optimizing compiler backend to use compiler.codegen.relocation  
							
							 
							
							
							
						 
						
							2011-10-03 00:26:21 -07:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								d2cf2d8f92 
								
							
								 
							
						 
						
							
							
								
								Rename get-fpu-state entry point to fpu-state, and fix stack-checker unit tests  
							
							 
							
							
							
						 
						
							2010-09-04 12:58:59 -07:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								cdc9538540 
								
							
								 
							
						 
						
							
							
								
								cpu.x86.64: fix bootstrap  
							
							 
							
							
							
						 
						
							2010-09-02 21:17:14 -07:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								1818bcb780 
								
							
								 
							
						 
						
							
							
								
								Fix three problems discovered by running math.floats.env tests in a loop:  
							
							 
							
							... 
							
							
							
							- Crash if allocating error triggers a GC from a signal/SEH handler
- Crash if GC runs with floating point traps enabled on Windows
- Floating point traps didn't prettyprint properly 
							
						 
						
							2010-09-02 22:57:14 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								451237a028 
								
							
								 
							
						 
						
							
							
								
								Fix start-context-and-delete sub-primitive (reported by Sascha Matzke)  
							
							 
							
							
							
						 
						
							2010-08-02 20:28:23 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								f2646fc92c 
								
							
								 
							
						 
						
							
							
								
								cpu.x86: save context before calling new_context() since it can trigger GC (bug reported by Sascha Matzke)  
							
							 
							
							
							
						 
						
							2010-07-30 01:07:53 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								a55c8ee671 
								
							
								 
							
						 
						
							
							
								
								FFI rewrite part 6: deconcatenatize  
							
							 
							
							
							
						 
						
							2010-07-02 15:44:12 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								70b8a74208 
								
							
								 
							
						 
						
							
							
								
								vm: have to be extra careful when messing with return addresses  
							
							 
							
							
							
						 
						
							2010-06-13 18:12:57 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								3f28c0e7f5 
								
							
								 
							
						 
						
							
							
								
								vm: context switching needs to scrub the return address  
							
							 
							
							
							
						 
						
							2010-06-12 19:54:31 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								1434a305c8 
								
							
								 
							
						 
						
							
							
								
								vm: add a new rc-absolute-1 relocation class to allow storing values in 8-bit operands, and optimized code sequences for inline caches using this  
							
							 
							
							
							
						 
						
							2010-04-12 14:22:41 -07:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								f828f9fdaa 
								
							
								 
							
						 
						
							
							
								
								Fiddle with register assignments in non-optimizing x86-32 backend  
							
							 
							
							
							
						 
						
							2010-04-10 00:10:05 -07:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								430a05dcea 
								
							
								 
							
						 
						
							
							
								
								Store stack bounds in TIB on win64 to make C++ exceptions work  
							
							 
							
							
							
						 
						
							2010-04-05 19:07:10 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								c0af678c5b 
								
							
								 
							
						 
						
							
							
								
								cpu.x86.assembler: add support for absolute addressing on x86-64; [RIP+] now behaves like [] did, and [] now does absolute addressing just like in 32-bit mode  
							
							 
							
							
							
						 
						
							2010-04-04 19:42:57 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								b16d91576c 
								
							
								 
							
						 
						
							
							
								
								cpu.x86.64: fix typo that caused bootstrap crash  
							
							 
							
							
							
						 
						
							2010-04-03 21:11:04 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								74640b7f71 
								
							
								 
							
						 
						
							
							
								
								Get green threads working on Windows  
							
							 
							
							... 
							
							
							
							- store stack base and limit in TIB
- set up a frame-based structured exception handler in each context's callstack
- boot.x86.32.image has now been replaced by boot.winnt-x86.32.image and boot.unix-x86.32.image 
							
						 
						
							2010-04-03 20:24:33 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								0faa3bcf4a 
								
							
								 
							
						 
						
							
							
								
								vm: pre-allocate context alien  
							
							 
							
							
							
						 
						
							2010-04-02 00:02:21 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								ef53e6ecd5 
								
							
								 
							
						 
						
							
							
								
								cpu.x86.64: eliminate useless instruction from primitive call sequence for a marginal to non-existent gain  
							
							 
							
							
							
						 
						
							2010-03-31 19:32:36 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								8f0487f1c3 
								
							
								 
							
						 
						
							
							
								
								cpu.x86: remove useless crap from c-to-factor sub-primitive  
							
							 
							
							
							
						 
						
							2010-03-31 15:19:00 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								fb2ecab614 
								
							
								 
							
						 
						
							
							
								
								threads: delete old contexts immediately instead of handing them off to a 'context recycler' thread  
							
							 
							
							
							
						 
						
							2010-03-30 21:47:48 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								b6dfdcb909 
								
							
								 
							
						 
						
							
							
								
								set-context and start-context primitives can now pass parameters around  
							
							 
							
							
							
						 
						
							2010-03-27 08:13:57 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								1717b8d0f7 
								
							
								 
							
						 
						
							
							
								
								Implement start-context and set-context primitives  
							
							 
							
							
							
						 
						
							2010-03-27 02:56:11 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								560c119cd2 
								
							
								 
							
						 
						
							
							
								
								vm: actually use context callstacks when running code  
							
							 
							
							
							
						 
						
							2010-03-26 22:44:43 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								d5a25f99bf 
								
							
								 
							
						 
						
							
							
								
								cpu.x86.64: inline cache miss blocks have a prolog generated in the middle of a procedure; undo a recent change to non-optimizing backend to fix random crashes  
							
							 
							
							
							
						 
						
							2010-02-06 18:45:27 +13:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								22fbe01c17 
								
							
								 
							
						 
						
							
							
								
								Compiled code size optimizations for x86-64 resulting in development image size reduction of about 350kb  
							
							 
							
							... 
							
							
							
							- RIP-relative LEA is now used to load program counter in prolog and tail calls; saves 3 bytes of code and 4 bytes of relocation information over an immediate MOV
- VM field accesses no longer involve a redundant addition 
							
						 
						
							2010-02-03 23:11:35 +13:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								5606825e8b 
								
							
								 
							
						 
						
							
							
								
								vm: remove primitive table, non-optimizing compiler now looks up primitives with dlsym()  
							
							 
							
							
							
						 
						
							2010-01-19 20:00:33 +13: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
							
						 
						
							 
							
							
							
								
							
								85a45d63d9 
								
							
								 
							
						 
						
							
							
								
								unwind-stack-frames didn't load VM pointer into the VM register on PowerPC and x86-64, and so if C code had clobbered this register it would crash  
							
							 
							
							
							
						 
						
							2010-01-12 16:31:10 +13:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								8d34a0f3c1 
								
							
								 
							
						 
						
							
							
								
								Store VM object in a register on x86-64  
							
							 
							
							
							
						 
						
							2010-01-11 01:20:32 +13:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								5b58117be1 
								
							
								 
							
						 
						
							
							
								
								cpu.x86: c-to-factor needs to deal with the fact that vm-reg might have been clobbered  
							
							 
							
							
							
						 
						
							2010-01-09 19:09:48 +13:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								1f88a925b4 
								
							
								 
							
						 
						
							
							
								
								Fix set-callstack primitive on Windows  
							
							 
							
							
							
						 
						
							2010-01-07 19:31:15 +13:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								47c6197799 
								
							
								 
							
						 
						
							
							
								
								Update x86-32 for assembly entry point changes  
							
							 
							
							
							
						 
						
							2010-01-06 17:55:20 +13:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								36d2ac8921 
								
							
								 
							
						 
						
							
							
								
								vm: move c_to_factor, lazy_jit_compile_impl, throw_impl, set_callstack assembly routines into non-optimizing compiler for x86-64  
							
							 
							
							
							
						 
						
							2010-01-06 15:47:36 +13:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								ba5b90e063 
								
							
								 
							
						 
						
							
							
								
								Change how non-volatile register preservation is done in alien callbacks, with the aim of fixing callbacks on PowerPC, and to eventually eliminate assembly code from VM  
							
							 
							
							... 
							
							
							
							- Simplify calculation of offset in relocation table
- Open-code %alien-callback
- Remove magic_frame hack from context objects
- Move magical return instruction from optimizing compiler backend into callback entry stub 
							
						 
						
							2010-01-03 01:11:51 +13:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								a77f48fe6b 
								
							
								 
							
						 
						
							
							
								
								Updating x86-64 port for global register variable removal  
							
							 
							
							
							
						 
						
							2009-12-27 01:17:42 +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