// java -Xbatch
import java.util.Arrays;

class Test {
    static int test(int[] src, boolean flag) {
        int[] dst = new int[10];
        System.arraycopy(src, 0, dst, 0, 10);

        src[1] = 0xcafe;

        // Compile to unstable if trap.
        if (flag) {
            src[2] = 0xabcd;
        }

        return dst[1];
    }


    public static void main(String[] args) {
        int[] src = new int[10];

        // Get return value before compilation.
        Arrays.fill(src, 0);
        int golden = test(src, false);

        for (int i = 0; i < 20000; i++) {
            Arrays.fill(src, 0);
            int res = test(src, false);
            if (res != golden) {
                throw new RuntimeException("Wrong result from compiled method test1: " + res + ". Expected: " + golden);
            }
        }
        Arrays.fill(src, 0);
        int res = test(src, true);
        if (res != golden) {
            throw new RuntimeException("Wrong result from compiled method after flipping the flag test1: " + res + ". Expected: " + golden);
        }
    }
}
