Merge JDK-8200758-branch
authorherrick
Fri, 09 Nov 2018 11:15:38 -0500
branchJDK-8200758-branch
changeset 57026 5f20b792d15b
parent 57025 bab8a5dae662 (current diff)
parent 52473 a8389aeabf90 (diff)
child 57027 124983f48645
Merge
--- a/src/hotspot/cpu/x86/x86_64.ad	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/cpu/x86/x86_64.ad	Fri Nov 09 11:15:38 2018 -0500
@@ -11925,9 +11925,9 @@
   ins_pipe(ialu_cr_reg_mem);
 %}
 
-instruct testB_mem_imm(rFlagsReg cr, memory mem, immI8 imm, immI0 zero)
-%{
-  match(Set cr (CmpI (AndI (LoadB mem) imm) zero));
+instruct testUB_mem_imm(rFlagsReg cr, memory mem, immU8 imm, immI0 zero)
+%{
+  match(Set cr (CmpI (AndI (LoadUB mem) imm) zero));
 
   ins_cost(125);
   format %{ "testb   $mem, $imm" %}
--- a/src/hotspot/share/classfile/systemDictionaryShared.cpp	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/classfile/systemDictionaryShared.cpp	Fri Nov 09 11:15:38 2018 -0500
@@ -27,6 +27,7 @@
 #include "classfile/classListParser.hpp"
 #include "classfile/classLoader.hpp"
 #include "classfile/classLoaderData.inline.hpp"
+#include "classfile/classLoaderDataGraph.hpp"
 #include "classfile/classLoaderExt.hpp"
 #include "classfile/dictionary.hpp"
 #include "classfile/javaClasses.hpp"
@@ -782,8 +783,16 @@
   }
 }
 
+void SystemDictionaryShared::finalize_verification_constraints_for(InstanceKlass* k) {
+  if (!k->is_unsafe_anonymous()) {
+    SharedDictionaryEntry* entry = ((SharedDictionary*)(k->class_loader_data()->dictionary()))->find_entry_for(k);
+    entry->finalize_verification_constraints();
+  }
+}
+
 void SystemDictionaryShared::finalize_verification_constraints() {
-  boot_loader_dictionary()->finalize_verification_constraints();
+  MutexLocker mcld(ClassLoaderDataGraph_lock);
+  ClassLoaderDataGraph::dictionary_classes_do(finalize_verification_constraints_for);
 }
 
 void SystemDictionaryShared::check_verification_constraints(InstanceKlass* klass,
@@ -810,28 +819,6 @@
   return NULL;
 }
 
