OLD | NEW |
| (Empty) |
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 | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 // Test correct usage of inlined double temporary objects. | |
5 | |
6 main() { | |
7 for (int i = 0; i < 2000; i++) { | |
8 testBinaryOp(); | |
9 testUnaryOp(); | |
10 } | |
11 } | |
12 | |
13 | |
14 // VM: temporary double should not be used as result of division, | |
15 // otherwise the function always returns the same object. | |
16 double divide(double a, double b) { | |
17 return a / b; | |
18 } | |
19 | |
20 testBinaryOp() { | |
21 var x = divide(1.0, 2.0); | |
22 var y = divide(2.0, 3.0); | |
23 Expect.notEquals(x, y); | |
24 } | |
25 | |
26 | |
27 // VM: temporary double should be used only for "-b", otherwise the | |
28 // function would always return the same object. | |
29 double unary(double a, double b) { | |
30 return -(a * (-b)); | |
31 } | |
32 | |
33 | |
34 testUnaryOp() { | |
35 var x = unary(1.0, 2.0); | |
36 var y = unary(3.0, 4.0); | |
37 Expect.equals(2.0, x); | |
38 } | |
OLD | NEW |