OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2015 the V8 project authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 // Flags: --allow-natives-syntax | |
6 | |
7 var obj = %GetUndetectable(); | |
8 | |
9 function shouldNotBeTaken() { | |
10 fail("Undetectable branch should not be taken", "branch was taken"); | |
11 } | |
12 | |
13 function shouldBeTaken() { | |
14 fail("Inverted Undetectable branch should be taken", "branch was not taken"); | |
15 } | |
16 | |
17 function testCompares() { | |
18 assertTrue(!obj); | |
19 assertFalse(!!obj); | |
20 assertFalse(obj == true); | |
21 assertFalse(obj == false); | |
22 assertFalse(obj === true); | |
23 assertFalse(obj === false); | |
24 assertEquals(2, obj? 1 : 2); | |
Toon Verwaest
2015/05/11 09:46:34
nit: space after obj
titzer
2015/05/11 10:48:42
Done.
| |
25 assertEquals(obj, true && obj); | |
26 assertEquals(obj, false || obj); | |
27 } | |
28 | |
29 function testIfs() { | |
30 if (obj) { | |
31 shouldNotBeTaken(); | |
32 } | |
33 | |
34 if (obj) { | |
35 shouldNotBeTaken(); | |
36 } else { | |
37 // do nothing | |
38 } | |
39 | |
40 if (!obj) { | |
41 // do nothing | |
42 } else { | |
43 shouldBeTaken(); | |
44 } | |
45 } | |
46 | |
47 function testWhiles() { | |
48 while (obj) { | |
49 shouldNotBeTaken(); | |
50 } | |
51 | |
52 var i = 0; | |
53 while (!obj) { | |
54 i++; | |
55 break; | |
56 } | |
57 | |
58 assertEquals(1, i); | |
59 } | |
60 | |
61 function testFors() { | |
62 for (var i = 0; obj; i++) { | |
63 shouldNotBeTaken(); | |
64 } | |
65 | |
66 var j = 0; | |
67 for (var i = 0; !obj; i++) { | |
68 j++; | |
69 break; | |
70 } | |
71 | |
72 assertEquals(1, j); | |
73 } | |
74 | |
75 for (var j = 0; j < 5; j++) { | |
76 testCompares(); | |
77 testIfs(); | |
78 testWhiles(); | |
79 testFors(); | |
80 | |
81 if (j == 3) { | |
82 %OptimizeFunctionOnNextCall(testCompares); | |
83 %OptimizeFunctionOnNextCall(testIfs); | |
84 %OptimizeFunctionOnNextCall(testWhiles); | |
85 %OptimizeFunctionOnNextCall(testFors); | |
86 } | |
87 } | |
OLD | NEW |