| Index: tests/standalone/deoptimization_test.dart
|
| diff --git a/tests/standalone/deoptimization_test.dart b/tests/standalone/deoptimization_test.dart
|
| deleted file mode 100644
|
| index add6d23e45d048376a42592c571f3dfbb452a25a..0000000000000000000000000000000000000000
|
| --- a/tests/standalone/deoptimization_test.dart
|
| +++ /dev/null
|
| @@ -1,216 +0,0 @@
|
| -// Copyright (c) 2011, 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.
|
| -// Test deoptimization.
|
| -
|
| -import "package:expect/expect.dart";
|
| -
|
| -class SmiCompares {
|
| - // Test deoptimization when one argument is known to be Smi.
|
| - static bool smiCompareLessThan2(a) {
|
| - return a < 2;
|
| - }
|
| -
|
| - // Test deoptimization when one argument is known to be Smi.
|
| - static bool smiCompareGreaterThan2(a) {
|
| - return 2 < a;
|
| - }
|
| -
|
| - // Test deoptimization when both arguments unknown.
|
| - static bool smiCompareLessThan(a, b) {
|
| - return a < b;
|
| - }
|
| -
|
| - // Test deoptimization when both arguments unknown.
|
| - static bool smiCompareGreaterThan(a, b) {
|
| - return a > b;
|
| - }
|
| -
|
| - static smiComparesTest() {
|
| - for (int i = 0; i < 2000; i++) {
|
| - Expect.equals(true, smiCompareLessThan2(1));
|
| - Expect.equals(false, smiCompareLessThan2(3));
|
| - Expect.equals(false, smiCompareGreaterThan2(1));
|
| - Expect.equals(true, smiCompareGreaterThan2(3));
|
| - Expect.equals(true, smiCompareLessThan(1, 2));
|
| - Expect.equals(false, smiCompareGreaterThan(1, 2));
|
| - }
|
| - // Deoptimize by passing a double instead of Smi
|
| - Expect.equals(true, smiCompareLessThan2(1.0));
|
| - Expect.equals(false, smiCompareGreaterThan2(1.0));
|
| - Expect.equals(true, smiCompareLessThan(1.0, 2));
|
| - Expect.equals(false, smiCompareGreaterThan(1, 2.0));
|
| - }
|
| -}
|
| -
|
| -class SmiBinop {
|
| - static subWithLiteral(a) {
|
| - return a - 1;
|
| - }
|
| -
|
| - static void smiBinopTest() {
|
| - for (int i = 0; i < 2000; i++) {
|
| - Expect.equals(2, subWithLiteral(3));
|
| - }
|
| - // Deoptimize.
|
| - Expect.equals(2.0, subWithLiteral(3.0));
|
| - }
|
| -
|
| - static mul(x) {
|
| - return x * 1024;
|
| - }
|
| -
|
| - static void smiBinopOverflowTest() {
|
| - final int big = 536870912;
|
| - for (int i = 0; i < 2000; i++) {
|
| - Expect.equals(1024, mul(1));
|
| - }
|
| - // Deoptimize by overflow.
|
| - Expect.equals(1024 * big, mul(big));
|
| - }
|
| -}
|
| -
|
| -class ObjectsEquality {
|
| - static bool compareEqual(a, b) {
|
| - return a == b;
|
| - }
|
| -
|
| - static bool compareNotEqual(a, b) {
|
| - return a != b;
|
| - }
|
| -
|
| - // Use only Object.==.
|
| - static void objectsEqualityTest() {
|
| - var a = new ObjectsEquality();
|
| - var b = new ObjectsEquality();
|
| - final nan = 0.0 / 0.0;
|
| - for (int i = 0; i < 1000; i++) {
|
| - Expect.equals(true, compareEqual(a, a));
|
| - Expect.equals(true, compareEqual(null, null));
|
| - Expect.equals(false, compareEqual(null, a));
|
| - Expect.equals(false, compareEqual(a, null));
|
| - Expect.equals(true, compareEqual(b, b));
|
| - Expect.equals(false, compareEqual(a, b));
|
| -
|
| - Expect.equals(false, compareNotEqual(a, a));
|
| - Expect.equals(false, compareNotEqual(null, null));
|
| - Expect.equals(true, compareNotEqual(null, a));
|
| - Expect.equals(true, compareNotEqual(a, null));
|
| - Expect.equals(false, compareNotEqual(b, b));
|
| - Expect.equals(true, compareNotEqual(a, b));
|
| - }
|
| - var c = new SmiBinop();
|
| - // Deoptimize.
|
| - Expect.equals(true, compareEqual(c, c));
|
| - Expect.equals(false, compareEqual(c, null));
|
| - Expect.equals(false, compareNotEqual(c, c));
|
| - Expect.equals(true, compareNotEqual(c, null));
|
| - }
|
| -}
|
| -
|
| -class DeoptimizationTest {
|
| - static foo(a, b) {
|
| - return a - b;
|
| - }
|
| -
|
| - static test1() {
|
| - for (int i = 0; i < 2000; i++) {
|
| - Expect.equals(2, foo(3, 1)); // <-- Optimizes 'foo',
|
| - }
|
| - Expect.equals(2.2, foo(1.2, -1.0)); // <-- Deoptimizes 'foo'.
|
| - for (int i = 0; i < 10000; i++) {
|
| - Expect.equals(2, foo(3, 1)); // <-- Optimizes 'foo'.
|
| - }
|
| - Expect.equals(2.2, foo(1.2, -1)); // <-- Deoptimizes 'foo'.
|
| - }
|
| -
|
| - static moo(n) {
|
| - return ++n;
|
| - }
|
| -
|
| - static test2() {
|
| - for (int i = 0; i < 2000; i++) {
|
| - Expect.equals(4, moo(3)); // <-- Optimizes 'moo',
|
| - }
|
| - Expect.equals(2.2, moo(1.2)); // <-- Deoptimizes 'moo'.
|
| - for (int i = 0; i < 10000; i++) {
|
| - Expect.equals(4, moo(3)); // <-- Optimizes 'moo'.
|
| - }
|
| - Expect.equals(2.2, moo(1.2)); // <-- Deoptimizes 'moo'.
|
| - }
|
| -
|
| - static test3() {
|
| - for (int i = 0; i < 2000; i++) {
|
| - Expect.equals(2.0, foo(3.0, 1.0)); // <-- Optimizes 'foo',
|
| - }
|
| - Expect.equals(2, foo(1, -1)); // <-- Deoptimizes 'foo'.
|
| - for (int i = 0; i < 2000; i++) {
|
| - Expect.equals(2.0, foo(3.0, 1.0)); // <-- Optimizes 'foo',
|
| - }
|
| - Expect.equals(2.2, moo(1.2)); // <-- Deoptimizes 'moo'.
|
| - }
|
| -
|
| - static bool compareInt(a, b) {
|
| - return a < b;
|
| - }
|
| -
|
| - static bool compareDouble(a, b) {
|
| - return a < b;
|
| - }
|
| -
|
| - static test4() {
|
| - for (int i = 0; i < 2000; i++) {
|
| - Expect.equals(true, compareInt(1, 2));
|
| - Expect.equals(true, compareDouble(1.0, 2.0));
|
| - }
|
| - // Trigger deoptimization in compareInt and compareDouble.
|
| - Expect.equals(true, compareInt(1, 2.0));
|
| - Expect.equals(true, compareDouble(1.0, 2));
|
| - }
|
| -
|
| - static smiRightShift() {
|
| - int ShiftRight(int a, int b) {
|
| - return a >> b;
|
| - }
|
| -
|
| - for (int i = 0; i < 2000; i++) {
|
| - var r = ShiftRight(10, 2);
|
| - Expect.equals(2, r);
|
| - }
|
| - // ShiftRight is optimized.
|
| - Expect.equals(0, ShiftRight(10, 64));
|
| - // Deoptimize ShiftRight because 'a' is a Mint.
|
| - var mint = 1 << 63;
|
| - Expect.equals(1 << 3, ShiftRight(mint, 60));
|
| - }
|
| -
|
| - static doubleUnary() {
|
| - num unary(num a) {
|
| - return -a;
|
| - }
|
| -
|
| - for (int i = 0; i < 2000; i++) {
|
| - var r = unary(2.0);
|
| - Expect.equals(-2.0, r);
|
| - }
|
| - var r = unary(5);
|
| - Expect.equals(-5, r);
|
| - }
|
| -
|
| - static void testMain() {
|
| - test1();
|
| - test2();
|
| - test3();
|
| - test4();
|
| - SmiCompares.smiComparesTest();
|
| - SmiBinop.smiBinopTest();
|
| - SmiBinop.smiBinopOverflowTest();
|
| - ObjectsEquality.objectsEqualityTest();
|
| - smiRightShift();
|
| - doubleUnary();
|
| - }
|
| -}
|
| -
|
| -main() {
|
| - DeoptimizationTest.testMain();
|
| -}
|
|
|