/* * This file is part of the Jikes RVM project (http://jikesrvm.org). * * This file is licensed to You under the Eclipse Public License (EPL); * You may not use this file except in compliance with the License. You * may obtain a copy of the License at * * http://www.opensource.org/licenses/eclipse-1.0.php * * See the COPYRIGHT.txt file distributed with this work for information * regarding copyright ownership. */ class CriticalCopy { static boolean verbose = true; // set to true to get messages for each test static boolean allTestPass = true; public static native void setVerboseOff(); static int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; static boolean[] booleanArray = {true, true, false, false, true, true, false, false, true, true}; static short[] shortArray = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}; static byte[] byteArray = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}; static char[] charArray = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}; static long[] longArray = {0x80001000, 0x80001000, 0x80001000, 0x80001000, 0x80001000, 0x80001000, 0x80001000, 0x80001000, 0x80001000, 0x80001000}; static double[] doubleArray = {115.1, 115.1, 115.1, 115.1, 115.1, 115.1, 115.1, 115.1, 115.1, 115.1}; static float[] floatArray = {(float) 115.1, (float) 115.1, (float) 115.1, (float) 115.1, (float) 115.1, (float) 115.1, (float) 115.1, (float) 115.1, (float) 115.1, (float) 115.1}; /** * Declare native methods that will call the JNI Array Functions */ public static native int primitiveIntegerArray(int[] intArray); public static native int primitiveByteArray(byte[] byteArray); public static void main(String[] args) { int returnValue; System.loadLibrary("CriticalCopy"); if (args.length!=0) { if (args[0].equals("-quiet")) { verbose = false; setVerboseOff(); } } returnValue = primitiveIntegerArray(intArray); // check that the array has new values boolean checkFlag = true; if (verbose) System.out.println("Updated copy"); for (int i=0; i<intArray.length; i++) { if (verbose) System.out.println(" " + i + " = " + intArray[i]); if (intArray[i]!=i) checkFlag = false; } checkTest(returnValue, checkFlag, "primitiveIntegerArray"); // Summarize if (allTestPass) System.out.println("PASS: CriticalCopy"); else System.out.println("FAIL: CriticalCopy"); } static void printVerbose(String str) { if (verbose) System.out.println(str); } static void checkTest(int returnValue, boolean postCheck, String testName) { if (returnValue==0 && postCheck) { printVerbose("PASS: " + testName); } else { allTestPass = false; printVerbose("FAIL: " + testName); } } }