mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:56:57 +00:00
296099e66f
Bug: Change-Id: Ic8fd22a882887682f3c23a54515b72bb7a7ae13e Reviewed-on: https://dart-review.googlesource.com/12860 Commit-Queue: Phil Quitslund <pquitslund@google.com> Reviewed-by: Ben Konyi <bkonyi@google.com>
96 lines
2.2 KiB
Dart
96 lines
2.2 KiB
Dart
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
// VMOptions=--optimization-counter-threshold=10 --no-use-osr
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
// Test arithmetic on 64-bit integers.
|
|
|
|
test_and_1() {
|
|
try {
|
|
// Avoid optimizing this function.
|
|
f(a, b) {
|
|
var s = b;
|
|
var t = a & s;
|
|
return t == b;
|
|
}
|
|
|
|
var x = 0xffffffff;
|
|
for (var i = 0; i < 20; i++) f(x, 0);
|
|
Expect.equals(true, f(x, 0));
|
|
Expect.equals(false, f(x, -1)); // Triggers deoptimization.
|
|
} finally {}
|
|
}
|
|
|
|
test_and_2() {
|
|
try {
|
|
// Avoid optimizing this function.
|
|
f(a, b) {
|
|
return a & b;
|
|
}
|
|
|
|
var x = 0xffffffff;
|
|
for (var i = 0; i < 20; i++) f(x, x);
|
|
Expect.equals(x, f(x, x));
|
|
Expect.equals(1234, f(0xffffffff, 1234));
|
|
Expect.equals(0x100000001, f(0x100000001, -1));
|
|
Expect.equals(-0x40000000, f(-0x40000000, -1));
|
|
Expect.equals(0x40000000, f(0x40000000, -1));
|
|
Expect.equals(0x3fffffff, f(0x3fffffff, -1));
|
|
} finally {}
|
|
}
|
|
|
|
test_xor_1() {
|
|
try {
|
|
// Avoid optimizing this function.
|
|
f(a, b) {
|
|
var s = b;
|
|
var t = a ^ s;
|
|
return t;
|
|
}
|
|
|
|
var x = 0xffffffff;
|
|
for (var i = 0; i < 20; i++) f(x, x);
|
|
Expect.equals(0, f(x, x));
|
|
Expect.equals(-x - 1, f(x, -1));
|
|
var y = 0xffffffffffffffff;
|
|
Expect.equals(-y - 1, f(y, -1)); // Triggers deoptimization.
|
|
} finally {}
|
|
}
|
|
|
|
test_or_1() {
|
|
try {
|
|
// Avoid optimizing this function.
|
|
f(a, b) {
|
|
var s = b;
|
|
var t = a | s;
|
|
return t;
|
|
}
|
|
|
|
var x = 0xffffffff;
|
|
for (var i = 0; i < 20; i++) f(x, x);
|
|
Expect.equals(x, f(x, x));
|
|
Expect.equals(-1, f(x, -1));
|
|
var y = 0xffffffffffffffff;
|
|
Expect.equals(-1, f(y, -1)); // Triggers deoptimization.
|
|
} finally {}
|
|
}
|
|
|
|
test_func(x, y) => (x & y) + 1.0;
|
|
|
|
test_mint_double_op() {
|
|
for (var i = 0; i < 20; i++) test_func(4294967295, 1);
|
|
Expect.equals(2.0, test_func(4294967295, 1));
|
|
}
|
|
|
|
main() {
|
|
for (var i = 0; i < 5; i++) {
|
|
test_and_1();
|
|
test_and_2();
|
|
test_xor_1();
|
|
test_or_1();
|
|
test_mint_double_op();
|
|
}
|
|
}
|