85a2bfab6c 
								
							
								 
							
						 
						
							
							
								
								compiler: eliminate boilerplate by centralizing info in declarative INSN: syntax  
							
							
							
						 
						
							2009-09-02 06:22:37 -05:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								d0c393aa60 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: new system to track when results of analyses need to be recomputed (reverse post order, linear order, predecessors, dominance, loops). Passes can now call needs-predecessors, needs-dominance, needs-loops at the beginning, and cfg-changed, predecessors-changd at the end. Linearization order now takes loop nesting into account, and linear scan now uses linearization order instead of RPO.  
							
							
							
						 
						
							2009-08-08 20:02:56 -05:00  
				
					
						
							
							
								 
						
							
							
								4b7ba38aab 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: virtual registers are integers now, and representations are stored off to the side. Fix bug in representation selection that would manifest if a value was used as a float and a fixnum in different branches; cannot globally unbox float in this case  
							
							
							
						 
						
							2009-08-08 04:02:18 -05:00  
				
					
						
							
							
								 
						
							
							
								725280d424 
								
							
								 
							
						 
						
							
							
								
								Split off the notion of a register representation from a register class  
							
							
							
						 
						
							2009-08-07 17:44:50 -05:00  
				
					
						
							
							
								 
						
							
							
								74766d1ccd 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.assignment: modifies instructions in place instead of storing a registers assoc for further compile-time performance improvement  
							
							
							
						 
						
							2009-07-29 06:36:14 -05:00  
				
					
						
							
							
								 
						
							
							
								1532a6f2e3 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.assignment: more efficient data structures  
							
							
							
						 
						
							2009-07-29 06:12:33 -05:00  
				
					
						
							
							
								 
						
							
							
								d913d7331f 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: Minor optimization. Instructions can now only ever produce a single value; this eliminates 1array constructions and some iterations  
							
							
							
						 
						
							2009-07-28 12:29:07 -05:00  
				
					
						
							
							
								 
						
							
							
								857ef94acc 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: use compiler.cfg.parallel-copy in resolve pass  
							
							
							
						 
						
							2009-07-28 07:39:46 -05:00  
				
					
						
							
							
								 
						
							
							
								89db2e745d 
								
							
								 
							
						 
						
							
							
								
								Move liveness back to compiler.cfg.liveness, fix a corner-case where it didn't work on some forms of non-SSA code  
							
							
							
						 
						
							2009-07-22 06:07:28 -05:00  
				
					
						
							
							
								 
						
							
							
								21a012e3d7 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: Major restructuring -- do not compute liveness before local optimization, and instead change local optimizations to be more permissive of undefined values. Now, liveness is only computed once, after phi elimination and before register allocation. This means liveness analysis does not need to take phi nodes into account and can now use the new compiler.cfg.dataflow-analysis framework  
							
							
							
						 
						
							2009-07-22 03:08:28 -05:00  
				
					
						
							
							
								 
						
							
							
								ea69566ddd 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: algorithmic optimizations  
							
							
							
						 
						
							2009-07-18 00:14:39 -05:00  
				
					
						
							
							
								 
						
							
							
								ae67de6f90 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: fix fencepost error in spill insertion  
							
							
							
						 
						
							2009-07-10 03:58:51 -05:00  
				
					
						
							
							
								 
						
							
							
								d02854b04e 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: two live intervals which are coalesced will use the same spill slot  
							
							
							
						 
						
							2009-07-09 23:12:49 -05:00  
				
					
						
							
							
								 
						
							
							
								c20e6c290f 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: split off parallel mapping code from resolve pass, use it in assignment pass to resolve parallel copies  
							
							
							
						 
						
							2009-07-08 23:07:06 -05:00  
				
					
						
							
							
								 
						
							
							
								e2044602aa 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: debugging spilling, add more assertions  
							
							
							
						 
						
							2009-07-07 13:01:27 -05:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								4402d8652c 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: minor fixes  
							
							
							
						 
						
							2009-07-05 22:51:53 -05:00  
				
					
						
							
							
								 
						
							
							
								f14a61fac2 
								
							
								 
							
						 
						
							
							
								
								Fix compiler.cfg.linear-scan.resolve test failure  
							
							
							
						 
						
							2009-07-04 16:30:16 -05:00  
				
					
						
							
							
								 
						
							
							
								c00af97fa1 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.resolve: More fixes  
							
							
							
						 
						
							2009-07-04 00:45:06 -05:00  
				
					
						
							
							
								 
						
							
							
								da13681bc8 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: redo resolve pass to fix a correctness issue  
							
							
							
						 
						
							2009-07-03 23:38:52 -05:00  
				
					
						
							
							
								 
						
							
							
								8d3a45dee2 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: clean up GC check generation to use spill-slot data type  
							
							
							
						 
						
							2009-07-03 23:11:23 -05:00  
				
					
						
							
							
								 
						
							
							
								af875ba836 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: bug fixes in GC check insertion and fixnum intrinsics  
							
							
							
						 
						
							2009-07-02 00:51:06 -05:00  
				
					
						
							
							
								 
						
							
							
								a19f22ec82 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: debugging spilling and resolve pass  
							
							
							
						 
						
							2009-07-01 17:41:07 -05:00  
				
					
						
							
							
								 
						
							
							
								612e4b99b0 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.assignment: insert-copy did the wrong thing if the second interval had been split. Fixes compilation of 'trilerp'  
							
							
							
						 
						
							2009-06-30 21:07:39 -05:00  
				
					
						
							
							
								 
						
							
							
								54876d0cba 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.assignment: get check-assignment? to work with coalescing  
							
							
							
						 
						
							2009-06-30 18:10:53 -05:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								5a78956956 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan: Working on resolve pass  
							
							
							
						 
						
							2009-06-21 00:20:01 -05:00  
				
					
						
							
							
								 
						
							
							
								c1839200dd 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.linear-scan.assignment: correctly compute live registers at GC check points  
							
							
							
						 
						
							2009-06-20 15:33:12 -05:00  
				
					
						
							
							
								 
						
							
							
								64f93e41a9 
								
							
								 
							
						 
						
							
							
								
								Various linear scan fixes  
							
							... 
							
							
							
							insert spill before reload to fix x86-32 regression
