--- a/jdk/.hgtags Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/.hgtags Thu Nov 19 18:18:05 2015 -0500
@@ -334,3 +334,4 @@
0d0a63b325592607974612f9cfb48590975aa2d6 jdk9-b89
b433e4dfb830fea60e5187e4580791b62cc362d2 jdk9-b90
97624df5026a2fb191793697dbd2c604c4d5c66e jdk9-b91
+6a5c99506f44538b879d8635a3979849ed587130 jdk9-b92
--- a/jdk/make/gensrc/Gensrc-java.base.gmk Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/make/gensrc/Gensrc-java.base.gmk Thu Nov 19 18:18:05 2015 -0500
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, 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
@@ -38,15 +38,15 @@
include GensrcProperties.gmk
-$(eval $(call SetupCompileProperties,LIST_RESOURCE_BUNDLE, \
- $(filter %.properties, \
- $(call CacheFind, $(JDK_TOPDIR)/src/java.base/share/classes/sun/launcher/resources)), \
- ListResourceBundle))
+$(eval $(call SetupCompileProperties, LIST_RESOURCE_BUNDLE, \
+ SRC_DIRS := $(JDK_TOPDIR)/src/java.base/share/classes/sun/launcher/resources, \
+ CLASS := ListResourceBundle, \
+))
-$(eval $(call SetupCompileProperties,SUN_UTIL, \
- $(filter %.properties, \
- $(call CacheFind, $(JDK_TOPDIR)/src/java.base/share/classes/sun/util/resources)), \
- sun.util.resources.LocaleNamesBundle))
+$(eval $(call SetupCompileProperties, SUN_UTIL, \
+ SRC_DIRS := $(JDK_TOPDIR)/src/java.base/share/classes/sun/util/resources, \
+ CLASS := sun.util.resources.LocaleNamesBundle, \
+))
GENSRC_JAVA_BASE += $(LIST_RESOURCE_BUNDLE) $(SUN_UTIL)
--- a/jdk/make/gensrc/Gensrc-java.desktop.gmk Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/make/gensrc/Gensrc-java.desktop.gmk Thu Nov 19 18:18:05 2015 -0500
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, 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
@@ -66,11 +66,11 @@
PROP_SRC_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources
endif
-PROP_SRC_FILES := $(filter-out %cursors.properties, \
- $(filter %.properties, $(call CacheFind, $(PROP_SRC_DIRS))))
-
-$(eval $(call SetupCompileProperties,COMPILE_PROPERTIES, \
- $(PROP_SRC_FILES), ListResourceBundle))
+$(eval $(call SetupCompileProperties, COMPILE_PROPERTIES, \
+ SRC_DIRS := $(PROP_SRC_DIRS), \
+ EXCLUDE := %cursors.properties, \
+ CLASS := ListResourceBundle, \
+))
GENSRC_JAVA_DESKTOP += $(COMPILE_PROPERTIES)
--- a/jdk/make/gensrc/Gensrc-java.logging.gmk Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/make/gensrc/Gensrc-java.logging.gmk Thu Nov 19 18:18:05 2015 -0500
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2015, 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
@@ -29,10 +29,10 @@
include GensrcProperties.gmk
-$(eval $(call SetupCompileProperties,COMPILE_PROPERTIES, \
- $(filter %.properties, \
- $(call CacheFind, $(JDK_TOPDIR)/src/java.logging/share/classes/sun/util/logging/resources)), \
- ListResourceBundle))
+$(eval $(call SetupCompileProperties, COMPILE_PROPERTIES, \
+ SRC_DIRS := $(JDK_TOPDIR)/src/java.logging/share/classes/sun/util/logging/resources, \
+ CLASS := ListResourceBundle, \
+))
TARGETS += $(COMPILE_PROPERTIES)
--- a/jdk/make/gensrc/Gensrc-java.management.gmk Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/make/gensrc/Gensrc-java.management.gmk Thu Nov 19 18:18:05 2015 -0500
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, 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
@@ -32,10 +32,10 @@
include GensrcProperties.gmk
-$(eval $(call SetupCompileProperties,COMPILE_PROPERTIES, \
- $(filter %.properties, \
- $(call CacheFind, $(JDK_TOPDIR)/src/java.management/share/classes/sun/management/resources)), \
- ListResourceBundle))
+$(eval $(call SetupCompileProperties, COMPILE_PROPERTIES, \
+ SRC_DIRS := $(JDK_TOPDIR)/src/java.management/share/classes/sun/management/resources, \
+ CLASS := ListResourceBundle, \
+))
TARGETS += $(COMPILE_PROPERTIES)
--- a/jdk/make/gensrc/Gensrc-jdk.dev.gmk Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/make/gensrc/Gensrc-jdk.dev.gmk Thu Nov 19 18:18:05 2015 -0500
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2015, 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
@@ -29,11 +29,10 @@
include GensrcProperties.gmk
-$(eval $(call SetupCompileProperties,COMPILE_PROPERTIES, \
- $(filter %.properties, \
- $(call CacheFind, \
- $(JDK_TOPDIR)/src/jdk.dev/share/classes/jdk/tools/jimage/resources)), \
- ListResourceBundle))
+$(eval $(call SetupCompileProperties, COMPILE_PROPERTIES, \
+ SRC_DIRS := $(JDK_TOPDIR)/src/jdk.dev/share/classes/jdk/tools/jimage/resources, \
+ CLASS := ListResourceBundle, \
+))
TARGETS += $(COMPILE_PROPERTIES)
--- a/jdk/make/gensrc/Gensrc-jdk.jartool.gmk Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/make/gensrc/Gensrc-jdk.jartool.gmk Thu Nov 19 18:18:05 2015 -0500
@@ -29,11 +29,10 @@
include GensrcProperties.gmk
-$(eval $(call SetupCompileProperties,COMPILE_PROPERTIES, \
- $(filter %.properties, \
- $(call CacheFind, \
- $(JDK_TOPDIR)/src/jdk.jartool/share/classes/sun/tools/jar/resources)), \
- ListResourceBundle))
+$(eval $(call SetupCompileProperties, COMPILE_PROPERTIES, \
+ SRC_DIRS := $(JDK_TOPDIR)/src/jdk.jartool/share/classes/sun/tools/jar/resources, \
+ CLASS := ListResourceBundle, \
+))
TARGETS += $(COMPILE_PROPERTIES)
--- a/jdk/make/gensrc/Gensrc-jdk.jdi.gmk Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/make/gensrc/Gensrc-jdk.jdi.gmk Thu Nov 19 18:18:05 2015 -0500
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, 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
@@ -34,7 +34,7 @@
JAVA_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.jdi/com/sun/tools/jdi/JDWP.java
# Both the header and java file are created using the same recipe. By declaring
-# this rule and adding header file to dependencies for java file, both are
+# this rule and adding header file to dependencies for java file, both are
# rebuilt if either is missing
$(HEADER_FILE): $(JDWP_SPEC_FILE) $(BUILD_TOOLS_JDK)
@@ -90,10 +90,10 @@
include GensrcProperties.gmk
-$(eval $(call SetupCompileProperties,COMPILE_PROPERTIES, \
- $(filter %.properties, \
- $(call CacheFind, $(JDK_TOPDIR)/src/jdk.jdi/share/classes/com/sun/tools/jdi/resources)), \
- ListResourceBundle))
+$(eval $(call SetupCompileProperties, COMPILE_PROPERTIES, \
+ SRC_DIRS := $(JDK_TOPDIR)/src/jdk.jdi/share/classes/com/sun/tools/jdi/resources, \
+ CLASS := ListResourceBundle, \
+))
GENSRC_JDK_JDI += $(COMPILE_PROPERTIES)
--- a/jdk/make/gensrc/Gensrc-jdk.localedata.gmk Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/make/gensrc/Gensrc-jdk.localedata.gmk Thu Nov 19 18:18:05 2015 -0500
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2015, 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,10 +35,10 @@
include GensrcProperties.gmk
-$(eval $(call SetupCompileProperties,COMPILE_PROPERTIES, \
- $(filter %.properties, \
- $(call CacheFind, $(JDK_TOPDIR)/src/jdk.localedata/share/classes/sun/util/resources)), \
- sun.util.resources.LocaleNamesBundle))
+$(eval $(call SetupCompileProperties, COMPILE_PROPERTIES, \
+ SRC_DIRS := $(JDK_TOPDIR)/src/jdk.localedata/share/classes/sun/util/resources, \
+ CLASS := sun.util.resources.LocaleNamesBundle, \
+))
# Skip generating zh_HK from zh_TW for this module.
GENSRC_JDK_LOCALEDATA += $(filter-out %_zh_HK.java, $(COMPILE_PROPERTIES))
--- a/jdk/make/gensrc/GensrcProperties.gmk Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/make/gensrc/GensrcProperties.gmk Thu Nov 19 18:18:05 2015 -0500
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, 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
@@ -49,30 +49,40 @@
endef
################################################################################
-# Creates a rule that runs CompileProperties on a set of properties files.
-# Param 1 - Variable to add targets to, must not contain space
-# Param 2 - Properties files to process
-# Param 3 - The super class for the generated classes
-# Param 4 - Module path root, defaults to $(JDK_TOPDIR)/src
-define SetupCompileProperties
- $1_SRCS := $2
- $1_CLASS := $3
- $1_MODULE_PATH_ROOT := $4
-
+# Setup make rules that runs CompileProperties on a set of properties files.
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix,
+# and the targets generated are listed in a variable by that name.
+#
+# Remaining parameters are named arguments. These include:
+# SRC_DIRS Directories containing properties files to process.
+# EXCLUDE Exclude files matching this pattern.
+# CLASS The super class for the generated classes.
+# MODULE_PATH_ROOT Module path root, defaults to $(JDK_TOPDIR)/src.
+SetupCompileProperties = $(NamedParamsMacroTemplate)
+define SetupCompilePropertiesBody
+ # Set default value unless overridden
ifeq ($$($1_MODULE_PATH_ROOT), )
$1_MODULE_PATH_ROOT := $(JDK_TOPDIR)/src
endif
+ # Locate all properties files in the given source dirs.
+ $1_SRC_FILES := $$(filter %.properties, $$(call CacheFind, $$($1_SRC_DIRS)))
+
+ ifneq ($$($1_EXCLUDE), )
+ $1_SRC_FILES := $$(filter-out $$($1_EXCLUDE), $$($1_SRC_FILES))
+ endif
+
# Convert .../src/<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties
# to .../support/gensrc/<module>/com/sun/tools/javac/resources/javac_zh_CN.java
- # Strip away prefix and suffix, leaving for example only:
+ # Strip away prefix and suffix, leaving for example only:
# "<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN"
$1_JAVAS := $$(patsubst $$($1_MODULE_PATH_ROOT)/%, \
$(SUPPORT_OUTPUTDIR)/gensrc/%, \
$$(patsubst %.properties, %.java, \
$$(subst /$(OPENJDK_TARGET_OS)/classes,, \
$$(subst /$(OPENJDK_TARGET_OS_TYPE)/classes,, \
- $$(subst /share/classes,, $$($1_SRCS))))))
+ $$(subst /share/classes,, $$($1_SRC_FILES))))))
# Generate the package dirs for the to be generated java files. Sort to remove
# duplicates.
@@ -82,22 +92,22 @@
# "-compile ...javac_zh_CN.properties ...javac_zh_CN.java java.util.ListResourceBundle"
# suitable to be fed into the CompileProperties command.
$1_CMDLINE := $$(subst _SPACE_, $(SPACE), \
- $$(join $$(addprefix -compile_SPACE_, $$($1_SRCS)), \
+ $$(join $$(addprefix -compile_SPACE_, $$($1_SRC_FILES)), \
$$(addsuffix _SPACE_$$($1_CLASS), \
$$(addprefix _SPACE_, $$($1_JAVAS)))))
- $1_TARGET := $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the.$1.done
+ $1_TARGET := $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the.$1.marker
$1_CMDLINE_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the.$1.cmdline
# Now setup the rule for the generation of the resource bundles.
- $$($1_TARGET): $$($1_SRCS) $$($1_JAVAS) $(BUILD_TOOLS_JDK)
+ $$($1_TARGET): $$($1_SRC_FILES) $$($1_JAVAS) $(BUILD_TOOLS_JDK)
$(MKDIR) -p $$(@D) $$($1_DIRS)
- $(ECHO) Compiling $$(words $$($1_SRCS)) properties into resource bundles for $(MODULE)
+ $(ECHO) Compiling $$(words $$($1_SRC_FILES)) properties into resource bundles for $(MODULE)
$$(eval $$(call ListPathsSafely, $1_CMDLINE, $$($1_CMDLINE_FILE)))
$(TOOL_COMPILEPROPERTIES) -quiet @$$($1_CMDLINE_FILE)
$(TOUCH) $$@
- $$($1_JAVAS): $$($1_SRCS)
+ $$($1_JAVAS): $$($1_SRC_FILES)
# Create zh_HK versions of all zh_TW files created above
$$(eval $$(call SetupCopy-zh_HK,$1_HK,$$(filter %_zh_TW.java, $$($1_JAVAS))))
--- a/jdk/make/lib/Awt2dLibraries.gmk Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/make/lib/Awt2dLibraries.gmk Thu Nov 19 18:18:05 2015 -0500
@@ -476,7 +476,7 @@
ifeq ($(USE_EXTERNAL_LIBJPEG), true)
LIBJPEG_LIBS := -ljpeg
BUILD_LIBJAVAJPEG_INCLUDE_FILES := \
- imageIOJPEG.c \
+ imageioJPEG.c \
jpegdecoder.c
BUILD_LIBJAVAJPEG_HEADERS :=
else
--- a/jdk/make/src/classes/build/tools/x11wrappergen/WrapperGenerator.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/make/src/classes/build/tools/x11wrappergen/WrapperGenerator.java Thu Nov 19 18:18:05 2015 -0500
@@ -841,7 +841,7 @@
pw.println("// This file is an automatically generated file, please do not edit this file, modify the WrapperGenerator.java file instead !\n" );
pw.println("package "+package_name+";\n");
- pw.println("import sun.misc.*;\n");
+ pw.println("import jdk.internal.misc.Unsafe;\n");
pw.println("import sun.util.logging.PlatformLogger;");
String baseClass = stp.getBaseClass();
if (baseClass == null) {
@@ -941,7 +941,7 @@
pw.println("// This file is an automatically generated file, please do not edit this file, modify the WrapperGenerator.java file instead !\n" );
pw.println("package "+package_name+";\n");
- pw.println("import sun.misc.Unsafe;\n");
+ pw.println("import jdk.internal.misc.Unsafe;\n");
pw.println("class " + ft.getName() + " {");
pw.println("\tprivate static Unsafe unsafe = XlibWrapper.unsafe;");
pw.println("\tprivate boolean __executed = false;");
--- a/jdk/src/java.base/aix/classes/sun/nio/ch/AixPollPort.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/aix/classes/sun/nio/ch/AixPollPort.java Thu Nov 19 18:18:05 2015 -0500
@@ -34,7 +34,7 @@
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.ReentrantLock;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* AsynchronousChannelGroup implementation based on the AIX pollset framework.
--- a/jdk/src/java.base/linux/classes/sun/nio/ch/EPoll.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/linux/classes/sun/nio/ch/EPoll.java Thu Nov 19 18:18:05 2015 -0500
@@ -26,7 +26,7 @@
package sun.nio.ch;
import java.io.IOException;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Provides access to the Linux epoll facility.
--- a/jdk/src/java.base/linux/classes/sun/nio/fs/LinuxDosFileAttributeView.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/linux/classes/sun/nio/fs/LinuxDosFileAttributeView.java Thu Nov 19 18:18:05 2015 -0500
@@ -29,7 +29,7 @@
import java.util.Map;
import java.util.Set;
import java.io.IOException;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import static sun.nio.fs.UnixNativeDispatcher.*;
import static sun.nio.fs.UnixConstants.*;
--- a/jdk/src/java.base/linux/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/linux/classes/sun/nio/fs/LinuxUserDefinedFileAttributeView.java Thu Nov 19 18:18:05 2015 -0500
@@ -29,7 +29,7 @@
import java.nio.ByteBuffer;
import java.io.IOException;
import java.util.*;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import static sun.nio.fs.UnixConstants.*;
import static sun.nio.fs.LinuxNativeDispatcher.*;
--- a/jdk/src/java.base/linux/classes/sun/nio/fs/LinuxWatchService.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/linux/classes/sun/nio/fs/LinuxWatchService.java Thu Nov 19 18:18:05 2015 -0500
@@ -30,7 +30,7 @@
import java.security.PrivilegedAction;
import java.util.*;
import java.io.IOException;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import static sun.nio.fs.UnixNativeDispatcher.*;
import static sun.nio.fs.UnixConstants.*;
--- a/jdk/src/java.base/macosx/classes/sun/nio/ch/KQueue.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/macosx/classes/sun/nio/ch/KQueue.java Thu Nov 19 18:18:05 2015 -0500
@@ -26,7 +26,7 @@
package sun.nio.ch;
import java.io.IOException;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Provides access to the BSD kqueue facility.
--- a/jdk/src/java.base/share/classes/java/io/File.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/io/File.java Thu Nov 19 18:18:05 2015 -0500
@@ -2184,10 +2184,10 @@
private static final long PATH_OFFSET;
private static final long PREFIX_LENGTH_OFFSET;
- private static final sun.misc.Unsafe UNSAFE;
+ private static final jdk.internal.misc.Unsafe UNSAFE;
static {
try {
- sun.misc.Unsafe unsafe = sun.misc.Unsafe.getUnsafe();
+ jdk.internal.misc.Unsafe unsafe = jdk.internal.misc.Unsafe.getUnsafe();
PATH_OFFSET = unsafe.objectFieldOffset(
File.class.getDeclaredField("path"));
PREFIX_LENGTH_OFFSET = unsafe.objectFieldOffset(
--- a/jdk/src/java.base/share/classes/java/io/ObjectInputStream.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/io/ObjectInputStream.java Thu Nov 19 18:18:05 2015 -0500
@@ -40,7 +40,7 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import static java.io.ObjectStreamClass.processQueue;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import sun.reflect.misc.ReflectUtil;
/**
--- a/jdk/src/java.base/share/classes/java/io/ObjectStreamClass.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/io/ObjectStreamClass.java Thu Nov 19 18:18:05 2015 -0500
@@ -48,7 +48,7 @@
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import sun.reflect.CallerSensitive;
import sun.reflect.Reflection;
import sun.reflect.ReflectionFactory;
--- a/jdk/src/java.base/share/classes/java/lang/Class.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/Class.java Thu Nov 19 18:18:05 2015 -0500
@@ -55,7 +55,7 @@
import java.util.HashMap;
import java.util.Objects;
import java.util.StringJoiner;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import jdk.internal.HotSpotIntrinsicCandidate;
import sun.reflect.CallerSensitive;
import sun.reflect.ConstantPool;
--- a/jdk/src/java.base/share/classes/java/lang/Process.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/Process.java Thu Nov 19 18:18:05 2015 -0500
@@ -83,7 +83,7 @@
* {@link #getPid() process id},
* {@link #info() information about the process},
* {@link #children() direct children}, and
- * {@link #allChildren() direct and indirect children} of the process.
+ * {@link #descendants() direct children plus descendants of those children} of the process.
* Delegating to the underlying Process or ProcessHandle is typically
* easiest and most efficient.
*
@@ -351,7 +351,7 @@
* The {@link java.util.concurrent.CompletableFuture} provides the ability
* to trigger dependent functions or actions that may be run synchronously
* or asynchronously upon process termination.
- * When the process terminates the CompletableFuture is
+ * When the process has terminated the CompletableFuture is
* {@link java.util.concurrent.CompletableFuture#complete completed} regardless
* of the exit status of the process.
* <p>
@@ -362,9 +362,6 @@
* {@link java.util.concurrent.CompletableFuture#cancel(boolean) Cancelling}
* the CompletableFuture does not affect the Process.
* <p>
- * If the process is {@link #isAlive not alive} the {@link CompletableFuture}
- * returned has been {@link java.util.concurrent.CompletableFuture#complete completed}.
- * <p>
* Processes returned from {@link ProcessBuilder#start} override the
* default implementation to provide an efficient mechanism to wait
* for process exit.
@@ -406,6 +403,9 @@
* return delegate.onExit().thenApply(p -> this);
* }
* }</pre>
+ * @apiNote
+ * The process may be observed to have terminated with {@link #isAlive}
+ * before the ComputableFuture is completed and dependent actions are invoked.
*
* @return a new {@code CompletableFuture<Process>} for the Process
*
@@ -464,7 +464,7 @@
* {@link java.lang.UnsupportedOperationException} and performs no other action.
* Subclasses should override this method to provide a ProcessHandle for the
* process. The methods {@link #getPid}, {@link #info}, {@link #children},
- * and {@link #allChildren}, unless overridden, operate on the ProcessHandle.
+ * and {@link #descendants}, unless overridden, operate on the ProcessHandle.
*
* @return Returns a ProcessHandle for the Process
* @throws UnsupportedOperationException if the Process implementation
@@ -481,9 +481,8 @@
/**
* Returns a snapshot of information about the process.
*
- * <p> An {@link ProcessHandle.Info} instance has various accessor methods
- * that return information about the process, if the process is alive and
- * the information is available, otherwise {@code null} is returned.
+ * <p> A {@link ProcessHandle.Info} instance has accessor methods
+ * that return information about the process if it is available.
*
* @implSpec
* This implementation returns information about the process as:
@@ -524,9 +523,9 @@
}
/**
- * Returns a snapshot of the direct and indirect children of the process.
- * An indirect child is one whose parent is either a direct child or
- * another indirect child.
+ * Returns a snapshot of the descendants of the process.
+ * The descendants of a process are the children of the process
+ * plus the descendants of those children, recursively.
* Typically, a process that is {@link #isAlive not alive} has no children.
* <p>
* <em>Note that processes are created and terminate asynchronously.
@@ -535,18 +534,18 @@
*
* @implSpec
* This implementation returns all children as:
- * {@link #toHandle toHandle().allChildren()}.
+ * {@link #toHandle toHandle().descendants()}.
*
- * @return a sequential Stream of ProcessHandles for processes that are
- * direct and indirect children of the process
+ * @return a sequential Stream of ProcessHandles for processes that
+ * are descendants of the process
* @throws UnsupportedOperationException if the Process implementation
* does not support this operation
* @throws SecurityException if a security manager has been installed and
* it denies RuntimePermission("manageProcess")
* @since 1.9
*/
- public Stream<ProcessHandle> allChildren() {
- return toHandle().allChildren();
+ public Stream<ProcessHandle> descendants() {
+ return toHandle().descendants();
}
--- a/jdk/src/java.base/share/classes/java/lang/ProcessHandle.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/ProcessHandle.java Thu Nov 19 18:18:05 2015 -0500
@@ -54,7 +54,7 @@
* Each ProcessHandle identifies and allows control of a process in the native
* system. ProcessHandles are returned from the factory methods {@link #current()},
* {@link #of(long)},
- * {@link #children}, {@link #allChildren}, {@link #parent()} and
+ * {@link #children}, {@link #descendants}, {@link #parent()} and
* {@link #allProcesses()}.
* <p>
* The {@link Process} instances created by {@link ProcessBuilder} can be queried
@@ -164,21 +164,21 @@
Stream<ProcessHandle> children();
/**
- * Returns a snapshot of the current direct and indirect children of the process.
- * An indirect child is one whose parent is either a direct child or
- * another indirect child.
+ * Returns a snapshot of the descendants of the process.
+ * The descendants of a process are the children of the process
+ * plus the descendants of those children, recursively.
* Typically, a process that is {@link #isAlive not alive} has no children.
* <p>
* <em>Note that processes are created and terminate asynchronously.
* There is no guarantee that a process is {@link #isAlive alive}.
* </em>
*
- * @return a sequential Stream of ProcessHandles for processes that are
- * direct and indirect children of the process
+ * @return a sequential Stream of ProcessHandles for processes that
+ * are descendants of the process
* @throws SecurityException if a security manager has been installed and
* it denies RuntimePermission("manageProcess")
*/
- Stream<ProcessHandle> allChildren();
+ Stream<ProcessHandle> descendants();
/**
* Returns a snapshot of all processes visible to the current process.
@@ -201,9 +201,8 @@
/**
* Returns a snapshot of information about the process.
*
- * <p> An {@code Info} instance has various accessor methods that return
- * information about the process, if the process is alive and the
- * information is available.
+ * <p> A {@link ProcessHandle.Info} instance has accessor methods that return
+ * information about the process if it is available.
*
* @return a snapshot of information about the process, always non-null
*/
@@ -288,7 +287,7 @@
* The {@link java.util.concurrent.CompletableFuture} provides the ability
* to trigger dependent functions or actions that may be run synchronously
* or asynchronously upon process termination.
- * When the process terminates the CompletableFuture is
+ * When the process has terminated the CompletableFuture is
* {@link java.util.concurrent.CompletableFuture#complete completed} regardless
* of the exit status of the process.
* The {@code onExit} method can be called multiple times to invoke
@@ -300,9 +299,9 @@
* {@link java.util.concurrent.Future#get() wait} for it to terminate.
* {@link java.util.concurrent.Future#cancel(boolean) Cancelling}
* the CompleteableFuture does not affect the Process.
- * <p>
- * If the process is {@link #isAlive not alive} the {@link CompletableFuture}
- * returned has been {@link java.util.concurrent.CompletableFuture#complete completed}.
+ * @apiNote
+ * The process may be observed to have terminated with {@link #isAlive}
+ * before the ComputableFuture is completed and dependent actions are invoked.
*
* @return a new {@code CompletableFuture<ProcessHandle>} for the ProcessHandle
*
--- a/jdk/src/java.base/share/classes/java/lang/ProcessHandleImpl.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/ProcessHandleImpl.java Thu Nov 19 18:18:05 2015 -0500
@@ -389,7 +389,7 @@
}
@Override
- public Stream<ProcessHandle> allChildren() {
+ public Stream<ProcessHandle> descendants() {
SecurityManager sm = System.getSecurityManager();
if (sm != null) {
sm.checkPermission(new RuntimePermission("manageProcess"));
--- a/jdk/src/java.base/share/classes/java/lang/invoke/BoundMethodHandle.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/BoundMethodHandle.java Thu Nov 19 18:18:05 2015 -0500
@@ -34,14 +34,16 @@
import java.lang.invoke.MethodHandles.Lookup;
import java.lang.reflect.Field;
import java.util.Arrays;
-import java.util.HashMap;
+import java.util.function.Function;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.ConcurrentHashMap;
+import jdk.internal.org.objectweb.asm.FieldVisitor;
import sun.invoke.util.ValueConversions;
import sun.invoke.util.Wrapper;
import jdk.internal.org.objectweb.asm.ClassWriter;
import jdk.internal.org.objectweb.asm.MethodVisitor;
-import jdk.internal.org.objectweb.asm.Type;
/**
* The flavor of method handle which emulates an invoke instruction
@@ -217,7 +219,7 @@
/*non-public*/ int fieldCount() {
return 1;
}
- /*non-public*/ static final SpeciesData SPECIES_DATA = SpeciesData.getForClass("L", Species_L.class);
+ /*non-public*/ static final SpeciesData SPECIES_DATA = new SpeciesData("L", Species_L.class);
/*non-public*/ static BoundMethodHandle make(MethodType mt, LambdaForm lf, Object argL0) {
return new Species_L(mt, lf, argL0);
}
@@ -335,7 +337,7 @@
static final SpeciesData EMPTY = new SpeciesData("", BoundMethodHandle.class);
- private SpeciesData(String types, Class<? extends BoundMethodHandle> clazz) {
+ SpeciesData(String types, Class<? extends BoundMethodHandle> clazz) {
this.typeChars = types;
this.typeCodes = basicTypes(types);
this.clazz = clazz;
@@ -355,26 +357,14 @@
assert(!INIT_DONE);
if (constructor() == null) {
String types = typeChars;
+ CACHE.put(types, this);
Factory.makeCtors(clazz, types, this.constructor);
Factory.makeGetters(clazz, types, this.getters);
Factory.makeNominalGetters(types, this.nominalGetters, this.getters);
}
}
- private SpeciesData(String typeChars) {
- // Placeholder only.
- this.typeChars = typeChars;
- this.typeCodes = basicTypes(typeChars);
- this.clazz = null;
- this.constructor = null;
- this.getters = null;
- this.nominalGetters = null;
- this.extensions = null;
- }
- private boolean isPlaceholder() { return clazz == null; }
-
- private static final HashMap<String, SpeciesData> CACHE = new HashMap<>();
- static { CACHE.put("", EMPTY); } // make bootstrap predictable
+ private static final ConcurrentMap<String, SpeciesData> CACHE = new ConcurrentHashMap<>();
private static final boolean INIT_DONE; // set after <clinit> finishes...
SpeciesData extendWith(byte type) {
@@ -390,62 +380,52 @@
}
private static SpeciesData get(String types) {
- // Acquire cache lock for query.
- SpeciesData d = lookupCache(types);
- if (!d.isPlaceholder())
- return d;
- synchronized (d) {
- // Use synch. on the placeholder to prevent multiple instantiation of one species.
- // Creating this class forces a recursive call to getForClass.
- if (lookupCache(types).isPlaceholder())
- Factory.generateConcreteBMHClass(types);
- }
- // Reacquire cache lock.
- d = lookupCache(types);
- // Class loading must have upgraded the cache.
- assert(d != null && !d.isPlaceholder());
- return d;
- }
- static SpeciesData getForClass(String types, Class<? extends BoundMethodHandle> clazz) {
- // clazz is a new class which is initializing its SPECIES_DATA field
- return updateCache(types, new SpeciesData(types, clazz));
- }
- private static synchronized SpeciesData lookupCache(String types) {
- SpeciesData d = CACHE.get(types);
- if (d != null) return d;
- d = new SpeciesData(types);
- assert(d.isPlaceholder());
- CACHE.put(types, d);
- return d;
- }
- private static synchronized SpeciesData updateCache(String types, SpeciesData d) {
- SpeciesData d2;
- assert((d2 = CACHE.get(types)) == null || d2.isPlaceholder());
- assert(!d.isPlaceholder());
- CACHE.put(types, d);
- return d;
+ return CACHE.computeIfAbsent(types, new Function<String, SpeciesData>() {
+ @Override
+ public SpeciesData apply(String types) {
+ Class<? extends BoundMethodHandle> bmhcl = Factory.getConcreteBMHClass(types);
+ // SpeciesData instantiation may throw VirtualMachineError because of
+ // code cache overflow...
+ SpeciesData speciesData = new SpeciesData(types, bmhcl);
+ // CHM.computeIfAbsent ensures only one SpeciesData will be set
+ // successfully on the concrete BMH class if ever
+ Factory.setSpeciesDataToConcreteBMHClass(bmhcl, speciesData);
+ // the concrete BMH class is published via SpeciesData instance
+ // returned here only after it's SPECIES_DATA field is set
+ return speciesData;
+ }
+ });
}
- static {
- // pre-fill the BMH speciesdata cache with BMH's inner classes
- final Class<BoundMethodHandle> rootCls = BoundMethodHandle.class;
+ /**
+ * This is to be called when assertions are enabled. It checks whether SpeciesData for all of the statically
+ * defined species subclasses of BoundMethodHandle has been added to the SpeciesData cache. See below in the
+ * static initializer for
+ */
+ static boolean speciesDataCachePopulated() {
+ Class<BoundMethodHandle> rootCls = BoundMethodHandle.class;
try {
for (Class<?> c : rootCls.getDeclaredClasses()) {
if (rootCls.isAssignableFrom(c)) {
final Class<? extends BoundMethodHandle> cbmh = c.asSubclass(BoundMethodHandle.class);
- SpeciesData d = Factory.speciesDataFromConcreteBMHClass(cbmh);
+ SpeciesData d = Factory.getSpeciesDataFromConcreteBMHClass(cbmh);
assert(d != null) : cbmh.getName();
assert(d.clazz == cbmh);
- assert(d == lookupCache(d.typeChars));
+ assert(CACHE.get(d.typeChars) == d);
}
}
} catch (Throwable e) {
throw newInternalError(e);
}
+ return true;
+ }
- for (SpeciesData d : CACHE.values()) {
- d.initForBootstrap();
- }
+ static {
+ // Pre-fill the BMH species-data cache with EMPTY and all BMH's inner subclasses.
+ EMPTY.initForBootstrap();
+ Species_L.SPECIES_DATA.initForBootstrap();
+ // check that all static SpeciesData instances have been initialized
+ assert speciesDataCachePopulated();
// Note: Do not simplify this, because INIT_DONE must not be
// a compile-time constant during bootstrapping.
INIT_DONE = Boolean.TRUE;
@@ -479,6 +459,7 @@
static final String BMH_SIG = "L"+BMH+";";
static final String SPECIES_DATA = "java/lang/invoke/BoundMethodHandle$SpeciesData";
static final String SPECIES_DATA_SIG = "L"+SPECIES_DATA+";";
+ static final String STABLE_SIG = "Ljava/lang/invoke/Stable;";
static final String SPECIES_PREFIX_NAME = "Species_";
static final String SPECIES_PREFIX_PATH = BMH + "$" + SPECIES_PREFIX_NAME;
@@ -493,6 +474,26 @@
static final String[] E_THROWABLE = new String[] { "java/lang/Throwable" };
+ static final ConcurrentMap<String, Class<? extends BoundMethodHandle>> CLASS_CACHE = new ConcurrentHashMap<>();
+
+ /**
+ * Get a concrete subclass of BMH for a given combination of bound types.
+ *
+ * @param types the type signature, wherein reference types are erased to 'L'
+ * @return the concrete BMH class
+ */
+ static Class<? extends BoundMethodHandle> getConcreteBMHClass(String types) {
+ // CHM.computeIfAbsent ensures generateConcreteBMHClass is called
+ // only once per key.
+ return CLASS_CACHE.computeIfAbsent(
+ types, new Function<String, Class<? extends BoundMethodHandle>>() {
+ @Override
+ public Class<? extends BoundMethodHandle> apply(String types) {
+ return generateConcreteBMHClass(types);
+ }
+ });
+ }
+
/**
* Generate a concrete subclass of BMH for a given combination of bound types.
*
@@ -529,7 +530,7 @@
* }
* final SpeciesData speciesData() { return SPECIES_DATA; }
* final int fieldCount() { return 3; }
- * static final SpeciesData SPECIES_DATA = SpeciesData.getForClass("LLI", Species_LLI.class);
+ * @Stable static SpeciesData SPECIES_DATA; // injected afterwards
* static BoundMethodHandle make(MethodType mt, LambdaForm lf, Object argL0, Object argL1, int argI2) {
* return new Species_LLI(mt, lf, argL0, argL1, argI2);
* }
@@ -568,7 +569,9 @@
cw.visitSource(sourceFile, null);
// emit static types and SPECIES_DATA fields
- cw.visitField(NOT_ACC_PUBLIC + ACC_STATIC, "SPECIES_DATA", SPECIES_DATA_SIG, null, null).visitEnd();
+ FieldVisitor fw = cw.visitField(NOT_ACC_PUBLIC + ACC_STATIC, "SPECIES_DATA", SPECIES_DATA_SIG, null, null);
+ fw.visitAnnotation(STABLE_SIG, true);
+ fw.visitEnd();
// emit bound argument fields
for (int i = 0; i < types.length(); ++i) {
@@ -694,17 +697,6 @@
mv.visitEnd();
}
- // emit class initializer
- mv = cw.visitMethod(NOT_ACC_PUBLIC | ACC_STATIC, "<clinit>", VOID_SIG, null, null);
- mv.visitCode();
- mv.visitLdcInsn(types);
- mv.visitLdcInsn(Type.getObjectType(className));
- mv.visitMethodInsn(INVOKESTATIC, SPECIES_DATA, "getForClass", BMHSPECIES_DATA_GFC_SIG, false);
- mv.visitFieldInsn(PUTSTATIC, className, "SPECIES_DATA", SPECIES_DATA_SIG);
- mv.visitInsn(RETURN);
- mv.visitMaxs(0, 0);
- mv.visitEnd();
-
cw.visitEnd();
// load class
@@ -715,7 +707,6 @@
UNSAFE.defineClass(className, classFile, 0, classFile.length,
BoundMethodHandle.class.getClassLoader(), null)
.asSubclass(BoundMethodHandle.class);
- UNSAFE.ensureClassInitialized(bmhClass);
return bmhClass;
}
@@ -785,7 +776,7 @@
// Auxiliary methods.
//
- static SpeciesData speciesDataFromConcreteBMHClass(Class<? extends BoundMethodHandle> cbmh) {
+ static SpeciesData getSpeciesDataFromConcreteBMHClass(Class<? extends BoundMethodHandle> cbmh) {
try {
Field F_SPECIES_DATA = cbmh.getDeclaredField("SPECIES_DATA");
return (SpeciesData) F_SPECIES_DATA.get(null);
@@ -794,6 +785,16 @@
}
}
+ static void setSpeciesDataToConcreteBMHClass(Class<? extends BoundMethodHandle> cbmh, SpeciesData speciesData) {
+ try {
+ Field F_SPECIES_DATA = cbmh.getDeclaredField("SPECIES_DATA");
+ assert F_SPECIES_DATA.getDeclaredAnnotation(Stable.class) != null;
+ F_SPECIES_DATA.set(null, speciesData);
+ } catch (ReflectiveOperationException ex) {
+ throw newInternalError(ex);
+ }
+ }
+
/**
* Field names in concrete BMHs adhere to this pattern:
* arg + type + index
--- a/jdk/src/java.base/share/classes/java/lang/invoke/DirectMethodHandle.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/DirectMethodHandle.java Thu Nov 19 18:18:05 2015 -0500
@@ -25,7 +25,7 @@
package java.lang.invoke;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import java.lang.reflect.Method;
import java.util.Arrays;
import sun.invoke.util.VerifyAccess;
--- a/jdk/src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java Thu Nov 19 18:18:05 2015 -0500
@@ -27,7 +27,7 @@
import jdk.internal.org.objectweb.asm.*;
import sun.invoke.util.BytecodeDescriptor;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import sun.security.action.GetPropertyAction;
import java.io.FilePermission;
--- a/jdk/src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Thu Nov 19 18:18:05 2015 -0500
@@ -775,7 +775,7 @@
// Sample classes from each package we are willing to bind to statically:
java.lang.Object.class,
java.util.Arrays.class,
- sun.misc.Unsafe.class
+ jdk.internal.misc.Unsafe.class
//MethodHandle.class already covered
};
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MemberName.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MemberName.java Thu Nov 19 18:18:05 2015 -0500
@@ -694,8 +694,11 @@
@Override
public int hashCode() {
- return Objects.hash(clazz, getReferenceKind(), name, getType());
+ // Avoid autoboxing getReferenceKind(), since this is used early and will force
+ // early initialization of Byte$ByteCache
+ return Objects.hash(clazz, new Byte(getReferenceKind()), name, getType());
}
+
@Override
public boolean equals(Object that) {
return (that instanceof MemberName && this.equals((MemberName)that));
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleNatives.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleNatives.java Thu Nov 19 18:18:05 2015 -0500
@@ -50,7 +50,7 @@
static native int getMembers(Class<?> defc, String matchName, String matchSig,
int matchFlags, Class<?> caller, int skip, MemberName[] results);
- /// Field layout queries parallel to sun.misc.Unsafe:
+ /// Field layout queries parallel to jdk.internal.misc.Unsafe:
static native long objectFieldOffset(MemberName self); // e.g., returns vmindex
static native long staticFieldOffset(MemberName self); // e.g., returns vmindex
static native Object staticFieldBase(MemberName self); // e.g., returns clazz
--- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleStatics.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleStatics.java Thu Nov 19 18:18:05 2015 -0500
@@ -27,7 +27,7 @@
import java.security.AccessController;
import java.security.PrivilegedAction;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* This class consists exclusively of static names internal to the
--- a/jdk/src/java.base/share/classes/java/math/BigDecimal.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/math/BigDecimal.java Thu Nov 19 18:18:05 2015 -0500
@@ -3726,12 +3726,12 @@
}
private static class UnsafeHolder {
- private static final sun.misc.Unsafe unsafe;
+ private static final jdk.internal.misc.Unsafe unsafe;
private static final long intCompactOffset;
private static final long intValOffset;
static {
try {
- unsafe = sun.misc.Unsafe.getUnsafe();
+ unsafe = jdk.internal.misc.Unsafe.getUnsafe();
intCompactOffset = unsafe.objectFieldOffset
(BigDecimal.class.getDeclaredField("intCompact"));
intValOffset = unsafe.objectFieldOffset
--- a/jdk/src/java.base/share/classes/java/math/BigInteger.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/math/BigInteger.java Thu Nov 19 18:18:05 2015 -0500
@@ -4526,12 +4526,12 @@
// Support for resetting final fields while deserializing
private static class UnsafeHolder {
- private static final sun.misc.Unsafe unsafe;
+ private static final jdk.internal.misc.Unsafe unsafe;
private static final long signumOffset;
private static final long magOffset;
static {
try {
- unsafe = sun.misc.Unsafe.getUnsafe();
+ unsafe = jdk.internal.misc.Unsafe.getUnsafe();
signumOffset = unsafe.objectFieldOffset
(BigInteger.class.getDeclaredField("signum"));
magOffset = unsafe.objectFieldOffset
--- a/jdk/src/java.base/share/classes/java/net/Inet6Address.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/net/Inet6Address.java Thu Nov 19 18:18:05 2015 -0500
@@ -576,11 +576,11 @@
};
private static final long FIELDS_OFFSET;
- private static final sun.misc.Unsafe UNSAFE;
+ private static final jdk.internal.misc.Unsafe UNSAFE;
static {
try {
- sun.misc.Unsafe unsafe = sun.misc.Unsafe.getUnsafe();
+ jdk.internal.misc.Unsafe unsafe = jdk.internal.misc.Unsafe.getUnsafe();
FIELDS_OFFSET = unsafe.objectFieldOffset(
Inet6Address.class.getDeclaredField("holder6"));
UNSAFE = unsafe;
--- a/jdk/src/java.base/share/classes/java/net/InetAddress.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/net/InetAddress.java Thu Nov 19 18:18:05 2015 -0500
@@ -29,6 +29,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;
+import java.util.Objects;
import java.util.ServiceLoader;
import java.security.AccessController;
import java.io.ObjectStreamException;
@@ -733,7 +734,7 @@
*/
public String toString() {
String hostName = holder().getHostName();
- return ((hostName != null) ? hostName : "")
+ return Objects.toString(hostName, "")
+ "/" + getHostAddress();
}
@@ -1493,11 +1494,11 @@
}
private static final long FIELDS_OFFSET;
- private static final sun.misc.Unsafe UNSAFE;
+ private static final jdk.internal.misc.Unsafe UNSAFE;
static {
try {
- sun.misc.Unsafe unsafe = sun.misc.Unsafe.getUnsafe();
+ jdk.internal.misc.Unsafe unsafe = jdk.internal.misc.Unsafe.getUnsafe();
FIELDS_OFFSET = unsafe.objectFieldOffset(
InetAddress.class.getDeclaredField("holder")
);
--- a/jdk/src/java.base/share/classes/java/net/InetSocketAddress.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/net/InetSocketAddress.java Thu Nov 19 18:18:05 2015 -0500
@@ -303,10 +303,10 @@
}
private static final long FIELDS_OFFSET;
- private static final sun.misc.Unsafe UNSAFE;
+ private static final jdk.internal.misc.Unsafe UNSAFE;
static {
try {
- sun.misc.Unsafe unsafe = sun.misc.Unsafe.getUnsafe();
+ jdk.internal.misc.Unsafe unsafe = jdk.internal.misc.Unsafe.getUnsafe();
FIELDS_OFFSET = unsafe.objectFieldOffset(
InetSocketAddress.class.getDeclaredField("holder"));
UNSAFE = unsafe;
--- a/jdk/src/java.base/share/classes/java/net/SocketOptions.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/net/SocketOptions.java Thu Nov 19 18:18:05 2015 -0500
@@ -61,21 +61,21 @@
* If the requested option is binary, it can be set using this method by
* a java.lang.Boolean:
* <BR><PRE>
- * s.setOption(TCP_NODELAY, new Boolean(true));
+ * s.setOption(TCP_NODELAY, Boolean.TRUE);
* // OK - enables TCP_NODELAY, a binary option
* </PRE>
* <BR>
- * Any option can be disabled using this method with a Boolean(false):
+ * Any option can be disabled using this method with a Boolean.FALSE:
* <BR><PRE>
- * s.setOption(TCP_NODELAY, new Boolean(false));
+ * s.setOption(TCP_NODELAY, Boolean.FALSE);
* // OK - disables TCP_NODELAY
- * s.setOption(SO_LINGER, new Boolean(false));
+ * s.setOption(SO_LINGER, Boolean.FALSE);
* // OK - disables SO_LINGER
* </PRE>
* <BR>
* For an option that has a notion of on and off, and requires
* a non-boolean parameter, setting its value to anything other than
- * <I>Boolean(false)</I> implicitly enables it.
+ * <I>Boolean.FALSE</I> implicitly enables it.
* <BR>
* Throws SocketException if the option is unrecognized,
* the socket is closed, or some low-level error occurred
@@ -91,8 +91,8 @@
/**
* Fetch the value of an option.
- * Binary options will return java.lang.Boolean(true)
- * if enabled, java.lang.Boolean(false) if disabled, e.g.:
+ * Binary options will return java.lang.Boolean.TRUE
+ * if enabled, java.lang.Boolean.FALSE if disabled, e.g.:
* <BR><PRE>
* SocketImpl s;
* ...
@@ -105,13 +105,13 @@
* <P>
* For options that take a particular type as a parameter,
* getOption(int) will return the parameter's value, else
- * it will return java.lang.Boolean(false):
+ * it will return java.lang.Boolean.FALSE:
* <PRE>
* Object o = s.getOption(SO_LINGER);
* if (o instanceof Integer) {
* System.out.print("Linger time is " + ((Integer)o).intValue());
* } else {
- * // the true type of o is java.lang.Boolean(false);
+ * // the true type of o is java.lang.Boolean.FALSE;
* }
* </PRE>
*
--- a/jdk/src/java.base/share/classes/java/net/URLConnection.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/net/URLConnection.java Thu Nov 19 18:18:05 2015 -0500
@@ -32,6 +32,7 @@
import java.util.Hashtable;
import java.util.Date;
import java.util.Iterator;
+import java.util.Objects;
import java.util.ServiceConfigurationError;
import java.util.ServiceLoader;
import java.util.StringTokenizer;
@@ -1250,7 +1251,7 @@
if (handler != null) {
ContentHandler h = handlers.putIfAbsent(contentType, handler);
- return h != null ? h : handler;
+ return Objects.requireNonNullElse(h, handler);
}
try {
@@ -1263,7 +1264,7 @@
assert handler != null;
ContentHandler h = handlers.putIfAbsent(contentType, handler);
- return h != null ? h : handler;
+ return Objects.requireNonNullElse(h, handler);
}
/*
--- a/jdk/src/java.base/share/classes/java/nio/MappedByteBuffer.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/nio/MappedByteBuffer.java Thu Nov 19 18:18:05 2015 -0500
@@ -26,7 +26,7 @@
package java.nio;
import java.io.FileDescriptor;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
--- a/jdk/src/java.base/share/classes/java/nio/charset/Charset.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/nio/charset/Charset.java Thu Nov 19 18:18:05 2015 -0500
@@ -37,6 +37,7 @@
import java.util.Locale;
import java.util.Map;
import java.util.NoSuchElementException;
+import java.util.Objects;
import java.util.Set;
import java.util.ServiceLoader;
import java.util.ServiceConfigurationError;
@@ -625,6 +626,7 @@
private final String name; // tickles a bug in oldjavac
private final String[] aliases; // tickles a bug in oldjavac
+ private final String[] zeroAliases = new String[0];
private Set<String> aliasSet = null;
/**
@@ -642,7 +644,7 @@
*/
protected Charset(String canonicalName, String[] aliases) {
checkName(canonicalName);
- String[] as = (aliases == null) ? new String[0] : aliases;
+ String[] as = Objects.requireNonNullElse(aliases, zeroAliases);
for (int i = 0; i < as.length; i++)
checkName(as[i]);
this.name = canonicalName;
--- a/jdk/src/java.base/share/classes/java/security/SecureRandom.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/security/SecureRandom.java Thu Nov 19 18:18:05 2015 -0500
@@ -419,7 +419,7 @@
* @since 1.5
*/
public String getAlgorithm() {
- return (algorithm != null) ? algorithm : "unknown";
+ return Objects.toString(algorithm, "unknown");
}
/**
--- a/jdk/src/java.base/share/classes/java/time/Duration.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/time/Duration.java Thu Nov 19 18:18:05 2015 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -359,8 +359,8 @@
* there must be at least one section after the "T".
* The number part of each section must consist of one or more ASCII digits.
* The number may be prefixed by the ASCII negative or positive symbol.
- * The number of days, hours and minutes must parse to an {@code long}.
- * The number of seconds must parse to an {@code long} with optional fraction.
+ * The number of days, hours and minutes must parse to a {@code long}.
+ * The number of seconds must parse to a {@code long} with optional fraction.
* The decimal point may be either a dot or a comma.
* The fractional part may have from zero to 9 digits.
* <p>
@@ -374,9 +374,9 @@
* "PT10H" -- parses as "10 hours" (where an hour is 3600 seconds)
* "P2D" -- parses as "2 days" (where a day is 24 hours or 86400 seconds)
* "P2DT3H4M" -- parses as "2 days, 3 hours and 4 minutes"
- * "P-6H3M" -- parses as "-6 hours and +3 minutes"
- * "-P6H3M" -- parses as "-6 hours and -3 minutes"
- * "-P-6H+3M" -- parses as "+6 hours and -3 minutes"
+ * "PT-6H3M" -- parses as "-6 hours and +3 minutes"
+ * "-PT6H3M" -- parses as "-6 hours and -3 minutes"
+ * "-PT-6H+3M" -- parses as "+6 hours and -3 minutes"
* </pre>
*
* @param text the text to parse, not null
@@ -402,7 +402,8 @@
long hoursAsSecs = parseNumber(text, hourStart, hourEnd, SECONDS_PER_HOUR, "hours");
long minsAsSecs = parseNumber(text, minuteStart, minuteEnd, SECONDS_PER_MINUTE, "minutes");
long seconds = parseNumber(text, secondStart, secondEnd, 1, "seconds");
- int nanos = parseFraction(text, fractionStart, fractionEnd, seconds < 0 ? -1 : 1);
+ boolean negativeSecs = secondStart >= 0 && text.charAt(secondStart) == '-';
+ int nanos = parseFraction(text, fractionStart, fractionEnd, negativeSecs ? -1 : 1);
try {
return create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos);
} catch (ArithmeticException ex) {
--- a/jdk/src/java.base/share/classes/java/time/ZoneId.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/time/ZoneId.java Thu Nov 19 18:18:05 2015 -0500
@@ -310,8 +310,7 @@
public static ZoneId of(String zoneId, Map<String, String> aliasMap) {
Objects.requireNonNull(zoneId, "zoneId");
Objects.requireNonNull(aliasMap, "aliasMap");
- String id = aliasMap.get(zoneId);
- id = (id != null ? id : zoneId);
+ String id = Objects.requireNonNullElse(aliasMap.get(zoneId), zoneId);
return of(id);
}
--- a/jdk/src/java.base/share/classes/java/time/chrono/Chronology.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/time/chrono/Chronology.java Thu Nov 19 18:18:05 2015 -0500
@@ -177,7 +177,7 @@
static Chronology from(TemporalAccessor temporal) {
Objects.requireNonNull(temporal, "temporal");
Chronology obj = temporal.query(TemporalQueries.chronology());
- return (obj != null ? obj : IsoChronology.INSTANCE);
+ return Objects.requireNonNullElse(obj, IsoChronology.INSTANCE);
}
//-----------------------------------------------------------------------
--- a/jdk/src/java.base/share/classes/java/time/format/DateTimeFormatterBuilder.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/time/format/DateTimeFormatterBuilder.java Thu Nov 19 18:18:05 2015 -0500
@@ -2892,7 +2892,8 @@
@Override
public String toString() {
- return "ReducedValue(" + field + "," + minWidth + "," + maxWidth + "," + (baseDate != null ? baseDate : baseValue) + ")";
+ return "ReducedValue(" + field + "," + minWidth + "," + maxWidth +
+ "," + Objects.requireNonNullElse(baseDate, baseValue) + ")";
}
}
@@ -3851,6 +3852,10 @@
return parseOffsetBased(context, text, position, position + 2, OffsetIdPrinterParser.INSTANCE_ID_ZERO);
} else if (context.charEquals(nextChar, 'G') && length >= position + 3 &&
context.charEquals(nextNextChar, 'M') && context.charEquals(text.charAt(position + 2), 'T')) {
+ if (length >= position + 4 && context.charEquals(text.charAt(position + 3), '0')) {
+ context.setParsed(ZoneId.of("GMT0"));
+ return position + 4;
+ }
return parseOffsetBased(context, text, position, position + 3, OffsetIdPrinterParser.INSTANCE_ID_ZERO);
}
}
@@ -4328,7 +4333,7 @@
private String getChronologyName(Chronology chrono, Locale locale) {
String key = "calendarname." + chrono.getCalendarType();
String name = DateTimeTextProvider.getLocalizedResource(key, locale);
- return name != null ? name : chrono.getId();
+ return Objects.requireNonNullElseGet(name, () -> chrono.getId());
}
}
--- a/jdk/src/java.base/share/classes/java/time/format/DateTimePrintContext.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/time/format/DateTimePrintContext.java Thu Nov 19 18:18:05 2015 -0500
@@ -146,7 +146,7 @@
if (overrideZone != null) {
// if have zone and instant, calculation is simple, defaulting chrono if necessary
if (temporal.isSupported(INSTANT_SECONDS)) {
- Chronology chrono = (effectiveChrono != null ? effectiveChrono : IsoChronology.INSTANCE);
+ Chronology chrono = Objects.requireNonNullElse(effectiveChrono, IsoChronology.INSTANCE);
return chrono.zonedDateTime(Instant.from(temporal), overrideZone);
}
// block changing zone on OffsetTime, and similar problem cases
--- a/jdk/src/java.base/share/classes/java/time/temporal/IsoFields.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/time/temporal/IsoFields.java Thu Nov 19 18:18:05 2015 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -102,7 +102,7 @@
* The complete date is expressed using three fields:
* <ul>
* <li>{@link #DAY_OF_QUARTER DAY_OF_QUARTER} - the day within the quarter, from 1 to 90, 91 or 92
- * <li>{@link #QUARTER_OF_YEAR QUARTER_OF_YEAR} - the week within the week-based-year
+ * <li>{@link #QUARTER_OF_YEAR QUARTER_OF_YEAR} - the quarter within the year, from 1 to 4
* <li>{@link ChronoField#YEAR YEAR} - the standard ISO year
* </ul>
*
@@ -571,9 +571,6 @@
//-------------------------------------------------------------------------
private static final int[] QUARTER_DAYS = {0, 90, 181, 273, 0, 91, 182, 274};
- private static boolean isIso(TemporalAccessor temporal) {
- return Chronology.from(temporal).equals(IsoChronology.INSTANCE);
- }
private static void ensureIso(TemporalAccessor temporal) {
if (isIso(temporal) == false) {
@@ -681,7 +678,7 @@
@Override
public boolean isSupportedBy(Temporal temporal) {
- return temporal.isSupported(EPOCH_DAY);
+ return temporal.isSupported(EPOCH_DAY) && isIso(temporal);
}
@SuppressWarnings("unchecked")
@@ -721,4 +718,8 @@
return name;
}
}
+
+ static boolean isIso(TemporalAccessor temporal) {
+ return Chronology.from(temporal).equals(IsoChronology.INSTANCE);
+ }
}
--- a/jdk/src/java.base/share/classes/java/util/Collections.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/Collections.java Thu Nov 19 18:18:05 2015 -0500
@@ -2090,7 +2090,8 @@
* through the returned set.<p>
*
* It is imperative that the user manually synchronize on the returned
- * set when iterating over it:
+ * collection when traversing it via {@link Iterator}, {@link Spliterator}
+ * or {@link Stream}:
* <pre>
* Set s = Collections.synchronizedSet(new HashSet());
* ...
@@ -2149,8 +2150,9 @@
* through the returned sorted set (or its views).<p>
*
* It is imperative that the user manually synchronize on the returned
- * sorted set when iterating over it or any of its {@code subSet},
- * {@code headSet}, or {@code tailSet} views.
+ * sorted set when traversing it or any of its {@code subSet},
+ * {@code headSet}, or {@code tailSet} views via {@link Iterator},
+ * {@link Spliterator} or {@link Stream}:
* <pre>
* SortedSet s = Collections.synchronizedSortedSet(new TreeSet());
* ...
@@ -2240,8 +2242,9 @@
* accomplished through the returned navigable set (or its views).<p>
*
* It is imperative that the user manually synchronize on the returned
- * navigable set when iterating over it or any of its {@code subSet},
- * {@code headSet}, or {@code tailSet} views.
+ * navigable set when traversing it, or any of its {@code subSet},
+ * {@code headSet}, or {@code tailSet} views, via {@link Iterator},
+ * {@link Spliterator} or {@link Stream}:
* <pre>
* NavigableSet s = Collections.synchronizedNavigableSet(new TreeSet());
* ...
@@ -2355,7 +2358,8 @@
* through the returned list.<p>
*
* It is imperative that the user manually synchronize on the returned
- * list when iterating over it:
+ * list when traversing it via {@link Iterator}, {@link Spliterator}
+ * or {@link Stream}:
* <pre>
* List list = Collections.synchronizedList(new ArrayList());
* ...
@@ -2523,7 +2527,8 @@
* through the returned map.<p>
*
* It is imperative that the user manually synchronize on the returned
- * map when iterating over any of its collection views:
+ * map when traversing any of its collection views via {@link Iterator},
+ * {@link Spliterator} or {@link Stream}:
* <pre>
* Map m = Collections.synchronizedMap(new HashMap());
* ...
@@ -2700,9 +2705,10 @@
* through the returned sorted map (or its views).<p>
*
* It is imperative that the user manually synchronize on the returned
- * sorted map when iterating over any of its collection views, or the
+ * sorted map when traversing any of its collection views, or the
* collections views of any of its {@code subMap}, {@code headMap} or
- * {@code tailMap} views.
+ * {@code tailMap} views, via {@link Iterator}, {@link Spliterator} or
+ * {@link Stream}:
* <pre>
* SortedMap m = Collections.synchronizedSortedMap(new TreeMap());
* ...
@@ -2797,9 +2803,10 @@
* accomplished through the returned navigable map (or its views).<p>
*
* It is imperative that the user manually synchronize on the returned
- * navigable map when iterating over any of its collection views, or the
+ * navigable map when traversing any of its collection views, or the
* collections views of any of its {@code subMap}, {@code headMap} or
- * {@code tailMap} views.
+ * {@code tailMap} views, via {@link Iterator}, {@link Spliterator} or
+ * {@link Stream}:
* <pre>
* NavigableMap m = Collections.synchronizedNavigableMap(new TreeMap());
* ...
--- a/jdk/src/java.base/share/classes/java/util/Formatter.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/Formatter.java Thu Nov 19 18:18:05 2015 -0500
@@ -49,6 +49,7 @@
import java.text.NumberFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.Objects;
import java.time.DateTimeException;
import java.time.Instant;
@@ -3860,7 +3861,7 @@
ampm = dfs.getAmPmStrings();
}
String s = ampm[t.get(Calendar.AM_PM)];
- sb.append(s.toLowerCase(l != null ? l : Locale.US));
+ sb.append(s.toLowerCase(Objects.requireNonNullElse(l, Locale.US)));
break;
}
case DateTime.SECONDS_SINCE_EPOCH: { // 's' (0 - 99...?)
@@ -3893,7 +3894,7 @@
TimeZone tz = t.getTimeZone();
sb.append(tz.getDisplayName((t.get(Calendar.DST_OFFSET) != 0),
TimeZone.SHORT,
- (l == null) ? Locale.US : l));
+ Objects.requireNonNullElse(l, Locale.US)));
break;
}
@@ -3901,7 +3902,7 @@
case DateTime.NAME_OF_DAY_ABBREV: // 'a'
case DateTime.NAME_OF_DAY: { // 'A'
int i = t.get(Calendar.DAY_OF_WEEK);
- Locale lt = ((l == null) ? Locale.US : l);
+ Locale lt = Objects.requireNonNullElse(l, Locale.US);
DateFormatSymbols dfs = DateFormatSymbols.getInstance(lt);
if (c == DateTime.NAME_OF_DAY)
sb.append(dfs.getWeekdays()[i]);
@@ -3913,7 +3914,7 @@
case DateTime.NAME_OF_MONTH_ABBREV_X: // 'h' -- same b
case DateTime.NAME_OF_MONTH: { // 'B'
int i = t.get(Calendar.MONTH);
- Locale lt = ((l == null) ? Locale.US : l);
+ Locale lt = Objects.requireNonNullElse(l, Locale.US);
DateFormatSymbols dfs = DateFormatSymbols.getInstance(lt);
if (c == DateTime.NAME_OF_MONTH)
sb.append(dfs.getMonths()[i]);
@@ -3984,7 +3985,7 @@
StringBuilder tsb = new StringBuilder();
print(tsb, t, DateTime.AM_PM, l);
- sb.append(tsb.toString().toUpperCase(l != null ? l : Locale.US));
+ sb.append(tsb.toString().toUpperCase(Objects.requireNonNullElse(l, Locale.US)));
break;
}
case DateTime.DATE_TIME: { // 'c' (Sat Nov 04 12:02:33 EST 1999)
@@ -4092,7 +4093,7 @@
ampm = dfs.getAmPmStrings();
}
String s = ampm[t.get(ChronoField.AMPM_OF_DAY)];
- sb.append(s.toLowerCase(l != null ? l : Locale.US));
+ sb.append(s.toLowerCase(Objects.requireNonNullElse(l, Locale.US)));
break;
}
case DateTime.SECONDS_SINCE_EPOCH: { // 's' (0 - 99...?)
@@ -4131,7 +4132,7 @@
sb.append(TimeZone.getTimeZone(zid.getId())
.getDisplayName(zid.getRules().isDaylightSavings(instant),
TimeZone.SHORT,
- (l == null) ? Locale.US : l));
+ Objects.requireNonNullElse(l, Locale.US)));
break;
}
sb.append(zid.getId());
@@ -4141,7 +4142,7 @@
case DateTime.NAME_OF_DAY_ABBREV: // 'a'
case DateTime.NAME_OF_DAY: { // 'A'
int i = t.get(ChronoField.DAY_OF_WEEK) % 7 + 1;
- Locale lt = ((l == null) ? Locale.US : l);
+ Locale lt = Objects.requireNonNullElse(l, Locale.US);
DateFormatSymbols dfs = DateFormatSymbols.getInstance(lt);
if (c == DateTime.NAME_OF_DAY)
sb.append(dfs.getWeekdays()[i]);
@@ -4153,7 +4154,7 @@
case DateTime.NAME_OF_MONTH_ABBREV_X: // 'h' -- same b
case DateTime.NAME_OF_MONTH: { // 'B'
int i = t.get(ChronoField.MONTH_OF_YEAR) - 1;
- Locale lt = ((l == null) ? Locale.US : l);
+ Locale lt = Objects.requireNonNullElse(l, Locale.US);
DateFormatSymbols dfs = DateFormatSymbols.getInstance(lt);
if (c == DateTime.NAME_OF_MONTH)
sb.append(dfs.getMonths()[i]);
@@ -4223,7 +4224,7 @@
// this may be in wrong place for some locales
StringBuilder tsb = new StringBuilder();
print(tsb, t, DateTime.AM_PM, l);
- sb.append(tsb.toString().toUpperCase(l != null ? l : Locale.US));
+ sb.append(tsb.toString().toUpperCase(Objects.requireNonNullElse(l, Locale.US)));
break;
}
case DateTime.DATE_TIME: { // 'c' (Sat Nov 04 12:02:33 EST 1999)
--- a/jdk/src/java.base/share/classes/java/util/Objects.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/Objects.java Thu Nov 19 18:18:05 2015 -0500
@@ -295,7 +295,7 @@
* {@code defaultObj} is {@code null}
* @since 9
*/
- public static <T> T nonNullElse(T obj, T defaultObj) {
+ public static <T> T requireNonNullElse(T obj, T defaultObj) {
return (obj != null) ? obj : requireNonNull(defaultObj, "defaultObj");
}
@@ -314,8 +314,9 @@
* the {@code supplier.get()} value is {@code null}
* @since 9
*/
- public static <T> T nonNullElseGet(T obj, Supplier<? extends T> supplier) {
- return (obj != null) ? obj : requireNonNull(requireNonNull(supplier, "supplier").get(), "supplier.get()");
+ public static <T> T requireNonNullElseGet(T obj, Supplier<? extends T> supplier) {
+ return (obj != null) ? obj
+ : requireNonNull(requireNonNull(supplier, "supplier").get(), "supplier.get()");
}
/**
--- a/jdk/src/java.base/share/classes/java/util/Random.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/Random.java Thu Nov 19 18:18:05 2015 -0500
@@ -34,7 +34,7 @@
import java.util.stream.LongStream;
import java.util.stream.StreamSupport;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* An instance of this class is used to generate a stream of
--- a/jdk/src/java.base/share/classes/java/util/concurrent/CompletableFuture.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/CompletableFuture.java Thu Nov 19 18:18:05 2015 -0500
@@ -2775,7 +2775,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long RESULT;
private static final long STACK;
private static final long NEXT;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java Thu Nov 19 18:18:05 2015 -0500
@@ -297,7 +297,7 @@
* Table accesses require volatile/atomic reads, writes, and
* CASes. Because there is no other way to arrange this without
* adding further indirections, we use intrinsics
- * (sun.misc.Unsafe) operations.
+ * (jdk.internal.misc.Unsafe) operations.
*
* We use the top (sign) bit of Node hash fields for control
* purposes -- it is available anyway because of addressing
@@ -3287,7 +3287,7 @@
return true;
}
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long LOCKSTATE;
static {
try {
@@ -6330,7 +6330,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long SIZECTL;
private static final long TRANSFERINDEX;
private static final long BASECOUNT;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java Thu Nov 19 18:18:05 2015 -0500
@@ -326,7 +326,7 @@
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long PREV;
private static final long ITEM;
private static final long NEXT;
@@ -1608,7 +1608,7 @@
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long HEAD;
private static final long TAIL;
static {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java Thu Nov 19 18:18:05 2015 -0500
@@ -929,7 +929,7 @@
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long HEAD;
private static final long TAIL;
private static final long ITEM;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListMap.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListMap.java Thu Nov 19 18:18:05 2015 -0500
@@ -534,7 +534,7 @@
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long VALUE;
private static final long NEXT;
@@ -614,7 +614,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long RIGHT;
static {
try {
@@ -3596,7 +3596,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long HEAD;
static {
try {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListSet.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListSet.java Thu Nov 19 18:18:05 2015 -0500
@@ -510,7 +510,7 @@
U.putObjectVolatile(this, MAP, map);
}
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long MAP;
static {
try {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArrayList.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArrayList.java Thu Nov 19 18:18:05 2015 -0500
@@ -1545,7 +1545,7 @@
private void resetLock() {
U.putObjectVolatile(this, LOCK, new Object());
}
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long LOCK;
static {
try {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/CountedCompleter.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/CountedCompleter.java Thu Nov 19 18:18:05 2015 -0500
@@ -754,7 +754,7 @@
protected void setRawResult(T t) { }
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long PENDING;
static {
try {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/Exchanger.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/Exchanger.java Thu Nov 19 18:18:05 2015 -0500
@@ -625,7 +625,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long BOUND;
private static final long SLOT;
private static final long MATCH;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java Thu Nov 19 18:18:05 2015 -0500
@@ -1337,7 +1337,7 @@
}
// Unsafe mechanics. Note that some are (and must be) the same as in FJP
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long QLOCK;
private static final int ABASE;
private static final int ASHIFT;
@@ -3452,7 +3452,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long CTL;
private static final long RUNSTATE;
private static final int ABASE;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ForkJoinTask.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ForkJoinTask.java Thu Nov 19 18:18:05 2015 -0500
@@ -1517,7 +1517,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long STATUS;
static {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ForkJoinWorkerThread.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ForkJoinWorkerThread.java Thu Nov 19 18:18:05 2015 -0500
@@ -185,7 +185,7 @@
}
// Set up to allow setting thread fields in constructor
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long THREADLOCALS;
private static final long INHERITABLETHREADLOCALS;
private static final long INHERITEDACCESSCONTROLCONTEXT;
@@ -248,7 +248,7 @@
*/
private static ThreadGroup createThreadGroup() {
try {
- sun.misc.Unsafe u = sun.misc.Unsafe.getUnsafe();
+ jdk.internal.misc.Unsafe u = jdk.internal.misc.Unsafe.getUnsafe();
long tg = u.objectFieldOffset
(Thread.class.getDeclaredField("group"));
long gp = u.objectFieldOffset
--- a/jdk/src/java.base/share/classes/java/util/concurrent/FutureTask.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/FutureTask.java Thu Nov 19 18:18:05 2015 -0500
@@ -484,7 +484,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long STATE;
private static final long RUNNER;
private static final long WAITERS;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java Thu Nov 19 18:18:05 2015 -0500
@@ -538,7 +538,7 @@
private static final long serialVersionUID = -3375979862319811754L;
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long ITEM;
private static final long NEXT;
private static final long WAITER;
@@ -1564,7 +1564,7 @@
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long HEAD;
private static final long TAIL;
private static final long SWEEPVOTES;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/Phaser.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/Phaser.java Thu Nov 19 18:18:05 2015 -0500
@@ -1137,7 +1137,7 @@
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long STATE;
static {
try {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/PriorityBlockingQueue.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/PriorityBlockingQueue.java Thu Nov 19 18:18:05 2015 -0500
@@ -1010,7 +1010,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long ALLOCATIONSPINLOCK;
static {
try {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/SubmissionPublisher.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/SubmissionPublisher.java Thu Nov 19 18:18:05 2015 -0500
@@ -1596,7 +1596,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long CTL;
private static final long TAIL;
private static final long HEAD;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/SynchronousQueue.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/SynchronousQueue.java Thu Nov 19 18:18:05 2015 -0500
@@ -283,7 +283,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long MATCH;
private static final long NEXT;
@@ -509,7 +509,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long HEAD;
static {
try {
@@ -575,7 +575,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long ITEM;
private static final long NEXT;
@@ -817,7 +817,7 @@
}
}
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long HEAD;
private static final long TAIL;
private static final long CLEANME;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ThreadLocalRandom.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ThreadLocalRandom.java Thu Nov 19 18:18:05 2015 -0500
@@ -1050,7 +1050,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long SEED;
private static final long PROBE;
private static final long SECONDARY;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicBoolean.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicBoolean.java Thu Nov 19 18:18:05 2015 -0500
@@ -49,7 +49,7 @@
public class AtomicBoolean implements java.io.Serializable {
private static final long serialVersionUID = 4654671469794556979L;
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long VALUE;
static {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicInteger.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicInteger.java Thu Nov 19 18:18:05 2015 -0500
@@ -54,7 +54,7 @@
public class AtomicInteger extends Number implements java.io.Serializable {
private static final long serialVersionUID = 6214790243416807050L;
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long VALUE;
static {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java Thu Nov 19 18:18:05 2015 -0500
@@ -49,7 +49,7 @@
public class AtomicIntegerArray implements java.io.Serializable {
private static final long serialVersionUID = 2862133569453604235L;
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final int ABASE;
private static final int ASHIFT;
private final int[] array;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java Thu Nov 19 18:18:05 2015 -0500
@@ -367,7 +367,7 @@
*/
private static class AtomicIntegerFieldUpdaterImpl<T>
extends AtomicIntegerFieldUpdater<T> {
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private final long offset;
private final Class<T> tclass;
private final Class<?> cclass;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicLong.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicLong.java Thu Nov 19 18:18:05 2015 -0500
@@ -54,7 +54,7 @@
public class AtomicLong extends Number implements java.io.Serializable {
private static final long serialVersionUID = 1927816293512124184L;
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long VALUE;
/**
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicLongArray.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicLongArray.java Thu Nov 19 18:18:05 2015 -0500
@@ -48,7 +48,7 @@
public class AtomicLongArray implements java.io.Serializable {
private static final long serialVersionUID = -2308431214976778248L;
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final int ABASE;
private static final int ASHIFT;
private final long[] array;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java Thu Nov 19 18:18:05 2015 -0500
@@ -366,7 +366,7 @@
}
private static class CASUpdater<T> extends AtomicLongFieldUpdater<T> {
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private final long offset;
private final Class<T> tclass;
private final Class<?> cclass;
@@ -490,7 +490,7 @@
private static class LockedUpdater<T> extends AtomicLongFieldUpdater<T> {
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private final long offset;
private final Class<T> tclass;
private final Class<?> cclass;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicMarkableReference.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicMarkableReference.java Thu Nov 19 18:18:05 2015 -0500
@@ -190,7 +190,7 @@
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long PAIR;
static {
try {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicReference.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicReference.java Thu Nov 19 18:18:05 2015 -0500
@@ -49,7 +49,7 @@
public class AtomicReference<V> implements java.io.Serializable {
private static final long serialVersionUID = -1848883965231344442L;
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long VALUE;
static {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java Thu Nov 19 18:18:05 2015 -0500
@@ -52,7 +52,7 @@
public class AtomicReferenceArray<E> implements java.io.Serializable {
private static final long serialVersionUID = -6209656149925076980L;
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long ARRAY;
private static final int ABASE;
private static final int ASHIFT;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java Thu Nov 19 18:18:05 2015 -0500
@@ -284,7 +284,7 @@
private static final class AtomicReferenceFieldUpdaterImpl<T,V>
extends AtomicReferenceFieldUpdater<T,V> {
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private final long offset;
private final Class<T> tclass;
private final Class<V> vclass;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicStampedReference.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicStampedReference.java Thu Nov 19 18:18:05 2015 -0500
@@ -190,7 +190,7 @@
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long PAIR;
static {
try {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/Striped64.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/Striped64.java Thu Nov 19 18:18:05 2015 -0500
@@ -133,7 +133,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long VALUE;
static {
try {
@@ -372,7 +372,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long BASE;
private static final long CELLSBUSY;
private static final long PROBE;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java Thu Nov 19 18:18:05 2015 -0500
@@ -1821,7 +1821,7 @@
* are at it, we do the same for other CASable fields (which could
* otherwise be done with atomic field updaters).
*/
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long STATE;
private static final long HEAD;
private static final long TAIL;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java Thu Nov 19 18:18:05 2015 -0500
@@ -524,7 +524,7 @@
return U.compareAndSwapObject(this, NEXT, expect, update);
}
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long NEXT;
static final long PREV;
private static final long THREAD;
@@ -2285,7 +2285,7 @@
* are at it, we do the same for other CASable fields (which could
* otherwise be done with atomic field updaters).
*/
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long STATE;
private static final long HEAD;
private static final long TAIL;
--- a/jdk/src/java.base/share/classes/java/util/concurrent/locks/LockSupport.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/locks/LockSupport.java Thu Nov 19 18:18:05 2015 -0500
@@ -394,7 +394,7 @@
}
// Hotspot implementation via intrinsics API
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long PARKBLOCKER;
private static final long SECONDARY;
static {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/locks/ReentrantReadWriteLock.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/locks/ReentrantReadWriteLock.java Thu Nov 19 18:18:05 2015 -0500
@@ -1501,7 +1501,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long TID;
static {
try {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/locks/StampedLock.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/locks/StampedLock.java Thu Nov 19 18:18:05 2015 -0500
@@ -1398,7 +1398,7 @@
}
// Unsafe mechanics
- private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
+ private static final jdk.internal.misc.Unsafe U = jdk.internal.misc.Unsafe.getUnsafe();
private static final long STATE;
private static final long WHEAD;
private static final long WTAIL;
--- a/jdk/src/java.base/share/classes/java/util/zip/CRC32C.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/java/util/zip/CRC32C.java Thu Nov 19 18:18:05 2015 -0500
@@ -28,7 +28,7 @@
import java.nio.ByteOrder;
import jdk.internal.HotSpotIntrinsicCandidate;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import sun.nio.ch.DirectBuffer;
/**
--- a/jdk/src/java.base/share/classes/jdk/internal/misc/SharedSecrets.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/jdk/internal/misc/SharedSecrets.java Thu Nov 19 18:18:05 2015 -0500
@@ -30,7 +30,7 @@
import java.io.FileDescriptor;
import java.security.ProtectionDomain;
import java.security.AccessController;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/** A repository of "shared secrets", which are a mechanism for
calling implementation-private methods in another package without
--- a/jdk/src/java.base/share/classes/sun/invoke/anon/AnonymousClassLoader.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/invoke/anon/AnonymousClassLoader.java Thu Nov 19 18:18:05 2015 -0500
@@ -78,7 +78,7 @@
this.hostClass = hostClass;
}
- public static AnonymousClassLoader make(sun.misc.Unsafe unsafe, Class<?> hostClass) {
+ public static AnonymousClassLoader make(jdk.internal.misc.Unsafe unsafe, Class<?> hostClass) {
if (unsafe == null) throw new NullPointerException();
return new AnonymousClassLoader(hostClass);
}
@@ -189,13 +189,13 @@
private static int fakeNameCounter = 99999;
// ignore two warnings on this line:
- private static sun.misc.Unsafe unsafe = sun.misc.Unsafe.getUnsafe();
+ private static jdk.internal.misc.Unsafe unsafe = jdk.internal.misc.Unsafe.getUnsafe();
// preceding line requires that this class be on the boot class path
private static final Method defineAnonymousClass;
static {
Method dac = null;
- Class<? extends sun.misc.Unsafe> unsafeClass = unsafe.getClass();
+ Class<? extends jdk.internal.misc.Unsafe> unsafeClass = unsafe.getClass();
try {
dac = unsafeClass.getMethod("defineAnonymousClass",
Class.class,
--- a/jdk/src/java.base/share/classes/sun/invoke/util/Wrapper.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/invoke/util/Wrapper.java Thu Nov 19 18:18:05 2015 -0500
@@ -27,18 +27,19 @@
public enum Wrapper {
// wrapperType primitiveType char zero emptyArray format
- BOOLEAN( Boolean.class, boolean.class, 'Z', (Boolean)false, new boolean[0], Format.unsigned( 1)),
+ BOOLEAN( Boolean.class, boolean.class, 'Z', Boolean.FALSE, new boolean[0], Format.unsigned( 1)),
// These must be in the order defined for widening primitive conversions in JLS 5.1.2
- BYTE ( Byte.class, byte.class, 'B', (Byte)(byte)0, new byte[0], Format.signed( 8)),
- SHORT ( Short.class, short.class, 'S', (Short)(short)0, new short[0], Format.signed( 16)),
- CHAR (Character.class, char.class, 'C', (Character)(char)0, new char[0], Format.unsigned(16)),
- INT ( Integer.class, int.class, 'I', (Integer)/*(int)*/0, new int[0], Format.signed( 32)),
- LONG ( Long.class, long.class, 'J', (Long)(long)0, new long[0], Format.signed( 64)),
- FLOAT ( Float.class, float.class, 'F', (Float)(float)0, new float[0], Format.floating(32)),
- DOUBLE ( Double.class, double.class, 'D', (Double)(double)0, new double[0], Format.floating(64)),
- OBJECT ( Object.class, Object.class, 'L', null, new Object[0], Format.other( 1)),
+ // Avoid boxing integral types here to defer initialization of internal caches
+ BYTE ( Byte.class, byte.class, 'B', new Byte((byte)0), new byte[0], Format.signed( 8)),
+ SHORT ( Short.class, short.class, 'S', new Short((short)0), new short[0], Format.signed( 16)),
+ CHAR (Character.class, char.class, 'C', new Character((char)0), new char[0], Format.unsigned(16)),
+ INT ( Integer.class, int.class, 'I', new Integer(0), new int[0], Format.signed( 32)),
+ LONG ( Long.class, long.class, 'J', new Long(0), new long[0], Format.signed( 64)),
+ FLOAT ( Float.class, float.class, 'F', (Float)(float)0, new float[0], Format.floating(32)),
+ DOUBLE ( Double.class, double.class, 'D', (Double)(double)0, new double[0], Format.floating(64)),
+ OBJECT ( Object.class, Object.class, 'L', null, new Object[0], Format.other( 1)),
// VOID must be the last type, since it is "assignable" from any other type:
- VOID ( Void.class, void.class, 'V', null, null, Format.other( 0)),
+ VOID ( Void.class, void.class, 'V', null, null, Format.other( 0)),
;
private final Class<?> wrapperType;
--- a/jdk/src/java.base/share/classes/sun/misc/InnocuousThread.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/misc/InnocuousThread.java Thu Nov 19 18:18:05 2015 -0500
@@ -36,7 +36,7 @@
* ThreadGroup and supports the ability to erase ThreadLocals.
*/
public final class InnocuousThread extends ManagedLocalsThread {
- private static final Unsafe UNSAFE;
+ private static final jdk.internal.misc.Unsafe UNSAFE;
private static final ThreadGroup INNOCUOUSTHREADGROUP;
private static final AccessControlContext ACC;
private static final long INHERITEDACCESSCONTROLCONTEXT;
@@ -92,7 +92,7 @@
});
// Find and use topmost ThreadGroup as parent of new group
- UNSAFE = Unsafe.getUnsafe();
+ UNSAFE = jdk.internal.misc.Unsafe.getUnsafe();
Class<?> tk = Thread.class;
Class<?> gk = ThreadGroup.class;
--- a/jdk/src/java.base/share/classes/sun/misc/ManagedLocalsThread.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/misc/ManagedLocalsThread.java Thu Nov 19 18:18:05 2015 -0500
@@ -30,7 +30,7 @@
* locals erased on construction.
*/
public class ManagedLocalsThread extends Thread {
- private static final Unsafe UNSAFE;
+ private static final jdk.internal.misc.Unsafe UNSAFE;
private static final long THREAD_LOCALS;
private static final long INHERITABLE_THREAD_LOCALS;
@@ -77,7 +77,7 @@
}
static {
- UNSAFE = Unsafe.getUnsafe();
+ UNSAFE = jdk.internal.misc.Unsafe.getUnsafe();
Class<?> t = Thread.class;
try {
THREAD_LOCALS = UNSAFE.objectFieldOffset
--- a/jdk/src/java.base/share/classes/sun/nio/ch/NativeObject.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/nio/ch/NativeObject.java Thu Nov 19 18:18:05 2015 -0500
@@ -29,7 +29,7 @@
package sun.nio.ch; // Formerly in sun.misc
import java.nio.ByteOrder;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
// ## In the fullness of time, this class will be eliminated
--- a/jdk/src/java.base/share/classes/sun/nio/ch/Util.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/nio/ch/Util.java Thu Nov 19 18:18:05 2015 -0500
@@ -35,7 +35,7 @@
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.*;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import sun.misc.Cleaner;
import sun.security.action.GetPropertyAction;
--- a/jdk/src/java.base/share/classes/sun/nio/fs/Cancellable.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/nio/fs/Cancellable.java Thu Nov 19 18:18:05 2015 -0500
@@ -26,7 +26,7 @@
package sun.nio.fs;
import sun.misc.ManagedLocalsThread;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import java.util.concurrent.ExecutionException;
/**
--- a/jdk/src/java.base/share/classes/sun/nio/fs/NativeBuffer.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/nio/fs/NativeBuffer.java Thu Nov 19 18:18:05 2015 -0500
@@ -25,7 +25,7 @@
package sun.nio.fs;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import sun.misc.Cleaner;
/**
--- a/jdk/src/java.base/share/classes/sun/nio/fs/NativeBuffers.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/nio/fs/NativeBuffers.java Thu Nov 19 18:18:05 2015 -0500
@@ -25,7 +25,7 @@
package sun.nio.fs;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Factory for native buffers.
--- a/jdk/src/java.base/share/classes/sun/reflect/AccessorGenerator.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/reflect/AccessorGenerator.java Thu Nov 19 18:18:05 2015 -0500
@@ -26,7 +26,7 @@
package sun.reflect;
import java.lang.reflect.*;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/** Shared functionality for all accessor generators */
--- a/jdk/src/java.base/share/classes/sun/reflect/ClassDefiner.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/reflect/ClassDefiner.java Thu Nov 19 18:18:05 2015 -0500
@@ -27,7 +27,7 @@
import java.security.AccessController;
import java.security.PrivilegedAction;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/** Utility class which assists in calling Unsafe.defineClass() by
creating a new class loader which delegates to the one needed in
--- a/jdk/src/java.base/share/classes/sun/reflect/FieldInfo.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/reflect/FieldInfo.java Thu Nov 19 18:18:05 2015 -0500
@@ -38,7 +38,7 @@
private String signature;
private int modifiers;
// This is compatible with the old reflection implementation's
- // "slot" value to allow sun.misc.Unsafe to work
+ // "slot" value to allow jdk.internal.misc.Unsafe to work
private int slot;
// Not really necessary to provide a constructor since the VM
--- a/jdk/src/java.base/share/classes/sun/reflect/MagicAccessorImpl.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/reflect/MagicAccessorImpl.java Thu Nov 19 18:18:05 2015 -0500
@@ -32,7 +32,7 @@
fields and methods of other classes. It is used to hold the code
for dynamically-generated FieldAccessorImpl and MethodAccessorImpl
subclasses. (Use of the word "unsafe" was avoided in this class's
- name to avoid confusion with {@link sun.misc.Unsafe}.) </P>
+ name to avoid confusion with {@link jdk.internal.misc.Unsafe}.) </P>
<P> The bug fix for 4486457 also necessitated disabling
verification for this class and all subclasses, as opposed to just
--- a/jdk/src/java.base/share/classes/sun/reflect/ReflectionFactory.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/reflect/ReflectionFactory.java Thu Nov 19 18:18:05 2015 -0500
@@ -44,7 +44,7 @@
subversion of both the language and the verifier. For this reason,
they are all instance methods, and access to the constructor of
this factory is guarded by a security check, in similar style to
- {@link sun.misc.Unsafe}. </P>
+ {@link jdk.internal.misc.Unsafe}. </P>
*/
public class ReflectionFactory {
--- a/jdk/src/java.base/share/classes/sun/reflect/UnsafeFieldAccessorImpl.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/reflect/UnsafeFieldAccessorImpl.java Thu Nov 19 18:18:05 2015 -0500
@@ -27,9 +27,9 @@
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
-/** Base class for sun.misc.Unsafe-based FieldAccessors. The
+/** Base class for jdk.internal.misc.Unsafe-based FieldAccessors. The
observation is that there are only nine types of fields from the
standpoint of reflection code: the eight primitive types and
Object. Using class Unsafe instead of generated bytecodes saves
--- a/jdk/src/java.base/share/classes/sun/reflect/UnsafeQualifiedFieldAccessorImpl.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/reflect/UnsafeQualifiedFieldAccessorImpl.java Thu Nov 19 18:18:05 2015 -0500
@@ -27,10 +27,10 @@
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
- * Base class for sun.misc.Unsafe-based FieldAccessors for fields with
+ * Base class for jdk.internal.misc.Unsafe-based FieldAccessors for fields with
* final or volatile qualifiers. These differ from unqualified
* versions in that (1) they check for read-only status (2) they use
* the volatile forms of Unsafe get/put methods. (When accessed via
--- a/jdk/src/java.base/share/classes/sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl.java Thu Nov 19 18:18:05 2015 -0500
@@ -28,9 +28,9 @@
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.security.AccessController;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
-/** Base class for sun.misc.Unsafe-based FieldAccessors for final or
+/** Base class for jdk.internal.misc.Unsafe-based FieldAccessors for final or
static volatile fields. */
abstract class UnsafeQualifiedStaticFieldAccessorImpl
--- a/jdk/src/java.base/share/classes/sun/reflect/UnsafeStaticFieldAccessorImpl.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/reflect/UnsafeStaticFieldAccessorImpl.java Thu Nov 19 18:18:05 2015 -0500
@@ -28,9 +28,9 @@
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.security.AccessController;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
-/** Base class for sun.misc.Unsafe-based FieldAccessors for static
+/** Base class for jdk.internal.misc.Unsafe-based FieldAccessors for static
fields. The observation is that there are only nine types of
fields from the standpoint of reflection code: the eight primitive
types and Object. Using class Unsafe instead of generated
--- a/jdk/src/java.base/share/classes/sun/reflect/misc/ReflectUtil.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/reflect/misc/ReflectUtil.java Thu Nov 19 18:18:05 2015 -0500
@@ -337,7 +337,7 @@
/**
* Checks if {@code Class cls} is a VM-anonymous class
- * as defined by {@link sun.misc.Unsafe#defineAnonymousClass}
+ * as defined by {@link jdk.internal.misc.Unsafe#defineAnonymousClass}
* (not to be confused with a Java Language anonymous inner class).
*/
public static boolean isVMAnonymousClass(Class<?> cls) {
--- a/jdk/src/java.base/share/classes/sun/security/provider/certpath/AdaptableX509CertSelector.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/provider/certpath/AdaptableX509CertSelector.java Thu Nov 19 18:18:05 2015 -0500
@@ -36,9 +36,7 @@
import sun.security.util.Debug;
import sun.security.util.DerInputStream;
-import sun.security.util.DerOutputStream;
import sun.security.x509.SerialNumber;
-import sun.security.x509.KeyIdentifier;
import sun.security.x509.AuthorityKeyIdentifierExtension;
/**
@@ -131,13 +129,7 @@
serial = null;
if (ext != null) {
- KeyIdentifier akid = (KeyIdentifier)ext.get(
- AuthorityKeyIdentifierExtension.KEY_ID);
- if (akid != null) {
- DerOutputStream derout = new DerOutputStream();
- derout.putOctetString(akid.getIdentifier());
- ski = derout.toByteArray();
- }
+ ski = ext.getEncodedKeyIdentifier();
SerialNumber asn = (SerialNumber)ext.get(
AuthorityKeyIdentifierExtension.SERIAL_NUMBER);
if (asn != null) {
--- a/jdk/src/java.base/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java Thu Nov 19 18:18:05 2015 -0500
@@ -33,7 +33,6 @@
import java.util.*;
import sun.security.util.Debug;
-import sun.security.util.DerOutputStream;
import static sun.security.x509.PKIXExtensions.*;
import sun.security.x509.*;
@@ -607,12 +606,9 @@
AuthorityKeyIdentifierExtension akidext =
crlImpl.getAuthKeyIdExtension();
if (akidext != null) {
- KeyIdentifier akid = (KeyIdentifier)akidext.get(
- AuthorityKeyIdentifierExtension.KEY_ID);
- if (akid != null) {
- DerOutputStream derout = new DerOutputStream();
- derout.putOctetString(akid.getIdentifier());
- certSel.setSubjectKeyIdentifier(derout.toByteArray());
+ byte[] kid = akidext.getEncodedKeyIdentifier();
+ if (kid != null) {
+ certSel.setSubjectKeyIdentifier(kid);
}
SerialNumber asn = (SerialNumber)akidext.get(
--- a/jdk/src/java.base/share/classes/sun/security/provider/certpath/ForwardBuilder.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/provider/certpath/ForwardBuilder.java Thu Nov 19 18:18:05 2015 -0500
@@ -46,9 +46,10 @@
import sun.security.util.Debug;
import sun.security.x509.AccessDescription;
import sun.security.x509.AuthorityInfoAccessExtension;
+import sun.security.x509.AuthorityKeyIdentifierExtension;
import static sun.security.x509.PKIXExtensions.*;
import sun.security.x509.X500Name;
-import sun.security.x509.AuthorityKeyIdentifierExtension;
+import sun.security.x509.X509CertImpl;
/**
* This class represents a forward builder, which is able to retrieve
@@ -69,7 +70,6 @@
private AdaptableX509CertSelector caSelector;
private X509CertSelector caTargetSelector;
TrustAnchor trustAnchor;
- private Comparator<X509Certificate> comparator;
private boolean searchAllCertStores = true;
/**
@@ -93,7 +93,6 @@
trustedSubjectDNs.add(anchor.getCA());
}
}
- comparator = new PKIXCertComparator(trustedSubjectDNs);
this.searchAllCertStores = searchAllCertStores;
}
@@ -122,6 +121,8 @@
* As each cert is added, it is sorted based on the PKIXCertComparator
* algorithm.
*/
+ Comparator<X509Certificate> comparator =
+ new PKIXCertComparator(trustedSubjectDNs, currState.cert);
Set<X509Certificate> certs = new TreeSet<>(comparator);
/*
@@ -265,14 +266,6 @@
(caSelector, currentState.subjectNamesTraversed);
/*
- * Facilitate certification path construction with authority
- * key identifier and subject key identifier.
- */
- AuthorityKeyIdentifierExtension akidext =
- currentState.cert.getAuthorityKeyIdentifierExtension();
- caSelector.setSkiAndSerialNumber(akidext);
-
- /*
* check the validity period
*/
caSelector.setValidityPeriod(currentState.cert.getNotBefore(),
@@ -404,41 +397,68 @@
*
* Preference order for current cert:
*
- * 1) Issuer matches a trusted subject
+ * 1) The key identifier of an AKID extension (if present) in the
+ * previous certificate matches the key identifier in the SKID extension
+ *
+ * 2) Issuer matches a trusted subject
* Issuer: ou=D,ou=C,o=B,c=A
*
- * 2) Issuer is a descendant of a trusted subject (in order of
+ * 3) Issuer is a descendant of a trusted subject (in order of
* number of links to the trusted subject)
* a) Issuer: ou=E,ou=D,ou=C,o=B,c=A [links=1]
* b) Issuer: ou=F,ou=E,ou=D,ou=C,ou=B,c=A [links=2]
*
- * 3) Issuer is an ancestor of a trusted subject (in order of number of
+ * 4) Issuer is an ancestor of a trusted subject (in order of number of
* links to the trusted subject)
* a) Issuer: ou=C,o=B,c=A [links=1]
* b) Issuer: o=B,c=A [links=2]
*
- * 4) Issuer is in the same namespace as a trusted subject (in order of
+ * 5) Issuer is in the same namespace as a trusted subject (in order of
* number of links to the trusted subject)
* a) Issuer: ou=G,ou=C,o=B,c=A [links=2]
* b) Issuer: ou=H,o=B,c=A [links=3]
*
- * 5) Issuer is an ancestor of certificate subject (in order of number
+ * 6) Issuer is an ancestor of certificate subject (in order of number
* of links to the certificate subject)
* a) Issuer: ou=K,o=J,c=A
* Subject: ou=L,ou=K,o=J,c=A
* b) Issuer: o=J,c=A
* Subject: ou=L,ou=K,0=J,c=A
*
- * 6) Any other certificates
+ * 7) Any other certificates
*/
static class PKIXCertComparator implements Comparator<X509Certificate> {
static final String METHOD_NME = "PKIXCertComparator.compare()";
private final Set<X500Principal> trustedSubjectDNs;
+ private final X509CertSelector certSkidSelector;
- PKIXCertComparator(Set<X500Principal> trustedSubjectDNs) {
+ PKIXCertComparator(Set<X500Principal> trustedSubjectDNs,
+ X509CertImpl previousCert) throws IOException {
this.trustedSubjectDNs = trustedSubjectDNs;
+ this.certSkidSelector = getSelector(previousCert);
+ }
+
+ /**
+ * Returns an X509CertSelector for matching on the authority key
+ * identifier, or null if not applicable.
+ */
+ private X509CertSelector getSelector(X509CertImpl previousCert)
+ throws IOException {
+ if (previousCert != null) {
+ AuthorityKeyIdentifierExtension akidExt =
+ previousCert.getAuthorityKeyIdentifierExtension();
+ if (akidExt != null) {
+ byte[] skid = akidExt.getEncodedKeyIdentifier();
+ if (skid != null) {
+ X509CertSelector selector = new X509CertSelector();
+ selector.setSubjectKeyIdentifier(skid);
+ return selector;
+ }
+ }
+ }
+ return null;
}
/**
@@ -462,6 +482,16 @@
// if certs are the same, return 0
if (oCert1.equals(oCert2)) return 0;
+ // If akid/skid match then it is preferable
+ if (certSkidSelector != null) {
+ if (certSkidSelector.match(oCert1)) {
+ return -1;
+ }
+ if (certSkidSelector.match(oCert2)) {
+ return 1;
+ }
+ }
+
X500Principal cIssuer1 = oCert1.getIssuerX500Principal();
X500Principal cIssuer2 = oCert2.getIssuerX500Principal();
X500Name cIssuer1Name = X500Name.asX500Name(cIssuer1);
--- a/jdk/src/java.base/share/classes/sun/security/x509/AuthorityKeyIdentifierExtension.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/classes/sun/security/x509/AuthorityKeyIdentifierExtension.java Thu Nov 19 18:18:05 2015 -0500
@@ -310,4 +310,16 @@
public String getName() {
return (NAME);
}
+
+ /**
+ * Return the encoded key identifier, or null if not specified.
+ */
+ public byte[] getEncodedKeyIdentifier() throws IOException {
+ if (id != null) {
+ DerOutputStream derOut = new DerOutputStream();
+ id.encode(derOut);
+ return derOut.toByteArray();
+ }
+ return null;
+ }
}
--- a/jdk/src/java.base/share/native/libjimage/ImageNativeSubstrate.cpp Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/native/libjimage/ImageNativeSubstrate.cpp Thu Nov 19 18:18:05 2015 -0500
@@ -202,6 +202,9 @@
if (reader == NULL) return NULL;
// Convert byte array to a cstring.
char* path = new char[size + 1];
+ if (path == NULL) {
+ return NULL;
+ }
memcpy(path, rawBytes, size);
path[size] = '\0';
// Locate resource location data.
--- a/jdk/src/java.base/share/native/libjimage/imageFile.cpp Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/share/native/libjimage/imageFile.cpp Thu Nov 19 18:18:05 2015 -0500
@@ -118,7 +118,7 @@
// Deflate the attribute stream into an array of attributes.
u1 byte;
// Repeat until end header is found.
- while ((byte = *data)) {
+ while ((data != NULL) && (byte = *data)) {
// Extract kind from header byte.
u1 kind = attribute_kind(byte);
assert(kind < ATTRIBUTE_COUNT && "invalid image location attribute");
@@ -149,6 +149,7 @@
if (found) {
u8 data_size = location.get_attribute(ImageLocation::ATTRIBUTE_UNCOMPRESSED);
_data = new u1[(size_t)data_size];
+ assert(_data != NULL && "allocation failed");
_image_file->get_resource(location, _data);
// Map out the header.
_header = (Header*)_data;
@@ -191,7 +192,7 @@
// Release module data resource.
ImageModuleData::~ImageModuleData() {
if (_data) {
- delete _data;
+ delete[] _data;
}
}
@@ -254,6 +255,7 @@
// Construct an array of all the package entries.
u4 count = data->package_count(_endian);
const char** packages = new const char*[count + 1];
+ assert(packages != NULL && "allocation failed");
s4 package_offset = data->package_offset(_endian);
for (u4 i = 0; i < count; i++) {
u4 package_name_offset = mtp_package(package_offset + i);
@@ -271,10 +273,11 @@
// to share an open image.
ImageFileReaderTable::ImageFileReaderTable() : _count(0), _max(_growth) {
_table = new ImageFileReader*[_max];
+ assert( _table != NULL && "allocation failed");
}
ImageFileReaderTable::~ImageFileReaderTable() {
- delete _table;
+ delete[] _table;
}
// Add a new image entry to the table.
@@ -330,6 +333,7 @@
// Retrieve table entry.
ImageFileReader* reader = _reader_table.get(i);
// If name matches, then reuse (bump up use count.)
+ assert(reader->name() != NULL && "reader->name must not be null");
if (strcmp(reader->name(), name) == 0) {
reader->inc_use();
return reader;
@@ -339,20 +343,20 @@
// Need a new image reader.
ImageFileReader* reader = new ImageFileReader(name, big_endian);
- bool opened = reader->open();
- // If failed to open.
- if (!opened) {
+ if (reader == NULL || !reader->open()) {
+ // Failed to open.
delete reader;
return NULL;
}
// Lock to update
SimpleCriticalSectionLock cs(&_reader_table_lock);
- // Search for an exist image file.
+ // Search for an existing image file.
for (u4 i = 0; i < _reader_table.count(); i++) {
// Retrieve table entry.
ImageFileReader* existing_reader = _reader_table.get(i);
// If name matches, then reuse (bump up use count.)
+ assert(reader->name() != NULL && "reader->name still must not be null");
if (strcmp(existing_reader->name(), name) == 0) {
existing_reader->inc_use();
reader->close();
@@ -401,6 +405,7 @@
// Copy the image file name.
int len = (int) strlen(name) + 1;
_name = new char[len];
+ assert(_name != NULL && "allocation failed");
strncpy(_name, name, len);
// Initialize for a closed file.
_fd = -1;
@@ -414,7 +419,7 @@
close();
// Free up name.
if (_name) {
- delete _name;
+ delete[] _name;
_name = NULL;
}
}
@@ -473,8 +478,8 @@
// Initialize the module data
ImageModuleData::module_data_name(buffer, _name);
module_data = new ImageModuleData(this, buffer);
- // Successful open.
- return true;
+ // Successful open (if memory allocation succeeded).
+ return module_data != NULL;
}
// Close image file.
@@ -655,6 +660,7 @@
if (!MemoryMapImage) {
// Allocate buffer for compression.
compressed_data = new u1[(u4)compressed_size];
+ assert (compressed_data != NULL && "allocation failed");
// Read bytes from offset beyond the image index.
bool is_read = read_at(compressed_data, compressed_size, _index_size + offset);
assert(is_read && "error reading from image or short read");
@@ -668,7 +674,7 @@
&strings);
// If not memory mapped then release temporary buffer.
if (!MemoryMapImage) {
- delete compressed_data;
+ delete[] compressed_data;
}
} else {
// Read bytes from offset beyond the image index.
--- a/jdk/src/java.base/solaris/classes/sun/nio/ch/EventPortWrapper.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/solaris/classes/sun/nio/ch/EventPortWrapper.java Thu Nov 19 18:18:05 2015 -0500
@@ -31,7 +31,7 @@
import java.util.HashMap;
import java.util.Map;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import sun.security.action.GetIntegerAction;
import static sun.nio.ch.SolarisEventPort.*;
--- a/jdk/src/java.base/solaris/classes/sun/nio/ch/SolarisEventPort.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/solaris/classes/sun/nio/ch/SolarisEventPort.java Thu Nov 19 18:18:05 2015 -0500
@@ -28,7 +28,7 @@
import java.nio.channels.spi.AsynchronousChannelProvider;
import java.util.concurrent.RejectedExecutionException;
import java.io.IOException;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Provides an AsynchronousChannelGroup implementation based on the Solaris 10
--- a/jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisAclFileAttributeView.java Thu Nov 19 18:18:05 2015 -0500
@@ -29,7 +29,7 @@
import java.nio.file.attribute.*;
import java.util.*;
import java.io.IOException;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import static sun.nio.fs.UnixConstants.*;
import static sun.nio.fs.SolarisConstants.*;
--- a/jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisWatchService.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisWatchService.java Thu Nov 19 18:18:05 2015 -0500
@@ -30,7 +30,7 @@
import java.security.PrivilegedAction;
import java.util.*;
import java.io.IOException;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import static sun.nio.fs.UnixConstants.*;
--- a/jdk/src/java.base/windows/classes/sun/nio/ch/Iocp.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/windows/classes/sun/nio/ch/Iocp.java Thu Nov 19 18:18:05 2015 -0500
@@ -36,7 +36,7 @@
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.security.AccessController;
import sun.security.action.GetPropertyAction;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Windows implementation of AsynchronousChannelGroup encapsulating an I/O
--- a/jdk/src/java.base/windows/classes/sun/nio/ch/PendingIoCache.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/windows/classes/sun/nio/ch/PendingIoCache.java Thu Nov 19 18:18:05 2015 -0500
@@ -27,7 +27,7 @@
import java.nio.channels.*;
import java.util.*;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Maintains a mapping of pending I/O requests (identified by the address of
--- a/jdk/src/java.base/windows/classes/sun/nio/ch/WindowsAsynchronousServerSocketChannelImpl.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/windows/classes/sun/nio/ch/WindowsAsynchronousServerSocketChannelImpl.java Thu Nov 19 18:18:05 2015 -0500
@@ -33,7 +33,7 @@
import java.security.AccessControlContext;
import java.security.AccessController;
import java.security.PrivilegedAction;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Windows implementation of AsynchronousServerSocketChannel using overlapped I/O.
--- a/jdk/src/java.base/windows/classes/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/windows/classes/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.java Thu Nov 19 18:18:05 2015 -0500
@@ -34,7 +34,7 @@
import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Windows implementation of AsynchronousSocketChannel using overlapped I/O.
--- a/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsFileAttributes.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsFileAttributes.java Thu Nov 19 18:18:05 2015 -0500
@@ -28,7 +28,7 @@
import java.nio.file.attribute.*;
import java.util.concurrent.TimeUnit;
import java.security.AccessController;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import sun.security.action.GetPropertyAction;
import static sun.nio.fs.WindowsNativeDispatcher.*;
--- a/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java Thu Nov 19 18:18:05 2015 -0500
@@ -33,7 +33,7 @@
import java.io.*;
import java.util.*;
import java.security.AccessController;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import sun.nio.ch.ThreadPool;
import sun.security.util.SecurityConstants;
--- a/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsLinkSupport.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsLinkSupport.java Thu Nov 19 18:18:05 2015 -0500
@@ -30,7 +30,7 @@
import java.io.IOError;
import java.security.AccessController;
import java.security.PrivilegedAction;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import static sun.nio.fs.WindowsNativeDispatcher.*;
import static sun.nio.fs.WindowsConstants.*;
--- a/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsNativeDispatcher.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsNativeDispatcher.java Thu Nov 19 18:18:05 2015 -0500
@@ -27,7 +27,7 @@
import java.security.AccessController;
import java.security.PrivilegedAction;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Win32 and library calls.
--- a/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsSecurityDescriptor.java Thu Nov 19 18:18:05 2015 -0500
@@ -29,7 +29,7 @@
import java.nio.file.attribute.*;
import java.util.*;
import java.io.IOException;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import static sun.nio.fs.WindowsNativeDispatcher.*;
import static sun.nio.fs.WindowsConstants.*;
--- a/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsUserDefinedFileAttributeView.java Thu Nov 19 18:18:05 2015 -0500
@@ -31,7 +31,7 @@
import java.nio.channels.FileChannel;
import java.io.IOException;
import java.util.*;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import static sun.nio.fs.WindowsNativeDispatcher.*;
import static sun.nio.fs.WindowsConstants.*;
--- a/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsWatchService.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsWatchService.java Thu Nov 19 18:18:05 2015 -0500
@@ -36,7 +36,7 @@
import java.util.Set;
import com.sun.nio.file.ExtendedWatchEventModifier;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import static sun.nio.fs.WindowsNativeDispatcher.*;
import static sun.nio.fs.WindowsConstants.*;
--- a/jdk/src/java.desktop/share/classes/sun/awt/AWTAccessor.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/share/classes/sun/awt/AWTAccessor.java Thu Nov 19 18:18:05 2015 -0500
@@ -25,7 +25,7 @@
package sun.awt;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import javax.accessibility.AccessibleContext;
import java.awt.*;
--- a/jdk/src/java.desktop/share/classes/sun/font/StrikeCache.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/share/classes/sun/font/StrikeCache.java Thu Nov 19 18:18:05 2015 -0500
@@ -37,7 +37,7 @@
import sun.java2d.pipe.BufferedContext;
import sun.java2d.pipe.RenderQueue;
import sun.java2d.pipe.hw.AccelGraphicsConfig;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/RenderBuffer.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/RenderBuffer.java Thu Nov 19 18:18:05 2015 -0500
@@ -25,7 +25,7 @@
package sun.java2d.pipe;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
--- a/jdk/src/java.desktop/share/classes/sun/swing/SwingAccessor.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/share/classes/sun/swing/SwingAccessor.java Thu Nov 19 18:18:05 2015 -0500
@@ -25,7 +25,7 @@
package sun.swing;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import java.awt.*;
import javax.swing.*;
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/MotifDnDConstants.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/MotifDnDConstants.java Thu Nov 19 18:18:05 2015 -0500
@@ -31,7 +31,7 @@
import java.util.Arrays;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Motif DnD protocol global constants and convenience routines.
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java Thu Nov 19 18:18:05 2015 -0500
@@ -33,7 +33,7 @@
import java.util.Map;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* XDragSourceProtocol implementation for Motif DnD protocol.
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java Thu Nov 19 18:18:05 2015 -0500
@@ -33,7 +33,7 @@
import java.io.IOException;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* XDropTargetProtocol implementation for Motif DnD protocol.
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/Native.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/Native.java Thu Nov 19 18:18:05 2015 -0500
@@ -25,7 +25,7 @@
package sun.awt.X11;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import java.util.Vector;
import java.security.AccessController;
import java.security.PrivilegedAction;
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/UnsafeXDisposerRecord.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/UnsafeXDisposerRecord.java Thu Nov 19 18:18:05 2015 -0500
@@ -24,7 +24,7 @@
*/
package sun.awt.X11;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import sun.util.logging.PlatformLogger;
class UnsafeXDisposerRecord implements sun.java2d.DisposerRecord {
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/WindowPropertyGetter.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/WindowPropertyGetter.java Thu Nov 19 18:18:05 2015 -0500
@@ -26,7 +26,7 @@
package sun.awt.X11;
import java.util.*;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
public class WindowPropertyGetter {
private static Unsafe unsafe = XlibWrapper.unsafe;
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XAtom.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XAtom.java Thu Nov 19 18:18:05 2015 -0500
@@ -55,7 +55,7 @@
* @since 1.5
*/
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import java.util.HashMap;
public final class XAtom {
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XDnDDragSourceProtocol.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XDnDDragSourceProtocol.java Thu Nov 19 18:18:05 2015 -0500
@@ -35,7 +35,7 @@
import sun.util.logging.PlatformLogger;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* XDragSourceProtocol implementation for XDnD protocol.
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XDnDDropTargetProtocol.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XDnDDropTargetProtocol.java Thu Nov 19 18:18:05 2015 -0500
@@ -35,7 +35,7 @@
import sun.util.logging.PlatformLogger;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* XDropTargetProtocol implementation for XDnD protocol.
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XDropTargetContextPeer.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XDropTargetContextPeer.java Thu Nov 19 18:18:05 2015 -0500
@@ -41,7 +41,7 @@
import sun.awt.dnd.SunDropTargetContextPeer;
import sun.awt.dnd.SunDropTargetEvent;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* The XDropTargetContextPeer is the class responsible for handling
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XEmbedHelper.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XEmbedHelper.java Thu Nov 19 18:18:05 2015 -0500
@@ -25,7 +25,7 @@
package sun.awt.X11;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import sun.util.logging.PlatformLogger;
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XKeysym.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XKeysym.java Thu Nov 19 18:18:05 2015 -0500
@@ -27,7 +27,7 @@
package sun.awt.X11;
import java.util.Hashtable;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import sun.util.logging.PlatformLogger;
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XQueryTree.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XQueryTree.java Thu Nov 19 18:18:05 2015 -0500
@@ -27,7 +27,7 @@
package sun.awt.X11;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
public class XQueryTree {
private static Unsafe unsafe = XlibWrapper.unsafe;
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XTranslateCoordinates.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XTranslateCoordinates.java Thu Nov 19 18:18:05 2015 -0500
@@ -27,7 +27,7 @@
package sun.awt.X11;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
public class XTranslateCoordinates {
private static Unsafe unsafe = XlibWrapper.unsafe;
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XWM.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XWM.java Thu Nov 19 18:18:05 2015 -0500
@@ -31,7 +31,7 @@
package sun.awt.X11;
import sun.awt.IconInfo;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import java.awt.Insets;
import java.awt.Frame;
import java.awt.Rectangle;
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XlibWrapper.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XlibWrapper.java Thu Nov 19 18:18:05 2015 -0500
@@ -27,7 +27,7 @@
import java.security.AccessController;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
import sun.security.action.GetPropertyAction;
final class XlibWrapper {
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/keysym2ucs.h Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/keysym2ucs.h Thu Nov 19 18:18:05 2015 -0500
@@ -65,7 +65,7 @@
tojava
tojava package sun.awt.X11;
tojava import java.util.Hashtable;
-tojava import sun.misc.Unsafe;
+tojava import jdk.internal.misc.Unsafe;
tojava
tojava import sun.util.logging.PlatformLogger;
tojava
--- a/jdk/src/java.management/share/classes/sun/management/BaseOperatingSystemImpl.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.management/share/classes/sun/management/BaseOperatingSystemImpl.java Thu Nov 19 18:18:05 2015 -0500
@@ -28,7 +28,7 @@
import java.lang.management.OperatingSystemMXBean;
import java.lang.management.ManagementFactory;
import javax.management.ObjectName;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
/**
* Implementation class for the operating system.
--- a/jdk/src/java.management/share/classes/sun/management/ManagementFactoryHelper.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.management/share/classes/sun/management/ManagementFactoryHelper.java Thu Nov 19 18:18:05 2015 -0500
@@ -51,7 +51,7 @@
static {
// make sure that the management lib is loaded within
// java.lang.management.ManagementFactory
- sun.misc.Unsafe.getUnsafe().ensureClassInitialized(ManagementFactory.class);
+ jdk.internal.misc.Unsafe.getUnsafe().ensureClassInitialized(ManagementFactory.class);
}
private static final VMManagement jvm = new VMManagementImpl();
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/KerberosSecrets.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/KerberosSecrets.java Thu Nov 19 18:18:05 2015 -0500
@@ -26,7 +26,7 @@
package sun.security.krb5;
import javax.security.auth.kerberos.KeyTab;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
public class KerberosSecrets {
private static final Unsafe unsafe = Unsafe.getUnsafe();
--- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/PrincipalName.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/PrincipalName.java Thu Nov 19 18:18:05 2015 -0500
@@ -187,10 +187,10 @@
}
private static final long NAME_STRINGS_OFFSET;
- private static final sun.misc.Unsafe UNSAFE;
+ private static final jdk.internal.misc.Unsafe UNSAFE;
static {
try {
- sun.misc.Unsafe unsafe = sun.misc.Unsafe.getUnsafe();
+ jdk.internal.misc.Unsafe unsafe = jdk.internal.misc.Unsafe.getUnsafe();
NAME_STRINGS_OFFSET = unsafe.objectFieldOffset(
PrincipalName.class.getDeclaredField("nameStrings"));
UNSAFE = unsafe;
--- a/jdk/test/ProblemList.txt Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/ProblemList.txt Thu Nov 19 18:18:05 2015 -0500
@@ -133,9 +133,6 @@
# 8029891
java/lang/ClassLoader/deadlock/GetResource.java generic-all
-# 8131129
-java/lang/invoke/LFCaching/LFMultiThreadCachingTest.java windows-all
-
############################################################################
# jdk_instrument
--- a/jdk/test/TEST.groups Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/TEST.groups Thu Nov 19 18:18:05 2015 -0500
@@ -28,7 +28,9 @@
tier1 = \
:jdk_lang \
-java/lang/ProcessHandle/TreeTest.java \
+ -java/util/zip/TestLocalTime.java \
:jdk_util \
+ -java/util/concurrent/Phaser/Basic.java \
sun/nio/cs/ISO8859x.java \
java/nio/Buffer \
com/sun/crypto/provider/Cipher \
@@ -36,6 +38,8 @@
tier2 = \
java/lang/ProcessHandle/TreeTest.java \
+ java/util/zip/TestLocalTime.java \
+ java/util/concurrent/Phaser/Basic.java \
:jdk_io \
:jdk_nio \
-sun/nio/cs/ISO8859x.java \
--- a/jdk/test/com/sun/jndi/ldap/LdapTimeoutTest.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/com/sun/jndi/ldap/LdapTimeoutTest.java Thu Nov 19 18:18:05 2015 -0500
@@ -47,6 +47,7 @@
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.TimeUnit;
+import javax.net.ssl.SSLHandshakeException;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
@@ -234,6 +235,12 @@
if (e.getCause() instanceof SocketTimeoutException) {
// SSL connect will timeout via readReply using
// SocketTimeoutException
+ e.printStackTrace();
+ pass();
+ } else if (e.getCause() instanceof SSLHandshakeException
+ && e.getCause().getCause() instanceof EOFException) {
+ // test seems to be failing intermittently on some
+ // platforms.
pass();
} else {
fail(e);
--- a/jdk/test/java/lang/ProcessBuilder/Basic.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/java/lang/ProcessBuilder/Basic.java Thu Nov 19 18:18:05 2015 -0500
@@ -1248,7 +1248,7 @@
() -> p.toHandle(),
() -> p.supportsNormalTermination(),
() -> p.children(),
- () -> p.allChildren());
+ () -> p.descendants());
}
--- a/jdk/test/java/lang/ProcessHandle/OnExitTest.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/java/lang/ProcessHandle/OnExitTest.java Thu Nov 19 18:18:05 2015 -0500
@@ -129,7 +129,7 @@
printf(" You can try to increase the timeout or%n");
printf(" you can try to use a faster VM (i.e. not a debug version).%n");
}
- children = getAllChildren(procHandle);
+ children = getDescendants(procHandle);
ConcurrentHashMap<ProcessHandle, CompletableFuture<ProcessHandle>> completions =
new ConcurrentHashMap<>();
--- a/jdk/test/java/lang/ProcessHandle/PermissionTest.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/java/lang/ProcessHandle/PermissionTest.java Thu Nov 19 18:18:05 2015 -0500
@@ -62,9 +62,9 @@
}
@Test
- public void allChildrenWithPermission() {
+ public void descendantsWithPermission() {
Policy.setPolicy(new TestPolicy(new RuntimePermission("manageProcess")));
- currentHndl.allChildren();
+ currentHndl.descendants();
}
@Test
@@ -122,7 +122,7 @@
@Test(groups = { "NoManageProcessPermission" }, expectedExceptions = SecurityException.class)
public void noPermissionAllChildren() {
- currentHndl.allChildren();
+ currentHndl.descendants();
}
@Test(groups = { "NoManageProcessPermission" }, expectedExceptions = SecurityException.class)
--- a/jdk/test/java/lang/ProcessHandle/ProcessUtil.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/java/lang/ProcessHandle/ProcessUtil.java Thu Nov 19 18:18:05 2015 -0500
@@ -63,8 +63,8 @@
* @param ph the Process to get children of
* @return a list of child ProcessHandles
*/
- public static List<ProcessHandle> getAllChildren(ProcessHandle ph) {
- return ph.allChildren()
+ public static List<ProcessHandle> getDescendants(ProcessHandle ph) {
+ return ph.descendants()
.filter(ProcessUtil::isNotWindowsConsole)
.collect(Collectors.toList());
}
@@ -117,7 +117,7 @@
// ignore
}
}
- subprocesses = getAllChildren(ph);
+ subprocesses = getDescendants(ph);
count = subprocesses.size();
System.out.printf(" waiting for subprocesses of %s to start," +
" expected: %d, current: %d%n", ph, nchildren, count);
@@ -133,7 +133,7 @@
* @return the ProcessHandle
*/
public static ProcessHandle destroyProcessTree(ProcessHandle p) {
- Stream<ProcessHandle> children = p.allChildren().filter(ProcessUtil::isNotWindowsConsole);
+ Stream<ProcessHandle> children = p.descendants().filter(ProcessUtil::isNotWindowsConsole);
children.forEach(ph -> {
System.out.printf("destroyProcessTree destroyForcibly%n");
printProcess(ph);
--- a/jdk/test/java/lang/ProcessHandle/TreeTest.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/java/lang/ProcessHandle/TreeTest.java Thu Nov 19 18:18:05 2015 -0500
@@ -193,21 +193,21 @@
}
// show the complete list of children (for debug)
- List<ProcessHandle> allChildren = getAllChildren(p1Handle);
- printf(" allChildren: %s%n",
- allChildren.stream().map(p -> p.getPid())
- .collect(Collectors.toList()));
+ List<ProcessHandle> descendants = getDescendants(p1Handle);
+ printf(" descendants: %s%n",
+ descendants.stream().map(p -> p.getPid())
+ .collect(Collectors.toList()));
- // Verify that all spawned children show up in the allChildren List
+ // Verify that all spawned children show up in the descendants List
processes.forEach((p, parent) -> {
Assert.assertEquals(p.isAlive(), true, "Child should be alive: " + p);
- Assert.assertTrue(allChildren.contains(p), "Spawned child should be listed in allChildren: " + p);
+ Assert.assertTrue(descendants.contains(p), "Spawned child should be listed in descendants: " + p);
});
// Closing JavaChild's InputStream will cause all children to exit
p1.getOutputStream().close();
- for (ProcessHandle p : allChildren) {
+ for (ProcessHandle p : descendants) {
try {
p.onExit().get(); // wait for the child to exit
} catch (ExecutionException e) {
@@ -228,9 +228,9 @@
/**
* Test destroy of processes.
* A JavaChild is started and it starts three children.
- * Each one is then checked to be alive and listed by allChildren
+ * Each one is then checked to be alive and listed by descendants
* and forcibly destroyed.
- * After they exit they should no longer be listed by allChildren.
+ * After they exit they should no longer be listed by descendants.
*/
@Test
public static void test3() {
@@ -263,24 +263,24 @@
Assert.assertTrue(spawnCount.await(Utils.adjustTimeout(30L), TimeUnit.SECONDS),
"Timeout waiting for processes to start");
- // Debugging; list allChildren that are not expected in processes
- List<ProcessHandle> allChildren = ProcessUtil.getAllChildren(p1Handle);
- long count = allChildren.stream()
+ // Debugging; list descendants that are not expected in processes
+ List<ProcessHandle> descendants = ProcessUtil.getDescendants(p1Handle);
+ long count = descendants.stream()
.filter(ph -> !processes.containsKey(ph))
.count();
if (count > 0) {
- allChildren.stream()
+ descendants.stream()
.filter(ph -> !processes.containsKey(ph))
.forEach(ph1 -> ProcessUtil.printProcess(ph1, "Extra process: "));
ProcessUtil.logTaskList();
- Assert.assertEquals(0, count, "Extra processes in allChildren");
+ Assert.assertEquals(0, count, "Extra processes in descendants");
}
- // Verify that all spawned children are alive, show up in the allChildren list
+ // Verify that all spawned children are alive, show up in the descendants list
// then destroy them
processes.forEach((p, parent) -> {
Assert.assertEquals(p.isAlive(), true, "Child should be alive: " + p);
- Assert.assertTrue(allChildren.contains(p), "Spawned child should be listed in allChildren: " + p);
+ Assert.assertTrue(descendants.contains(p), "Spawned child should be listed in descendants: " + p);
p.destroyForcibly();
});
Assert.assertEquals(processes.size(), newChildren, "Wrong number of children");
@@ -305,8 +305,8 @@
p1.destroyForcibly();
p1.waitFor();
- // Verify that none of the spawned children are still listed by allChildren
- List<ProcessHandle> remaining = getAllChildren(self);
+ // Verify that none of the spawned children are still listed by descendants
+ List<ProcessHandle> remaining = getDescendants(self);
Assert.assertFalse(remaining.remove(p1Handle), "Child p1 should have exited");
remaining = remaining.stream().filter(processes::containsKey).collect(Collectors.toList());
Assert.assertEquals(remaining.size(), 0, "Subprocess(es) should have exited: " + remaining);
@@ -415,28 +415,28 @@
Assert.assertTrue(spawnCount.await(Utils.adjustTimeout(30L), TimeUnit.SECONDS),
"Timeout waiting for processes to start");
- // Debugging; list allChildren that are not expected in processes
- List<ProcessHandle> allChildren = ProcessUtil.getAllChildren(p1Handle);
- long count = allChildren.stream()
+ // Debugging; list descendants that are not expected in processes
+ List<ProcessHandle> descendants = ProcessUtil.getDescendants(p1Handle);
+ long count = descendants.stream()
.filter(ph -> !processes.containsKey(ph))
.count();
if (count > 0) {
- allChildren.stream()
+ descendants.stream()
.filter(ph -> !processes.containsKey(ph))
.forEach(ph1 -> ProcessUtil.printProcess(ph1, "Extra process: "));
ProcessUtil.logTaskList();
- Assert.assertEquals(0, count, "Extra processes in allChildren");
+ Assert.assertEquals(0, count, "Extra processes in descendants");
}
Assert.assertEquals(getChildren(p1Handle).size(),
factor, "expected direct children");
- count = getAllChildren(p1Handle).size();
+ count = getDescendants(p1Handle).size();
long totalChildren = factor * factor * factor + factor * factor + factor;
Assert.assertTrue(count >= totalChildren,
"expected at least " + totalChildren + ", actual: " + count);
- List<ProcessHandle> subprocesses = getAllChildren(p1Handle);
- printf(" allChildren: %s%n",
+ List<ProcessHandle> subprocesses = getDescendants(p1Handle);
+ printf(" descendants: %s%n",
subprocesses.stream().map(p -> p.getPid())
.collect(Collectors.toList()));
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/security/SecureRandom/DefaultProvider.java Thu Nov 19 18:18:05 2015 -0500
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2015, 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
+ * 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.
+ */
+
+import static java.lang.System.out;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+
+/**
+ * @test
+ * @bug 8048356
+ * @summary Assert default provider used on all OS for SecureRandom
+ */
+public class DefaultProvider {
+
+ private static final String OS_NAME = System.getProperty("os.name");
+ private static final String SUNOS = "SunOS";
+ private static final String WINDOWS = "Windows";
+
+ public static void main(String[] args) throws NoSuchAlgorithmException {
+ out.println("Operating System: " + OS_NAME);
+
+ /* Test default provider used with constructor */
+ out.println("TEST: Default provider with constructor");
+ SecureRandom secureRandom = new SecureRandom();
+ String provider = secureRandom.getProvider().getName();
+ if (OS_NAME.startsWith(SUNOS)) {
+ if (!provider.startsWith("SunPKCS11-")) {
+ throw new RuntimeException("Unexpected provider name: "
+ + provider);
+ }
+ } else if (!provider.equals("SUN")) {
+ throw new RuntimeException("Unexpected provider name: "
+ + provider);
+ }
+ out.println("Passed, default provider with constructor: " + provider);
+
+ /* Test default provider with getInstance(String algorithm) */
+ out.println("TEST: SHA1PRNG supported on all platforms by SUN provider");
+ String algorithm = "SHA1PRNG";
+ provider = "SUN";
+
+ SecureRandom instance = SecureRandom.getInstance(algorithm);
+ assertInstance(instance, algorithm, provider);
+ out.println("Passed.");
+
+ if (!OS_NAME.startsWith(WINDOWS)) {
+ out.println("TEST: NativePRNG supported on all platforms"
+ + "(except Windows), by SUN provider");
+ algorithm = "NativePRNG";
+ provider = "SUN";
+ } else {
+ out.println(
+ "TEST: Windows-PRNG supported on windows by SunMSCAPI provider");
+ algorithm = "Windows-PRNG";
+ provider = "SunMSCAPI";
+ }
+ instance = SecureRandom.getInstance(algorithm);
+ assertInstance(instance, algorithm, provider);
+ out.println("Passed.");
+
+ if (OS_NAME.startsWith(SUNOS)) {
+ out.println(
+ "TEST: PKCS11 is supported on Solaris by SunPKCS11 provider");
+ algorithm = "PKCS11";
+ provider = "SunPKCS11-Solaris";
+ instance = SecureRandom.getInstance(algorithm);
+ assertInstance(instance, algorithm, provider);
+ out.println("Passed.");
+ }
+ }
+
+ private static void assertInstance(SecureRandom instance,
+ String expectedAlgorithm,
+ String expectedProvider) {
+ if (instance != null) {
+ if (!expectedAlgorithm.equalsIgnoreCase(instance.getAlgorithm())) {
+ throw new RuntimeException("Expected algorithm:"
+ + expectedAlgorithm + " actual: " + instance.getAlgorithm());
+ }
+
+ if (!expectedProvider.equalsIgnoreCase(instance.getProvider().getName())) {
+ throw new RuntimeException("Expected provider: "
+ + expectedProvider + " actual: "
+ + instance.getProvider().getName());
+ }
+ } else {
+ throw new RuntimeException("Secure instance is not created");
+ }
+ }
+}
--- a/jdk/test/java/time/tck/java/time/TCKDuration.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/java/time/tck/java/time/TCKDuration.java Thu Nov 19 18:18:05 2015 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -521,6 +521,8 @@
{"PT-123456789S", -123456789, 0},
{"PT" + Long.MIN_VALUE + "S", Long.MIN_VALUE, 0},
+
+ {"PT0.1S", 0, 100000000},
{"PT1.1S", 1, 100000000},
{"PT1.12S", 1, 120000000},
{"PT1.123S", 1, 123000000},
@@ -531,6 +533,7 @@
{"PT1.12345678S", 1, 123456780},
{"PT1.123456789S", 1, 123456789},
+ {"PT-0.1S", -1, 1000000000 - 100000000},
{"PT-1.1S", -2, 1000000000 - 100000000},
{"PT-1.12S", -2, 1000000000 - 120000000},
{"PT-1.123S", -2, 1000000000 - 123000000},
@@ -544,6 +547,24 @@
{"PT" + Long.MAX_VALUE + ".123456789S", Long.MAX_VALUE, 123456789},
{"PT" + Long.MIN_VALUE + ".000000000S", Long.MIN_VALUE, 0},
+ {"PT12M", 12 * 60, 0},
+ {"PT12M0.35S", 12 * 60, 350000000},
+ {"PT12M1.35S", 12 * 60 + 1, 350000000},
+ {"PT12M-0.35S", 12 * 60 - 1, 1000000000 - 350000000},
+ {"PT12M-1.35S", 12 * 60 - 2, 1000000000 - 350000000},
+
+ {"PT12H", 12 * 3600, 0},
+ {"PT12H0.35S", 12 * 3600, 350000000},
+ {"PT12H1.35S", 12 * 3600 + 1, 350000000},
+ {"PT12H-0.35S", 12 * 3600 - 1, 1000000000 - 350000000},
+ {"PT12H-1.35S", 12 * 3600 - 2, 1000000000 - 350000000},
+
+ {"P12D", 12 * 24 * 3600, 0},
+ {"P12DT0.35S", 12 * 24 * 3600, 350000000},
+ {"P12DT1.35S", 12 * 24 * 3600 + 1, 350000000},
+ {"P12DT-0.35S", 12 * 24 * 3600 - 1, 1000000000 - 350000000},
+ {"P12DT-1.35S", 12 * 24 * 3600 - 2, 1000000000 - 350000000},
+
{"PT01S", 1, 0},
{"PT001S", 1, 0},
{"PT000S", 0, 0},
--- a/jdk/test/java/time/tck/java/time/format/TCKZoneIdPrinterParser.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/java/time/tck/java/time/format/TCKZoneIdPrinterParser.java Thu Nov 19 18:18:05 2015 -0500
@@ -156,6 +156,7 @@
{"UTC", 3, -1, ZoneId.of("UTC"), false},
{"UT", 2, -1, ZoneId.of("UT"), false},
{"GMT", 3, -1, ZoneId.of("GMT"), false},
+ {"GMT0", 4, -1, ZoneId.of("GMT0"), false},
{"+00:00", 6, -1, ZoneOffset.UTC, true},
{"UTC+00:00", 9, -1, ZoneId.of("UTC"), false},
--- a/jdk/test/java/time/test/java/time/temporal/TestIsoWeekFields.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/java/time/test/java/time/temporal/TestIsoWeekFields.java Thu Nov 19 18:18:05 2015 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014,2015, 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
@@ -121,6 +121,14 @@
assertEquals(IsoFields.WEEK_BASED_YEAR.isSupportedBy(ThaiBuddhistDate.now()), false);
}
+ @Test
+ public void test_Unit_isSupportedBy_ISO() {
+ assertEquals(IsoFields.WEEK_BASED_YEARS.isSupportedBy(LocalDate.now()),true);
+ assertEquals(IsoFields.WEEK_BASED_YEARS.isSupportedBy(ThaiBuddhistDate.now()),false);
+ assertEquals(IsoFields.QUARTER_YEARS.isSupportedBy(LocalDate.now()),true);
+ assertEquals(IsoFields.QUARTER_YEARS.isSupportedBy(ThaiBuddhistDate.now()),false);
+ }
+
@Test(dataProvider = "fields")
public void test_WBY_range(TemporalField weekField, TemporalField yearField) {
assertEquals(yearField.range(), ValueRange.of(Year.MIN_VALUE, Year.MAX_VALUE));
--- a/jdk/test/java/util/Objects/BasicObjectsTest.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/java/util/Objects/BasicObjectsTest.java Thu Nov 19 18:18:05 2015 -0500
@@ -241,12 +241,12 @@
String nonNullString = "non-null";
// Confirm the compile time return type matches
- String result = Objects.nonNullElse(nullString, defString);
+ String result = Objects.requireNonNullElse(nullString, defString);
errors += (result == defString) ? 0 : 1;
- errors += (Objects.nonNullElse(nonNullString, defString) == nonNullString) ? 0 : 1;
- errors += (Objects.nonNullElse(nonNullString, null) == nonNullString) ? 0 : 1;
+ errors += (Objects.requireNonNullElse(nonNullString, defString) == nonNullString) ? 0 : 1;
+ errors += (Objects.requireNonNullElse(nonNullString, null) == nonNullString) ? 0 : 1;
try {
- Objects.nonNullElse(null, null);
+ Objects.requireNonNullElse(null, null);
errors += 1;
} catch (NullPointerException npe) {
// expected
@@ -254,20 +254,20 @@
}
- // Test nonNullElseGet with a supplier
- errors += (Objects.nonNullElseGet(nullString, () -> defString) == defString) ? 0 : 1;
- errors += (Objects.nonNullElseGet(nonNullString, () -> defString) == nonNullString) ? 0 : 1;
- errors += (Objects.nonNullElseGet(nonNullString, () -> null) == nonNullString) ? 0 : 1;
+ // Test requireNonNullElseGet with a supplier
+ errors += (Objects.requireNonNullElseGet(nullString, () -> defString) == defString) ? 0 : 1;
+ errors += (Objects.requireNonNullElseGet(nonNullString, () -> defString) == nonNullString) ? 0 : 1;
+ errors += (Objects.requireNonNullElseGet(nonNullString, () -> null) == nonNullString) ? 0 : 1;
try {
- Objects.nonNullElseGet(null, () -> null);
+ Objects.requireNonNullElseGet(null, () -> null);
errors += 1;
} catch (NullPointerException npe) {
// expected
errors += npe.getMessage().equals("supplier.get()") ? 0 : 1;
}
try { // supplier is null
- Objects.nonNullElseGet(null, null);
+ Objects.requireNonNullElseGet(null, null);
errors += 1;
} catch (NullPointerException npe) {
// expected
--- a/jdk/test/java/util/concurrent/Phaser/Basic.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/java/util/concurrent/Phaser/Basic.java Thu Nov 19 18:18:05 2015 -0500
@@ -34,6 +34,7 @@
/*
* @test
* @bug 6445158
+ * @key intermittent
* @summary Basic tests for Phaser
* @author Chris Hegarty
*/
--- a/jdk/test/java/util/zip/TestLocalTime.java Wed Jun 24 13:39:32 2015 -0700
+++ b/jdk/test/java/util/zip/TestLocalTime.java Thu Nov 19 18:18:05 2015 -0500
@@ -21,9 +21,10 @@
* questions.
*/
-/**
+/*
* @test
* @bug 8075526
+ * @key intermittent
* @summary Test timestamp via ZipEntry.get/setTimeLocal()
*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/jca/PreferredProviderNegativeTest.java Thu Nov 19 18:18:05 2015 -0500
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2015, 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
+ * 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 8076359 8133151
+ * @summary Test for jdk.security.provider.preferred security property
+ * @requires os.name == "SunOS"
+ * @run main/othervm PreferredProviderNegativeTest preJCESet AES:OracleUcrypto false
+ * @run main/othervm PreferredProviderNegativeTest preJCESet AES:SunNegative true
+ * @run main/othervm PreferredProviderNegativeTest afterJCESet AES:SunJGSS
+ * @run main/othervm PreferredProviderNegativeTest afterJCESet AES:SunECNegative
+ * @run main/othervm PreferredProviderNegativeTest invalidAlg AESNegative:SunJCE
+ */
+
+import java.security.Security;
+import java.security.NoSuchAlgorithmException;
+import javax.crypto.Cipher;
+import javax.crypto.NoSuchPaddingException;
+
+public class PreferredProviderNegativeTest {
+
+ /*
+ * Test security property could be set by valid and invalid provider
+ * before JCE was loaded
+ */
+ public static void preJCESet(String value, boolean negativeProvider)
+ throws NoSuchAlgorithmException, NoSuchPaddingException {
+ Security.setProperty("jdk.security.provider.preferred", value);
+
+ if (!Security.getProperty("jdk.security.provider.preferred")
+ .equals(value)) {
+ throw new RuntimeException(
+ "Test Failed:The property wasn't set");
+ }
+
+ String[] arrays = value.split(":");
+ Cipher cipher = Cipher.getInstance(arrays[0]);
+
+ if (negativeProvider) {
+ if (cipher.getProvider().getName().equals(arrays[1])) {
+ throw new RuntimeException(
+ "Test Failed:The provider shouldn't be set");
+ }
+ } else {
+ if (!cipher.getProvider().getName().equals(arrays[1])) {
+ throw new RuntimeException(
+ "Test Faild:The provider could be set "
+ + "by valid provider ");
+ }
+ }
+ System.out.println("Test Pass");
+ }
+
+ /*
+ * Test that the setting of the security property after Cipher.getInstance()
+ * does not influence previously loaded instances
+ */
+ public static void afterJCESet(String value)
+ throws NoSuchAlgorithmException, NoSuchPaddingException {
+ String[] arrays = value.split(":");
+ Cipher cipher = Cipher.getInstance(arrays[0]);
+
+ Security.setProperty("jdk.security.provider.preferred", value);
+ if (!cipher.getProvider().getName().equals("SunJCE")) {
+ throw new RuntimeException(
+ "Test Failed:The security property can't be updated after JCE load.");
+ }
+ System.out.println("Test Pass");
+ }
+
+ /* Test the security property with negative algorithm */
+ public static void invalidAlg(String value) throws NoSuchPaddingException {
+ String[] arrays = value.split(":");
+
+ try {
+ Security.setProperty("jdk.security.provider.preferred", value);
+ Cipher.getInstance(arrays[0]);
+ } catch (NoSuchAlgorithmException e) {
+ System.out.println("Test Pass:Got NoSuchAlgorithmException as expired");
+ return;
+ }
+ throw new RuntimeException(
+ "Test Failed:Expected NoSuchAlgorithmException was not thrown");
+ }
+
+ public static void main(String[] args)
+ throws NoSuchAlgorithmException, NoSuchPaddingException {
+ boolean negativeProvider;
+
+ if (args.length >= 2) {
+ switch (args[0]) {
+ case "preJCESet":
+ negativeProvider = Boolean.valueOf(args[2]);
+ PreferredProviderNegativeTest.preJCESet(args[1], negativeProvider);
+ break;
+ case "afterJCESet":
+ PreferredProviderNegativeTest.afterJCESet(args[1]);
+ break;
+ case "invalidAlg":
+ PreferredProviderNegativeTest.invalidAlg(args[1]);
+ break;
+ }
+ } else {
+ throw new RuntimeException(
+ "Test Failed:Please pass the correct args");
+ }
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/jca/PreferredProviderTest.java Thu Nov 19 18:18:05 2015 -0500
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2015, 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
+ * 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 8076359 8133151
+ * @summary Test the value for new jdk.security.provider.preferred security property
+ * @requires os.name == "SunOS"
+ */
+
+import java.security.KeyFactory;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.security.Security;
+import java.util.Arrays;
+import java.util.List;
+import javax.crypto.Cipher;
+import javax.crypto.NoSuchPaddingException;
+
+public class PreferredProviderTest {
+
+ private static final List<DataTuple> SPARC_DATA = Arrays.asList(
+ new DataTuple("SHA-256", "SUN"), new DataTuple("SHA-384", "SUN"),
+ new DataTuple("SHA-512", "SUN"));
+ private static final List<DataTuple> X86_DATA = Arrays
+ .asList(new DataTuple("RSA", "SunRsaSign"));
+
+ public void RunTest(String type)
+ throws NoSuchAlgorithmException, NoSuchPaddingException {
+ String preferredProvider = Security
+ .getProperty("jdk.security.provider.preferred");
+ String actualProvider = null;
+ if (type.equals("sparcv9")) {
+ if (!preferredProvider.equals(
+ "AES:SunJCE, SHA-256:SUN, SHA-384:SUN, SHA-512:SUN")) {
+ throw new RuntimeException(
+ "Test Failed: wrong jdk.security.provider.preferred "
+ + "value on solaris-sparcv9");
+ }
+ for (DataTuple dataTuple : SPARC_DATA) {
+ MessageDigest md = MessageDigest
+ .getInstance(dataTuple.algorithm);
+ actualProvider = md.getProvider().getName();
+ if (!actualProvider.equals(dataTuple.provider)) {
+ throw new RuntimeException(String.format(
+ "Test Failed:Got wrong "
+ + "provider from Solaris-sparcv9 platform,"
+ + "Expected Provider: %s, Returned Provider: %s",
+ dataTuple.provider, actualProvider));
+ }
+ }
+ } else if (type.equals("amd64")) {
+ if (!preferredProvider.equals("AES:SunJCE, RSA:SunRsaSign")) {
+ throw new RuntimeException(
+ "Test Failed: wrong jdk.security.provider.preferred "
+ + "value on solaris-x86");
+ }
+ for (DataTuple dataTuple : X86_DATA) {
+ KeyFactory keyFactory = KeyFactory
+ .getInstance(dataTuple.algorithm);
+ actualProvider = keyFactory.getProvider().getName();
+ if (!actualProvider.equals(dataTuple.provider)) {
+ throw new RuntimeException(String.format(
+ "Test Failed:Got wrong "
+ + "provider from Solaris-x86 platform,"
+ + "Expected Provider: %s, Returned Provider: %s",
+ dataTuple.provider, actualProvider));
+ }
+ }
+ } else {
+ throw new RuntimeException("Test Failed: wrong platform value");
+ }
+
+ Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
+ actualProvider = cipher.getProvider().getName();
+ if (!actualProvider.equals("SunJCE")) {
+ throw new RuntimeException(String.format(
+ "Test Failed:Got wrong provider from Solaris-%s platform, "
+ + "Expected Provider: SunJCE, Returned Provider: %s",
+ type, actualProvider));
+ }
+
+ MessageDigest md = MessageDigest.getInstance("MD5");
+ actualProvider = md.getProvider().getName();
+ if (!actualProvider.equals("OracleUcrypto")) {
+ throw new RuntimeException(String.format(
+ "Test Failed:Got wrong provider from Solaris-%s platform,"
+ + "Expected Provider: OracleUcrypto, Returned Provider: %s",
+ type, actualProvider));
+ }
+ }
+
+ private static class DataTuple {
+ private final String provider;
+ private final String algorithm;
+
+ private DataTuple(String algorithm, String provider) {
+ this.algorithm = algorithm;
+ this.provider = provider;
+ }
+ }
+
+ public static void main(String[] args)
+ throws NoSuchAlgorithmException, NoSuchPaddingException {
+
+ String arch = System.getProperty("os.arch");
+ PreferredProviderTest pp = new PreferredProviderTest();
+ pp.RunTest(arch);
+ }
+}
+