--- a/jdk/src/java.base/share/native/include/jvm.h Tue Dec 23 10:09:52 2014 -0800
+++ b/jdk/src/java.base/share/native/include/jvm.h Tue Dec 23 11:06:13 2014 -0800
@@ -334,15 +334,6 @@
jobject loader, jclass caller);
/*
- * Find a class from a given class loader. Throw ClassNotFoundException
- * or NoClassDefFoundError depending on the value of the last
- * argument.
- */
-JNIEXPORT jclass JNICALL
-JVM_FindClassFromClassLoader(JNIEnv *env, const char *name, jboolean init,
- jobject loader, jboolean throwError);
-
-/*
* Find a class from a given class.
*/
JNIEXPORT jclass JNICALL
--- a/jdk/test/java/lang/ClassLoader/EndorsedDirs.java Tue Dec 23 10:09:52 2014 -0800
+++ b/jdk/test/java/lang/ClassLoader/EndorsedDirs.java Tue Dec 23 11:06:13 2014 -0800
@@ -23,25 +23,48 @@
/*
* @test
- * @bug 8060206
+ * @bug 8060206 8067366
* @summary Endorsed standards and override mechanism is removed
*/
import java.io.*;
import java.util.*;
import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
public class EndorsedDirs {
- public static void main(String arg[]) throws Exception {
+ private static String[] VALUES = new String[] {
+ null,
+ "",
+ "\"\""
+ };
+ public static void main(String... args) throws Exception {
String value = System.getProperty("java.endorsed.dirs");
+ System.out.format("java.endorsed.dirs = '%s'%n", value);
+ if (args.length > 0) {
+ int index = Integer.valueOf(args[0]);
+ String expectedValue = VALUES[index];
+ if (!(expectedValue == value ||
+ (value != null && value.isEmpty()) ||
+ (expectedValue != null & expectedValue.equals(value)))) {
+ throw new RuntimeException("java.endorsed.dirs (" +
+ value + ") != " + expectedValue);
+ }
+ // launched by subprocess.
+ return;
+ }
+
if (value != null) {
throw new RuntimeException("java.endorsed.dirs not removed: " + value);
}
- fatalError("-Djava.endorsed.dirs=foo");
+ fatalError(0, "-Djava.endorsed.dirs=foo");
+ start(0);
+ start(1, "-Djava.endorsed.dirs=");
+ start(2, "-Djava.endorsed.dirs=\"\"");
}
- static void fatalError(String... args) throws Exception {
+ static ProcessBuilder newProcessBuilder(int testParam, String... args) throws Exception {
List<String> commands = new ArrayList<>();
String java = System.getProperty("java.home") + "/bin/java";
commands.add(java);
@@ -52,9 +75,22 @@
commands.add("-cp");
commands.add(cpath);
commands.add("EndorsedDirs");
+ commands.add(String.valueOf(testParam));
- ProcessBuilder processBuilder = new ProcessBuilder(commands);
- final Process process = processBuilder.start();
+ System.out.println("Testing " + commands.stream().collect(Collectors.joining(" ")));
+ return new ProcessBuilder(commands);
+ }
+
+ static void start(int testParam, String... args) throws Exception {
+ start(newProcessBuilder(testParam, args), false);
+ }
+
+ static void fatalError(int testParam, String... args) throws Exception {
+ start(newProcessBuilder(testParam, args), true);
+ }
+
+ static void start(ProcessBuilder pb, boolean fatalError) throws Exception {
+ final Process process = pb.start();
BufferedReader errorStream = new BufferedReader(
new InputStreamReader(process.getErrorStream()));
BufferedReader outStream = new BufferedReader(
@@ -72,11 +108,15 @@
System.err.println(errorLine);
process.waitFor(1000, TimeUnit.MILLISECONDS);
int exitStatus = process.exitValue();
- if (exitStatus == 0) {
- throw new RuntimeException("Expect fatal error");
- }
- if (!errorLine.contains("Could not create the Java Virtual Machine")) {
- throw new RuntimeException(errorLine);
+ if (fatalError) {
+ if (exitStatus == 0) {
+ throw new RuntimeException("Expected fatal error");
+ }
+ if (!errorLine.contains("Could not create the Java Virtual Machine")) {
+ throw new RuntimeException(errorLine);
+ }
+ } else if (exitStatus != 0) {
+ throw new RuntimeException("Failed: " + errorLine);
}
}
}
--- a/jdk/test/java/lang/ClassLoader/ExtDirs.java Tue Dec 23 10:09:52 2014 -0800
+++ b/jdk/test/java/lang/ClassLoader/ExtDirs.java Tue Dec 23 11:06:13 2014 -0800
@@ -23,25 +23,49 @@
/*
* @test
- * @bug 8060206
+ * @bug 8060206 8067366
* @summary Extension mechanism is removed
*/
import java.io.*;
+import java.lang.Integer;
import java.util.*;
import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
public class ExtDirs {
- public static void main(String arg[]) throws Exception {
+ private static String[] VALUES = new String[] {
+ null,
+ "",
+ "\"\""
+ };
+ public static void main(String... args) throws Exception {
String value = System.getProperty("java.ext.dirs");
+ System.out.format("java.ext.dirs = '%s'%n", value);
+ if (args.length > 0) {
+ int index = Integer.valueOf(args[0]);
+ String expectedValue = VALUES[index];
+ if (!(expectedValue == value ||
+ (value != null && value.isEmpty()) ||
+ (expectedValue != null & expectedValue.equals(value)))) {
+ throw new RuntimeException("java.ext.dirs (" +
+ value + ") != " + expectedValue);
+ }
+ // launched by subprocess.
+ return;
+ }
+
if (value != null) {
throw new RuntimeException("java.ext.dirs not removed: " + value);
}
- fatalError("-Djava.ext.dirs=foo");
+ fatalError(0, "-Djava.ext.dirs=foo");
+ start(0);
+ start(1, "-Djava.ext.dirs=");
+ start(2, "-Djava.ext.dirs=\"\"");
}
- static void fatalError(String... args) throws Exception {
+ static ProcessBuilder newProcessBuilder(int testParam, String... args) throws Exception {
List<String> commands = new ArrayList<>();
String java = System.getProperty("java.home") + "/bin/java";
commands.add(java);
@@ -52,9 +76,22 @@
commands.add("-cp");
commands.add(cpath);
commands.add("ExtDirs");
+ commands.add(String.valueOf(testParam));
- ProcessBuilder processBuilder = new ProcessBuilder(commands);
- final Process process = processBuilder.start();
+ System.out.println("Testing " + commands.stream().collect(Collectors.joining(" ")));
+ return new ProcessBuilder(commands);
+ }
+
+ static void start(int testParam, String... args) throws Exception {
+ start(newProcessBuilder(testParam, args), false);
+ }
+
+ static void fatalError(int testParam, String... args) throws Exception {
+ start(newProcessBuilder(testParam, args), true);
+ }
+
+ static void start(ProcessBuilder pb, boolean fatalError) throws Exception {
+ final Process process = pb.start();
BufferedReader errorStream = new BufferedReader(
new InputStreamReader(process.getErrorStream()));
BufferedReader outStream = new BufferedReader(
@@ -72,11 +109,15 @@
System.err.println(errorLine);
process.waitFor(1000, TimeUnit.MILLISECONDS);
int exitStatus = process.exitValue();
- if (exitStatus == 0) {
- throw new RuntimeException("Expect fatal error");
- }
- if (!errorLine.contains("Could not create the Java Virtual Machine")) {
- throw new RuntimeException(errorLine);
+ if (fatalError) {
+ if (exitStatus == 0) {
+ throw new RuntimeException("Expected fatal error");
+ }
+ if (!errorLine.contains("Could not create the Java Virtual Machine")) {
+ throw new RuntimeException(errorLine);
+ }
+ } else if (exitStatus != 0) {
+ throw new RuntimeException("Failed: " + errorLine);
}
}
}
--- a/jdk/test/java/lang/management/MemoryMXBean/LowMemoryTest.java Tue Dec 23 10:09:52 2014 -0800
+++ b/jdk/test/java/lang/management/MemoryMXBean/LowMemoryTest.java Tue Dec 23 11:06:13 2014 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -35,11 +35,13 @@
* @run main/timeout=600 LowMemoryTest
*/
+import com.sun.management.DiagnosticCommandMBean;
import java.lang.management.*;
import java.util.*;
import java.util.concurrent.Phaser;
import javax.management.*;
import javax.management.openmbean.CompositeData;
+import sun.management.ManagementFactoryHelper;
public class LowMemoryTest {
private static final MemoryMXBean mm = ManagementFactory.getMemoryMXBean();
@@ -94,9 +96,15 @@
}
static class TestListener implements NotificationListener {
+ private boolean isRelaxed = false;
private int triggers = 0;
private final long[] count = new long[NUM_TRIGGERS * 2];
private final long[] usedMemory = new long[NUM_TRIGGERS * 2];
+
+ public TestListener() {
+ isRelaxed = ManagementFactory.getRuntimeMXBean().getInputArguments().contains("-XX:+UseConcMarkSweepGC");
+ }
+
@Override
public void handleNotification(Notification notif, Object handback) {
MemoryNotificationInfo minfo = MemoryNotificationInfo.
@@ -106,7 +114,8 @@
triggers++;
}
public void checkResult() throws Exception {
- if (triggers != NUM_TRIGGERS) {
+ if ((!isRelaxed && triggers != NUM_TRIGGERS) ||
+ (isRelaxed && triggers < NUM_TRIGGERS)) {
throw new RuntimeException("Unexpected number of triggers = " +
triggers + " but expected to be " + NUM_TRIGGERS);
}