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