| OLD | NEW | 
|---|
| 1 // Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 import 'compiler_helper.dart'; | 5 import 'compiler_helper.dart'; | 
| 6 | 6 | 
| 7 const String TEST_ONE = r""" | 7 const String TEST_ONE = r""" | 
| 8 void foo(bar) { | 8 void foo(bar) { | 
| 9   for (int i = 0; i < 1; i++) { | 9   for (int i = 0; i < 1; i++) { | 
| 10     print(1 + bar); | 10     print(1 + bar); | 
| 11     print(1 + bar); | 11     print(1 + bar); | 
| 12   } | 12   } | 
| 13 } | 13 } | 
| 14 """; | 14 """; | 
| 15 | 15 | 
| 16 // Check that modulo does not have any side effect and we are | 16 // Check that modulo does not have any side effect and we are | 
| 17 // GVN'ing the length of [:list:]. | 17 // GVN'ing the length of [:list:]. | 
| 18 const String TEST_TWO = r""" | 18 const String TEST_TWO = r""" | 
| 19 void foo(a) { | 19 void foo(a) { | 
| 20   var list = new List<int>(); | 20   var list = new List<int>(); | 
| 21   list[0] = list[0 % a]; | 21   list[0] = list[0 % a]; | 
| 22   list[1] = list[1 % a]; | 22   list[1] = list[1 % a]; | 
| 23 } | 23 } | 
| 24 """; | 24 """; | 
| 25 | 25 | 
|  | 26 // Check that is checks get GVN'ed. | 
|  | 27 const String TEST_THREE = r""" | 
|  | 28 void foo(a) { | 
|  | 29   print(a is num); | 
|  | 30   print(a is num); | 
|  | 31 } | 
|  | 32 """; | 
|  | 33 | 
|  | 34 // Check that instructions that don't have a builtin equivalent can | 
|  | 35 // still be GVN'ed. | 
|  | 36 const String TEST_FOUR = r""" | 
|  | 37 void foo(a) { | 
|  | 38   print(1 >> a); | 
|  | 39   print(1 >> a); | 
|  | 40 } | 
|  | 41 """; | 
|  | 42 | 
| 26 main() { | 43 main() { | 
| 27   String generated = compile(TEST_ONE, entry: 'foo'); | 44   String generated = compile(TEST_ONE, entry: 'foo'); | 
| 28   RegExp regexp = new RegExp(r"1 \+ [a-z]+"); | 45   RegExp regexp = new RegExp(r"1 \+ [a-z]+"); | 
| 29   checkNumberOfMatches(regexp.allMatches(generated).iterator, 1); | 46   checkNumberOfMatches(regexp.allMatches(generated).iterator, 1); | 
| 30 | 47 | 
| 31   generated = compile(TEST_TWO, entry: 'foo'); | 48   generated = compile(TEST_TWO, entry: 'foo'); | 
| 32   checkNumberOfMatches(new RegExp("length").allMatches(generated).iterator, 1); | 49   checkNumberOfMatches(new RegExp("length").allMatches(generated).iterator, 1); | 
|  | 50 | 
|  | 51   generated = compile(TEST_THREE, entry: 'foo'); | 
|  | 52   checkNumberOfMatches(new RegExp("number").allMatches(generated).iterator, 1); | 
|  | 53 | 
|  | 54   generated = compile(TEST_FOUR, entry: 'foo'); | 
|  | 55   checkNumberOfMatches(new RegExp("shr").allMatches(generated).iterator, 1); | 
| 33 } | 56 } | 
| OLD | NEW | 
|---|