inactive splitting: if all inactive intervals' registers are in use, don't fail
fix stack analysis tests 
							
						 
						
							2009-06-13 17:35:40 -05:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								04c72d0a72 
								
							
								 
							
						 
						
							
							
								
								Linear scan: correctly compute live spill slots  
							
							
							
						 
						
							2009-06-05 18:06:47 -05:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								2d231f066a 
								
							
								 
							
						 
						
							
							
								
								GC checks now save and restore registers  
							
							
							
						 
						
							2009-06-02 18:23:47 -05:00  
				
					
						
							
							
								 
						
							
							
								32f17f3e14 
								
							
								 
							
						 
						
							
							
								
								Fix scoping issue in compiler.cfg.linear-scan.assignment  
							
							
							
						 
						
							2009-05-31 18:21:23 -05:00  
				
					
						
							
							
								 
						
							
							
								e04df76f60 
								
							
								 
							
						 
						
							
							
								
								Various codegen improvements:  
							
							... 
							
							
							
							- new-insn word to construct instructions
- cache RPO in the CFG
- re-organize low-level optimizer so that MR is built after register allocation
- register allocation now stores instruction numbers in the instructions themselves
- split defs-vregs into defs-vregs and temp-vregs 
							
						 
						
							2009-05-29 13:11:34 -05:00  
				
					
						
							
							
								 
						
							
							
								05f3f9dcb9 
								
							
								 
							
						 
						
							
							
								
								Fixing unit tests for stack effect inference changes  
							
							
							
						 
						
							2009-04-20 21:15:19 -05:00  
				
					
						
							
							
								 
						
							
							
								6b25e99470 
								
							
								 
							
						 
						
							
							
								
								Add summary for heaps more vocabs  
							
							
							
						 
						
							2009-02-16 21:05:13 -06:00  
				
					
						
							
							
								 
						
							
							
								d11a779fdd 
								
							
								 
							
						 
						
							
							
								
								RicE  
							
							
							
						 
						
							2008-11-02 03:58:32 -06:00  
				
					
						
							
							
								 
						
							
							
								f092622fac 
								
							
								 
							
						 
						
							
							
								
								CFG IR is now pure SSA  
							
							
							
						 
						
							2008-10-20 01:56:28 -05:00  
				
					
						
							
							
								 
						
							
							
								c0d89b061e 
								
							
								 
							
						 
						
							
							
								
								Fixing register allocator prspilling  
							
							
							
						 
						
							2008-10-19 01:10:21 -05:00  
				
					
						
							
							
								 
						
							
							
								7b6d9c4c4f 
								
							
								 
							
						 
						
							
							
								
								Debugging new codegen  
							
							
							
						 
						
							2008-10-07 20:00:38 -05:00  
				
					
						
							
							
								 
						
							
							
								f436fd0c0f 
								
							
								 
							
						 
						
							
							
								
								Merging in new codegen  
							
							
							
						 
						
							2008-10-07 16:16:50 -05:00