| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | USING: arrays compiler.cfg.alias-analysis compiler.cfg.instructions | 
					
						
							|  |  |  | compiler.cfg.registers compiler.cfg.debugger compiler.cfg.comparisons | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  | cpu.architecture tools.test byte-arrays layouts literals alien | 
					
						
							|  |  |  | accessors sequences ;
 | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | IN: compiler.cfg.alias-analysis.tests | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  | : test-alias-analysis ( insn -- insn )
 | 
					
						
							|  |  |  |     init-alias-analysis | 
					
						
							|  |  |  |     alias-analysis-step | 
					
						
							|  |  |  |     [ f >>insn# ] map ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | ! Redundant load elimination | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##copy f 2 1 any-rep } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 2 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     } test-alias-analysis | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Store-load forwarding | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##copy f 2 1 any-rep } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 2 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     } test-alias-analysis | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Dead store elimination | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##set-slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 2 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     } test-alias-analysis | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							|  |  |  |         T{ ##peek f 3 D: 3 } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |         T{ ##set-slot-imm f 3 0 1 0 } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							|  |  |  |         T{ ##peek f 3 D: 3 } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 3 0 1 0 } | 
					
						
							|  |  |  |     } test-alias-analysis | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Redundant store elimination | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     } test-alias-analysis | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##copy f 2 1 any-rep } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##copy f 2 1 any-rep } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 2 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     } test-alias-analysis | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Not a redundant load | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 0 1 1 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 0 1 1 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 2 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     } test-alias-analysis | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Not a redundant store | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							|  |  |  |         T{ ##peek f 3 D: 3 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##set-slot-imm f 2 1 1 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 4 0 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 3 1 1 0 } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							|  |  |  |         T{ ##peek f 3 D: 3 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##set-slot-imm f 2 1 1 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 4 0 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 3 1 1 0 } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     } test-alias-analysis | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! There's a redundant load, but not a redundant store | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							|  |  |  |         T{ ##peek f 3 D: 3 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##slot-imm f 4 0 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |         T{ ##slot f 5 0 3 0 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 3 0 1 0 } | 
					
						
							|  |  |  |         T{ ##copy f 6 3 any-rep } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							|  |  |  |         T{ ##peek f 3 D: 3 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##slot-imm f 4 0 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |         T{ ##slot f 5 0 3 0 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 3 0 1 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 6 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     } test-alias-analysis | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Fresh allocations don't alias existing values | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Redundant load elimination | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							|  |  |  |         T{ ##peek f 3 D: 3 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##allot f 4 16 array } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 3 4 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 2 1 1 0 } | 
					
						
							|  |  |  |         T{ ##copy f 5 3 any-rep } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							|  |  |  |         T{ ##peek f 3 D: 3 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##allot f 4 16 array } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 3 4 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 2 1 1 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 5 4 1 0 } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     } test-alias-analysis | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Redundant store elimination | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							|  |  |  |         T{ ##peek f 3 D: 3 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##allot f 4 16 array } | 
					
						
							|  |  |  |         T{ ##slot-imm f 5 1 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 3 4 1 0 } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							|  |  |  |         T{ ##peek f 3 D: 3 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##allot f 4 16 array } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 1 4 1 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 5 1 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 3 4 1 0 } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     } test-alias-analysis | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Storing a new alias class into another object means that heap-ac | 
					
						
							|  |  |  | ! can now alias the new ac | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							|  |  |  |         T{ ##peek f 3 D: 3 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##allot f 4 16 array } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 0 4 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 4 2 1 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 5 3 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 1 5 1 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 6 4 1 0 } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							|  |  |  |         T{ ##peek f 3 D: 3 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##allot f 4 16 array } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 0 4 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 4 2 1 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 5 3 1 0 } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 1 5 1 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 6 4 1 0 } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     } test-alias-analysis | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Compares between objects which cannot alias are eliminated | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##allot f 1 16 array } | 
					
						
							|  |  |  |         T{ ##load-reference f 2 f } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  |         T{ ##allot f 1 16 array } | 
					
						
							|  |  |  |         T{ ##compare f 2 0 1 cc= } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     } test-alias-analysis | 
					
						
							| 
									
										
										
										
											2010-04-30 18:17:52 -04:00
										 |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2010-05-13 01:46:58 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! Make sure that input to ##box-displaced-alien becomes heap-ac | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-05-13 01:46:58 -04:00
										 |  |  |     V{ | 
					
						
							|  |  |  |         T{ ##allot f 1 16 byte-array } | 
					
						
							|  |  |  |         T{ ##load-reference f 2 10 } | 
					
						
							|  |  |  |         T{ ##box-displaced-alien f 3 2 1 4 byte-array } | 
					
						
							|  |  |  |         T{ ##slot-imm f 5 3 1 $[ alien type-number ] } | 
					
						
							|  |  |  |         T{ ##compare f 6 5 1 cc= } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-05-13 01:46:58 -04:00
										 |  |  |     V{ | 
					
						
							|  |  |  |         T{ ##allot f 1 16 byte-array } | 
					
						
							|  |  |  |         T{ ##load-reference f 2 10 } | 
					
						
							|  |  |  |         T{ ##box-displaced-alien f 3 2 1 4 byte-array } | 
					
						
							|  |  |  |         T{ ##slot-imm f 5 3 1 $[ alien type-number ] } | 
					
						
							|  |  |  |         T{ ##compare f 6 5 1 cc= } | 
					
						
							| 
									
										
										
										
											2010-05-14 09:08:50 -04:00
										 |  |  |     } test-alias-analysis | 
					
						
							| 
									
										
										
										
											2010-05-13 01:46:58 -04:00
										 |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  | ! We can't make any assumptions about heap-ac between | 
					
						
							|  |  |  | ! instructions which can call back into Factor code | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-08-14 02:19:30 -04:00
										 |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-08-14 02:19:30 -04:00
										 |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } test-alias-analysis | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-08-14 02:19:30 -04:00
										 |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-08-14 02:19:30 -04:00
										 |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } test-alias-analysis | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-08-14 02:19:30 -04:00
										 |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##set-slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							|  |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-08-14 02:19:30 -04:00
										 |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##set-slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } test-alias-analysis | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-08-14 02:19:30 -04:00
										 |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |     V{ | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 0 D: 0 } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							| 
									
										
										
										
											2010-08-14 02:19:30 -04:00
										 |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							| 
									
										
										
										
											2010-07-02 15:44:12 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |     } test-alias-analysis | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! We can't eliminate stores on any alias class across a GC-ing | 
					
						
							|  |  |  | ! instruction | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |     V{ | 
					
						
							|  |  |  |         T{ ##allot f 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							|  |  |  |         T{ ##copy f 2 1 any-rep } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |     V{ | 
					
						
							|  |  |  |         T{ ##allot f 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							|  |  |  |         T{ ##slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } test-alias-analysis | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |     V{ | 
					
						
							|  |  |  |         T{ ##allot f 0 } | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							|  |  |  |         T{ ##copy f 2 1 any-rep } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |     V{ | 
					
						
							|  |  |  |         T{ ##allot f 0 } | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							|  |  |  |         T{ ##slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } test-alias-analysis | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |     V{ | 
					
						
							|  |  |  |         T{ ##allot f 0 } | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |     V{ | 
					
						
							|  |  |  |         T{ ##allot f 0 } | 
					
						
							| 
									
										
										
										
											2015-08-13 18:23:10 -04:00
										 |  |  |         T{ ##peek f 1 D: 1 } | 
					
						
							|  |  |  |         T{ ##peek f 2 D: 2 } | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } test-alias-analysis | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |     V{ | 
					
						
							|  |  |  |         T{ ##allot f 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |     V{ | 
					
						
							|  |  |  |         T{ ##allot f 0 } | 
					
						
							|  |  |  |         T{ ##slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |         T{ ##alien-invoke f { } { } { } { } 0 0 "free" } | 
					
						
							|  |  |  |         T{ ##set-slot-imm f 1 0 1 0 } | 
					
						
							|  |  |  |     } test-alias-analysis | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Make sure that gc-map-insns which are also vreg-insns are | 
					
						
							|  |  |  | ! handled properly | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |     V{ | 
					
						
							|  |  |  |         T{ ##allot f 0 } | 
					
						
							| 
									
										
										
										
											2016-08-08 05:03:20 -04:00
										 |  |  |         T{ ##alien-indirect f f { } { } { { 2 double-rep 0 } } { } 0 0 "free" } | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |         T{ ##set-slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-07-03 12:39:59 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |     V{ | 
					
						
							|  |  |  |         T{ ##allot f 0 } | 
					
						
							| 
									
										
										
										
											2016-08-08 05:03:20 -04:00
										 |  |  |         T{ ##alien-indirect f f { } { } { { 2 double-rep 0 } } { } 0 0 "free" } | 
					
						
							| 
									
										
										
										
											2010-09-06 19:57:56 -04:00
										 |  |  |         T{ ##set-slot-imm f 2 0 1 0 } | 
					
						
							|  |  |  |     } test-alias-analysis | 
					
						
							|  |  |  | ] unit-test |