提交 30d9e010 编写于 作者: A andrew

Merge

......@@ -1027,3 +1027,5 @@ c63c2923e1f99c1f350bd24b42daf885023f18b7 jdk8u242-ga
b67f77679d02d6634666578983103ce5d16a3a9b jdk8u252-b04
b959971e0a5a609453c3a122755fc987c36f0566 jdk8u252-b05
b959971e0a5a609453c3a122755fc987c36f0566 jdk8u262-b00
6f7370a85071d54772615abab532264dba461c51 jdk8u252-b06
2a93ed39a4e92e02bd59a02aac6cd9ed6defd386 jdk8u252-b07
/*
* Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2019, Azul Systems, Inc. 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
......@@ -1468,17 +1467,6 @@ public abstract class ClassLoader {
}
}
/*
* Initialize default paths for native libraries search.
* Must be done early as JDK may load libraries during bootstrap.
*
* @see java.lang.System#initPhase1
*/
static void initLibraryPaths() {
usr_paths = initializePath("java.library.path");
sys_paths = initializePath("sun.boot.library.path");
}
// Returns true if the specified class loader can be found in this class
// loader's delegation chain.
boolean isAncestor(ClassLoader cl) {
......@@ -1821,9 +1809,10 @@ public abstract class ClassLoader {
boolean isAbsolute) {
ClassLoader loader =
(fromClass == null) ? null : fromClass.getClassLoader();
assert sys_paths != null : "should be initialized at this point";
assert usr_paths != null : "should be initialized at this point";
if (sys_paths == null) {
usr_paths = initializePath("java.library.path");
sys_paths = initializePath("sun.boot.library.path");
}
if (isAbsolute) {
if (loadLibrary0(fromClass, new File(name))) {
return;
......@@ -1913,14 +1902,13 @@ public abstract class ClassLoader {
name +
" already loaded in another classloader");
}
/*
* When a library is being loaded, JNI_OnLoad function can cause
* another loadLibrary invocation that should succeed.
/* If the library is being loaded (must be by the same thread,
* because Runtime.load and Runtime.loadLibrary are
* synchronous). The reason is can occur is that the JNI_OnLoad
* function can cause another loadLibrary invocation.
*
* We use a static stack to hold the list of libraries we are
* loading because this can happen only when called by the
* same thread because Runtime.load and Runtime.loadLibrary
* are synchronous.
* Thus we can use a static stack to hold the list of libraries
* we are loading.
*
* If there is a pending load operation for the library, we
* immediately return success; otherwise, we raise
......
/*
* Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2019, Azul Systems, Inc. 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
......@@ -799,7 +798,7 @@ public class Runtime {
load0(Reflection.getCallerClass(), filename);
}
void load0(Class<?> fromClass, String filename) {
synchronized void load0(Class<?> fromClass, String filename) {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkLink(filename);
......@@ -860,14 +859,14 @@ public class Runtime {
loadLibrary0(Reflection.getCallerClass(), libname);
}
void loadLibrary0(Class<?> fromClass, String libname) {
synchronized void loadLibrary0(Class<?> fromClass, String libname) {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkLink(libname);
}
if (libname.indexOf((int)File.separatorChar) != -1) {
throw new UnsatisfiedLinkError(
"Directory separator should not appear in library name: " + libname);
"Directory separator should not appear in library name: " + libname);
}
ClassLoader.loadLibrary(fromClass, libname, false);
}
......
......@@ -1195,8 +1195,6 @@ public final class System {
setOut0(newPrintStream(fdOut, props.getProperty("sun.stdout.encoding")));
setErr0(newPrintStream(fdErr, props.getProperty("sun.stderr.encoding")));
ClassLoader.initLibraryPaths();
// Load the zip library now in order to keep java.util.zip.ZipFile
// from trying to use itself to load this library later.
loadLibrary("zip");
......
......@@ -741,11 +741,18 @@ public class ImageView extends View {
appropriately.
*/
if (getLoadsSynchronously()) {
Dimension d = adjustWidthHeight(image.getWidth(imageObserver),
image.getHeight(imageObserver));
newWidth = d.width;
newHeight = d.height;
newState |= (WIDTH_FLAG | HEIGHT_FLAG);
Image img;
synchronized(this) {
img = image;
}
int w = img.getWidth(imageObserver);
int h = img.getHeight(imageObserver);
if (w > 0 && h > 0) {
Dimension d = adjustWidthHeight(w, h);
newWidth = d.width;
newHeight = d.height;
newState |= (WIDTH_FLAG | HEIGHT_FLAG);
}
}
// Make sure the image starts loading:
......
......@@ -379,14 +379,19 @@ final class P11Signature extends SignatureSpi {
if (key instanceof P11Key) {
keySize = ((P11Key) key).length();
} else {
if (keyAlgo.equals("RSA")) {
keySize = ((RSAKey) key).getModulus().bitLength();
} else if (keyAlgo.equals("DSA")) {
keySize = ((DSAKey) key).getParams().getP().bitLength();
} else if (keyAlgo.equals("EC")) {
keySize = ((ECKey) key).getParams().getCurve().getField().getFieldSize();
} else {
throw new ProviderException("Error: unsupported algo " + keyAlgo);
try {
if (keyAlgo.equals("RSA")) {
keySize = ((RSAKey) key).getModulus().bitLength();
} else if (keyAlgo.equals("DSA")) {
keySize = ((DSAKey) key).getParams().getP().bitLength();
} else if (keyAlgo.equals("EC")) {
keySize = ((ECKey) key).getParams().getCurve().getField().getFieldSize();
} else {
throw new ProviderException("Error: unsupported algo " + keyAlgo);
}
} catch (ClassCastException cce) {
throw new InvalidKeyException(keyAlgo +
" key must be the right type", cce);
}
}
if ((minKeySize != -1) && (keySize < minKeySize)) {
......
/*
* Copyright (c) 2018, Amazon and/or its affiliates. All rights reserved.
* Copyright (c) 2019, Azul Systems, Inc. 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @bug 8231584
* @library /lib/testlibrary
* @run main/othervm LoadLibraryTest
*/
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.Path;
import java.net.MalformedURLException;
import java.net.URLClassLoader;
import java.net.URL;
public class LoadLibraryTest {
static Thread thread1 = null;
static Thread thread2 = null;
static volatile boolean thread1Ready = false;
private static final String TEST_SRC = System.getProperty("test.src");
private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
private static final Path CLS_DIR = Paths.get("classes");
static TestClassLoader loader;
static void someLibLoad() {
try {
/*
FileSystems.getDefault();
// jdk/jdk: loads directly from Bootstrap Classloader (doesn't take lock on Runtime)
java.net.NetworkInterface.getNetworkInterfaces();
System.out.println(jdk.net.ExtendedSocketOptions.SO_FLOW_SLA);
*/
Class c = Class.forName("Target2", true, loader);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
static class TestClassLoader extends URLClassLoader {
boolean passed = false;
public boolean passed() {
return passed;
}
TestClassLoader() throws MalformedURLException {
super(new URL[] { new URL("file://" + CLS_DIR.toAbsolutePath().toString() + '/') });
}
public String findLibrary(String name) {
System.out.println("findLibrary " + name);
if ("someLibrary".equals(name)) {
try {
synchronized(thread1) {
while(!thread1Ready) {
thread1.wait();
}
thread1.notifyAll();
}
Thread.sleep(10000);
System.out.println("Thread2 load");
someLibLoad();
// no deadlock happened
passed = true;
} catch (Exception e) {
throw new RuntimeException(e);
}
return null;
}
return super.findLibrary(name);
}
}
public static void main(String[] args) throws Exception {
loader = new TestClassLoader();
if (!CompilerUtils.compile(SRC_DIR, CLS_DIR)) {
throw new Exception("Can't compile");
}
thread1 = new Thread() {
public void run() {
try {
synchronized(this) {
thread1Ready = true;
thread1.notifyAll();
thread1.wait();
}
} catch(InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println("Thread1 load");
someLibLoad();
};
};
thread2 = new Thread() {
public void run() {
try {
Class c = Class.forName("Target", true, loader);
System.out.println(c);
} catch (Exception e) {
throw new RuntimeException(e);
}
};
};
thread1.setDaemon(true);
thread2.setDaemon(true);
thread1.start();
thread2.start();
thread1.join();
thread2.join();
if (!loader.passed()) {
throw new RuntimeException("FAIL");
}
}
}
/*
* Copyright (c) 2019, Azul Systems, Inc. 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
class Target2 {
static {
System.loadLibrary("awt");
}
}
/*
* Copyright (c) 2019, Azul Systems, Inc. All rights reserved.
* Copyright (c) 2019, 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
......@@ -21,14 +21,31 @@
* questions.
*/
class Target {
static {
try {
System.loadLibrary("someLibrary");
throw new RuntimeException("someLibrary was loaded");
} catch (UnsatisfiedLinkError e) {
// expected: we do not have a someLibrary
}
/**
* @test
* @bug 8230235 8235744
* @summary Tests if JLabel with HTML text having empty img tag and
* documentBaseKey set renders properly without NPE
* @run main TestJLabelWithHTMLText
*/
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.plaf.basic.BasicHTML;
public class TestJLabelWithHTMLText {
public static void main(String[] args) throws Exception {
SwingUtilities.invokeAndWait(() -> {
JLabel label = new JLabel();
try {
label.putClientProperty(BasicHTML.documentBaseKey,
new URL("http://localhost"));
} catch (MalformedURLException e) {
e.printStackTrace();
}
label.setText("<html><img src=''></html>");
});
}
}
......@@ -262,6 +262,12 @@ public class VerifyCACerts {
add("utnuserfirstobjectca [jdk]");
// Valid until: Tue May 26 00:00:00 GMT 2020
add("keynectisrootca [jdk]");
// Valid until: Sat May 30 10:38:31 GMT 2020
add("addtrustexternalca [jdk]");
// Valid until: Sat May 30 10:48:38 GMT 2020
add("addtrustclass1ca [jdk]");
// Valid until: Sat May 30 10:44:50 GMT 2020
add("addtrustqualifiedca [jdk]");
}
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册