| 
									
										
										
										
											2008-07-27 21:25:42 -04:00
										 |  |  | ! Copyright (C) 2008 Slava Pestov. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2008-09-08 20:02:24 -04:00
										 |  |  | USING: kernel namespaces | 
					
						
							| 
									
										
										
										
											2008-09-12 06:17:27 -04:00
										 |  |  | compiler.tree.recursive | 
					
						
							| 
									
										
										
										
											2008-09-08 20:02:24 -04:00
										 |  |  | compiler.tree.normalization | 
					
						
							| 
									
										
										
										
											2008-08-07 07:34:28 -04:00
										 |  |  | compiler.tree.propagation | 
					
						
							|  |  |  | compiler.tree.cleanup | 
					
						
							|  |  |  | compiler.tree.escape-analysis | 
					
						
							| 
									
										
										
										
											2008-12-06 12:17:19 -05:00
										 |  |  | compiler.tree.escape-analysis.check | 
					
						
							| 
									
										
										
										
											2008-08-07 07:34:28 -04:00
										 |  |  | compiler.tree.tuple-unboxing | 
					
						
							| 
									
										
										
										
											2008-09-12 09:18:44 -04:00
										 |  |  | compiler.tree.identities | 
					
						
							| 
									
										
										
										
											2008-08-07 07:34:28 -04:00
										 |  |  | compiler.tree.def-use | 
					
						
							|  |  |  | compiler.tree.dead-code | 
					
						
							| 
									
										
										
										
											2008-09-12 19:08:38 -04:00
										 |  |  | compiler.tree.modular-arithmetic | 
					
						
							| 
									
										
										
										
											2008-08-31 06:40:29 -04:00
										 |  |  | compiler.tree.finalization | 
					
						
							| 
									
										
										
										
											2008-08-15 00:35:19 -04:00
										 |  |  | compiler.tree.checker ;
 | 
					
						
							| 
									
										
										
										
											2008-07-27 21:25:42 -04:00
										 |  |  | IN: compiler.tree.optimizer | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-09-08 20:02:24 -04:00
										 |  |  | SYMBOL: check-optimizer? | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-20 05:21:00 -04:00
										 |  |  | : ?check ( nodes -- nodes' )
 | 
					
						
							|  |  |  |     check-optimizer? get [ | 
					
						
							|  |  |  |         dup check-nodes | 
					
						
							|  |  |  |     ] when ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-27 21:25:42 -04:00
										 |  |  | : optimize-tree ( nodes -- nodes' )
 | 
					
						
							| 
									
										
										
										
											2009-05-27 19:58:54 -04:00
										 |  |  |     [ | 
					
						
							|  |  |  |         analyze-recursive | 
					
						
							|  |  |  |         normalize | 
					
						
							|  |  |  |         propagate | 
					
						
							|  |  |  |         cleanup
 | 
					
						
							|  |  |  |         dup run-escape-analysis? [ | 
					
						
							|  |  |  |             escape-analysis | 
					
						
							|  |  |  |             unbox-tuples | 
					
						
							|  |  |  |         ] when
 | 
					
						
							|  |  |  |         apply-identities | 
					
						
							|  |  |  |         compute-def-use | 
					
						
							|  |  |  |         remove-dead-code | 
					
						
							|  |  |  |         ?check | 
					
						
							|  |  |  |         compute-def-use | 
					
						
							|  |  |  |         optimize-modular-arithmetic | 
					
						
							|  |  |  |         finalize | 
					
						
							|  |  |  |     ] with-scope ;
 |