Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Side by Side Diff: tests/language/branch_canonicalization_test.dart

Issue 2985243002: Migrate block 44. (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2013, 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
5 // Test that branch fusion correctly sets branch environment for comparisons
6 // that require unboxing and does not fuse branches that can deoptimize.
7 // VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-co mpilation
8
9 import "package:expect/expect.dart";
10
11 var sideEffect = true;
12
13 barDouble(a, b) {
14 sideEffect = false;
15 final result = (a == b);
16 sideEffect = !sideEffect;
17 return result;
18 }
19
20 fooDouble(a, b) => barDouble(a, b) ? 1 : 0;
21
22 barMint(a, b) {
23 sideEffect = false;
24 final result = (a == b);
25 sideEffect = !sideEffect;
26 return result;
27 }
28
29 fooMint(a, b) => barMint(a, b) ? 1 : 0;
30
31 class A {
32 operator ==(other) => identical(this, other);
33 }
34
35 class B extends A {}
36
37 class C extends A {}
38
39 barPoly(a, b) {
40 sideEffect = false;
41 final result = a == b;
42 sideEffect = !sideEffect;
43 return result;
44 }
45
46 fooPoly(a, b) => barPoly(a, b) ? 1 : 0;
47
48 main() {
49 final a = 1.0;
50 final b = 1 << 62;
51 final x = new A(), y = new B(), z = new C();
52 for (var i = 0; i < 20; i++) {
53 Expect.equals(1, fooDouble(a, a));
54 Expect.isTrue(sideEffect);
55 Expect.equals(0, fooMint(b, 0));
56 Expect.isTrue(sideEffect);
57 Expect.equals(1, fooPoly(x, x));
58 Expect.equals(0, fooPoly(y, x));
59 }
60 Expect.equals(1, fooDouble(z, z));
61 Expect.isTrue(sideEffect);
62 Expect.equals(1, fooMint(z, z));
63 Expect.isTrue(sideEffect);
64 Expect.equals(1, fooPoly(z, z));
65 Expect.isTrue(sideEffect);
66 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698