| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 final String FIB = @""" | 7 const String FIB = @""" |
| 8 fib(n) { | 8 fib(n) { |
| 9 if (n <= 1) return 1; | 9 if (n <= 1) return 1; |
| 10 return add(fib(n - 1), fib(n - 2)); | 10 return add(fib(n - 1), fib(n - 2)); |
| 11 } | 11 } |
| 12 | 12 |
| 13 // We need this artificial add method because | 13 // We need this artificial add method because |
| 14 // our optimizer will actually add type checks | 14 // our optimizer will actually add type checks |
| 15 // for the result of recursively calling fib | 15 // for the result of recursively calling fib |
| 16 // which introduces new variables because we | 16 // which introduces new variables because we |
| 17 // now have multiple users. | 17 // now have multiple users. |
| 18 // The 'if' has been added to avoid inlining of add. | 18 // The 'if' has been added to avoid inlining of add. |
| 19 add(x, y) { | 19 add(x, y) { |
| 20 if (x == -1) return x; | 20 if (x == -1) return x; |
| 21 return x + y; | 21 return x + y; |
| 22 } | 22 } |
| 23 """; | 23 """; |
| 24 | 24 |
| 25 main() { | 25 main() { |
| 26 // Make sure we don't introduce a new variable. | 26 // Make sure we don't introduce a new variable. |
| 27 RegExp regexp = new RegExp("var $anyIdentifier ="); | 27 RegExp regexp = new RegExp("var $anyIdentifier ="); |
| 28 compileAndDoNotMatch(FIB, 'fib', regexp); | 28 compileAndDoNotMatch(FIB, 'fib', regexp); |
| 29 } | 29 } |
| OLD | NEW |