OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 // Testing optimized 'is' tests. | 4 // Testing optimized 'is' tests. |
5 // VMOptions=--optimization-counter-threshold=5 --no-use-osr --no-background-com
pilation | 5 // VMOptions=--optimization-counter-threshold=5 --no-use-osr --no-background-com
pilation |
6 | 6 |
7 import "package:expect/expect.dart"; | 7 import "package:expect/expect.dart"; |
8 | 8 |
9 | |
10 bool isInt(x) => x is int; | 9 bool isInt(x) => x is int; |
11 | 10 |
12 | |
13 int isIntRes(x) { | 11 int isIntRes(x) { |
14 if (x is int) { | 12 if (x is int) { |
15 return 1; | 13 return 1; |
16 } else { | 14 } else { |
17 return 0; | 15 return 0; |
18 } | 16 } |
19 } | 17 } |
20 | 18 |
21 | |
22 int isNotIntRes(x) { | 19 int isNotIntRes(x) { |
23 if (x is! int) { | 20 if (x is! int) { |
24 return 1; | 21 return 1; |
25 } else { | 22 } else { |
26 return 0; | 23 return 0; |
27 } | 24 } |
28 } | 25 } |
29 | 26 |
30 | |
31 int isIfThenElseIntRes(x) { | 27 int isIfThenElseIntRes(x) { |
32 return x is int ? 1 : 0; | 28 return x is int ? 1 : 0; |
33 } | 29 } |
34 | 30 |
35 | |
36 | |
37 bool isString(x) => x is String; | 31 bool isString(x) => x is String; |
38 | 32 |
39 | |
40 int isStringRes(x) { | 33 int isStringRes(x) { |
41 if (x is String) { | 34 if (x is String) { |
42 return 1; | 35 return 1; |
43 } else { | 36 } else { |
44 return 0; | 37 return 0; |
45 } | 38 } |
46 } | 39 } |
47 | 40 |
48 | |
49 int isNotStringRes(x) { | 41 int isNotStringRes(x) { |
50 if (x is! String) { | 42 if (x is! String) { |
51 return 1; | 43 return 1; |
52 } else { | 44 } else { |
53 return 0; | 45 return 0; |
54 } | 46 } |
55 } | 47 } |
56 | 48 |
57 | |
58 main() { | 49 main() { |
59 for (int i = 0; i < 20; i++) { | 50 for (int i = 0; i < 20; i++) { |
60 Expect.isFalse(isInt(3.2)); | 51 Expect.isFalse(isInt(3.2)); |
61 Expect.isTrue(isInt(3)); | 52 Expect.isTrue(isInt(3)); |
62 Expect.isTrue(isInt(17179869184)); // Mint on ia32. | 53 Expect.isTrue(isInt(17179869184)); // Mint on ia32. |
63 Expect.isFalse(isString(2.0)); | 54 Expect.isFalse(isString(2.0)); |
64 Expect.isTrue(isString("Morgan")); | 55 Expect.isTrue(isString("Morgan")); |
65 } | 56 } |
66 // No deoptimization of isInt possible since all types are known by the compil
er | 57 // No deoptimization of isInt possible since all types are known by the compil
er |
67 | 58 |
68 Expect.isFalse(isString(true)); | 59 Expect.isFalse(isString(true)); |
69 for (int i = 0; i < 20; i++) { | 60 for (int i = 0; i < 20; i++) { |
70 Expect.isFalse(isInt(3.2)); | 61 Expect.isFalse(isInt(3.2)); |
71 Expect.isTrue(isInt(3)); | 62 Expect.isTrue(isInt(3)); |
72 Expect.isTrue(isInt(17179869184)); // Mint on ia32. | 63 Expect.isTrue(isInt(17179869184)); // Mint on ia32. |
73 Expect.isFalse(isInt("hu")); | 64 Expect.isFalse(isInt("hu")); |
74 Expect.isFalse(isString(2.0)); | 65 Expect.isFalse(isString(2.0)); |
75 Expect.isTrue(isString("Morgan")); | 66 Expect.isTrue(isString("Morgan")); |
76 Expect.isFalse(isString(true)); | 67 Expect.isFalse(isString(true)); |
77 } | 68 } |
78 | 69 |
79 for (int i = 0; i < 20; i++) { | 70 for (int i = 0; i < 20; i++) { |
80 Expect.equals(0, isIntRes(3.2)); | 71 Expect.equals(0, isIntRes(3.2)); |
81 Expect.equals(1, isIntRes(3)); | 72 Expect.equals(1, isIntRes(3)); |
82 Expect.equals(0, isIntRes("hi")); | 73 Expect.equals(0, isIntRes("hi")); |
(...skipping 17 matching lines...) Expand all Loading... |
100 Expect.equals(1, isNotIntRes(null)); | 91 Expect.equals(1, isNotIntRes(null)); |
101 for (int i = 0; i < 20; i++) { | 92 for (int i = 0; i < 20; i++) { |
102 Expect.equals(0, isStringRes(3.2)); | 93 Expect.equals(0, isStringRes(3.2)); |
103 Expect.equals(1, isStringRes("Lotus")); | 94 Expect.equals(1, isStringRes("Lotus")); |
104 Expect.equals(0, isStringRes(null)); | 95 Expect.equals(0, isStringRes(null)); |
105 | 96 |
106 Expect.equals(1, isNotStringRes(3.2)); | 97 Expect.equals(1, isNotStringRes(3.2)); |
107 Expect.equals(0, isNotStringRes("Lotus")); | 98 Expect.equals(0, isNotStringRes("Lotus")); |
108 Expect.equals(1, isNotStringRes(null)); | 99 Expect.equals(1, isNotStringRes(null)); |
109 } | 100 } |
110 } | 101 } |
OLD | NEW |