提交 74dfafad 编写于 作者: S serb

6744401: Consider removal of code disabling JIT in Toolkit.getDefaultToolkit

Reviewed-by: anthony, pchelko
上级 b4739c36
...@@ -26,10 +26,6 @@ ...@@ -26,10 +26,6 @@
package java.awt; package java.awt;
import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeEvent;
import java.util.MissingResourceException;
import java.util.Properties;
import java.util.ResourceBundle;
import java.util.StringTokenizer;
import java.awt.event.*; import java.awt.event.*;
import java.awt.peer.*; import java.awt.peer.*;
import java.awt.im.InputMethodHighlight; import java.awt.im.InputMethodHighlight;
...@@ -855,50 +851,39 @@ public abstract class Toolkit { ...@@ -855,50 +851,39 @@ public abstract class Toolkit {
*/ */
public static synchronized Toolkit getDefaultToolkit() { public static synchronized Toolkit getDefaultToolkit() {
if (toolkit == null) { if (toolkit == null) {
try { java.security.AccessController.doPrivileged(
// We disable the JIT during toolkit initialization. This new java.security.PrivilegedAction<Void>() {
// tends to touch lots of classes that aren't needed again public Void run() {
// later and therefore JITing is counter-productiive. Class<?> cls = null;
java.lang.Compiler.disable(); String nm = System.getProperty("awt.toolkit");
try {
java.security.AccessController.doPrivileged( cls = Class.forName(nm);
new java.security.PrivilegedAction<Void>() { } catch (ClassNotFoundException e) {
public Void run() { ClassLoader cl = ClassLoader.getSystemClassLoader();
String nm = null; if (cl != null) {
Class<?> cls = null;
try {
nm = System.getProperty("awt.toolkit");
try { try {
cls = Class.forName(nm); cls = cl.loadClass(nm);
} catch (ClassNotFoundException e) { } catch (final ClassNotFoundException ignored) {
ClassLoader cl = ClassLoader.getSystemClassLoader(); throw new AWTError("Toolkit not found: " + nm);
if (cl != null) {
try {
cls = cl.loadClass(nm);
} catch (ClassNotFoundException ee) {
throw new AWTError("Toolkit not found: " + nm);
}
}
} }
if (cls != null) { }
toolkit = (Toolkit)cls.newInstance(); }
if (GraphicsEnvironment.isHeadless()) { try {
toolkit = new HeadlessToolkit(toolkit); if (cls != null) {
} toolkit = (Toolkit)cls.newInstance();
if (GraphicsEnvironment.isHeadless()) {
toolkit = new HeadlessToolkit(toolkit);
} }
} catch (InstantiationException e) {
throw new AWTError("Could not instantiate Toolkit: " + nm);
} catch (IllegalAccessException e) {
throw new AWTError("Could not access Toolkit: " + nm);
} }
return null; } catch (final InstantiationException ignored) {
throw new AWTError("Could not instantiate Toolkit: " + nm);
} catch (final IllegalAccessException ignored) {
throw new AWTError("Could not access Toolkit: " + nm);
} }
}); return null;
loadAssistiveTechnologies(); }
} finally { });
// Make sure to always re-enable the JIT. loadAssistiveTechnologies();
java.lang.Compiler.enable();
}
} }
return toolkit; return toolkit;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册