Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								76be7b54ed 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.*: removed start and end from live-interval-state  
							
							 
							
							... 
							
							
							
							They weren't needed because start>> was always equal to ranges min and
end>> ranges max 
							
						 
						
							2016-04-01 19:16:35 +02:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								fb45bc278f 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.live-intervals: the reg-class slot can be  
							
							 
							
							... 
							
							
							
							removed
it's always the same as vreg>> rep-of reg-class-of so no need to store
that data twice 
							
						 
						
							2015-09-22 08:51:04 +02:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								68c6654763 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.*: move words for splitting and intersecting ranges to the compiler.cfg.linear-scan.ranges vocab  
							
							 
							
							
							
						 
						
							2015-09-22 08:51:04 +02:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								8c8605d11a 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.*: more tests and docs for allocation and state  
							
							 
							
							
							
						 
						
							2015-06-16 18:28:32 -07:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								78fe8bf1dc 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.*: dont use a hashtable here, it fixes register  
							
							 
							
							... 
							
							
							
							allocation so it's always in the same order as machine-registers 
							
						 
						
							2015-06-16 18:28:32 -07:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								c0645ecafe 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.*: fix help-lint errors  
							
							 
							
							
							
						 
						
							2015-06-14 16:44:37 +02:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								418438ab13 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.*: change compute-live-intervals so that it  
							
							 
							
							... 
							
							
							
							returns only one sequence, it makes some words a little simpler 
							
						 
						
							2015-06-14 16:44:37 +02:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								167d1598b3 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.allocation.*: lots more docs and some word simplifications  
							
							 
							
							
							
						 
						
							2015-04-29 09:31:58 -07:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								d6c1c075ff 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.allocation: using slurp-heap  
							
							 
							
							
							
						 
						
							2014-12-15 20:48:34 +01:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								35d00da765 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.allocation.*: maybe a fix for  #1227  
							
							 
							
							... 
							
							
							
							The register allocator pops from the unhandled-intervals and
