changeset 12018:4fbcca8ab812 jdk9-b66

Merge
author lana
date Thu, 21 May 2015 16:20:20 -0700
parents b4e21fd93f44 8a244f4932b5
children 148e69936fd1 4bdba5e53c9a
files src/jdk.dev/share/classes/com/sun/tools/hat/Main.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/AbstractJavaHeapObjectVisitor.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/ArrayTypeCodes.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/HackJavaValue.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaBoolean.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaByte.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaChar.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaClass.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaDouble.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaField.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaFloat.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaHeapObject.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaHeapObjectVisitor.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaInt.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaLazyReadObject.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaLong.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaObject.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaObjectArray.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaObjectRef.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaShort.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaStatic.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaThing.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaValue.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaValueArray.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/ReachableExcludes.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/ReachableExcludesImpl.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/ReachableObjects.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/ReferenceChain.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/Root.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/Snapshot.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/StackFrame.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/StackTrace.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/oql/OQLEngine.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/oql/OQLException.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/oql/OQLQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/oql/ObjectVisitor.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/parser/FileReadBuffer.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/parser/HprofReader.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/parser/MappedReadBuffer.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/parser/PositionDataInputStream.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/parser/PositionInputStream.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/parser/ReadBuffer.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/parser/Reader.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/AllRootsQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/ClassQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/FinalizerObjectsQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/FinalizerSummaryQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/HistogramQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/HttpReader.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/InstancesCountQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/InstancesQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/OQLHelp.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/OQLQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/ObjectQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/PlatformClasses.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/QueryHandler.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/QueryListener.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/ReachableQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/RefsByTypeQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/RootStackQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/server/RootsQuery.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/util/ArraySorter.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/util/Comparer.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/util/CompositeEnumeration.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/util/Misc.java src/jdk.dev/share/classes/com/sun/tools/hat/internal/util/VectorSorter.java src/jdk.dev/share/classes/com/sun/tools/hat/resources/hat.js src/jdk.dev/share/classes/com/sun/tools/hat/resources/oqlhelp.html src/jdk.dev/share/classes/com/sun/tools/hat/resources/platform_names.txt test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.sh test/sun/tools/common/ApplicationSetup.sh test/sun/tools/common/CommonSetup.sh test/sun/tools/common/ShutdownSimpleApplication.java test/sun/tools/common/SimpleApplication.java test/sun/tools/common/SleeperApplication.java test/sun/tools/jhat/HatHeapDump1Test.java test/sun/tools/jhat/HelloWorld.java test/sun/tools/jhat/ParseTest.sh test/sun/tools/jhat/README.TXT
diffstat 309 files changed, 3910 insertions(+), 14174 deletions(-) [+]
line wrap: on
line diff
--- a/make/CompileDemos.gmk	Thu May 21 10:07:38 2015 -0700
+++ b/make/CompileDemos.gmk	Thu May 21 16:20:20 2015 -0700
@@ -30,6 +30,7 @@
 include JavaCompilation.gmk
 include NativeCompilation.gmk
 include SetupJavaCompilers.gmk
+include TextFileProcessing.gmk
 
 # Prepare the find cache.
 $(eval $(call FillCacheFind, $(JDK_TOPDIR)/src))
@@ -49,6 +50,15 @@
 
 ##################################################################################################
 
+# This rule will be depended on due to the MANIFEST line
+$(eval $(call SetupTextFileProcessing, BUILD_JAVA_MANIFEST, \
+  SOURCE_FILES := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf, \
+  OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/demo/java-main-manifest.mf, \
+  REPLACEMENTS := \
+      @@RELEASE@@ => $(RELEASE) ; \
+      @@COMPANY_NAME@@ => $(COMPANY_NAME) , \
+))
+
 define SetupAppletDemo
   $$(eval $$(call SetupJavaCompilation,BUILD_DEMO_APPLET_$1, \
       SETUP := GENERATE_USINGJDKBYTECODE, \
@@ -122,7 +132,7 @@
         COPY := $(PATTERNS_TO_COPY) $(10), \
         JAR := $(SUPPORT_OUTPUTDIR)/demo/image/$2/$1/$$($1_JARFILE), \
         JARMAIN := $4, \
-        MANIFEST := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf, \
+        MANIFEST := $(SUPPORT_OUTPUTDIR)/demo/java-main-manifest.mf, \
         EXTRA_MANIFEST_ATTR := $(11), \
         SRCZIP := $(SUPPORT_OUTPUTDIR)/demo/image/$2/$1/src.zip, \
         EXCLUDE_FILES := $9, \
@@ -290,7 +300,7 @@
         COPY := $(PATTERNS_TO_COPY), \
         JAR := $(SUPPORT_OUTPUTDIR)/demo/image/jvmti/$1/$1.jar, \
         EXTRA_MANIFEST_ATTR := Main-Class: \n, \
-        MANIFEST := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf))
+        MANIFEST := $(SUPPORT_OUTPUTDIR)/demo/java-main-manifest.mf))
 
     BUILD_DEMOS += $(SUPPORT_OUTPUTDIR)/demo/image/jvmti/$1/$1.jar
   endif
@@ -382,7 +392,7 @@
       BIN := $(SUPPORT_OUTPUTDIR)/demo/classes/jni/Poller, \
       HEADERS := $(SUPPORT_OUTPUTDIR)/demo/classes/jni/Poller, \
       JAR := $(SUPPORT_OUTPUTDIR)/demo/image/jni/Poller/Poller.jar, \
-      MANIFEST := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf, \
+      MANIFEST := $(SUPPORT_OUTPUTDIR)/demo/java-main-manifest.mf, \
       SRCZIP := $(SUPPORT_OUTPUTDIR)/demo/image/jni/Poller/src.zip, \
       COPY := README.txt Poller.c, \
       JARMAIN := Client))
--- a/make/launcher/Launcher-jdk.dev.gmk	Thu May 21 10:07:38 2015 -0700
+++ b/make/launcher/Launcher-jdk.dev.gmk	Thu May 21 16:20:20 2015 -0700
@@ -33,9 +33,6 @@
 $(eval $(call SetupLauncher,jimage,\
     -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "jdk.tools.jimage.Main"$(COMMA) }'))
 
-$(eval $(call SetupLauncher,jhat, \
-    -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.hat.Main"$(COMMA) }'))
-
 $(eval $(call SetupLauncher,native2ascii, \
     -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.native2ascii.Main"$(COMMA) }'))
 
--- a/make/lib/Lib-jdk.attach.gmk	Thu May 21 10:07:38 2015 -0700
+++ b/make/lib/Lib-jdk.attach.gmk	Thu May 21 16:20:20 2015 -0700
@@ -27,6 +27,12 @@
 
 ################################################################################
 
+ifeq ($(OPENJDK_TARGET_OS), windows)
+  # In (at least) VS2013 and later, -DPSAPI_VERSION=1 is needed to generate
+  # a binary that is compatible with windows versions older than 7/2008R2.
+  # See MSDN documentation for GetProcessMemoryInfo for more information.
+  LIBATTACH_CFLAGS := -DPSAPI_VERSION=1
+endif
 
 $(eval $(call SetupNativeCompilation,BUILD_LIBATTACH, \
     LIBRARY := attach, \
@@ -35,7 +41,7 @@
     OPTIMIZATION := LOW, \
     CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_WARNINGS_ARE_ERRORS) \
         -I$(SUPPORT_OUTPUTDIR)/headers/jdk.attach \
-        $(LIBJAVA_HEADER_FLAGS), \
+        $(LIBJAVA_HEADER_FLAGS) $(LIBATTACH_CFLAGS), \
     CFLAGS_windows := /Gy, \
     MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libattach/mapfile-$(OPENJDK_TARGET_OS), \
     VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
--- a/make/lib/Lib-jdk.management.gmk	Thu May 21 10:07:38 2015 -0700
+++ b/make/lib/Lib-jdk.management.gmk	Thu May 21 16:20:20 2015 -0700
@@ -39,10 +39,12 @@
     $(LIBJAVA_HEADER_FLAGS) \
     #
 
-# In (at least) VS2013 and later, -DPSAPI_VERSION=1 is needed to generate
-# a binary that is compatible with windows versions older than 7/2008R2.
-# See MSDN documentation for GetProcessMemoryInfo for more information.
-BUILD_LIBMANAGEMENT_EXT_CFLAGS += -DPSAPI_VERSION=1
+ifeq ($(OPENJDK_TARGET_OS), windows)
+  # In (at least) VS2013 and later, -DPSAPI_VERSION=1 is needed to generate
+  # a binary that is compatible with windows versions older than 7/2008R2.
+  # See MSDN documentation for GetProcessMemoryInfo for more information.
+  LIBMANAGEMENT_EXT_CFLAGS += -DPSAPI_VERSION=1
+endif
 
 LIBMANAGEMENT_EXT_OPTIMIZATION := HIGH
 ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux), )
--- a/make/src/classes/build/tools/module/boot.modules	Thu May 21 10:07:38 2015 -0700
+++ b/make/src/classes/build/tools/module/boot.modules	Thu May 21 16:20:20 2015 -0700
@@ -24,6 +24,7 @@
 jdk.jfr
 jdk.management
 jdk.management.cmm
+jdk.management.resource
 jdk.naming.rmi
 jdk.sctp
 jdk.security.auth
--- a/src/demo/share/applets.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/demo/share/applets.html	Thu May 21 16:20:20 2015 -0700
@@ -56,8 +56,7 @@
 </TR>
 
 <TR>
-<TD ALIGN=RIGHT COLSPAN="2"><!-- page headline --><!-------------------------------><!--EDIT THE PAGE HEADLINE HERE--><!------------BEGIN-HEADLINE-----><FONT SIZE=+2>JAVA</FONT><SUP><FONT SIZE=-2>TM</FONT></SUP><FONT SIZE=+2>
-PLUG-IN</FONT> &nbsp;
+<TD ALIGN=RIGHT COLSPAN="2"><!-- page headline --><!-------------------------------><!--EDIT THE PAGE HEADLINE HERE--><!------------BEGIN-HEADLINE-----><FONT SIZE=+2>JAVA&trade; PLUG-IN</FONT> &nbsp;
 <BR><B>Demonstration Applets</B>&nbsp;
 <BR><!-------------END-HEADLINE------><!--    END OF PAGE HEADLINE   --><!-------------------------------></TD>
 </TR>
--- a/src/demo/share/jvmti/index.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/demo/share/jvmti/index.html	Thu May 21 16:20:20 2015 -0700
@@ -5,7 +5,7 @@
 
 <p>
 The 
-Java<sup><font size=-2>TM</font></sup> Virtual Machine Tools Interface (JVM TI)
+Java&trade; Virtual Machine Tools Interface (JVM TI)
 is a native tool interface provided in JDK 5.0 and newer.
 Native libraries that use JVM TI and are loaded into the 
 Java Virtual Machine
--- a/src/java.base/share/classes/java/lang/Boolean.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/lang/Boolean.java	Thu May 21 16:20:20 2015 -0700
@@ -230,13 +230,12 @@
     }
 
     /**
-     * Returns {@code true} if and only if the system property
-     * named by the argument exists and is equal to the string
-     * {@code "true"}. (Beginning with version 1.0.2 of the
-     * Java<small><sup>TM</sup></small> platform, the test of
-     * this string is case insensitive.) A system property is accessible
-     * through {@code getProperty}, a method defined by the
-     * {@code System} class.
+     * Returns {@code true} if and only if the system property named
+     * by the argument exists and is equal to the string {@code
+     * "true"}. (Beginning with version 1.0.2 of the Java&trade;
+     * platform, the test of this string is case insensitive.) A
+     * system property is accessible through {@code getProperty}, a
+     * method defined by the {@code System} class.
      * <p>
      * If there is no property with the specified name, or if the specified
      * name is empty or null, then {@code false} is returned.
--- a/src/java.base/share/classes/java/lang/Character.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/lang/Character.java	Thu May 21 16:20:20 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -645,8 +645,14 @@
      * @since 1.2
      */
     public static final class UnicodeBlock extends Subset {
-
-        private static Map<String, UnicodeBlock> map = new HashMap<>(256);
+        /**
+         * 510  - the expected number of enteties
+         * 0.75 - the default load factor of HashMap
+         */
+        private static final int INITIAL_CAPACITY =
+                (int)(510 / 0.75f + 1.0f);
+        private static Map<String, UnicodeBlock> map =
+                new HashMap<>(INITIAL_CAPACITY);
 
         /**
          * Creates a UnicodeBlock with the given identifier name.
--- a/src/java.base/share/classes/java/lang/Long.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/lang/Long.java	Thu May 21 16:20:20 2015 -0700
@@ -1708,7 +1708,7 @@
      * @since 1.5
      */
      public static int bitCount(long i) {
-        // HD, Figure 5-14
+        // HD, Figure 5-2
         i = i - ((i >>> 1) & 0x5555555555555555L);
         i = (i & 0x3333333333333333L) + ((i >>> 2) & 0x3333333333333333L);
         i = (i + (i >>> 4)) & 0x0f0f0f0f0f0f0f0fL;
--- a/src/java.base/share/classes/java/lang/String.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/lang/String.java	Thu May 21 16:20:20 2015 -0700
@@ -179,7 +179,7 @@
      * not affect the newly created string.
      *
      * @param  value
-         *         Array that is the source of characters
+     *         Array that is the source of characters
      *
      * @param  offset
      *         The initial offset
@@ -208,7 +208,7 @@
         if (offset > value.length - count) {
             throw new StringIndexOutOfBoundsException(offset + count);
         }
-        this.value = Arrays.copyOfRange(value, offset, offset+count);
+        this.value = Arrays.copyOfRange(value, offset, offset + count);
     }
 
     /**
@@ -262,11 +262,11 @@
         // Pass 1: Compute precise size of char[]
         int n = count;
         for (int i = offset; i < end; i++) {
-        int c = codePoints[i];
-        if (Character.isBmpCodePoint(c))
-            continue;
-        else if (Character.isValidCodePoint(c))
-            n++;
+            int c = codePoints[i];
+            if (Character.isBmpCodePoint(c))
+                continue;
+            else if (Character.isValidCodePoint(c))
+                n++;
             else throw new IllegalArgumentException(Integer.toString(c));
         }
 
@@ -327,7 +327,7 @@
     @Deprecated
     public String(byte ascii[], int hibyte, int offset, int count) {
         checkBounds(ascii, offset, count);
-        char value[] = new char[count];
+        char[] value = new char[count];
 
         if (hibyte == 0) {
             for (int i = count; i-- > 0;) {
@@ -465,7 +465,7 @@
         if (charset == null)
             throw new NullPointerException("charset");
         checkBounds(bytes, offset, length);
-        this.value =  StringCoding.decode(charset, bytes, offset, length);
+        this.value = StringCoding.decode(charset, bytes, offset, length);
     }
 
     /**
@@ -567,7 +567,7 @@
      *
      * @since  1.1
      */
-    public String(byte bytes[]) {
+    public String(byte[] bytes) {
         this(bytes, 0, bytes.length);
     }
 
@@ -983,11 +983,10 @@
             return true;
         }
         if (anObject instanceof String) {
-            String anotherString = (String)anObject;
-            int n = value.length;
-            if (n == anotherString.value.length) {
-                char v1[] = value;
-                char v2[] = anotherString.value;
+            char[] v1 = value;
+            char[] v2 = ((String)anObject).value;
+            int n = v1.length;
+            if (n == v2.length) {
                 int i = 0;
                 while (n-- != 0) {
                     if (v1[i] != v2[i])
@@ -1020,8 +1019,8 @@
     }
 
     private boolean nonSyncContentEquals(AbstractStringBuilder sb) {
-        char v1[] = value;
-        char v2[] = sb.getValue();
+        char[] v1 = value;
+        char[] v2 = sb.getValue();
         int n = v1.length;
         if (n != sb.length()) {
             return false;
@@ -1066,7 +1065,7 @@
             return equals(cs);
         }
         // Argument is a generic CharSequence
-        char v1[] = value;
+        char[] v1 = value;
         int n = v1.length;
         if (n != cs.length()) {
             return false;
@@ -1156,20 +1155,18 @@
      *          lexicographically greater than the string argument.
      */
     public int compareTo(String anotherString) {
-        int len1 = value.length;
-        int len2 = anotherString.value.length;
+        char[] v1 = value;
+        char[] v2 = anotherString.value;
+        int len1 = v1.length;
+        int len2 = v2.length;
         int lim = Math.min(len1, len2);
-        char v1[] = value;
-        char v2[] = anotherString.value;
 
-        int k = 0;
-        while (k < lim) {
+        for (int k = 0; k < lim; k++) {
             char c1 = v1[k];
             char c2 = v2[k];
             if (c1 != c2) {
                 return c1 - c2;
             }
-            k++;
         }
         return len1 - len2;
     }
@@ -1278,14 +1275,14 @@
      */
     public boolean regionMatches(int toffset, String other, int ooffset,
             int len) {
-        char ta[] = value;
+        char[] ta = value;
         int to = toffset;
-        char pa[] = other.value;
+        char[] pa = other.value;
         int po = ooffset;
         // Note: toffset, ooffset, or len might be near -1>>>1.
         if ((ooffset < 0) || (toffset < 0)
-                || (toffset > (long)value.length - len)
-                || (ooffset > (long)other.value.length - len)) {
+                || (toffset > (long)ta.length - len)
+                || (ooffset > (long)pa.length - len)) {
             return false;
         }
         while (len-- > 0) {
@@ -1348,14 +1345,14 @@
      */
     public boolean regionMatches(boolean ignoreCase, int toffset,
             String other, int ooffset, int len) {
-        char ta[] = value;
+        char[] ta = value;
         int to = toffset;
-        char pa[] = other.value;
+        char[] pa = other.value;
         int po = ooffset;
         // Note: toffset, ooffset, or len might be near -1>>>1.
         if ((ooffset < 0) || (toffset < 0)
-                || (toffset > (long)value.length - len)
-                || (ooffset > (long)other.value.length - len)) {
+                || (toffset > (long)ta.length - len)
+                || (ooffset > (long)pa.length - len)) {
             return false;
         }
         while (len-- > 0) {
@@ -1405,13 +1402,13 @@
      *          </pre>
      */
     public boolean startsWith(String prefix, int toffset) {
-        char ta[] = value;
+        char[] ta = value;
         int to = toffset;
-        char pa[] = prefix.value;
+        char[] pa = prefix.value;
         int po = 0;
-        int pc = prefix.value.length;
+        int pc = pa.length;
         // Note: toffset might be near -1>>>1.
-        if ((toffset < 0) || (toffset > value.length - pc)) {
+        if ((toffset < 0) || (toffset > ta.length - pc)) {
             return false;
         }
         while (--pc >= 0) {
@@ -1473,7 +1470,9 @@
             for (char v : value) {
                 h = 31 * h + v;
             }
-            hash = h;
+            if (h != 0) {
+                hash = h;
+            }
         }
         return h;
     }
@@ -1928,14 +1927,17 @@
      *             length of this {@code String} object.
      */
     public String substring(int beginIndex) {
-        if (beginIndex < 0) {
-            throw new StringIndexOutOfBoundsException(beginIndex);
+        if (beginIndex <= 0) {
+            if (beginIndex < 0) {
+                throw new StringIndexOutOfBoundsException(beginIndex);
+            }
+            return this;
         }
         int subLen = value.length - beginIndex;
         if (subLen < 0) {
             throw new StringIndexOutOfBoundsException(subLen);
         }
-        return (beginIndex == 0) ? this : new String(value, beginIndex, subLen);
+        return new String(value, beginIndex, subLen);
     }
 
     /**
@@ -1961,8 +1963,13 @@
      *             {@code endIndex}.
      */
     public String substring(int beginIndex, int endIndex) {
-        if (beginIndex < 0) {
-            throw new StringIndexOutOfBoundsException(beginIndex);
+        if (beginIndex <= 0) {
+            if (beginIndex < 0) {
+                throw new StringIndexOutOfBoundsException(beginIndex);
+            }
+            if (endIndex == value.length) {
+                return this;
+            }
         }
         if (endIndex > value.length) {
             throw new StringIndexOutOfBoundsException(endIndex);
@@ -1971,8 +1978,7 @@
         if (subLen < 0) {
             throw new StringIndexOutOfBoundsException(subLen);
         }
-        return ((beginIndex == 0) && (endIndex == value.length)) ? this
-                : new String(value, beginIndex, subLen);
+        return new String(value, beginIndex, subLen);
     }
 
     /**
@@ -2034,7 +2040,7 @@
             return this;
         }
         int len = value.length;
-        char buf[] = Arrays.copyOf(value, len + otherLen);
+        char[] buf = Arrays.copyOf(value, len + otherLen);
         str.getChars(buf, len);
         return new String(buf, true);
     }
@@ -2070,9 +2076,9 @@
      */
     public String replace(char oldChar, char newChar) {
         if (oldChar != newChar) {
-            int len = value.length;
+            char[] val = value; /* avoid getfield opcode */
+            int len = val.length;
             int i = -1;
-            char[] val = value; /* avoid getfield opcode */
 
             while (++i < len) {
                 if (val[i] == oldChar) {
@@ -2080,7 +2086,7 @@
                 }
             }
             if (i < len) {
-                char buf[] = new char[len];
+                char[] buf = new char[len];
                 for (int j = 0; j < i; j++) {
                     buf[j] = val[j];
                 }
@@ -2876,17 +2882,17 @@
      *          trailing white space.
      */
     public String trim() {
-        int len = value.length;
-        int st = 0;
         char[] val = value;    /* avoid getfield opcode */
+        int end = val.length;
+        int beg = 0;
 
-        while ((st < len) && (val[st] <= ' ')) {
-            st++;
+        while ((beg < end) && (val[beg] <= ' ')) {
+            beg++;
         }
-        while ((st < len) && (val[len - 1] <= ' ')) {
-            len--;
+        while ((beg < end) && (val[end - 1] <= ' ')) {
+            end--;
         }
-        return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
+        return substring(beg, end);
     }
 
     /**
@@ -3081,7 +3087,7 @@
      */
     public char[] toCharArray() {
         // Cannot use Arrays.copyOf because of class initialization order issues
-        char result[] = new char[value.length];
+        char[] result = new char[value.length];
         System.arraycopy(value, 0, result, 0, value.length);
         return result;
     }
@@ -3266,8 +3272,7 @@
      *          as its single character the argument {@code c}.
      */
     public static String valueOf(char c) {
-        char data[] = {c};
-        return new String(data, true);
+        return new String(new char[]{c}, true);
     }
 
     /**
--- a/src/java.base/share/classes/java/security/ProtectionDomain.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/security/ProtectionDomain.java	Thu May 21 16:20:20 2015 -0700
@@ -25,23 +25,24 @@
 
 package java.security;
 
+import java.lang.ref.Reference;
+import java.lang.ref.ReferenceQueue;
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Map;
 import java.util.WeakHashMap;
+import java.util.concurrent.ConcurrentHashMap;
+import sun.misc.JavaSecurityAccess;
 import sun.misc.JavaSecurityProtectionDomainAccess;
 import static sun.misc.JavaSecurityProtectionDomainAccess.ProtectionDomainCache;
+import sun.misc.SharedSecrets;
 import sun.security.util.Debug;
 import sun.security.util.SecurityConstants;
-import sun.misc.JavaSecurityAccess;
-import sun.misc.SharedSecrets;
 
 /**
- *
- *<p>
- * This ProtectionDomain class encapsulates the characteristics of a domain,
+ * The ProtectionDomain class encapsulates the characteristics of a domain,
  * which encloses a set of classes whose instances are granted a set
  * of permissions when being executed on behalf of a given set of Principals.
  * <p>
@@ -58,6 +59,7 @@
  */
 
 public class ProtectionDomain {
+
     private static class JavaSecurityAccessImpl implements JavaSecurityAccess {
 
         private JavaSecurityAccessImpl() {
@@ -86,18 +88,33 @@
                 AccessController.getContext(), context);
         }
 
-        private static AccessControlContext getCombinedACC(AccessControlContext context, AccessControlContext stack) {
-            AccessControlContext acc = new AccessControlContext(context, stack.getCombiner(), true);
+        private static AccessControlContext getCombinedACC(
+            AccessControlContext context, AccessControlContext stack) {
+            AccessControlContext acc =
+                new AccessControlContext(context, stack.getCombiner(), true);
 
             return new AccessControlContext(stack.getContext(), acc).optimize();
         }
     }
 
     static {
-        // Set up JavaSecurityAccess in SharedSecrets
+        // setup SharedSecrets to allow access to doIntersectionPrivilege
+        // methods and ProtectionDomain cache
         SharedSecrets.setJavaSecurityAccess(new JavaSecurityAccessImpl());
+        SharedSecrets.setJavaSecurityProtectionDomainAccess(
+            new JavaSecurityProtectionDomainAccess() {
+                @Override
+                public ProtectionDomainCache getProtectionDomainCache() {
+                    return new PDCache();
+                }
+            });
     }
 
+    /**
+     * Used for storing ProtectionDomains as keys in a Map.
+     */
+    static final class Key {}
+
     /* CodeSource */
     private CodeSource codesource ;
 
@@ -451,40 +468,104 @@
     }
 
     /**
-     * Used for storing ProtectionDomains as keys in a Map.
+     * A cache of ProtectionDomains and their Permissions.
+     *
+     * This class stores ProtectionDomains as weak keys in a ConcurrentHashMap
+     * with additional support for checking and removing weak keys that are no
+     * longer in use.
      */
-    final static class Key {}
-
-    // A cache of ProtectionDomains and their Permissions
     private static class PDCache implements ProtectionDomainCache {
-        // We must wrap the PermissionCollection in a WeakReference as there
-        // are some PermissionCollections which contain strong references
-        // back to a ProtectionDomain and otherwise would never be removed
-        // from the WeakHashMap
-        private final Map<Key, WeakReference<PermissionCollection>>
-            map = new WeakHashMap<>();
+        private final ConcurrentHashMap<WeakProtectionDomainKey,
+                                        PermissionCollection>
+                                        pdMap = new ConcurrentHashMap<>();
+        private final ReferenceQueue<Key> queue = new ReferenceQueue<>();
 
         @Override
-        public synchronized void put(ProtectionDomain pd,
-                                     PermissionCollection pc) {
-            map.put(pd == null ? null : pd.key, new WeakReference<>(pc));
+        public void put(ProtectionDomain pd, PermissionCollection pc) {
+            processQueue(queue, pdMap);
+            WeakProtectionDomainKey weakPd =
+                new WeakProtectionDomainKey(pd, queue);
+            pdMap.putIfAbsent(weakPd, pc);
         }
 
         @Override
-        public synchronized PermissionCollection get(ProtectionDomain pd) {
-            WeakReference<PermissionCollection> ref =
-                map.get(pd == null ? null : pd.key);
-            return ref == null ? null : ref.get();
+        public PermissionCollection get(ProtectionDomain pd) {
+            processQueue(queue, pdMap);
+            WeakProtectionDomainKey weakPd =
+                new WeakProtectionDomainKey(pd, queue);
+            return pdMap.get(weakPd);
+        }
+
+        /**
+         * Removes weak keys from the map that have been enqueued
+         * on the reference queue and are no longer in use.
+         */
+        private static void processQueue(ReferenceQueue<Key> queue,
+                                         ConcurrentHashMap<? extends
+                                         WeakReference<Key>, ?> pdMap) {
+            Reference<? extends Key> ref;
+            while ((ref = queue.poll()) != null) {
+                pdMap.remove(ref);
+            }
         }
     }
 
-    static {
-        SharedSecrets.setJavaSecurityProtectionDomainAccess(
-            new JavaSecurityProtectionDomainAccess() {
-                @Override
-                public ProtectionDomainCache getProtectionDomainCache() {
-                    return new PDCache();
-                }
-            });
+    /**
+     * A weak key for a ProtectionDomain.
+     */
+    private static class WeakProtectionDomainKey extends WeakReference<Key> {
+        /**
+         * Saved value of the referent's identity hash code, to maintain
+         * a consistent hash code after the referent has been cleared
+         */
+        private final int hash;
+
+        /**
+         * A key representing a null ProtectionDomain.
+         */
+        private static final Key NULL_KEY = new Key();
+
+        /**
+         * Create a new WeakProtectionDomain with the specified domain and
+         * registered with a queue.
+         */
+        WeakProtectionDomainKey(ProtectionDomain pd, ReferenceQueue<Key> rq) {
+            this((pd == null ? NULL_KEY : pd.key), rq);
+        }
+
+        private WeakProtectionDomainKey(Key key, ReferenceQueue<Key> rq) {
+            super(key, rq);
+            hash = key.hashCode();
+        }
+
+        /**
+         * Returns the identity hash code of the original referent.
+         */
+        @Override
+        public int hashCode() {
+            return hash;
+        }
+
+        /**
+         * Returns true if the given object is an identical
+         * WeakProtectionDomainKey instance, or, if this object's referent
+         * has not been cleared and the given object is another
+         * WeakProtectionDomainKey instance with an identical non-null
+         * referent as this one.
+         */
+        @Override
+        public boolean equals(Object obj) {
+            if (obj == this) {
+                return true;
+            }
+
+            if (obj instanceof WeakProtectionDomainKey) {
+                Object referent = get();
+                return (referent != null) &&
+                       (referent == ((WeakProtectionDomainKey)obj).get());
+            } else {
+                return false;
+            }
+        }
     }
 }
--- a/src/java.base/share/classes/java/text/ChoiceFormat.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/text/ChoiceFormat.java	Thu May 21 16:20:20 2015 -0700
@@ -490,7 +490,7 @@
     }
 
     /**
-     * Equality comparision between two
+     * Equality comparison between two
      */
     public boolean equals(Object obj) {
         if (obj == null) return false;
--- a/src/java.base/share/classes/java/util/ArrayPrefixHelpers.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/util/ArrayPrefixHelpers.java	Thu May 21 16:20:20 2015 -0700
@@ -85,7 +85,7 @@
      *
      * As usual for this sort of utility, there are 4 versions, that
      * are simple copy/paste/adapt variants of each other.  (The
-     * double and int versions differ from long version soley by
+     * double and int versions differ from long version solely by
      * replacing "long" (with case-matching)).
      */
 
--- a/src/java.base/share/classes/java/util/Calendar.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/util/Calendar.java	Thu May 21 16:20:20 2015 -0700
@@ -1172,7 +1172,7 @@
          * {@code fieldValuePairs} that are pairs of a field and its value.
          * For example,
          * <pre>
-         *   setFeilds(Calendar.YEAR, 2013,
+         *   setFields(Calendar.YEAR, 2013,
          *             Calendar.MONTH, Calendar.DECEMBER,
          *             Calendar.DAY_OF_MONTH, 23);</pre>
          * is equivalent to the sequence of the following
@@ -1298,7 +1298,7 @@
 
         /**
          * Sets the time zone parameter to the given {@code zone}. If no time
-         * zone parameter is given to this {@code Caledar.Builder}, the
+         * zone parameter is given to this {@code Calendar.Builder}, the
          * {@linkplain TimeZone#getDefault() default
          * <code>TimeZone</code>} will be used in the {@link #build() build}
          * method.
@@ -3316,7 +3316,7 @@
      * @param field the calendar field
      * @return the calendar field name
      * @exception IndexOutOfBoundsException if <code>field</code> is negative,
-     * equal to or greater then <code>FIELD_COUNT</code>.
+     * equal to or greater than {@code FIELD_COUNT}.
      */
     static String getFieldName(int field) {
         return FIELD_NAME[field];
--- a/src/java.base/share/classes/java/util/Collection.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/util/Collection.java	Thu May 21 16:20:20 2015 -0700
@@ -537,7 +537,7 @@
      * @implSpec
      * The default implementation creates a
      * <em><a href="Spliterator.html#binding">late-binding</a></em> spliterator
-     * from the collections's {@code Iterator}.  The spliterator inherits the
+     * from the collection's {@code Iterator}.  The spliterator inherits the
      * <em>fail-fast</em> properties of the collection's iterator.
      * <p>
      * The created {@code Spliterator} reports {@link Spliterator#SIZED}.
--- a/src/java.base/share/classes/java/util/Locale.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/util/Locale.java	Thu May 21 16:20:20 2015 -0700
@@ -719,7 +719,7 @@
      * created and cached.
      *
      * @param language lowercase 2 to 8 language code.
-     * @param country uppercase two-letter ISO-3166 code and numric-3 UN M.49 area code.
+     * @param country uppercase two-letter ISO-3166 code and numeric-3 UN M.49 area code.
      * @param variant vendor and browser specific code. See class description.
      * @return the <code>Locale</code> instance requested
      * @exception NullPointerException if any argument is null.
@@ -1236,7 +1236,7 @@
     /**
      * Package private method returning the Locale's LocaleExtensions,
      * used by ResourceBundle.
-     * @return locale exnteions of this Locale,
+     * @return locale extensions of this Locale,
      *         or {@code null} if no extensions are defined
      */
      LocaleExtensions getLocaleExtensions() {
@@ -2609,7 +2609,7 @@
          * href="./Locale.html#def_locale_extension">well-formed</a> or an exception
          * is thrown.
          *
-         * <p>Attribute comparision for removal is case-insensitive.
+         * <p>Attribute comparison for removal is case-insensitive.
          *
          * @param attribute the attribute
          * @return This builder.
--- a/src/java.base/share/classes/java/util/TimeZone.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/util/TimeZone.java	Thu May 21 16:20:20 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 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
@@ -293,6 +293,7 @@
             throw new NullPointerException();
         }
         this.ID = ID;
+        this.zoneId = null;   // invalidate cache
     }
 
     /**
@@ -544,7 +545,23 @@
      * @since 1.8
      */
     public ZoneId toZoneId() {
+        ZoneId zId = zoneId;
+        if (zId == null) {
+            zoneId = zId = toZoneId0();
+        }
+        return zId;
+    }
+
+    private ZoneId toZoneId0() {
         String id = getID();
+        TimeZone defaultZone = defaultTimeZone;
+        // are we not defaultTimeZone but our id is equal to default's?
+        if (defaultZone != this &&
+            defaultZone != null && id.equals(defaultZone.getID())) {
+            // delegate to default TZ which is effectively immutable
+            return defaultZone.toZoneId();
+        }
+        // derive it ourselves
         if (ZoneInfoFile.useOldMapping() && id.length() == 3) {
             if ("EST".equals(id))
                 return ZoneId.of("America/New_York");
@@ -710,7 +727,12 @@
             sm.checkPermission(new PropertyPermission
                                ("user.timezone", "write"));
         }
-        defaultTimeZone = zone;
+        // by saving a defensive clone and returning a clone in getDefault() too,
+        // the defaultTimeZone instance is isolated from user code which makes it
+        // effectively immutable. This is important to avoid races when the
+        // following is evaluated in ZoneId.systemDefault():
+        // TimeZone.getDefault().toZoneId().
+        defaultTimeZone = (zone == null) ? null : (TimeZone) zone.clone();
     }
 
     /**
@@ -735,9 +757,7 @@
     public Object clone()
     {
         try {
-            TimeZone other = (TimeZone) super.clone();
-            other.ID = ID;
-            return other;
+            return super.clone();
         } catch (CloneNotSupportedException e) {
             throw new InternalError(e);
         }
@@ -759,6 +779,12 @@
      * @serial
      */
     private String           ID;
+
+    /**
+     * Cached {@link ZoneId} for this TimeZone
+     */
+    private transient ZoneId zoneId;
+
     private static volatile TimeZone defaultTimeZone;
 
     static final String         GMT_ID        = "GMT";
--- a/src/java.base/share/classes/java/util/TreeMap.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/util/TreeMap.java	Thu May 21 16:20:20 2015 -0700
@@ -859,7 +859,7 @@
      * Returns a {@link Set} view of the mappings contained in this map.
      *
      * <p>The set's iterator returns the entries in ascending key order. The
-     * sets's spliterator is
+     * set's spliterator is
      * <em><a href="Spliterator.html#binding">late-binding</a></em>,
      * <em>fail-fast</em>, and additionally reports {@link Spliterator#SORTED} and
      * {@link Spliterator#ORDERED} with an encounter order that is ascending key
@@ -2643,7 +2643,7 @@
      * child, also serving as origin for the split-off spliterator.
      * Left-hands are symmetric. Descending versions place the origin
      * at the end and invert ascending split rules.  This base class
-     * is non-commital about directionality, or whether the top-level
+     * is non-committal about directionality, or whether the top-level
      * spliterator covers the whole tree. This means that the actual
      * split mechanics are located in subclasses. Some of the subclass
      * trySplit methods are identical (except for return types), but
--- a/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java	Thu May 21 16:20:20 2015 -0700
@@ -481,7 +481,7 @@
      *
      * Maintaining API and serialization compatibility with previous
      * versions of this class introduces several oddities. Mainly: We
-     * leave untouched but unused constructor arguments refering to
+     * leave untouched but unused constructor arguments referring to
      * concurrencyLevel. We accept a loadFactor constructor argument,
      * but apply it only to initial table capacity (which is the only
      * time that we can guarantee to honor it.) We also declare an
--- a/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListMap.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListMap.java	Thu May 21 16:20:20 2015 -0700
@@ -2710,7 +2710,7 @@
         }
 
         /**
-         * Returns lowest absolute key (ignoring directonality).
+         * Returns lowest absolute key (ignoring directionality).
          */
         K lowestKey() {
             Comparator<? super K> cmp = m.comparator;
@@ -2722,7 +2722,7 @@
         }
 
         /**
-         * Returns highest absolute key (ignoring directonality).
+         * Returns highest absolute key (ignoring directionality).
          */
         K highestKey() {
             Comparator<? super K> cmp = m.comparator;
--- a/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java	Thu May 21 16:20:20 2015 -0700
@@ -1328,13 +1328,16 @@
     /**
      * Number of times to spin-wait before blocking. The spins (in
      * awaitRunStateLock and awaitWork) currently use randomized
-     * spins. If/when MWAIT-like intrinsics becomes available, they
-     * may allow quieter spinning. The value of SPINS must be a power
-     * of two, at least 4. The current value causes spinning for a
-     * small fraction of typical context-switch times, well worthwhile
-     * given the typical likelihoods that blocking is not necessary.
+     * spins. Currently set to zero to reduce CPU usage.
+     *
+     * If greater than zero the value of SPINS must be a power
+     * of two, at least 4.  A value of 2048 causes spinning for a
+     * small fraction of typical context-switch times.
+     *
+     * If/when MWAIT-like intrinsics becomes available, they
+     * may allow quieter spinning.
      */
-    private static final int SPINS  = 1 << 11;
+    private static final int SPINS  = 0;
 
     /**
      * Increment for seed generators. See class ThreadLocal for
--- a/src/java.base/share/classes/javax/crypto/interfaces/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/javax/crypto/interfaces/package.html	Thu May 21 16:20:20 2015 -0700
@@ -47,8 +47,7 @@
 <ul>
   <li><a href=
     "{@docRoot}/../technotes/guides/security/crypto/HowToImplAProvider.html">
-    <b>How to Implement a Provider for the
-    Java<FONT SIZE=-2><SUP>TM</SUP></FONT> Cryptography Architecture
+    <b>How to Implement a Provider for the Java&trade; Cryptography Architecture
     </b></a></li>
 </ul>
 
@@ -66,8 +65,7 @@
   <li>
     <a href=
       "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
-      <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
-      Cryptography Architecture API Specification and Reference
+      <b>Java&trade; Cryptography Architecture API Specification and Reference
       </b></a></li>
 </ul>
 
--- a/src/java.base/share/classes/javax/crypto/spec/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/javax/crypto/spec/package.html	Thu May 21 16:20:20 2015 -0700
@@ -62,14 +62,13 @@
   <li>
     <a href=
       "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
-      <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
-      Cryptography Architecture API Specification and Reference
+      <b>Java&trade; Cryptography Architecture API Specification and Reference
       </b></a></li>
   <li>
     <a href=
       "{@docRoot}/../technotes/guides/security/crypto/HowToImplAProvider.html">
       <b>How to Implement a Provider for the
-      Java<FONT SIZE=-2><SUP>TM</SUP></FONT> Cryptography Architecture
+      Java&trade; Cryptography Architecture
       </b></a></li>
 </ul>
 
--- a/src/java.base/share/classes/javax/net/ssl/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/javax/net/ssl/package.html	Thu May 21 16:20:20 2015 -0700
@@ -38,8 +38,7 @@
 
 <ul>
   <li><a href="{@docRoot}/../technotes/guides/security/StandardNames.html">
-    <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
-    Cryptography Architecture Standard Algorithm Name
+    <b>Java&trade; Cryptography Architecture Standard Algorithm Name
     Documentation</b></a></li>
 </ul>
 
--- a/src/java.base/share/classes/jdk/internal/util/xml/impl/Parser.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/jdk/internal/util/xml/impl/Parser.java	Thu May 21 16:20:20 2015 -0700
@@ -145,12 +145,12 @@
     /**
      * ASCII character type array.
      *
-     * This array maps an ASCII (7 bit) character to the character type.<br />
-     * Possible character type values are:<br /> - ' ' for any kind of white
-     * space character;<br /> - 'a' for any lower case alphabetical character
-     * value;<br /> - 'A' for any upper case alphabetical character value;<br />
-     * - 'd' for any decimal digit character value;<br /> - 'z' for any
-     * character less then ' ' except '\t', '\n', '\r';<br /> An ASCII (7 bit)
+     * This array maps an ASCII (7 bit) character to the character type.<br>
+     * Possible character type values are:<br> - ' ' for any kind of white
+     * space character;<br> - 'a' for any lower case alphabetical character
+     * value;<br> - 'A' for any upper case alphabetical character value;<br>
+     * - 'd' for any decimal digit character value;<br> - 'z' for any
+     * character less than ' ' except '\t', '\n', '\r';<br> An ASCII (7 bit)
      * character which does not fall in any category listed above is mapped to
      * it self.
      */
@@ -158,11 +158,11 @@
     /**
      * NMTOKEN character type array.
      *
-     * This array maps an ASCII (7 bit) character to the character type.<br />
-     * Possible character type values are:<br /> - 0 for underscore ('_') or any
-     * lower and upper case alphabetical character value;<br /> - 1 for colon
-     * (':') character;<br /> - 2 for dash ('-') and dot ('.') or any decimal
-     * digit character value;<br /> - 3 for any kind of white space character<br
+     * This array maps an ASCII (7 bit) character to the character type.<br>
+     * Possible character type values are:<br> - 0 for underscore ('_') or any
+     * lower and upper case alphabetical character value;<br> - 1 for colon
+     * (':') character;<br> - 2 for dash ('-') and dot ('.') or any decimal
+     * digit character value;<br> - 3 for any kind of white space character<br
      * /> An ASCII (7 bit) character which does not fall in any category listed
      * above is mapped to 0xff.
      */
@@ -1841,10 +1841,12 @@
     /**
      * Reads an attribute value.
      *
-     * The grammar which this method can read is:<br />
-     * <code>eqstr := S &quot;=&quot; qstr</code><br />
-     * <code>qstr  := S (&quot;'&quot; string &quot;'&quot;) |
-     *  ('&quot;' string '&quot;')</code><br /> This method resolves entities
+     * The grammar this method can read is:
+     * <pre>{@code
+     * eqstr := S "=" qstr
+     * qstr  := S ("'" string "'") | ('"' string '"')
+     * }</pre>
+     * This method resolves entities
      * inside a string unless the parser parses DTD.
      *
      * @param flag The '=' character forces the method to accept the '='
@@ -2633,7 +2635,7 @@
      * Reports characters and empties the parser's buffer. This method is called
      * only if parser is going to return control to the main loop. This means
      * that this method may use parser buffer to report white space without
-     * copeing characters to temporary buffer.
+     * copying characters to temporary buffer.
      */
     protected abstract void bflash()
             throws Exception;
@@ -2642,7 +2644,7 @@
      * Reports white space characters and empties the parser's buffer. This
      * method is called only if parser is going to return control to the main
      * loop. This means that this method may use parser buffer to report white
-     * space without copeing characters to temporary buffer.
+     * space without copying characters to temporary buffer.
      */
     protected abstract void bflash_ws()
             throws Exception;
@@ -3290,16 +3292,20 @@
     }
 
     /**
-     * Maps a character to it's type.
+     * Maps a character to its type.
      *
-     * Possible character type values are:<br /> - ' ' for any kind of white
-     * space character;<br /> - 'a' for any lower case alphabetical character
-     * value;<br /> - 'A' for any upper case alphabetical character value;<br />
-     * - 'd' for any decimal digit character value;<br /> - 'z' for any
-     * character less then ' ' except '\t', '\n', '\r';<br /> - 'X' for any not
-     * ASCII character;<br /> - 'Z' for EOS character.<br /> An ASCII (7 bit)
-     * character which does not fall in any category listed above is mapped to
-     * it self.
+     * Possible character type values are:
+     * <ul>
+     * <li>' ' - for any kind of whitespace character;</li>
+     * <li>'a' - for any lower case alphabetical character value;</li>
+     * <li>'A' - for any upper case alphabetical character value;</li>
+     * <li>'d' - for any decimal digit character value;</li>
+     * <li>'z' - for any character less than ' ' except '\t', '\n', '\r';</li>
+     * <li>'X' - for any not ASCII character;</li>
+     * <li>'Z' - for EOS character.</li>
+     * </ul>
+     * An ASCII (7 bit) character which does not fall in any category
+     * listed above is mapped to itself.
      *
      * @param ch The character to map.
      * @return The type of character.
--- a/src/java.base/share/classes/jdk/internal/util/xml/impl/ParserSAX.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/jdk/internal/util/xml/impl/ParserSAX.java	Thu May 21 16:20:20 2015 -0700
@@ -649,7 +649,7 @@
      * Reports characters and empties the parser's buffer. This method is called
      * only if parser is going to return control to the main loop. This means
      * that this method may use parser buffer to report white space without
-     * copeing characters to temporary buffer.
+     * copying characters to temporary buffer.
      */
     protected void bflash() throws SAXException {
         if (mBuffIdx >= 0) {
@@ -663,7 +663,7 @@
      * Reports white space characters and empties the parser's buffer. This
      * method is called only if parser is going to return control to the main
      * loop. This means that this method may use parser buffer to report white
-     * space without copeing characters to temporary buffer.
+     * space without copying characters to temporary buffer.
      */
     protected void bflash_ws() throws SAXException {
         if (mBuffIdx >= 0) {
--- a/src/java.base/share/classes/sun/misc/Cache.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/Cache.java	Thu May 21 16:20:20 2015 -0700
@@ -196,8 +196,8 @@
     /**
      * Gets the object associated with the specified key in the Cache.
      * @param key the key in the hash table
-     * @returns the element for the key or null if the key
-     *          is not defined in the hash table.
+     * @return the element for the key or null if the key
+     *         is not defined in the hash table.
      * @see Cache#put
      */
     public synchronized Object get(Object key) {
--- a/src/java.base/share/classes/sun/misc/CharacterDecoder.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/CharacterDecoder.java	Thu May 21 16:20:20 2015 -0700
@@ -120,7 +120,7 @@
     /**
      * This method does an actual decode. It takes the decoded bytes and
      * writes them to the OutputStream. The integer <i>l</i> tells the
-     * method how many bytes are required. This is always <= bytesPerAtom().
+     * method how many bytes are required. This is always {@literal <=} bytesPerAtom().
      */
     protected void decodeAtom(PushbackInputStream aStream, OutputStream bStream, int l) throws IOException {
         throw new CEStreamExhausted();
--- a/src/java.base/share/classes/sun/misc/CharacterEncoder.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/CharacterEncoder.java	Thu May 21 16:20:20 2015 -0700
@@ -68,7 +68,7 @@
  * referenced in the See Also list below.
  *
  * @author      Chuck McManis
- * @see         CharacterDecoder;
+ * @see         CharacterDecoder
  * @see         UCEncoder
  * @see         UUEncoder
  * @see         BASE64Encoder
@@ -107,7 +107,7 @@
 
     /**
      * Encode the suffix that ends every output line. By default
-     * this method just prints a <newline> into the output stream.
+     * this method just prints a newline into the output stream.
      */
     protected void encodeLineSuffix(OutputStream aStream) throws IOException {
         pStream.println();
--- a/src/java.base/share/classes/sun/misc/ConditionLock.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/ConditionLock.java	Thu May 21 16:20:20 2015 -0700
@@ -34,7 +34,7 @@
  * with the lock() and unlock() methods. However if there is a thread
  * waiting for the state variable to become a particular value and you
  * simply call Unlock(), that thread will not be able to acquire the
- * lock until the state variable equals its desired value. <p>
+ * lock until the state variable equals its desired value.
  *
  * @author      Peter King
  */
--- a/src/java.base/share/classes/sun/misc/ExtensionDependency.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/ExtensionDependency.java	Thu May 21 16:20:20 2015 -0700
@@ -45,26 +45,26 @@
 import sun.net.www.ParseUtil;
 
 /**
- * <p>
  * This class checks dependent extensions a particular jar file may have
  * declared through its manifest attributes.
- * </p>
+ * <p>
  * Jar file declared dependent extensions through the extension-list
  * attribute. The extension-list contains a list of keys used to
  * fetch the other attributes describing the required extension.
  * If key is the extension key declared in the extension-list
  * attribute, the following describing attribute can be found in
- * the manifest :
- * key-Extension-Name:  (Specification package name)
- * key-Specification-Version: (Specification-Version)
- * key-Implementation-Version: (Implementation-Version)
- * key-Implementation-Vendor-Id: (Imlementation-Vendor-Id)
- * key-Implementation-Version: (Implementation version)
- * key-Implementation-URL: (URL to download the requested extension)
+ * the manifest:
+ * <ul>
+ * <li>key-Extension-Name:  (Specification package name)</li>
+ * <li>key-Specification-Version: (Specification-Version)</li>
+ * <li>key-Implementation-Version: (Implementation-Version)</li>
+ * <li>key-Implementation-Vendor-Id: (Imlementation-Vendor-Id)</li>
+ * <li>key-Implementation-Version: (Implementation version)</li>
+ * <li>key-Implementation-URL: (URL to download the requested extension)</li>
+ * </ul>
  * <p>
  * This class also maintain versioning consistency of installed
  * extensions dependencies declared in jar file manifest.
- * </p>
  *
  * @deprecated this class will be removed in a future release.
  * @author  Jerome Dochez
@@ -76,10 +76,9 @@
     private static Vector<ExtensionInstallationProvider> providers;
 
     /**
-     * <p>
      * Register an ExtensionInstallationProvider. The provider is responsible
      * for handling the installation (upgrade) of any missing extensions.
-     * </p>
+     *
      * @param eip ExtensionInstallationProvider implementation
      */
     public synchronized static void addExtensionInstallationProvider
@@ -92,9 +91,7 @@
     }
 
     /**
-     * <p>
      * Unregister a previously installed installation provider
-     * </p>
      */
     public synchronized static void removeExtensionInstallationProvider
         (ExtensionInstallationProvider eip)
@@ -103,10 +100,9 @@
     }
 
     /**
-     * <p>
      * Checks the dependencies of the jar file on installed extension.
-     * </p>
-     * @param jarFile containing the attriutes declaring the dependencies
+     *
+     * @param jar containing the attributes declaring the dependencies
      */
     public static boolean checkExtensionsDependencies(JarFile jar)
     {
@@ -182,9 +178,8 @@
 
 
     /*
-     * <p>
      * Check that a particular dependency on an extension is satisfied.
-     * </p>
+     *
      * @param extensionName is the key used for the attributes in the manifest
      * @param attr is the attributes of the manifest file
      *
@@ -204,10 +199,9 @@
     }
 
     /*
-     * <p>
      * Check if a particular extension is part of the currently installed
      * extensions.
-     * </p>
+     *
      * @param extensionName is the key for the attributes in the manifest
      * @param attr is the attributes of the manifest
      *
@@ -262,11 +256,9 @@
     }
 
     /*
-     * <p>
      * Check if the requested extension described by the attributes
      * in the manifest under the key extensionName is compatible with
      * the jar file.
-     * </p>
      *
      * @param extensionName key in the attribute list
      * @param attr manifest file attributes
@@ -337,10 +329,8 @@
     }
 
     /*
-     * <p>
      * An required extension is missing, if an ExtensionInstallationProvider is
      * registered, delegate the installation of that particular extension to it.
-     * </p>
      *
      * @param reqInfo Missing extension information
      * @param instInfo Older installed version information
@@ -380,11 +370,9 @@
     }
 
     /**
-     * <p>
      * Checks if the extension, that is specified in the extension-list in
      * the applet jar manifest, is already installed (i.e. exists in the
      * extension directory).
-     * </p>
      *
      * @param extensionName extension name in the extension-list
      *
@@ -428,9 +416,7 @@
     }
 
     /**
-     * <p>
      * @return the java.ext.dirs property as a list of directory
-     * </p>
      */
     private static File[] getExtDirs() {
         String s = java.security.AccessController.doPrivileged(
@@ -456,9 +442,8 @@
     }
 
     /*
-     * <p>
      * Scan the directories and return all files installed in those
-     * </p>
+     *
      * @param dirs list of directories to scan
      *
      * @return the list of files installed in all the directories
@@ -483,9 +468,7 @@
     }
 
     /*
-     * <p>
      * @return the list of installed extensions jar files
-     * </p>
      */
     private File[] getInstalledExtensions() throws IOException {
         return AccessController.doPrivileged(
@@ -503,9 +486,7 @@
     }
 
     /*
-     * <p>
      * Add the newly installed jar file to the extension class loader.
-     * </p>
      *
      * @param cl the current installed extension class loader
      *
--- a/src/java.base/share/classes/sun/misc/ExtensionInfo.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/ExtensionInfo.java	Thu May 21 16:20:20 2015 -0700
@@ -45,9 +45,7 @@
 public class ExtensionInfo {
 
     /**
-     * <p>
      * public static values returned by the isCompatible method
-     * </p>
      */
     public static final int COMPATIBLE = 0;
     public static final int REQUIRE_SPECIFICATION_UPGRADE = 1;
@@ -56,10 +54,8 @@
     public static final int INCOMPATIBLE = 4;
 
     /**
-     * <p>
      * attributes fully describer an extension. The underlying described
      * extension may be installed and requested.
-     * <p>
      */
     public String title;
     public String name;
@@ -76,15 +72,12 @@
 
 
     /**
-     * <p>
      * Create a new uninitialized extension information object
-     * </p>
      */
     public ExtensionInfo() {
     }
 
     /**
-     * <p>
      * Create and initialize an extension information object.
      * The initialization uses the attributes passed as being
      * the content of a manifest file to load the extension
@@ -93,7 +86,7 @@
      * extension they may depend on, the extension key parameter
      * is prepanded to the attribute name to make the key used
      * to retrieve the attribute from the manifest file
-     * <p>
+     *
      * @param extensionKey unique extension key in the manifest
      * @param attr Attributes of a manifest file
      */
@@ -149,13 +142,11 @@
     }
 
     /**
-     * <p>
      * @return true if the extension described by this extension information
      * is compatible with the extension described by the extension
      * information passed as a parameter
-     * </p>
      *
-     * @param the requested extension information to compare to
+     * @param ei the requested extension information to compare to
      */
     public int isCompatibleWith(ExtensionInfo ei) {
 
@@ -204,10 +195,8 @@
     }
 
     /**
-     * <p>
      * helper method to print sensible information on the undelying described
      * extension
-     * </p>
      */
     public String toString() {
         return "Extension : title(" + title + "), name(" + name + "), spec vendor(" +
@@ -217,15 +206,15 @@
     }
 
     /*
-     * <p>
      * helper method to compare two versions.
      * version are in the x.y.z.t pattern.
-     * </p>
+     *
      * @param source version to compare to
      * @param target version used to compare against
-     * @return < 0 if source < version
-     *         > 0 if source > version
-     *         = 0 if source = version
+     * @return <pre>{@code
+     *   < 0 if source < version
+     *   > 0 if source > version
+     *   = 0 if source = version}</pre>
      */
     private int compareExtensionVersion(String source, String target)
         throws NumberFormatException
@@ -238,15 +227,15 @@
 
 
     /*
-     * <p>
      * helper method to compare two versions.
      * version are in the x.y.z.t pattern.
-     * </p>
+     *
      * @param source version to compare to
      * @param target version used to compare against
-     * @return < 0 if source < version
-     *         > 0 if source > version
-     *         = 0 if source = version
+     * @return <pre>{@code
+     *   < 0 if source < version
+     *   > 0 if source > version
+     *   = 0 if source = version}</pre>
      */
     private int strictCompareExtensionVersion(String source, String target)
         throws NumberFormatException
--- a/src/java.base/share/classes/sun/misc/FDBigInteger.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/FDBigInteger.java	Thu May 21 16:20:20 2015 -0700
@@ -384,8 +384,8 @@
      * Retrieves the normalization bias of the <code>FDBigIntger</code>. The
      * normalization bias is a left shift such that after it the highest word
      * of the value will have the 4 highest bits equal to zero:
-     * <code>(highestWord & 0xf0000000) == 0</code>, but the next bit should be 1
-     * <code>(highestWord & 0x08000000) != 0</code>.
+     * {@code (highestWord & 0xf0000000) == 0}, but the next bit should be 1
+     * {@code (highestWord & 0x08000000) != 0}.
      *
      * @return The normalization bias.
      */
@@ -546,9 +546,9 @@
      * We assume that S has been normalized, as above, and that
      * "this" has been left-shifted accordingly.
      * Also assumed, of course, is that the result, q, can be expressed
-     * as an integer, 0 <= q < 10.
+     * as an integer, {@code 0 <= q < 10}.
      *
-     * @param The divisor of this <code>FDBigInteger</code>.
+     * @param S The divisor of this <code>FDBigInteger</code>.
      * @return <code>q = (int)(this / S)</code>.
      */
     /*@
@@ -685,7 +685,7 @@
      *
      * @param p5 The exponent of the power-of-five factor.
      * @param p2 The exponent of the power-of-two factor.
-     * @return
+     * @return The multiplication result.
      */
     /*@
      @ requires this.value() == 0 || p5 == 0 && p2 == 0;
@@ -931,11 +931,11 @@
     /**
      * Compares the parameter with this <code>FDBigInteger</code>. Returns an
      * integer accordingly as:
-     * <pre>
-     * >0: this > other
-     *  0: this == other
-     * <0: this < other
-     * </pre>
+     * <pre>{@code
+     * > 0: this > other
+     *   0: this == other
+     * < 0: this < other
+     * }</pre>
      *
      * @param other The <code>FDBigInteger</code> to compare.
      * @return A negative value, zero, or a positive value according to the
@@ -974,11 +974,11 @@
      * Compares this <code>FDBigInteger</code> with
      * <code>5<sup>p5</sup> * 2<sup>p2</sup></code>.
      * Returns an integer accordingly as:
-     * <pre>
-     * >0: this > other
-     *  0: this == other
-     * <0: this < other
-     * </pre>
+     * <pre>{@code
+     * > 0: this > other
+     *   0: this == other
+     * < 0: this < other
+     * }</pre>
      * @param p5 The exponent of the power-of-five factor.
      * @param p2 The exponent of the power-of-two factor.
      * @return A negative value, zero, or a positive value according to the
@@ -1011,11 +1011,11 @@
     /**
      * Compares this <code>FDBigInteger</code> with <code>x + y</code>. Returns a
      * value according to the comparison as:
-     * <pre>
+     * <pre>{@code
      * -1: this <  x + y
      *  0: this == x + y
      *  1: this >  x + y
-     * </pre>
+     * }</pre>
      * @param x The first addend of the sum to compare.
      * @param y The second addend of the sum to compare.
      * @return -1, 0, or 1 according to the result of the comparison.
--- a/src/java.base/share/classes/sun/misc/FloatingDecimal.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/FloatingDecimal.java	Thu May 21 16:20:20 2015 -0700
@@ -154,7 +154,7 @@
 
         /**
          * Indicates the sign of the value.
-         * @return <code>value < 0.0</code>.
+         * @return {@code value < 0.0}.
          */
         public boolean isNegative();
 
--- a/src/java.base/share/classes/sun/misc/IOUtils.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/IOUtils.java	Thu May 21 16:20:20 2015 -0700
@@ -39,7 +39,7 @@
     /**
      * Read up to <code>length</code> of bytes from <code>in</code>
      * until EOF is detected.
-     * @param in input stream, must not be null
+     * @param is input stream, must not be null
      * @param length number of bytes to read, -1 or Integer.MAX_VALUE means
      *        read as much as possible
      * @param readAll if true, an EOFException will be thrown if not enough
--- a/src/java.base/share/classes/sun/misc/JarFilter.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/JarFilter.java	Thu May 21 16:20:20 2015 -0700
@@ -29,10 +29,8 @@
 import java.io.FilenameFilter;
 
 /**
- * <p>
  * This class checks that only jar and zip files are included in the file list.
  * This class is used in extension installation support (ExtensionDependency).
- * <p>
  *
  * @deprecated this class will be removed in a future release.
  * @author  Michael Colburn
--- a/src/java.base/share/classes/sun/misc/JavaLangAccess.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/JavaLangAccess.java	Thu May 21 16:20:20 2015 -0700
@@ -91,14 +91,14 @@
      * may be added to the delete on exit list by the application shutdown
      * hooks.
      *
-     * @params slot  the slot in the shutdown hook array, whose element
-     *               will be invoked in order during shutdown
-     * @params registerShutdownInProgress true to allow the hook
-     *               to be registered even if the shutdown is in progress.
-     * @params hook  the hook to be registered
+     * @param slot  the slot in the shutdown hook array, whose element
+     *              will be invoked in order during shutdown
+     * @param registerShutdownInProgress true to allow the hook
+     *        to be registered even if the shutdown is in progress.
+     * @param hook  the hook to be registered
      *
-     * @throw IllegalStateException if shutdown is in progress and
-     *          the slot is not valid to register.
+     * @throws IllegalStateException if shutdown is in progress and
+     *         the slot is not valid to register.
      */
     void registerShutdownHook(int slot, boolean registerShutdownInProgress, Runnable hook);
 
--- a/src/java.base/share/classes/sun/misc/Perf.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/Perf.java	Thu May 21 16:20:20 2015 -0700
@@ -67,13 +67,13 @@
      * <code>AccessController.doPrivileged(PrivilegedAction)</code>.
      * <p> Here is a suggested idiom for use of this class:
      *
-     * <blockquote><pre>
+     * <blockquote><pre>{@code
      * class MyTrustedClass {
      *   private static final Perf perf =
      *       AccessController.doPrivileged(new Perf.GetPerfAction<Perf>());
      *   ...
      * }
-     * </pre></blockquote>
+     * }</pre></blockquote>
      * <p>
      * In the presence of a security manager, the <code>MyTrustedClass</code>
      * class in the above example will need to be granted the
@@ -171,8 +171,7 @@
      * The attach mode specifies the access permissions requested for the
      * instrumentation buffer of the target virtual machine. The permitted
      * access permissions are:
-     * <p>
-     * <bl>
+     * <ul>
      * <li>"r"  - Read only access. This Java virtual machine has only
      * read access to the instrumentation buffer for the target Java
      * virtual machine.
@@ -180,7 +179,7 @@
      * write access to the instrumentation buffer for the target Java virtual
      * machine. This mode is currently not supported and is reserved for
      * future enhancements.
-     * </bl>
+     * </ul>
      *
      * @param   lvmid            an integer that uniquely identifies the
      *                           target local Java virtual machine.
--- a/src/java.base/share/classes/sun/misc/PerfCounter.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/PerfCounter.java	Thu May 21 16:20:20 2015 -0700
@@ -37,7 +37,7 @@
  * The perf counters will be created in the jvmstat perf buffer
  * that the HotSpot VM creates. The default size is 32K and thus
  * the number of counters is bounded.  You can alter the size
- * with -XX:PerfDataMemorySize=<bytes> option. If there is
+ * with {@code -XX:PerfDataMemorySize=<bytes>} option. If there is
  * insufficient memory in the jvmstat perf buffer, the C heap memory
  * will be used and thus the application will continue to run if
  * the counters added exceeds the buffer size but the counters
--- a/src/java.base/share/classes/sun/misc/PerformanceLogger.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/PerformanceLogger.java	Thu May 21 16:20:20 2015 -0700
@@ -51,10 +51,12 @@
  * <P>
  * To automatically track startup performance in an app or applet,
  * use the command-line parameter sun.perflog as follows:<BR>
+ * <pre>{@code
  *     -Dsun.perflog[=file:<filename>]
+ * }</pre>
  * <BR>
  * where simply using the parameter with no value will enable output
- * to the console and a value of "file:<filename>" will cause
+ * to the console and a value of "{@code file:<filename>}" will cause
  * that given filename to be created and used for all output.
  * <P>
  * By default, times are measured using System.currentTimeMillis().  To use
--- a/src/java.base/share/classes/sun/misc/Resource.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/Resource.java	Thu May 21 16:20:20 2015 -0700
@@ -154,7 +154,8 @@
 
     /**
      * Returns the Resource data as a ByteBuffer, but only if the input stream
-     * was implemented on top of a ByteBuffer. Return <tt>null</tt> otherwise.
+     * was implemented on top of a ByteBuffer. Return {@code null} otherwise.
+     * @return Resource data or null.
      */
     public ByteBuffer getByteBuffer() throws IOException {
         InputStream in = cachedInputStream();
--- a/src/java.base/share/classes/sun/misc/Signal.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/Signal.java	Thu May 21 16:20:20 2015 -0700
@@ -50,7 +50,7 @@
  * Signal objects are created based on their names. For example:
  * <blockquote><pre>
  * new Signal("INT");
- * </blockquote></pre>
+ * </pre></blockquote>
  * constructs a signal object corresponding to <code>SIGINT</code>, which is
  * typically produced when the user presses <code>Ctrl-C</code> at the command line.
  * The <code>Signal</code> constructor throws <code>IllegalArgumentException</code>
@@ -64,7 +64,7 @@
  *     }
  * };
  * Signal.handle(new Signal("INT"), handler);
- * </blockquote></pre>
+ * </pre></blockquote>
  *
  * @author   Sheng Liang
  * @author   Bill Shannon
@@ -149,7 +149,7 @@
      *
      * @param sig a signal
      * @param handler the handler to be registered with the given signal.
-     * @result the old handler
+     * @return the old handler
      * @exception IllegalArgumentException the signal is in use by the VM
      * @see sun.misc.Signal#raise(Signal sig)
      * @see sun.misc.SignalHandler
--- a/src/java.base/share/classes/sun/misc/Unsafe.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/Unsafe.java	Thu May 21 16:20:20 2015 -0700
@@ -641,9 +641,9 @@
      * <li>String: any object (not just a java.lang.String)
      * <li>InterfaceMethodRef: (NYI) a method handle to invoke on that call site's arguments
      * </ul>
-     * @params hostClass context for linkage, access control, protection domain, and class loader
-     * @params data      bytes of a class file
-     * @params cpPatches where non-null entries exist, they replace corresponding CP entries in data
+     * @param hostClass context for linkage, access control, protection domain, and class loader
+     * @param data      bytes of a class file
+     * @param cpPatches where non-null entries exist, they replace corresponding CP entries in data
      */
     public native Class<?> defineAnonymousClass(Class<?> hostClass, byte[] data, Object[] cpPatches);
 
@@ -808,9 +808,9 @@
      * The system imposes a maximum of 3 samples, representing
      * averages over the last 1,  5,  and  15 minutes, respectively.
      *
-     * @params loadavg an array of double of size nelems
-     * @params nelems the number of samples to be retrieved and
-     *         must be 1 to 3.
+     * @param loadavg an array of double of size nelems
+     * @param nelems the number of samples to be retrieved and
+     *        must be 1 to 3.
      *
      * @return the number of samples actually retrieved; or -1
      *         if the load average is unobtainable.
@@ -1108,7 +1108,6 @@
      * <p>
      * 8-byte atomicity is only guaranteed on platforms on which
      * support atomic accesses to longs.
-     * <p>
      *
      * @param o Java heap object in which the value resides, if any, else
      *        null
--- a/src/java.base/share/classes/sun/misc/VM.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/VM.java	Thu May 21 16:20:20 2015 -0700
@@ -315,7 +315,7 @@
     }
 
     /*
-     * Add <tt>n</tt> to the objects pending for finalization count.
+     * Add {@code n} to the objects pending for finalization count.
      *
      * @param n an integer value to be added to the objects pending
      * for finalization count
--- a/src/java.base/share/classes/sun/misc/resources/Messages.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/resources/Messages.java	Thu May 21 16:20:20 2015 -0700
@@ -26,7 +26,7 @@
 package sun.misc.resources;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the {@code ResourceBundle}
  * for sun.misc.
  *
  * @author Michael Colburn
@@ -35,9 +35,9 @@
 public class Messages extends java.util.ListResourceBundle {
 
     /**
-     * Returns the contents of this <code>ResourceBundle</code>.
-     * <p>
-     * @return the contents of this <code>ResourceBundle</code>.
+     * Returns the contents of this {@code ResourceBundle}.
+     *
+     * @return the contents of this {@code ResourceBundle}.
      */
     public Object[][] getContents() {
         return contents;
--- a/src/java.base/share/classes/sun/misc/resources/Messages_de.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/resources/Messages_de.java	Thu May 21 16:20:20 2015 -0700
@@ -26,7 +26,7 @@
 package sun.misc.resources;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the {@code ResourceBundle}
  * for sun.misc.
  *
  * @author Michael Colburn
@@ -35,9 +35,9 @@
 public class Messages_de extends java.util.ListResourceBundle {
 
     /**
-     * Returns the contents of this <code>ResourceBundle</code>.
-     * <p>
-     * @return the contents of this <code>ResourceBundle</code>.
+     * Returns the contents of this {@code ResourceBundle}.
+     *
+     * @return the contents of this {@code ResourceBundle}.
      */
     public Object[][] getContents() {
         return contents;
--- a/src/java.base/share/classes/sun/misc/resources/Messages_es.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/resources/Messages_es.java	Thu May 21 16:20:20 2015 -0700
@@ -26,7 +26,7 @@
 package sun.misc.resources;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the {@code ResourceBundle}
  * for sun.misc.
  *
  * @author Michael Colburn
@@ -35,9 +35,9 @@
 public class Messages_es extends java.util.ListResourceBundle {
 
     /**
-     * Returns the contents of this <code>ResourceBundle</code>.
-     * <p>
-     * @return the contents of this <code>ResourceBundle</code>.
+     * Returns the contents of this {@code ResourceBundle}.
+     *
+     * @return the contents of this {@code ResourceBundle}.
      */
     public Object[][] getContents() {
         return contents;
--- a/src/java.base/share/classes/sun/misc/resources/Messages_fr.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/resources/Messages_fr.java	Thu May 21 16:20:20 2015 -0700
@@ -26,7 +26,7 @@
 package sun.misc.resources;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the {@code ResourceBundle}
  * for sun.misc.
  *
  * @author Michael Colburn
@@ -35,9 +35,9 @@
 public class Messages_fr extends java.util.ListResourceBundle {
 
     /**
-     * Returns the contents of this <code>ResourceBundle</code>.
-     * <p>
-     * @return the contents of this <code>ResourceBundle</code>.
+     * Returns the contents of this {@code ResourceBundle}.
+     *
+     * @return the contents of this {@code ResourceBundle}.
      */
     public Object[][] getContents() {
         return contents;
--- a/src/java.base/share/classes/sun/misc/resources/Messages_it.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/resources/Messages_it.java	Thu May 21 16:20:20 2015 -0700
@@ -26,7 +26,7 @@
 package sun.misc.resources;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the {@code ResourceBundle}
  * for sun.misc.
  *
  * @author Michael Colburn
@@ -35,9 +35,9 @@
 public class Messages_it extends java.util.ListResourceBundle {
 
     /**
-     * Returns the contents of this <code>ResourceBundle</code>.
-     * <p>
-     * @return the contents of this <code>ResourceBundle</code>.
+     * Returns the contents of this {@code ResourceBundle}.
+     *
+     * @return the contents of this {@code ResourceBundle}.
      */
     public Object[][] getContents() {
         return contents;
--- a/src/java.base/share/classes/sun/misc/resources/Messages_ja.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/resources/Messages_ja.java	Thu May 21 16:20:20 2015 -0700
@@ -26,7 +26,7 @@
 package sun.misc.resources;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the {@code ResourceBundle}
  * for sun.misc.
  *
  * @author Michael Colburn
@@ -35,9 +35,9 @@
 public class Messages_ja extends java.util.ListResourceBundle {
 
     /**
-     * Returns the contents of this <code>ResourceBundle</code>.
-     * <p>
-     * @return the contents of this <code>ResourceBundle</code>.
+     * Returns the contents of this {@code ResourceBundle}.
+     *
+     * @return the contents of this {@code ResourceBundle}.
      */
     public Object[][] getContents() {
         return contents;
--- a/src/java.base/share/classes/sun/misc/resources/Messages_ko.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/resources/Messages_ko.java	Thu May 21 16:20:20 2015 -0700
@@ -26,7 +26,7 @@
 package sun.misc.resources;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the {@code ResourceBundle}
  * for sun.misc.
  *
  * @author Michael Colburn
@@ -35,9 +35,9 @@
 public class Messages_ko extends java.util.ListResourceBundle {
 
     /**
-     * Returns the contents of this <code>ResourceBundle</code>.
-     * <p>
-     * @return the contents of this <code>ResourceBundle</code>.
+     * Returns the contents of this {@code ResourceBundle}.
+     *
+     * @return the contents of this {@code ResourceBundle}.
      */
     public Object[][] getContents() {
         return contents;
--- a/src/java.base/share/classes/sun/misc/resources/Messages_pt_BR.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/resources/Messages_pt_BR.java	Thu May 21 16:20:20 2015 -0700
@@ -26,7 +26,7 @@
 package sun.misc.resources;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the {@code ResourceBundle}
  * for sun.misc.
  *
  * @author Michael Colburn
@@ -35,9 +35,9 @@
 public class Messages_pt_BR extends java.util.ListResourceBundle {
 
     /**
-     * Returns the contents of this <code>ResourceBundle</code>.
-     * <p>
-     * @return the contents of this <code>ResourceBundle</code>.
+     * Returns the contents of this {@code ResourceBundle}.
+     *
+     * @return the contents of this {@code ResourceBundle}.
      */
     public Object[][] getContents() {
         return contents;
--- a/src/java.base/share/classes/sun/misc/resources/Messages_sv.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/resources/Messages_sv.java	Thu May 21 16:20:20 2015 -0700
@@ -26,7 +26,7 @@
 package sun.misc.resources;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the {@code ResourceBundle}
  * for sun.misc.
  *
  * @author Michael Colburn
@@ -35,9 +35,9 @@
 public class Messages_sv extends java.util.ListResourceBundle {
 
     /**
-     * Returns the contents of this <code>ResourceBundle</code>.
-     * <p>
-     * @return the contents of this <code>ResourceBundle</code>.
+     * Returns the contents of this {@code ResourceBundle}.
+     *
+     * @return the contents of this {@code ResourceBundle}.
      */
     public Object[][] getContents() {
         return contents;
--- a/src/java.base/share/classes/sun/misc/resources/Messages_zh_CN.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/resources/Messages_zh_CN.java	Thu May 21 16:20:20 2015 -0700
@@ -26,7 +26,7 @@
 package sun.misc.resources;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the {@code ResourceBundle}
  * for sun.misc.
  *
  * @author Michael Colburn
@@ -35,9 +35,9 @@
 public class Messages_zh_CN extends java.util.ListResourceBundle {
 
     /**
-     * Returns the contents of this <code>ResourceBundle</code>.
-     * <p>
-     * @return the contents of this <code>ResourceBundle</code>.
+     * Returns the contents of this {@code ResourceBundle}.
+     *
+     * @return the contents of this {@code ResourceBundle}.
      */
     public Object[][] getContents() {
         return contents;
--- a/src/java.base/share/classes/sun/misc/resources/Messages_zh_TW.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/misc/resources/Messages_zh_TW.java	Thu May 21 16:20:20 2015 -0700
@@ -26,7 +26,7 @@
 package sun.misc.resources;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the {@code ResourceBundle}
  * for sun.misc.
  *
  * @author Michael Colburn
@@ -35,9 +35,9 @@
 public class Messages_zh_TW extends java.util.ListResourceBundle {
 
     /**
-     * Returns the contents of this <code>ResourceBundle</code>.
-     * <p>
-     * @return the contents of this <code>ResourceBundle</code>.
+     * Returns the contents of this {@code ResourceBundle}.
+     *
+     * @return the contents of this {@code ResourceBundle}.
      */
     public Object[][] getContents() {
         return contents;
--- a/src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Thu May 21 16:20:20 2015 -0700
@@ -983,7 +983,7 @@
         SocketPermission p = URLtoSocketPermission(this.url);
         if (p != null) {
             try {
-                AccessController.doPrivileged(
+                AccessController.doPrivilegedWithCombiner(
                     new PrivilegedExceptionAction<>() {
                         public Void run() throws IOException {
                             plainConnect0();
@@ -1244,7 +1244,7 @@
 
         if (p != null) {
             try {
-                return AccessController.doPrivileged(
+                return AccessController.doPrivilegedWithCombiner(
                     new PrivilegedExceptionAction<>() {
                         public OutputStream run() throws IOException {
                             return getOutputStream0();
@@ -1422,7 +1422,7 @@
 
         if (p != null) {
             try {
-                return AccessController.doPrivileged(
+                return AccessController.doPrivilegedWithCombiner(
                     new PrivilegedExceptionAction<>() {
                         public InputStream run() throws IOException {
                             return getInputStream0();
@@ -2565,7 +2565,7 @@
 
         if (p != null) {
             try {
-                return AccessController.doPrivileged(
+                return AccessController.doPrivilegedWithCombiner(
                     new PrivilegedExceptionAction<>() {
                         public Boolean run() throws IOException {
                             return followRedirect0(loc, stat, locUrl0);
--- a/src/java.base/share/classes/sun/nio/cs/HKSCS.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/nio/cs/HKSCS.java	Thu May 21 16:20:20 2015 -0700
@@ -378,7 +378,6 @@
                             dst[dp++] = repl[1];
                         continue;
                     }
-                    sp++;
                 }
                 if (bb > MAX_SINGLEBYTE) {        // DoubleByte
                     dst[dp++] = (byte)(bb >> 8);
--- a/src/java.base/share/classes/sun/nio/cs/Surrogate.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/nio/cs/Surrogate.java	Thu May 21 16:20:20 2015 -0700
@@ -175,10 +175,10 @@
          * @param  in   The source buffer, from which one more character
          *              will be consumed if c is a high surrogate
          *
-         * @returns  Either a parsed UCS-4 character, in which case the isPair()
-         *           and increment() methods will return meaningful values, or
-         *           -1, in which case error() will return a descriptive result
-         *           object
+         * @return  Either a parsed UCS-4 character, in which case the isPair()
+         *          and increment() methods will return meaningful values, or
+         *          -1, in which case error() will return a descriptive result
+         *          object
          */
         public int parse(char c, CharBuffer in) {
             if (Character.isHighSurrogate(c)) {
@@ -216,10 +216,10 @@
          * @param  ip   The input index
          * @param  il   The input limit
          *
-         * @returns  Either a parsed UCS-4 character, in which case the isPair()
-         *           and increment() methods will return meaningful values, or
-         *           -1, in which case error() will return a descriptive result
-         *           object
+         * @return  Either a parsed UCS-4 character, in which case the isPair()
+         *          and increment() methods will return meaningful values, or
+         *          -1, in which case error() will return a descriptive result
+         *          object
          */
         public int parse(char c, char[] ia, int ip, int il) {
             assert (ia[ip] == c);
@@ -280,9 +280,9 @@
          * @param  dst  The destination buffer, to which one or two UTF-16
          *              characters will be written
          *
-         * @returns  Either a positive count of the number of UTF-16 characters
-         *           written to the destination buffer, or -1, in which case
-         *           error() will return a descriptive result object
+         * @return  Either a positive count of the number of UTF-16 characters
+         *          written to the destination buffer, or -1, in which case
+         *          error() will return a descriptive result object
          */
         public int generate(int uc, int len, CharBuffer dst) {
             if (Character.isBmpCodePoint(uc)) {
@@ -325,9 +325,9 @@
          * @param  dp   The destination position
          * @param  dl   The destination limit
          *
-         * @returns  Either a positive count of the number of UTF-16 characters
-         *           written to the destination buffer, or -1, in which case
-         *           error() will return a descriptive result object
+         * @return  Either a positive count of the number of UTF-16 characters
+         *          written to the destination buffer, or -1, in which case
+         *          error() will return a descriptive result object
          */
         public int generate(int uc, int len, char[] da, int dp, int dl) {
             if (Character.isBmpCodePoint(uc)) {
--- a/src/java.base/share/classes/sun/security/x509/AVA.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/AVA.java	Thu May 21 16:20:20 2015 -0700
@@ -454,7 +454,7 @@
             if (embeddedHex.size() > 0) {
                 // add space(s) before embedded hex bytes
                 for (int i = 0; i < spaceCount; i++) {
-                    temp.append(" ");
+                    temp.append(' ');
                 }
                 spaceCount = 0;
 
@@ -472,7 +472,7 @@
             } else {
                 // add space(s)
                 for (int i = 0; i < spaceCount; i++) {
-                    temp.append(" ");
+                    temp.append(' ');
                 }
                 spaceCount = 0;
                 temp.append((char)c);
@@ -853,7 +853,7 @@
                 }
                 sbuffer.append(c);
             }
-            typeAndValue.append(sbuffer.toString());
+            typeAndValue.append(sbuffer);
         }
         return typeAndValue.toString();
     }
@@ -1039,7 +1039,7 @@
         StringBuilder   retval = new StringBuilder(40);
 
         retval.append(keyword);
-        retval.append("=");
+        retval.append('=');
 
         try {
             String valStr = value.getAsString();
@@ -1147,9 +1147,11 @@
                 // Emit the string ... quote it if needed
                 // if string is already quoted, don't re-quote
                 if (!alreadyQuoted && quoteNeeded) {
-                    retval.append("\"" + sbuffer.toString() + "\"");
+                    retval.append('\"')
+                        .append(sbuffer)
+                        .append('\"');
                 } else {
-                    retval.append(sbuffer.toString());
+                    retval.append(sbuffer);
                 }
             }
         } catch (IOException e) {
--- a/src/java.base/share/classes/sun/security/x509/AuthorityKeyIdentifierExtension.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/AuthorityKeyIdentifierExtension.java	Thu May 21 16:20:20 2015 -0700
@@ -196,17 +196,20 @@
      * Return the object as a string.
      */
     public String toString() {
-        String s = super.toString() + "AuthorityKeyIdentifier [\n";
+        StringBuilder sb = new StringBuilder();
+        sb.append(super.toString())
+            .append("AuthorityKeyIdentifier [\n");
         if (id != null) {
-            s += id.toString();     // id already has a newline
+            sb.append(id);       // id already has a newline
         }
         if (names != null) {
-            s += names.toString() + "\n";
+            sb.append(names).append('\n');
         }
         if (serialNum != null) {
-            s += serialNum.toString() + "\n";
+            sb.append(serialNum).append('\n');
         }
-        return (s + "]\n");
+        sb.append("]\n");
+        return sb.toString();
     }
 
     /**
--- a/src/java.base/share/classes/sun/security/x509/BasicConstraintsExtension.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/BasicConstraintsExtension.java	Thu May 21 16:20:20 2015 -0700
@@ -171,15 +171,11 @@
       * Return user readable form of extension.
       */
      public String toString() {
-         String s = super.toString() + "BasicConstraints:[\n";
-
-         s += ((ca) ? ("  CA:true") : ("  CA:false")) + "\n";
-         if (pathLen >= 0) {
-             s += "  PathLen:" + pathLen + "\n";
-         } else {
-             s += "  PathLen: undefined\n";
-         }
-         return (s + "]\n");
+         return super.toString() +
+             "BasicConstraints:[\n  CA:" + ca +
+             "\n  PathLen:" +
+             ((pathLen >= 0) ? String.valueOf(pathLen) : " undefined") +
+             "\n]\n";
      }
 
      /**
--- a/src/java.base/share/classes/sun/security/x509/CRLDistributionPointsExtension.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/CRLDistributionPointsExtension.java	Thu May 21 16:20:20 2015 -0700
@@ -231,8 +231,8 @@
             distributionPoints = (List<DistributionPoint>)obj;
         } else {
             throw new IOException("Attribute name [" + name +
-                                "] not recognized by " +
-                                "CertAttrSet:" + extensionName + ".");
+                                  "] not recognized by " +
+                                  "CertAttrSet:" + extensionName + '.');
         }
         encodeThis();
     }
@@ -245,8 +245,8 @@
             return distributionPoints;
         } else {
             throw new IOException("Attribute name [" + name +
-                                "] not recognized by " +
-                                "CertAttrSet:" + extensionName + ".");
+                                  "] not recognized by " +
+                                  "CertAttrSet:" + extensionName + '.');
         }
     }
 
--- a/src/java.base/share/classes/sun/security/x509/CRLNumberExtension.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/CRLNumberExtension.java	Thu May 21 16:20:20 2015 -0700
@@ -146,8 +146,8 @@
             }
             crlNumber = (BigInteger)obj;
         } else {
-          throw new IOException("Attribute name not recognized by"
-                                + " CertAttrSet:" + extensionName + ".");
+            throw new IOException("Attribute name not recognized by" +
+                                  " CertAttrSet:" + extensionName + '.');
         }
         encodeThis();
     }
@@ -172,8 +172,8 @@
         if (name.equalsIgnoreCase(NUMBER)) {
             crlNumber = null;
         } else {
-          throw new IOException("Attribute name not recognized by"
-                                + " CertAttrSet:" + extensionName + ".");
+            throw new IOException("Attribute name not recognized by" +
+                                  " CertAttrSet:" + extensionName + '.');
         }
         encodeThis();
     }
@@ -182,10 +182,15 @@
      * Returns a printable representation of the CRLNumberExtension.
      */
     public String toString() {
-        String s = super.toString() + extensionLabel + ": " +
-                   ((crlNumber == null) ? "" : Debug.toHexString(crlNumber))
-                   + "\n";
-        return (s);
+        StringBuilder sb = new StringBuilder();
+        sb.append(super.toString())
+            .append(extensionLabel)
+            .append(": ");
+        if (crlNumber != null) {
+            sb.append(Debug.toHexString(crlNumber));
+        }
+        sb.append('\n');
+        return sb.toString();
     }
 
     /**
@@ -195,7 +200,7 @@
      * @exception IOException on encoding errors.
      */
     public void encode(OutputStream out) throws IOException {
-       DerOutputStream  tmp = new DerOutputStream();
+        DerOutputStream tmp = new DerOutputStream();
         encode(out, PKIXExtensions.CRLNumber_Id, true);
     }
 
--- a/src/java.base/share/classes/sun/security/x509/CertException.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/CertException.java	Thu May 21 16:20:20 2015 -0700
@@ -158,7 +158,7 @@
      */
     public String toString()
     {
-        return "[Certificate Exception: " + getMessage() + "]";
+        return "[Certificate Exception: " + getMessage() + ']';
     }
 
     /**
@@ -168,6 +168,6 @@
     {
         return getVerfDescription()
                 + ( (moreData != null)
-                    ? ( "\n  (" + moreData + ")" ) : "" );
+                    ? ( "\n  (" + moreData + ')' ) : "" );
     }
 }
--- a/src/java.base/share/classes/sun/security/x509/CertificatePoliciesExtension.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/CertificatePoliciesExtension.java	Thu May 21 16:20:20 2015 -0700
@@ -160,10 +160,12 @@
         if (certPolicies == null) {
             return "";
         }
-        StringBuilder sb = new StringBuilder(super.toString());
-        sb.append("CertificatePolicies [\n");
+
+        StringBuilder sb = new StringBuilder();
+        sb.append(super.toString())
+            .append("CertificatePolicies [\n");
         for (PolicyInformation info : certPolicies) {
-            sb.append(info.toString());
+            sb.append(info);
         }
         sb.append("]\n");
         return sb.toString();
--- a/src/java.base/share/classes/sun/security/x509/CertificateValidity.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/CertificateValidity.java	Thu May 21 16:20:20 2015 -0700
@@ -134,8 +134,8 @@
     public String toString() {
         if (notBefore == null || notAfter == null)
             return "";
-        return ("Validity: [From: " + notBefore.toString() +
-             ",\n               To: " + notAfter.toString() + "]");
+        return "Validity: [From: " + notBefore +
+               ",\n               To: " + notAfter + ']';
     }
 
     /**
--- a/src/java.base/share/classes/sun/security/x509/DistributionPoint.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/DistributionPoint.java	Thu May 21 16:20:20 2015 -0700
@@ -380,23 +380,29 @@
      */
     public String toString() {
         StringBuilder sb = new StringBuilder();
+        sb.append("DistributionPoint:\n     ");
         if (fullName != null) {
-            sb.append("DistributionPoint:\n     " + fullName + "\n");
+            sb.append(fullName);
         }
         if (relativeName != null) {
-            sb.append("DistributionPoint:\n     " + relativeName + "\n");
+            sb.append(relativeName);
         }
+        sb.append('\n');
 
         if (reasonFlags != null) {
             sb.append("   ReasonFlags:\n");
             for (int i = 0; i < reasonFlags.length; i++) {
                 if (reasonFlags[i]) {
-                    sb.append("    " + reasonToString(i) + "\n");
+                    sb.append("    ")
+                        .append(reasonToString(i))
+                        .append('\n');
                 }
             }
         }
         if (crlIssuer != null) {
-            sb.append("   CRLIssuer:" + crlIssuer + "\n");
+            sb.append("   CRLIssuer:")
+                .append(crlIssuer)
+                .append('\n');
         }
         return sb.toString();
     }
--- a/src/java.base/share/classes/sun/security/x509/DistributionPointName.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/DistributionPointName.java	Thu May 21 16:20:20 2015 -0700
@@ -230,13 +230,13 @@
      */
     public String toString() {
         StringBuilder sb = new StringBuilder();
+        sb.append("DistributionPointName:\n     ");
         if (fullName != null) {
-            sb.append("DistributionPointName:\n     " + fullName + "\n");
-
+            sb.append(fullName);
         } else {
-            sb.append("DistributionPointName:\n     " + relativeName + "\n");
+            sb.append(relativeName);
         }
-
+        sb.append('\n');
         return sb.toString();
     }
 }
--- a/src/java.base/share/classes/sun/security/x509/EDIPartyName.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/EDIPartyName.java	Thu May 21 16:20:20 2015 -0700
@@ -209,10 +209,15 @@
      * Return the printable string.
      */
     public String toString() {
-        return ("EDIPartyName: " +
-                 ((assigner == null) ? "" :
-                   ("  nameAssigner = " + assigner + ","))
-                 + "  partyName = " + party);
+        StringBuilder sb = new StringBuilder("EDIPartyName: ");
+        if (assigner != null) {
+            sb.append("  nameAssigner = ")
+              .append(assigner)
+              .append(',');
+        }
+        sb.append("  partyName = ")
+          .append(party);
+        return sb.toString();
     }
 
     /**
--- a/src/java.base/share/classes/sun/security/x509/Extension.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/Extension.java	Thu May 21 16:20:20 2015 -0700
@@ -219,13 +219,8 @@
      * Returns the Extension in user readable form.
      */
     public String toString() {
-        String s = "ObjectId: " + extensionId.toString();
-        if (critical) {
-            s += " Criticality=true\n";
-        } else {
-            s += " Criticality=false\n";
-        }
-        return (s);
+        return "ObjectId: " + extensionId +
+                " Criticality=" + critical + '\n';
     }
 
     // Value to mix up the hash
--- a/src/java.base/share/classes/sun/security/x509/GeneralSubtree.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/GeneralSubtree.java	Thu May 21 16:20:20 2015 -0700
@@ -127,15 +127,22 @@
      * Return a printable string of the GeneralSubtree.
      */
     public String toString() {
-        String s = "\n   GeneralSubtree: [\n" +
-            "    GeneralName: " + ((name == null) ? "" : name.toString()) +
-            "\n    Minimum: " + minimum;
-            if (maximum == -1) {
-                s += "\t    Maximum: undefined";
-            } else
-                s += "\t    Maximum: " + maximum;
-            s += "    ]\n";
-        return (s);
+        StringBuilder sb = new StringBuilder();
+        sb.append("\n   GeneralSubtree: [")
+            .append("\n    GeneralName: ");
+        if (name != null) {
+            sb.append(name);
+        }
+        sb.append("\n    Minimum: ")
+            .append(minimum)
+            .append("\n    Maximum: ");
+        if (maximum == -1) {
+            sb.append("undefined");
+        } else {
+            sb.append(maximum);
+        }
+        sb.append("    ]\n");
+        return sb.toString();
     }
 
     /**
--- a/src/java.base/share/classes/sun/security/x509/GeneralSubtrees.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/GeneralSubtrees.java	Thu May 21 16:20:20 2015 -0700
@@ -124,8 +124,7 @@
      * Return a printable string of the GeneralSubtree.
      */
     public String toString() {
-        String s = "   GeneralSubtrees:\n" + trees.toString() + "\n";
-        return s;
+        return "   GeneralSubtrees:\n" + trees + '\n';
     }
 
     /**
--- a/src/java.base/share/classes/sun/security/x509/IPAddressName.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/IPAddressName.java	Thu May 21 16:20:20 2015 -0700
@@ -263,7 +263,7 @@
             if (address.length == 8) {
                 byte[] mask = new byte[4];
                 System.arraycopy(address, 4, mask, 0, 4);
-                name = name + "/" +
+                name = name + '/' +
                        InetAddress.getByAddress(mask).getHostAddress();
             }
         } else {
@@ -285,7 +285,7 @@
                     if (!ba.get(i))
                         break;
                 }
-                name = name + "/" + i;
+                name = name + '/' + i;
                 // Verify remaining bits 0
                 for (; i < 16*8; i++) {
                     if (ba.get(i)) {
--- a/src/java.base/share/classes/sun/security/x509/IssuerAlternativeNameExtension.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/IssuerAlternativeNameExtension.java	Thu May 21 16:20:20 2015 -0700
@@ -140,17 +140,20 @@
      * Returns a printable representation of the IssuerAlternativeName.
      */
     public String toString() {
-
-        String result = super.toString() + "IssuerAlternativeName [\n";
-        if(names == null) {
-            result += "  null\n";
+        StringBuilder sb = new StringBuilder();
+        sb.append(super.toString())
+            .append("IssuerAlternativeName [\n");
+        if (names == null) {
+            sb.append("  null\n");
         } else {
-            for(GeneralName name: names.names()) {
-                result += "  "+name+"\n";
+            for (GeneralName name : names.names()) {
+                sb.append("  ")
+                    .append(name)
+                    .append('\n');
             }
         }
-        result += "]\n";
-        return result;
+        sb.append("]\n");
+        return sb.toString();
     }
 
     /**
--- a/src/java.base/share/classes/sun/security/x509/IssuingDistributionPointExtension.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/IssuingDistributionPointExtension.java	Thu May 21 16:20:20 2015 -0700
@@ -441,9 +441,9 @@
      * Returns the extension as user readable string.
      */
     public String toString() {
-
-        StringBuilder sb = new StringBuilder(super.toString());
-        sb.append("IssuingDistributionPoint [\n  ");
+        StringBuilder sb = new StringBuilder();
+        sb.append(super.toString())
+            .append("IssuingDistributionPoint [\n  ");
 
         if (distributionPoint != null) {
             sb.append(distributionPoint);
@@ -453,23 +453,18 @@
             sb.append(revocationReasons);
         }
 
-        sb.append((hasOnlyUserCerts)
-                ? ("  Only contains user certs: true")
-                : ("  Only contains user certs: false")).append("\n");
-
-        sb.append((hasOnlyCACerts)
-                ? ("  Only contains CA certs: true")
-                : ("  Only contains CA certs: false")).append("\n");
-
-        sb.append((hasOnlyAttributeCerts)
-                ? ("  Only contains attribute certs: true")
-                : ("  Only contains attribute certs: false")).append("\n");
-
-        sb.append((isIndirectCRL)
-                ? ("  Indirect CRL: true")
-                : ("  Indirect CRL: false")).append("\n");
-
-        sb.append("]\n");
+        sb.append("  Only contains user certs: ")
+            .append(hasOnlyUserCerts)
+            .append('\n')
+            .append("  Only contains CA certs: ")
+            .append(hasOnlyCACerts)
+            .append('\n')
+            .append("  Only contains attribute certs: ")
+            .append(hasOnlyAttributeCerts)
+            .append('\n')
+            .append("  Indirect CRL: ")
+            .append(isIndirectCRL)
+            .append("\n]\n");
 
         return sb.toString();
     }
--- a/src/java.base/share/classes/sun/security/x509/NameConstraintsExtension.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/NameConstraintsExtension.java	Thu May 21 16:20:20 2015 -0700
@@ -214,12 +214,19 @@
      * Return the printable string.
      */
     public String toString() {
-        return (super.toString() + "NameConstraints: [" +
-                ((permitted == null) ? "" :
-                     ("\n    Permitted:" + permitted.toString())) +
-                ((excluded == null) ? "" :
-                     ("\n    Excluded:" + excluded.toString()))
-                + "   ]\n");
+        StringBuilder sb = new StringBuilder();
+        sb.append(super.toString())
+            .append("NameConstraints: [");
+        if (permitted != null) {
+            sb.append("\n    Permitted:")
+                .append(permitted);
+        }
+        if (excluded != null) {
+            sb.append("\n    Excluded:")
+                .append(excluded);
+        }
+        sb.append("   ]\n");
+        return sb.toString();
     }
 
     /**
--- a/src/java.base/share/classes/sun/security/x509/PolicyConstraintsExtension.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/PolicyConstraintsExtension.java	Thu May 21 16:20:20 2015 -0700
@@ -175,19 +175,24 @@
      * Return the extension as user readable string.
      */
     public String toString() {
-        String s;
-        s = super.toString() + "PolicyConstraints: [" + "  Require: ";
-        if (require == -1)
-            s += "unspecified;";
-        else
-            s += require + ";";
-        s += "\tInhibit: ";
-        if (inhibit == -1)
-            s += "unspecified";
-        else
-            s += inhibit;
-        s += " ]\n";
-        return s;
+        StringBuilder sb = new StringBuilder();
+        sb.append(super.toString())
+            .append("PolicyConstraints: [")
+            .append("  Require: ");
+        if (require == -1) {
+            sb.append("unspecified;");
+        } else {
+            sb.append(require)
+                .append(';');
+        }
+        sb.append("\tInhibit: ");
+        if (inhibit == -1) {
+            sb.append("unspecified");
+        } else {
+            sb.append(inhibit);
+        }
+        sb.append(" ]\n");
+        return sb.toString();
     }
 
     /**
--- a/src/java.base/share/classes/sun/security/x509/PolicyInformation.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/PolicyInformation.java	Thu May 21 16:20:20 2015 -0700
@@ -258,9 +258,7 @@
      * Return a printable representation of the PolicyInformation.
      */
     public String toString() {
-        StringBuilder s = new StringBuilder("  [" + policyIdentifier.toString());
-        s.append(policyQualifiers + "  ]\n");
-        return s.toString();
+        return "  [" + policyIdentifier + policyQualifiers + "  ]\n";
     }
 
     /**
--- a/src/java.base/share/classes/sun/security/x509/PrivateKeyUsageExtension.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/PrivateKeyUsageExtension.java	Thu May 21 16:20:20 2015 -0700
@@ -175,11 +175,22 @@
      * Return the printable string.
      */
     public String toString() {
-        return(super.toString() +
-                "PrivateKeyUsage: [\n" +
-                ((notBefore == null) ? "" : "From: " + notBefore.toString() + ", ")
-                + ((notAfter == null) ? "" : "To: " + notAfter.toString())
-                + "]\n");
+        StringBuilder sb = new StringBuilder();
+        sb.append(super.toString())
+            .append("PrivateKeyUsage: [\n");
+        if (notBefore != null) {
+            sb.append("From: ")
+                .append(notBefore);
+            if (notAfter != null) {
+                sb.append(", ");
+            }
+        }
+        if (notAfter != null) {
+            sb.append("To: ")
+                .append(notAfter);
+        }
+        sb.append("]\n");
+        return sb.toString();
     }
 
     /**
--- a/src/java.base/share/classes/sun/security/x509/RDN.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/RDN.java	Thu May 21 16:20:20 2015 -0700
@@ -348,14 +348,11 @@
             return assertion[0].toString();
         }
 
-        StringBuilder sb = new StringBuilder();
+        StringJoiner sj = new StringJoiner(" + ");
         for (int i = 0; i < assertion.length; i++) {
-            if (i != 0) {
-                sb.append(" + ");
-            }
-            sb.append(assertion[i].toString());
+            sj.add(assertion[i].toString());
         }
-        return sb.toString();
+        return sj.toString();
     }
 
     /*
@@ -376,14 +373,11 @@
             return assertion[0].toRFC1779String(oidMap);
         }
 
-        StringBuilder sb = new StringBuilder();
+        StringJoiner sj = new StringJoiner(" + ");
         for (int i = 0; i < assertion.length; i++) {
-            if (i != 0) {
-                sb.append(" + ");
-            }
-            sb.append(assertion[i].toRFC1779String(oidMap));
+            sj.add(assertion[i].toRFC1779String(oidMap));
         }
-        return sb.toString();
+        return sj.toString();
     }
 
     /*
--- a/src/java.base/share/classes/sun/security/x509/SerialNumber.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/SerialNumber.java	Thu May 21 16:20:20 2015 -0700
@@ -101,7 +101,7 @@
      * Return the SerialNumber as user readable string.
      */
     public String toString() {
-        return ("SerialNumber: [" + Debug.toHexString(serialNum) + "]");
+        return "SerialNumber: [" + Debug.toHexString(serialNum) + ']';
     }
 
     /**
--- a/src/java.base/share/classes/sun/security/x509/SubjectInfoAccessExtension.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/SubjectInfoAccessExtension.java	Thu May 21 16:20:20 2015 -0700
@@ -238,8 +238,8 @@
      * Return the extension as user readable string.
      */
     public String toString() {
-        return super.toString() + "SubjectInfoAccess [\n  "
-               + accessDescriptions + "\n]\n";
+        return super.toString() +
+            "SubjectInfoAccess [\n  " + accessDescriptions + "\n]\n";
     }
 
 }
--- a/src/java.base/share/classes/sun/security/x509/SubjectKeyIdentifierExtension.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/SubjectKeyIdentifierExtension.java	Thu May 21 16:20:20 2015 -0700
@@ -115,8 +115,8 @@
      * Returns a printable representation.
      */
     public String toString() {
-        return super.toString() + "SubjectKeyIdentifier [\n"
-                + String.valueOf(id) + "]\n";
+        return super.toString() +
+            "SubjectKeyIdentifier [\n" + id + "]\n";
     }
 
     /**
--- a/src/java.base/share/classes/sun/security/x509/X500Name.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/X500Name.java	Thu May 21 16:20:20 2015 -0700
@@ -31,6 +31,7 @@
 import java.security.AccessController;
 import java.security.Principal;
 import java.util.*;
+import java.util.StringJoiner;
 
 import sun.security.util.*;
 import javax.security.auth.x500.X500Principal;
@@ -689,14 +690,11 @@
          * The encodings of adjoining RelativeDistinguishedNames are separated
          * by a comma character (',' ASCII 44).
          */
-        StringBuilder fullname = new StringBuilder(48);
+        StringJoiner sj = new StringJoiner(",");
         for (int i = names.length - 1; i >= 0; i--) {
-            if (i < names.length - 1) {
-                fullname.append(',');
-            }
-            fullname.append(names[i].toRFC2253String(oidMap));
+            sj.add(names[i].toRFC2253String(oidMap));
         }
-        return fullname.toString();
+        return sj.toString();
     }
 
     public String getRFC2253CanonicalName() {
@@ -722,14 +720,11 @@
          * The encodings of adjoining RelativeDistinguishedNames are separated
          * by a comma character (',' ASCII 44).
          */
-        StringBuilder fullname = new StringBuilder(48);
+        StringJoiner sj = new StringJoiner(",");
         for (int i = names.length - 1; i >= 0; i--) {
-            if (i < names.length - 1) {
-                fullname.append(',');
-            }
-            fullname.append(names[i].toRFC2253String(true));
+            sj.add(names[i].toRFC2253String(true));
         }
-        canonicalDn = fullname.toString();
+        canonicalDn = sj.toString();
         return canonicalDn;
     }
 
@@ -1064,16 +1059,16 @@
             return;
         }
 
-        StringBuilder sb = new StringBuilder(48);
-        if (names != null) {
-            for (int i = names.length - 1; i >= 0; i--) {
-                if (i != names.length - 1) {
-                    sb.append(", ");
-                }
-                sb.append(names[i].toString());
-            }
+        if (names == null) {
+            dn = "";
+            return;
         }
-        dn = sb.toString();
+
+        StringJoiner sj = new StringJoiner(", ");
+        for (int i = names.length - 1; i >= 0; i--) {
+            sj.add(names[i].toString());
+        }
+        dn = sj.toString();
     }
 
     /*
@@ -1090,16 +1085,15 @@
             return names[0].toRFC1779String(oidMap);
         }
 
-        StringBuilder sb = new StringBuilder(48);
-        if (names != null) {
-            for (int i = names.length - 1; i >= 0; i--) {
-                if (i != names.length - 1) {
-                    sb.append(", ");
-                }
-                sb.append(names[i].toRFC1779String(oidMap));
-            }
+        if (names == null) {
+            return "";
         }
-        return sb.toString();
+
+        StringJoiner sj = new StringJoiner(", ");
+        for (int i = names.length - 1; i >= 0; i--) {
+            sj.add(names[i].toRFC1779String(oidMap));
+        }
+        return sj.toString();
     }
 
     /****************************************************************/
--- a/src/java.base/share/classes/sun/security/x509/X509CRLEntryImpl.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/X509CRLEntryImpl.java	Thu May 21 16:20:20 2015 -0700
@@ -291,40 +291,47 @@
     public String toString() {
         StringBuilder sb = new StringBuilder();
 
-        sb.append(serialNumber.toString());
-        sb.append("  On: " + revocationDate.toString());
+        sb.append(serialNumber)
+            .append("  On: ")
+            .append(revocationDate);
         if (certIssuer != null) {
-            sb.append("\n    Certificate issuer: " + certIssuer);
+            sb.append("\n    Certificate issuer: ")
+                .append(certIssuer);
         }
         if (extensions != null) {
             Collection<Extension> allEntryExts = extensions.getAllExtensions();
             Extension[] exts = allEntryExts.toArray(new Extension[0]);
 
-            sb.append("\n    CRL Entry Extensions: " + exts.length);
+            sb.append("\n    CRL Entry Extensions: ")
+                .append(exts.length);
             for (int i = 0; i < exts.length; i++) {
-                sb.append("\n    [" + (i+1) + "]: ");
+                sb.append("\n    [")
+                    .append(i+1)
+                    .append("]: ");
                 Extension ext = exts[i];
                 try {
                     if (OIDMap.getClass(ext.getExtensionId()) == null) {
-                        sb.append(ext.toString());
+                        sb.append(ext);
                         byte[] extValue = ext.getExtensionValue();
                         if (extValue != null) {
                             DerOutputStream out = new DerOutputStream();
                             out.putOctetString(extValue);
                             extValue = out.toByteArray();
                             HexDumpEncoder enc = new HexDumpEncoder();
-                            sb.append("Extension unknown: "
-                                      + "DER encoded OCTET string =\n"
-                                      + enc.encodeBuffer(extValue) + "\n");
+                            sb.append("Extension unknown: ")
+                                .append("DER encoded OCTET string =\n")
+                                .append(enc.encodeBuffer(extValue))
+                                .append('\n');
                         }
-                    } else
-                        sb.append(ext.toString()); //sub-class exists
+                    } else {
+                        sb.append(ext); //sub-class exists
+                    }
                 } catch (Exception e) {
                     sb.append(", Error parsing this extension");
                 }
             }
         }
-        sb.append("\n");
+        sb.append('\n');
         return sb.toString();
     }
 
--- a/src/java.base/share/classes/sun/security/x509/X509CRLImpl.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/X509CRLImpl.java	Thu May 21 16:20:20 2015 -0700
@@ -537,47 +537,65 @@
      */
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append("X.509 CRL v" + (version+1) + "\n");
+        sb.append("X.509 CRL v")
+            .append(version+1)
+            .append('\n');
         if (sigAlgId != null)
-            sb.append("Signature Algorithm: " + sigAlgId.toString() +
-                  ", OID=" + (sigAlgId.getOID()).toString() + "\n");
+            sb.append("Signature Algorithm: ")
+                .append(sigAlgId)
+                .append(", OID=")
+                .append(sigAlgId.getOID())
+                .append('\n');
         if (issuer != null)
-            sb.append("Issuer: " + issuer.toString() + "\n");
+            sb.append("Issuer: ")
+                .append(issuer)
+                .append('\n');
         if (thisUpdate != null)
-            sb.append("\nThis Update: " + thisUpdate.toString() + "\n");
+            sb.append("\nThis Update: ")
+                .append(thisUpdate)
+                .append('\n');
         if (nextUpdate != null)
-            sb.append("Next Update: " + nextUpdate.toString() + "\n");
+            sb.append("Next Update: ")
+                .append(nextUpdate)
+                .append('\n');
         if (revokedList.isEmpty())
             sb.append("\nNO certificates have been revoked\n");
         else {
-            sb.append("\nRevoked Certificates: " + revokedList.size());
+            sb.append("\nRevoked Certificates: ")
+                .append(revokedList.size());
             int i = 1;
             for (X509CRLEntry entry: revokedList) {
-                sb.append("\n[" + i++ + "] " + entry.toString());
+                sb.append("\n[")
+                    .append(i++)
+                    .append("] ")
+                    .append(entry);
             }
         }
         if (extensions != null) {
             Collection<Extension> allExts = extensions.getAllExtensions();
             Object[] objs = allExts.toArray();
-            sb.append("\nCRL Extensions: " + objs.length);
+            sb.append("\nCRL Extensions: ")
+                .append(objs.length);
             for (int i = 0; i < objs.length; i++) {
-                sb.append("\n[" + (i+1) + "]: ");
+                sb.append("\n[").append(i+1).append("]: ");
                 Extension ext = (Extension)objs[i];
                 try {
-                   if (OIDMap.getClass(ext.getExtensionId()) == null) {
-                       sb.append(ext.toString());
-                       byte[] extValue = ext.getExtensionValue();
-                       if (extValue != null) {
-                           DerOutputStream out = new DerOutputStream();
-                           out.putOctetString(extValue);
-                           extValue = out.toByteArray();
-                           HexDumpEncoder enc = new HexDumpEncoder();
-                           sb.append("Extension unknown: "
-                                     + "DER encoded OCTET string =\n"
-                                     + enc.encodeBuffer(extValue) + "\n");
-                      }
-                   } else
-                       sb.append(ext.toString()); // sub-class exists
+                    if (OIDMap.getClass(ext.getExtensionId()) == null) {
+                        sb.append(ext);
+                        byte[] extValue = ext.getExtensionValue();
+                        if (extValue != null) {
+                            DerOutputStream out = new DerOutputStream();
+                            out.putOctetString(extValue);
+                            extValue = out.toByteArray();
+                            HexDumpEncoder enc = new HexDumpEncoder();
+                            sb.append("Extension unknown: ")
+                                .append("DER encoded OCTET string =\n")
+                                .append(enc.encodeBuffer(extValue))
+                                .append('\n');
+                        }
+                    } else {
+                        sb.append(ext); // sub-class exists
+                    }
                 } catch (Exception e) {
                     sb.append(", Error parsing this extension");
                 }
@@ -585,10 +603,12 @@
         }
         if (signature != null) {
             HexDumpEncoder encoder = new HexDumpEncoder();
-            sb.append("\nSignature:\n" + encoder.encodeBuffer(signature)
-                      + "\n");
-        } else
+            sb.append("\nSignature:\n")
+                .append(encoder.encodeBuffer(signature))
+                .append('\n');
+        } else {
             sb.append("NOT signed yet\n");
+        }
         return sb.toString();
     }
 
--- a/src/java.base/share/classes/sun/security/x509/X509CertImpl.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/X509CertImpl.java	Thu May 21 16:20:20 2015 -0700
@@ -81,7 +81,7 @@
 
     private static final long serialVersionUID = -3457612960190864406L;
 
-    private static final String DOT = ".";
+    private static final char DOT = '.';
     /**
      * Public attribute names.
      */
@@ -799,17 +799,10 @@
         if (info == null || algId == null || signature == null)
             return "";
 
-        StringBuilder sb = new StringBuilder();
-
-        sb.append("[\n");
-        sb.append(info.toString() + "\n");
-        sb.append("  Algorithm: [" + algId.toString() + "]\n");
-
         HexDumpEncoder encoder = new HexDumpEncoder();
-        sb.append("  Signature:\n" + encoder.encodeBuffer(signature));
-        sb.append("\n]");
-
-        return sb.toString();
+        return "[\n" + info + '\n' +
+            "  Algorithm: [" + algId + "]\n" +
+            "  Signature:\n" + encoder.encodeBuffer(signature) + "\n]";
     }
 
     // the strongly typed gets, as per java.security.cert.X509Certificate
@@ -1941,31 +1934,30 @@
      * only contains 0-9 and A-F. No small case, no colon.
      */
     private String getCertificateFingerPrint(String mdAlg) {
-        String fingerPrint = "";
         try {
             byte[] encCertInfo = getEncoded();
             MessageDigest md = MessageDigest.getInstance(mdAlg);
             byte[] digest = md.digest(encCertInfo);
-            StringBuffer buf = new StringBuffer();
+            StringBuilder sb = new StringBuilder(digest.length * 2);
             for (int i = 0; i < digest.length; i++) {
-                byte2hex(digest[i], buf);
+                byte2hex(digest[i], sb);
             }
-            fingerPrint = buf.toString();
+            return sb.toString();
         } catch (NoSuchAlgorithmException | CertificateEncodingException e) {
             // ignored
         }
-        return fingerPrint;
+        return "";
     }
 
     /**
-     * Converts a byte to hex digit and writes to the supplied buffer
+     * Converts a byte to hex digit and writes to the supplied builder
      */
-    private static void byte2hex(byte b, StringBuffer buf) {
+    private static void byte2hex(byte b, StringBuilder buf) {
         char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
                 '9', 'A', 'B', 'C', 'D', 'E', 'F' };
         int high = ((b & 0xf0) >> 4);
         int low = (b & 0x0f);
-        buf.append(hexChars[high]);
-        buf.append(hexChars[low]);
+        buf.append(hexChars[high])
+            .append(hexChars[low]);
     }
 }
--- a/src/java.base/share/classes/sun/security/x509/X509CertInfo.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/security/x509/X509CertInfo.java	Thu May 21 16:20:20 2015 -0700
@@ -299,55 +299,60 @@
         }
         StringBuilder sb = new StringBuilder();
 
-        sb.append("[\n");
-        sb.append("  " + version.toString() + "\n");
-        sb.append("  Subject: " + subject.toString() + "\n");
-        sb.append("  Signature Algorithm: " + algId.toString() + "\n");
-        sb.append("  Key:  " + pubKey.toString() + "\n");
-        sb.append("  " + interval.toString() + "\n");
-        sb.append("  Issuer: " + issuer.toString() + "\n");
-        sb.append("  " + serialNum.toString() + "\n");
+        sb.append("[\n")
+            .append("  ").append(version).append('\n')
+            .append("  Subject: ").append(subject).append('\n')
+            .append("  Signature Algorithm: ").append(algId).append('\n')
+            .append("  Key:  ").append(pubKey).append('\n')
+            .append("  ").append(interval).append('\n')
+            .append("  Issuer: ").append(issuer).append('\n')
+            .append("  ").append(serialNum).append('\n');
 
         // optional v2, v3 extras
         if (issuerUniqueId != null) {
-            sb.append("  Issuer Id:\n" + issuerUniqueId.toString() + "\n");
+            sb.append("  Issuer Id:\n").append(issuerUniqueId).append('\n');
         }
         if (subjectUniqueId != null) {
-            sb.append("  Subject Id:\n" + subjectUniqueId.toString() + "\n");
+            sb.append("  Subject Id:\n").append(subjectUniqueId).append('\n');
         }
         if (extensions != null) {
             Collection<Extension> allExts = extensions.getAllExtensions();
             Extension[] exts = allExts.toArray(new Extension[0]);
-            sb.append("\nCertificate Extensions: " + exts.length);
+            sb.append("\nCertificate Extensions: ").append(exts.length);
             for (int i = 0; i < exts.length; i++) {
-                sb.append("\n[" + (i+1) + "]: ");
+                sb.append("\n[").append(i+1).append("]: ");
                 Extension ext = exts[i];
                 try {
                     if (OIDMap.getClass(ext.getExtensionId()) == null) {
-                        sb.append(ext.toString());
+                        sb.append(ext);
                         byte[] extValue = ext.getExtensionValue();
                         if (extValue != null) {
                             DerOutputStream out = new DerOutputStream();
                             out.putOctetString(extValue);
                             extValue = out.toByteArray();
                             HexDumpEncoder enc = new HexDumpEncoder();
-                            sb.append("Extension unknown: "
-                                      + "DER encoded OCTET string =\n"
-                                      + enc.encodeBuffer(extValue) + "\n");
+                            sb.append("Extension unknown: ")
+                                .append("DER encoded OCTET string =\n")
+                                .append(enc.encodeBuffer(extValue))
+                                .append('\n');
                         }
-                    } else
-                        sb.append(ext.toString()); //sub-class exists
+                    } else {
+                        sb.append(ext); //sub-class exists
+                    }
                 } catch (Exception e) {
                     sb.append(", Error parsing this extension");
                 }
             }
             Map<String,Extension> invalid = extensions.getUnparseableExtensions();
             if (invalid.isEmpty() == false) {
-                sb.append("\nUnparseable certificate extensions: " + invalid.size());
+                sb.append("\nUnparseable certificate extensions: ")
+                    .append(invalid.size());
                 int i = 1;
                 for (Extension ext : invalid.values()) {
-                    sb.append("\n[" + (i++) + "]: ");
-                    sb.append(ext);
+                    sb.append("\n[")
+                        .append(i++)
+                        .append("]: ")
+                        .append(ext);
                 }
             }
         }
--- a/src/java.base/share/classes/sun/text/CompactByteArray.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/CompactByteArray.java	Thu May 21 16:20:20 2015 -0700
@@ -49,7 +49,7 @@
  * Han ideographs have the same value.  However, lookup is much faster than a
  * hash table.
  * A compact array of any primitive data type serves two purposes:
- * <UL type = round>
+ * <UL type = circle>
  *     <LI>Fast access of the indexed values.
  *     <LI>Smaller memory footprint.
  * </UL>
--- a/src/java.base/share/classes/sun/text/ComposedCharIter.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/ComposedCharIter.java	Thu May 21 16:20:20 2015 -0700
@@ -50,7 +50,7 @@
     }
 
     /**
-     * Construct a new <tt>ComposedCharIter</tt>.  The iterator will return
+     * Construct a new {@code ComposedCharIter}.  The iterator will return
      * all Unicode characters with canonical decompositions, excluding Korean
      * Hangul characters.
      */
@@ -58,10 +58,10 @@
 
     /**
      * Returns the next precomposed Unicode character.
-     * Repeated calls to <tt>next</tt> return all of the precomposed characters defined
+     * Repeated calls to {@code next} return all of the precomposed characters defined
      * by Unicode, in ascending order.  After all precomposed characters have
-     * been returned, {@link #hasNext} will return <tt>false</tt> and further calls
-     * to <tt>next</tt> will return {@link #DONE}.
+     * been returned, {@link #hasNext} will return {@code false} and further calls
+     * to {@code next} will return {@link #DONE}.
      */
     public int next() {
         if (curChar == decompNum - 1) {
--- a/src/java.base/share/classes/sun/text/Normalizer.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/Normalizer.java	Thu May 21 16:20:20 2015 -0700
@@ -32,7 +32,7 @@
  * This Normalizer is for Unicode 3.2 support for IDNA only.
  * Developers should not use this class.
  *
- * @ since 1.6
+ * @since 1.6
  */
 public final class Normalizer {
 
--- a/src/java.base/share/classes/sun/text/bidi/BidiBase.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/bidi/BidiBase.java	Thu May 21 16:20:20 2015 -0700
@@ -81,14 +81,13 @@
  *
  * <h3>General remarks about the API:</h3>
  *
- * The &quot;limit&quot; of a sequence of characters is the position just after
+ * The "limit" of a sequence of characters is the position just after
  * their last character, i.e., one more than that position.
  * <p>
  *
- * Some of the API methods provide access to &quot;runs&quot;. Such a
- * &quot;run&quot; is defined as a sequence of characters that are at the same
+ * Some of the API methods provide access to "runs". Such a
+ * "run" is defined as a sequence of characters that are at the same
  * embedding level after performing the Bidi algorithm.
- * <p>
  *
  * <h3>Basic concept: paragraph</h3>
  * A piece of text can be divided into several paragraphs by characters
@@ -141,7 +140,8 @@
  * these special values are designed that way. Also, the implementation
  * assumes that MAX_EXPLICIT_LEVEL is odd.
  *
- * <ul><b>See Also:</b>
+ * <p><b>See Also:</b>
+ * <ul>
  * <li>{@link #LEVEL_DEFAULT_LTR}
  * <li>{@link #LEVEL_DEFAULT_RTL}
  * <li>{@link #LEVEL_OVERRIDE}
@@ -153,7 +153,8 @@
  * Reordering mode values indicate which variant of the Bidi algorithm to
  * use.
  *
- * <ul><b>See Also:</b>
+ * <p><b>See Also:</b>
+ * <ul>
  * <li>{@link #setReorderingMode}
  * <li>{@link #REORDER_DEFAULT}
  * <li>{@link #REORDER_NUMBERS_SPECIAL}
@@ -166,7 +167,8 @@
  *
  * <h3>Basic concept: Reordering Options</h3>
  * Reordering options can be applied during Bidi text transformations.
- * <ul><b>See Also:</b>
+ * <p><b>See Also:</b>
+ * <ul>
  * <li>{@link #setReorderingOptions}
  * <li>{@link #OPTION_DEFAULT}
  * <li>{@link #OPTION_INSERT_MARKS}
@@ -202,7 +204,7 @@
  * and therefore its implementation omitted from this sample code.</li>
  * </ul>
  *
- * <pre>
+ * <pre>{@code
  *
  *  package com.ibm.icu.dev.test.bidi;
  *
@@ -451,7 +453,7 @@
  *      }
  *  }
  *
- * </pre>
+ * }</pre>
  */
 
 public class BidiBase {
@@ -2419,9 +2421,9 @@
      *        (same index) character if the level has the
      *        <code>LEVEL_OVERRIDE</code> bit set.<br><br>
      *        Except for that bit, it must be
-     *        <code>paraLevel<=embeddingLevels[]<=MAX_EXPLICIT_LEVEL</code>,
+     *        {@code paraLevel<=embeddingLevels[]<=MAX_EXPLICIT_LEVEL},
      *        with one exception: a level of zero may be specified for a
-     *        paragraph separator even if <code>paraLevel&gt;0</code> when multiple
+     *        paragraph separator even if {@code paraLevel > 0} when multiple
      *        paragraphs are submitted in the same call to <code>setPara()</code>.<br><br>
      *        <strong>Caution: </strong>A reference to this array, not a copy
      *        of the levels, will be stored in the <code>Bidi</code> object;
@@ -2680,7 +2682,7 @@
      * For example, in pure LTR text with numbers the numbers would get
      * a resolved level of 2 higher than the surrounding text according to
      * the algorithm. This implementation may set all resolved levels to
-     * the same value in such a case.<p>
+     * the same value in such a case.
      *
      * @param paragraph a paragraph of text with optional character and
      *        paragraph attribute information
@@ -2817,7 +2819,7 @@
     }
 
     /**
-     * Get the index of a paragraph, given a position within the text.<p>
+     * Get the index of a paragraph, given a position within the text.
      *
      * @param charIndex is the index of a character within the text, in the
      *        range <code>[0..getProcessedLength()-1]</code>.
--- a/src/java.base/share/classes/sun/text/bidi/BidiRun.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/bidi/BidiRun.java	Thu May 21 16:20:20 2015 -0700
@@ -42,7 +42,7 @@
 /**
  * A BidiRun represents a sequence of characters at the same embedding level.
  * The Bidi algorithm decomposes a piece of text into sequences of characters
- * at the same embedding level, each such sequence is called a <quote>run</quote>.
+ * at the same embedding level, each such sequence is called a "run".
  *
  * <p>A BidiRun represents such a run by storing its essential properties,
  * but does not duplicate the characters which form the run.
--- a/src/java.base/share/classes/sun/text/normalizer/ICUBinary.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/ICUBinary.java	Thu May 21 16:20:20 2015 -0700
@@ -65,7 +65,7 @@
     /**
     * <p>ICU data header reader method.
     * Takes a ICU generated big-endian input stream, parse the ICU standard
-    * file header and authenticates them.</p>
+    * file header and authenticates them.
     * <p>Header format:
     * <ul>
     *     <li> Header size (char)
@@ -84,7 +84,7 @@
     *                             [0] major [1] minor [2] milli [3] micro
     *     <li> Unicode version (4 bytes) this ICU is based on.
     * </ul>
-    * </p>
+    *
     * <p>
     * Example of use:<br>
     * <pre>
@@ -98,7 +98,7 @@
     *    System.out.println("This is not a ICU data file");
     * }
     * </pre>
-    * </p>
+    *
     * @param inputStream input stream that contains the ICU data header
     * @param dataFormatIDExpected Data format expected. An array of 4 bytes
     *                     information about the data format.
--- a/src/java.base/share/classes/sun/text/normalizer/IntTrie.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/IntTrie.java	Thu May 21 16:20:20 2015 -0700
@@ -58,7 +58,7 @@
     * trie.</p>
     * @param inputStream file input stream to a ICU data file, containing
     *                    the trie
-    * @param dataManipulate object which provides methods to parse the char
+    * @param datamanipulate object which provides methods to parse the char
     *                        data
     * @throws IOException thrown when data reading fails
     * @draft 2.1
--- a/src/java.base/share/classes/sun/text/normalizer/NormalizerBase.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/NormalizerBase.java	Thu May 21 16:20:20 2015 -0700
@@ -55,16 +55,16 @@
  * In Unicode, this can be encoded as a single character (the
  * "composed" form):
  *
- * <p>
+ * <pre>
  *      00C1    LATIN CAPITAL LETTER A WITH ACUTE
- * </p>
+ * </pre>
  *
  * or as two separate characters (the "decomposed" form):
  *
- * <p>
+ * <pre>
  *      0041    LATIN CAPITAL LETTER A
  *      0301    COMBINING ACUTE ACCENT
- * </p>
+ * </pre>
  *
  * To a user of your program, however, both of these sequences should be
  * treated as the same "user-level" character "A with acute accent".  When you
@@ -76,17 +76,17 @@
  *
  * Similarly, the string "ffi" can be encoded as three separate letters:
  *
- * <p>
+ * <pre>
  *      0066    LATIN SMALL LETTER F
  *      0066    LATIN SMALL LETTER F
  *      0069    LATIN SMALL LETTER I
- * </p>
+ * </pre>
  *
  * or as the single character
  *
- * <p>
+ * <pre>
  *      FB03    LATIN SMALL LIGATURE FFI
- * </p>
+ * </pre>
  *
  * The ffi ligature is not a distinct semantic character, and strictly speaking
  * it shouldn't be in Unicode at all, but it was included for compatibility
@@ -555,12 +555,12 @@
     //-------------------------------------------------------------------------
 
     /**
-     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * Creates a new {@code Normalizer} object for iterating over the
      * normalized form of a given string.
      * <p>
-     * The <tt>options</tt> parameter specifies which optional
-     * <tt>Normalizer</tt> features are to be enabled for this object.
-     * <p>
+     * The {@code options} parameter specifies which optional
+     * {@code Normalizer} features are to be enabled for this object.
+     *
      * @param str  The string to be normalized.  The normalization
      *              will start at the beginning of the string.
      *
@@ -579,9 +579,9 @@
     }
 
     /**
-     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * Creates a new {@code Normalizer} object for iterating over the
      * normalized form of the given text.
-     * <p>
+     *
      * @param iter  The input text to be normalized.  The normalization
      *              will start at the beginning of the string.
      *
@@ -592,9 +592,9 @@
     }
 
     /**
-     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * Creates a new {@code Normalizer} object for iterating over the
      * normalized form of the given text.
-     * <p>
+     *
      * @param iter  The input text to be normalized.  The normalization
      *              will start at the beginning of the string.
      *
@@ -615,13 +615,13 @@
     }
 
     /**
-     * Clones this <tt>Normalizer</tt> object.  All properties of this
+     * Clones this {@code Normalizer} object.  All properties of this
      * object are duplicated in the new object, including the cloning of any
      * {@link CharacterIterator} that was passed in to the constructor
      * or to {@link #setText(CharacterIterator) setText}.
      * However, the text storage underlying
-     * the <tt>CharacterIterator</tt> is not duplicated unless the
-     * iterator's <tt>clone</tt> method does so.
+     * the {@code CharacterIterator} is not duplicated unless the
+     * iterator's {@code clone} method does so.
      * @stable ICU 2.8
      */
     public Object clone() {
@@ -791,7 +791,7 @@
     //-------------------------------------------------------------------------
 
     /**
-     * Return the current character in the normalized text->
+     * Return the current character in the normalized text.
      * @return The codepoint as an int
      * @stable ICU 2.8
      */
@@ -872,10 +872,10 @@
      * while {@link #next} and {@link #previous} iterate through characters
      * in the normalized <em>output</em>.  This means that there is not
      * necessarily a one-to-one correspondence between characters returned
-     * by <tt>next</tt> and <tt>previous</tt> and the indices passed to and
-     * returned from <tt>setIndex</tt> and {@link #getIndex}.
-     * <p>
-     * @param index the desired index in the input text->
+     * by {@code next} and {@code previous} and the indices passed to and
+     * returned from {@code setIndex} and {@link #getIndex}.
+     *
+     * @param index the desired index in the input text.
      *
      * @return   the first normalized character that is the result of iterating
      *            forward starting at the given index.
@@ -894,8 +894,8 @@
 
     /**
      * Retrieve the index of the start of the input text. This is the begin
-     * index of the <tt>CharacterIterator</tt> or the start (i.e. 0) of the
-     * <tt>String</tt> over which this <tt>Normalizer</tt> is iterating
+     * index of the {@code CharacterIterator} or the start (i.e. 0) of the
+     * {@code String} over which this {@code Normalizer} is iterating
      * @deprecated ICU 2.2. Use startIndex() instead.
      * @return The codepoint as an int
      * @see #startIndex
@@ -907,8 +907,8 @@
 
     /**
      * Retrieve the index of the end of the input text.  This is the end index
-     * of the <tt>CharacterIterator</tt> or the length of the <tt>String</tt>
-     * over which this <tt>Normalizer</tt> is iterating
+     * of the {@code CharacterIterator} or the length of the {@code String}
+     * over which this {@code Normalizer} is iterating
      * @deprecated ICU 2.2. Use endIndex() instead.
      * @return The codepoint as an int
      * @see #endIndex
@@ -927,9 +927,9 @@
      * <b>Note:</b> This method sets the position in the <em>input</em>, while
      * {@link #next} and {@link #previous} iterate through characters in the
      * <em>output</em>.  This means that there is not necessarily a one-to-one
-     * correspondence between characters returned by <tt>next</tt> and
-     * <tt>previous</tt> and the indices passed to and returned from
-     * <tt>setIndex</tt> and {@link #getIndex}.
+     * correspondence between characters returned by {@code next} and
+     * {@code previous} and the indices passed to and returned from
+     * {@code setIndex} and {@link #getIndex}.
      * @return The current iteration position
      * @stable ICU 2.8
      */
@@ -942,9 +942,9 @@
     }
 
     /**
-     * Retrieve the index of the end of the input text->  This is the end index
-     * of the <tt>CharacterIterator</tt> or the length of the <tt>String</tt>
-     * over which this <tt>Normalizer</tt> is iterating
+     * Retrieve the index of the end of the input text. This is the end index
+     * of the {@code CharacterIterator} or the length of the {@code String}
+     * over which this {@code Normalizer} is iterating
      * @return The current iteration position
      * @stable ICU 2.8
      */
@@ -963,9 +963,9 @@
      * return previously buffers characters in the old normalization mode
      * until the iteration is able to re-sync at the next base character.
      * It is safest to call {@link #setText setText()}, {@link #first},
-     * {@link #last}, etc. after calling <tt>setMode</tt>.
-     * <p>
-     * @param newMode the new mode for this <tt>Normalizer</tt>.
+     * {@link #last}, etc. after calling {@code setMode}.
+     *
+     * @param newMode the new mode for this {@code Normalizer}.
      * The supported modes are:
      * <ul>
      *  <li>{@link #COMPOSE}        - Unicode canonical decompositiion
@@ -985,7 +985,7 @@
         mode = newMode;
     }
     /**
-     * Return the basic operation performed by this <tt>Normalizer</tt>
+     * Return the basic operation performed by this {@code Normalizer}
      *
      * @see #setMode
      * @stable ICU 2.8
@@ -995,8 +995,8 @@
     }
 
     /**
-     * Set the input text over which this <tt>Normalizer</tt> will iterate.
-     * The iteration position is set to the beginning of the input text->
+     * Set the input text over which this {@code Normalizer} will iterate.
+     * The iteration position is set to the beginning of the input text.
      * @param newText   The new string to be normalized.
      * @stable ICU 2.8
      */
@@ -1011,8 +1011,8 @@
     }
 
     /**
-     * Set the input text over which this <tt>Normalizer</tt> will iterate.
-     * The iteration position is set to the beginning of the input text->
+     * Set the input text over which this {@code Normalizer} will iterate.
+     * The iteration position is set to the beginning of the input text.
      * @param newText   The new string to be normalized.
      * @stable ICU 2.8
      */
@@ -1571,7 +1571,7 @@
     //
 
     /**
-     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * Creates a new {@code Normalizer} object for iterating over the
      * normalized form of a given string.
      *
      * @param str  The string to be normalized.  The normalization
@@ -1646,7 +1646,6 @@
      * perform further tests to arrive at a true/false result.
      * @param str       the input string to be checked to see if it is normalized
      * @param form      the normalization form
-     * @param options   the optional features to be enabled.
      */
     public static boolean isNormalized(String str, Normalizer.Form form) {
         return isNormalized(str, form, UNICODE_LATEST);
--- a/src/java.base/share/classes/sun/text/normalizer/RangeValueIterator.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/RangeValueIterator.java	Thu May 21 16:20:20 2015 -0700
@@ -38,12 +38,13 @@
 package sun.text.normalizer;
 
 /**
- * <p>Interface for enabling iteration over sets of <int index, int value>,
+ * <p>Interface for enabling iteration over sets of
+ * {@code <int index, int value>},
  * where index is the sorted integer index in ascending order and value, its
- * associated integer value.</p>
+ * associated integer value.
  * <p>The result for each iteration is the consecutive range of
- * <int index, int value> with the same value. Result is represented by
- * <start, limit, value> where</p>
+ * {@code <int index, int value>} with the same value. Result is represented by
+ * {@code <start, limit, value>} where
  * <ul>
  * <li> start is the starting integer of the result range
  * <li> limit is 1 after the maximum integer that follows start, such that
@@ -56,10 +57,10 @@
  * Hence value(start) = value(start + 1) = .... = value(start + n) = .... =
  * value(limit - 1). However value(start -1) != value(start) and
  * value(limit) != value(start).
- * </p>
+ *
  * <p>Most implementations will be created by factory methods, such as the
  * character type iterator in UCharacter.getTypeIterator. See example below.
- * </p>
+ *
  * Example of use:<br>
  * <pre>
  * RangeValueIterator iterator = UCharacter.getTypeIterator();
--- a/src/java.base/share/classes/sun/text/normalizer/Replaceable.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/Replaceable.java	Thu May 21 16:20:20 2015 -0700
@@ -71,10 +71,9 @@
  *   <li>If there is no previous character (i.e. start == 0), use the
  *   following character</li>
  *   <li>If there is no following character (i.e. the replaceable was
- *   empty), use default metadata<br>
+ *   empty), use default metadata</li>
  *   <li>If the code point U+FFFF is seen, it should be interpreted as
- *   a special marker having no metadata<li>
- *   </li>
+ *   a special marker having no metadata</li>
  * </ul>
  * If this is not the behavior, the subclass should document any differences.
  *
@@ -111,10 +110,10 @@
      * starting at index <code>dstStart</code> and ending at index
      * <code>dstStart + (srcLimit-srcStart) - 1</code>.
      *
-     * @param srcStart the beginning index to copy, inclusive; <code>0
-     * <= start <= limit</code>.
+     * @param srcStart the beginning index to copy, inclusive;
+     *        {@code 0 <= start <= limit}.
      * @param srcLimit the ending index to copy, exclusive;
-     * <code>start <= limit <= length()</code>.
+     *        {@code start <= limit <= length()}.
      * @param dst the destination array.
      * @param dstStart the start offset in the destination array.
      * @stable ICU 2.0
--- a/src/java.base/share/classes/sun/text/normalizer/ReplaceableString.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/ReplaceableString.java	Thu May 21 16:20:20 2015 -0700
@@ -109,10 +109,10 @@
      * starting at index <code>dstStart</code> and ending at index
      * <code>dstStart + (srcLimit-srcStart) - 1</code>.
      *
-     * @param srcStart the beginning index to copy, inclusive; <code>0
-     * <= start <= limit</code>.
+     * @param srcStart the beginning index to copy, inclusive;
+     *        {@code 0 <= start <= limit}.
      * @param srcLimit the ending index to copy, exclusive;
-     * <code>start <= limit <= length()</code>.
+     *        {@code start <= limit <= length()}.
      * @param dst the destination array.
      * @param dstStart the start offset in the destination array.
      * @stable ICU 2.0
--- a/src/java.base/share/classes/sun/text/normalizer/ReplaceableUCharacterIterator.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/ReplaceableUCharacterIterator.java	Thu May 21 16:20:20 2015 -0700
@@ -150,14 +150,12 @@
     }
 
     /**
-     * <p>Sets the currentIndex to the specified currentIndex in the text and returns that
+     * Sets the currentIndex to the specified currentIndex in the text and returns that
      * single UTF16 character at currentIndex.
-     * This assumes the text is stored as 16-bit code units.</p>
+     * This assumes the text is stored as 16-bit code units.
      * @param currentIndex the currentIndex within the text.
      * @exception IllegalArgumentException is thrown if an invalid currentIndex is
      *            supplied. i.e. currentIndex is out of bounds.
-     * @return the character at the specified currentIndex or DONE if the specified
-     *         currentIndex is equal to the end of the text.
      */
     public void setIndex(int currentIndex) {
         if (currentIndex < 0 || currentIndex > replaceable.length()) {
--- a/src/java.base/share/classes/sun/text/normalizer/RuleCharacterIterator.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/RuleCharacterIterator.java	Thu May 21 16:20:20 2015 -0700
@@ -101,22 +101,25 @@
     public static final int DONE = -1;
 
     /**
-     * Bitmask option to enable parsing of variable names.  If (options &
-     * PARSE_VARIABLES) != 0, then an embedded variable will be expanded to
+     * Bitmask option to enable parsing of variable names.
+     * If {@code (options & PARSE_VARIABLES) != 0},
+     * then an embedded variable will be expanded to
      * its value.  Variables are parsed using the SymbolTable API.
      */
     public static final int PARSE_VARIABLES = 1;
 
     /**
-     * Bitmask option to enable parsing of escape sequences.  If (options &
-     * PARSE_ESCAPES) != 0, then an embedded escape sequence will be expanded
+     * Bitmask option to enable parsing of escape sequences.
+     * If {@code (options & PARSE_ESCAPES) != 0},
+     * then an embedded escape sequence will be expanded
      * to its value.  Escapes are parsed using Utility.unescapeAt().
      */
     public static final int PARSE_ESCAPES   = 2;
 
     /**
-     * Bitmask option to enable skipping of whitespace.  If (options &
-     * SKIP_WHITESPACE) != 0, then whitespace characters will be silently
+     * Bitmask option to enable skipping of whitespace.
+     * If {@code (options & SKIP_WHITESPACE) != 0},
+     * then whitespace characters will be silently
      * skipped, as if they were not present in the input.  Whitespace
      * characters are defined by UCharacterProperty.isRuleWhiteSpace().
      */
--- a/src/java.base/share/classes/sun/text/normalizer/SymbolTable.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/SymbolTable.java	Thu May 21 16:20:20 2015 -0700
@@ -78,7 +78,7 @@
 
     /**
      * Lookup the characters associated with this string and return it.
-     * Return <tt>null</tt> if no such name exists.  The resultant
+     * Return {@code null} if no such name exists.  The resultant
      * array may have length zero.
      * @param s the symbolic name to lookup
      * @return a char array containing the name's value, or null if
@@ -91,7 +91,7 @@
 
     /**
      * Lookup the UnicodeMatcher associated with the given character, and
-     * return it.  Return <tt>null</tt> if not found.
+     * return it.  Return {@code null} if not found.
      * @param ch a 32-bit code point from 0 to 0x10FFFF inclusive.
      * @return the UnicodeMatcher object represented by the given
      * character, or null if there is no mapping for ch.
--- a/src/java.base/share/classes/sun/text/normalizer/Trie.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/Trie.java	Thu May 21 16:20:20 2015 -0700
@@ -160,8 +160,10 @@
 
     /**
     * Lead surrogate code points' index displacement in the index array.
+    * <pre>{@code
     * 0x10000-0xd800=0x2800
     * 0x2800 >> INDEX_STAGE_1_SHIFT_
+    * }</pre>
     */
     protected static final int LEAD_INDEX_OFFSET_ = 0x2800 >> 5;
     /**
@@ -191,7 +193,7 @@
     /**
      * Number of index (stage 1) entries per lead surrogate.
      * Same as number of index entries for 1024 trail surrogates,
-     * ==0x400>>INDEX_STAGE_1_SHIFT_
+     * {@code ==0x400>>INDEX_STAGE_1_SHIFT_}
      */
     protected static final int SURROGATE_BLOCK_COUNT=(1<<SURROGATE_BLOCK_BITS);
     /** Length of the BMP portion of the index (stage 1) array. */
@@ -297,7 +299,7 @@
     /**
     * Internal trie getter from a code point.
     * Could be faster(?) but longer with
-    *   if((c32)<=0xd7ff) { (result)=_TRIE_GET_RAW(trie, data, 0, c32); }
+    * {@code if((c32)<=0xd7ff) { (result)=_TRIE_GET_RAW(trie, data, 0, c32); }}
     * Gets the offset to data which the codepoint points to
     * @param ch codepoint
     * @return offset to data
--- a/src/java.base/share/classes/sun/text/normalizer/TrieIterator.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/TrieIterator.java	Thu May 21 16:20:20 2015 -0700
@@ -37,17 +37,17 @@
 package sun.text.normalizer;
 
 /**
- * <p>Class enabling iteration of the values in a Trie.</p>
+ * Class enabling iteration of the values in a Trie.
  * <p>Result of each iteration contains the interval of codepoints that have
- * the same value type and the value type itself.</p>
+ * the same value type and the value type itself.
  * <p>The comparison of each codepoint value is done via extract(), which the
- * default implementation is to return the value as it is.</p>
+ * default implementation is to return the value as it is.
  * <p>Method extract() can be overwritten to perform manipulations on
- * codepoint values in order to perform specialized comparison.</p>
+ * codepoint values in order to perform specialized comparison.
  * <p>TrieIterator is designed to be a generic iterator for the CharTrie
  * and the IntTrie, hence to accommodate both types of data, the return
- * result will be in terms of int (32 bit) values.</p>
- * <p>See com.ibm.icu.text.UCharacterTypeIterator for examples of use.</p>
+ * result will be in terms of int (32 bit) values.
+ * <p>See com.ibm.icu.text.UCharacterTypeIterator for examples of use.
  * <p>Notes for porting utrie_enum from icu4c to icu4j:<br>
  * Internally, icu4c's utrie_enum performs all iterations in its body. In Java
  * sense, the caller will have to pass a object with a callback function
@@ -63,18 +63,17 @@
  * the method extract(int) (equivalent to UTrieEnumValue). Independent of icu4j,
  * the caller will have to code his own iteration and flesh out the task
  * (equivalent to UTrieEnumRange) to be performed in the iteration loop.
- * </p>
- * <p>There are basically 3 usage scenarios for porting:</p>
+ *
+ * <p>There are basically 3 usage scenarios for porting:
  * <p>1) UTrieEnumValue is the only implemented callback then just implement a
  * subclass of TrieIterator and override the extract(int) method. The
  * extract(int) method is analogus to UTrieEnumValue callback.
- * </p>
+ *
  * <p>2) UTrieEnumValue and UTrieEnumRange both are implemented then implement
- * a subclass of TrieIterator, override the extract method and iterate, e.g
- * </p>
- * <p>utrie_enum(&normTrie, _enumPropertyStartsValue, _enumPropertyStartsRange,
- *               set);<br>
- * In Java :<br>
+ * a subclass of TrieIterator, override the extract method and iterate, e.g.<br>
+ * {@code utrie_enum(&normTrie, _enumPropertyStartsValue, _enumPropertyStartsRange,
+ *               set);}<br>
+ * In Java:<br>
  * <pre>
  * class TrieIteratorImpl extends TrieIterator{
  *     public TrieIteratorImpl(Trie data){
@@ -90,17 +89,17 @@
  *     // port the implementation of _enumPropertyStartsRange
  * }
  * </pre>
- * </p>
+ *
  * <p>3) UTrieEnumRange is the only implemented callback then just implement
  * the while loop, when utrie_enum is called
- * <pre>
+ * <pre>{@code
  * // utrie_enum(&fcdTrie, NULL, _enumPropertyStartsRange, set);
  * TrieIterator fcdIter  = new TrieIterator(fcdTrieImpl.fcdTrie);
  * while(fcdIter.next(result)){
  *     set.add(result.start);
  * }
- * </pre>
- * </p>
+ * }</pre>
+ *
  * @author synwee
  * @see com.ibm.icu.impl.Trie
  * @see com.ibm.icu.lang.UCharacterTypeIterator
--- a/src/java.base/share/classes/sun/text/normalizer/UCharacter.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/UCharacter.java	Thu May 21 16:20:20 2015 -0700
@@ -128,7 +128,7 @@
  * Annex C: Compatibility Properties of UTS #18 Unicode Regular Expressions
  * (http://www.unicode.org/reports/tr18/#Compatibility_Properties).
  * </p>
- * <p>
+ * <pre>{@code
  * API access for C/POSIX character classes is as follows:
  * - alpha:     isUAlphabetic(c) or hasBinaryProperty(c, UProperty.ALPHABETIC)
  * - lower:     isULowercase(c) or hasBinaryProperty(c, UProperty.LOWERCASE)
@@ -142,7 +142,7 @@
  * - cntrl:     getType(c)==CONTROL
  * - graph:     hasBinaryProperty(c, UProperty.POSIX_GRAPH)
  * - print:     hasBinaryProperty(c, UProperty.POSIX_PRINT)
- * </p>
+ * }</pre>
  * <p>
  * The C/POSIX character classes are also available in UnicodeSet patterns,
  * using patterns like [:graph:] or \p{graph}.
--- a/src/java.base/share/classes/sun/text/normalizer/UCharacterIterator.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/UCharacterIterator.java	Thu May 21 16:20:20 2015 -0700
@@ -200,8 +200,7 @@
      * iterator obtained by calling <code>getLength()</code>.
      * <b>Usage:</b>
      *
-     * <code>
-     * <pre>
+     * <pre>{@code
      *         UChacterIterator iter = new UCharacterIterator.getInstance(text);
      *         char[] buf = new char[iter.getLength()];
      *         iter.getText(buf);
@@ -217,15 +216,14 @@
      *                 buf = new char[iter.getLength()];
      *             }
      *         }
-     * </pre>
-     * </code>
+     * }</pre>
      *
      * @param fillIn an array of chars to fill with the underlying UTF-16 code
      *         units.
      * @param offset the position within the array to start putting the data.
      * @return the number of code units added to fillIn, as a convenience
      * @exception IndexOutOfBounds exception if there is not enough
-     *            room after offset in the array, or if offset < 0.
+     *            room after offset in the array, or if offset {@literal <} 0.
      * @stable ICU 2.4
      */
     public abstract int getText(char[] fillIn, int offset);
--- a/src/java.base/share/classes/sun/text/normalizer/UTF16.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/UTF16.java	Thu May 21 16:20:20 2015 -0700
@@ -38,26 +38,26 @@
 
 /**
  * <p>Standalone utility class providing UTF16 character conversions and
- * indexing conversions.</p>
+ * indexing conversions.
  * <p>Code that uses strings alone rarely need modification.
  * By design, UTF-16 does not allow overlap, so searching for strings is a safe
  * operation. Similarly, concatenation is always safe. Substringing is safe if
  * the start and end are both on UTF-32 boundaries. In normal code, the values
  * for start and end are on those boundaries, since they arose from operations
  * like searching. If not, the nearest UTF-32 boundaries can be determined
- * using <code>bounds()</code>.</p>
+ * using <code>bounds()</code>.
  * <strong>Examples:</strong>
  * <p>The following examples illustrate use of some of these methods.
- * <pre>
+ * <pre>{@code
  * // iteration forwards: Original
- * for (int i = 0; i &lt; s.length(); ++i) {
+ * for (int i = 0; i < s.length(); ++i) {
  *     char ch = s.charAt(i);
  *     doSomethingWith(ch);
  * }
  *
  * // iteration forwards: Changes for UTF-32
  * int ch;
- * for (int i = 0; i &lt; s.length(); i+=UTF16.getCharCount(ch)) {
+ * for (int i = 0; i < s.length(); i+=UTF16.getCharCount(ch)) {
  *     ch = UTF16.charAt(s,i);
  *     doSomethingWith(ch);
  * }
@@ -74,7 +74,7 @@
  *     ch = UTF16.charAt(s,i);
  *     doSomethingWith(ch);
  * }
- * </pre>
+ * }</pre>
  * <strong>Notes:</strong>
  * <ul>
  *   <li>
@@ -515,12 +515,12 @@
 
     /**
      * <p>Converts argument code point and returns a String object representing
-     * the code point's value in UTF16 format.</p>
+     * the code point's value in UTF16 format.
      * <p>This method does not check for the validity of the codepoint, the
      * results are not guaranteed if a invalid codepoint is passed as
-     * argument.</p>
+     * argument.
      * <p>The result is a string whose length is 1 for non-supplementary code
-     * points, 2 otherwise.</p>
+     * points, 2 otherwise.
      * @param ch code point
      * @return string representation of the code point
      */
--- a/src/java.base/share/classes/sun/text/normalizer/UnicodeMatcher.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/UnicodeMatcher.java	Thu May 21 16:20:20 2015 -0700
@@ -45,7 +45,8 @@
 public interface UnicodeMatcher {
 
     /**
-     * The character at index i, where i < contextStart || i >= contextLimit,
+     * The character at index {@code i}, where
+     * {@code i < contextStart || i >= contextLimit},
      * is ETHER.  This allows explicit matching by rules and UnicodeSets
      * of text outside the context.  In traditional terms, this allows anchoring
      * at the start and/or end.
--- a/src/java.base/share/classes/sun/text/normalizer/UnicodeSet.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/UnicodeSet.java	Thu May 21 16:20:20 2015 -0700
@@ -107,8 +107,8 @@
  *     </tr>
  *     <tr>
  *       <td nowrap valign="top" align="left"><code>[a{ab}{ac}]</code></td>
- *       <td valign="top">The character 'a' and the multicharacter strings &quot;ab&quot; and
- *       &quot;ac&quot;</td>
+ *       <td valign="top">The character 'a' and the multicharacter strings "ab" and
+ *       "ac"</td>
  *     </tr>
  *     <tr>
  *       <td nowrap valign="top" align="left"><code>[\p{Lu}]</code></td>
@@ -148,10 +148,10 @@
  * literal.  Thus "[a\\-b]", "[-ab]", and "[ab-]" all indicate the same
  * set of three characters, 'a', 'b', and '-'.
  *
- * <p>Sets may be intersected using the '&' operator or the asymmetric
+ * <p>Sets may be intersected using the {@literal '&'} operator or the asymmetric
  * set difference may be taken using the '-' operator, for example,
- * "[[:L:]&[\\u0000-\\u0FFF]]" indicates the set of all Unicode letters
- * with values less than 4096.  Operators ('&' and '|') have equal
+ * "{@code [[:L:]&[\\u0000-\\u0FFF]]}" indicates the set of all Unicode letters
+ * with values less than 4096.  Operators ({@literal '&'} and '|') have equal
  * precedence and bind left-to-right.  Thus
  * "[[:L:]-[a-z]-[\\u0100-\\u01FF]]" is equivalent to
  * "[[[:L:]-[a-z]]-[\\u0100-\\u01FF]]".  This only really matters for
@@ -166,7 +166,7 @@
  * that is, U+0000 through 'a'-1 and 'z'+1 through U+10FFFF
  * <tr valign=top><td nowrap><code>[[<em>pat1</em>][<em>pat2</em>]]</code>
  * <td>The union of sets specified by <em>pat1</em> and <em>pat2</em>
- * <tr valign=top><td nowrap><code>[[<em>pat1</em>]&[<em>pat2</em>]]</code>
+ * <tr valign=top><td nowrap><code>[[<em>pat1</em>]&amp;[<em>pat2</em>]]</code>
  * <td>The intersection of sets specified by <em>pat1</em> and <em>pat2</em>
  * <tr valign=top><td nowrap><code>[[<em>pat1</em>]-[<em>pat2</em>]]</code>
  * <td>The asymmetric difference of sets specified by <em>pat1</em> and
@@ -227,7 +227,7 @@
  *     </tr>
  *     <tr>
  *       <td nowrap valign="top" align="right"><code>property :=&nbsp; </code></td>
- *       <td valign="top"><em>a Unicode property set pattern</td>
+ *       <td valign="top"><em>a Unicode property set pattern</em></td>
  *     </tr>
  *   </table>
  *   <br>
@@ -337,8 +337,8 @@
     }
 
     /**
-     * Constructs a set containing the given range. If <code>end >
-     * start</code> then an empty set is created.
+     * Constructs a set containing the given range.
+     * If {@code end > start} then an empty set is created.
      *
      * @param start first character, inclusive, of range
      * @param end last character, inclusive, of range
@@ -651,7 +651,7 @@
      * Adds the specified multicharacter to this set if it is not already
      * present.  If this set already contains the multicharacter,
      * the call leaves this set unchanged.
-     * Thus "ch" => {"ch"}
+     * Thus {@code "ch" => {"ch"}}
      * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>
      * @param s the source string
      * @return this object, for chaining
@@ -691,7 +691,7 @@
     /**
      * Complements the specified range in this set.  Any character in
      * the range will be removed if it is in this set, or will be
-     * added if it is not in this set.  If <code>end > start</code>
+     * added if it is not in this set.  If {@code end > start}
      * then an empty range is complemented, leaving the set unchanged.
      *
      * @param start first character, inclusive, of range to be removed
@@ -1698,8 +1698,8 @@
      * Modifies this set to contain those code points which have the
      * given value for the given property.  Prior contents of this
      * set are lost.
-     * @param propertyAlias
-     * @param valueAlias
+     * @param propertyAlias the property alias
+     * @param valueAlias the value alias
      * @param symbols if not null, then symbols are first called to see if a property
      * is available. If true, then everything else is skipped.
      * @return this set
--- a/src/java.base/share/classes/sun/text/normalizer/UnicodeSetIterator.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/UnicodeSetIterator.java	Thu May 21 16:20:20 2015 -0700
@@ -73,35 +73,35 @@
 public class UnicodeSetIterator {
 
     /**
-     * Value of <tt>codepoint</tt> if the iterator points to a string.
-     * If <tt>codepoint == IS_STRING</tt>, then examine
-     * <tt>string</tt> for the current iteration result.
+     * Value of {@code codepoint} if the iterator points to a string.
+     * If {@code codepoint == IS_STRING}, then examine
+     * {@code string} for the current iteration result.
      * @stable ICU 2.0
      */
     public static int IS_STRING = -1;
 
     /**
-     * Current code point, or the special value <tt>IS_STRING</tt>, if
+     * Current code point, or the special value {@code IS_STRING}, if
      * the iterator points to a string.
      * @stable ICU 2.0
      */
     public int codepoint;
 
     /**
-     * When iterating over ranges using <tt>nextRange()</tt>,
-     * <tt>codepointEnd</tt> contains the inclusive end of the
-     * iteration range, if <tt>codepoint != IS_STRING</tt>.  If
-     * iterating over code points using <tt>next()</tt>, or if
-     * <tt>codepoint == IS_STRING</tt>, then the value of
-     * <tt>codepointEnd</tt> is undefined.
+     * When iterating over ranges using {@code nextRange()},
+     * {@code codepointEnd} contains the inclusive end of the
+     * iteration range, if {@code codepoint != IS_STRING}.  If
+     * iterating over code points using {@code next()}, or if
+     * {@code codepoint == IS_STRING}, then the value of
+     * {@code codepointEnd} is undefined.
      * @stable ICU 2.0
      */
     public int codepointEnd;
 
     /**
-     * If <tt>codepoint == IS_STRING</tt>, then <tt>string</tt> points
-     * to the current string.  If <tt>codepoint != IS_STRING</tt>, the
-     * value of <tt>string</tt> is undefined.
+     * If {@code codepoint == IS_STRING}, then {@code string} points
+     * to the current string.  If {@code codepoint != IS_STRING}, the
+     * value of {@code string} is undefined.
      * @stable ICU 2.0
      */
     public String string;
@@ -118,17 +118,17 @@
     /**
      * Returns the next element in the set, either a code point range
      * or a string.  If there are no more elements in the set, return
-     * false.  If <tt>codepoint == IS_STRING</tt>, the value is a
-     * string in the <tt>string</tt> field.  Otherwise the value is a
-     * range of one or more code points from <tt>codepoint</tt> to
-     * <tt>codepointeEnd</tt> inclusive.
+     * false.  If {@code codepoint == IS_STRING}, the value is a
+     * string in the {@code string} field.  Otherwise the value is a
+     * range of one or more code points from {@code codepoint} to
+     * {@code codepointeEnd} inclusive.
      *
      * <p>The order of iteration is all code points ranges in sorted
      * order, followed by all strings sorted order.  Ranges are
-     * disjoint and non-contiguous.  <tt>string</tt> is undefined
-     * unless <tt>codepoint == IS_STRING</tt>.  Do not mix calls to
-     * <tt>next()</tt> and <tt>nextRange()</tt> without calling
-     * <tt>reset()</tt> between them.  The results of doing so are
+     * disjoint and non-contiguous.  {@code string} is undefined
+     * unless {@code codepoint == IS_STRING}.  Do not mix calls to
+     * {@code next()} and {@code nextRange()} without calling
+     * {@code reset()} between them.  The results of doing so are
      * undefined.
      *
      * @return true if there was another element in the set and this
@@ -162,8 +162,8 @@
     /**
      * Sets this iterator to visit the elements of the given set and
      * resets it to the start of that set.  The iterator is valid only
-     * so long as <tt>set</tt> is valid.
-     * @param set the set to iterate over.
+     * so long as {@code set} is valid.
+     * @param uset the set to iterate over.
      * @stable ICU 2.0
      */
     public void reset(UnicodeSet uset) {
--- a/src/java.base/share/classes/sun/text/normalizer/Utility.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/Utility.java	Thu May 21 16:20:20 2015 -0700
@@ -227,7 +227,7 @@
 
     /**
      * Convert a integer to size width hex uppercase digits.
-     * E.g., hex('a', 4, str) => "0041".
+     * E.g., {@code hex('a', 4, str) => "0041"}.
      * Append the output to the given StringBuffer.
      * If width is too small to fit, nothing will be appended to output.
      */
@@ -237,7 +237,7 @@
 
     /**
      * Convert a integer to size width (minimum) hex uppercase digits.
-     * E.g., hex('a', 4, str) => "0041".  If the integer requires more
+     * E.g., {@code hex('a', 4, str) => "0041"}.  If the integer requires more
      * than width digits, more will be used.
      */
     public static String hex(int ch, int width) {
@@ -334,8 +334,8 @@
     }
 
     /**
-     * Escape unprintable characters using <backslash>uxxxx notation
-     * for U+0000 to U+FFFF and <backslash>Uxxxxxxxx for U+10000 and
+     * Escape unprintable characters using {@code <backslash>uxxxx} notation
+     * for U+0000 to U+FFFF and {@code <backslash>Uxxxxxxxx} for U+10000 and
      * above.  If the character is printable ASCII, then do nothing
      * and return FALSE.  Otherwise, append the escaped notation and
      * return TRUE.
--- a/src/java.base/share/classes/sun/text/normalizer/VersionInfo.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/share/classes/sun/text/normalizer/VersionInfo.java	Thu May 21 16:20:20 2015 -0700
@@ -53,7 +53,7 @@
      * @param version version String in the format of "major.minor.milli.micro"
      *                or "major.minor.milli" or "major.minor" or "major",
      *                where major, minor, milli, micro are non-negative numbers
-     *                <= 255. If the trailing version numbers are
+     *                {@literal <=} 255. If the trailing version numbers are
      *                not specified they are taken as 0s. E.g. Version "3.1" is
      *                equivalent to "3.1.0.0".
      * @return an instance of VersionInfo with the argument version.
@@ -98,12 +98,12 @@
 
     /**
      * Returns an instance of VersionInfo with the argument version.
-     * @param major major version, non-negative number <= 255.
-     * @param minor minor version, non-negative number <= 255.
-     * @param milli milli version, non-negative number <= 255.
-     * @param micro micro version, non-negative number <= 255.
+     * @param major major version, non-negative number {@literal <=} 255.
+     * @param minor minor version, non-negative number {@literal <=} 255.
+     * @param milli milli version, non-negative number {@literal <=} 255.
+     * @param micro micro version, non-negative number {@literal <=} 255.
      * @exception throws an IllegalArgumentException when either arguments are
-     *                                     negative or > 255
+     *                                     negative or {@literal >} 255
      * @stable ICU 2.6
      */
     public static VersionInfo getInstance(int major, int minor, int milli,
--- a/src/java.base/unix/classes/sun/nio/fs/UnixChannelFactory.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/unix/classes/sun/nio/fs/UnixChannelFactory.java	Thu May 21 16:20:20 2015 -0700
@@ -270,22 +270,6 @@
             throw x;
         }
 
-        // fail if the file is a directory
-        if (flags.read) {
-            UnixException exc = null;
-            try {
-                if (UnixFileAttributes.get(fd).isDirectory()) {
-                    exc = new UnixException(EISDIR);
-                }
-            } catch (UnixException x) {
-                exc = x;
-            }
-            if (exc != null) {
-                close(fd);
-                throw exc;
-            }
-        }
-
         // unlink file immediately if delete on close. The spec is clear that
         // an implementation cannot guarantee to unlink the correct file when
         // replaced by an attacker after it is opened.
--- a/src/java.base/unix/native/libnio/ch/FileDispatcherImpl.c	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/unix/native/libnio/ch/FileDispatcherImpl.c	Thu May 21 16:20:20 2015 -0700
@@ -148,6 +148,13 @@
     jint fd = fdval(env, fdo);
     int result = 0;
 
+#ifdef MACOSX
+    result = fcntl(fd, F_FULLFSYNC);
+    if (result == -1 && errno == ENOTSUP) {
+        /* Try fsync() in case F_FULLSYUNC is not implemented on the file system. */
+        result = fsync(fd);
+    }
+#else /* end MACOSX, begin not-MACOSX */
     if (md == JNI_FALSE) {
         result = fdatasync(fd);
     } else {
@@ -163,9 +170,10 @@
         if (getfl >= 0 && (getfl & O_ACCMODE) == O_RDONLY) {
             return 0;
         }
-#endif
+#endif /* _AIX */
         result = fsync(fd);
     }
+#endif /* not-MACOSX */
     return handle(env, result, "Force failed");
 }
 
--- a/src/java.base/windows/native/libjli/java_md.c	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.base/windows/native/libjli/java_md.c	Thu May 21 16:20:20 2015 -0700
@@ -990,6 +990,26 @@
     return JNI_FALSE;
 }
 
+int
+filterArgs(StdArg *stdargs, const int nargc, StdArg **pargv) {
+    StdArg* argv = NULL;
+    int nargs = 0;
+    int i;
+
+    /* Copy the non-vm args */
+    for (i = 0; i < nargc ; i++) {
+        const char *arg = stdargs[i].arg;
+        if (arg[0] == '-' && arg[1] == 'J')
+            continue;
+        argv = (StdArg*) JLI_MemRealloc(argv, (nargs+1) * sizeof(StdArg));
+        argv[nargs].arg = JLI_StringDup(arg);
+        argv[nargs].has_wildcard = stdargs[i].has_wildcard;
+        nargs++;
+    }
+    *pargv = argv;
+    return nargs;
+}
+
 /*
  * At this point we have the arguments to the application, and we need to
  * check with original stdargs in order to compare which of these truly
@@ -1005,8 +1025,9 @@
     char *ostart, *astart, **nargv;
     jboolean needs_expansion = JNI_FALSE;
     jmethodID mid;
-    int stdargc;
+    int filteredargc, stdargc;
     StdArg *stdargs;
+    StdArg *filteredargs;
     jclass cls = GetLauncherHelperClass(env);
     NULL_CHECK0(cls);
 
@@ -1017,6 +1038,8 @@
     stdargs = JLI_GetStdArgs();
     stdargc = JLI_GetStdArgc();
 
+    filteredargc = filterArgs(stdargs, stdargc, &filteredargs);
+
     // sanity check, this should never happen
     if (argc > stdargc) {
         JLI_TraceLauncher("Warning: app args is larger than the original, %d %d\n", argc, stdargc);
@@ -1025,8 +1048,8 @@
     }
 
     // sanity check, match the args we have, to the holy grail
-    idx = stdargc - argc;
-    ostart = stdargs[idx].arg;
+    idx = filteredargc - argc;
+    ostart = filteredargs[idx].arg;
     astart = strv[0];
     // sanity check, ensure that the first argument of the arrays are the same
     if (JLI_StrCmp(ostart, astart) != 0) {
@@ -1039,8 +1062,8 @@
     // make a copy of the args which will be expanded in java if required.
     nargv = (char **)JLI_MemAlloc(argc * sizeof(char*));
     for (i = 0, j = idx; i < argc; i++, j++) {
-        jboolean arg_expand = (JLI_StrCmp(stdargs[j].arg, strv[i]) == 0)
-                                ? stdargs[j].has_wildcard
+        jboolean arg_expand = (JLI_StrCmp(filteredargs[j].arg, strv[i]) == 0)
+                                ? filteredargs[j].has_wildcard
                                 : JNI_FALSE;
         if (needs_expansion == JNI_FALSE)
             needs_expansion = arg_expand;
@@ -1077,5 +1100,6 @@
         JLI_MemFree(nargv[i]);
     }
     JLI_MemFree(nargv);
+    JLI_MemFree(filteredargs);
     return outArray;
 }
--- a/src/java.logging/share/classes/java/util/logging/LogManager.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.logging/share/classes/java/util/logging/LogManager.java	Thu May 21 16:20:20 2015 -0700
@@ -33,6 +33,7 @@
 import java.lang.ref.WeakReference;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.locks.ReentrantLock;
 import sun.misc.JavaAWTAccess;
 import sun.misc.ManagedLocalsThread;
 import sun.misc.SharedSecrets;
@@ -180,10 +181,16 @@
     // initialization has been done)
     private volatile boolean readPrimordialConfiguration;
     // Have we initialized global (root) handlers yet?
-    // This gets set to false in readConfiguration
-    private boolean initializedGlobalHandlers = true;
-    // True if JVM death is imminent and the exit hook has been called.
-    private boolean deathImminent;
+    // This gets set to STATE_UNINITIALIZED in readConfiguration
+    private static final int
+            STATE_INITIALIZED = 0, // initial state
+            STATE_INITIALIZING = 1,
+            STATE_READING_CONFIG = 2,
+            STATE_UNINITIALIZED = 3,
+            STATE_SHUTDOWN = 4;    // terminal state
+    private volatile int globalHandlersState; // = STATE_INITIALIZED;
+    // A concurrency lock for reset(), readConfiguration() and Cleaner.
+    private final ReentrantLock configurationLock = new ReentrantLock();
 
     // This list contains the loggers for which some handlers have been
     // explicitly configured in the configuration file.
@@ -264,13 +271,12 @@
             // before synchronized block. Otherwise deadlocks are possible.
             LogManager mgr = manager;
 
-            // If the global handlers haven't been initialized yet, we
-            // don't want to initialize them just so we can close them!
-            synchronized (LogManager.this) {
-                // Note that death is imminent.
-                deathImminent = true;
-                initializedGlobalHandlers = true;
-            }
+            // set globalHandlersState to STATE_SHUTDOWN atomically so that
+            // no attempts are made to (re)initialize the handlers or (re)read
+            // the configuration again. This is terminal state.
+            configurationLock.lock();
+            globalHandlersState = STATE_SHUTDOWN;
+            configurationLock.unlock();
 
             // Do a reset to close all active handlers.
             reset();
@@ -1314,8 +1320,14 @@
 
     public void reset() throws SecurityException {
         checkPermission();
+
         List<CloseOnReset> persistent;
-        synchronized (this) {
+
+        // We don't want reset() and readConfiguration()
+        // to run in parallel
+        configurationLock.lock();
+        try {
+            // install new empty properties
             props = new Properties();
             // make sure we keep the loggers persistent until reset is done.
             // Those are the loggers for which we previously created a
@@ -1323,26 +1335,41 @@
             // from being gc'ed until those handlers are closed.
             persistent = new ArrayList<>(closeOnResetLoggers);
             closeOnResetLoggers.clear();
-            // Since we are doing a reset we no longer want to initialize
-            // the global handlers, if they haven't been initialized yet.
-            initializedGlobalHandlers = true;
+
+            // if reset has been called from shutdown-hook (Cleaner),
+            // or if reset has been called from readConfiguration() which
+            // already holds the lock and will change the state itself,
+            // then do not change state here...
+            if (globalHandlersState != STATE_SHUTDOWN &&
+                globalHandlersState != STATE_READING_CONFIG) {
+                // ...else user called reset()...
+                // Since we are doing a reset we no longer want to initialize
+                // the global handlers, if they haven't been initialized yet.
+                globalHandlersState = STATE_INITIALIZED;
+            }
+
+            for (LoggerContext cx : contexts()) {
+                resetLoggerContext(cx);
+            }
+
+            persistent.clear();
+        } finally {
+            configurationLock.unlock();
         }
-        for (LoggerContext cx : contexts()) {
-            Enumeration<String> enum_ = cx.getLoggerNames();
-            while (enum_.hasMoreElements()) {
-                String name = enum_.nextElement();
-                Logger logger = cx.findLogger(name);
-                if (logger != null) {
-                    resetLogger(logger);
-                }
+    }
+
+    private void resetLoggerContext(LoggerContext cx) {
+        Enumeration<String> enum_ = cx.getLoggerNames();
+        while (enum_.hasMoreElements()) {
+            String name = enum_.nextElement();
+            Logger logger = cx.findLogger(name);
+            if (logger != null) {
+                resetLogger(logger);
             }
         }
-        persistent.clear();
     }
 
-    // Private method to reset an individual target logger.
-    private void resetLogger(Logger logger) {
-        // Close all the Logger's handlers.
+    private void closeHandlers(Logger logger) {
         Handler[] targets = logger.getHandlers();
         for (Handler h : targets) {
             logger.removeHandler(h);
@@ -1352,6 +1379,14 @@
                 // Problems closing a handler?  Keep going...
             }
         }
+    }
+
+    // Private method to reset an individual target logger.
+    private void resetLogger(Logger logger) {
+        // Close all the Logger handlers.
+        closeHandlers(logger);
+
+        // Reset Logger level
         String name = logger.getName();
         if (name != null && name.equals("")) {
             // This is the root logger.
@@ -1408,48 +1443,74 @@
      */
     public void readConfiguration(InputStream ins) throws IOException, SecurityException {
         checkPermission();
-        reset();
 
-        // Load the properties
+        // We don't want reset() and readConfiguration() to run
+        // in parallel.
+        configurationLock.lock();
         try {
-            props.load(ins);
-        } catch (IllegalArgumentException x) {
-            // props.load may throw an IllegalArgumentException if the stream
-            // contains malformed Unicode escape sequences.
-            // We wrap that in an IOException as readConfiguration is
-            // specified to throw IOException if there are problems reading
-            // from the stream.
-            // Note: new IOException(x.getMessage(), x) allow us to get a more
-            // concise error message than new IOException(x);
-            throw new IOException(x.getMessage(), x);
+            if (globalHandlersState == STATE_SHUTDOWN) {
+                // already in terminal state: don't even bother
+                // to read the configuration
+                return;
+            }
+
+            // change state to STATE_READING_CONFIG to signal reset() to not change it
+            globalHandlersState = STATE_READING_CONFIG;
+            try {
+                // reset configuration which leaves globalHandlersState at STATE_READING_CONFIG
+                // so that while reading configuration, any ongoing logging requests block and
+                // wait for the outcome (see the end of this try statement)
+                reset();
+
+                try {
+                    // Load the properties
+                    props.load(ins);
+                } catch (IllegalArgumentException x) {
+                    // props.load may throw an IllegalArgumentException if the stream
+                    // contains malformed Unicode escape sequences.
+                    // We wrap that in an IOException as readConfiguration is
+                    // specified to throw IOException if there are problems reading
+                    // from the stream.
+                    // Note: new IOException(x.getMessage(), x) allow us to get a more
+                    // concise error message than new IOException(x);
+                    throw new IOException(x.getMessage(), x);
+                }
+
+                // Instantiate new configuration objects.
+                String names[] = parseClassNames("config");
+
+                for (String word : names) {
+                    try {
+                        Class<?> clz = ClassLoader.getSystemClassLoader().loadClass(word);
+                        clz.newInstance();
+                    } catch (Exception ex) {
+                        System.err.println("Can't load config class \"" + word + "\"");
+                        System.err.println("" + ex);
+                        // ex.printStackTrace();
+                    }
+                }
+
+                // Set levels on any pre-existing loggers, based on the new properties.
+                setLevelsOnExistingLoggers();
+
+                // Note that we need to reinitialize global handles when
+                // they are first referenced.
+                globalHandlersState = STATE_UNINITIALIZED;
+            } catch (Throwable t) {
+                // If there were any trouble, then set state to STATE_INITIALIZED
+                // so that no global handlers reinitialization is performed on not fully
+                // initialized configuration.
+                globalHandlersState = STATE_INITIALIZED;
+                // re-throw
+                throw t;
+            }
+        } finally {
+            configurationLock.unlock();
         }
 
-        // Instantiate new configuration objects.
-        String names[] = parseClassNames("config");
-
-        for (String word : names) {
-            try {
-                Class<?> clz = ClassLoader.getSystemClassLoader().loadClass(word);
-                clz.newInstance();
-            } catch (Exception ex) {
-                System.err.println("Can't load config class \"" + word + "\"");
-                System.err.println("" + ex);
-                // ex.printStackTrace();
-            }
-        }
-
-        // Set levels on any pre-existing loggers, based on the new properties.
-        setLevelsOnExistingLoggers();
-
-        try {
-            invokeConfigurationListeners();
-        } finally {
-            // Note that we need to reinitialize global handles when
-            // they are first referenced.
-            synchronized (this) {
-                initializedGlobalHandlers = false;
-            }
-        }
+        // should be called out of lock to avoid dead-lock situations
+        // when user code is involved
+        invokeConfigurationListeners();
     }
 
     /**
@@ -1576,20 +1637,41 @@
     // Private method to load the global handlers.
     // We do the real work lazily, when the global handlers
     // are first used.
-    private synchronized void initializeGlobalHandlers() {
-        if (initializedGlobalHandlers) {
+    private void initializeGlobalHandlers() {
+        int state = globalHandlersState;
+        if (state == STATE_INITIALIZED ||
+            state == STATE_SHUTDOWN) {
+            // Nothing to do: return.
             return;
         }
 
-        initializedGlobalHandlers = true;
-
-        if (deathImminent) {
-            // Aaargh...
-            // The VM is shutting down and our exit hook has been called.
-            // Avoid allocating global handlers.
-            return;
+        // If we have not initialized global handlers yet (or need to
+        // reinitialize them), lets do it now (this case is indicated by
+        // globalHandlersState == STATE_UNINITIALIZED).
+        // If we are in the process of initializing global handlers we
+        // also need to lock & wait (this case is indicated by
+        // globalHandlersState == STATE_INITIALIZING).
+        // If we are in the process of reading configuration we also need to
+        // wait to see what the outcome will be (this case
+        // is indicated by globalHandlersState == STATE_READING_CONFIG)
+        // So in either case we need to wait for the lock.
+        configurationLock.lock();
+        try {
+            if (globalHandlersState != STATE_UNINITIALIZED) {
+                return; // recursive call or nothing to do
+            }
+            // set globalHandlersState to STATE_INITIALIZING first to avoid
+            // getting an infinite recursion when loadLoggerHandlers(...)
+            // is going to call addHandler(...)
+            globalHandlersState = STATE_INITIALIZING;
+            try {
+                loadLoggerHandlers(rootLogger, null, "handlers");
+            } finally {
+                globalHandlersState = STATE_INITIALIZED;
+            }
+        } finally {
+            configurationLock.unlock();
         }
-        loadLoggerHandlers(rootLogger, null, "handlers");
     }
 
     static final Permission controlPermission = new LoggingPermission("control", null);
@@ -1684,7 +1766,7 @@
 
     // Private method to be called when the configuration has
     // changed to apply any level settings to any pre-existing loggers.
-    synchronized private void setLevelsOnExistingLoggers() {
+    private void setLevelsOnExistingLoggers() {
         Enumeration<?> enum_ = props.propertyNames();
         while (enum_.hasMoreElements()) {
             String key = (String)enum_.nextElement();
--- a/src/java.logging/share/classes/java/util/logging/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.logging/share/classes/java/util/logging/package.html	Thu May 21 16:20:20 2015 -0700
@@ -30,8 +30,7 @@
 <body bgcolor="white">
 <P>
 Provides the classes and interfaces of 
-the Java<SUP><FONT SIZE="-2">TM</FONT></SUP> 2
- platform's core logging facilities.
+the Java&trade; 2 platform's core logging facilities.
 The central goal of the logging APIs is to support maintaining and servicing
 software at customer sites. 
 
--- a/src/java.management/share/classes/com/sun/jmx/mbeanserver/DefaultMXBeanMappingFactory.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.management/share/classes/com/sun/jmx/mbeanserver/DefaultMXBeanMappingFactory.java	Thu May 21 16:20:20 2015 -0700
@@ -79,44 +79,46 @@
 
 /**
  *   <p>A converter between Java types and the limited set of classes
- *   defined by Open MBeans.</p>
+ *   defined by Open MBeans.
  *
- *   <p>A Java type is an instance of java.lang.reflect.Type.  For our
+ *   <p>A Java type is an instance of java.lang.reflect.Type. For our
  *   purposes, it is either a Class, such as String.class or int.class;
- *   or a ParameterizedType, such as List<String> or Map<Integer,
- *   String[]>.  On J2SE 1.4 and earlier, it can only be a Class.</p>
+ *   or a ParameterizedType, such as {@code List<String>} or
+ *   {@code Map<Integer, String[]>}.
+ *   On J2SE 1.4 and earlier, it can only be a Class.
  *
- *   <p>Each Type is associated with an DefaultMXBeanMappingFactory.  The
- *   DefaultMXBeanMappingFactory defines an OpenType corresponding to the Type, plus a
- *   Java class corresponding to the OpenType.  For example:</p>
+ *   <p>Each Type is associated with an DefaultMXBeanMappingFactory. The
+ *   DefaultMXBeanMappingFactory defines an
+ *   OpenType corresponding to the Type, plus a
+ *   Java class corresponding to the OpenType. For example:
  *
- *   <pre>
+ *   <pre>{@code
  *   Type                     Open class     OpenType
  *   ----                     ----------     --------
- *   Integer                Integer        SimpleType.INTEGER
- *   int                            int            SimpleType.INTEGER
- *   Integer[]              Integer[]      ArrayType(1, SimpleType.INTEGER)
- *   int[]                  Integer[]      ArrayType(SimpleType.INTEGER, true)
- *   String[][]             String[][]     ArrayType(2, SimpleType.STRING)
- *   List<String>                   String[]       ArrayType(1, SimpleType.STRING)
+ *   Integer                  Integer        SimpleType.INTEGER
+ *   int                      int            SimpleType.INTEGER
+ *   Integer[]                Integer[]      ArrayType(1, SimpleType.INTEGER)
+ *   int[]                    Integer[]      ArrayType(SimpleType.INTEGER, true)
+ *   String[][]               String[][]     ArrayType(2, SimpleType.STRING)
+ *   List<String>             String[]       ArrayType(1, SimpleType.STRING)
  *   ThreadState (an Enum)    String         SimpleType.STRING
- *   Map<Integer, String[]>   TabularData          TabularType(
+ *   Map<Integer, String[]>   TabularData    TabularType(
  *                                           CompositeType(
  *                                             {"key", SimpleType.INTEGER},
  *                                             {"value",
  *                                               ArrayType(1,
  *                                                SimpleType.STRING)}),
  *                                           indexNames={"key"})
- *   </pre>
+ *   }</pre>
  *
  *   <p>Apart from simple types, arrays, and collections, Java types are
  *   converted through introspection into CompositeType.  The Java type
  *   must have at least one getter (method such as "int getSize()" or
  *   "boolean isBig()"), and we must be able to deduce how to
  *   reconstruct an instance of the Java class from the values of the
- *   getters using one of various heuristics.</p>
+ *   getters using one of various heuristics.
  *
- * @since 1.6
+ *  @since 1.6
  */
 public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory {
     static abstract class NonNullMXBeanMapping extends MXBeanMapping {
@@ -148,8 +150,8 @@
         throws OpenDataException;
 
         /**
-         * <p>True if and only if this MXBeanMapping's toOpenValue and
-         * fromOpenValue methods are the identity function.</p>
+         * True if and only if this MXBeanMapping's toOpenValue and
+         * fromOpenValue methods are the identity function.
          */
         boolean isIdentity() {
             return false;
--- a/src/java.management/share/classes/com/sun/jmx/remote/internal/ServerCommunicatorAdmin.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.management/share/classes/com/sun/jmx/remote/internal/ServerCommunicatorAdmin.java	Thu May 21 16:20:20 2015 -0700
@@ -57,8 +57,8 @@
      * <code>rspOutgoing</code> to inform that a response is sent out
      * for the received request.
      * @return the value of the termination flag:
-     * <ul><code>true</code> if the connection is already being terminated,
-     * <br><code>false</code> otherwise.</ul>
+     *         true if the connection is already being terminated,
+     *         false otherwise.
      */
     public boolean reqIncoming() {
         if (logger.traceOn()) {
@@ -80,8 +80,8 @@
     /**
      * Tells that a response is sent out for a received request.
      * @return the value of the termination flag:
-     * <ul><code>true</code> if the connection is already being terminated,
-     * <br><code>false</code> otherwise.</ul>
+     *         true if the connection is already being terminated,
+     *         false otherwise.
      */
     public boolean rspOutgoing() {
         if (logger.traceOn()) {
--- a/src/java.management/share/classes/com/sun/jmx/remote/util/EnvHelp.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.management/share/classes/com/sun/jmx/remote/util/EnvHelp.java	Thu May 21 16:20:20 2015 -0700
@@ -55,17 +55,17 @@
 public class EnvHelp {
 
     /**
-     * <p>Name of the attribute that specifies a default class loader
+     * Name of the attribute that specifies a default class loader
      * object.
-     * The value associated with this attribute is a ClassLoader object</p>
+     * The value associated with this attribute is a ClassLoader object.
      */
     private static final String DEFAULT_CLASS_LOADER =
         JMXConnectorFactory.DEFAULT_CLASS_LOADER;
 
     /**
-     * <p>Name of the attribute that specifies a default class loader
-     *    ObjectName.
-     * The value associated with this attribute is an ObjectName object</p>
+     * Name of the attribute that specifies a default class loader
+     * ObjectName.
+     * The value associated with this attribute is an ObjectName object.
      */
     private static final String DEFAULT_CLASS_LOADER_NAME =
         JMXConnectorServerFactory.DEFAULT_CLASS_LOADER_NAME;
@@ -74,7 +74,6 @@
      * Get the Connector Server default class loader.
      * <p>
      * Returns:
-     * <p>
      * <ul>
      * <li>
      *     The ClassLoader object found in <var>env</var> for
@@ -114,6 +113,7 @@
      *     <code>jmx.remote.default.class.loader.name</code> is specified
      *     but <var>mbs</var> is null.
      * </li>
+     * </ul>
      * @exception InstanceNotFoundException if
      * <code>jmx.remote.default.class.loader.name</code> is specified
      * and the ClassLoader MBean is not found in <var>mbs</var>.
@@ -172,7 +172,6 @@
      * Get the Connector Client default class loader.
      * <p>
      * Returns:
-     * <p>
      * <ul>
      * <li>
      *     The ClassLoader object found in <var>env</var> for
@@ -232,7 +231,7 @@
     /**
      * Returns the cause field of a {@code Throwable} object.
      * The cause field can be got only if <var>t</var> has an
-     * {@link Throwable#getCause()} method (JDK Version >= 1.4)
+     * {@link Throwable#getCause()} method (JDK Version {@literal >=} 1.4)
      * @param t {@code Throwable} on which the cause must be set.
      * @return the cause if getCause() succeeded and the got value is not
      * null, otherwise return the <var>t</var>.
@@ -254,7 +253,7 @@
 
 
     /**
-     * <p>Name of the attribute that specifies the size of a notification
+     * Name of the attribute that specifies the size of a notification
      * buffer for a connector server. The default value is 1000.
      */
     public static final String BUFFER_SIZE_PROPERTY =
@@ -316,10 +315,10 @@
     }
 
     /**
-     * <p>Name of the attribute that specifies the maximum number of
-     * notifications that a client will fetch from its server.. The
+     * Name of the attribute that specifies the maximum number of
+     * notifications that a client will fetch from its server. The
      * value associated with this attribute should be an
-     * <code>Integer</code> object.  The default value is 1000.</p>
+     * {@code Integer} object.  The default value is 1000.
      */
     public static final String MAX_FETCH_NOTIFS =
         "jmx.remote.x.notification.fetch.max";
@@ -334,10 +333,10 @@
     }
 
     /**
-     * <p>Name of the attribute that specifies the timeout for a
+     * Name of the attribute that specifies the timeout for a
      * client to fetch notifications from its server. The value
      * associated with this attribute should be a <code>Long</code>
-     * object.  The default value is 60000 milliseconds.</p>
+     * object.  The default value is 60000 milliseconds.
      */
     public static final String FETCH_TIMEOUT =
         "jmx.remote.x.notification.fetch.timeout";
@@ -351,11 +350,12 @@
     }
 
     /**
-     * <p>Name of the attribute that specifies an object that will check
+     * Name of the attribute that specifies an object that will check
      * accesses to add/removeNotificationListener and also attempts to
      * receive notifications.  The value associated with this attribute
      * should be a <code>NotificationAccessController</code> object.
-     * The default value is null.</p>
+     * The default value is null.
+     * <p>
      * This field is not public because of its com.sun dependency.
      */
     public static final String NOTIF_ACCESS_CONTROLLER =
@@ -630,9 +630,9 @@
     }
 
     /**
-     * <p>Name of the attribute that specifies the timeout to keep a
+     * Name of the attribute that specifies the timeout to keep a
      * server side connection after answering last client request.
-     * The default value is 120000 milliseconds.</p>
+     * The default value is 120000 milliseconds.
      */
     public static final String SERVER_CONNECTION_TIMEOUT =
         "jmx.remote.x.server.connection.timeout";
@@ -646,9 +646,9 @@
     }
 
     /**
-     * <p>Name of the attribute that specifies the period in
-     * millisecond for a client to check its connection.  The default
-     * value is 60000 milliseconds.</p>
+     * Name of the attribute that specifies the period in
+     * millisecond for a client to check its connection. The default
+     * value is 60000 milliseconds.
      */
     public static final String CLIENT_CONNECTION_CHECK_PERIOD =
         "jmx.remote.x.client.connection.check.period";
@@ -741,13 +741,13 @@
     }
 
     /**
-     * <p>Name of the attribute that specifies whether a connector server
+     * Name of the attribute that specifies whether a connector server
      * should not prevent the VM from exiting
      */
     public static final String JMX_SERVER_DAEMON = "jmx.remote.x.daemon";
 
     /**
-     * Returns true if {@value SERVER_DAEMON} is specified in the {@code env}
+     * Returns true if {@value JMX_SERVER_DAEMON} is specified in the {@code env}
      * as a key and its value is a String and it is equal to true ignoring case.
      *
      * @param env
--- a/src/java.management/share/classes/javax/management/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.management/share/classes/javax/management/package.html	Thu May 21 16:20:20 2015 -0700
@@ -30,7 +30,7 @@
         <p>Provides the core classes for the Java Management Extensions.</p>
 
         <p>The Java Management Extensions
-            (JMX<sup><font size="-1">TM</font></sup>) API is a standard
+            (JMX&trade;) API is a standard
         API for management and monitoring.  Typical uses include:</p>
 
         <ul>
@@ -87,8 +87,7 @@
             notion of <em>Standard MBeans</em>.  A Standard MBean is one
             whose attributes and operations are deduced from a Java
             interface using certain naming patterns, similar to those used
-            by JavaBeans<sup><font size="-1">TM</font></sup>.  For
-        example, consider an interface like this:</p>
+            by JavaBeans&trade;.  For example, consider an interface like this:</p>
 
         <pre>
     public interface ConfigurationMBean {
--- a/src/java.management/share/classes/javax/management/remote/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.management/share/classes/javax/management/remote/package.html	Thu May 21 16:20:20 2015 -0700
@@ -1,6 +1,6 @@
 <html>
 <head>
-    <title>JMX<sup><font size="-2">TM</font></sup> Remote API.</title>
+    <title>JMX&trade; Remote API.</title>
 <!--
 Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
--- a/src/java.management/share/classes/javax/management/remote/rmi/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.management/share/classes/javax/management/remote/rmi/package.html	Thu May 21 16:20:20 2015 -0700
@@ -387,12 +387,11 @@
 
  
     @see <a href="{@docRoot}/../technotes/guides/rmi/index.html">
-	Java<sup><font size="-1">TM</font></sup> Remote Method
+	Java&trade; Remote Method
 	Invocation (RMI)</a>
 
     @see <a href="{@docRoot}/../technotes/guides/jndi/index.html">
-	Java Naming and Directory Interface<sup><font
-	size="-1">TM</font></sup> (JNDI)</a>
+	Java Naming and Directory Interface&trade; (JNDI)</a>
 
     @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045,
     section 6.8, "Base64 Content-Transfer-Encoding"</a>
--- a/src/java.management/share/classes/sun/management/HotspotRuntimeMBean.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.management/share/classes/sun/management/HotspotRuntimeMBean.java	Thu May 21 16:20:20 2015 -0700
@@ -64,7 +64,7 @@
      * Returns a list of internal counters maintained in the Java
      * virtual machine for the runtime system.
      *
-     * @return a <tt>List</tt> of internal counters maintained in the VM
+     * @return a {@code List} of internal counters maintained in the VM
      * for the runtime system.
      */
     public java.util.List<Counter> getInternalRuntimeCounters();
--- a/src/java.management/share/classes/sun/management/HotspotThreadMBean.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.management/share/classes/sun/management/HotspotThreadMBean.java	Thu May 21 16:20:20 2015 -0700
@@ -40,12 +40,11 @@
     public int getInternalThreadCount();
 
     /**
-     * Returns a <tt>Map</tt> of the name of all VM internal threads
+     * Returns a {@code Map} of the name of all VM internal threads
      * to the thread CPU time in nanoseconds.  The returned value is
      * of nanoseconds precision but not necessarily nanoseconds accuracy.
-     * <p>
      *
-     * @return a <tt>Map</tt> object of the name of all VM internal threads
+     * @return a {@code Map} object of the name of all VM internal threads
      * to the thread CPU time in nanoseconds.
      *
      * @throws java.lang.UnsupportedOperationException if the Java virtual
--- a/src/java.management/share/classes/sun/management/MappedMXBeanType.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.management/share/classes/sun/management/MappedMXBeanType.java	Thu May 21 16:20:20 2015 -0700
@@ -45,13 +45,15 @@
  * A mapped mxbean type maps a Java type to an open type.
  * Only the following Java types are mappable
  * (currently required by the platform MXBeans):
- *   1. Primitive types
- *   2. Wrapper classes such java.lang.Integer, etc
- *   3. Classes with only getter methods and with a static "from" method
- *      that takes a CompositeData argument.
- *   4. E[] where E is a type of 1-4 (can be multi-dimensional array)
- *   5. List<E> where E is a type of 1-3
- *   6. Map<K, V> where K and V are a type of 1-4
+ * <ol>
+ *   <li>Primitive types</li>
+ *   <li>Wrapper classes such java.lang.Integer, etc</li>
+ *   <li>Classes with only getter methods and with a static "from" method
+ *      that takes a CompositeData argument.</li>
+ *   <li>{@code E[]} where {@code E} is a type of 1-4 (can be multi-dimensional array)</li>
+ *   <li>{@code List<E>} where E is a type of 1-3</li>
+ *   <li>{@code Map<K, V>} where {@code K} and {@code V} are a type of 1-4</li>
+ * </ol>
  *
  * OpenDataException will be thrown if a Java type is not supported.
  */
--- a/src/java.management/share/classes/sun/management/Sensor.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.management/share/classes/sun/management/Sensor.java	Thu May 21 16:20:20 2015 -0700
@@ -34,12 +34,12 @@
  * An abstract sensor.
  *
  * <p>
- * A <tt>AbstractSensor</tt> object consists of two attributes:
+ * A {@code AbstractSensor} object consists of two attributes:
  * <ul>
- *   <li><tt>on</tt> is a boolean flag indicating if a sensor is
+ *   <li>{@code on} is a boolean flag indicating if a sensor is
  *       triggered. This flag will be set or cleared by the
  *       component that owns the sensor.</li>
- *   <li><tt>count</tt> is the total number of times that a sensor
+ *   <li>{@code count} is the total number of times that a sensor
  *       has been triggered.</li>
  * </ul>
  *
@@ -54,7 +54,7 @@
     private boolean on;
 
     /**
-     * Constructs a <tt>Sensor</tt> object.
+     * Constructs a {@code Sensor} object.
      *
      * @param name The name of this sensor.
      */
@@ -88,8 +88,8 @@
     /**
      * Tests if this sensor is currently on.
      *
-     * @return <tt>true</tt> if the sensor is currently on;
-     *         <tt>false</tt> otherwise.
+     * @return {@code true} if the sensor is currently on;
+     *         {@code false} otherwise.
      *
      */
     public boolean isOn() {
@@ -112,7 +112,7 @@
 
     /**
      * Triggers this sensor. This method sets this sensor on
-     * and increments the count with the input <tt>increment</tt>.
+     * and increments the count with the input {@code increment}.
      */
     public void trigger(int increment) {
         synchronized (lock) {
@@ -126,7 +126,7 @@
     /**
      * Triggers this sensor piggybacking a memory usage object.
      * This method sets this sensor on
-     * and increments the count with the input <tt>increment</tt>.
+     * and increments the count with the input {@code increment}.
      */
     public void trigger(int increment, MemoryUsage usage) {
         synchronized (lock) {
@@ -150,7 +150,7 @@
 
     /**
      * Clears this sensor
-     * and increments the count with the input <tt>increment</tt>.
+     * and increments the count with the input {@code increment}.
      */
     public void clear(int increment) {
         synchronized (lock) {
--- a/src/java.management/share/classes/sun/management/counter/Counter.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.management/share/classes/sun/management/counter/Counter.java	Thu May 21 16:20:20 2015 -0700
@@ -63,7 +63,7 @@
     public Object getValue();
 
     /**
-     * Returns <tt>true</tt> if this counter is an internal counter.
+     * Returns {@code true} if this counter is an internal counter.
      */
     public boolean isInternal();
 
--- a/src/java.management/share/classes/sun/management/counter/perf/InstrumentationException.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.management/share/classes/sun/management/counter/perf/InstrumentationException.java	Thu May 21 16:20:20 2015 -0700
@@ -27,14 +27,14 @@
 
 public class InstrumentationException extends RuntimeException {
     /**
-     * Constructs a <tt>InstrumentationException</tt> with no
+     * Constructs a {@code InstrumentationException} with no
      * detail message.
      */
      public InstrumentationException() {
      }
 
     /**
-     * Constructs a <tt>InstrumentationException</tt> with a specified
+     * Constructs a {@code InstrumentationException} with a specified
      * detail message.
      *
      * @param message the detail message
--- a/src/java.management/share/classes/sun/management/jdp/JdpController.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.management/share/classes/sun/management/jdp/JdpController.java	Thu May 21 16:20:20 2015 -0700
@@ -37,19 +37,18 @@
 import sun.misc.ManagedLocalsThread;
 
 /**
- * JdpController is responsible to create and manage a broadcast loop
+ * JdpController is responsible to create and manage a broadcast loop.
  *
  * <p> Other part of code has no access to broadcast loop and have to use
  * provided static methods
  * {@link #startDiscoveryService(InetAddress,int,String,String) startDiscoveryService}
- * and {@link #stopDiscoveryService() stopDiscoveryService}</p>
+ * and {@link #stopDiscoveryService() stopDiscoveryService}
  * <p>{@link #startDiscoveryService(InetAddress,int,String,String) startDiscoveryService} could be called multiple
- * times as it stops the running service if it is necessary. Call to {@link #stopDiscoveryService() stopDiscoveryService}
- * ignored if service isn't run</p>
+ * times as it stops the running service if it is necessary.
+ * Call to {@link #stopDiscoveryService() stopDiscoveryService}
+ * ignored if service isn't run.
  *
  *
- * </p>
- *
  * <p> System properties below could be used to control broadcast loop behavior.
  * Property below have to be set explicitly in command line. It's not possible to
  * set it in management.config file.  Careless changes of these properties could
@@ -59,9 +58,9 @@
  *     <li>com.sun.management.jdp.pause       - set broadcast interval in seconds</li>
  *     <li>com.sun.management.jdp.source_addr - an address of interface to use for broadcast</li>
  * </ul>
-  </p>
+ *
  * <p>null parameters values are filtered out on {@link JdpPacketWriter} level and
- * corresponding keys are not placed to packet.</p>
+ * corresponding keys are not placed to packet.
  */
 public final class JdpController {
 
--- a/src/java.naming/share/classes/com/sun/jndi/ldap/BasicControl.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/ldap/BasicControl.java	Thu May 21 16:20:20 2015 -0700
@@ -28,7 +28,7 @@
 import javax.naming.ldap.*;
 
 /**
-  * This class provides a basic implementation of the <tt>Control</tt>
+  * This class provides a basic implementation of the {@code Control}
   * interface. It represents an LDAPv3 Control as defined in RFC-2251.
   *
   * @author Vincent Ryan
--- a/src/java.naming/share/classes/com/sun/jndi/ldap/BerDecoder.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/ldap/BerDecoder.java	Thu May 21 16:20:20 2015 -0700
@@ -295,7 +295,7 @@
      *          the relative parsed position is not returned.
      * @return A non-null array containing the octet string.
      * @throws DecodeException If the next byte in the BER buffer is not
-     * <tt>tag</tt>, or if length specified in the BER buffer exceeds the
+     * {@code tag}, or if length specified in the BER buffer exceeds the
      * number of bytes left in the buffer.
      */
     public byte[] parseOctetString(int tag, int rlen[]) throws DecodeException {
--- a/src/java.naming/share/classes/com/sun/jndi/ldap/EventQueue.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/ldap/EventQueue.java	Thu May 21 16:20:20 2015 -0700
@@ -73,16 +73,16 @@
     // package private;
     /**
      * Enqueue an event.
-     * @param event Either a <tt>NamingExceptionEvent</tt> or a subclass
-     *              of <tt>NamingEvent</tt> or
-     * <tt>UnsolicitedNotificationEvent</tt>.
-     * If it is a subclass of <tt>NamingEvent</tt>, all listeners must implement
-     * the corresponding subinterface of <tt>NamingListener</tt>.
-     * For example, for a <tt>ObjectAddedEvent</tt>, all listeners <em>must</em>
-     * implement the <tt>ObjectAddedListener</tt> interface.
+     * @param event Either a {@code NamingExceptionEvent} or a subclass
+     *        of {@code NamingEvent} or
+     *        {@code UnsolicitedNotificationEvent}.
+     * If it is a subclass of {@code NamingEvent}, all listeners must implement
+     * the corresponding subinterface of {@code NamingListener}.
+     * For example, for a {@code ObjectAddedEvent}, all listeners <em>must</em>
+     * implement the {@code ObjectAddedListener} interface.
      * <em>The current implementation does not check this before dispatching
      * the event.</em>
-     * If the event is a <tt>NamingExceptionEvent</tt>, then all listeners
+     * If the event is a {@code NamingExceptionEvent}, then all listeners
      * are notified.
      * @param vector List of NamingListeners that will be notified of event.
      */
--- a/src/java.naming/share/classes/com/sun/jndi/ldap/EventSupport.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/ldap/EventSupport.java	Thu May 21 16:20:20 2015 -0700
@@ -55,14 +55,14 @@
  *<li>The filter (default is "(objectclass=*)").
  *<li>The search controls (default is null SearchControls).
  *<li>The events that the listener is interested in. This is determined by
- * finding out which <tt>NamingListener</tt> interface the listener supports.
+ * finding out which {@code NamingListener} interface the listener supports.
  *</ul>
  *<p>
- *A notifier (<tt>NamingEventNotifier</tt>) is a worker thread that is responsible
+ *A notifier ({@code NamingEventNotifier}) is a worker thread that is responsible
  *for gathering information for generating events requested by its listeners.
  *Each notifier maintains its own list of listeners; these listeners have
  *all made the same registration request (at different times) and implements
- *the same <tt>NamingListener</tt> interfaces.
+ *the same {@code NamingListener} interfaces.
  *<p>
  *For unsolicited listeners, this class maintains a vector, unsolicited.
  *When an unsolicited listener is registered, this class adds itself
@@ -93,7 +93,7 @@
  *The notifiers are responsible for gather information for generating events
  *requested by their respective listeners. When a notifier gets sufficient
  *information to generate an event, it creates invokes the
- *appropriate <tt>fireXXXEvent</tt> on this class with the information and list of
+ *appropriate {@code fireXXXEvent} on this class with the information and list of
  *listeners. This causes an event and the list of listeners to be added
  *to the <em>event queue</em>.
  *This class maintains an event queue and a dispatching thread that dequeues
@@ -138,7 +138,7 @@
     }
 
     /**
-     * Adds <tt>l</tt> to list of listeners interested in <tt>nm</tt>.
+     * Adds {@code l} to list of listeners interested in {@code nm}.
      */
     /*
      * Make the add/removeNamingListeners synchronized to:
@@ -173,7 +173,7 @@
     }
 
     /**
-     * Adds <tt>l</tt> to list of listeners interested in <tt>nm</tt>
+     * Adds {@code l} to list of listeners interested in {@code nm}
      * and filter.
      */
     synchronized void addNamingListener(String nm, String filter,
@@ -201,7 +201,7 @@
     }
 
     /**
-     * Removes <tt>l</tt> from all notifiers in this context.
+     * Removes {@code l} from all notifiers in this context.
      */
     synchronized void removeNamingListener(NamingListener l) {
         if (debug) System.err.println("EventSupport removing listener");
--- a/src/java.naming/share/classes/com/sun/jndi/ldap/LdapName.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/ldap/LdapName.java	Thu May 21 16:20:20 2015 -0700
@@ -336,7 +336,7 @@
      * characters:
      *<ul>
      *<li>leading and trailing whitespace
-     *<li><pre>, = + < > # ; " \</pre>
+     *<li><pre>{@literal , = + < > # ; " \}</pre>
      *</ul>
      * If the value is a byte array, it is converted to hex
      * notation (such as "#CEB1DF80").
--- a/src/java.naming/share/classes/com/sun/jndi/ldap/LdapReferralException.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/ldap/LdapReferralException.java	Thu May 21 16:20:20 2015 -0700
@@ -35,7 +35,7 @@
   * This exception is raised when a referral to an alternative context
   * is encountered.
   * <p>
-  * An <tt>LdapReferralException</tt> object contains one or more referrals.
+  * An {@code LdapReferralException} object contains one or more referrals.
   * Each referral is an alternative location for the same target entry.
   * For example, a referral may be an LDAP URL.
   * The referrals are attempted in sequence until one is successful or
@@ -46,20 +46,20 @@
   * of an authentication error, a referral may be retried with different
   * environment properties.
   * <p>
-  * An <tt>LdapReferralException</tt> object may also contain a reference
-  * to a chain of unprocessed <tt>LdapReferralException</tt> objects.
+  * An {@code LdapReferralException} object may also contain a reference
+  * to a chain of unprocessed {@code LdapReferralException} objects.
   * Once the current set of referrals have been exhausted and unprocessed
-  * <tt>LdapReferralException</tt> objects remain, then the
-  * <tt>LdapReferralException</tt> object referenced by the current
+  * {@code LdapReferralException} objects remain, then the
+  * {@code LdapReferralException} object referenced by the current
   * object is thrown and the cycle continues.
   * <p>
-  * If new <tt>LdapReferralException</tt> objects are generated while
+  * If new {@code LdapReferralException} objects are generated while
   * following an existing referral then these new objects are appended
-  * to the end of the chain of unprocessed <tt>LdapReferralException</tt>
+  * to the end of the chain of unprocessed {@code LdapReferralException}
   * objects.
   * <p>
   * If an exception was recorded while processing a chain of
-  * <tt>LdapReferralException</tt> objects then it is throw once
+  * {@code LdapReferralException} objects then it is throw once
   * processing has completed.
   *
   * @author Vincent Ryan
--- a/src/java.naming/share/classes/com/sun/jndi/ldap/UnsolicitedResponseImpl.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/ldap/UnsolicitedResponseImpl.java	Thu May 21 16:20:20 2015 -0700
@@ -65,7 +65,7 @@
       * Retrieves the object identifier of the response.
       *
       * @return A possibly null object identifier string representing the LDAP
-      *         <tt>ExtendedResponse.responseName</tt> component.
+      *         {@code ExtendedResponse.responseName} component.
       */
     public String getID() {
         return oid;
@@ -79,7 +79,7 @@
       * the response value. It does not include the response OID.
       *
       * @return A possibly null byte array representing the ASN.1 BER encoded
-      *         contents of the LDAP <tt>ExtendedResponse.response</tt>
+      *         contents of the LDAP {@code ExtendedResponse.response}
       *         component.
       */
     public byte[] getEncodedValue() {
--- a/src/java.naming/share/classes/com/sun/jndi/ldap/ext/StartTlsResponseImpl.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/ldap/ext/StartTlsResponseImpl.java	Thu May 21 16:20:20 2015 -0700
@@ -52,10 +52,10 @@
  * The object identifier for StartTLS is 1.3.6.1.4.1.1466.20037
  * and no extended response value is defined.
  *
- *<p>
+ * <p>
  * The Start TLS extended request and response are used to establish
  * a TLS connection over the existing LDAP connection associated with
- * the JNDI context on which <tt>extendedOperation()</tt> is invoked.
+ * the JNDI context on which {@code extendedOperation()} is invoked.
  *
  * @see StartTlsRequest
  * @author Vincent Ryan
@@ -124,7 +124,7 @@
     /**
      * Overrides the default list of cipher suites enabled for use on the
      * TLS connection. The cipher suites must have already been listed by
-     * <tt>SSLSocketFactory.getSupportedCipherSuites()</tt> as being supported.
+     * {@code SSLSocketFactory.getSupportedCipherSuites()} as being supported.
      * Even if a suite has been enabled, it still might not be used because
      * the peer does not support it, or because the requisite certificates
      * (and private keys) are not available.
@@ -140,12 +140,12 @@
     }
 
     /**
-     * Overrides the default hostname verifier used by <tt>negotiate()</tt>
+     * Overrides the default hostname verifier used by {@code negotiate()}
      * after the TLS handshake has completed. If
-     * <tt>setHostnameVerifier()</tt> has not been called before
-     * <tt>negotiate()</tt> is invoked, <tt>negotiate()</tt>
+     * {@code setHostnameVerifier()} has not been called before
+     * {@code negotiate()} is invoked, {@code negotiate()}
      * will perform a simple case ignore match. If called after
-     * <tt>negotiate()</tt>, this method does not do anything.
+     * {@code negotiate()}, this method does not do anything.
      *
      * @param verifier The non-null hostname verifier callback.
      * @see #negotiate
@@ -157,10 +157,10 @@
     /**
      * Negotiates a TLS session using the default SSL socket factory.
      * <p>
-     * This method is equivalent to <tt>negotiate(null)</tt>.
+     * This method is equivalent to {@code negotiate(null)}.
      *
      * @return The negotiated SSL session
-     * @throw IOException If an IO error was encountered while establishing
+     * @throws IOException If an IO error was encountered while establishing
      * the TLS session.
      * @see #setEnabledCipherSuites
      * @see #setHostnameVerifier
@@ -177,7 +177,7 @@
      * attaches it to the existing connection. Performs the TLS handshake
      * and returns the negotiated session information.
      * <p>
-     * If cipher suites have been set via <tt>setEnabledCipherSuites</tt>
+     * If cipher suites have been set via {@code setEnabledCipherSuites}
      * then they are enabled before the TLS handshake begins.
      * <p>
      * Hostname verification is performed after the TLS handshake completes.
@@ -186,7 +186,7 @@
      * hostname is extracted from the subjectAltName in the server's
      * certificate (if present). Otherwise the value of the common name
      * attribute of the subject name is used. If a callback has
-     * been set via <tt>setHostnameVerifier</tt> then that verifier is used if
+     * been set via {@code setHostnameVerifier} then that verifier is used if
      * the default check fails.
      * <p>
      * If an error occurs then the SSL socket is closed and an IOException
@@ -195,7 +195,7 @@
      * @param factory The possibly null SSL socket factory to use.
      * If null, the default SSL socket factory is used.
      * @return The negotiated SSL session
-     * @throw IOException If an IO error was encountered while establishing
+     * @throws IOException If an IO error was encountered while establishing
      * the TLS session.
      * @see #setEnabledCipherSuites
      * @see #setHostnameVerifier
@@ -252,7 +252,7 @@
      * Closes the TLS connection gracefully and reverts back to the underlying
      * connection.
      *
-     * @throw IOException If an IO error was encountered while closing the
+     * @throws IOException If an IO error was encountered while closing the
      * TLS connection
      */
     public void close() throws IOException {
--- a/src/java.naming/share/classes/com/sun/jndi/ldap/sasl/LdapSasl.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/ldap/sasl/LdapSasl.java	Thu May 21 16:20:20 2015 -0700
@@ -72,12 +72,12 @@
      * property has not been set, Context.SECURITY_PRINCIPAL is used.
      * If SASL_CALLBACK has been set, use that instead of the default
      * CallbackHandler.
-     *<p>
+     * <p>
      * If bind is successful and the selected SASL mechanism has a security
      * layer, set inStream and outStream to be filter streams that use
      * the security layer. These will be used for subsequent communication
      * with the server.
-     *<p>
+     *
      * @param conn The non-null connection to use for sending an LDAP BIND
      * @param server Non-null string name of host to connect to
      * @param dn Non-null DN to bind as; also used as authentication ID
--- a/src/java.naming/share/classes/com/sun/jndi/toolkit/ctx/Continuation.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/toolkit/ctx/Continuation.java	Thu May 21 16:20:20 2015 -0700
@@ -329,7 +329,7 @@
      *<p>
      * After this method is called, isContinuing() returns true.
      *
-     * @param resObj The possibly null resolved object.
+     * @param obj The possibly null resolved object.
      * @param relResName The non-null resolved name relative to currCtx.
      * @param currCtx The non-null context from which relResName is to be resolved.
      */
@@ -349,7 +349,7 @@
      *<p>
      * After this method is called, isContinuing() returns true.
      *
-     * @param resObj The possibly null resolved object.
+     * @param obj The possibly null resolved object.
      * @param relResName The non-null resolved name relative to currCtx.
      * @param currCtx The non-null context from which relResName is to be resolved.
      * @param remain The non-null remaining name.
@@ -366,7 +366,7 @@
     /**
      * String overload.
      *
-     * @param resObj The possibly null resolved object.
+     * @param obj The possibly null resolved object.
      * @param relResName The non-null resolved name relative to currCtx.
      * @param currCtx The non-null context from which relResName is to be resolved.
      * @param remain The non-null remaining name.
--- a/src/java.naming/share/classes/com/sun/jndi/toolkit/ctx/PartialCompositeContext.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/toolkit/ctx/PartialCompositeContext.java	Thu May 21 16:20:20 2015 -0700
@@ -452,14 +452,14 @@
      * nonempty component, and if 'prefix' ends with an empty component or
      * 'name' starts with one, then one empty component is dropped.
      * For example:
-     * <pre>
+     * <pre>{@code
      *                            elideEmpty=false     elideEmpty=true
      * {"a"} + {"b"}          =>  {"a", "b"}           {"a", "b"}
      * {"a"} + {""}           =>  {"a", ""}            {"a", ""}
      * {"a"} + {"", "b"}      =>  {"a", "", "b"}       {"a", "b"}
      * {"a", ""} + {"b", ""}  =>  {"a", "", "b", ""}   {"a", "b", ""}
      * {"a", ""} + {"", "b"}  =>  {"a", "", "", "b"}   {"a", "", "b"}
-     * </pre>
+     * }</pre>
      */
     public Name composeName(Name name, Name prefix) throws NamingException {
         Name res = (Name)prefix.clone();
--- a/src/java.naming/share/classes/com/sun/jndi/toolkit/dir/HierMemDirCtx.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/toolkit/dir/HierMemDirCtx.java	Thu May 21 16:20:20 2015 -0700
@@ -32,8 +32,8 @@
 /**
  * A sample service provider that implements a hierarchical directory in memory.
  * Every operation begins by doing a lookup on the name passed to it and then
- * calls a corresponding "do<OperationName>" on the result of the lookup. The
- * "do<OperationName>" does the work without any further resolution (it assumes
+ * calls a corresponding "{@code do<OperationName>}" on the result of the lookup. The
+ * "{@code do<OperationName>}" does the work without any further resolution (it assumes
  * that it is the target context).
  */
 
--- a/src/java.naming/share/classes/com/sun/jndi/toolkit/dir/SearchFilter.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/toolkit/dir/SearchFilter.java	Thu May 21 16:20:20 2015 -0700
@@ -548,8 +548,8 @@
 
 
     /**
-      * Finds the first occurrence of <tt>ch</tt> in <tt>val</tt> starting
-      * from position <tt>start</tt>. It doesn't count if <tt>ch</tt>
+      * Finds the first occurrence of {@code ch} in {@code val} starting
+      * from position {@code start}. It doesn't count if {@code ch}
       * has been escaped by a backslash (\)
       */
     public static int findUnescaped(char ch, String val, int start) {
@@ -568,8 +568,8 @@
     }
 
     /**
-     * Formats the expression <tt>expr</tt> using arguments from the array
-     * <tt>args</tt>.
+     * Formats the expression {@code expr} using arguments from the array
+     * {@code args}.
      *
      * <code>{i}</code> specifies the <code>i</code>'th element from
      * the array <code>args</code> is to be substituted for the
--- a/src/java.naming/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java	Thu May 21 16:20:20 2015 -0700
@@ -107,12 +107,14 @@
       * the subclass must override getURLSuffix() to get the correct behavior.
       * Remember, the behavior must match getRootURLContext().
       *
+      * <pre>{@code
       * URL                                     Suffix
       * foo://host:port                         <empty string>
       * foo://host:port/rest/of/name            rest/of/name
       * foo:///rest/of/name                     rest/of/name
       * foo:/rest/of/name                       rest/of/name
       * foo:rest/of/name                        rest/of/name
+      * }</pre>
       */
     protected Name getURLSuffix(String prefix, String url) throws NamingException {
         String suffix = url.substring(prefix.length());
--- a/src/java.naming/share/classes/com/sun/jndi/toolkit/url/Uri.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/com/sun/jndi/toolkit/url/Uri.java	Thu May 21 16:20:20 2015 -0700
@@ -47,7 +47,7 @@
  * still run on pre-1.4 platforms not containing that class.
  *
  * <p> The format of an absolute URI (see the RFCs mentioned above) is:
- * <p><blockquote><pre>
+ * <blockquote><pre>{@code
  *      absoluteURI   = scheme ":" ( hier_part | opaque_part )
  *
  *      scheme        = alpha *( alpha | digit | "+" | "-" | "." )
@@ -94,12 +94,12 @@
  *      mark          = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"
  *      escaped       = "%" hex hex
  *      unwise        = "{" | "}" | "|" | "\" | "^" | "`"
- * </pre></blockquote>
+ * }</pre></blockquote>
  *
- * <p> Currently URIs containing <tt>userinfo</tt> or <tt>reg_name</tt>
+ * <p> Currently URIs containing {@code userinfo} or {@code reg_name}
  * are not supported.
- * The <tt>opaque_part</tt> of a non-hierarchical URI is treated as if
- * if were a <tt>path</tt> without a leading slash.
+ * The {@code opaque_part} of a non-hierarchical URI is treated as if
+ * if were a {@code path} without a leading slash.
  */
 
 
--- a/src/java.naming/share/classes/javax/naming/directory/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/javax/naming/directory/package.html	Thu May 21 16:20:20 2015 -0700
@@ -33,7 +33,7 @@
 
 <p>
 This package defines the directory operations of the Java Naming and
-Directory Interface<font size=-2><sup>TM</sup></font> (JNDI). &nbsp;
+Directory Interface&trade; (JNDI). &nbsp;
 JNDI provides naming and directory functionality to applications
 written in the Java programming language.  It is designed to be
 independent of any specific naming or directory service
--- a/src/java.naming/share/classes/javax/naming/event/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/javax/naming/event/package.html	Thu May 21 16:20:20 2015 -0700
@@ -33,7 +33,7 @@
 
 <p>
 This package defines the event notification operations of the Java Naming
-and Directory Interface<font size=-2><sup>TM</sup></font> (JNDI). &nbsp;
+and Directory Interface&trade; (JNDI). &nbsp;
 JNDI provides naming and directory functionality to applications
 written in the Java programming language.  It is designed to be
 independent of any specific naming or directory service
--- a/src/java.naming/share/classes/javax/naming/ldap/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/javax/naming/ldap/package.html	Thu May 21 16:20:20 2015 -0700
@@ -33,7 +33,7 @@
 
 <p>
 This package extends the directory operations of the Java Naming and
-Directory Interface<font size=-2><sup>TM</sup></font> (JNDI). &nbsp;
+Directory Interface&trade; (JNDI). &nbsp;
 JNDI provides naming and directory functionality to applications
 written in the Java programming language.  It is designed to be
 independent of any specific naming or directory service
--- a/src/java.naming/share/classes/javax/naming/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/javax/naming/package.html	Thu May 21 16:20:20 2015 -0700
@@ -32,7 +32,7 @@
 
 <p>
 This package defines the naming operations of the Java Naming and
-Directory Interface<font size=-2><sup>TM</sup></font> (JNDI). &nbsp;
+Directory Interface&trade; (JNDI). &nbsp;
 JNDI provides naming and directory functionality to applications
 written in the Java programming language.  It is designed to be
 independent of any specific naming or directory service
--- a/src/java.naming/share/classes/javax/naming/spi/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.naming/share/classes/javax/naming/spi/package.html	Thu May 21 16:20:20 2015 -0700
@@ -34,7 +34,7 @@
 
 <p>
 This package defines the service provider interface (SPI) of the Java Naming
-and Directory Interface<font size=-2><sup>TM</sup></font> (JNDI). &nbsp;
+and Directory Interface&trade; (JNDI). &nbsp;
 JNDI provides naming and directory functionality to applications
 written in the Java programming language.  It is designed to be
 independent of any specific naming or directory service
--- a/src/java.prefs/windows/classes/java/util/prefs/WindowsPreferences.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.prefs/windows/classes/java/util/prefs/WindowsPreferences.java	Thu May 21 16:20:20 2015 -0700
@@ -62,8 +62,8 @@
     /**
      * Windows registry path to <tt>Preferences</tt>'s root nodes.
      */
-    private static final byte[] WINDOWS_ROOT_PATH
-                               = stringToByteArray("Software\\JavaSoft\\Prefs");
+    private static final byte[] WINDOWS_ROOT_PATH =
+        stringToByteArray("Software\\JavaSoft\\Prefs");
 
     /**
      * Windows handles to <tt>HKEY_CURRENT_USER</tt> and
@@ -147,12 +147,12 @@
      * Java wrapper for Windows registry API RegOpenKey()
      */
     private static native int[] WindowsRegOpenKey(int hKey, byte[] subKey,
-                                                         int securityMask);
+                                                  int securityMask);
     /**
      * Retries RegOpenKey() MAX_ATTEMPTS times before giving up.
      */
     private static int[] WindowsRegOpenKey1(int hKey, byte[] subKey,
-                                                      int securityMask) {
+                                            int securityMask) {
         int[] result = WindowsRegOpenKey(hKey, subKey, securityMask);
         if (result[ERROR_CODE] == ERROR_SUCCESS) {
             return result;
@@ -167,16 +167,16 @@
         } else if (result[ERROR_CODE] != ERROR_ACCESS_DENIED) {
             long sleepTime = INIT_SLEEP_TIME;
             for (int i = 0; i < MAX_ATTEMPTS; i++) {
-            try {
-                Thread.sleep(sleepTime);
-            } catch(InterruptedException e) {
-                return result;
-            }
-            sleepTime *= 2;
-            result = WindowsRegOpenKey(hKey, subKey, securityMask);
-            if (result[ERROR_CODE] == ERROR_SUCCESS) {
-                return result;
-            }
+                try {
+                    Thread.sleep(sleepTime);
+                } catch(InterruptedException e) {
+                    return result;
+                }
+                sleepTime *= 2;
+                result = WindowsRegOpenKey(hKey, subKey, securityMask);
+                if (result[ERROR_CODE] == ERROR_SUCCESS) {
+                    return result;
+                }
             }
         }
         return result;
@@ -198,10 +198,10 @@
     private static int[] WindowsRegCreateKeyEx1(int hKey, byte[] subKey) {
         int[] result = WindowsRegCreateKeyEx(hKey, subKey);
         if (result[ERROR_CODE] == ERROR_SUCCESS) {
-                return result;
-            } else {
-                long sleepTime = INIT_SLEEP_TIME;
-                for (int i = 0; i < MAX_ATTEMPTS; i++) {
+            return result;
+        } else {
+            long sleepTime = INIT_SLEEP_TIME;
+            for (int i = 0; i < MAX_ATTEMPTS; i++) {
                 try {
                     Thread.sleep(sleepTime);
                 } catch(InterruptedException e) {
@@ -210,7 +210,7 @@
                 sleepTime *= 2;
                 result = WindowsRegCreateKeyEx(hKey, subKey);
                 if (result[ERROR_CODE] == ERROR_SUCCESS) {
-                return result;
+                    return result;
                 }
             }
         }
@@ -232,10 +232,10 @@
     private static int WindowsRegFlushKey1(int hKey) {
         int result = WindowsRegFlushKey(hKey);
         if (result == ERROR_SUCCESS) {
-                return result;
-            } else {
-                long sleepTime = INIT_SLEEP_TIME;
-                for (int i = 0; i < MAX_ATTEMPTS; i++) {
+            return result;
+        } else {
+            long sleepTime = INIT_SLEEP_TIME;
+            for (int i = 0; i < MAX_ATTEMPTS; i++) {
                 try {
                     Thread.sleep(sleepTime);
                 } catch(InterruptedException e) {
@@ -244,7 +244,7 @@
                 sleepTime *= 2;
                 result = WindowsRegFlushKey(hKey);
                 if (result == ERROR_SUCCESS) {
-                return result;
+                    return result;
                 }
             }
         }
@@ -255,23 +255,23 @@
      * Java wrapper for Windows registry API RegQueryValueEx()
      */
     private static native byte[] WindowsRegQueryValueEx(int hKey,
-                                                              byte[] valueName);
+                                                        byte[] valueName);
     /**
      * Java wrapper for Windows registry API RegSetValueEx()
      */
     private static native int WindowsRegSetValueEx(int hKey, byte[] valueName,
-                                                         byte[] value);
+                                                   byte[] value);
     /**
      * Retries RegSetValueEx() MAX_ATTEMPTS times before giving up.
      */
     private static int WindowsRegSetValueEx1(int hKey, byte[] valueName,
-                                                         byte[] value) {
+                                             byte[] value) {
         int result = WindowsRegSetValueEx(hKey, valueName, value);
         if (result == ERROR_SUCCESS) {
-                return result;
-            } else {
-                long sleepTime = INIT_SLEEP_TIME;
-                for (int i = 0; i < MAX_ATTEMPTS; i++) {
+            return result;
+        } else {
+            long sleepTime = INIT_SLEEP_TIME;
+            for (int i = 0; i < MAX_ATTEMPTS; i++) {
                 try {
                     Thread.sleep(sleepTime);
                 } catch(InterruptedException e) {
@@ -280,7 +280,7 @@
                 sleepTime *= 2;
                 result = WindowsRegSetValueEx(hKey, valueName, value);
                 if (result == ERROR_SUCCESS) {
-                return result;
+                    return result;
                 }
             }
         }
@@ -303,10 +303,10 @@
     private static int[] WindowsRegQueryInfoKey1(int hKey) {
         int[] result = WindowsRegQueryInfoKey(hKey);
         if (result[ERROR_CODE] == ERROR_SUCCESS) {
-                return result;
-            } else {
-                long sleepTime = INIT_SLEEP_TIME;
-                for (int i = 0; i < MAX_ATTEMPTS; i++) {
+            return result;
+        } else {
+            long sleepTime = INIT_SLEEP_TIME;
+            for (int i = 0; i < MAX_ATTEMPTS; i++) {
                 try {
                     Thread.sleep(sleepTime);
                 } catch(InterruptedException e) {
@@ -315,7 +315,7 @@
                 sleepTime *= 2;
                 result = WindowsRegQueryInfoKey(hKey);
                 if (result[ERROR_CODE] == ERROR_SUCCESS) {
-                return result;
+                    return result;
                 }
             }
         }
@@ -326,19 +326,19 @@
      * Java wrapper for Windows registry API RegEnumKeyEx()
      */
     private static native byte[] WindowsRegEnumKeyEx(int hKey, int subKeyIndex,
-                                      int maxKeyLength);
+                                                     int maxKeyLength);
 
     /**
      * Retries RegEnumKeyEx() MAX_ATTEMPTS times before giving up.
      */
     private static byte[] WindowsRegEnumKeyEx1(int hKey, int subKeyIndex,
-                                      int maxKeyLength) {
+                                               int maxKeyLength) {
         byte[] result = WindowsRegEnumKeyEx(hKey, subKeyIndex, maxKeyLength);
         if (result != null) {
-                return result;
-            } else {
-                long sleepTime = INIT_SLEEP_TIME;
-                for (int i = 0; i < MAX_ATTEMPTS; i++) {
+            return result;
+        } else {
+            long sleepTime = INIT_SLEEP_TIME;
+            for (int i = 0; i < MAX_ATTEMPTS; i++) {
                 try {
                     Thread.sleep(sleepTime);
                 } catch(InterruptedException e) {
@@ -347,7 +347,7 @@
                 sleepTime *= 2;
                 result = WindowsRegEnumKeyEx(hKey, subKeyIndex, maxKeyLength);
                 if (result != null) {
-                return result;
+                    return result;
                 }
             }
         }
@@ -358,19 +358,19 @@
      * Java wrapper for Windows registry API RegEnumValue()
      */
     private static native byte[] WindowsRegEnumValue(int hKey, int valueIndex,
-                                      int maxValueNameLength);
+                                                     int maxValueNameLength);
     /**
      * Retries RegEnumValueEx() MAX_ATTEMPTS times before giving up.
      */
     private static byte[] WindowsRegEnumValue1(int hKey, int valueIndex,
-                                      int maxValueNameLength) {
+                                               int maxValueNameLength) {
         byte[] result = WindowsRegEnumValue(hKey, valueIndex,
-                                                            maxValueNameLength);
+                                            maxValueNameLength);
         if (result != null) {
-                return result;
-            } else {
-                long sleepTime = INIT_SLEEP_TIME;
-                for (int i = 0; i < MAX_ATTEMPTS; i++) {
+            return result;
+        } else {
+            long sleepTime = INIT_SLEEP_TIME;
+            for (int i = 0; i < MAX_ATTEMPTS; i++) {
                 try {
                     Thread.sleep(sleepTime);
                 } catch(InterruptedException e) {
@@ -378,9 +378,9 @@
                 }
                 sleepTime *= 2;
                 result = WindowsRegEnumValue(hKey, valueIndex,
-                                                            maxValueNameLength);
+                                             maxValueNameLength);
                 if (result != null) {
-                return result;
+                    return result;
                 }
             }
         }
@@ -404,11 +404,11 @@
         int[] result =
                WindowsRegCreateKeyEx1(parentNativeHandle, toWindowsName(name));
         if (result[ERROR_CODE] != ERROR_SUCCESS) {
-            logger().warning("Could not create windows registry "
-            + "node " + byteArrayToString(windowsAbsolutePath()) +
-            " at root 0x" + Integer.toHexString(rootNativeHandle()) +
-            ". Windows RegCreateKeyEx(...) returned error code " +
-            result[ERROR_CODE] + ".");
+            logger().warning("Could not create windows registry node " +
+                    byteArrayToString(windowsAbsolutePath()) +
+                    " at root 0x" + Integer.toHexString(rootNativeHandle()) +
+                    ". Windows RegCreateKeyEx(...) returned error code " +
+                    result[ERROR_CODE] + ".");
             isBackingStoreAvailable = false;
             return;
         }
@@ -426,15 +426,15 @@
      * @param rootDirectory Path to root directory, as a byte-encoded string.
      */
     private  WindowsPreferences(int rootNativeHandle, byte[] rootDirectory) {
-        super(null,"");
+        super(null, "");
         int[] result =
                 WindowsRegCreateKeyEx1(rootNativeHandle, rootDirectory);
         if (result[ERROR_CODE] != ERROR_SUCCESS) {
             logger().warning("Could not open/create prefs root node " +
-            byteArrayToString(windowsAbsolutePath()) + " at root 0x" +
-            Integer.toHexString(rootNativeHandle()) +
-            ". Windows RegCreateKeyEx(...) returned error code " +
-            result[ERROR_CODE] + ".");
+                    byteArrayToString(windowsAbsolutePath()) +
+                    " at root 0x" + Integer.toHexString(rootNativeHandle()) +
+                    ". Windows RegCreateKeyEx(...) returned error code " +
+                    result[ERROR_CODE] + ".");
             isBackingStoreAvailable = false;
             return;
         }
@@ -451,7 +451,7 @@
     private byte[] windowsAbsolutePath() {
         ByteArrayOutputStream bstream = new ByteArrayOutputStream();
         bstream.write(WINDOWS_ROOT_PATH, 0, WINDOWS_ROOT_PATH.length-1);
-        StringTokenizer tokenizer = new StringTokenizer(absolutePath(),"/");
+        StringTokenizer tokenizer = new StringTokenizer(absolutePath(), "/");
         while (tokenizer.hasMoreTokens()) {
             bstream.write((byte)'\\');
             String nextName = tokenizer.nextToken();
@@ -505,27 +505,30 @@
         /*  Check if key's path is short enough be opened at once
             otherwise use a path-splitting procedure */
         if (windowsAbsolutePath.length <= MAX_WINDOWS_PATH_LENGTH + 1) {
-             int[] result = WindowsRegOpenKey1(rootNativeHandle(),
-                                               windowsAbsolutePath, mask1);
-             if (result[ERROR_CODE] == ERROR_ACCESS_DENIED && mask2 != mask1)
-                 result = WindowsRegOpenKey1(rootNativeHandle(),
-                                             windowsAbsolutePath, mask2);
+            int[] result = WindowsRegOpenKey1(rootNativeHandle(),
+                                              windowsAbsolutePath, mask1);
+            if (result[ERROR_CODE] == ERROR_ACCESS_DENIED && mask2 != mask1)
+                result = WindowsRegOpenKey1(rootNativeHandle(),
+                                            windowsAbsolutePath, mask2);
 
-             if (result[ERROR_CODE] != ERROR_SUCCESS) {
-                logger().warning("Could not open windows "
-                + "registry node " + byteArrayToString(windowsAbsolutePath()) +
-                " at root 0x" + Integer.toHexString(rootNativeHandle()) +
-                ". Windows RegOpenKey(...) returned error code " +
-                result[ERROR_CODE] + ".");
+            if (result[ERROR_CODE] != ERROR_SUCCESS) {
+                logger().warning("Could not open windows registry node " +
+                        byteArrayToString(windowsAbsolutePath()) +
+                        " at root 0x" +
+                        Integer.toHexString(rootNativeHandle()) +
+                        ". Windows RegOpenKey(...) returned error code " +
+                        result[ERROR_CODE] + ".");
                 result[NATIVE_HANDLE] = NULL_NATIVE_HANDLE;
                 if (result[ERROR_CODE] == ERROR_ACCESS_DENIED) {
-                    throw new SecurityException("Could not open windows "
-                + "registry node " + byteArrayToString(windowsAbsolutePath()) +
-                " at root 0x" + Integer.toHexString(rootNativeHandle()) +
-                ": Access denied");
+                    throw new SecurityException(
+                            "Could not open windows registry node " +
+                            byteArrayToString(windowsAbsolutePath()) +
+                            " at root 0x" +
+                            Integer.toHexString(rootNativeHandle()) +
+                            ": Access denied");
                 }
-             }
-             return result[NATIVE_HANDLE];
+            }
+            return result[NATIVE_HANDLE];
         } else {
             return openKey(rootNativeHandle(), windowsAbsolutePath, mask1, mask2);
         }
@@ -548,21 +551,21 @@
                         int mask1, int mask2) {
     /* If the path is short enough open at once. Otherwise split the path */
         if (windowsRelativePath.length <= MAX_WINDOWS_PATH_LENGTH + 1 ) {
-             int[] result = WindowsRegOpenKey1(nativeHandle,
-                                               windowsRelativePath, mask1);
-             if (result[ERROR_CODE] == ERROR_ACCESS_DENIED && mask2 != mask1)
-                 result = WindowsRegOpenKey1(nativeHandle,
-                                             windowsRelativePath, mask2);
+            int[] result = WindowsRegOpenKey1(nativeHandle,
+                                              windowsRelativePath, mask1);
+            if (result[ERROR_CODE] == ERROR_ACCESS_DENIED && mask2 != mask1)
+                result = WindowsRegOpenKey1(nativeHandle,
+                                            windowsRelativePath, mask2);
 
-             if (result[ERROR_CODE] != ERROR_SUCCESS) {
-                logger().warning("Could not open windows "
-                + "registry node " + byteArrayToString(windowsAbsolutePath()) +
-                " at root 0x" + Integer.toHexString(nativeHandle) +
-                ". Windows RegOpenKey(...) returned error code " +
-                result[ERROR_CODE] + ".");
+            if (result[ERROR_CODE] != ERROR_SUCCESS) {
+                logger().warning("Could not open windows registry node " +
+                        byteArrayToString(windowsAbsolutePath()) +
+                        " at root 0x" + Integer.toHexString(nativeHandle) +
+                        ". Windows RegOpenKey(...) returned error code " +
+                        result[ERROR_CODE] + ".");
                 result[NATIVE_HANDLE] = NULL_NATIVE_HANDLE;
-             }
-             return result[NATIVE_HANDLE];
+            }
+            return result[NATIVE_HANDLE];
         } else {
             int separatorPosition = -1;
             // Be greedy - open the longest possible path
@@ -604,10 +607,12 @@
     private void closeKey(int nativeHandle) {
         int result = WindowsRegCloseKey(nativeHandle);
         if (result != ERROR_SUCCESS) {
-            logger().warning("Could not close windows "
-            + "registry node " + byteArrayToString(windowsAbsolutePath()) +
-            " at root 0x" + Integer.toHexString(rootNativeHandle()) +
-            ". Windows RegCloseKey(...) returned error code " + result + ".");
+            logger().warning("Could not close windows registry node " +
+                    byteArrayToString(windowsAbsolutePath()) +
+                    " at root 0x" +
+                    Integer.toHexString(rootNativeHandle()) +
+                    ". Windows RegCloseKey(...) returned error code " +
+                    result + ".");
         }
     }
 
@@ -627,10 +632,13 @@
                 toWindowsName(javaName), toWindowsValueString(value));
         if (result != ERROR_SUCCESS) {
             logger().warning("Could not assign value to key " +
-            byteArrayToString(toWindowsName(javaName))+ " at Windows registry node "
-           + byteArrayToString(windowsAbsolutePath()) + " at root 0x"
-           + Integer.toHexString(rootNativeHandle()) +
-           ". Windows RegSetValueEx(...) returned error code " + result + ".");
+                    byteArrayToString(toWindowsName(javaName)) +
+                    " at Windows registry node " +
+                    byteArrayToString(windowsAbsolutePath()) +
+                    " at root 0x" +
+                    Integer.toHexString(rootNativeHandle()) +
+                    ". Windows RegSetValueEx(...) returned error code " +
+                    result + ".");
             isBackingStoreAvailable = false;
         }
         closeKey(nativeHandle);
@@ -672,12 +680,12 @@
         int result =
             WindowsRegDeleteValue(nativeHandle, toWindowsName(key));
         if (result != ERROR_SUCCESS && result != ERROR_FILE_NOT_FOUND) {
-            logger().warning("Could not delete windows registry "
-            + "value " + byteArrayToString(windowsAbsolutePath())+ "\\" +
-            toWindowsName(key) + " at root 0x" +
-            Integer.toHexString(rootNativeHandle()) +
-            ". Windows RegDeleteValue(...) returned error code " +
-            result + ".");
+            logger().warning("Could not delete windows registry value " +
+                    byteArrayToString(windowsAbsolutePath()) + "\\" +
+                    toWindowsName(key) + " at root 0x" +
+                    Integer.toHexString(rootNativeHandle()) +
+                    ". Windows RegDeleteValue(...) returned error code " +
+                    result + ".");
             isBackingStoreAvailable = false;
         }
         closeKey(nativeHandle);
@@ -693,17 +701,20 @@
         // Find out the number of values
         int nativeHandle = openKey(KEY_QUERY_VALUE);
         if (nativeHandle == NULL_NATIVE_HANDLE) {
-            throw new BackingStoreException("Could not open windows"
-            + "registry node " + byteArrayToString(windowsAbsolutePath()) +
-            " at root 0x" + Integer.toHexString(rootNativeHandle()) + ".");
+            throw new BackingStoreException(
+                    "Could not open windows registry node " +
+                    byteArrayToString(windowsAbsolutePath()) +
+                    " at root 0x" +
+                    Integer.toHexString(rootNativeHandle()) + ".");
         }
         int[] result =  WindowsRegQueryInfoKey1(nativeHandle);
         if (result[ERROR_CODE] != ERROR_SUCCESS) {
-            String info = "Could not query windows"
-            + "registry node " + byteArrayToString(windowsAbsolutePath()) +
-            " at root 0x" + Integer.toHexString(rootNativeHandle()) +
-            ". Windows RegQueryInfoKeyEx(...) returned error code " +
-            result[ERROR_CODE] + ".";
+            String info = "Could not query windows registry node " +
+                    byteArrayToString(windowsAbsolutePath()) +
+                    " at root 0x" +
+                    Integer.toHexString(rootNativeHandle()) +
+                    ". Windows RegQueryInfoKeyEx(...) returned error code " +
+                    result[ERROR_CODE] + ".";
             logger().warning(info);
             throw new BackingStoreException(info);
         }
@@ -712,17 +723,17 @@
         if (valuesNumber == 0) {
             closeKey(nativeHandle);
             return new String[0];
-       }
-       // Get the values
-       String[] valueNames = new String[valuesNumber];
-       for (int i = 0; i < valuesNumber; i++) {
+        }
+        // Get the values
+        String[] valueNames = new String[valuesNumber];
+        for (int i = 0; i < valuesNumber; i++) {
             byte[] windowsName = WindowsRegEnumValue1(nativeHandle, i,
-                                                        maxValueNameLength+1);
+                                                      maxValueNameLength+1);
             if (windowsName == null) {
                 String info =
-                "Could not enumerate value #" + i + "  of windows node " +
-                byteArrayToString(windowsAbsolutePath()) + " at root 0x" +
-                Integer.toHexString(rootNativeHandle()) + ".";
+                    "Could not enumerate value #" + i + "  of windows node " +
+                    byteArrayToString(windowsAbsolutePath()) + " at root 0x" +
+                    Integer.toHexString(rootNativeHandle()) + ".";
                 logger().warning(info);
                 throw new BackingStoreException(info);
             }
@@ -740,20 +751,22 @@
      */
     protected String[] childrenNamesSpi() throws BackingStoreException {
         // Open key
-        int nativeHandle = openKey(KEY_ENUMERATE_SUB_KEYS| KEY_QUERY_VALUE);
+        int nativeHandle = openKey(KEY_ENUMERATE_SUB_KEYS | KEY_QUERY_VALUE);
         if (nativeHandle == NULL_NATIVE_HANDLE) {
-            throw new BackingStoreException("Could not open windows"
-            + "registry node " + byteArrayToString(windowsAbsolutePath()) +
-            " at root 0x" + Integer.toHexString(rootNativeHandle()) + ".");
+            throw new BackingStoreException(
+                    "Could not open windows registry node " +
+                    byteArrayToString(windowsAbsolutePath()) +
+                    " at root 0x" +
+                    Integer.toHexString(rootNativeHandle()) + ".");
         }
         // Get number of children
         int[] result =  WindowsRegQueryInfoKey1(nativeHandle);
         if (result[ERROR_CODE] != ERROR_SUCCESS) {
-            String info = "Could not query windows"
-            + "registry node " + byteArrayToString(windowsAbsolutePath()) +
-            " at root 0x" + Integer.toHexString(rootNativeHandle()) +
-            ". Windows RegQueryInfoKeyEx(...) returned error code " +
-            result[ERROR_CODE] + ".";
+            String info = "Could not query windows registry node " +
+                    byteArrayToString(windowsAbsolutePath()) +
+                    " at root 0x" + Integer.toHexString(rootNativeHandle()) +
+                    ". Windows RegQueryInfoKeyEx(...) returned error code " +
+                    result[ERROR_CODE] + ".";
             logger().warning(info);
             throw new BackingStoreException(info);
         }
@@ -768,12 +781,12 @@
         // Get children
         for (int i = 0; i < subKeysNumber; i++) {
             byte[] windowsName = WindowsRegEnumKeyEx1(nativeHandle, i,
-                                                                maxKeyLength+1);
+                                                      maxKeyLength+1);
             if (windowsName == null) {
                 String info =
-                "Could not enumerate key #" + i + "  of windows node " +
-                byteArrayToString(windowsAbsolutePath()) + " at root 0x" +
-                Integer.toHexString(rootNativeHandle()) + ". ";
+                    "Could not enumerate key #" + i + "  of windows node " +
+                    byteArrayToString(windowsAbsolutePath()) + " at root 0x" +
+                    Integer.toHexString(rootNativeHandle()) + ". ";
                 logger().warning(info);
                 throw new BackingStoreException(info);
             }
@@ -798,20 +811,24 @@
         }
         if (!isBackingStoreAvailable) {
             throw new BackingStoreException(
-                                       "flush(): Backing store not available.");
+                    "flush(): Backing store not available.");
         }
         int nativeHandle = openKey(KEY_READ);
         if (nativeHandle == NULL_NATIVE_HANDLE) {
-            throw new BackingStoreException("Could not open windows"
-            + "registry node " + byteArrayToString(windowsAbsolutePath()) +
-            " at root 0x" + Integer.toHexString(rootNativeHandle()) + ".");
+            throw new BackingStoreException(
+                    "Could not open windows registry node " +
+                    byteArrayToString(windowsAbsolutePath()) +
+                    " at root 0x" +
+                    Integer.toHexString(rootNativeHandle()) + ".");
         }
         int result = WindowsRegFlushKey1(nativeHandle);
         if (result != ERROR_SUCCESS) {
-            String info = "Could not flush windows "
-            + "registry node " + byteArrayToString(windowsAbsolutePath())
-            + " at root 0x" + Integer.toHexString(rootNativeHandle()) +
-            ". Windows RegFlushKey(...) returned error code " + result + ".";
+            String info = "Could not flush windows registry node " +
+                    byteArrayToString(windowsAbsolutePath()) +
+                    " at root 0x" +
+                    Integer.toHexString(rootNativeHandle()) +
+                    ". Windows RegFlushKey(...) returned error code " +
+                    result + ".";
             logger().warning(info);
             throw new BackingStoreException(info);
         }
@@ -838,7 +855,7 @@
      * Logs a warning message, if Windows Registry is unavailable.
      */
     protected AbstractPreferences childSpi(String name) {
-            return new WindowsPreferences(this, name);
+        return new WindowsPreferences(this, name);
     }
 
     /**
@@ -849,20 +866,22 @@
      */
     public void removeNodeSpi() throws BackingStoreException {
         int parentNativeHandle =
-                         ((WindowsPreferences)parent()).openKey(DELETE);
+                ((WindowsPreferences)parent()).openKey(DELETE);
         if (parentNativeHandle == NULL_NATIVE_HANDLE) {
-            throw new BackingStoreException("Could not open parent windows"
-            + "registry node of " + byteArrayToString(windowsAbsolutePath()) +
-            " at root 0x" + Integer.toHexString(rootNativeHandle()) + ".");
+            throw new BackingStoreException(
+                    "Could not open parent windows registry node of " +
+                    byteArrayToString(windowsAbsolutePath()) +
+                    " at root 0x" +
+                    Integer.toHexString(rootNativeHandle()) + ".");
         }
         int result =
                 WindowsRegDeleteKey(parentNativeHandle, toWindowsName(name()));
         if (result != ERROR_SUCCESS) {
-            String info = "Could not delete windows "
-            + "registry node " + byteArrayToString(windowsAbsolutePath()) +
-            " at root 0x" + Integer.toHexString(rootNativeHandle()) +
-            ". Windows RegDeleteKeyEx(...) returned error code " +
-            result + ".";
+            String info = "Could not delete windows registry node " +
+                    byteArrayToString(windowsAbsolutePath()) +
+                    " at root 0x" + Integer.toHexString(rootNativeHandle()) +
+                    ". Windows RegDeleteKeyEx(...) returned error code " +
+                    result + ".";
             logger().warning(info);
             throw new BackingStoreException(info);
         }
@@ -879,23 +898,25 @@
     private static String toJavaName(byte[] windowsNameArray) {
         String windowsName = byteArrayToString(windowsNameArray);
         // check if Alt64
-        if ((windowsName.length()>1) &&
-                                   (windowsName.substring(0,2).equals("/!"))) {
+        if ((windowsName.length() > 1) &&
+                (windowsName.substring(0, 2).equals("/!"))) {
             return toJavaAlt64Name(windowsName);
         }
-        StringBuffer javaName = new StringBuffer();
+        StringBuilder javaName = new StringBuilder();
         char ch;
         // Decode from simple encoding
-        for (int i = 0; i < windowsName.length(); i++){
+        for (int i = 0; i < windowsName.length(); i++) {
             if ((ch = windowsName.charAt(i)) == '/') {
                 char next = ' ';
                 if ((windowsName.length() > i + 1) &&
-                   ((next = windowsName.charAt(i+1)) >= 'A') && (next <= 'Z')) {
-                ch = next;
-                i++;
-                } else  if ((windowsName.length() > i + 1) && (next == '/')) {
-                ch = '\\';
-                i++;
+                        ((next = windowsName.charAt(i+1)) >= 'A') &&
+                        (next <= 'Z')) {
+                    ch = next;
+                    i++;
+                } else if ((windowsName.length() > i + 1) &&
+                           (next == '/')) {
+                    ch = '\\';
+                    i++;
                 }
             } else if (ch == '\\') {
                 ch = '/';
@@ -914,8 +935,8 @@
 
     private static String toJavaAlt64Name(String windowsName) {
         byte[] byteBuffer =
-                          Base64.altBase64ToByteArray(windowsName.substring(2));
-        StringBuffer result = new StringBuffer();
+                Base64.altBase64ToByteArray(windowsName.substring(2));
+        StringBuilder result = new StringBuilder();
         for (int i = 0; i < byteBuffer.length; i++) {
             int firstbyte = (byteBuffer[i++] & 0xff);
             int secondbyte =  (byteBuffer[i] & 0xff);
@@ -945,10 +966,10 @@
      * Base64 class.
      */
     private static byte[] toWindowsName(String javaName) {
-        StringBuffer windowsName = new StringBuffer();
+        StringBuilder windowsName = new StringBuilder();
         for (int i = 0; i < javaName.length(); i++) {
-            char ch =javaName.charAt(i);
-            if ((ch < 0x0020)||(ch > 0x007f)) {
+            char ch = javaName.charAt(i);
+            if ((ch < 0x0020) || (ch > 0x007f)) {
                 // If a non-trivial character encountered, use altBase64
                 return toWindowsAlt64Name(javaName);
             }
@@ -957,7 +978,7 @@
             } else if (ch == '/') {
                 windowsName.append('\\');
             } else if ((ch >= 'A') && (ch <='Z')) {
-                windowsName.append("/" + ch);
+                windowsName.append('/').append(ch);
             } else {
                 windowsName.append(ch);
             }
@@ -976,13 +997,13 @@
         // Convert to byte pairs
         int counter = 0;
         for (int i = 0; i < javaName.length();i++) {
-                int ch = javaName.charAt(i);
-                javaNameArray[counter++] = (byte)(ch >>> 8);
-                javaNameArray[counter++] = (byte)ch;
+            int ch = javaName.charAt(i);
+            javaNameArray[counter++] = (byte)(ch >>> 8);
+            javaNameArray[counter++] = (byte)ch;
         }
 
-        return stringToByteArray(
-                           "/!" + Base64.byteArrayToAltBase64(javaNameArray));
+        return stringToByteArray("/!" +
+                Base64.byteArrayToAltBase64(javaNameArray));
     }
 
     /**
@@ -994,30 +1015,31 @@
      private static String toJavaValueString(byte[] windowsNameArray) {
         // Use modified native2ascii algorithm
         String windowsName = byteArrayToString(windowsNameArray);
-        StringBuffer javaName = new StringBuffer();
+        StringBuilder javaName = new StringBuilder();
         char ch;
         for (int i = 0; i < windowsName.length(); i++){
             if ((ch = windowsName.charAt(i)) == '/') {
                 char next = ' ';
 
                 if (windowsName.length() > i + 1 &&
-                                    (next = windowsName.charAt(i + 1)) == 'u') {
-                    if (windowsName.length() < i + 6){
+                        (next = windowsName.charAt(i + 1)) == 'u') {
+                    if (windowsName.length() < i + 6) {
                         break;
                     } else {
-                        ch = (char)Integer.parseInt
-                                      (windowsName.substring(i + 2, i + 6), 16);
+                        ch = (char)Integer.parseInt(
+                                windowsName.substring(i + 2, i + 6), 16);
                         i += 5;
                     }
                 } else
                 if ((windowsName.length() > i + 1) &&
-                          ((windowsName.charAt(i+1)) >= 'A') && (next <= 'Z')) {
-                ch = next;
-                i++;
-                } else  if ((windowsName.length() > i + 1) &&
-                                               (next == '/')) {
-                ch = '\\';
-                i++;
+                        ((windowsName.charAt(i+1)) >= 'A') &&
+                        (next <= 'Z')) {
+                    ch = next;
+                    i++;
+                } else if ((windowsName.length() > i + 1) &&
+                        (next == '/')) {
+                    ch = '\\';
+                    i++;
                 }
             } else if (ch == '\\') {
                 ch = '/';
@@ -1037,14 +1059,14 @@
      * to convert java string to a byte array of ASCII characters.
      */
     private static byte[] toWindowsValueString(String javaName) {
-        StringBuffer windowsName = new StringBuffer();
+        StringBuilder windowsName = new StringBuilder();
         for (int i = 0; i < javaName.length(); i++) {
-            char ch =javaName.charAt(i);
-            if ((ch < 0x0020)||(ch > 0x007f)){
+            char ch = javaName.charAt(i);
+            if ((ch < 0x0020) || (ch > 0x007f)){
                 // write \udddd
                 windowsName.append("/u");
                 String hex = Integer.toHexString(javaName.charAt(i));
-                StringBuffer hex4 = new StringBuffer(hex);
+                StringBuilder hex4 = new StringBuilder(hex);
                 hex4.reverse();
                 int len = 4 - hex4.length();
                 for (int j = 0; j < len; j++){
@@ -1058,7 +1080,7 @@
             } else if (ch == '/') {
                 windowsName.append('\\');
             } else if ((ch >= 'A') && (ch <='Z')) {
-                windowsName.append("/" + ch);
+                windowsName.append('/').append(ch);
             } else {
                 windowsName.append(ch);
             }
@@ -1070,8 +1092,9 @@
      * Returns native handle for the top Windows node for this node.
      */
     private int rootNativeHandle() {
-        return (isUserNode()? USER_ROOT_NATIVE_HANDLE :
-                              SYSTEM_ROOT_NATIVE_HANDLE);
+        return (isUserNode()
+                ? USER_ROOT_NATIVE_HANDLE
+                : SYSTEM_ROOT_NATIVE_HANDLE);
     }
 
     /**
@@ -1090,7 +1113,7 @@
      * Converts a null-terminated byte array to java string
      */
     private static String byteArrayToString(byte[] array) {
-        StringBuffer result = new StringBuffer();
+        StringBuilder result = new StringBuilder();
         for (int i = 0; i < array.length - 1; i++) {
             result.append((char)array[i]);
         }
--- a/src/java.rmi/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.rmi/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java	Thu May 21 16:20:20 2015 -0700
@@ -32,7 +32,6 @@
 /**
  * The ExecOptionPermission class represents permission for rmid to use
  * a specific command-line option when launching an activation group.
- * <P>
  *
  * @author Ann Wollrath
  *
@@ -68,9 +67,9 @@
      * Checks if the specified permission is "implied" by
      * this object.
      * <P>
-     * More specifically, this method returns true if:<p>
+     * More specifically, this method returns true if:
      * <ul>
-     * <li> <i>p</i>'s class is the same as this object's class, and<p>
+     * <li> <i>p</i>'s class is the same as this object's class, and
      * <li> <i>p</i>'s name equals or (in the case of wildcards)
      *      is implied by this object's
      *      name. For example, "a.b.*" implies "a.b.c", and
@@ -111,7 +110,7 @@
      * Checks two ExecOptionPermission objects for equality.
      * Checks that <i>obj</i>'s class is the same as this object's class
      * and has the same name as this object.
-     * <P>
+     *
      * @param obj the object we are testing for equality with this object.
      * @return true if <i>obj</i> is an ExecOptionPermission, and has the same
      * name as this ExecOptionPermission object, false otherwise.
@@ -154,7 +153,7 @@
      * Returns a new PermissionCollection object for storing
      * ExecOptionPermission objects.
      * <p>
-     * A ExecOptionPermissionCollection stores a collection of
+     * An ExecOptionPermissionCollection stores a collection of
      * ExecOptionPermission permissions.
      *
      * <p>ExecOptionPermission objects must be stored in a manner that allows
--- a/src/java.rmi/share/classes/com/sun/rmi/rmid/ExecPermission.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.rmi/share/classes/com/sun/rmi/rmid/ExecPermission.java	Thu May 21 16:20:20 2015 -0700
@@ -40,14 +40,13 @@
  * all the files and directories contained in that directory. A pathname
  * that ends with "/-" indicates (recursively) all files
  * and subdirectories contained in that directory. A pathname consisting of
- * the special token "&lt;&lt;ALL FILES&gt;&gt;" matches <bold>any</bold> file.
+ * the special token "{@code <<ALL FILES>>}" matches <b>any</b> file.
  * <P>
  * Note: A pathname consisting of a single "*" indicates all the files
  * in the current directory, while a pathname consisting of a single "-"
  * indicates all the files in the current directory and
  * (recursively) all files and subdirectories contained in the current
  * directory.
- * <P>
  *
  *
  * @author Ann Wollrath
@@ -72,7 +71,7 @@
      * a directory and all the files contained in that directory. A pathname
      * that ends with "/-" indicates a directory and (recursively) all files
      * and subdirectories contained in that directory. The special pathname
-     * "&lt;&lt;ALL FILES&gt;&gt;" matches all files.
+     * "{@code <<ALL FILES>>}" matches all files.
      *
      * <p>A pathname consisting of a single "*" indicates all the files
      * in the current directory, while a pathname consisting of a single "-"
@@ -96,7 +95,7 @@
      * a directory and all the files contained in that directory. A pathname
      * that ends with "/-" indicates a directory and (recursively) all files
      * and subdirectories contained in that directory. The special pathname
-     * "&lt;&lt;ALL FILES&gt;&gt;" matches all files.
+     * "{@code <<ALL FILES>>}" matches all files.
      *
      * <p>A pathname consisting of a single "*" indicates all the files
      * in the current directory, while a pathname consisting of a single "-"
@@ -114,9 +113,9 @@
     /**
      * Checks if this ExecPermission object "implies" the specified permission.
      * <P>
-     * More specifically, this method returns true if:<p>
+     * More specifically, this method returns true if:
      * <ul>
-     * <li> <i>p</i> is an instanceof ExecPermission,<p> and
+     * <li> <i>p</i> is an instanceof ExecPermission, and
      * <li> <i>p</i>'s pathname is implied by this object's
      *      pathname. For example, "/tmp/*" implies "/tmp/foo", since
      *      "/tmp/*" encompasses the "/tmp" directory and all files in that
@@ -140,7 +139,7 @@
      * Checks two ExecPermission objects for equality.
      * Checks that <i>obj</i>'s class is the same as this object's class
      * and has the same name as this object.
-     * <P>
+     *
      * @param obj the object we are testing for equality with this object.
      * @return true if <i>obj</i> is an ExecPermission, and has the same
      * pathname as this ExecPermission object, false otherwise.
--- a/src/java.rmi/share/classes/sun/rmi/log/LogInputStream.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.rmi/share/classes/sun/rmi/log/LogInputStream.java	Thu May 21 16:20:20 2015 -0700
@@ -35,7 +35,7 @@
     /**
      * Creates a log input file with the specified system dependent
      * file descriptor.
-     * @param fd the system dependent file descriptor
+     * @param in the system dependent file descriptor
      * @param length the total number of bytes allowed to be read
      * @exception IOException If an I/O error has occurred.
      */
--- a/src/java.rmi/share/classes/sun/rmi/log/LogOutputStream.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.rmi/share/classes/sun/rmi/log/LogOutputStream.java	Thu May 21 16:20:20 2015 -0700
@@ -35,7 +35,7 @@
     /**
      * Creates an output file with the specified system dependent
      * file descriptor.
-     * @param fd the system dependent file descriptor
+     * @param raf the system dependent file descriptor.
      * @exception IOException If an I/O error has occurred.
      */
     public LogOutputStream(RandomAccessFile raf) throws IOException {
--- a/src/java.rmi/share/classes/sun/rmi/log/ReliableLog.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.rmi/share/classes/sun/rmi/log/ReliableLog.java	Thu May 21 16:20:20 2015 -0700
@@ -124,7 +124,7 @@
      * stable storage directory.
      *
      * @param dirPath path to the stable storage directory
-     * @param logCl the closure object containing callbacks for logging and
+     * @param handler the closure object containing callbacks for logging and
      * recovery
      * @param pad ignored
      * @exception IOException If a directory creation error has
@@ -170,8 +170,8 @@
      * stable storage directory.
      *
      * @param dirPath path to the stable storage directory
-     * @param logCl the closure object containing callbacks for logging and
-     * recovery
+     * @param handler the closure object containing callbacks for logging and
+     *        recovery
      * @exception IOException If a directory creation error has
      * occurred or if initialSnapshot callback raises an exception
      */
--- a/src/java.rmi/share/classes/sun/rmi/registry/RegistryImpl.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.rmi/share/classes/sun/rmi/registry/RegistryImpl.java	Thu May 21 16:20:20 2015 -0700
@@ -155,7 +155,7 @@
     /**
      * Returns the remote object for specified name in the registry.
      * @exception RemoteException If remote operation failed.
-     * @exception NotBound If name is not currently bound.
+     * @exception NotBoundException If name is not currently bound.
      */
     public Remote lookup(String name)
         throws RemoteException, NotBoundException
@@ -188,7 +188,7 @@
     /**
      * Unbind the name.
      * @exception RemoteException If remote operation failed.
-     * @exception NotBound If name is not currently bound.
+     * @exception NotBoundException If name is not currently bound.
      */
     public void unbind(String name)
         throws RemoteException, NotBoundException, AccessException
--- a/src/java.rmi/share/classes/sun/rmi/runtime/Log.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.rmi/share/classes/sun/rmi/runtime/Log.java	Thu May 21 16:20:20 2015 -0700
@@ -96,7 +96,7 @@
      * care to interpret a range of values between BRIEF, VERBOSE and
      * SILENT.
      *
-     * An override < 0 is interpreted to mean that the logging
+     * An override {@literal <} 0 is interpreted to mean that the logging
      * configuration should not be overridden. The level passed to the
      * factories createLog method will be null in this case.
      *
--- a/src/java.rmi/share/classes/sun/rmi/server/ActivationGroupImpl.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.rmi/share/classes/sun/rmi/server/ActivationGroupImpl.java	Thu May 21 16:20:20 2015 -0700
@@ -345,7 +345,7 @@
     * request.
     *
     * @param id the object's activation identifier
-    * @returns true if the operation succeeds (the operation will
+    * @return true if the operation succeeds (the operation will
     * succeed if the object in currently known to be active and is
     * either already unexported or is currently exported and has no
     * pending/executing calls); false is returned if the object has
@@ -430,7 +430,7 @@
      * hasn't already done so.
      *
      * @param id the object's identifier
-     * @param obj the remote object implementation
+     * @param impl the remote object implementation
      * @exception UnknownObjectException if object is not registered
      * @exception RemoteException if call informing monitor fails
      */
--- a/src/java.rmi/share/classes/sun/rmi/server/ActivationGroupInit.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.rmi/share/classes/sun/rmi/server/ActivationGroupInit.java	Thu May 21 16:20:20 2015 -0700
@@ -36,7 +36,7 @@
  * The activator spawns (as a child process) an activation group as needed
  * and directs activation requests to the appropriate activation
  * group. After spawning the VM, the activator passes some
- * information to the bootstrap code via its stdin: <p>
+ * information to the bootstrap code via its stdin:
  * <ul>
  * <li> the activation group's id,
  * <li> the activation group's descriptor (an instance of the class
--- a/src/java.rmi/share/classes/sun/rmi/transport/Channel.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.rmi/share/classes/sun/rmi/transport/Channel.java	Thu May 21 16:20:20 2015 -0700
@@ -42,7 +42,7 @@
 
     /**
      * Free the connection generated by this channel.
-     * @param c The connection
+     * @param conn The connection.
      * @param reuse If true, the connection is in a state in which it
      *        can be reused for another method call.
      */
--- a/src/java.rmi/share/classes/sun/rmi/transport/LiveRef.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.rmi/share/classes/sun/rmi/transport/LiveRef.java	Thu May 21 16:20:20 2015 -0700
@@ -56,7 +56,7 @@
 
     /**
      * Construct a "well-known" live reference to a remote object
-     * @param isLocalServer If true, indicates this ref specifies a local
+     * @param isLocal If true, indicates this ref specifies a local
      * server in this address space; if false, the ref is for a remote
      * object (hence a surrogate or proxy) in another address space.
      */
--- a/src/java.rmi/share/classes/sun/rmi/transport/proxy/CGIHandler.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.rmi/share/classes/sun/rmi/transport/proxy/CGIHandler.java	Thu May 21 16:20:20 2015 -0700
@@ -81,7 +81,7 @@
 /**
  * The CGIHandler class contains methods for executing as a CGI program.
  * The main function interprets the query string as a command of the form
- * "<command>=<parameters>".
+ * "{@code <command>=<parameters>}".
  *
  * This class depends on the CGI 1.0 environment variables being set as
  * properties of the same name in this Java VM.
--- a/src/java.scripting/share/classes/javax/script/Compilable.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.scripting/share/classes/javax/script/Compilable.java	Thu May 21 16:20:20 2015 -0700
@@ -42,7 +42,7 @@
      *
      * @param script The source of the script, represented as a <code>String</code>.
      *
-     * @return An subclass of <code>CompiledScript</code> to be executed later using one
+     * @return An instance of a subclass of <code>CompiledScript</code> to be executed later using one
      * of the <code>eval</code> methods of <code>CompiledScript</code>.
      *
      * @throws ScriptException if compilation fails.
@@ -61,7 +61,7 @@
      *
      * @param script The reader from which the script source is obtained.
      *
-     * @return An implementation of <code>CompiledScript</code> to be executed
+     * @return An instance of a subclass of <code>CompiledScript</code> to be executed
      * later using one of its <code>eval</code> methods of <code>CompiledScript</code>.
      *
      * @throws ScriptException if compilation fails.
--- a/src/java.scripting/share/classes/javax/script/SimpleScriptContext.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.scripting/share/classes/javax/script/SimpleScriptContext.java	Thu May 21 16:20:20 2015 -0700
@@ -140,6 +140,7 @@
      * @throws IllegalArgumentException if the name is empty.
      */
     public Object getAttribute(String name) {
+        checkName(name);
         if (engineScope.containsKey(name)) {
             return getAttribute(name, ENGINE_SCOPE);
         } else if (globalScope != null && globalScope.containsKey(name)) {
@@ -162,7 +163,7 @@
      * @throws NullPointerException if the name is null.
      */
     public Object getAttribute(String name, int scope) {
-
+        checkName(name);
         switch (scope) {
 
             case ENGINE_SCOPE:
@@ -191,7 +192,7 @@
      * @throws NullPointerException if the name is null.
      */
     public Object removeAttribute(String name, int scope) {
-
+        checkName(name);
         switch (scope) {
 
             case ENGINE_SCOPE:
@@ -223,7 +224,7 @@
      * @throws NullPointerException if the name is null.
      */
     public void setAttribute(String name, Object value, int scope) {
-
+        checkName(name);
         switch (scope) {
 
             case ENGINE_SCOPE:
@@ -281,6 +282,7 @@
      * @throws IllegalArgumentException if name is empty.
      */
     public int getAttributesScope(String name) {
+        checkName(name);
         if (engineScope.containsKey(name)) {
             return ENGINE_SCOPE;
         } else if (globalScope != null && globalScope.containsKey(name)) {
@@ -314,6 +316,13 @@
         return scopes;
     }
 
+    private void checkName(String name) {
+        Objects.requireNonNull(name);
+        if (name.isEmpty()) {
+            throw new IllegalArgumentException("name cannot be empty");
+        }
+    }
+
     private static List<Integer> scopes;
     static {
         scopes = new ArrayList<Integer>(2);
--- a/src/java.scripting/share/classes/javax/script/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.scripting/share/classes/javax/script/package.html	Thu May 21 16:20:20 2015 -0700
@@ -29,7 +29,7 @@
 </head>
 <body bgcolor="white">
 <p>The scripting API consists of interfaces and classes that define
-Java <font size=1><sup>TM</sup></font> Scripting Engines and provides
+Java&trade; Scripting Engines and provides
 a framework for their use in Java applications. This API is intended
 for use by application programmers who wish to execute programs
 written in scripting languages in their Java applications. The
--- a/src/java.security.jgss/share/classes/sun/security/krb5/Config.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.security.jgss/share/classes/sun/security/krb5/Config.java	Thu May 21 16:20:20 2015 -0700
@@ -1085,27 +1085,30 @@
      * Check if need to use DNS to locate Kerberos services for name. If not
      * defined, check dns_fallback, whose default value is true.
      */
-    private boolean useDNS(String name) {
+    private boolean useDNS(String name, boolean defaultValue) {
         Boolean value = getBooleanObject("libdefaults", name);
         if (value != null) {
             return value.booleanValue();
-        } else {
-            return getBooleanObject("libdefaults", "dns_fallback") != Boolean.FALSE;
         }
+        value = getBooleanObject("libdefaults", "dns_fallback");
+        if (value != null) {
+            return value.booleanValue();
+        }
+        return defaultValue;
     }
 
     /**
      * Check if need to use DNS to locate the KDC
      */
     private boolean useDNS_KDC() {
-        return useDNS("dns_lookup_kdc");
+        return useDNS("dns_lookup_kdc", true);
     }
 
     /*
      * Check if need to use DNS to locate the Realm
      */
     private boolean useDNS_Realm() {
-        return useDNS("dns_lookup_realm");
+        return useDNS("dns_lookup_realm", false);
     }
 
     /**
--- a/src/java.sql.rowset/share/classes/com/sun/rowset/FilteredRowSetImpl.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.sql.rowset/share/classes/com/sun/rowset/FilteredRowSetImpl.java	Thu May 21 16:20:20 2015 -0700
@@ -466,7 +466,7 @@
      *                        passed to the evaluate function.
      * 2. updateXXXstream() - here it would suffice to pass the stream handle
      *                        to the evaluate function and the implementation
-     *                        of the evaluate function can do the comparision
+     *                        of the evaluate function can do the comparison
      *                        based on the stream and also type of data.
      */
 
--- a/src/java.sql.rowset/share/classes/com/sun/rowset/JoinRowSetImpl.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.sql.rowset/share/classes/com/sun/rowset/JoinRowSetImpl.java	Thu May 21 16:20:20 2015 -0700
@@ -4063,14 +4063,16 @@
     }
 
     /**
-     * Provide interface coverage for getURL(int) in ResultSet->RowSet
+     * Provide interface coverage for getURL(int) in
+     * ResultSet{@literal ->}RowSet
      */
     public java.net.URL getURL(int columnIndex) throws SQLException {
         return crsInternal.getURL(columnIndex);
     }
 
     /**
-     * Provide interface coverage for getURL(String) in ResultSet->RowSet
+     * Provide interface coverage for getURL(String) in
+     * ResultSet{@literal ->}RowSet
      */
     public java.net.URL getURL(String columnName) throws SQLException {
         return crsInternal.getURL(columnName);
--- a/src/java.sql.rowset/share/classes/com/sun/rowset/providers/RIOptimisticProvider.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.sql.rowset/share/classes/com/sun/rowset/providers/RIOptimisticProvider.java	Thu May 21 16:20:20 2015 -0700
@@ -36,7 +36,7 @@
  * The reference implementation of a JDBC Rowset synchronization provider
  * providing optimistic synchronization with a relational datastore
  * using any JDBC technology-enabled driver.
- * <p>
+ *
  * <h3>1.0 Backgroud</h3>
  * This synchronization provider is registered with the
  * <code>SyncFactory</code> by default as the
--- a/src/java.sql.rowset/share/classes/javax/sql/rowset/serial/SerialBlob.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.sql.rowset/share/classes/javax/sql/rowset/serial/SerialBlob.java	Thu May 21 16:20:20 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -67,7 +67,7 @@
      * value of this <code>SerialBlob</code> object.
      * @serial
      */
-    private byte buf[];
+    private byte[] buf;
 
     /**
      * The internal representation of the <code>Blob</code> object on which this
@@ -103,12 +103,13 @@
      * @throws SerialException if an error occurs during serialization
      * @throws SQLException if a SQL errors occurs
      */
-    public SerialBlob(byte[] b) throws SerialException, SQLException {
+    public SerialBlob(byte[] b)
+            throws SerialException, SQLException {
 
         len = b.length;
         buf = new byte[(int)len];
         for(int i = 0; i < len; i++) {
-           buf[i] = b[i];
+            buf[i] = b[i];
         }
         origLen = len;
     }
@@ -133,19 +134,17 @@
      *     to this constructor is a <code>null</code>.
      * @see java.sql.Blob
      */
-    public SerialBlob (Blob blob) throws SerialException, SQLException {
+    public SerialBlob (Blob blob)
+            throws SerialException, SQLException {
 
         if (blob == null) {
-            throw new SQLException("Cannot instantiate a SerialBlob " +
-                 "object with a null Blob object");
+            throw new SQLException(
+                    "Cannot instantiate a SerialBlob object with a null Blob object");
         }
 
         len = blob.length();
         buf = blob.getBytes(1, (int)len );
         this.blob = blob;
-
-         //if ( len < 10240000)
-         // len = 10240000;
         origLen = len;
     }
 
@@ -246,7 +245,8 @@
      *         value from the database
      */
     public long position(byte[] pattern, long start)
-                throws SerialException, SQLException {
+            throws SerialException, SQLException {
+
         isValid();
         if (start < 1 || start > len) {
             return -1;
@@ -291,7 +291,7 @@
      *         value from the database
      */
     public long position(Blob pattern, long start)
-       throws SerialException, SQLException {
+            throws SerialException, SQLException {
         isValid();
         return position(pattern.getBytes(1, (int)(pattern.length())), start);
     }
@@ -317,8 +317,8 @@
      * @see #getBytes
      */
     public int setBytes(long pos, byte[] bytes)
-        throws SerialException, SQLException {
-        return (setBytes(pos, bytes, 0, bytes.length));
+            throws SerialException, SQLException {
+        return setBytes(pos, bytes, 0, bytes.length);
     }
 
     /**
@@ -353,7 +353,7 @@
      * @see #getBytes
      */
     public int setBytes(long pos, byte[] bytes, int offset, int length)
-        throws SerialException, SQLException {
+            throws SerialException, SQLException {
 
         isValid();
         if (offset < 0 || offset > bytes.length) {
@@ -370,7 +370,7 @@
 
         if ((length + offset) > bytes.length) {
             throw new SerialException("Invalid OffSet. Cannot have combined offset " +
-                "and length that is greater that the Blob buffer");
+                    "and length that is greater that the Blob buffer");
         }
 
         int i = 0;
@@ -403,7 +403,8 @@
      * @see #getBinaryStream
      */
     public java.io.OutputStream setBinaryStream(long pos)
-        throws SerialException, SQLException {
+            throws SerialException, SQLException {
+
         isValid();
         if (this.blob != null) {
             return this.blob.setBinaryStream(pos);
@@ -426,17 +427,16 @@
      * if {@code free} had previously been called on this object
      */
     public void truncate(long length) throws SerialException {
-
         isValid();
         if (length > len) {
-           throw new SerialException
-              ("Length more than what can be truncated");
+            throw new SerialException(
+                    "Length more than what can be truncated");
         } else if((int)length == 0) {
-             buf = new byte[0];
-             len = length;
+            buf = new byte[0];
+            len = length;
         } else {
-             len = length;
-             buf = this.getBytes(1, (int)len);
+            len = length;
+            buf = this.getBytes(1, (int)len);
         }
     }
 
@@ -467,8 +467,8 @@
             throw new SerialException("Invalid position in BLOB object set");
         }
         if (length < 1 || length > len - pos + 1) {
-            throw new SerialException("length is < 1 or pos + length >"
-                    + "total number of bytes");
+            throw new SerialException(
+                    "length is < 1 or pos + length > total number of bytes");
         }
         return new ByteArrayInputStream(buf, (int) pos - 1, (int) length);
     }
@@ -537,14 +537,13 @@
     public Object clone() {
         try {
             SerialBlob sb = (SerialBlob) super.clone();
-            sb.buf =  (buf != null) ? Arrays.copyOf(buf, (int)len) : null;
+            sb.buf = (buf != null) ? Arrays.copyOf(buf, (int)len) : null;
             sb.blob = null;
             return sb;
         } catch (CloneNotSupportedException ex) {
             // this shouldn't happen, since we are Cloneable
             throw new InternalError();
         }
-
     }
 
     /**
@@ -555,15 +554,15 @@
             throws IOException, ClassNotFoundException {
 
         ObjectInputStream.GetField fields = s.readFields();
-       byte[] tmp = (byte[])fields.get("buf", null);
-       if (tmp == null)
-           throw new InvalidObjectException("buf is null and should not be!");
-       buf = tmp.clone();
-       len = fields.get("len", 0L);
-       if (buf.length != len)
-           throw new InvalidObjectException("buf is not the expected size");
-       origLen = fields.get("origLen", 0L);
-       blob = (Blob) fields.get("blob", null);
+        byte[] tmp = (byte[])fields.get("buf", null);
+        if (tmp == null)
+            throw new InvalidObjectException("buf is null and should not be!");
+        buf = tmp.clone();
+        len = fields.get("len", 0L);
+        if (buf.length != len)
+            throw new InvalidObjectException("buf is not the expected size");
+        origLen = fields.get("origLen", 0L);
+        blob = (Blob) fields.get("blob", null);
     }
 
     /**
@@ -591,8 +590,8 @@
      */
     private void isValid() throws SerialException {
         if (buf == null) {
-            throw new SerialException("Error: You cannot call a method on a "
-                    + "SerialBlob instance once free() has been called.");
+            throw new SerialException("Error: You cannot call a method on a " +
+                    "SerialBlob instance once free() has been called.");
         }
     }
 
--- a/src/java.sql/share/classes/java/sql/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.sql/share/classes/java/sql/package.html	Thu May 21 16:20:20 2015 -0700
@@ -34,10 +34,10 @@
 
 Provides the API for accessing and processing data stored in a 
 data source (usually a relational database) using the 
-Java<sup><font size=-2>TM</font></sup> programming language. 
+Java&trade; programming language. 
 This API includes a framework whereby different
 drivers can be installed dynamically to access different data sources.
-Although the JDBC<sup><font size=-2>TM</font></sup> API is mainly geared 
+Although the JDBC&trade; API is mainly geared 
 to passing SQL statements to a database, it provides for reading and
 writing data from any data source with a tabular format.
 The reader/writer facility, available through the 
@@ -45,17 +45,16 @@
 use and update data from a spread sheet, flat file, or any other tabular 
 data source.
 
-<h2>What the JDBC<sup><font size=-2>TM</font></sup> 4.2 API Includes</h2>
-The JDBC<sup><font size=-2>TM</font></sup> 4.2 API includes both
+<h2>What the JDBC&trade; 4.2 API Includes</h2>
+The JDBC&trade; 4.2 API includes both
 the <code>java.sql</code> package, referred to as the JDBC core API,
 and the <code>javax.sql</code> package, referred to as the JDBC Optional
 Package API. This complete JDBC API
-is included in the Java<sup><font size=-2>TM</font></sup>  
-Standard Edition (Java SE<sup><font size=-2>TM</font></sup>), version 7.
+is included in the Java&trade; Standard Edition (Java SE&trade;), version 7.
 The <code>javax.sql</code> package extends the functionality of the JDBC API 
 from a client-side API to a server-side API, and it is an essential part
-of the Java<sup><font size=-2>TM</font></sup>  Enterprise Edition
-(Java EE<sup><font size=-2>TM</font></sup>) technology. 
+of the Java&trade;  Enterprise Edition
+(Java EE&trade;) technology. 
 
 <h2>Versions</h2>
 The JDBC 4.2 API incorporates all of the previous JDBC API versions:
@@ -74,7 +73,7 @@
 Classes, interfaces, methods, fields, constructors, and exceptions 
 have the following "since" tags that indicate when they were introduced 
 into the Java platform. When these "since" tags are used in
-Javadoc<sup><font size=-2>TM</font></sup> comments for the JDBC API,
+Javadoc&trade; comments for the JDBC API,
 they indicate the following:
 <UL>
     <LI>Since 1.8 -- new in the JDBC 4.2 API and part of the Java SE platform,
@@ -88,7 +87,7 @@
  <LI>Since 1.2 -- new in the JDBC 2.0 API and part of the J2SE platform, 
      version 1.2</li>
  <LI>Since 1.1 or no "since" tag -- in the original JDBC 1.0 API and part of
-     the JDK<sup><font size=-2>TM</font></sup>, version 1.1</li>
+     the JDK&trade;, version 1.1</li>
 </UL>
 <P>
 <b>NOTE:</b> Many of the new features are optional; consequently, there is 
@@ -97,7 +96,7 @@
 you try to use it.
 <P>
 <b>NOTE:</b> The class <code>SQLPermission</code> was added in the
-Java<sup><font size=-2>TM</font></sup> 2 SDK, Standard Edition, 
+Java&trade; 2 SDK, Standard Edition, 
 version 1.3 release. This class is used to prevent unauthorized
 access to the logging stream associated with the <code>DriverManager</code>,
 which may contain information such as table names, column data, and so on.
@@ -277,7 +276,7 @@
 Package API</h3>
 <UL>
   <LI>The <code>DataSource</code> interface as a means of making a connection.  The
-      Java Naming and Directory Interface<sup><font size=-2>TM</font></sup>
+      Java Naming and Directory Interface&trade;
       (JNDI) is used for registering a <code>DataSource</code> object with a 
       naming service and also for  retrieving it.
   <LI>Pooled connections -- allowing connections to be used and reused
--- a/src/java.sql/share/classes/javax/sql/package.html	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.sql/share/classes/javax/sql/package.html	Thu May 21 16:20:20 2015 -0700
@@ -33,7 +33,7 @@
 <body bgcolor="white">
 
 Provides the API for server side data source access and processing from
-the Java<sup><font size=-2>TM</font></sup> programming language.
+the Java&trade; programming language.
 This package supplements the <code>java.sql</code>
 package and, as of the version 1.4 release, is included in the 
 Java Platform, Standard Edition (Java SE&trade;).
@@ -84,7 +84,7 @@
 creates is a connection to that physical data source. 
 <P>
 A logical name for the data source is registered with a naming service that
-uses the Java Naming and Directory Interface<sup><font size=-2>TM</font></sup>  
+uses the Java Naming and Directory Interface&trade;
 (JNDI) API, usually by a system administrator or someone performing the 
 duties of a system administrator. An application can retrieve the
 <code>DataSource</code> object it wants by doing a lookup on the logical
@@ -189,7 +189,7 @@
 <LI>Event Notification 
 <UL>
   <LI><code>RowSetListener</code><br>
-A <code>RowSet</code> object is a JavaBeans<sup><font size=-2>TM</font></sup>
+A <code>RowSet</code> object is a JavaBeans&trade;
 component because it has properties and participates in the JavaBeans
 event notification mechanism. The <code>RowSetListener</code> interface 
 is implemented by a component that wants to be notified about events that 
--- a/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/utils/IgnoreAllErrorHandler.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security/utils/IgnoreAllErrorHandler.java	Thu May 21 16:20:20 2015 -0700
@@ -35,19 +35,30 @@
 public class IgnoreAllErrorHandler implements ErrorHandler {
 
     /** {@link org.apache.commons.logging} logging facility */
-    private static java.util.logging.Logger log =
+    private static final java.util.logging.Logger log =
         java.util.logging.Logger.getLogger(IgnoreAllErrorHandler.class.getName());
 
     /** Field throwExceptions */
-    private static final boolean warnOnExceptions =
-        System.getProperty("com.sun.org.apache.xml.internal.security.test.warn.on.exceptions", "false").equals("true");
+    private static final boolean warnOnExceptions = getProperty(
+            "com.sun.org.apache.xml.internal.security.test.warn.on.exceptions");
 
     /** Field throwExceptions           */
-    private static final boolean throwExceptions =
-        System.getProperty("com.sun.org.apache.xml.internal.security.test.throw.exceptions", "false").equals("true");
+    private static final boolean throwExceptions = getProperty(
+            "com.sun.org.apache.xml.internal.security.test.throw.exceptions");
 
+    private static boolean getProperty(String name) {
+        return java.security.AccessController.doPrivileged(
+                new java.security.PrivilegedAction<Boolean>() {
+
+                    @Override
+                    public Boolean run() {
+                        return Boolean.getBoolean(name);
+                    }
+                });
+    }
 
     /** @inheritDoc */
+    @Override
     public void warning(SAXParseException ex) throws SAXException {
         if (IgnoreAllErrorHandler.warnOnExceptions) {
             log.log(java.util.logging.Level.WARNING, "", ex);
@@ -59,6 +70,7 @@
 
 
     /** @inheritDoc */
+    @Override
     public void error(SAXParseException ex) throws SAXException {
         if (IgnoreAllErrorHandler.warnOnExceptions) {
             log.log(java.util.logging.Level.SEVERE, "", ex);
@@ -70,6 +82,7 @@
 
 
     /** @inheritDoc */
+    @Override
     public void fatalError(SAXParseException ex) throws SAXException {
         if (IgnoreAllErrorHandler.warnOnExceptions) {
             log.log(java.util.logging.Level.WARNING, "", ex);
--- a/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java	Thu May 21 16:20:20 2015 -0700
@@ -326,32 +326,54 @@
         private KeyFactory eckf;
         private ECParameterSpec ecParams;
 
-        // The supported curve, secp256r1
-        private static final Curve SECP256R1;
-        static {
-            final String name, oid, sfield, a, b, x, y, n;
-            name = "secp256r1 [NIST P-256, X9.62 prime256v1]";
-            oid  = "1.2.840.10045.3.1.7";
-            sfield =
-             "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF";
-            a =
-             "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC";
-            b =
-             "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B";
-            x =
-             "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296";
-            y =
-             "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5";
-            n =
-             "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551";
-            final int h = 1;
+        /* Supported curve, secp256r1 */
+        private static final Curve SECP256R1 = initializeCurve(
+            "secp256r1 [NIST P-256, X9.62 prime256v1]",
+            "1.2.840.10045.3.1.7",
+            "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF",
+            "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC",
+            "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B",
+            "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296",
+            "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5",
+            "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551",
+            1
+        );
 
+        /* Supported curve secp384r1 */
+        private static final Curve SECP384R1 = initializeCurve(
+            "secp384r1 [NIST P-384]",
+            "1.3.132.0.34",
+            "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF",
+            "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC",
+            "B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF",
+            "AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7",
+            "3617DE4A96262C6F5D9E98BF9292DC29F8F41DBD289A147CE9DA3113B5F0B8C00A60B1CE1D7E819D7A431D7C90EA0E5F",
+            "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973",
+            1
+        );
+
+        /* Supported curve secp521r1 */
+        private static final Curve SECP521R1 = initializeCurve(
+            "secp521r1 [NIST P-521]",
+            "1.3.132.0.35",
+            "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
+            "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC",
+            "0051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00",
+            "00C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66",
+            "011839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE72995EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650",
+            "01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409",
+            1
+        );
+
+        private static Curve initializeCurve(String name, String oid,
+                String sfield, String a, String b,
+                String x, String y, String n, int h) {
             BigInteger p = bigInt(sfield);
             ECField field = new ECFieldFp(p);
             EllipticCurve curve = new EllipticCurve(field, bigInt(a),
                                                     bigInt(b));
             ECPoint g = new ECPoint(bigInt(x), bigInt(y));
-            SECP256R1 = new Curve(name, oid, curve, g, bigInt(n), h);
+            return new Curve(name, oid, curve, g, bigInt(n), h);
         }
 
         EC(PublicKey key) throws KeyException {
@@ -413,24 +435,45 @@
         }
 
         private static String getCurveOid(ECParameterSpec params) {
-            // Check that the params represent the secp256r1 curve
-            // If so, return the object identifier of the curve
+            // Check that the params represent one of the supported
+            // curves. If there is a match, return the object identifier
+            // of the curve.
+            Curve match;
+            if (matchCurve(params, SECP256R1)) {
+                match = SECP256R1;
+            } else if (matchCurve(params, SECP384R1)) {
+                match = SECP384R1;
+            } else if (matchCurve(params, SECP521R1)) {
+                match = SECP521R1;
+            } else {
+                return null;
+            }
+            return match.getObjectId();
+        }
+
+        private static boolean matchCurve(ECParameterSpec params, Curve curve) {
             int fieldSize = params.getCurve().getField().getFieldSize();
-            if (SECP256R1.getCurve().getField().getFieldSize() == fieldSize
-                && SECP256R1.getCurve().equals(params.getCurve())
-                && SECP256R1.getGenerator().equals(params.getGenerator())
-                && SECP256R1.getOrder().equals(params.getOrder())
-                && SECP256R1.getCofactor() == params.getCofactor()) {
-                return SECP256R1.getObjectId();
+            if (curve.getCurve().getField().getFieldSize() == fieldSize
+                && curve.getCurve().equals(params.getCurve())
+                && curve.getGenerator().equals(params.getGenerator())
+                && curve.getOrder().equals(params.getOrder())
+                && curve.getCofactor() == params.getCofactor()) {
+                return true;
+            } else {
+                return false;
             }
-            return null;
         }
 
         private static ECParameterSpec getECParameterSpec(String oid) {
             if (oid.equals(SECP256R1.getObjectId())) {
                 return SECP256R1;
+            } else if (oid.equals(SECP384R1.getObjectId())) {
+                return SECP384R1;
+            } else if (oid.equals(SECP521R1.getObjectId())) {
+                return SECP521R1;
+            } else {
+                return null;
             }
-            return null;
         }
 
         void marshalPublicKey(Node parent, Document doc, String dsPrefix,
--- a/src/jdk.attach/share/classes/com/sun/tools/attach/package-info.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/jdk.attach/share/classes/com/sun/tools/attach/package-info.java	Thu May 21 16:20:20 2015 -0700
@@ -24,8 +24,7 @@
  */
 
 /**
- * Provides the API to attach to a Java<sup><font size=-2>TM</font></sup>
- * virtual machine.
+ * Provides the API to attach to a Java&trade; virtual machine.
  * <p>
  * A tool, written in the Java Language, uses this API to attach to a target
  * virtual machine (VM) and load its tool agent into the target VM. For
--- a/src/jdk.attach/share/classes/com/sun/tools/attach/spi/AttachProvider.java	Thu May 21 10:07:38 2015 -0700
+++ b/src/jdk.attach/share/classes/com/sun/tools/attach/spi/AttachProvider.java	Thu May 21 16:20:20 2015 -0700
@@ -241,7 +241,7 @@
      * (using the zero-arg constructor) at the first invocation of this method.
      * The list returned by the first invocation of this method is the list
      * of providers. Subsequent invocations of this method return a list of the same
-     * providers. The list is unmodifable.
+     * providers. The list is unmodifiable.
      *
      * @return  A list of the installed attach providers.
      */
@@ -264,8 +264,8 @@
                             ThreadDeath td = (ThreadDeath)t;
                             throw td;
                         }
-                        // Ignore errors and exceptions
-                        System.err.println(t);
+                        // Log errors and exceptions since we cannot return them
+                        t.printStackTrace();
                     }
                 }
             }
--- a/src/jdk.dev/share/classes/com/sun/tools/hat/Main.java	Thu May 21 10:07:38 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-/*
- * Copyright (c) 2005, 2008, 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-/*
- * The Original Code is HAT. The Initial Developer of the
- * Original Code is Bill Foote, with contributions from others
- * at JavaSoft/Sun.
- */
-
-package com.sun.tools.hat;
-
-import java.io.IOException;
-import java.io.File;
-
-import com.sun.tools.hat.internal.model.Snapshot;
-import com.sun.tools.hat.internal.model.ReachableExcludesImpl;
-import com.sun.tools.hat.internal.server.QueryListener;
-
-/**
- *
- * @author      Bill Foote
- */
-
-
-public class Main {
-
-    private static String VERSION_STRING = "jhat version 2.0";
-
-    private static void usage(String message) {
-        if ( message != null ) {
-            System.err.println("ERROR: " + message);
-        }
-        System.err.println("Usage:  jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <file>");
-        System.err.println();
-        System.err.println("\t-J<flag>          Pass <flag> directly to the runtime system. For");
-        System.err.println("\t\t\t  example, -J-mx512m to use a maximum heap size of 512MB");
-        System.err.println("\t-stack false:     Turn off tracking object allocation call stack.");
-        System.err.println("\t-refs false:      Turn off tracking of references to objects");
-        System.err.println("\t-port <port>:     Set the port for the HTTP server.  Defaults to 7000");
-        System.err.println("\t-exclude <file>:  Specify a file that lists data members that should");
-        System.err.println("\t\t\t  be excluded from the reachableFrom query.");
-        System.err.println("\t-baseline <file>: Specify a baseline object dump.  Objects in");
-        System.err.println("\t\t\t  both heap dumps with the same ID and same class will");
-        System.err.println("\t\t\t  be marked as not being \"new\".");
-        System.err.println("\t-debug <int>:     Set debug level.");
-        System.err.println("\t\t\t    0:  No debug output");
-        System.err.println("\t\t\t    1:  Debug hprof file parsing");
-        System.err.println("\t\t\t    2:  Debug hprof file parsing, no server");
-        System.err.println("\t-version          Report version number");
-        System.err.println("\t-h|-help          Print this help and exit");
-        System.err.println("\t<file>            The file to read");
-        System.err.println();
-        System.err.println("For a dump file that contains multiple heap dumps,");
-        System.err.println("you may specify which dump in the file");
-        System.err.println("by appending \"#<number>\" to the file name, i.e. \"foo.hprof#3\".");
-        System.err.println();
-        System.err.println("All boolean options default to \"true\"");
-        System.exit(1);
-    }
-
-    //
-    // Convert s to a boolean.  If it's invalid, abort the program.
-    //
-    private static boolean booleanValue(String s) {
-        if ("true".equalsIgnoreCase(s)) {
-            return true;
-        } else if ("false".equalsIgnoreCase(s)) {
-            return false;
-        } else {
-            usage("Boolean value must be true or false");
-            return false;       // Never happens
-        }
-    }
-
-    public static void main(String[] args) {
-        if (args.length < 1) {
-            usage("No arguments supplied");
-        }
-
-        boolean parseonly = false;
-        int portNumber = 7000;
-        boolean callStack = true;
-        boolean calculateRefs = true;
-        String baselineDump = null;
-        String excludeFileName = null;
-        int debugLevel = 0;
-        for (int i = 0; ; i += 2) {
-            if (i > (args.length - 1)) {
-                usage("Option parsing error");
-            }
-            if ("-version".equals(args[i])) {
-                System.out.print(VERSION_STRING);
-                System.out.println(" (java version " + System.getProperty("java.version") + ")");
-                System.exit(0);
-            }
-
-            if ("-h".equals(args[i]) || "-help".equals(args[i])) {
-                usage(null);
-            }
-
-            if (i == (args.length - 1)) {
-                break;
-            }
-            String key = args[i];
-            String value = args[i+1];
-            if ("-stack".equals(key)) {
-                callStack = booleanValue(value);
-            } else if ("-refs".equals(key)) {
-                calculateRefs = booleanValue(value);
-            } else if ("-port".equals(key)) {
-                portNumber = Integer.parseInt(value, 10);
-            } else if ("-exclude".equals(key)) {
-                excludeFileName = value;
-            } else if ("-baseline".equals(key)) {
-                baselineDump = value;
-            } else if ("-debug".equals(key)) {
-                debugLevel = Integer.parseInt(value, 10);
-            } else if ("-parseonly".equals(key)) {
-                // Undocumented option. To be used for testing purpose only
-                parseonly = booleanValue(value);
-            }
-        }
-        String fileName = args[args.length - 1];
-        Snapshot model = null;
-        File excludeFile = null;
-        if (excludeFileName != null) {
-            excludeFile = new File(excludeFileName);
-            if (!excludeFile.exists()) {
-                System.out.println("Exclude file " + excludeFile
-                                    + " does not exist.  Aborting.");
-                System.exit(1);
-            }
-        }
-
-        System.out.println("Reading from " + fileName + "...");
-        try {
-            model = com.sun.tools.hat.internal.parser.Reader.readFile(fileName, callStack, debugLevel);
-        } catch (IOException ex) {
-            ex.printStackTrace();
-            System.exit(1);
-        } catch (RuntimeException ex) {
-            ex.printStackTrace();
-            System.exit(1);
-        }
-        System.out.println("Snapshot read, resolving...");
-        model.resolve(calculateRefs);
-        System.out.println("Snapshot resolved.");
-
-        if (excludeFile != null) {
-            model.setReachableExcludes(new ReachableExcludesImpl(excludeFile));
-        }
-
-        if (baselineDump != null) {
-            System.out.println("Reading baseline snapshot...");
-            Snapshot baseline = null;
-            try {
-                baseline = com.sun.tools.hat.internal.parser.Reader.readFile(baselineDump, false,
-                                                      debugLevel);
-            } catch (IOException ex) {
-                ex.printStackTrace();
-                System.exit(1);
-            } catch (RuntimeException ex) {
-                ex.printStackTrace();
-                System.exit(1);
-            }
-            baseline.resolve(false);
-            System.out.println("Discovering new objects...");
-            model.markNewRelativeTo(baseline);
-            baseline = null;    // Guard against conservative GC
-        }
-        if ( debugLevel == 2 ) {
-            System.out.println("No server, -debug 2 was used.");
-            System.exit(0);
-        }
-
-        if (parseonly) {
-            // do not start web server.
-            System.out.println("-parseonly is true, exiting..");
-            System.exit(0);
-        }
-
-        QueryListener listener = new QueryListener(portNumber);
-        listener.setModel(model);
-        Thread t = new Thread(listener, "Query Listener");
-        t.setPriority(Thread.NORM_PRIORITY+1);
-        t.start();
-        System.out.println("Started HTTP server on port " + portNumber);
-        System.out.println("Server is ready.");
-    }
-}
--- a/src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/AbstractJavaHeapObjectVisitor.java	Thu May 21 10:07:38 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 1997, 2008, 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-
-/*
- * The Original Code is HAT. The Initial Developer of the
- * Original Code is Bill Foote, with contributions from others
- * at JavaSoft/Sun.
- */
-
-package com.sun.tools.hat.internal.model;
-
-/**
- * A visitor for a JavaThing.  @see JavaObject#visitReferencedObjects()
- *
- */
-
-
-abstract public class AbstractJavaHeapObjectVisitor
-                implements JavaHeapObjectVisitor {
-    abstract public void visit(JavaHeapObject other);
-
-    /**
-     * Should the given field be excluded from the set of things visited?
-     * @return true if it should.
-     */
-    public boolean exclude(JavaClass clazz, JavaField f) {
-        return false;
-    }
-
-    /**
-     * @return true iff exclude might ever return true
-     */
-    public boolean mightExclude() {
-        return false;
-    }
-
-}
--- a/src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/ArrayTypeCodes.java	Thu May 21 10:07:38 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1997, 2008, 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-
-/*
- * The Original Code is HAT. The Initial Developer of the
- * Original Code is Bill Foote, with contributions from others
- * at JavaSoft/Sun.
- */
-
-package com.sun.tools.hat.internal.model;
-
-/**
- * Primitive array type codes as defined by VM specification.
- *
- */
-public interface ArrayTypeCodes {
-    // Typecodes for array elements.
-    // Refer to newarray instruction in VM Spec.
-    public static final int T_BOOLEAN = 4;
-    public static final int T_CHAR    = 5;
-    public static final int T_FLOAT   = 6;
-    public static final int T_DOUBLE  = 7;
-    public static final int T_BYTE    = 8;
-    public static final int T_SHORT   = 9;
-    public static final int T_INT     = 10;
-    public static final int T_LONG    = 11;
-}
--- a/src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/HackJavaValue.java	Thu May 21 10:07:38 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 1997, 2008, 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-
-/*
- * The Original Code is HAT. The Initial Developer of the
- * Original Code is Bill Foote, with contributions from others
- * at JavaSoft/Sun.
- */
-
-package com.sun.tools.hat.internal.model;
-
-/**
- * This is used to represent values that the program doesn't really understand.
- * This includes the null vlaue, and unresolved references (which shouldn't
- * happen in well-formed hprof files).
- *
- *
- * @author      Bill Foote
- */
-
-
-
-
-public class HackJavaValue extends JavaValue {
-
-    private String value;
-    private int size;
-
-    public HackJavaValue(String value, int size) {
-        this.value = value;
-        this.size = size;
-    }
-
-    public String toString() {
-        return value;
-    }
-
-    public int getSize() {
-        return size;
-    }
-
-}
--- a/src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaBoolean.java	Thu May 21 10:07:38 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 1997, 2008, 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-
-/*
- * The Original Code is HAT. The Initial Developer of the
- * Original Code is Bill Foote, with contributions from others
- * at JavaSoft/Sun.
- */
-
-package com.sun.tools.hat.internal.model;
-
-/**
- * Represents a boolean (i.e. a boolean field in an instance).
- *
- * @author      Bill Foote
- */
-
-
-public class JavaBoolean extends JavaValue {
-
-    boolean value;
-
-    public JavaBoolean(boolean value) {
-        this.value = value;
-    }
-
-    public String toString() {
-        return "" + value;
-    }
-
-}
--- a/src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaByte.java	Thu May 21 10:07:38 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 1997, 2008, 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-
-/*
- * The Original Code is HAT. The Initial Developer of the
- * Original Code is Bill Foote, with contributions from others
- * at JavaSoft/Sun.
- */
-
-package com.sun.tools.hat.internal.model;
-
-/**
- * Represents an byte (i.e. a byte field in an instance).
- *
- * @author      Bill Foote
- */
-
-
-public class JavaByte extends JavaValue {
-
-    byte value;
-
-    public JavaByte(byte value) {
-        this.value = value;
-    }
-
-    public String toString() {
-        return "0x" + Integer.toString(((int) value) & 0xff, 16);
-    }
-
-}
--- a/src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaChar.java	Thu May 21 10:07:38 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 1997, 2008, 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-
-/*
- * The Original Code is HAT. The Initial Developer of the
- * Original Code is Bill Foote, with contributions from others
- * at JavaSoft/Sun.
- */
-
-package com.sun.tools.hat.internal.model;
-
-/**
- * Represents a char (i.e. a char field in an instance).
- *
- * @author      Bill Foote
- */
-
-
-public class JavaChar extends JavaValue {
-
-    char value;
-
-    public JavaChar(char value) {
-        this.value = value;
-    }
-
-    public String toString() {
-        return "" + value;
-    }
-
-}
--- a/src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaClass.java	Thu May 21 10:07:38 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,503 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-
-/*
- * The Original Code is HAT. The Initial Developer of the
- * Original Code is Bill Foote, with contributions from others
- * at JavaSoft/Sun.
- */
-
-package com.sun.tools.hat.internal.model;
-
-import java.util.Vector;
-import java.util.Enumeration;
-import com.sun.tools.hat.internal.util.CompositeEnumeration;
-import com.sun.tools.hat.internal.parser.ReadBuffer;
-
-/**
- *
- * @author      Bill Foote
- */
-
-
-public class JavaClass extends JavaHeapObject {
-    // my id
-    private long id;
-    // my name
-    private String name;
-
-    // These are JavaObjectRef before resolve
-    private JavaThing superclass;
-    private JavaThing loader;
-    private JavaThing signers;
-    private JavaThing protectionDomain;
-
-    // non-static fields
-    private JavaField[] fields;
-    // static fields
-    private JavaStatic[] statics;
-
-    private static final JavaClass[] EMPTY_CLASS_ARRAY = new JavaClass[0];
-    // my subclasses
-    private JavaClass[] subclasses = EMPTY_CLASS_ARRAY;
-
-    // my instances
-    private Vector<JavaHeapObject> instances = new Vector<JavaHeapObject>();
-
-    // Who I belong to.  Set on resolve.
-    private Snapshot mySnapshot;
-
-    // Size of an instance, including VM overhead
-    private int instanceSize;
-    // Total number of fields including inherited ones
-    private int totalNumFields;
-
-
-    public JavaClass(long id, String name, long superclassId, long loaderId,
-                     long signersId, long protDomainId,
-                     JavaField[] fields, JavaStatic[] statics,
-                     int instanceSize) {
-        this.id = id;
-        this.name = name;
-        this.superclass = new JavaObjectRef(superclassId);
-        this.loader = new JavaObjectRef(loaderId);
-        this.signers = new JavaObjectRef(signersId);
-        this.protectionDomain = new JavaObjectRef(protDomainId);
-        this.fields = fields;
-        this.statics = statics;
-        this.instanceSize = instanceSize;
-    }
-
-    public JavaClass(String name, long superclassId, long loaderId,
-                     long signersId, long protDomainId,
-                     JavaField[] fields, JavaStatic[] statics,
-                     int instanceSize) {
-        this(-1L, name, superclassId, loaderId, signersId,
-             protDomainId, fields, statics, instanceSize);
-    }
-
-    public final JavaClass getClazz() {
-        return mySnapshot.getJavaLangClass();
-    }
-
-    public final int getIdentifierSize() {
-        return mySnapshot.getIdentifierSize();
-    }
-
-    public final int getMinimumObjectSize() {
-        return mySnapshot.getMinimumObjectSize();
-    }
-
-    public void resolve(Snapshot snapshot) {
-        if (mySnapshot != null) {
-            return;
-        }
-        mySnapshot = snapshot;
-        resolveSuperclass(snapshot);
-        if (superclass != null) {
-            ((JavaClass) superclass).addSubclass(this);
-        }
-
-        loader  = loader.dereference(snapshot, null);
-        signers  = signers.dereference(snapshot, null);
-        protectionDomain  = protectionDomain.dereference(snapshot, null);
-
-        for (int i = 0; i < statics.length; i++) {
-            statics[i].resolve(this, snapshot);
-        }
-        snapshot.getJavaLangClass().addInstance(this);
-        super.resolve(snapshot);
-        return;
-    }
-
-    /**
-     * Resolve our superclass.  This might be called well before
-     * all instances are available (like when reading deferred
-     * instances in a 1.2 dump file :-)  Calling this is sufficient
-     * to be able to explore this class' fields.
-     */
-    public void resolveSuperclass(Snapshot snapshot) {
-        if (superclass == null) {
-            // We must be java.lang.Object, so we have no superclass.
-        } else {
-            totalNumFields = fields.length;
-            superclass = superclass.dereference(snapshot, null);
-            if (superclass == snapshot.getNullThing()) {
-                superclass = null;
-            } else {
-                try {
-                    JavaClass sc = (JavaClass) superclass;
-                    sc.resolveSuperclass(snapshot);
-                    totalNumFields += sc.totalNumFields;
-                } catch (ClassCastException ex) {
-                    System.out.println("Warning!  Superclass of " + name + " is " + superclass);
-                    superclass = null;
-                }
-            }
-        }
-    }
-
-    public boolean isString() {
-        return mySnapshot.getJavaLangString() == this;
-    }
-
-    public boolean isClassLoader() {
-        return mySnapshot.getJavaLangClassLoader().isAssignableFrom(this);
-    }
-
-    /**
-     * Get a numbered field from this class
-     */
-    public JavaField getField(int i) {
-        if (i < 0 || i >= fields.length) {
-            throw new Error("No field " + i + " for " + name);
-        }
-        return fields[i];
-    }
-
-    /**
-     * Get the total number of fields that are part of an instance of
-     * this class.  That is, include superclasses.
-     */
-    public int getNumFieldsForInstance() {
-        return totalNumFields;
-    }
-
-    /**
-     * Get a numbered field from all the fields that are part of instance
-     * of this class.  That is, include superclasses.
-     */
-    public JavaField getFieldForInstance(int i) {
-        if (superclass != null) {
-            JavaClass sc = (JavaClass) superclass;
-            if (i < sc.totalNumFields) {
-                return sc.getFieldForInstance(i);
-            }
-            i -= sc.totalNumFields;
-        }
-        return getField(i);
-    }
-
-    /**
-     * Get the class responsible for field i, where i is a field number that
-     * could be passed into getFieldForInstance.
-     *
-     * @see JavaClass.getFieldForInstance()
-     */
-    public JavaClass getClassForField(int i) {
-        if (superclass != null) {
-            JavaClass sc = (JavaClass) superclass;
-            if (i < sc.totalNumFields) {
-                return sc.getClassForField(i);
-            }
-        }
-        return this;
-    }
-
-    public long getId() {
-        return id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public boolean isArray() {
-        return name.indexOf('[') != -1;
-    }
-
-    public Enumeration<JavaHeapObject> getInstances(boolean includeSubclasses) {
-        if (includeSubclasses) {
-            Enumeration<JavaHeapObject> res = instances.elements();
-            for (int i = 0; i < subclasses.length; i++) {
-                res = new CompositeEnumeration(res,
-                              subclasses[i].getInstances(true));
-            }
-            return res;
-        } else {
-            return instances.elements();
-        }
-    }
-
-    /**
-     * @return a count of the instances of this class
-     */
-    public int getInstancesCount(boolean includeSubclasses) {
-        int result = instances.size();
-        if (includeSubclasses) {
-            for (int i = 0; i < subclasses.length; i++) {
-                result += subclasses[i].getInstancesCount(includeSubclasses);
-            }
-        }
-        return result;
-    }
-
-    public JavaClass[] getSubclasses() {
-        return subclasses;
-    }
-
-    /**
-     * This can only safely be called after resolve()
-     */
-    public JavaClass getSuperclass() {
-        return (JavaClass) superclass;
-    }
-
-    /**
-     * This can only safely be called after resolve()
-     */
-    public JavaThing getLoader() {
-        return loader;
-    }
-
-    /**
-     * This can only safely be called after resolve()
-     */
-    public boolean isBootstrap() {
-        return loader == mySnapshot.getNullThing();
-    }
-
-    /**
-     * This can only safely be called after resolve()
-     */
-    public JavaThing getSigners() {
-        return signers;
-    }
-
-    /**
-     * This can only safely be called after resolve()
-     */
-    public JavaThing getProtectionDomain() {
-        return protectionDomain;
-    }
-
-    public JavaField[] getFields() {
-        return fields;
-    }
-
-    /**
-     * Includes superclass fields
-     */
-    public JavaField[] getFieldsForInstance() {
-        Vector<JavaField> v = new Vector<JavaField>();
-        addFields(v);
-        JavaField[] result = new JavaField[v.size()];
-        for (int i = 0; i < v.size(); i++) {
-            result[i] =  v.elementAt(i);
-        }
-        return result;
-    }
-
-
-    public JavaStatic[] getStatics() {
-        return statics;
-    }
-
-    // returns value of static field of given name
-    public JavaThing getStaticField(String name) {
-        for (int i = 0; i < statics.length; i++) {
-            JavaStatic s = statics[i];
-            if (s.getField().getName().equals(name)) {
-                return s.getValue();
-            }
-        }
-        return null;
-    }
-
-    public String toString() {
-        return "class " + name;
-    }
-
-    public int compareTo(JavaThing other) {
-        if (other instanceof JavaClass) {
-            return name.compareTo(((JavaClass) other).name);
-        }
-        return super.compareTo(other);
-    }
-
-
-    /**
-     * @return true iff a variable of type this is assignable from an instance
-     *          of other
-     */
-    public boolean isAssignableFrom(JavaClass other) {
-        if (this == other) {
-            return true;
-        } else if (other == null) {
-            return false;
-        } else {
-            return isAssignableFrom((JavaClass) other.superclass);
-            // Trivial tail recursion:  I have faith in javac.
-        }
-    }
-
-    /**
-     * Describe the reference that this thing has to target.  This will only
-     * be called if target is in the array returned by getChildrenForRootset.
-     */
-     public String describeReferenceTo(JavaThing target, Snapshot ss) {
-        for (int i = 0; i < statics.length; i++) {
-            JavaField f = statics[i].getField();
-            if (f.hasId()) {
-                JavaThing other = statics[i].getValue();
-                if (other == target) {
-                    return "static field " + f.getName();
-                }
-            }
-        }
-        return super.describeReferenceTo(target, ss);
-    }
-
-    /**
-     * @return the size of an instance of this class.  Gives 0 for an array
-     *          type.
-     */
-    public int getInstanceSize() {
-        return instanceSize + mySnapshot.getMinimumObjectSize();
-    }
-
-
-    /**
-     * @return The size of all instances of this class.  Correctly handles
-     *          arrays.
-     */
-    public long getTotalInstanceSize() {
-        int count = instances.size();
-        if (count == 0 || !isArray()) {
-            return count * instanceSize;
-        }
-
-        // array class and non-zero count, we have to
-        // get the size of each instance and sum it
-        long result = 0;
-        for (int i = 0; i < count; i++) {
-            JavaThing t = (JavaThing) instances.elementAt(i);
-            result += t.getSize();
-        }
-        return result;
-    }
-
-    /**
-     * @return the size of this object
-     */
-    public int getSize() {
-        JavaClass cl = mySnapshot.getJavaLangClass();
-        if (cl == null) {
-            return 0;
-        } else {
-            return cl.getInstanceSize();
-        }
-    }
-
-    public void visitReferencedObjects(JavaHeapObjectVisitor v) {
-        super.visitReferencedObjects(v);
-        JavaHeapObject sc = getSuperclass();
-        if (sc != null) v.visit(getSuperclass());
-
-        JavaThing other;
-        other = getLoader();
-        if (other instanceof JavaHeapObject) {
-            v.visit((JavaHeapObject)other);
-        }
-        other = getSigners();
-        if (other instanceof JavaHeapObject) {
-            v.visit((JavaHeapObject)other);
-        }
-        other = getProtectionDomain();
-        if (other instanceof JavaHeapObject) {
-            v.visit((JavaHeapObject)other);
-        }
-
-        for (int i = 0; i < statics.length; i++) {
-            JavaField f = statics[i].getField();
-            if (!v.exclude(this, f) && f.hasId()) {
-                other = statics[i].getValue();
-                if (other instanceof JavaHeapObject) {
-                    v.visit((JavaHeapObject) other);
-                }
-            }
-        }
-    }
-
-    // package-privates below this point
-    final ReadBuffer getReadBuffer() {
-        return mySnapshot.getReadBuffer();
-    }
-
-    final void setNew(JavaHeapObject obj, boolean flag) {
-        mySnapshot.setNew(obj, flag);
-    }
-
-    final boolean isNew(JavaHeapObject obj) {
-        return mySnapshot.isNew(obj);
-    }
-
-    final StackTrace getSiteTrace(JavaHeapObject obj) {
-        return mySnapshot.getSiteTrace(obj);
-    }
-
-    final void addReferenceFromRoot(Root root, JavaHeapObject obj) {
-        mySnapshot.addReferenceFromRoot(root, obj);
-    }
-
-    final Root getRoot(JavaHeapObject obj) {
-        return mySnapshot.getRoot(obj);
-    }
-
-    final Snapshot getSnapshot() {
-        return mySnapshot;
-    }
-
-    void addInstance(JavaHeapObject inst) {
-        instances.addElement(inst);
-    }
-
-    // Internals only below this point
-    private void addFields(Vector<JavaField> v) {
-        if (superclass != null) {
-            ((JavaClass) superclass).addFields(v);
-        }
-        for (int i = 0; i < fields.length; i++) {
-            v.addElement(fields[i]);
-        }
-    }
-
-    private void addSubclassInstances(Vector<JavaHeapObject> v) {
-        for (int i = 0; i < subclasses.length; i++) {
-            subclasses[i].addSubclassInstances(v);
-        }
-        for (int i = 0; i < instances.size(); i++) {
-            v.addElement(instances.elementAt(i));
-        }
-    }
-
-    private void addSubclass(JavaClass sub) {
-        JavaClass newValue[] = new JavaClass[subclasses.length + 1];
-        System.arraycopy(subclasses, 0, newValue, 0, subclasses.length);
-        newValue[subclasses.length] = sub;
-        subclasses = newValue;
-    }
-}
--- a/src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaDouble.java	Thu May 21 10:07:38 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 1997, 2008, 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-
-/*
- * The Original Code is HAT. The Initial Developer of the
- * Original Code is Bill Foote, with contributions from others
- * at JavaSoft/Sun.
- */
-
-package com.sun.tools.hat.internal.model;
-
-/**
- * Represents a double (i.e. a double field in an instance).
- *
- * @author      Bill Foote
- */
-
-
-public class JavaDouble extends JavaValue {
-
-    double value;
-
-    public JavaDouble(double value) {
-        this.value = value;
-    }
-
-    public String toString() {
-        return Double.toString(value);
-    }
-}
--- a/src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaField.java	Thu May 21 10:07:38 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 1997, 2008, 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-
-/*
- * The Original Code is HAT. The Initial Developer of the
- * Original Code is Bill Foote, with contributions from others
- * at JavaSoft/Sun.
- */
-
-package com.sun.tools.hat.internal.model;
-
-
-/**
- *
- * @author      Bill Foote
- */
-
-public class JavaField {
-
-    private String name;
-    private String signature;
-
-    public JavaField(String name, String signature) {
-        this.name = name;
-        this.signature = signature;
-    }
-
-
-    /**
-     * @return true if the type of this field is something that has an ID.
-     *          int fields, for exampe, don't.
-     */
-    public boolean hasId() {
-        char ch = signature.charAt(0);
-        return (ch == '[' || ch == 'L');
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getSignature() {
-        return signature;
-    }
-
-}
--- a/src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaFloat.java	Thu May 21 10:07:38 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 1997, 2008, 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.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-
-/*
- * The Original Code is HAT. The Initial Developer of the
- * Original Code is Bill Foote, with contributions from others
- * at JavaSoft/Sun.
- */
-
-package com.sun.tools.hat.internal.model;
-
-/**
- * Represents a float (i.e. a float field in an instance).
- *
- * @author      Bill Foote
- */
-
-
-public class JavaFloat extends JavaValue {
-
-    float value;
-
-    public JavaFloat(float value) {
-        this.value = value;
-    }
-
-    public String toString() {
-        return Float.toString(value);
-    }
-}
--- a/src/jdk.dev/share/classes/com/sun/tools/hat/internal/model/JavaHeapObject.java	Thu May 21 10:07:38 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,207 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * 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.
- */
-
-
-/*
- * The Original Code is HAT. The Initial Developer of the
- * Original Code is Bill Foote, with contributions from others
- * at JavaSoft/Sun.
- */
-
-package com.sun.tools.hat.internal.model;
-
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-import com.sun.tools.hat.internal.util.Misc;
-
-
-/**
- *
- * @author      Bill Foote
- */
-
-/**
- * Represents an object that's allocated out of the Java heap.  It occupies
- * memory in the VM, and is the sort of thing that in a JDK 1.1 VM had
- * a handle.  It can be a
- * JavaClass, a JavaObjectArray, a JavaValueArray or a JavaObject.
- */
-
-public abstract class JavaHeapObject extends JavaThing {
-
-    //
-    // Who we refer to.  This is heavily optimized for space, because it's
-    // well worth trading a bit of speed for less swapping.
-    // referers and referersLen go through two phases:  Building and
-    // resolved.  When building, referers might have duplicates, but can
-    // be appended to.  When resolved, referers has no duplicates or
-    // empty slots.
-    //
-    private JavaThing[] referers = null;
-    private int referersLen = 0;        // -1 when resolved
-
-    public abstract JavaClass getClazz();
-    public abstract int getSize();
-    public abstract long getId();
-
-    /**
-     * Do any initialization this thing needs after its data is read in.
-     * Subclasses that override this should call super.resolve().
-     */
-    public void resolve(Snapshot snapshot) {
-        StackTrace trace = snapshot.getSiteTrace(this);
-        if (trace != null) {
-            trace.resolve(snapshot);
-        }
-    }
-
-    //
-    //  Eliminate duplicates from referers, and size the array exactly.
-    // This sets us up to answer queries.  See the comments around the
-    // referers data member for details.
-    //
-    void setupReferers() {
-        if (referersLen > 1) {
-            // Copy referers to map, screening out duplicates
-            Map<JavaThing, JavaThing> map = new HashMap<JavaThing, JavaThing>();
-            for (int i = 0; i < referersLen; i++) {
-                if (map.get(referers[i]) == null) {
-                    map.put(referers[i], referers[i]);
-                }
-            }
-
-            // Now copy into the array
-            referers = new JavaThing[map.size()];
-            map.keySet().toArray(referers);
-        }
-        referersLen = -1;
-    }
-
-
-    /**
-     * @return the id of this thing as hex string
-     */
-    public String getIdString() {
-        return Misc.toHex(getId());
-    }
-
-    public String toString() {
-        return getClazz().getName() + "@" + getIdString();
-    }
-
-    /**
-     * @return the StackTrace of the point of allocation of this object,
-     *          or null if unknown
-     */
-    public StackTrace getAllocatedFrom() {
-        return getClazz().getSiteTrace(this);
-    }
-
-    public boolean isNew() {
-        return getClazz().isNew(this);
-    }
-
-    void setNew(boolean flag) {
-        getClazz().setNew(this, flag);
-    }
-
-    /**
-     * Tell the visitor about all of the objects we refer to
-     */
-    public void visitReferencedObjects(JavaHeapObjectVisitor v) {
-        v.visit(getClazz());
-    }
-
-    void addReferenceFrom(JavaHeapObject other) {
-        if (referersLen == 0) {
-            referers = new JavaThing[1];        // It was null
-        } else if (referersLen == referers.length) {
-            JavaThing[] copy = new JavaThing[(3 * (referersLen + 1)) / 2];
-            System.arraycopy(referers, 0, copy, 0, referersLen);