12faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes/*
22faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Copyright (C) 2011 The Android Open Source Project
32faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
42faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License");
52faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * you may not use this file except in compliance with the License.
62faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * You may obtain a copy of the License at
72faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
82faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *      http://www.apache.org/licenses/LICENSE-2.0
92faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
102faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Unless required by applicable law or agreed to in writing, software
112faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
122faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * See the License for the specific language governing permissions and
142faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * limitations under the License.
152faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes */
169f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
17dd7bf568b28efb65c0322979790552946eda1fc1Ian Rogersclass Main extends IntMathBase {
189f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
199f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    public static boolean mBoolean1, mBoolean2;
209f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    public static byte mByte1, mByte2;
219f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    public static char mChar1, mChar2;
229f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    public static short mShort1, mShort2;
239f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    public static int mInt1, mInt2;
249f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    public static float mFloat1, mFloat2;
259f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    public static long mLong1, mLong2;
269f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    public static double mDouble1, mDouble2;
279f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    public static volatile long mVolatileLong1, mVolatileLong2;
289f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
299f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
309f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    private int foo_;
319f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
32dd7bf568b28efb65c0322979790552946eda1fc1Ian Rogers    public Main(int stuff) {
334a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee        super();
349f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        foo_ = stuff;
359f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
369f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
37dd7bf568b28efb65c0322979790552946eda1fc1Ian Rogers    public Main() {
384a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee        super();
399f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        foo_ = 123;
409f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
419f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
42f0cde549bed96e16401a347a4511b59130c61e84buzbee    /* Regression test: triggered an SSA renaming bug. */
43f0cde549bed96e16401a347a4511b59130c61e84buzbee    static long divideLongByBillion(long a) {
44f0cde549bed96e16401a347a4511b59130c61e84buzbee        long quot;
45f0cde549bed96e16401a347a4511b59130c61e84buzbee        long rem;
46f0cde549bed96e16401a347a4511b59130c61e84buzbee
47f0cde549bed96e16401a347a4511b59130c61e84buzbee        if (a >= 0) {
48f0cde549bed96e16401a347a4511b59130c61e84buzbee            long bLong = 1000000000L;
49f0cde549bed96e16401a347a4511b59130c61e84buzbee            quot = (a / bLong);
50f0cde549bed96e16401a347a4511b59130c61e84buzbee            rem = (a % bLong);
51f0cde549bed96e16401a347a4511b59130c61e84buzbee        } else {
52f0cde549bed96e16401a347a4511b59130c61e84buzbee            /*
53f0cde549bed96e16401a347a4511b59130c61e84buzbee             * Make the dividend positive shifting it right by 1 bit then get
54f0cde549bed96e16401a347a4511b59130c61e84buzbee             * the quotient an remainder and correct them properly
55f0cde549bed96e16401a347a4511b59130c61e84buzbee             */
56f0cde549bed96e16401a347a4511b59130c61e84buzbee            long aPos = a >>> 1;
57f0cde549bed96e16401a347a4511b59130c61e84buzbee            long bPos = 1000000000L >>> 1;
58f0cde549bed96e16401a347a4511b59130c61e84buzbee            quot = aPos / bPos;
59f0cde549bed96e16401a347a4511b59130c61e84buzbee            rem = aPos % bPos;
60f0cde549bed96e16401a347a4511b59130c61e84buzbee            // double the remainder and add 1 if 'a' is odd
61f0cde549bed96e16401a347a4511b59130c61e84buzbee            rem = (rem << 1) + (a & 1);
62f0cde549bed96e16401a347a4511b59130c61e84buzbee        }
63f0cde549bed96e16401a347a4511b59130c61e84buzbee        return ((rem << 32) | (quot & 0xFFFFFFFFL));
64f0cde549bed96e16401a347a4511b59130c61e84buzbee    }
65f0cde549bed96e16401a347a4511b59130c61e84buzbee
66f0cde549bed96e16401a347a4511b59130c61e84buzbee
672a475e7b93d754e0a7525bb5c7059386307ea63abuzbee    static int instanceTest(int x) {
682a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        IntMathBase a = new IntMathBase();
69dd7bf568b28efb65c0322979790552946eda1fc1Ian Rogers        Main b = new Main();
702a475e7b93d754e0a7525bb5c7059386307ea63abuzbee
715d40f182181488eb39ccd19ffd306bb1fb9740c9Brian Carlstrom        if (!(null instanceof IntMathBase)) {
725d40f182181488eb39ccd19ffd306bb1fb9740c9Brian Carlstrom            x = x + 42;
735d40f182181488eb39ccd19ffd306bb1fb9740c9Brian Carlstrom        }
745d40f182181488eb39ccd19ffd306bb1fb9740c9Brian Carlstrom
752a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        if (a instanceof IntMathBase) {
762a475e7b93d754e0a7525bb5c7059386307ea63abuzbee            x = x * 2;
772a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        }
782a475e7b93d754e0a7525bb5c7059386307ea63abuzbee
79dd7bf568b28efb65c0322979790552946eda1fc1Ian Rogers        if (a instanceof Main) {
802a475e7b93d754e0a7525bb5c7059386307ea63abuzbee            x = x + 13;
812a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        }
822a475e7b93d754e0a7525bb5c7059386307ea63abuzbee
832a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        if (b instanceof IntMathBase) {
842a475e7b93d754e0a7525bb5c7059386307ea63abuzbee            x = x -1;
852a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        }
862a475e7b93d754e0a7525bb5c7059386307ea63abuzbee
87dd7bf568b28efb65c0322979790552946eda1fc1Ian Rogers        if (b instanceof Main) {
882a475e7b93d754e0a7525bb5c7059386307ea63abuzbee            x = x + 1333;
892a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        }
902a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        return x;
912a475e7b93d754e0a7525bb5c7059386307ea63abuzbee    }
922a475e7b93d754e0a7525bb5c7059386307ea63abuzbee
934a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee    int tryThing() {
944a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee        int val = super.tryThing();
954a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee        return val + 10;
964a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee    }
974a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee
984a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee    static int superTest(int x) {
99dd7bf568b28efb65c0322979790552946eda1fc1Ian Rogers        Main instance = new Main();
100dd7bf568b28efb65c0322979790552946eda1fc1Ian Rogers        Main base = instance;
1014a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee        int val1 = instance.tryThing();
1024a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee        int val2 = base.tryThing();
1034a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee        return val1 + val2 + x;
1044a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee    }
1054a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee
106561227c80077bbb4147f778043f1a836af6b9248buzbee    static int constClassTest(int x) {
107561227c80077bbb4147f778043f1a836af6b9248buzbee        Class c = String.class;
108561227c80077bbb4147f778043f1a836af6b9248buzbee        if (c != null) {
109561227c80077bbb4147f778043f1a836af6b9248buzbee           return x * 2;
110561227c80077bbb4147f778043f1a836af6b9248buzbee        } else {
111561227c80077bbb4147f778043f1a836af6b9248buzbee           return x;
112bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom        }
113561227c80077bbb4147f778043f1a836af6b9248buzbee    }
114561227c80077bbb4147f778043f1a836af6b9248buzbee
1151b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee    static int constStringTest(int x) {
1161b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee        String str = "Hello World!";
1172a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        return x + str.length();
1181b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee    }
1191b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee
1201b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee    static void throwNullPointerException() {
1211b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee        throw new NullPointerException();
1221b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee    }
1231b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee
12493dd9660955f1c0f068c57199c1945fc51fb84a7Ian Rogers    static void throwImplicitNullPointerException() {
12593dd9660955f1c0f068c57199c1945fc51fb84a7Ian Rogers      throw null;
12693dd9660955f1c0f068c57199c1945fc51fb84a7Ian Rogers    }
12793dd9660955f1c0f068c57199c1945fc51fb84a7Ian Rogers
1281b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee    static int catchBlock(int x) {
1291b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee        try {
13093dd9660955f1c0f068c57199c1945fc51fb84a7Ian Rogers            if (x == 1000) {
13193dd9660955f1c0f068c57199c1945fc51fb84a7Ian Rogers                x += 123;
13293dd9660955f1c0f068c57199c1945fc51fb84a7Ian Rogers                throwNullPointerException();
13393dd9660955f1c0f068c57199c1945fc51fb84a7Ian Rogers            } else {
13493dd9660955f1c0f068c57199c1945fc51fb84a7Ian Rogers                x += 321;
13593dd9660955f1c0f068c57199c1945fc51fb84a7Ian Rogers                throwImplicitNullPointerException();
13693dd9660955f1c0f068c57199c1945fc51fb84a7Ian Rogers            }
1371b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee        } catch (NullPointerException npe) {
1381b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee            x += 456;
1391b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee        }
1401b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee        return x;
1411b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee    }
1421b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee
143e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee    static int catchBlockNoThrow(int x) {
144e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee        try {
145e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee            x += 123;
146e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee        } catch (NullPointerException npe) {
147e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee            x += 456;
148e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee        }
149e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee        return x;
150e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee    }
151e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee
1529f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int staticFieldTest(int x) {
1539f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mBoolean1 = true;
1549f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mBoolean2 = false;
1559f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mByte1 = 127;
1569f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mByte2 = -128;
1579f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mChar1 = 32767;
1589f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mChar2 = 65535;
1599f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mShort1 = 32767;
1609f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mShort2 = -32768;
1619f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mInt1 = 65537;
1629f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mInt2 = -65537;
1639f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mFloat1 = 3.1415f;
1649f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mFloat2 = -1.0f / 0.0f;                // -inf
1659f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mLong1 = 1234605616436508552L;     // 0x1122334455667788
1669f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mLong2 = -1234605616436508552L;
1679f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mDouble1 = 3.1415926535;
1689f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mDouble2 = 1.0 / 0.0;               // +inf
1699f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mVolatileLong1 = mLong1 - 1;
1709f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        mVolatileLong2 = mLong2 + 1;
1719f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
1729f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (!mBoolean1) { return 10; }
1739f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mBoolean2) { return 11; }
1749f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mByte1 != 127) { return 12; }
1759f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mByte2 != -128) { return 13; }
1769f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mChar1 != 32767) { return 14; }
1779f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mChar2 != 65535) { return 15; }
1789f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mShort1 != 32767) { return 16; }
1799f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mShort2 != -32768) { return 17; }
1809f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mInt1 != 65537) { return 18; }
1819f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mInt2 != -65537) { return 19; }
1829f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (!(mFloat1 > 3.141f && mFloat1 < 3.142f)) { return 20; }
1839f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mFloat2 >= mFloat1) { return 21; }
1849f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mLong1 != 1234605616436508552L) { return 22; }
1859f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mLong2 != -1234605616436508552L) { return 23; }
1869f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (!(mDouble1 > 3.141592653 && mDouble1 < 3.141592654)) { return 24; }
1879f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mDouble2 <= mDouble1) { return 25; }
1889f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mVolatileLong1 != 1234605616436508551L) { return 26; }
1899f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mVolatileLong2 != -1234605616436508551L) { return 27; }
1909f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
1919f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return 1000 + x;
1929f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
1939f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
1949f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    /*
1959f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     * Try to cause some unary operations.
1969f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     */
1979f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int unopTest(int x) {
1989f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        x = -x;
1999f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        x ^= 0xffffffff;
2009f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return x;
2019f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
2029f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2039f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int shiftTest1() {
2049f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        final int[] mBytes = {
2059f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            0x11, 0x22, 0x33, 0x44, 0x88, 0x99, 0xaa, 0xbb
2069f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        };
2079f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long l;
2089f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int i1, i2;
2099f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2109f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mBytes[0] != 0x11) return 20;
2119f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mBytes[1] != 0x22) return 21;
2129f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mBytes[2] != 0x33) return 22;
2139f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mBytes[3] != 0x44) return 23;
2149f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mBytes[4] != 0x88) return 24;
2159f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mBytes[5] != 0x99) return 25;
2169f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mBytes[6] != 0xaa) return 26;
2179f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (mBytes[7] != 0xbb) return 27;
2189f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2199f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        i1 = mBytes[0] | mBytes[1] << 8 | mBytes[2] << 16 | mBytes[3] << 24;
2209f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        i2 = mBytes[4] | mBytes[5] << 8 | mBytes[6] << 16 | mBytes[7] << 24;
2219f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        l = i1 | ((long)i2 << 32);
2229f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2239f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (i1 != 0x44332211) { return 0x80000000 | i1; }
2249f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (i2 != 0xbbaa9988) { return 2; }
2259f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (l != 0xbbaa998844332211L) { return 3; }
2269f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2279f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        l = (long)mBytes[0]
2289f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                | (long)mBytes[1] << 8
2299f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                | (long)mBytes[2] << 16
2309f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                | (long)mBytes[3] << 24
2319f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                | (long)mBytes[4] << 32
2329f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                | (long)mBytes[5] << 40
2339f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                | (long)mBytes[6] << 48
2349f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                | (long)mBytes[7] << 56;
2359f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2369f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (l != 0xbbaa998844332211L) { return 4; }
2379f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return 0;
2389f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
2399f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2409f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int shiftTest2() {
2419f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2429f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long    a = 0x11;
2439f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long    b = 0x22;
2449f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long    c = 0x33;
2459f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long    d = 0x44;
2469f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long    e = 0x55;
2479f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long    f = 0x66;
2489f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long    g = 0x77;
2499f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long    h = 0x88;
2509f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2519f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long    result = ((a << 56) | (b << 48) | (c << 40) | (d << 32) |
2529f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                          (e << 24) | (f << 16) | (g <<  8) | h);
2539f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2549f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (result != 0x1122334455667788L) { return 1; }
2559f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return 0;
2569f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
2579f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2589f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int unsignedShiftTest() {
2599f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        byte b = -4;
2609f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        short s = -4;
2619f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        char c = 0xfffc;
2629f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int i = -4;
2639f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2649f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        b >>>= 4;
2659f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        s >>>= 4;
2669f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        c >>>= 4;
2679f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        i >>>= 4;
2689f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2699f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if ((int) b != -1) { return 1; }
2709f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if ((int) s != -1) { return 2; }
2719f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if ((int) c != 0x0fff) { return 3; }
2729f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (i != 268435455) { return 4; }
2739f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return 0;
2749f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
2759f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2769f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int convTest() {
2779f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2789f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        float f;
2799f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        double d;
2809f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int i;
2819f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long l;
2829f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2839f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* int --> long */
2849f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        i = 7654;
2859f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        l = (long) i;
2869f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (l != 7654L) { return 1; }
2879f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2889f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        i = -7654;
2899f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        l = (long) i;
2909f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (l != -7654L) { return 2; }
2919f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2929f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* long --> int (with truncation) */
2939f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        l = 5678956789L;
2949f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        i = (int) l;
2959f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (i != 1383989493) { return 3; }
2969f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
2979f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        l = -5678956789L;
2989f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        i = (int) l;
2999f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (i != -1383989493) { return 4; }
300ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers
301ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers        /* long --> double */
302ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers        l = 0x7FFFFFFFL;
303ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers        d = (double) l;
304ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers        if (Double.doubleToRawLongBits(d) != 0x41dfffffffc00000L) { return 5; }
305ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers
306ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers        l = 0xFFFFFFFFL;
307ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers        d = (double) l;
308ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers        if (Double.doubleToRawLongBits(d) != 0x41efffffffe00000L) { return 6; }
309ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers
310ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers        l = 0x7FFFFFFFFFFFFFFFL;
311ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers        d = (double) l;
312ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers        if (Double.doubleToRawLongBits(d) != 0x43e0000000000000L) { return 7; }
313ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers
314ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers        l = 0xFFFFFFFFFFFFFFFFL;
315ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers        d = (double) l;
316ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers        if (Double.doubleToRawLongBits(d) != 0xbff0000000000000L) { return 8; }
317ef6a776af2b4b8607d5f91add0ed0e8497100e31Ian Rogers
3189f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return 0;
3199f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
3209f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
3219f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int charSubTest() {
3229f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
3239f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        char char1 = 0x00e9;
3249f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        char char2 = 0xffff;
3259f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int i;
3269f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
3279f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* chars are unsigned-expanded to ints before subtraction */
3289f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        i = char1 - char2;
3299f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (i != 0xffff00ea) { return 1; }
3309f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return 0;
3319f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
3329f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
3339f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    /*
3349f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     * We pass in the arguments and return the results so the compiler
3359f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     * doesn't do the math for us.  (x=70000, y=-3)
3369f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     */
3379f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int intOperTest(int x, int y) {
3389f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int[] results = new int[10];
3399f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
3409f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* this seems to generate "op-int" instructions */
3419f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[0] = x + y;
3429f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[1] = x - y;
3439f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[2] = x * y;
3449f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[3] = x * x;
3459f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[4] = x / y;
3469f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[5] = x % -y;
3479f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[6] = x & y;
3489f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[7] = x | y;
3499f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[8] = x ^ y;
3509f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
3519f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* this seems to generate "op-int/2addr" instructions */
3529f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[9] = x + ((((((((x + y) - y) * y) / y) % y) & y) | y) ^ y);
3539f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
3549f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* check this edge case while we're here (div-int/2addr) */
3559f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int minInt = -2147483648;
3569f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int negOne = -results[5];
3579f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int plusOne = 1;
3589f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int result = (((minInt + plusOne) - plusOne) / negOne) / negOne;
359f8641ce5def8efe641dbc6f9590098764ebcf470TDYa        int shouldBeZero = minInt % negOne;
3609f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
3619f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (result != minInt) { return 1;};
3629f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[0] != 69997) { return 2;};
3639f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[1] != 70003) { return 3;};
3649f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[2] != -210000) { return 4;};
3659f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[3] != 605032704) { return 5;};
3669f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[4] != -23333) { return 6;};
3679f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[5] != 1) { return 7;};
3689f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[6] != 70000) { return 8;};
3699f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[7] != -3) { return 9;};
3709f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[8] != -70003) { return 10;};
3719f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[9] != 70000) { return 11;};
372f8641ce5def8efe641dbc6f9590098764ebcf470TDYa        if (shouldBeZero != 0) { return 12;};
3739f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
3749f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return 0;
3759f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
3769f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
3779f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    /*
3789f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     * More operations, this time with 16-bit constants.  (x=77777)
3799f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     */
3809f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int lit16Test(int x) {
3819f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
3829f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int[] results = new int[8];
3839f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
3849f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* try to generate op-int/lit16" instructions */
3859f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[0] = x + 1000;
3869f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[1] = 1000 - x;
3879f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[2] = x * 1000;
3889f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[3] = x / 1000;
3899f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[4] = x % 1000;
3909f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[5] = x & 1000;
3919f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[6] = x | -1000;
3929f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[7] = x ^ -1000;
3939f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
3949f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[0] != 78777) { return 1; }
3959f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[1] != -76777) { return 2; }
3969f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[2] != 77777000) { return 3; }
3979f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[3] != 77) { return 4; }
3989f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[4] != 777) { return 5; }
3999f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[5] != 960) { return 6; }
4009f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[6] != -39) { return 7; }
4019f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[7] != -76855) { return 8; }
4029f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return 0;
4039f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
4049f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
4059f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    /*
4069f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     * More operations, this time with 8-bit constants.  (x=-55555)
4079f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     */
4089f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int lit8Test(int x) {
4099f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
4109f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int[] results = new int[8];
4119f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
4129f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* try to generate op-int/lit8" instructions */
4139f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[0] = x + 10;
4149f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[1] = 10 - x;
4159f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[2] = x * 10;
4169f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[3] = x / 10;
4179f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[4] = x % 10;
4189f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[5] = x & 10;
4199f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[6] = x | -10;
4209f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[7] = x ^ -10;
4219f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int minInt = -2147483648;
4229f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int result = minInt / -1;
4239f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (result != minInt) {return 1; }
4249f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[0] != -55545) {return 2; }
4259f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[1] != 55565) {return 3; }
4269f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[2] != -555550) {return 4; }
4279f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[3] != -5555) {return 5; }
4289f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[4] != -5) {return 6; }
4299f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[5] != 8) {return 7; }
4309f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[6] != -1) {return 8; }
4319f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[7] != 55563) {return 9; }
4329f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return 0;
4339f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
4349f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
4359f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
4369f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    /*
4379f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     * Shift some data.  (value=0xff00aa01, dist=8)
4389f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     */
4399f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int intShiftTest(int value, int dist) {
4409f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int results[] = new int[4];
4419f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[0] = value << dist;
4429f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[1] = value >> dist;
4439f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[2] = value >>> dist;
4449f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[3] = (((value << dist) >> dist) >>> dist) << dist;
4459f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[0] != 0x00aa0100) {return 1; }
4469f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[1] != 0xffff00aa) {return 2; }
4479f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[2] != 0x00ff00aa) {return 3; }
4489f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[3] != 0xaa00) {return 4; }
4499f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return 0;
4509f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
4519f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
4529f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    /*
4539f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     * We pass in the arguments and return the results so the compiler
4549f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     * doesn't do the math for us.  (x=70000000000, y=-3)
4559f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     */
4569f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int longOperTest(long x, long y) {
4579f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long[] results = new long[10];
4589f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
4599f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* this seems to generate "op-long" instructions */
4609f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[0] = x + y;
4619f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[1] = x - y;
4629f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[2] = x * y;
4639f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[3] = x * x;
4649f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[4] = x / y;
4659f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[5] = x % -y;
4669f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[6] = x & y;
4679f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[7] = x | y;
4689f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[8] = x ^ y;
4699f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* this seems to generate "op-long/2addr" instructions */
4709f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[9] = x + ((((((((x + y) - y) * y) / y) % y) & y) | y) ^ y);
4719f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* check this edge case while we're here (div-long/2addr) */
4729f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long minLong = -9223372036854775808L;
4739f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long negOne = -results[5];
4749f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long plusOne = 1;
4759f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long result = (((minLong + plusOne) - plusOne) / negOne) / negOne;
4769f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (result != minLong) { return 1; }
4779f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[0] != 69999999997L) { return 2; }
4789f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[1] != 70000000003L) { return 3; }
4799f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[2] != -210000000000L) { return 4; }
4809f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[3] != -6833923606740729856L) { return 5; }    // overflow
4819f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[4] != -23333333333L) { return 6; }
4829f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[5] != 1) { return 7; }
4839f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[6] != 70000000000L) { return 8; }
4849f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[7] != -3) { return 9; }
4859f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[8] != -70000000003L) { return 10; }
4869f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[9] != 70000000000L) { return 11; }
4879f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results.length != 10) { return 12; }
4889f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return 0;
4899f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
4909f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
4919f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    /*
4929f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     * Shift some data.  (value=0xd5aa96deff00aa01, dist=16)
4939f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     */
4949f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static long longShiftTest(long value, int dist) {
4959f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        long results[] = new long[4];
4969f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[0] = value << dist;
4979f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[1] = value >> dist;
4989f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[2] = value >>> dist;
4999f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        results[3] = (((value << dist) >> dist) >>> dist) << dist;
5009f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[0] != 0x96deff00aa010000L) { return results[0]; }
5019f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[1] != 0xffffd5aa96deff00L) { return results[1]; }
5029f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[2] != 0x0000d5aa96deff00L) { return results[2]; }
5039f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results[3] != 0xffff96deff000000L) { return results[3]; }
5049f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (results.length != 4) { return 5; }
5059f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
5069f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return results[0];      // test return-long
5079f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
5089f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
5099f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int switchTest(int a) {
5109f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int res = 1234;
5119f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
5129f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        switch (a) {
5139f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case -1: res = 1; return res;
5149f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 0: res = 2; return res;
5159f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 1: /*correct*/ break;
5169f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 2: res = 3; return res;
5179f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 3: res = 4; return res;
5189f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 4: res = 5; return res;
5199f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            default: res = 6; return res;
5209f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
5219f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        switch (a) {
5229f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 3: res = 7; return res;
5239f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 4: res = 8; return res;
5249f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            default: /*correct*/ break;
5259f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
5269f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
5279f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        a = 0x12345678;
5289f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
5299f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        switch (a) {
5309f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 0x12345678: /*correct*/ break;
5319f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 0x12345679: res = 9; return res;
5329f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            default: res = 1; return res;
5339f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
5349f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        switch (a) {
5359f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 57: res = 10; return res;
5369f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case -6: res = 11; return res;
5379f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 0x12345678: /*correct*/ break;
5389f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 22: res = 12; return res;
5399f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 3: res = 13; return res;
5409f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            default: res = 14; return res;
5419f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
5429f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        switch (a) {
5439f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case -6: res = 15; return res;
5449f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 3: res = 16; return res;
5459f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            default: /*correct*/ break;
5469f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
5479f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
5489f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        a = -5;
5499f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        switch (a) {
5509f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 12: res = 17; return res;
5519f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case -5: /*correct*/ break;
5529f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            case 0: res = 18; return res;
5539f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            default: res = 19; return res;
5549f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
5559f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
5569f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        switch (a) {
5579f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            default: /*correct*/ break;
5589f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
5599f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return res;
5609f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
5619f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    /*
5629f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     * Test the integer comparisons in various ways.
5639f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     */
5649f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int testIntCompare(int minus, int plus, int plus2, int zero) {
5659f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int res = 1111;
5669f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
5679f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (minus > plus)
5689f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 1;
5699f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (minus >= plus)
5709f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 2;
5719f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus < minus)
5729f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 3;
5739f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus <= minus)
5749f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 4;
5759f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus == minus)
5769f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 5;
5779f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus != plus2)
5789f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 6;
5799f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
5809f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* try a branch-taken */
5819f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus != minus) {
5829f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            res = res;
5839f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
5849f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 7;
5859f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
5869f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
5879f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (minus > 0)
5889f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 8;
5899f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (minus >= 0)
5909f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 9;
5919f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus < 0)
5929f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 10;
5939f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus <= 0)
5949f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 11;
5959f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus == 0)
5969f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 12;
5979f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (zero != 0)
5989f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 13;
5999f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6009f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (zero == 0) {
6019f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            res = res;
6029f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
6039f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 14;
6049f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
6059f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return res;
6069f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
6079f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6089f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    /*
6099f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     * Test cmp-long.
6109f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     *
6119f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     * minus=-5, alsoMinus=0xFFFFFFFF00000009, plus=4, alsoPlus=8
6129f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     */
6139f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int testLongCompare(long minus, long alsoMinus, long plus,
6149f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                               long alsoPlus) {
6159f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int res = 2222;
6169f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6179f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (minus > plus)
6189f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 2;
6199f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus < minus)
6209f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 3;
6219f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus == minus)
6229f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 4;
6239f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6249f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus >= plus+1)
6259f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 5;
6269f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (minus >= minus+1)
6279f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 6;
6289f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6299f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* try a branch-taken */
6309f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus != minus) {
6319f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            res = res;
6329f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
6339f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 7;
6349f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
6359f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6369f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* compare when high words are equal but low words differ */
6379f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus > alsoPlus)
6389f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 8;
6399f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (alsoPlus < plus)
6409f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 9;
6419f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (alsoPlus == plus)
6429f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 10;
6439f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6449f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        /* high words are equal, low words have apparently different signs */
6459f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (minus < alsoMinus)      // bug!
6469f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 11;
6479f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (alsoMinus > minus)
6489f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 12;
6499f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (alsoMinus == minus)
6509f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 13;
6519f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6529f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return res;
6539f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
6549f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6559f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    /*
6569f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     * Test cmpl-float and cmpg-float.
6579f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom     */
6589f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int testFloatCompare(float minus, float plus, float plus2,
6599f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                                float nan) {
6609f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (minus > plus)
661644d5310d7759f6d531a2c4220b1e2cc8f3b72d3jeffhao            return 1;
6629f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus < minus)
663644d5310d7759f6d531a2c4220b1e2cc8f3b72d3jeffhao            return 2;
6649f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus == minus)
665644d5310d7759f6d531a2c4220b1e2cc8f3b72d3jeffhao            return 3;
6669f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus != plus2)
667644d5310d7759f6d531a2c4220b1e2cc8f3b72d3jeffhao            return 4;
6689f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6699f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus <= nan)
670644d5310d7759f6d531a2c4220b1e2cc8f3b72d3jeffhao            return 5;
6719f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus >= nan)
672644d5310d7759f6d531a2c4220b1e2cc8f3b72d3jeffhao            return 6;
6739f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (minus <= nan)
674644d5310d7759f6d531a2c4220b1e2cc8f3b72d3jeffhao            return 7;
6759f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (minus >= nan)
676644d5310d7759f6d531a2c4220b1e2cc8f3b72d3jeffhao            return 8;
6779f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (nan >= plus)
678644d5310d7759f6d531a2c4220b1e2cc8f3b72d3jeffhao            return 9;
6799f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (nan <= plus)
680644d5310d7759f6d531a2c4220b1e2cc8f3b72d3jeffhao            return 10;
6819f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6829f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (nan == nan)
683644d5310d7759f6d531a2c4220b1e2cc8f3b72d3jeffhao            return 11;
6849f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
685644d5310d7759f6d531a2c4220b1e2cc8f3b72d3jeffhao        return 3333;
6869f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
6879f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6889f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int testDoubleCompare(double minus, double plus, double plus2,
6899f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                                 double nan) {
6909f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6919f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int res = 4444;
6929f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
6939f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (minus > plus)
6949f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 1;
6959f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus < minus)
6969f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 2;
6979f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus == minus)
6989f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 3;
6999f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus != plus2)
7009f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 4;
7019f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
7029f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus <= nan)
7039f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 5;
7049f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (plus >= nan)
7059f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 6;
7069f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (minus <= nan)
7079f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 7;
7089f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (minus >= nan)
7099f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 8;
7109f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (nan >= plus)
7119f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 9;
7129f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (nan <= plus)
7139f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 10;
7149f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
7159f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (nan == nan)
7169f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 11;
7179f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return res;
7189f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
7199f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
7209f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int fibonacci(int n) {
7219f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (n == 0) {
7229f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 0;
7239f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else if (n == 1) {
7249f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return 1;
7259f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
7269f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom            return fibonacci(n - 1) + fibonacci(n - 2);
7279f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
7289f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
7299f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
730e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee    static int throwAndCatch() {
731bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom        try {
732bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            throwNullPointerException();
733bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            return 1;
734bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom        } catch (NullPointerException npe) {
735bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            return 0;
736bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom        }
737e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee    }
7389f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
7399f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int manyArgs(int a0, long a1, int a2, long a3, int a4, long a5,
7409f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                        int a6, int a7, double a8, float a9, double a10, short a11, int a12,
7419f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                        char a13, int a14, int a15, byte a16, boolean a17, int a18, int a19,
7429f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                        long a20, long a21, int a22, int a23, int a24, int a25, int a26)
7439f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    {
7449f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a0 != 0) return 0;
7459f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a1 !=  1L) return 1;
7469f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a2 != 2) return 2;
7479f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a3 != 3L) return 3;
7489f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a4 != 4) return 4;
7499f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a5 != 5L) return 5;
7509f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a6 != 6) return 6;
7519f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a7 != 7) return 7;
7529f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a8 != 8.0) return 8;
7539f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a9 !=  9.0f) return 9;
7549f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a10 != 10.0) return 10;
7559f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a11 != (short)11) return 11;
7569f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a12 != 12) return 12;
7579f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a13 != (char)13) return 13;
7589f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a14 != 14) return 14;
7599f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a15 != 15) return 15;
7609f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a16 != (byte)-16) return 16;
7619f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a17 !=  true) return 17;
7629f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a18 != 18) return 18;
7639f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a19 != 19) return 19;
7649f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a20 !=  20L) return 20;
7659f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a21 != 21L) return 21;
7669f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a22 != 22) return 22;
7679f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a23 != 23) return 23;
7689f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a24 != 24) return 24;
7699f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a25 != 25) return 25;
7709f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (a26 != 26) return 26;
7719f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return -1;
7729f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
7739f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
7749f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    int virtualCall(int a)
7759f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    {
7769f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return a * 2;
7779f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
7789f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
7799f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    void setFoo(int a)
7809f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    {
7819f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        foo_ = a;
7829f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
7839f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
7849f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    int getFoo()
7859f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    {
7869f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return foo_;
7879f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
7889f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
7899f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int staticCall(int a)
7909f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    {
791dd7bf568b28efb65c0322979790552946eda1fc1Ian Rogers        Main foo = new Main();
7929f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return foo.virtualCall(a);
7939f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
7949f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
7959f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    static int testIGetPut(int a)
7969f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    {
797dd7bf568b28efb65c0322979790552946eda1fc1Ian Rogers        Main foo = new Main(99);
798dd7bf568b28efb65c0322979790552946eda1fc1Ian Rogers        Main foo123 = new Main();
7999f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        int z  = foo.getFoo();
8009f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        z += a;
8019f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        z += foo123.getFoo();
8029f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        foo.setFoo(z);
8039f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        return foo.getFoo();
8049f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
8059f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
806ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers    static int throwClassCast(Object o) {
807ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers      return ((Integer)o).intValue();
808ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers    }
809ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers
810ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers    static int testClassCast() {
811ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers      int res = 0;
812ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers      try {
813ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers        res += throwClassCast(Integer.valueOf(123));
814ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers      } catch(ClassCastException e) {
815ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers        res += 456;
816ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers      }
817ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers      try {
818ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers        res += throwClassCast(new Short((short)321));
819ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers      } catch(ClassCastException e) {
820ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers        res += 765;
821ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers      }
822ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers      return res;
823ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers    }
824ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers
825e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers    static void throwArrayStoreException(Object[] array, Object element) {
826e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers      array[0] = element;
827e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers    }
828e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers
829e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers    static int testArrayStoreException() {
830e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers      int res=0;
831e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers      Object[] array = new Number[2];
832e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers      try {
833e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers        throwArrayStoreException(array, null);
834e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers        res += 1;
835e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers      } catch(ArrayStoreException e) {
836e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers        res += 2;
837e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers      }
838e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers      try {
839e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers        throwArrayStoreException(array, Integer.valueOf(1));
840e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers        res += 10;
841e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers      } catch(ArrayStoreException e) {
842e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers        res += 20;
843e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers      }
844e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers      try {
845e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers        throwArrayStoreException(array, "hello MTV-44");
846e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers        res += 100;
847e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers      } catch(ArrayStoreException e) {
848e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers        res += 200;
849e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers      }
850e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers      return res;
851e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers    }
852e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers
853932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers    static long recursion_count_;
854932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers    static void throwStackOverflow(long l) {
855932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers      recursion_count_++;
856932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers      throwStackOverflow(recursion_count_);
857932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers    }
858932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers
859932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers    static long testStackOverflow() {
860932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers      try {
861932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers        throwStackOverflow(0);
862932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers        if (recursion_count_ != 0) {
863932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers          return recursion_count_;
864932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers        } else {
865932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers          return -1;
866932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers        }
867932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers      } catch(StackOverflowError soe) {
868932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers        return 0;
869932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers      }
870932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers    }
871932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers
872b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers    static int testArrayAllocation() {
873b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers      int res = 0;
874b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers      try {
875b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers        int[] x = new int[-1];
876b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers        res += 1;
877b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers      } catch (NegativeArraySizeException e) {
878b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers        res += 2;
879b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers      }
880b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers      try {
881b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers        int[] x = new int [1];
882b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers        res += 10;
883b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers      } catch (Throwable e) {
884b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers        res += 20;
885b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers      }
886b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers      return res;
887b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers    }
888b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers
8899f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    public static void main(String[] args) {
890bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom        boolean failure = false;
891f0cde549bed96e16401a347a4511b59130c61e84buzbee        int res;
892f0cde549bed96e16401a347a4511b59130c61e84buzbee        long lres;
893f0cde549bed96e16401a347a4511b59130c61e84buzbee
894f0cde549bed96e16401a347a4511b59130c61e84buzbee        lres = divideLongByBillion(123000000000L);
895f0cde549bed96e16401a347a4511b59130c61e84buzbee        if (lres == 123) {
896f0cde549bed96e16401a347a4511b59130c61e84buzbee            System.out.println("divideLongByBillion PASSED");
897f0cde549bed96e16401a347a4511b59130c61e84buzbee        } else {
898f0cde549bed96e16401a347a4511b59130c61e84buzbee            System.out.println("divideLongByBillion FAILED: " + lres);
899bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
900f0cde549bed96e16401a347a4511b59130c61e84buzbee        }
901f0cde549bed96e16401a347a4511b59130c61e84buzbee        res = unopTest(38);
9029f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 37) {
9031da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("unopTest PASSED");
9049f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
9051da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("unopTest FAILED: " + res);
906bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
9079f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
9089f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = shiftTest1();
9099f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 0) {
9101da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("shiftTest1 PASSED");
9119f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
9121da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("shiftTest1 FAILED: " + res);
913bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
9149f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
9159f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = shiftTest2();
9169f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 0) {
9171da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("shiftTest2 PASSED");
9189f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
9191da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("shiftTest2 FAILED: " + res);
920bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
9219f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
9229f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = unsignedShiftTest();
9239f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 0) {
9241da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("unsignedShiftTest PASSED");
9259f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
9261da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("unsignedShiftTest FAILED: " + res);
927bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
9289f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
9299f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = convTest();
9309f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 0) {
9311da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("convTest PASSED");
9329f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
9331da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("convTest FAILED: " + res);
934bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
9359f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
9369f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = charSubTest();
9379f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 0) {
9381da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("charSubTest PASSED");
9399f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
9401da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("charSubTest FAILED: " + res);
941bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
9429f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
9439f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = intOperTest(70000, -3);
9449f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 0) {
9451da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("intOperTest PASSED");
9469f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
9471da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("intOperTest FAILED: " + res);
948bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
9499f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
95025c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        res = lit16Test(77777);
95125c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        if (res == 0) {
95225c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("lit16Test PASSED");
95325c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        } else {
95425c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("lit16Test FAILED: " + res);
95525c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            failure = true;
95625c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        }
95725c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        res = lit8Test(-55555);
95825c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        if (res == 0) {
95925c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("lit8Test PASSED");
96025c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        } else {
96125c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("lit8Test FAILED: " + res);
96225c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            failure = true;
96325c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        }
96425c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        res = intShiftTest(0xff00aa01, 8);
96525c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        if (res == 0) {
96625c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("intShiftTest PASSED");
96725c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        } else {
96825c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("intShiftTest FAILED: " + res);
96925c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            failure = true;
97025c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        }
9719f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = longOperTest(70000000000L, -3L);
9729f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 0) {
9731da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("longOperTest PASSED");
9749f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
9751da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("longOperTest FAILED: " + res);
976bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
9779f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
978f0cde549bed96e16401a347a4511b59130c61e84buzbee        lres = longShiftTest(0xd5aa96deff00aa01L, 16);
9799f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (lres == 0x96deff00aa010000L) {
9801da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("longShiftTest PASSED");
9819f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
982f71f950c8c653b6079bdb0875e16f532a6d2cac1Dmitry Petrochenko            System.out.println("longShiftTest FAILED: " + lres);
983bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
9849f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
9859f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
9869f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = switchTest(1);
9879f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 1234) {
9881da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("switchTest PASSED");
9899f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
9901da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("switchTest FAILED: " + res);
991bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
9929f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
9939f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
9949f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = testIntCompare(-5, 4, 4, 0);
9959f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 1111) {
9961da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("testIntCompare PASSED");
9979f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
9981da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("testIntCompare FAILED: " + res);
999bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
10009f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
10019f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
10029f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = testLongCompare(-5L, -4294967287L, 4L, 8L);
10039f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 2222) {
10041da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("testLongCompare PASSED");
10059f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
10061da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("testLongCompare FAILED: " + res);
1007bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
10089f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
10099f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
10109f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = testFloatCompare(-5.0f, 4.0f, 4.0f, (1.0f/0.0f) / (1.0f/0.0f));
10119f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 3333) {
10121da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("testFloatCompare PASSED");
10139f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
10141da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("testFloatCompare FAILED: " + res);
1015bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
10169f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
10179f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
10189f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = testDoubleCompare(-5.0, 4.0, 4.0, (1.0/0.0) / (1.0/0.0));
10199f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 4444) {
10201da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("testDoubleCompare PASSED");
10219f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
10221da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("testDoubleCompare FAILED: " + res);
1023bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
10249f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
10259f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
10269f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = fibonacci(10);
10279f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 55) {
10281da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("fibonacci PASSED");
10299f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
10301da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("fibonacci FAILED: " + res);
1031bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
10329f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
10339f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
1034e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee        res = throwAndCatch();
1035e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee        if (res == 0) {
1036bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            System.out.println("throwAndCatch PASSED");
1037e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee        } else {
1038bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            System.out.println("throwAndCatch FAILED: " + res);
1039bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
1040e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee        }
10419f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
1042ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers        res = testClassCast();
1043ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers        if (res == 888) {
1044ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers            System.out.println("testClassCast PASSED");
1045ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers        } else {
1046ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers            System.out.println("testClassCast FAILED: " + res);
1047ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers            failure = true;
1048ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers        }
1049ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers
1050e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers        res = testArrayStoreException();
1051e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers        if (res == 211) {
1052e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers          System.out.println("testArrayStore PASSED");
1053e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers        } else {
1054e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers          System.out.println("testArrayStore FAILED: " + res);
1055e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers          failure = true;
1056e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers        }
1057e51a511ccee3f3c0120807321bcc160fcaa664beIan Rogers
1058932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers        lres= testStackOverflow();
1059932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers        if (lres == 0) {
1060932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers            System.out.println("testStackOverflow PASSED");
1061932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers        } else {
1062932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers            System.out.println("testStackOverflow FAILED: " + lres);
1063932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers            failure = true;
1064932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers        }
1065932746a4f22951abcba7b7c4c94c27b1bf164272Ian Rogers
1066b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers        res = testArrayAllocation();
1067b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers        if (res == 12) {
1068b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers          System.out.println("testArrayAllocation PASSED");
1069b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers        } else {
1070b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers          System.out.println("testArrayAllocation FAILED: " + res);
1071b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers          failure = true;
1072b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers        }
1073b886da8e3c26443ab4d2aa63268bd673c354c3d2Ian Rogers
10749f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = manyArgs(0, 1L, 2, 3L, 4, 5L, 6, 7, 8.0, 9.0f, 10.0,
10759f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                       (short)11, 12, (char)13, 14, 15, (byte)-16, true, 18,
10769f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom                       19, 20L, 21L, 22, 23, 24, 25, 26);
10779f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == -1) {
10781da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("manyArgs PASSED");
10799f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
10801da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("manyArgs FAILED: " + res);
1081bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
10829f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
10839f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
10849f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = staticCall(3);
10859f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 6) {
10861da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("virtualCall PASSED");
10879f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
10881da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("virtualCall FAILED: " + res);
1089bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
10909f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
10919f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
10929f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = testIGetPut(111);
10939f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 333) {
10941da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("testGetPut PASSED");
10959f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
10961da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("testGetPut FAILED: " + res);
1097bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
10989f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
10999f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom
11009f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        res = staticFieldTest(404);
11019f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        if (res == 1404) {
11021da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("staticFieldTest PASSED");
11039f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        } else {
11041da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("staticFieldTest FAILED: " + res);
1105bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
11069f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom        }
11071b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee
11081b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee        res = catchBlock(1000);
11091b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee        if (res == 1579) {
111025c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("catchBlock(1000) PASSED");
11111b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee        } else {
111225c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("catchBlock(1000) FAILED: " + res);
1113bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
11141b4c85959b3d9a4a33bc2160c46c1bbde67350c7buzbee        }
111525c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        res = catchBlock(7000);
111625c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        if (res == 7777) {
111725c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("catchBlock(7000) PASSED");
111825c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        } else {
111925c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("catchBlock(7000) FAILED: " + res);
112025c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            failure = true;
112125c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        }
1122e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee        res = catchBlockNoThrow(1000);
1123e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee        if (res == 1123) {
1124e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee            System.out.println("catchBlockNoThrow PASSED");
1125e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee        } else {
1126e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee            System.out.println("catchBlockNoThrow FAILED: " + res);
1127bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
1128e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee        }
1129e9a72f6a1a84f4d9af0b07dd289b89e45ffb32d5buzbee
11304a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee        res = superTest(4141);
11314a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee        if (res == 4175) {
11321da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("superTest PASSED");
11334a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee        } else {
11341da522de18ac6e4c2913c3233529e9dd115059f8buzbee            System.out.println("superTest FAILED: " + res);
1135bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
11364a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee        }
11372a475e7b93d754e0a7525bb5c7059386307ea63abuzbee
113825c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        res = constClassTest(1111);
113925c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        if (res == 2222) {
114025c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("constClassTest PASSED");
114125c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        } else {
114225c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("constClassTest FAILED: " + res);
114325c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            failure = true;
114425c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom        }
114525c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom
11462a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        res = constStringTest(10);
11472a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        if (res == 22) {
114825c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("constStringTest PASSED");
11492a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        } else {
115025c3325bf95036bf325fc7cb21b4fd6d40282857Brian Carlstrom            System.out.println("constStringTest FAILED: " + res);
1151bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
11522a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        }
11532a475e7b93d754e0a7525bb5c7059386307ea63abuzbee
11542a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        res = instanceTest(10);
11555d40f182181488eb39ccd19ffd306bb1fb9740c9Brian Carlstrom        if (res == 1436) {
11562a475e7b93d754e0a7525bb5c7059386307ea63abuzbee            System.out.println("instanceTest PASSED");
11572a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        } else {
11582a475e7b93d754e0a7525bb5c7059386307ea63abuzbee            System.out.println("instanceTest FAILED: " + res);
1159bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom            failure = true;
11602a475e7b93d754e0a7525bb5c7059386307ea63abuzbee        }
1161bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom
1162bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom        System.exit(failure ? 1 : 0);
11634a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee    }
11644a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee}
11654a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee
11664a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbeeclass IntMathBase {
11674a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee    IntMathBase() {
11684a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee    }
11694a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee
11704a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee    int tryThing() {
11714a3164faefd255b1c1e911e7ad7c3d57749caaf6buzbee        return 7;
11729f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom    }
11739f30b38d74990286ce27c3a45368f73dbe3638f0Brian Carlstrom}
1174