| 
									
										
										
										
											2008-02-12 21:35:25 -05:00
										 |  |  | ! Copyright (C) 2006, 2008 Slava Pestov. | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2008-02-05 21:11:35 -05:00
										 |  |  | USING: kernel namespaces optimizer.backend optimizer.def-use | 
					
						
							| 
									
										
										
										
											2008-02-12 21:35:25 -05:00
										 |  |  | optimizer.known-words optimizer.math optimizer.control | 
					
						
							| 
									
										
										
										
											2008-02-13 21:07:08 -05:00
										 |  |  | optimizer.inlining inference.class ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | IN: optimizer | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : optimize-1 ( node -- newnode ? )
 | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         H{ } clone class-substitutions set
 | 
					
						
							|  |  |  |         H{ } clone literal-substitutions set
 | 
					
						
							|  |  |  |         H{ } clone value-substitutions set
 | 
					
						
							|  |  |  |         dup compute-def-use | 
					
						
							| 
									
										
										
										
											2008-02-10 21:32:48 -05:00
										 |  |  |         kill-values | 
					
						
							| 
									
										
										
										
											2008-02-13 19:42:55 -05:00
										 |  |  |         dup detect-loops | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |         dup infer-classes | 
					
						
							|  |  |  |         optimizer-changed off
 | 
					
						
							|  |  |  |         optimize-nodes | 
					
						
							|  |  |  |         optimizer-changed get
 | 
					
						
							|  |  |  |     ] with-scope ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : optimize ( node -- newnode )
 | 
					
						
							|  |  |  |     optimize-1 [ optimize ] when ;
 |