1*795d594fSAndroid Build Coastguard Worker /* 2*795d594fSAndroid Build Coastguard Worker * Copyright (C) 2024 The Android Open Source Project 3*795d594fSAndroid Build Coastguard Worker * 4*795d594fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*795d594fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*795d594fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*795d594fSAndroid Build Coastguard Worker * 8*795d594fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*795d594fSAndroid Build Coastguard Worker * 10*795d594fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*795d594fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*795d594fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*795d594fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*795d594fSAndroid Build Coastguard Worker * limitations under the License. 15*795d594fSAndroid Build Coastguard Worker */ 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Worker class Main { 18*795d594fSAndroid Build Coastguard Worker 19*795d594fSAndroid Build Coastguard Worker private static class ByteArrayTests { init(byte[] arr)20*795d594fSAndroid Build Coastguard Worker public static byte[] init(byte[] arr) { 21*795d594fSAndroid Build Coastguard Worker for (byte i = 0; i < arr.length; i++) { 22*795d594fSAndroid Build Coastguard Worker arr[i] = (byte) i; 23*795d594fSAndroid Build Coastguard Worker } 24*795d594fSAndroid Build Coastguard Worker return arr; 25*795d594fSAndroid Build Coastguard Worker } 26*795d594fSAndroid Build Coastguard Worker assertEquals(int expected, int actual)27*795d594fSAndroid Build Coastguard Worker public static void assertEquals(int expected, int actual) { 28*795d594fSAndroid Build Coastguard Worker if (expected != actual) { 29*795d594fSAndroid Build Coastguard Worker throw new Error("Expected " + expected + ", got " + actual); 30*795d594fSAndroid Build Coastguard Worker } 31*795d594fSAndroid Build Coastguard Worker } 32*795d594fSAndroid Build Coastguard Worker createArrayOfZeroes(int size)33*795d594fSAndroid Build Coastguard Worker public static byte[] createArrayOfZeroes(int size) { 34*795d594fSAndroid Build Coastguard Worker byte[] arr = new byte[size]; 35*795d594fSAndroid Build Coastguard Worker return arr; 36*795d594fSAndroid Build Coastguard Worker } 37*795d594fSAndroid Build Coastguard Worker createIncrementedArray(int size)38*795d594fSAndroid Build Coastguard Worker public static byte[] createIncrementedArray(int size) { 39*795d594fSAndroid Build Coastguard Worker byte[] arr = new byte[size]; 40*795d594fSAndroid Build Coastguard Worker init(arr); 41*795d594fSAndroid Build Coastguard Worker return arr; 42*795d594fSAndroid Build Coastguard Worker } 43*795d594fSAndroid Build Coastguard Worker checkIncrementedArray(byte[] dst)44*795d594fSAndroid Build Coastguard Worker public static void checkIncrementedArray(byte[] dst) { 45*795d594fSAndroid Build Coastguard Worker for (byte i = 0; i < dst.length; i++) { 46*795d594fSAndroid Build Coastguard Worker assertEquals(i, dst[i]); 47*795d594fSAndroid Build Coastguard Worker } 48*795d594fSAndroid Build Coastguard Worker } 49*795d594fSAndroid Build Coastguard Worker $noinline$test1(byte[] src, byte[] dst)50*795d594fSAndroid Build Coastguard Worker public static void $noinline$test1(byte[] src, byte[] dst) { 51*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, 15); 52*795d594fSAndroid Build Coastguard Worker } 53*795d594fSAndroid Build Coastguard Worker $noinline$test2(byte[] src, byte[] dst)54*795d594fSAndroid Build Coastguard Worker public static void $noinline$test2(byte[] src, byte[] dst) { 55*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, 127); 56*795d594fSAndroid Build Coastguard Worker } 57*795d594fSAndroid Build Coastguard Worker $noinline$test3()58*795d594fSAndroid Build Coastguard Worker public static byte[] $noinline$test3() { 59*795d594fSAndroid Build Coastguard Worker byte size = 15; 60*795d594fSAndroid Build Coastguard Worker byte[] src = new byte[size]; 61*795d594fSAndroid Build Coastguard Worker src = init(src); 62*795d594fSAndroid Build Coastguard Worker byte[] dst = new byte[size]; 63*795d594fSAndroid Build Coastguard Worker 64*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, size); 65*795d594fSAndroid Build Coastguard Worker return dst; 66*795d594fSAndroid Build Coastguard Worker } 67*795d594fSAndroid Build Coastguard Worker $noinline$test4()68*795d594fSAndroid Build Coastguard Worker public static byte[] $noinline$test4() { 69*795d594fSAndroid Build Coastguard Worker int size = 127; 70*795d594fSAndroid Build Coastguard Worker byte[] src = new byte[size]; 71*795d594fSAndroid Build Coastguard Worker src = init(src); 72*795d594fSAndroid Build Coastguard Worker byte[] dst = new byte[size]; 73*795d594fSAndroid Build Coastguard Worker 74*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, size); 75*795d594fSAndroid Build Coastguard Worker return dst; 76*795d594fSAndroid Build Coastguard Worker } 77*795d594fSAndroid Build Coastguard Worker $noinline$test5()78*795d594fSAndroid Build Coastguard Worker public static byte[] $noinline$test5() { 79*795d594fSAndroid Build Coastguard Worker byte[] src = new byte[80]; 80*795d594fSAndroid Build Coastguard Worker src = init(src); 81*795d594fSAndroid Build Coastguard Worker byte[] dst = new byte[80]; 82*795d594fSAndroid Build Coastguard Worker 83*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, 80); 84*795d594fSAndroid Build Coastguard Worker return dst; 85*795d594fSAndroid Build Coastguard Worker } 86*795d594fSAndroid Build Coastguard Worker $noinline$test6()87*795d594fSAndroid Build Coastguard Worker public static byte[] $noinline$test6() { 88*795d594fSAndroid Build Coastguard Worker byte[] src = new byte[127]; 89*795d594fSAndroid Build Coastguard Worker src = init(src); 90*795d594fSAndroid Build Coastguard Worker byte[] dst = new byte[127]; 91*795d594fSAndroid Build Coastguard Worker 92*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 100, 27); 93*795d594fSAndroid Build Coastguard Worker return dst; 94*795d594fSAndroid Build Coastguard Worker } check6(byte[] dst)95*795d594fSAndroid Build Coastguard Worker public static void check6(byte[] dst) { 96*795d594fSAndroid Build Coastguard Worker for (byte i = 0; i < 100; i++) { 97*795d594fSAndroid Build Coastguard Worker assertEquals(0, dst[i]); 98*795d594fSAndroid Build Coastguard Worker } 99*795d594fSAndroid Build Coastguard Worker for (byte i = 100; i < 127; i++) { 100*795d594fSAndroid Build Coastguard Worker assertEquals(i - 100, dst[i]); 101*795d594fSAndroid Build Coastguard Worker } 102*795d594fSAndroid Build Coastguard Worker } 103*795d594fSAndroid Build Coastguard Worker $noinline$test7()104*795d594fSAndroid Build Coastguard Worker public static byte[] $noinline$test7() { 105*795d594fSAndroid Build Coastguard Worker byte[] src = new byte[127]; 106*795d594fSAndroid Build Coastguard Worker src = init(src); 107*795d594fSAndroid Build Coastguard Worker 108*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, src, 100, 27); 109*795d594fSAndroid Build Coastguard Worker return src; 110*795d594fSAndroid Build Coastguard Worker } check7(byte[] dst)111*795d594fSAndroid Build Coastguard Worker public static void check7(byte[] dst) { 112*795d594fSAndroid Build Coastguard Worker for (byte i = 0; i < 100; i++) { 113*795d594fSAndroid Build Coastguard Worker assertEquals(i, dst[i]); 114*795d594fSAndroid Build Coastguard Worker } 115*795d594fSAndroid Build Coastguard Worker for (byte i = 100; i < 127; i++) { 116*795d594fSAndroid Build Coastguard Worker assertEquals(i - 100, dst[i]); 117*795d594fSAndroid Build Coastguard Worker } 118*795d594fSAndroid Build Coastguard Worker } 119*795d594fSAndroid Build Coastguard Worker $noinline$test8()120*795d594fSAndroid Build Coastguard Worker public static byte[] $noinline$test8() { 121*795d594fSAndroid Build Coastguard Worker byte[] src = new byte[127]; 122*795d594fSAndroid Build Coastguard Worker src = init(src); 123*795d594fSAndroid Build Coastguard Worker 124*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 100, src, 0, 27); 125*795d594fSAndroid Build Coastguard Worker return src; 126*795d594fSAndroid Build Coastguard Worker } check8(byte[] dst)127*795d594fSAndroid Build Coastguard Worker public static void check8(byte[] dst) { 128*795d594fSAndroid Build Coastguard Worker for (byte i = 0; i < 27; i++) { 129*795d594fSAndroid Build Coastguard Worker assertEquals(100 + i, dst[i]); 130*795d594fSAndroid Build Coastguard Worker } 131*795d594fSAndroid Build Coastguard Worker for (byte i = 27; i < 127; i++) { 132*795d594fSAndroid Build Coastguard Worker assertEquals(i, dst[i]); 133*795d594fSAndroid Build Coastguard Worker } 134*795d594fSAndroid Build Coastguard Worker } 135*795d594fSAndroid Build Coastguard Worker $noinline$test9(byte[] src, byte[] dst, byte i)136*795d594fSAndroid Build Coastguard Worker public static void $noinline$test9(byte[] src, byte[] dst, byte i) { 137*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, i); 138*795d594fSAndroid Build Coastguard Worker } 139*795d594fSAndroid Build Coastguard Worker runTests()140*795d594fSAndroid Build Coastguard Worker public static void runTests() { 141*795d594fSAndroid Build Coastguard Worker System.out.print("[ByteArrayTests]: "); 142*795d594fSAndroid Build Coastguard Worker 143*795d594fSAndroid Build Coastguard Worker byte[] src15 = createIncrementedArray(15); 144*795d594fSAndroid Build Coastguard Worker byte[] dst15 = createArrayOfZeroes(15); 145*795d594fSAndroid Build Coastguard Worker $noinline$test1(src15, dst15); 146*795d594fSAndroid Build Coastguard Worker checkIncrementedArray(dst15); 147*795d594fSAndroid Build Coastguard Worker 148*795d594fSAndroid Build Coastguard Worker byte[] src150 = createIncrementedArray(127); 149*795d594fSAndroid Build Coastguard Worker byte[] dst150 = createArrayOfZeroes(127); 150*795d594fSAndroid Build Coastguard Worker $noinline$test2(src150, dst150); 151*795d594fSAndroid Build Coastguard Worker checkIncrementedArray(dst150); 152*795d594fSAndroid Build Coastguard Worker 153*795d594fSAndroid Build Coastguard Worker checkIncrementedArray($noinline$test3()); 154*795d594fSAndroid Build Coastguard Worker checkIncrementedArray($noinline$test4()); 155*795d594fSAndroid Build Coastguard Worker checkIncrementedArray($noinline$test5()); 156*795d594fSAndroid Build Coastguard Worker 157*795d594fSAndroid Build Coastguard Worker check6($noinline$test6()); 158*795d594fSAndroid Build Coastguard Worker check7($noinline$test7()); 159*795d594fSAndroid Build Coastguard Worker check8($noinline$test8()); 160*795d594fSAndroid Build Coastguard Worker 161*795d594fSAndroid Build Coastguard Worker for (byte i = 1; i < 127; i++) { 162*795d594fSAndroid Build Coastguard Worker byte[] src = createIncrementedArray(i); 163*795d594fSAndroid Build Coastguard Worker byte[] dst = createArrayOfZeroes(i); 164*795d594fSAndroid Build Coastguard Worker $noinline$test9(src, dst, i); 165*795d594fSAndroid Build Coastguard Worker checkIncrementedArray(dst); 166*795d594fSAndroid Build Coastguard Worker } 167*795d594fSAndroid Build Coastguard Worker System.out.println("passed"); 168*795d594fSAndroid Build Coastguard Worker } 169*795d594fSAndroid Build Coastguard Worker } 170*795d594fSAndroid Build Coastguard Worker 171*795d594fSAndroid Build Coastguard Worker private static class CharArrayTests { 172*795d594fSAndroid Build Coastguard Worker init(char[] arr)173*795d594fSAndroid Build Coastguard Worker public static char[] init(char[] arr) { 174*795d594fSAndroid Build Coastguard Worker for (int i = 0; i < arr.length; i++) { 175*795d594fSAndroid Build Coastguard Worker arr[i] = (char) i; 176*795d594fSAndroid Build Coastguard Worker } 177*795d594fSAndroid Build Coastguard Worker return arr; 178*795d594fSAndroid Build Coastguard Worker } 179*795d594fSAndroid Build Coastguard Worker assertEquals(int expected, int actual)180*795d594fSAndroid Build Coastguard Worker public static void assertEquals(int expected, int actual) { 181*795d594fSAndroid Build Coastguard Worker if (expected != actual) { 182*795d594fSAndroid Build Coastguard Worker throw new Error("Expected " + expected + ", got " + actual); 183*795d594fSAndroid Build Coastguard Worker } 184*795d594fSAndroid Build Coastguard Worker } 185*795d594fSAndroid Build Coastguard Worker createArrayOfZeroes(int size)186*795d594fSAndroid Build Coastguard Worker public static char[] createArrayOfZeroes(int size) { 187*795d594fSAndroid Build Coastguard Worker char[] arr = new char[size]; 188*795d594fSAndroid Build Coastguard Worker return arr; 189*795d594fSAndroid Build Coastguard Worker } 190*795d594fSAndroid Build Coastguard Worker createIncrementedArray(int size)191*795d594fSAndroid Build Coastguard Worker public static char[] createIncrementedArray(int size) { 192*795d594fSAndroid Build Coastguard Worker char[] arr = new char[size]; 193*795d594fSAndroid Build Coastguard Worker init(arr); 194*795d594fSAndroid Build Coastguard Worker return arr; 195*795d594fSAndroid Build Coastguard Worker } 196*795d594fSAndroid Build Coastguard Worker checkIncrementedArray(char[] dst)197*795d594fSAndroid Build Coastguard Worker public static void checkIncrementedArray(char[] dst) { 198*795d594fSAndroid Build Coastguard Worker for (int i = 0; i < dst.length; i++) { 199*795d594fSAndroid Build Coastguard Worker assertEquals(i, dst[i]); 200*795d594fSAndroid Build Coastguard Worker } 201*795d594fSAndroid Build Coastguard Worker } 202*795d594fSAndroid Build Coastguard Worker $noinline$test1(char[] src, char[] dst)203*795d594fSAndroid Build Coastguard Worker public static void $noinline$test1(char[] src, char[] dst) { 204*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, 15); 205*795d594fSAndroid Build Coastguard Worker } 206*795d594fSAndroid Build Coastguard Worker $noinline$test2(char[] src, char[] dst)207*795d594fSAndroid Build Coastguard Worker public static void $noinline$test2(char[] src, char[] dst) { 208*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, 150); 209*795d594fSAndroid Build Coastguard Worker } 210*795d594fSAndroid Build Coastguard Worker $noinline$test3()211*795d594fSAndroid Build Coastguard Worker public static char[] $noinline$test3() { 212*795d594fSAndroid Build Coastguard Worker int size = 15; 213*795d594fSAndroid Build Coastguard Worker char[] src = new char[size]; 214*795d594fSAndroid Build Coastguard Worker src = init(src); 215*795d594fSAndroid Build Coastguard Worker char[] dst = new char[size]; 216*795d594fSAndroid Build Coastguard Worker 217*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, size); 218*795d594fSAndroid Build Coastguard Worker return dst; 219*795d594fSAndroid Build Coastguard Worker } 220*795d594fSAndroid Build Coastguard Worker $noinline$test4()221*795d594fSAndroid Build Coastguard Worker public static char[] $noinline$test4() { 222*795d594fSAndroid Build Coastguard Worker int size = 150; 223*795d594fSAndroid Build Coastguard Worker char[] src = new char[size]; 224*795d594fSAndroid Build Coastguard Worker src = init(src); 225*795d594fSAndroid Build Coastguard Worker char[] dst = new char[size]; 226*795d594fSAndroid Build Coastguard Worker 227*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, size); 228*795d594fSAndroid Build Coastguard Worker return dst; 229*795d594fSAndroid Build Coastguard Worker } 230*795d594fSAndroid Build Coastguard Worker $noinline$test5()231*795d594fSAndroid Build Coastguard Worker public static char[] $noinline$test5() { 232*795d594fSAndroid Build Coastguard Worker char[] src = new char[80]; 233*795d594fSAndroid Build Coastguard Worker src = init(src); 234*795d594fSAndroid Build Coastguard Worker char[] dst = new char[80]; 235*795d594fSAndroid Build Coastguard Worker 236*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, 80); 237*795d594fSAndroid Build Coastguard Worker return dst; 238*795d594fSAndroid Build Coastguard Worker } 239*795d594fSAndroid Build Coastguard Worker $noinline$test6()240*795d594fSAndroid Build Coastguard Worker public static char[] $noinline$test6() { 241*795d594fSAndroid Build Coastguard Worker char[] src = new char[150]; 242*795d594fSAndroid Build Coastguard Worker src = init(src); 243*795d594fSAndroid Build Coastguard Worker char[] dst = new char[150]; 244*795d594fSAndroid Build Coastguard Worker 245*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 100, 50); 246*795d594fSAndroid Build Coastguard Worker return dst; 247*795d594fSAndroid Build Coastguard Worker } check6(char[] dst)248*795d594fSAndroid Build Coastguard Worker public static void check6(char[] dst) { 249*795d594fSAndroid Build Coastguard Worker for (int i = 0; i < 100; i++) { 250*795d594fSAndroid Build Coastguard Worker assertEquals(0, dst[i]); 251*795d594fSAndroid Build Coastguard Worker } 252*795d594fSAndroid Build Coastguard Worker for (int i = 100; i < 150; i++) { 253*795d594fSAndroid Build Coastguard Worker assertEquals(i-100, dst[i]); 254*795d594fSAndroid Build Coastguard Worker } 255*795d594fSAndroid Build Coastguard Worker } 256*795d594fSAndroid Build Coastguard Worker $noinline$test7()257*795d594fSAndroid Build Coastguard Worker public static char[] $noinline$test7() { 258*795d594fSAndroid Build Coastguard Worker char[] src = new char[150]; 259*795d594fSAndroid Build Coastguard Worker src = init(src); 260*795d594fSAndroid Build Coastguard Worker 261*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, src, 100, 50); 262*795d594fSAndroid Build Coastguard Worker return src; 263*795d594fSAndroid Build Coastguard Worker } check7(char[] dst)264*795d594fSAndroid Build Coastguard Worker public static void check7(char[] dst) { 265*795d594fSAndroid Build Coastguard Worker for (int i = 0; i < 100; i++) { 266*795d594fSAndroid Build Coastguard Worker assertEquals(i, dst[i]); 267*795d594fSAndroid Build Coastguard Worker } 268*795d594fSAndroid Build Coastguard Worker for (int i = 100; i < 150; i++) { 269*795d594fSAndroid Build Coastguard Worker assertEquals(i - 100, dst[i]); 270*795d594fSAndroid Build Coastguard Worker } 271*795d594fSAndroid Build Coastguard Worker } 272*795d594fSAndroid Build Coastguard Worker $noinline$test8()273*795d594fSAndroid Build Coastguard Worker public static char[] $noinline$test8() { 274*795d594fSAndroid Build Coastguard Worker char[] src = new char[150]; 275*795d594fSAndroid Build Coastguard Worker src = init(src); 276*795d594fSAndroid Build Coastguard Worker 277*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 100, src, 0, 50); 278*795d594fSAndroid Build Coastguard Worker return src; 279*795d594fSAndroid Build Coastguard Worker } check8(char[] dst)280*795d594fSAndroid Build Coastguard Worker public static void check8(char[] dst) { 281*795d594fSAndroid Build Coastguard Worker for (int i = 0; i < 50; i++) { 282*795d594fSAndroid Build Coastguard Worker assertEquals(100 + i, dst[i]); 283*795d594fSAndroid Build Coastguard Worker } 284*795d594fSAndroid Build Coastguard Worker for (int i = 50; i < 150; i++) { 285*795d594fSAndroid Build Coastguard Worker assertEquals(i, dst[i]); 286*795d594fSAndroid Build Coastguard Worker } 287*795d594fSAndroid Build Coastguard Worker } 288*795d594fSAndroid Build Coastguard Worker $noinline$test9(char[] src, char[] dst, int i)289*795d594fSAndroid Build Coastguard Worker public static void $noinline$test9(char[] src, char[] dst, int i) { 290*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, i); 291*795d594fSAndroid Build Coastguard Worker } 292*795d594fSAndroid Build Coastguard Worker runTests()293*795d594fSAndroid Build Coastguard Worker public static void runTests() { 294*795d594fSAndroid Build Coastguard Worker System.out.print("[CharArrayTests]: "); 295*795d594fSAndroid Build Coastguard Worker 296*795d594fSAndroid Build Coastguard Worker char[] src15 = createIncrementedArray(15); 297*795d594fSAndroid Build Coastguard Worker char[] dst15 = createArrayOfZeroes(15); 298*795d594fSAndroid Build Coastguard Worker $noinline$test1(src15, dst15); 299*795d594fSAndroid Build Coastguard Worker checkIncrementedArray(dst15); 300*795d594fSAndroid Build Coastguard Worker 301*795d594fSAndroid Build Coastguard Worker char[] src150 = createIncrementedArray(150); 302*795d594fSAndroid Build Coastguard Worker char[] dst150 = createArrayOfZeroes(150); 303*795d594fSAndroid Build Coastguard Worker $noinline$test2(src150, dst150); 304*795d594fSAndroid Build Coastguard Worker checkIncrementedArray(dst150); 305*795d594fSAndroid Build Coastguard Worker 306*795d594fSAndroid Build Coastguard Worker checkIncrementedArray($noinline$test3()); 307*795d594fSAndroid Build Coastguard Worker checkIncrementedArray($noinline$test4()); 308*795d594fSAndroid Build Coastguard Worker checkIncrementedArray($noinline$test5()); 309*795d594fSAndroid Build Coastguard Worker 310*795d594fSAndroid Build Coastguard Worker check6($noinline$test6()); 311*795d594fSAndroid Build Coastguard Worker check7($noinline$test7()); 312*795d594fSAndroid Build Coastguard Worker check8($noinline$test8()); 313*795d594fSAndroid Build Coastguard Worker 314*795d594fSAndroid Build Coastguard Worker for (int i = 1; i < 256; i++) { 315*795d594fSAndroid Build Coastguard Worker char[] src = createIncrementedArray(i); 316*795d594fSAndroid Build Coastguard Worker char[] dst = createArrayOfZeroes(i); 317*795d594fSAndroid Build Coastguard Worker $noinline$test9(src, dst, i); 318*795d594fSAndroid Build Coastguard Worker checkIncrementedArray(dst); 319*795d594fSAndroid Build Coastguard Worker } 320*795d594fSAndroid Build Coastguard Worker 321*795d594fSAndroid Build Coastguard Worker System.out.println("passed"); 322*795d594fSAndroid Build Coastguard Worker } 323*795d594fSAndroid Build Coastguard Worker } 324*795d594fSAndroid Build Coastguard Worker 325*795d594fSAndroid Build Coastguard Worker private static class IntArrayTests { init(int[] arr)326*795d594fSAndroid Build Coastguard Worker public static int[] init(int[] arr) { 327*795d594fSAndroid Build Coastguard Worker for (int i = 0; i < arr.length; i++) { 328*795d594fSAndroid Build Coastguard Worker arr[i] = (int) i; 329*795d594fSAndroid Build Coastguard Worker } 330*795d594fSAndroid Build Coastguard Worker return arr; 331*795d594fSAndroid Build Coastguard Worker } 332*795d594fSAndroid Build Coastguard Worker assertEquals(int expected, int actual)333*795d594fSAndroid Build Coastguard Worker public static void assertEquals(int expected, int actual) { 334*795d594fSAndroid Build Coastguard Worker if (expected != actual) { 335*795d594fSAndroid Build Coastguard Worker throw new Error("Expected " + expected + ", got " + actual); 336*795d594fSAndroid Build Coastguard Worker } 337*795d594fSAndroid Build Coastguard Worker } 338*795d594fSAndroid Build Coastguard Worker createArrayOfZeroes(int size)339*795d594fSAndroid Build Coastguard Worker public static int[] createArrayOfZeroes(int size) { 340*795d594fSAndroid Build Coastguard Worker int[] arr = new int[size]; 341*795d594fSAndroid Build Coastguard Worker return arr; 342*795d594fSAndroid Build Coastguard Worker } 343*795d594fSAndroid Build Coastguard Worker createIncrementedArray(int size)344*795d594fSAndroid Build Coastguard Worker public static int[] createIncrementedArray(int size) { 345*795d594fSAndroid Build Coastguard Worker int[] arr = new int[size]; 346*795d594fSAndroid Build Coastguard Worker init(arr); 347*795d594fSAndroid Build Coastguard Worker return arr; 348*795d594fSAndroid Build Coastguard Worker } 349*795d594fSAndroid Build Coastguard Worker checkIncrementedArray(int[] dst)350*795d594fSAndroid Build Coastguard Worker public static void checkIncrementedArray(int[] dst) { 351*795d594fSAndroid Build Coastguard Worker for (int i = 0; i < dst.length; i++) { 352*795d594fSAndroid Build Coastguard Worker assertEquals(i, dst[i]); 353*795d594fSAndroid Build Coastguard Worker } 354*795d594fSAndroid Build Coastguard Worker } 355*795d594fSAndroid Build Coastguard Worker $noinline$test1(int[] src, int[] dst)356*795d594fSAndroid Build Coastguard Worker public static void $noinline$test1(int[] src, int[] dst) { 357*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, 15); 358*795d594fSAndroid Build Coastguard Worker } 359*795d594fSAndroid Build Coastguard Worker $noinline$test2(int[] src, int[] dst)360*795d594fSAndroid Build Coastguard Worker public static void $noinline$test2(int[] src, int[] dst) { 361*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, 150); 362*795d594fSAndroid Build Coastguard Worker } 363*795d594fSAndroid Build Coastguard Worker $noinline$test3()364*795d594fSAndroid Build Coastguard Worker public static int[] $noinline$test3() { 365*795d594fSAndroid Build Coastguard Worker int size = 15; 366*795d594fSAndroid Build Coastguard Worker int[] src = new int[size]; 367*795d594fSAndroid Build Coastguard Worker src = init(src); 368*795d594fSAndroid Build Coastguard Worker int[] dst = new int[size]; 369*795d594fSAndroid Build Coastguard Worker 370*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, size); 371*795d594fSAndroid Build Coastguard Worker return dst; 372*795d594fSAndroid Build Coastguard Worker } 373*795d594fSAndroid Build Coastguard Worker $noinline$test4()374*795d594fSAndroid Build Coastguard Worker public static int[] $noinline$test4() { 375*795d594fSAndroid Build Coastguard Worker int size = 150; 376*795d594fSAndroid Build Coastguard Worker int[] src = new int[size]; 377*795d594fSAndroid Build Coastguard Worker src = init(src); 378*795d594fSAndroid Build Coastguard Worker int[] dst = new int[size]; 379*795d594fSAndroid Build Coastguard Worker 380*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, size); 381*795d594fSAndroid Build Coastguard Worker return dst; 382*795d594fSAndroid Build Coastguard Worker } 383*795d594fSAndroid Build Coastguard Worker $noinline$test5()384*795d594fSAndroid Build Coastguard Worker public static int[] $noinline$test5() { 385*795d594fSAndroid Build Coastguard Worker int[] src = new int[80]; 386*795d594fSAndroid Build Coastguard Worker src = init(src); 387*795d594fSAndroid Build Coastguard Worker int[] dst = new int[80]; 388*795d594fSAndroid Build Coastguard Worker 389*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, 80); 390*795d594fSAndroid Build Coastguard Worker return dst; 391*795d594fSAndroid Build Coastguard Worker } 392*795d594fSAndroid Build Coastguard Worker $noinline$test6()393*795d594fSAndroid Build Coastguard Worker public static int[] $noinline$test6() { 394*795d594fSAndroid Build Coastguard Worker int[] src = new int[150]; 395*795d594fSAndroid Build Coastguard Worker src = init(src); 396*795d594fSAndroid Build Coastguard Worker int[] dst = new int[150]; 397*795d594fSAndroid Build Coastguard Worker 398*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 100, 50); 399*795d594fSAndroid Build Coastguard Worker return dst; 400*795d594fSAndroid Build Coastguard Worker } check6(int[] dst)401*795d594fSAndroid Build Coastguard Worker public static void check6(int[] dst) { 402*795d594fSAndroid Build Coastguard Worker for (int i = 0; i < 100; i++) { 403*795d594fSAndroid Build Coastguard Worker assertEquals(0, dst[i]); 404*795d594fSAndroid Build Coastguard Worker } 405*795d594fSAndroid Build Coastguard Worker for (int i = 100; i < 150; i++) { 406*795d594fSAndroid Build Coastguard Worker assertEquals(i-100, dst[i]); 407*795d594fSAndroid Build Coastguard Worker } 408*795d594fSAndroid Build Coastguard Worker } 409*795d594fSAndroid Build Coastguard Worker $noinline$test7()410*795d594fSAndroid Build Coastguard Worker public static int[] $noinline$test7() { 411*795d594fSAndroid Build Coastguard Worker int[] src = new int[150]; 412*795d594fSAndroid Build Coastguard Worker src = init(src); 413*795d594fSAndroid Build Coastguard Worker 414*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, src, 100, 50); 415*795d594fSAndroid Build Coastguard Worker return src; 416*795d594fSAndroid Build Coastguard Worker } check7(int[] dst)417*795d594fSAndroid Build Coastguard Worker public static void check7(int[] dst) { 418*795d594fSAndroid Build Coastguard Worker for (int i = 0; i < 100; i++) { 419*795d594fSAndroid Build Coastguard Worker assertEquals(i, dst[i]); 420*795d594fSAndroid Build Coastguard Worker } 421*795d594fSAndroid Build Coastguard Worker for (int i = 100; i < 150; i++) { 422*795d594fSAndroid Build Coastguard Worker assertEquals(i - 100, dst[i]); 423*795d594fSAndroid Build Coastguard Worker } 424*795d594fSAndroid Build Coastguard Worker } 425*795d594fSAndroid Build Coastguard Worker $noinline$test8()426*795d594fSAndroid Build Coastguard Worker public static int[] $noinline$test8() { 427*795d594fSAndroid Build Coastguard Worker int[] src = new int[150]; 428*795d594fSAndroid Build Coastguard Worker src = init(src); 429*795d594fSAndroid Build Coastguard Worker 430*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 100, src, 0, 50); 431*795d594fSAndroid Build Coastguard Worker return src; 432*795d594fSAndroid Build Coastguard Worker } check8(int[] dst)433*795d594fSAndroid Build Coastguard Worker public static void check8(int[] dst) { 434*795d594fSAndroid Build Coastguard Worker for (int i = 0; i < 50; i++) { 435*795d594fSAndroid Build Coastguard Worker assertEquals(100 + i, dst[i]); 436*795d594fSAndroid Build Coastguard Worker } 437*795d594fSAndroid Build Coastguard Worker for (int i = 50; i < 150; i++) { 438*795d594fSAndroid Build Coastguard Worker assertEquals(i, dst[i]); 439*795d594fSAndroid Build Coastguard Worker } 440*795d594fSAndroid Build Coastguard Worker } 441*795d594fSAndroid Build Coastguard Worker $noinline$test9(int[] src, int[] dst, int i)442*795d594fSAndroid Build Coastguard Worker public static void $noinline$test9(int[] src, int[] dst, int i) { 443*795d594fSAndroid Build Coastguard Worker System.arraycopy(src, 0, dst, 0, i); 444*795d594fSAndroid Build Coastguard Worker } 445*795d594fSAndroid Build Coastguard Worker runTests()446*795d594fSAndroid Build Coastguard Worker public static void runTests() { 447*795d594fSAndroid Build Coastguard Worker System.out.print("[IntArrayTests]: "); 448*795d594fSAndroid Build Coastguard Worker 449*795d594fSAndroid Build Coastguard Worker int[] src15 = createIncrementedArray(15); 450*795d594fSAndroid Build Coastguard Worker int[] dst15 = createArrayOfZeroes(15); 451*795d594fSAndroid Build Coastguard Worker $noinline$test1(src15, dst15); 452*795d594fSAndroid Build Coastguard Worker checkIncrementedArray(dst15); 453*795d594fSAndroid Build Coastguard Worker 454*795d594fSAndroid Build Coastguard Worker int[] src150 = createIncrementedArray(150); 455*795d594fSAndroid Build Coastguard Worker int[] dst150 = createArrayOfZeroes(150); 456*795d594fSAndroid Build Coastguard Worker $noinline$test2(src150, dst150); 457*795d594fSAndroid Build Coastguard Worker checkIncrementedArray(dst150); 458*795d594fSAndroid Build Coastguard Worker 459*795d594fSAndroid Build Coastguard Worker checkIncrementedArray($noinline$test3()); 460*795d594fSAndroid Build Coastguard Worker checkIncrementedArray($noinline$test4()); 461*795d594fSAndroid Build Coastguard Worker checkIncrementedArray($noinline$test5()); 462*795d594fSAndroid Build Coastguard Worker 463*795d594fSAndroid Build Coastguard Worker check6($noinline$test6()); 464*795d594fSAndroid Build Coastguard Worker check7($noinline$test7()); 465*795d594fSAndroid Build Coastguard Worker check8($noinline$test8()); 466*795d594fSAndroid Build Coastguard Worker 467*795d594fSAndroid Build Coastguard Worker for (int i = 1; i < 256; i++) { 468*795d594fSAndroid Build Coastguard Worker int[] src = createIncrementedArray(i); 469*795d594fSAndroid Build Coastguard Worker int[] dst = createArrayOfZeroes(i); 470*795d594fSAndroid Build Coastguard Worker $noinline$test9(src, dst, i); 471*795d594fSAndroid Build Coastguard Worker checkIncrementedArray(dst); 472*795d594fSAndroid Build Coastguard Worker } 473*795d594fSAndroid Build Coastguard Worker 474*795d594fSAndroid Build Coastguard Worker System.out.println("passed"); 475*795d594fSAndroid Build Coastguard Worker } 476*795d594fSAndroid Build Coastguard Worker } 477*795d594fSAndroid Build Coastguard Worker main(String[] args)478*795d594fSAndroid Build Coastguard Worker public static void main(String[] args) { 479*795d594fSAndroid Build Coastguard Worker ByteArrayTests.runTests(); 480*795d594fSAndroid Build Coastguard Worker CharArrayTests.runTests(); 481*795d594fSAndroid Build Coastguard Worker IntArrayTests.runTests(); 482*795d594fSAndroid Build Coastguard Worker } 483*795d594fSAndroid Build Coastguard Worker } 484