-void SharedDictionary::finalize_verification_constraints() {
-  int bytes = 0, count = 0;
-  for (int index = 0; index < table_size(); index++) {
-    for (SharedDictionaryEntry *probe = bucket(index);
-                                probe != NULL;
-                               probe = probe->next()) {
-      int n = probe->finalize_verification_constraints();
-      if (n > 0) {
-        bytes += n;
-        count ++;
-      }
-    }
-  }
-  if (log_is_enabled(Info, cds, verification)) {
-    double avg = 0;
-    if (count > 0) {
-      avg = double(bytes) / double(count);
-    }
-    log_info(cds, verification)("Recorded verification constraints for %d classes = %d bytes (avg = %.2f bytes) ", count, bytes, avg);
-  }
-}
-
 void SharedDictionaryEntry::add_verification_constraint(Symbol* name,
          Symbol* from_name, bool from_field_is_protected, bool from_is_array, bool from_is_object) {
   if (_verifier_constraints == NULL) {
--- a/src/hotspot/share/classfile/systemDictionaryShared.hpp	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/classfile/systemDictionaryShared.hpp	Fri Nov 09 11:15:38 2018 -0500
@@ -172,7 +172,6 @@
 
 public:
   SharedDictionaryEntry* find_entry_for(InstanceKlass* klass);
-  void finalize_verification_constraints();
 
   bool add_non_builtin_klass(const Symbol* class_name,
                              ClassLoaderData* loader_data,
@@ -283,7 +282,7 @@
                                  Handle class_loader,
                                  Handle protection_domain,
                                  TRAPS);
-
+  static void finalize_verification_constraints_for(InstanceKlass* k);
 public:
   // Called by PLATFORM/APP loader only
   static InstanceKlass* find_or_load_shared_class(Symbol* class_name,
--- a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp	Fri Nov 09 11:15:38 2018 -0500
@@ -288,6 +288,9 @@
 #ifdef ASSERT
   virtual bool verify_gc_alias_type(const TypePtr* adr_type, int offset) const { return false; }
 #endif
+
+  virtual bool final_graph_reshaping(Compile* compile, Node* n, uint opcode) const { return false; }
+
 };
 
 #endif // SHARE_GC_SHARED_C2_BARRIERSETC2_HPP
--- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp	Fri Nov 09 11:15:38 2018 -0500
@@ -1435,6 +1435,29 @@
   return type == T_OBJECT || type == T_ARRAY;
 }
 
+bool ZBarrierSetC2::final_graph_reshaping(Compile* compile, Node* n, uint opcode) const {
+  bool handled;
+  switch (opcode) {
+    case Op_LoadBarrierSlowReg:
+    case Op_LoadBarrierWeakSlowReg:
+#ifdef ASSERT
+      if (VerifyOptoOopOffsets) {
+        MemNode* mem  = n->as_Mem();
+        // Check to see if address types have grounded out somehow.
+        const TypeInstPtr* tp = mem->in(MemNode::Address)->bottom_type()->isa_instptr();
+        ciInstanceKlass* k = tp->klass()->as_instance_klass();
+        bool oop_offset_is_sane = k->contains_field_offset(tp->offset());
+        assert(!tp || oop_offset_is_sane, "");
+      }
+#endif
+      handled = true;
+      break;
+    default:
+      handled = false;
+  }
+  return handled;
+}
+
 // == Verification ==
 
 #ifdef ASSERT
--- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp	Fri Nov 09 11:15:38 2018 -0500
@@ -207,6 +207,8 @@
   static void find_dominating_barriers(PhaseIterGVN& igvn);
   static void loop_optimize_gc_barrier(PhaseIdealLoop* phase, Node* node, bool last_round);
 
+  virtual bool final_graph_reshaping(Compile* compile, Node* n, uint opcode) const;
+
 #ifdef ASSERT
   virtual void verify_gc_barriers(Compile* compile, CompilePhase phase) const;
 #endif
--- a/src/hotspot/share/memory/heapShared.cpp	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/memory/heapShared.cpp	Fri Nov 09 11:15:38 2018 -0500
@@ -886,6 +886,10 @@
     Klass* k = SystemDictionary::resolve_or_null(klass_name, THREAD);
     assert(k != NULL && !HAS_PENDING_EXCEPTION, "class must exist");
     InstanceKlass* ik = InstanceKlass::cast(k);
+    assert(InstanceKlass::cast(ik)->is_shared_boot_class(),
+           "Only support boot classes");
+    ik->initialize(THREAD);
+    guarantee(!HAS_PENDING_EXCEPTION, "exception in initialize");
 
     ArchivableStaticFieldFinder finder(ik, field_name);
     ik->do_local_static_fields(&finder);
--- a/src/hotspot/share/memory/metaspace.cpp	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/memory/metaspace.cpp	Fri Nov 09 11:15:38 2018 -0500
@@ -1260,6 +1260,8 @@
 MetaWord* Metaspace::allocate(ClassLoaderData* loader_data, size_t word_size,
                               MetaspaceObj::Type type, TRAPS) {
   assert(!_frozen, "sanity");
+  assert(!(DumpSharedSpaces && THREAD->is_VM_thread()), "sanity");
+
   if (HAS_PENDING_EXCEPTION) {
     assert(false, "Should not allocate with exception pending");
     return NULL;  // caller does a CHECK_NULL too
@@ -1277,12 +1279,10 @@
     tracer()->report_metaspace_allocation_failure(loader_data, word_size, type, mdtype);
 
     // Allocation failed.
-    if (is_init_completed() && !(DumpSharedSpaces && THREAD->is_VM_thread())) {
+    if (is_init_completed()) {
       // Only start a GC if the bootstrapping has completed.
-      // Also, we cannot GC if we are at the end of the CDS dumping stage which runs inside
-      // the VM thread.
-
-      // Try to clean out some memory and retry.
+      // Try to clean out some heap memory and retry. This can prevent premature
+      // expansion of the metaspace.
       result = Universe::heap()->satisfy_failed_metadata_allocation(loader_data, word_size, mdtype);
     }
   }
@@ -1408,6 +1408,7 @@
 }
 
 ClassLoaderMetaspace::~ClassLoaderMetaspace() {
+  Metaspace::assert_not_frozen();
   DEBUG_ONLY(Atomic::inc(&g_internal_statistics.num_metaspace_deaths));
   delete _vsm;
   if (Metaspace::using_class_space()) {
--- a/src/hotspot/share/memory/metaspaceShared.cpp	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/memory/metaspaceShared.cpp	Fri Nov 09 11:15:38 2018 -0500
@@ -1207,10 +1207,6 @@
 
 public:
   static void copy_and_compact() {
-    // We should no longer allocate anything from the metaspace, so that
-    // we can have a stable set of MetaspaceObjs to work with.
-    Metaspace::freeze();
-
     ResourceMark rm;
     SortedSymbolClosure the_ssc; // StackObj
     _ssc = &the_ssc;
@@ -1356,6 +1352,14 @@
 }
 
 void VM_PopulateDumpSharedSpace::doit() {
+  // We should no longer allocate anything from the metaspace, so that:
+  //
+  // (1) Metaspace::allocate might trigger GC if we have run out of
+  //     committed metaspace, but we can't GC because we're running
+  //     in the VM thread.
+  // (2) ArchiveCompactor needs to work with a stable set of MetaspaceObjs.
+  Metaspace::freeze();
+
   Thread* THREAD = VMThread::vm_thread();
 
   FileMapInfo::check_nonempty_dir_in_shared_path_table();
@@ -1420,8 +1424,6 @@
   // any dictionaries.
   NOT_PRODUCT(assert_no_unsafe_anonymous_classes_in_dictionaries());
 
-  SystemDictionaryShared::finalize_verification_constraints();
-
   ArchiveCompactor::initialize();
   ArchiveCompactor::copy_and_compact();
 
@@ -1703,6 +1705,8 @@
 
     log_info(cds)("Shared spaces: preloaded %d classes", class_count);
 
+    HeapShared::init_subgraph_entry_fields(THREAD);
+
     // Rewrite and link classes
     tty->print_cr("Rewriting and linking classes ...");
 
@@ -1714,7 +1718,8 @@
     tty->print_cr("Rewriting and linking classes: done");
 
     SystemDictionary::clear_invoke_method_table();
-    HeapShared::init_subgraph_entry_fields(THREAD);
+
+    SystemDictionaryShared::finalize_verification_constraints();
 
     VM_PopulateDumpSharedSpace op;
     VMThread::execute(&op);
--- a/src/hotspot/share/opto/callnode.cpp	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/opto/callnode.cpp	Fri Nov 09 11:15:38 2018 -0500
@@ -26,6 +26,8 @@
 #include "compiler/compileLog.hpp"
 #include "ci/bcEscapeAnalyzer.hpp"
 #include "compiler/oopMap.hpp"
+#include "gc/shared/barrierSet.hpp"
+#include "gc/shared/c2/barrierSetC2.hpp"
 #include "interpreter/interpreter.hpp"
 #include "opto/callGenerator.hpp"
 #include "opto/callnode.hpp"
--- a/src/hotspot/share/opto/compile.cpp	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/opto/compile.cpp	Fri Nov 09 11:15:38 2018 -0500
@@ -2792,6 +2792,18 @@
   }
 #endif
   // Count FPU ops and common calls, implements item (3)
+  bool gc_handled = BarrierSet::barrier_set()->barrier_set_c2()->final_graph_reshaping(this, n, nop);
+  if (!gc_handled) {
+    final_graph_reshaping_main_switch(n, frc, nop);
+  }
+
+  // Collect CFG split points
+  if (n->is_MultiBranch() && !n->is_RangeCheck()) {
+    frc._tests.push(n);
+  }
+}
+
+void Compile::final_graph_reshaping_main_switch(Node* n, Final_Reshape_Counts& frc, uint nop) {
   switch( nop ) {
   // Count all float operations that may use FPU
   case Op_AddF:
@@ -2938,18 +2950,13 @@
   case Op_LoadL_unaligned:
   case Op_LoadPLocked:
   case Op_LoadP:
-#if INCLUDE_ZGC
-  case Op_LoadBarrierSlowReg:
-  case Op_LoadBarrierWeakSlowReg:
-#endif
   case Op_LoadN:
   case Op_LoadRange:
   case Op_LoadS: {
   handle_mem:
 #ifdef ASSERT
     if( VerifyOptoOopOffsets ) {
-      assert( n->is_Mem(), "" );
-      MemNode *mem  = (MemNode*)n;
+      MemNode* mem  = n->as_Mem();
       // Check to see if address types have grounded out somehow.
       const TypeInstPtr *tp = mem->in(MemNode::Address)->bottom_type()->isa_instptr();
       assert( !tp || oop_offset_is_sane(tp), "" );
@@ -3467,16 +3474,11 @@
     break;
   }
   default:
-    assert( !n->is_Call(), "" );
-    assert( !n->is_Mem(), "" );
-    assert( nop != Op_ProfileBoolean, "should be eliminated during IGVN");
+    assert(!n->is_Call(), "");
+    assert(!n->is_Mem(), "");
+    assert(nop != Op_ProfileBoolean, "should be eliminated during IGVN");
     break;
   }
-
-  // Collect CFG split points
-  if (n->is_MultiBranch() && !n->is_RangeCheck()) {
-    frc._tests.push(n);
-  }
 }
 
 //------------------------------final_graph_reshaping_walk---------------------
--- a/src/hotspot/share/opto/compile.hpp	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/opto/compile.hpp	Fri Nov 09 11:15:38 2018 -0500
@@ -1304,6 +1304,7 @@
   // Function calls made by the public function final_graph_reshaping.
   // No need to be made public as they are not called elsewhere.
   void final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &frc);
+  void final_graph_reshaping_main_switch(Node* n, Final_Reshape_Counts& frc, uint nop);
   void final_graph_reshaping_walk( Node_Stack &nstack, Node *root, Final_Reshape_Counts &frc );
   void eliminate_redundant_card_marks(Node* n);
 
--- a/src/hotspot/share/runtime/globals.hpp	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/runtime/globals.hpp	Fri Nov 09 11:15:38 2018 -0500
@@ -1259,8 +1259,8 @@
           "[default: ./hs_err_pid%p.log] (%p replaced with pid)")           \
                                                                             \
   product(bool, ExtensiveErrorReports,                                      \
-                 PRODUCT_ONLY(false) NOT_PRODUCT(true),                     \
-                 "Error reports are more extensive.")                       \
+          PRODUCT_ONLY(false) NOT_PRODUCT(true),                            \
+          "Error reports are more extensive.")                              \
                                                                             \
   product(bool, DisplayVMOutputToStderr, false,                             \
           "If DisplayVMOutput is true, display all VM output to stderr")    \
--- a/src/java.management/share/classes/java/lang/management/package.html	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/java.management/share/classes/java/lang/management/package.html	Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2003, 2018, 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
@@ -69,7 +69,7 @@
 this allows interoperation across versions.
 A data type used by the MXBean interfaces are mapped to an
 open type when being accessed via MBeanServer interface.
-See the <a href="{@docRoot}/javax/management/MXBean.html#MXBean-spec">
+See the <a href="{@docRoot}/java.management/javax/management/MXBean.html#MXBean-spec">
 MXBean</a> specification for details.
 
 <h3><a id="examples">Ways to Access MXBeans</a></h3>
--- a/src/java.management/share/classes/javax/management/Query.java	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/java.management/share/classes/javax/management/Query.java	Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, 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
@@ -128,7 +128,7 @@
       *
       * @return  The conjunction of the two arguments.  The returned object
       * will be serialized as an instance of the non-public class
-      * <a href="../../serialized-form.html#javax.management.AndQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.AndQueryExp">
       * javax.management.AndQueryExp</a>.
       */
      public static QueryExp and(QueryExp q1, QueryExp q2)  {
@@ -144,7 +144,7 @@
       *
       * @return  The disjunction of the two arguments.  The returned object
       * will be serialized as an instance of the non-public class
-      * <a href="../../serialized-form.html#javax.management.OrQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.OrQueryExp">
       * javax.management.OrQueryExp</a>.
       */
      public static QueryExp or(QueryExp q1, QueryExp q2)  {
@@ -161,7 +161,7 @@
       * @return A "greater than" constraint on the arguments.  The
       * returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryRelQueryExp">
       * javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
       * to {@link #GT}.
       */
@@ -179,7 +179,7 @@
       * @return A "greater than or equal to" constraint on the
       * arguments.  The returned object will be serialized as an
       * instance of the non-public class
-      * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryRelQueryExp">
       * javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
       * to {@link #GE}.
       */
@@ -197,7 +197,7 @@
       * @return A "less than or equal to" constraint on the arguments.
       * The returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryRelQueryExp">
       * javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
       * to {@link #LE}.
       */
@@ -215,7 +215,7 @@
       * @return A "less than" constraint on the arguments.  The
       * returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryRelQueryExp">
       * javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
       * to {@link #LT}.
       */
@@ -233,7 +233,7 @@
       * @return A "equal to" constraint on the arguments.  The
       * returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryRelQueryExp">
       * javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
       * to {@link #EQ}.
       */
@@ -252,7 +252,7 @@
       * @return The constraint that v1 lies between v2 and v3.  The
       * returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.BetweenQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.BetweenQueryExp">
       * javax.management.BetweenQueryExp</a>.
       */
      public static QueryExp between(ValueExp v1, ValueExp v2, ValueExp v3) {
@@ -280,7 +280,7 @@
       * @return A query expression that represents the matching
       * constraint on the string argument.  The returned object will
       * be serialized as an instance of the non-public class
-      * <a href="../../serialized-form.html#javax.management.MatchQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.MatchQueryExp">
       * javax.management.MatchQueryExp</a>.
       */
      public static QueryExp match(AttributeValueExp a, StringValueExp s)  {
@@ -320,7 +320,7 @@
       * @return An attribute expression for the attribute named name.
       * The returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.QualifiedAttributeValueExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.QualifiedAttributeValueExp">
       * javax.management.QualifiedAttributeValueExp</a>.
       */
      public static AttributeValueExp attr(String className, String name)  {
@@ -338,7 +338,7 @@
       *
       * @return A class attribute expression.  The returned object
       * will be serialized as an instance of the non-public class
-      * <a href="../../serialized-form.html#javax.management.ClassAttributeValueExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.ClassAttributeValueExp">
       * javax.management.ClassAttributeValueExp</a>.
       */
      public static AttributeValueExp classattr()  {
@@ -352,7 +352,7 @@
       *
       * @return A negated constraint.  The returned object will be
       * serialized as an instance of the non-public class
-      * <a href="../../serialized-form.html#javax.management.NotQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.NotQueryExp">
       * javax.management.NotQueryExp</a>.
       */
      public static QueryExp not(QueryExp queryExp)  {
@@ -368,7 +368,7 @@
       * @return A QueryExp that represents the constraint.  The
       * returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.InQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.InQueryExp">
       * javax.management.InQueryExp</a>.
       */
      public static QueryExp in(ValueExp val, ValueExp valueList[])  {
@@ -395,7 +395,7 @@
       * @return A ValueExp object containing the argument.  The
       * returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.NumericValueExp">
       * javax.management.NumericValueExp</a>.
       */
      public static ValueExp value(Number val)  {
@@ -411,7 +411,7 @@
       * @return A ValueExp object containing the argument.  The
       * returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.NumericValueExp">
       * javax.management.NumericValueExp</a>.
       */
      public static ValueExp value(int val)  {
@@ -427,7 +427,7 @@
       * @return A ValueExp object containing the argument.  The
       * returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.NumericValueExp">
       * javax.management.NumericValueExp</a>.
       */
      public static ValueExp value(long val)  {
@@ -443,7 +443,7 @@
       * @return A ValueExp object containing the argument.  The
       * returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.NumericValueExp">
       * javax.management.NumericValueExp</a>.
       */
      public static ValueExp value(float val)  {
@@ -459,7 +459,7 @@
       * @return  A ValueExp object containing the argument.  The
       * returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.NumericValueExp">
       * javax.management.NumericValueExp</a>.
       */
      public static ValueExp value(double val)  {
@@ -475,7 +475,7 @@
       * @return A ValueExp object containing the argument.  The
       * returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.BooleanValueExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.BooleanValueExp">
       * javax.management.BooleanValueExp</a>.
       */
      public static ValueExp value(boolean val)  {
@@ -492,7 +492,7 @@
       * @return A ValueExp representing the sum or concatenation of
       * the two arguments.  The returned object will be serialized as
       * an instance of the non-public class
-      * <a href="../../serialized-form.html#javax.management.BinaryOpValueExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryOpValueExp">
       * javax.management.BinaryOpValueExp</a> with an {@code op} equal to
       * {@link #PLUS}.
       */
@@ -510,7 +510,7 @@
       * @return A ValueExp representing the product.  The returned
       * object will be serialized as an instance of the non-public
       * class
-      * <a href="../../serialized-form.html#javax.management.BinaryOpValueExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryOpValueExp">
       * javax.management.BinaryOpValueExp</a> with an {@code op} equal to
       * {@link #TIMES}.
       */
@@ -528,7 +528,7 @@
       * @return A ValueExp representing the difference between two
       * arguments.  The returned object will be serialized as an
       * instance of the non-public class
-      * <a href="../../serialized-form.html#javax.management.BinaryOpValueExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryOpValueExp">
       * javax.management.BinaryOpValueExp</a> with an {@code op} equal to
       * {@link #MINUS}.
       */
@@ -546,7 +546,7 @@
       * @return A ValueExp representing the quotient of two arguments.
       * The returned object will be serialized as an instance of the
       * non-public class
-      * <a href="../../serialized-form.html#javax.management.BinaryOpValueExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryOpValueExp">
       * javax.management.BinaryOpValueExp</a> with an {@code op} equal to
       * {@link #DIV}.
       */
@@ -566,7 +566,7 @@
       * @return The constraint that a matches s.  The returned object
       * will be serialized as an instance of the non-public class
       *
-      * <a href="../../serialized-form.html#javax.management.MatchQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.MatchQueryExp">
       * javax.management.MatchQueryExp</a>.
       */
      public static QueryExp initialSubString(AttributeValueExp a, StringValueExp s)  {
@@ -585,7 +585,7 @@
       * @return The constraint that a matches s.  The returned object
       * will be serialized as an instance of the non-public class
       *
-      * <a href="../../serialized-form.html#javax.management.MatchQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.MatchQueryExp">
       * javax.management.MatchQueryExp</a>.
       */
      public static QueryExp anySubString(AttributeValueExp a, StringValueExp s) {
@@ -605,7 +605,7 @@
       * @return The constraint that a matches s.  The returned object
       * will be serialized as an instance of the non-public class
       *
-      * <a href="../../serialized-form.html#javax.management.MatchQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.MatchQueryExp">
       * javax.management.MatchQueryExp</a>.
       */
      public static QueryExp finalSubString(AttributeValueExp a, StringValueExp s) {
@@ -630,7 +630,7 @@
       * @return a query expression that represents an inheritance
       * constraint on an MBean class.  The returned object will be
       * serialized as an instance of the non-public class
-      * <a href="../../serialized-form.html#javax.management.InstanceOfQueryExp">
+      * <a href="{@docRoot}/serialized-form.html#javax.management.InstanceOfQueryExp">
       * javax.management.InstanceOfQueryExp</a>.
       * @since 1.6
       */
--- a/src/java.management/share/classes/javax/management/remote/JMXConnectorFactory.java	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/java.management/share/classes/javax/management/remote/JMXConnectorFactory.java	Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2018, 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
@@ -137,7 +137,7 @@
  * <code>MalformedURLException</code> if there is none.  An
  * implementation may choose to find providers by other means.  For
  * example, it may support <a
- * href="{@docRoot}/java/util/ServiceLoader.html#developing-service-providers">service providers</a>,
+ * href="{@docRoot}/java.base/java/util/ServiceLoader.html#developing-service-providers">service providers</a>,
  * where the service interface is <code>JMXConnectorProvider</code>.</p>
  *
  * <p>Every implementation must support the RMI connector protocol with
--- a/src/java.management/share/classes/javax/management/remote/JMXConnectorServerFactory.java	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/java.management/share/classes/javax/management/remote/JMXConnectorServerFactory.java	Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, 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
@@ -128,7 +128,7 @@
  * <code>MalformedURLException</code> if there is none.  An
  * implementation may choose to find providers by other means.  For
  * example, it may support <a
- * href="{@docRoot}/java/util/ServiceLoader.html#developing-service-providers">service providers</a>,
+ * href="{@docRoot}/java.base/java/util/ServiceLoader.html#developing-service-providers">service providers</a>,
  * where the service interface is <code>JMXConnectorServerProvider</code>.</p>
  *
  * <p>Every implementation must support the RMI connector protocol with
--- a/src/jdk.management/share/classes/com/sun/management/DiagnosticCommandMBean.java	Fri Nov 09 09:48:18 2018 -0500
+++ b/src/jdk.management/share/classes/com/sun/management/DiagnosticCommandMBean.java	Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, 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
@@ -213,7 +213,7 @@
  * Virtual Machine is modified, the {@code DiagnosticCommandMBean} emits
  * a {@link javax.management.Notification} with a
  * {@linkplain javax.management.Notification#getType() type} of
- * <a href="{@docRoot}/javax/management/MBeanInfo.html#info-changed">
+ * <a href="{@docRoot}/java.management/javax/management/MBeanInfo.html#info-changed">
  * {@code "jmx.mbean.info.changed"}</a> and a
  * {@linkplain javax.management.Notification#getUserData() userData} that
  * is the new {@code MBeanInfo}.
--- a/test/hotspot/jtreg/gc/TestAllocateHeapAtMultiple.java	Fri Nov 09 09:48:18 2018 -0500
+++ b/test/hotspot/jtreg/gc/TestAllocateHeapAtMultiple.java	Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, 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
@@ -27,6 +27,7 @@
  * @library /test/lib
  * @modules java.base/jdk.internal.misc
  * @requires vm.bits == "64" & vm.gc != "Z" & os.family != "aix"
+ * @run main/timeout=360 TestAllocateHeapAtMultiple
  */
 
 import jdk.test.lib.JDKToolFinder;
--- a/test/jdk/java/nio/channels/SocketChannel/AsyncCloseChannel.java	Fri Nov 09 09:48:18 2018 -0500
+++ b/test/jdk/java/nio/channels/SocketChannel/AsyncCloseChannel.java	Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2018, 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
@@ -24,13 +24,16 @@
 /* @test
  * @bug 6285901 6501089
  * @summary Check no data is written to wrong socket channel during async closing.
- * @author Xueming Shen
+ * @run main/othervm AsyncCloseChannel
  */
 
-import java.io.*;
-import java.nio.*;
-import java.nio.channels.*;
-import java.net.*;
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.nio.ByteBuffer;
+import java.nio.channels.ClosedChannelException;
+import java.nio.channels.SocketChannel;
 
 public class AsyncCloseChannel {
     static volatile boolean failed = false;