0N/A/*
2362N/A * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
0N/A * published by the Free Software Foundation.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A * or visit www.oracle.com if you need additional information or have any
2362N/A * questions.
0N/A */
0N/A
0N/A/* @test
0N/A @bug 4098742
0N/A @summary Test biginteger modpow method
0N/A @author Michael McCloskey
0N/A @run main/othervm ModPowPowersof2
0N/A*/
5361N/A
0N/Aimport java.math.BigInteger;
0N/Aimport java.io.BufferedReader;
0N/Aimport java.io.InputStreamReader;
0N/Aimport java.io.File;
0N/Aimport java.io.IOException;
0N/A
0N/A/**
0N/A * This class tests to see if using modPow on a power
0N/A * of two crashes the vm
0N/A *
0N/A */
0N/Apublic class ModPowPowersof2 {
0N/A
0N/A public static void main(String args[]) throws Exception {
0N/A // Construct a command that runs the test in other vm
0N/A String[] command = new String[4];
0N/A int n = 0;
0N/A
0N/A command[n++] = System.getProperty("java.home") + File.separator +
0N/A "bin" + File.separator + "java";
0N/A if (System.getProperty("java.class.path") != null) {
0N/A command[n++] = "-classpath";
0N/A command[n++] = System.getProperty("java.class.path");
0N/A }
0N/A
5361N/A command[n++] = "ModPowPowersof2$ModTester";
0N/A
0N/A // Exec another vm to run test in
0N/A Process p = null;
0N/A p = Runtime.getRuntime().exec(command);
0N/A
0N/A // Read the result to determine if test failed
0N/A BufferedReader in = new BufferedReader(new InputStreamReader(
0N/A p.getInputStream()));
0N/A String s;
0N/A s = in.readLine();
0N/A if (s == null)
0N/A throw new RuntimeException("ModPow causes vm crash");
0N/A
0N/A }
0N/A
0N/A public static class ModTester {
0N/A public static void main(String [] args) {
0N/A BigInteger two = BigInteger.valueOf(2);
0N/A BigInteger four = BigInteger.valueOf(4);
0N/A
0N/A two.modPow(two, BigInteger.valueOf(4));
0N/A two.modPow(two, BigInteger.valueOf(8));
0N/A two.modPow(four, BigInteger.valueOf(8));
0N/A
0N/A System.out.println("success");
0N/A }
0N/A }
0N/A
0N/A}
0N/A