unhandled-sync-points heaps. If two live intervals share the same
start slot, then they can be popped in either order leading to
differently generated code. So instead use one
heap (unhandled-min-heap) and both the start and end slot as the heap
key to resolve tie-breakers 
							
						 
						
							2014-12-15 20:44:53 +01:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								c810677b47 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.*: refactoring to simplify init-allocator and get rid of init-unhandled  
							
							 
							
							
							
						 
						
							2014-12-15 20:44:06 +01:00  
						
					 
				
					
						
							
							
								 
								Björn Lindqvist
							
						 
						
							 
							
							
							
								
							
								fab478482e 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.allocation: refactoring to simplify the (allocate-registers) recursion  
							
							 
							
							
							
						 
						
							2014-12-15 20:44:06 +01:00  
						
					 
				
					
						
							
							
								 
								John Benediktsson
							
						 
						
							 
							
							
							
								
							
								c65877104e 
								
							
								 
							
						 
						
							
							
								
								compiler: cleanup usings.  
							
							 
							
							
							
						 
						
							2014-12-13 16:10:21 -08:00  
						
					 
				
					
						
							
							
								 
								Doug Coleman
							
						 
						
							 
							
							
							
								
							
								5f377c0849 
								
							
								 
							
						 
						
							
							
								
								compiler: Rename value-info, live-interval  
							
							 
							
							
							
						 
						
							2013-03-23 22:56:47 -07:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								94f6ac98de 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix bad interaction between inactive intervals and sync points  
							
							 
							
							
							
						 
						
							2010-07-29 21:06:48 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								adc9db3ea8 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.allocation: fix wrong order  
							
							 
							
							
							
						 
						
							2010-07-19 06:46:50 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								b776a92546 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix bad interaction between split position calculation and register-clobbering instructions  
							
							 
							
							
							
						 
						
							2010-07-18 17:38:52 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								e27adb2830 
								
							
								 
							
						 
						
							
							
								
								compiler: re-architect low-level optimizer to allow more than one output value per instruction  
							
							 
							
							
							
						 
						
							2010-07-13 07:40:14 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								5b48cd2a63 
								
							
								 
							
						 
						
							
							
								
								FFI rewrite part 5: return value boxing and callback parameter boxing now uses vregs; simplify return value unboxing  
							
							 
							
							
							
						 
						
							2010-05-16 03:43:23 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								eb802208d1 
								
							
								 
							
						 
						
							
							
								
								FFI rewrite part 4: parameter and return value unboxing redesign  
							
							 
							
							
							
						 
						
							2010-05-11 19:11:44 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								982e704626 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: clean up clobber-insn handling  
							
							 
							
							
							
						 
						
							2010-05-07 18:22:35 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								43fc230c69 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: cleanups  
							
							 
							
							
							
						 
						
							2010-05-03 17:34:18 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								95ff5ffe51 
								
							
								 
							
						 
						
							
							
								
								New GC checks work in progress  
							
							 
							
							
							
						 
						
							2010-05-03 17:34:16 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								51b13ce373 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: don't insert a _reload if the register is going to be overwritten anyway  
							
							 
							
							
							
						 
						
							2010-05-03 17:34:14 -04:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								299b5b0f6c 
								
							
								 
							
						 
						
							
							
								
								filter-here -> filter!  
							
							 
							
							
							
						 
						
							2009-10-28 00:44:05 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								705b4ab5c3 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix partial sync point logic in case where dst == src, and clean up spilling code  
							
							 
							
							
							
						 
						
							2009-09-27 19:28:20 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								0db01f6d5f 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan now supports partial sync-points where all registers are spilled; taking advantage of this, there are new trigonometric intrinsics which yield a 2x performance boost on benchmark.struct-arrays and a 25% boost on benchmark.partial-sums  
							
							 
							
							
							
						 
						
							2009-08-30 04:52:01 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								370f4c081d 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: convert code into two-operand form before SSA destruction; SSA destruction now operates on a relaxed SSA form where multiple defs of the same vreg are allowed, but only within a single basic block. This makes linear scan's coalescing redundant, allowing it to be removed completely  
							
							 
							
							
							
						 
						
							2009-08-05 18:57:46 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								791fbe4003 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix case where a register can be made available for only a part of a live interval's lifetime, but there are no more usages after the split location. This case never came up until global stack analysis, at which point it started to be exercised on x86-32  
							
							 
							
							
							
						 
						
							2009-07-30 02:13:30 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								5a64290386 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: more code cleanups, and working on split-to-fit algorithm  
							
							 
							
							
							
						 
						
							2009-07-09 00:20:03 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								4507bdcbc0 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: code cleanups  
							
							 
							
							
							
						 
						
							2009-07-08 23:28:28 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								0bcf4ce535 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: Re-implement spilling, add some additional runtime assertions, simplify assignment pass since it doesn't have to track spill slots anymore; just assume a live value that's not in active or inactive is spilled  
							
							 
							
							
							
						 
						
							2009-07-07 03:28:55 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								a19f22ec82 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: debugging spilling and resolve pass  
							
							 
							
							
							
						 
						
							2009-07-01 17:41:07 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								578b0126fc 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: compute-free-pos was broken in the case where more than one inactive interval had the same physical register assigned  
							
							 
							
							
							
						 
						
							2009-06-30 16:07:58 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								c53aca6016 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix coalescing to take lifetime holes into account  
							
							 
							
							
							
						 
						
							2009-06-23 21:32:51 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								5c912504d7 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: untangle add-active/delete-active/add-handled calls in spilling, replace 'sort-values last' with 'alist-max' in compiler.utilities  
							
							 
							
							
							
						 
						
							2009-06-19 18:28:30 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								2f15ac3c8f 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: Fix a couple of bugs  
							
							 
							
							
							
						 
						
							2009-06-19 03:42:42 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								1f5f8393c3 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: Further progress on inactive interval handling  
							
							 
							
							
							
						 
						
							2009-06-17 15:27:20 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								d0f6a7d048 
								
							
								 
							
						 
						
							
							
								
								Split up compiler.cfg.linear-scan.allocation into a number of sub-vocabularies; start work on compiler.cfg.linear-scan.resolve; start work on inactive interval splitting  
							
							 
							
							
							
						 
						
							2009-06-11 17:55:14 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								70b75b8dea 
								
							
								 
							
						 
						
							
							
								
								Linear scan: implement live range intersection  
							
							 
							
							
							
						 
						
							2009-06-06 01:04:12 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								04c72d0a72 
								
							
								 
							
						 
						
							
							
								
								Linear scan: correctly compute live spill slots  
							
							 
							
							
							
						 
						
							2009-06-05 18:06:47 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								81b2a39070 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: re-do interval splitting to operate on live ranges; add inactive set processing  
							
							 
							
							
							
						 
						
							2009-06-04 18:53:02 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								37e278ed02 
								
							
								 
							
						 
						
							
							
								
								Use [ ] [ ] map-reduce instead of unclip [ ] reduce  
							
							 
							
							
							
						 
						
							2009-04-06 17:50:54 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								669548e62e 
								
							
								 
							
						 
						
							
							
								
								Clean up some usages of tuck, and add Joe's curried cleave/spread/apply combinators to kernel vocabulary  
							
							 
							
							
							
						 
						
							2009-02-02 13:43:54 -06:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								1af3b8ed65 
								
							
								 
							
						 
						
							
							
								
								If a register is spilled and the reload location is also a copy, we chicken out and don't coalesce. This is suboptimal but it's not clear to me how to implement it cleanly, and SSA graph coloring will solve this problem eventually anyway  
							
							 
							
							
							
						 
						
							2008-11-04 00:32:56 -06:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								8df1aba71d 
								
							
								 
							
						 
						
							
							
								
								Coalescing  
							
							 
							
							
							
						 
						
							2008-11-02 01:49:57 -06:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								14d8696f40 
								
							
								 
							
						 
						
							
							
								
								Oops, don't mix register classes in active set  
							
							 
							
							
							
						 
						
							2008-10-19 03:34:42 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								c0d89b061e 
								
							
								 
							
						 
						
							
							
								
								Fixing register allocator prspilling  
							
							 
							
							
							
						 
						
							2008-10-19 01:10:21 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								cf46a832e7 
								
							
								 
							
						 
						
							
							
								
								Debugging register allocator and inline allocation  
							
							 
							
							
							
						 
						
							2008-10-08 23:42:53 -05:00  
						
					 
				
					
						
							
							
								 
								Slava Pestov
							
						 
						
							 
							
							
							
								
							
								7b6d9c4c4f 
								
							
								 
							
						 
						
							
							
								
								Debugging new codegen  
							
							 
							
							
							
						 
						
							2008-10-07 20:00:38 -05:00