163fef12f9 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.*: detached the normalize-height and schedule-instructions passes  
							
							... 
							
							
							
							those stages cause uninitialized "holes" in the stacks which in turn
causes gc errors if stack underflows occur 
							
						 
						
							2015-01-22 12:17:20 -08:00  
				
					
						
							
							
								 
						
							
							
								068ddd6c7b 
								
							
								 
							
						 
						
							
							
								
								compiler: cleanup cfg passes to have stack effect ( cfg -- )  
							
							
							
						 
						
							2014-12-11 12:48:43 -08:00  
				
					
						
							
							
								 
						
							
							
								c85175c10c 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.*: new utility word apply-passes to improve the looks of long cleave's where each quotation only contains one word  
							
							
							
						 
						
							2014-12-11 14:30:47 +01:00  
				
					
						
							
							
								 
						
							
							
								8744d908b6 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.*: fix stack effect of compiler passes in optimize-cfg  
							
							... 
							
							
							
							since they all modify the cfg in place, it is better if their stack
effect is ( cfg -- ) instead of ( cfg -- cfg' ) 
							
						 
						
							2014-12-11 14:30:45 +01:00  
				
					
						
							
							
								 
						
							
							
								c677c35de4 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: fix major facepalm with write barrier elimination  
							
							
							
						 
						
							2010-09-05 21:39:45 -07:00  
				
					
						
							
							
								 
						
							
							
								277705345f 
								
							
								 
							
						 
						
							
							
								
								Merge branch 'master' of git://factorcode.org/git/factor into s3  
							
							... 
							
							
							
							Conflicts:
	basis/compiler/cfg/finalization/finalization.factor 
							
						 
						
							2010-05-03 17:29:03 -05:00  
				
					
						
							
							
								 
						
							
							
								4352902bb6 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.empty-blocks: remove unused pass  
							
							
							
						 
						
							2010-05-03 18:23:54 -04:00  
				
					
						
							
							
								 
						
							
							
								5509604ffe 
								
							
								 
							
						 
						
							
							
								
								Merge branch 'master' into s3  
							
							... 
							
							
							
							Conflicts:
	basis/compiler/cfg/optimizer/optimizer.factor 
							
						 
						
							2010-05-03 17:19:28 -05:00  
				
					
						
							
							
								 
						
							
							
								9b34a4a054 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: remove unused 'reps' slot from compiler.cfg, and re-organize things in preparation for SSA register allocation  
							
							
							
						 
						
							2010-05-03 17:34:18 -04:00  
				
					
						
							
							
								 
						
							
							
								95ff5ffe51 
								
							
								 
							
						 
						
							
							
								
								New GC checks work in progress  
							
							
							
						 
						
							2010-05-03 17:34:16 -04:00  
				
					
						
							
							
								 
						
							
							
								e22f66daf4 
								
							
								 
							
						 
						
							
							
								
								Scheduling has to come before representation selection, since the latter inserts memory operations  
							
							
							
						 
						
							2010-04-05 00:24:12 -05:00  
				
					
						
							
							
								 
						
							
							
								2034e1ef05 
								
							
								 
							
						 
						
							
							
								
								Fewer unnecessary dependence edges between stack operations, implemented by reviving stack height normalization. Now, 40% of spills and reloads are eliminated in total  
							
							
							
						 
						
							2010-02-24 14:20:43 -06:00  
				
					
						
							
							
								 
						
							
							
								04946dcddd 
								
							
								 
							
						 
						
							
							
								
								A first attempt at implementing Vivek Sarkar's algorithm for scheduling for register pressure  
							
							
							
						 
						
							2010-02-10 21:43:30 -06:00  
				
					
						
							
							
								 
						
							
							
								1e841e5086 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.ssa.destruction: more aggressive coalescing work in progress  
							
							
							
						 
						
							2009-09-27 17:17:26 -05:00  
				
					
						
							
							
								 
						
							
							
								daff63071f 
								
							
								 
							
						 
						
							
							
								
								Fix the build  
							
							
							
						 
						
							2009-09-09 13:44:54 -05:00  
				
					
						
							
							
								 
						
							
							
								7e2f0e5dbf 
								
							
								 
							
						 
						
							
							
								
								compiler: separate ##save-context instruction from ##alien-invoke, generate a ##save-context for libm calls, and add a pass to combine multiple context saves within a basic block. Fixes crashes with FP traps thrown by libm functions on x86-32  
							
							
							
						 
						
							2009-09-08 21:50:55 -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  
				
					
						
							
							
								 
						
							
							
								e21ca289c3 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.representations: new pass to make global unboxing decisions, relies on new compiler.cfg.loop-detection pass for loop nesting information  
							
							
							
						 
						
							2009-08-08 00:24:46 -05:00  
				
					
						
							
							
								 
						
							
							
								725280d424 
								
							
								 
							
						 
						
							
							
								
								Split off the notion of a register representation from a register class  
							
							
							
						 
						
							2009-08-07 17:44:50 -05:00  
				
					
						
							
							
								 
						
							
							
								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  
				
					
						
							
							
								 
						
							
							
								9afa39aa3a 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.ssa.destruction: rename coalesce word to destruct-ssa  
							
							
							
						 
						
							2009-07-28 12:56:33 -05:00  
				
					
						
							
							
								 
						
							
							
								d10993b837 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: Rename ssa to ssa.construction, coalescing to ssa.destruction  
							
							
							
						 
						
							2009-07-28 09:34:08 -05:00  
				
					
						
							
							
								 
						
							
							
								d394dd3c36 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.branch-splitting: re-enable with a better heuristic  
							
							
							
						 
						
							2009-07-28 08:48:05 -05:00  
				
					
						
							
							
								 
						
							
							
								ba696b68b8 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.coalescing: more or less complete, now needs debugging  
							
							
							
						 
						
							2009-07-27 02:20:45 -05:00  
				
					
						
							
							
								 
						
							
							
								7068de6cd3 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.copy-prop: Global copy propagation  
							
							
							
						 
						
							2009-07-24 05:30:46 -05:00  
				
					
						
							
							
								 
						
							
							
								d947c61bd7 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.stacks: now performs online local DCN  
							
							
							
						 
						
							2009-07-23 20:54:38 -05:00  
				
					
						
							
							
								 
						
							
							
								747a2d72c8 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.empty-blocks: new pass to delete empty blocks, runs after phi elimination  
							
							
							
						 
						
							2009-07-23 18:02:46 -05:00  
				
					
						
							
							
								 
						
							
							
								44bcd258f6 
								
							
								 
							
						 
						
							
							
								
								Insert _loop-entry in linearization pass instead of in CFG builder, so that optimizations don't have to worry about it  
							
							
							
						 
						
							2009-07-22 06:05:17 -05:00  
				
					
						
							
							
								 
						
							
							
								25c42d04fd 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: Fix conflicts after merging local optimization refactoring into DCN branch  
							
							
							
						 
						
							2009-07-22 03:17:53 -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  
				
					
						
							
							
								 
						
							
							
								b869e1250c 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.stack-analysis: Out with the old, in with the new  
							
							
							
						 
						
							2009-07-22 00:52:25 -05:00  
				
					
						
							
							
								 
						
							
							
								e49de006c4 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.dcn: Fixing various bugs, hook up with optimizer  
							
							
							
						 
						
							2009-07-21 22:24:50 -05:00  
				
					
						
							
							
								 
						
							
							
								343151fd62 
								
							
								 
							
						 
						
							
							
								
								compiler.tree.finalization: undo a change that resulted in a compile time regression  
							
							
							
						 
						
							2009-07-18 03:33:24 -05:00  
				
					
						
							
							
								 
						
							
							
								5061db2a48 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg: Move tail call optimization to the end, compiler.tree: simplify finalization pass because of this  
							
							
							
						 
						
							2009-07-17 22:57:28 -05:00  
				
					
						
							
							
								 
						
							
							
								9f926ab88c 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.block-joining: join basic blocks connected by a single edge to improve effectiveness of local optimizations  
							
							
							
						 
						
							2009-07-16 02:17:58 -05:00  
				
					
						
							
							
								 
						
							
							
								11731f8d48 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.value-numbering: merge in compiler.cfg.branch-folding  
							
							
							
						 
						
							2009-07-14 20:05:01 -05:00  
				
					
						
							
							
								 
						
							
							
								d7aeae45be 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.branch-splitting: split blocks with successors  
							
							
							
						 
						
							2009-07-13 10:44:08 -05:00  
				
					
						
							
							
								 
						
							
							
								2de41f01da 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.optimizer: enable branch folding  
							
							
							
						 
						
							2009-07-02 01:05:59 -05:00  
				
					
						
							
							
								 
						
							
							
								f894baf60e 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.optimizer: disable branch folding for now  
							
							
							
						 
						
							2009-06-30 23:07:27 -05:00  
				
					
						
							
							
								 
						
							
							
								3385e50c43 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.branch-folding: fold away branches where both inputs are the same register. This results in 'push' being compiled slightly better  
							
							
							
						 
						
							2009-06-30 22:43:32 -05:00  
				
					
						
							
							
								 
						
							
							
								f412bbc6d6 
								
							
								 
							
						 
						
							
							
								
								Change branch splitting around a bit, rename useless-blocks to useless-conditionals and rewrite it  
							
							
							
						 
						
							2009-06-30 22:11:15 -05:00  
				
					
						
							
							
								 
						
							
							
								5c6c3ecd85 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.tco: Tail call optimization moved out of compiler.cfg.builder into its own pass  
							
							
							
						 
						
							2009-06-30 20:13:35 -05:00  
				
					
						
							
							
								 
						
							
							
								ef32eb2e72 
								
							
								 
							
						 
						
							
							
								
								Fix bootstrap and unit test  
							
							
							
						 
						
							2009-06-26 17:44:33 -05:00  
				
					
						
							
							
								 
						
							
							
								96baede36a 
								
							
								 
							
						 
						
							
							
								
								Redesign compiler.cfg.stack-analysis to make compiler.cfg.height redundant, and to fix some problems  
							
							
							
						 
						
							2009-06-26 17:29:55 -05:00  
				
					
						
							
							
								 
						
							
							
								7c207ffa12 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.optimizer: disable CFG checker by default  
							
							
							
						 
						
							2009-06-05 18:07:22 -05:00  
				
					
						
							
							
								 
						
							
							
								5bb235d38f 
								
							
								 
							
						 
						
							
							
								
								compiler.cfg.checker: run if a variable is set  
							
							
							
						 
						
							2009-06-05 17:32:12 -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  
				
					
						
							
							
								 
						
							
							
								dadb9a2c50 
								
							
								 
							
						 
						
							
							
								
								Add phi elimination pass  
							
							
							
						 
						
							2009-05-27 18:58:01 -05:00  
				
					
						
							
							
								 
						
							
							
								1db81da264 
								
							
								 
							
						 
						
							
							
								
								Refactoring low-level optimizer to support stack analysis pass  
							
							
							
						 
						
							2009-05-26 19:31:19 -05:00  
				
					
						
							
							
								 
						
							
							
								445e353337 
								
							
								 
							
						 
						
							
							
								
								Optimize away useless jumps  
							
							
							
						 
						
							2008-11-02 23:09:31 -06:00