Merge
authorhenryjen
Tue, 15 Oct 2019 21:33:54 +0000
changeset 58639 e0bb6b38a6f6
parent 58638 7be56b2ac50d (current diff)
parent 58609 fbfc72ec8e6b (diff)
child 58641 55fe0d93bdd3
Merge
src/java.desktop/unix/native/common/awt/awt_Font.h
--- a/src/hotspot/os/aix/os_aix.cpp	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/hotspot/os/aix/os_aix.cpp	Tue Oct 15 21:33:54 2019 +0000
@@ -2643,8 +2643,24 @@
   60              // 11 CriticalPriority
 };
 
+static int prio_init() {
+  if (ThreadPriorityPolicy == 1) {
+    if (geteuid() != 0) {
+      if (!FLAG_IS_DEFAULT(ThreadPriorityPolicy)) {
+        warning("-XX:ThreadPriorityPolicy=1 may require system level permission, " \
+                "e.g., being the root user. If the necessary permission is not " \
+                "possessed, changes to priority will be silently ignored.");
+      }
+    }
+  }
+  if (UseCriticalJavaThreadPriority) {
+    os::java_to_os_priority[MaxPriority] = os::java_to_os_priority[CriticalPriority];
+  }
+  return 0;
+}
+
 OSReturn os::set_native_priority(Thread* thread, int newpri) {
-  if (!UseThreadPriorities) return OS_OK;
+  if (!UseThreadPriorities || ThreadPriorityPolicy == 0) return OS_OK;
   pthread_t thr = thread->osthread()->pthread_id();
   int policy = SCHED_OTHER;
   struct sched_param param;
@@ -2659,7 +2675,7 @@
 }
 
 OSReturn os::get_native_priority(const Thread* const thread, int *priority_ptr) {
-  if (!UseThreadPriorities) {
+  if (!UseThreadPriorities || ThreadPriorityPolicy == 0) {
     *priority_ptr = java_to_os_priority[NormPriority];
     return OS_OK;
   }
@@ -3569,6 +3585,9 @@
     }
   }
 
+  // initialize thread priority policy
+  prio_init();
+
   return JNI_OK;
 }
 
--- a/src/hotspot/share/c1/c1_ValueStack.cpp	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/hotspot/share/c1/c1_ValueStack.cpp	Tue Oct 15 21:33:54 2019 +0000
@@ -42,31 +42,21 @@
   verify();
 }
 
-
 ValueStack::ValueStack(ValueStack* copy_from, Kind kind, int bci)
   : _scope(copy_from->scope())
   , _caller_state(copy_from->caller_state())
   , _bci(bci)
   , _kind(kind)
-  , _locals()
-  , _stack()
+  , _locals(copy_from->locals_size_for_copy(kind))
+  , _stack(copy_from->stack_size_for_copy(kind))
   , _locks(copy_from->locks_size() == 0 ? NULL : new Values(copy_from->locks_size()))
 {
   assert(kind != EmptyExceptionState || !Compilation::current()->env()->should_retain_local_variables(), "need locals");
   if (kind != EmptyExceptionState) {
-    // only allocate space if we need to copy the locals-array
-    _locals = Values(copy_from->locals_size());
     _locals.appendAll(&copy_from->_locals);
   }
 
   if (kind != ExceptionState && kind != EmptyExceptionState) {
-    if (kind == Parsing) {
-      // stack will be modified, so reserve enough space to avoid resizing
-      _stack = Values(scope()->method()->max_stack());
-    } else {
-      // stack will not be modified, so do not waste space
-      _stack = Values(copy_from->stack_size());
-    }
     _stack.appendAll(&copy_from->_stack);
   }
 
@@ -77,6 +67,25 @@
   verify();
 }
 
+int ValueStack::locals_size_for_copy(Kind kind) const {
+  if (kind != EmptyExceptionState) {
+    return locals_size();
+  }
+  return 0;
+}
+
+int ValueStack::stack_size_for_copy(Kind kind) const {
+  if (kind != ExceptionState && kind != EmptyExceptionState) {
+    if (kind == Parsing) {
+      // stack will be modified, so reserve enough space to avoid resizing
+      return scope()->method()->max_stack();
+    } else {
+      // stack will not be modified, so do not waste space
+      return stack_size();
+    }
+  }
+  return 0;
+}
 
 bool ValueStack::is_same(ValueStack* s) {
   if (scope() != s->scope()) return false;
--- a/src/hotspot/share/c1/c1_ValueStack.hpp	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/hotspot/share/c1/c1_ValueStack.hpp	Tue Oct 15 21:33:54 2019 +0000
@@ -65,6 +65,8 @@
   // for simplified copying
   ValueStack(ValueStack* copy_from, Kind kind, int bci);
 
+  int locals_size_for_copy(Kind kind) const;
+  int stack_size_for_copy(Kind kind) const;
  public:
   // creation
   ValueStack(IRScope* scope, ValueStack* caller_state);
--- a/src/hotspot/share/ci/ciMetadata.hpp	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/hotspot/share/ci/ciMetadata.hpp	Tue Oct 15 21:33:54 2019 +0000
@@ -51,7 +51,6 @@
   virtual bool is_metadata() const          { return true; }
 
   virtual bool is_type() const              { return false; }
-  virtual bool is_cpcache() const           { return false; }
   virtual bool is_return_address() const    { return false; }
   virtual bool is_method() const            { return false; }
   virtual bool is_method_data() const       { return false; }
--- a/src/hotspot/share/gc/epsilon/epsilonArguments.cpp	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/hotspot/share/gc/epsilon/epsilonArguments.cpp	Tue Oct 15 21:33:54 2019 +0000
@@ -45,13 +45,25 @@
     FLAG_SET_DEFAULT(ExitOnOutOfMemoryError, true);
   }
 
+  // Warn users that non-resizable heap might be better for some configurations.
+  // We are not adjusting the heap size by ourselves, because it affects startup time.
+  if (InitialHeapSize != MaxHeapSize) {
+    log_warning(gc)("Consider setting -Xms equal to -Xmx to avoid resizing hiccups");
+  }
+
+  // Warn users that AlwaysPreTouch might be better for some configurations.
+  // We are not turning this on by ourselves, because it affects startup time.
+  if (FLAG_IS_DEFAULT(AlwaysPreTouch) && !AlwaysPreTouch) {
+    log_warning(gc)("Consider enabling -XX:+AlwaysPreTouch to avoid memory commit hiccups");
+  }
+
   if (EpsilonMaxTLABSize < MinTLABSize) {
-    warning("EpsilonMaxTLABSize < MinTLABSize, adjusting it to " SIZE_FORMAT, MinTLABSize);
+    log_warning(gc)("EpsilonMaxTLABSize < MinTLABSize, adjusting it to " SIZE_FORMAT, MinTLABSize);
     EpsilonMaxTLABSize = MinTLABSize;
   }
 
   if (!EpsilonElasticTLAB && EpsilonElasticTLABDecay) {
-    warning("Disabling EpsilonElasticTLABDecay because EpsilonElasticTLAB is disabled");
+    log_warning(gc)("Disabling EpsilonElasticTLABDecay because EpsilonElasticTLAB is disabled");
     FLAG_SET_DEFAULT(EpsilonElasticTLABDecay, false);
   }
 
--- a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp	Tue Oct 15 21:33:54 2019 +0000
@@ -319,13 +319,20 @@
 };
 
 void ShenandoahConcurrentMark::update_thread_roots(ShenandoahPhaseTimings::Phase root_phase) {
-  WorkGang* workers = _heap->workers();
-  bool is_par = workers->active_workers() > 1;
+  assert(ShenandoahSafepoint::is_at_shenandoah_safepoint(), "Must be at a safepoint");
+
+  ShenandoahGCPhase phase(root_phase);
+
 #if COMPILER2_OR_JVMCI
   DerivedPointerTable::clear();
 #endif
+
+  WorkGang* workers = _heap->workers();
+  bool is_par = workers->active_workers() > 1;
+
   ShenandoahUpdateThreadRootsTask task(is_par, root_phase);
   workers->run_task(&task);
+
 #if COMPILER2_OR_JVMCI
   DerivedPointerTable::update_pointers();
 #endif
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp	Tue Oct 15 21:33:54 2019 +0000
@@ -964,7 +964,6 @@
     ShenandoahHeapRegion* r;
     while ((r =_cs->claim_next()) != NULL) {
       assert(r->has_live(), "Region " SIZE_FORMAT " should have been reclaimed early", r->region_number());
-      assert(r->is_conc_move_allowed(), "Region " SIZE_FORMAT " should be movable", r->region_number());
       _sh->marked_object_iterate(r, &cl);
 
       if (ShenandoahPacing) {
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.hpp	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.hpp	Tue Oct 15 21:33:54 2019 +0000
@@ -198,8 +198,7 @@
 
   // Macro-properties:
   bool is_alloc_allowed()          const { return is_empty() || is_regular() || _state == _pinned; }
-  bool is_conc_move_allowed()      const { return is_regular() || _state == _cset; }
-  bool is_stw_move_allowed()       const { return is_conc_move_allowed() || (ShenandoahHumongousMoves && _state == _humongous_start); }
+  bool is_stw_move_allowed()       const { return is_regular() || _state == _cset || (ShenandoahHumongousMoves && _state == _humongous_start); }
 
   RegionState state()              const { return _state; }
   int  state_ordinal()             const { return region_state_to_ordinal(_state); }
--- a/src/hotspot/share/opto/loopTransform.cpp	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/hotspot/share/opto/loopTransform.cpp	Tue Oct 15 21:33:54 2019 +0000
@@ -3129,6 +3129,13 @@
     // We also need to replace the original limit to collapse loop exit.
     Node* cmp = cl->loopexit()->cmp_node();
     assert(cl->limit() == cmp->in(2), "sanity");
+    // Duplicate cmp node if it has other users
+    if (cmp->outcnt() > 1) {
+      cmp = cmp->clone();
+      cmp = phase->_igvn.register_new_node_with_optimizer(cmp);
+      BoolNode *bol = cl->loopexit()->in(CountedLoopEndNode::TestValue)->as_Bool();
+      phase->_igvn.replace_input_of(bol, 1, cmp); // put bol on worklist
+    }
     phase->_igvn._worklist.push(cmp->in(2)); // put limit on worklist
     phase->_igvn.replace_input_of(cmp, 2, exact_limit); // put cmp on worklist
   }
--- a/src/hotspot/share/runtime/threadSMR.cpp	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/hotspot/share/runtime/threadSMR.cpp	Tue Oct 15 21:33:54 2019 +0000
@@ -528,6 +528,22 @@
     return;
   }
 
+  if ( _thread == VM_Exit::shutdown_thread()) {
+    // The shutdown thread has removed itself from the Threads
+    // list and is safe to have a waiver from this check because
+    // VM_Exit::_shutdown_thread is not set until after the VMThread
+    // has started the final safepoint which holds the Threads_lock
+    // for the remainder of the VM's life.
+    return;
+  }
+
+  if (VMError::is_error_reported() &&
+      VMError::get_first_error_tid() == os::current_thread_id()) {
+    // If there is an error reported by this thread it may use ThreadsList even
+    // if it's unsafe.
+    return;
+  }
+
   // The closure will attempt to verify that the calling thread can
   // be found by threads_do() on the specified ThreadsList. If it
   // is successful, then the specified ThreadsList was acquired as
@@ -540,12 +556,6 @@
   // ThreadsList is not a stable hazard ptr and can be freed by
   // another thread from the to-be-deleted list at any time.
   //
-  // Note: The shutdown thread has removed itself from the Threads
-  // list and is safe to have a waiver from this check because
-  // VM_Exit::_shutdown_thread is not set until after the VMThread
-  // has started the final safepoint which holds the Threads_lock
-  // for the remainder of the VM's life.
-  //
   VerifyHazardPtrThreadClosure cl(_thread);
   ThreadsSMRSupport::threads_do(&cl, _list);
 
@@ -555,7 +565,7 @@
   // In either case, we won't get past this point with a badly placed
   // ThreadsListHandle.
 
-  assert(cl.found() || _thread == VM_Exit::shutdown_thread(), "Acquired a ThreadsList snapshot from a thread not recognized by the Thread-SMR protocol.");
+  assert(cl.found(), "Acquired a ThreadsList snapshot from a thread not recognized by the Thread-SMR protocol.");
 #endif
 }
 
--- a/src/hotspot/share/utilities/decoder.cpp	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/hotspot/share/utilities/decoder.cpp	Tue Oct 15 21:33:54 2019 +0000
@@ -84,7 +84,7 @@
 }
 
 bool Decoder::decode(address addr, char* buf, int buflen, int* offset, const char* modulepath, bool demangle) {
-  bool error_handling_thread = os::current_thread_id() == VMError::first_error_tid;
+  bool error_handling_thread = os::current_thread_id() == VMError::get_first_error_tid();
   if (error_handling_thread) {
     return get_error_handler_instance()->decode(addr, buf, buflen, offset, modulepath, demangle);
   } else {
@@ -95,7 +95,7 @@
 }
 
 bool Decoder::decode(address addr, char* buf, int buflen, int* offset, const void* base) {
-  bool error_handling_thread = os::current_thread_id() == VMError::first_error_tid;
+  bool error_handling_thread = os::current_thread_id() == VMError::get_first_error_tid();
   if (error_handling_thread) {
     return get_error_handler_instance()->decode(addr, buf, buflen, offset, base);
   } else {
@@ -106,7 +106,7 @@
 
 
 bool Decoder::demangle(const char* symbol, char* buf, int buflen) {
-  bool error_handling_thread = os::current_thread_id() == VMError::first_error_tid;
+  bool error_handling_thread = os::current_thread_id() == VMError::get_first_error_tid();
   if (error_handling_thread) {
     return get_error_handler_instance()->demangle(symbol, buf, buflen);
   } else {
--- a/src/hotspot/share/utilities/vmError.cpp	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/hotspot/share/utilities/vmError.cpp	Tue Oct 15 21:33:54 2019 +0000
@@ -1205,7 +1205,7 @@
   st->print_cr("END.");
 }
 
-volatile intptr_t VMError::first_error_tid = -1;
+volatile intptr_t VMError::_first_error_tid = -1;
 
 /** Expand a pattern into a buffer starting at pos and open a file using constructed path */
 static int expand_and_open(const char* pattern, bool overwrite_existing, char* buf, size_t buflen, size_t pos) {
@@ -1355,8 +1355,8 @@
       os::abort(CreateCoredumpOnCrash);
   }
   intptr_t mytid = os::current_thread_id();
-  if (first_error_tid == -1 &&
-      Atomic::cmpxchg(mytid, &first_error_tid, (intptr_t)-1) == -1) {
+  if (_first_error_tid == -1 &&
+      Atomic::cmpxchg(mytid, &_first_error_tid, (intptr_t)-1) == -1) {
 
     // Initialize time stamps to use the same base.
     out.time_stamp().update_to(1);
@@ -1416,7 +1416,7 @@
 
     // This is not the first error, see if it happened in a different thread
     // or in the same thread during error reporting.
-    if (first_error_tid != mytid) {
+    if (_first_error_tid != mytid) {
       char msgbuf[64];
       jio_snprintf(msgbuf, sizeof(msgbuf),
                    "[thread " INTX_FORMAT " also had an error]",
--- a/src/hotspot/share/utilities/vmError.hpp	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/hotspot/share/utilities/vmError.hpp	Tue Oct 15 21:33:54 2019 +0000
@@ -32,8 +32,6 @@
 class VM_ReportJavaOutOfMemory;
 
 class VMError : public AllStatic {
-  friend class VM_ReportJavaOutOfMemory;
-  friend class Decoder;
   friend class VMStructs;
 
   static int         _id;               // Solaris/Linux signals: 0 - SIGRTMAX
@@ -65,7 +63,7 @@
 
   // Thread id of the first error. We must be able to handle native thread,
   // so use thread id instead of Thread* to identify thread.
-  static volatile intptr_t first_error_tid;
+  static volatile intptr_t _first_error_tid;
 
   // Core dump status, false if we have been unable to write a core/minidump for some reason
   static bool coredump_status;
@@ -177,9 +175,9 @@
   static address get_resetted_sighandler(int sig);
 
   // check to see if fatal error reporting is in progress
-  static bool fatal_error_in_progress() { return first_error_tid != -1; }
+  static bool fatal_error_in_progress() { return _first_error_tid != -1; }
 
-  static intptr_t get_first_error_tid() { return first_error_tid; }
+  static intptr_t get_first_error_tid() { return _first_error_tid; }
 
   // Called by the WatcherThread to check if error reporting has timed-out.
   //  Returns true if error reporting has not completed within the ErrorLogTimeout limit.
--- a/src/java.base/share/classes/java/text/DecimalFormat.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.base/share/classes/java/text/DecimalFormat.java	Tue Oct 15 21:33:54 2019 +0000
@@ -2756,7 +2756,10 @@
     /**
      * Return the grouping size. Grouping size is the number of digits between
      * grouping separators in the integer portion of a number.  For example,
-     * in the number "123,456.78", the grouping size is 3.
+     * in the number "123,456.78", the grouping size is 3. Grouping size of
+     * zero designates that grouping is not used, which provides the same
+     * formatting as if calling {@link #setGroupingUsed(boolean)
+     * setGroupingUsed(false)}.
      *
      * @return the grouping size
      * @see #setGroupingSize
@@ -2770,16 +2773,28 @@
     /**
      * Set the grouping size. Grouping size is the number of digits between
      * grouping separators in the integer portion of a number.  For example,
-     * in the number "123,456.78", the grouping size is 3.
-     * <br>
+     * in the number "123,456.78", the grouping size is 3. Grouping size of
+     * zero designates that grouping is not used, which provides the same
+     * formatting as if calling {@link #setGroupingUsed(boolean)
+     * setGroupingUsed(false)}.
+     * <p>
      * The value passed in is converted to a byte, which may lose information.
+     * Values that are negative or greater than
+     * {@link java.lang.Byte#MAX_VALUE Byte.MAX_VALUE}, will throw an
+     * {@code IllegalArgumentException}.
      *
      * @param newValue the new grouping size
      * @see #getGroupingSize
      * @see java.text.NumberFormat#setGroupingUsed
      * @see java.text.DecimalFormatSymbols#setGroupingSeparator
+     * @throws IllegalArgumentException if {@code newValue} is negative or
+     *          greater than {@link java.lang.Byte#MAX_VALUE Byte.MAX_VALUE}
      */
     public void setGroupingSize (int newValue) {
+        if (newValue < 0 || newValue > Byte.MAX_VALUE) {
+            throw new IllegalArgumentException(
+                "newValue is out of valid range. value: " + newValue);
+        }
         groupingSize = (byte)newValue;
         fastPathCheckNeeded = true;
     }
@@ -3906,6 +3921,12 @@
             // Didn't have exponential fields
             useExponentialNotation = false;
         }
+
+        // Restore the invariant value if groupingSize is invalid.
+        if (groupingSize < 0) {
+            groupingSize = 3;
+        }
+
         serialVersionOnStream = currentSerialVersion;
     }
 
@@ -4009,14 +4030,15 @@
 
     /**
      * The number of digits between grouping separators in the integer
-     * portion of a number.  Must be greater than 0 if
+     * portion of a number.  Must be non-negative and less than or equal to
+     * {@link java.lang.Byte#MAX_VALUE Byte.MAX_VALUE} if
      * {@code NumberFormat.groupingUsed} is true.
      *
      * @serial
      * @see #getGroupingSize
      * @see java.text.NumberFormat#isGroupingUsed
      */
-    private byte    groupingSize = 3;  // invariant, > 0 if useThousands
+    private byte    groupingSize = 3;  // invariant, 0 - 127, if groupingUsed
 
     /**
      * If true, forces the decimal separator to always appear in a formatted
--- a/src/java.desktop/macosx/classes/sun/awt/CGraphicsDevice.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/macosx/classes/sun/awt/CGraphicsDevice.java	Tue Oct 15 21:33:54 2019 +0000
@@ -61,6 +61,10 @@
     public CGraphicsDevice(final int displayID) {
         this.displayID = displayID;
         config = CGLGraphicsConfig.getConfig(this, displayID, 0);
+        // initializes default device state, might be redundant step since we
+        // call "displayChanged()" later anyway, but we do not want to leave the
+        // device in an inconsistent state after construction
+        displayChanged();
     }
 
     /**
--- a/src/java.desktop/macosx/classes/sun/java2d/opengl/CGLSurfaceData.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/macosx/classes/sun/java2d/opengl/CGLSurfaceData.java	Tue Oct 15 21:33:54 2019 +0000
@@ -25,7 +25,6 @@
 
 package sun.java2d.opengl;
 
-import java.awt.Graphics;
 import java.awt.GraphicsConfiguration;
 import java.awt.GraphicsDevice;
 import java.awt.GraphicsEnvironment;
@@ -33,9 +32,7 @@
 import java.awt.Rectangle;
 import java.awt.image.ColorModel;
 
-import sun.java2d.SunGraphics2D;
 import sun.java2d.SurfaceData;
-
 import sun.lwawt.macosx.CPlatformView;
 
 public abstract class CGLSurfaceData extends OGLSurfaceData {
@@ -342,43 +339,4 @@
             return offscreenImage;
         }
     }
-
-    // Mac OS X specific APIs for JOGL/Java2D bridge...
-
-    // given a surface create and attach GL context, then return it
-    private static native long createCGLContextOnSurface(CGLSurfaceData sd,
-            long sharedContext);
-
-    public static long createOGLContextOnSurface(Graphics g, long sharedContext) {
-        SurfaceData sd = ((SunGraphics2D) g).surfaceData;
-        if ((sd instanceof CGLSurfaceData) == true) {
-            CGLSurfaceData cglsd = (CGLSurfaceData) sd;
-            return createCGLContextOnSurface(cglsd, sharedContext);
-        } else {
-            return 0L;
-        }
-    }
-
-    // returns whether or not the makeCurrent operation succeeded
-    static native boolean makeCGLContextCurrentOnSurface(CGLSurfaceData sd,
-            long ctx);
-
-    public static boolean makeOGLContextCurrentOnSurface(Graphics g, long ctx) {
-        SurfaceData sd = ((SunGraphics2D) g).surfaceData;
-        if ((ctx != 0L) && ((sd instanceof CGLSurfaceData) == true)) {
-            CGLSurfaceData cglsd = (CGLSurfaceData) sd;
-            return makeCGLContextCurrentOnSurface(cglsd, ctx);
-        } else {
-            return false;
-        }
-    }
-
-    // additional cleanup
-    private static native void destroyCGLContext(long ctx);
-
-    public static void destroyOGLContext(long ctx) {
-        if (ctx != 0L) {
-            destroyCGLContext(ctx);
-        }
-    }
 }
--- a/src/java.desktop/macosx/classes/sun/lwawt/macosx/LWCToolkit.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/macosx/classes/sun/lwawt/macosx/LWCToolkit.java	Tue Oct 15 21:33:54 2019 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -444,6 +444,7 @@
         fontHints.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
         desktopProperties.put(SunToolkit.DESKTOPFONTHINTS, fontHints);
         desktopProperties.put("awt.mouse.numButtons", BUTTONS);
+        desktopProperties.put("awt.multiClickInterval", getMultiClickTime());
 
         // These DnD properties must be set, otherwise Swing ends up spewing NPEs
         // all over the place. The values came straight off of MToolkit.
@@ -538,6 +539,11 @@
         return BUTTONS;
     }
 
+    /**
+     * Returns the double-click time interval in ms.
+     */
+    private static native int getMultiClickTime();
+
     @Override
     public boolean isTraySupported() {
         return true;
--- a/src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m	Tue Oct 15 21:33:54 2019 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -831,3 +831,19 @@
     }
     return JNI_FALSE;
 }
+
+/*
+ * Class:     sun_lwawt_macosx_LWCToolkit
+ * Method:    getMultiClickTime
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL
+Java_sun_lwawt_macosx_LWCToolkit_getMultiClickTime(JNIEnv *env, jclass klass) {
+    __block jint multiClickTime = 0;
+    JNF_COCOA_ENTER(env);
+    [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
+        multiClickTime = (jint)([NSEvent doubleClickInterval] * 1000);
+    }];
+    JNF_COCOA_EXIT(env);
+    return multiClickTime;
+}
--- a/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl/CGLGraphicsConfig.m	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl/CGLGraphicsConfig.m	Tue Oct 15 21:33:54 2019 +0000
@@ -152,7 +152,6 @@
     AWT_ASSERT_APPKIT_THREAD;
 
     jint displayID = (jint)[(NSNumber *)[argValue objectAtIndex: 0] intValue];
-    jint pixfmt = (jint)[(NSNumber *)[argValue objectAtIndex: 1] intValue];
     jint swapInterval = (jint)[(NSNumber *)[argValue objectAtIndex: 2] intValue];
     JNIEnv *env = [ThreadUtilities getJNIEnvUncached];
     [argValue removeAllObjects];
@@ -161,11 +160,7 @@
 
     NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
 
-    CGOpenGLDisplayMask glMask = (CGOpenGLDisplayMask)pixfmt;
     if (sharedContext == NULL) {
-        if (glMask == 0) {
-            glMask = CGDisplayIDToOpenGLDisplayMask(displayID);
-        }
 
         NSOpenGLPixelFormatAttribute attrs[] = {
             NSOpenGLPFAAllowOfflineRenderers,
@@ -176,16 +171,17 @@
             NSOpenGLPFAColorSize, 32,
             NSOpenGLPFAAlphaSize, 8,
             NSOpenGLPFADepthSize, 16,
-            NSOpenGLPFAScreenMask, glMask,
             0
         };
 
         sharedPixelFormat =
             [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs];
         if (sharedPixelFormat == nil) {
-            J2dRlsTraceLn(J2D_TRACE_ERROR, "CGLGraphicsConfig_getCGLConfigInfo: shared NSOpenGLPixelFormat is NULL");
-            [argValue addObject: [NSNumber numberWithLong: 0L]];
-            return;
+            J2dRlsTraceLn(J2D_TRACE_ERROR, 
+                          "CGLGraphicsConfig_getCGLConfigInfo: shared NSOpenGLPixelFormat is NULL");
+                
+           [argValue addObject: [NSNumber numberWithLong: 0L]];
+           return;
         }
 
         sharedContext =
--- a/src/java.desktop/share/classes/java/awt/doc-files/AWTThreadIssues.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/java/awt/doc-files/AWTThreadIssues.html	Tue Oct 15 21:33:54 2019 +0000
@@ -5,7 +5,7 @@
   <title>AWT Threading Issues</title>
 </head>
 <!--
- Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 2019, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 <body>
 <main role="main">
+<div class="contentContainer">
 <h1>AWT Threading Issues</h1>
 
 <a id="ListenersThreads"></a>
@@ -192,6 +193,7 @@
 <cite>The Java&trade; Virtual Machine Specification</cite>
  guarantees
 that the JVM doesn't exit until this thread terminates.
+</div>
 </main>
 </body>
 </html>
--- a/src/java.desktop/share/classes/java/awt/doc-files/DesktopProperties.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/java/awt/doc-files/DesktopProperties.html	Tue Oct 15 21:33:54 2019 +0000
@@ -31,6 +31,7 @@
 
 <body>
 <main role="main">
+<div class="contentContainer">
 <h1>AWT Desktop Properties</h1>
 
 The following refers to standard AWT desktop properties that
@@ -277,6 +278,7 @@
 This property should be used when there is no need in listening mouse events fired as a result of
 activity with extra mouse button.
 By default this property is set to {@code true}.
+</div>
 </main>
 </body>
 </html>
--- a/src/java.desktop/share/classes/java/awt/doc-files/FocusSpec.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/java/awt/doc-files/FocusSpec.html	Tue Oct 15 21:33:54 2019 +0000
@@ -5,7 +5,7 @@
   <title>The AWT Focus Subsystem</title>
 </head>
 <!--
- Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
     <body>
     <main role="main">
+    <div class="contentContainer">
       <h1>The AWT Focus Subsystem</h1>
 
     <p>
@@ -1362,6 +1363,7 @@
           change requests in all cases. Previously, requests were granted
           for heavyweights, but denied for lightweights.
     </ol>
+  </div>
   </main>
 </body>
 </html>
--- a/src/java.desktop/share/classes/java/awt/doc-files/Modality.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/java/awt/doc-files/Modality.html	Tue Oct 15 21:33:54 2019 +0000
@@ -35,6 +35,7 @@
 
 <body>
 <main role="main">
+<div class="contentContainer">
     <h1>The AWT Modality</h1>
 
     <p>
@@ -440,5 +441,6 @@
         <img src="modal-example4.gif" alt="Example 4">
     </p>
     <br style="clear:both;">
+</div>
 </main>
 </body></html>
--- a/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/bmp_metadata.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/bmp_metadata.html	Tue Oct 15 21:33:54 2019 +0000
@@ -5,7 +5,7 @@
   <title>BMP Metadata Format Specification</title>
 </head>
 <!--
-Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
 This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 <body>
 <main role="main">
+<div class="contentContainer">
 <h1>BMP Metadata Format Specification</h1>
 
 The XML schema for the native image metadata format is as follows:
@@ -161,5 +162,6 @@
 </pre>
 
 @since 1.5
+</div>
 </main>
 </body>
--- a/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/gif_metadata.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/gif_metadata.html	Tue Oct 15 21:33:54 2019 +0000
@@ -31,6 +31,7 @@
 
 <body>
 <main role="main">
+<div class="contentContainer">
 <h1>GIF Metadata Format Specification</h1>
 <a id="gif_stream_metadata_format"></a>
 <h2>GIF Stream Metadata Format Specification</h2>
@@ -462,6 +463,7 @@
 </tr>
 </tbody>
 </table>
+</div>
 </main>
 </body>
 </html>
--- a/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/jpeg_metadata.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/jpeg_metadata.html	Tue Oct 15 21:33:54 2019 +0000
@@ -5,7 +5,7 @@
   <title>JPEG Metadata Format Specification and Usage Notes</title>
 </head>
 <!--
-Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
 This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 <body>
 <main role="main">
+<div class="contentContainer">
 <h1>JPEG Metadata Format Specification and Usage Notes</h1>
 
 <p>
@@ -1159,6 +1160,7 @@
   &lt;!-- All elements are as defined above for image metadata --&gt;
 ]&gt;
 </pre>
+</div>
 </main>
 </body>
 </html>
--- a/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/png_metadata.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/png_metadata.html	Tue Oct 15 21:33:54 2019 +0000
@@ -5,7 +5,7 @@
   <title>PNG Metadata Format Specification</title>
 </head>
 <!--
-Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
 This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 <body>
 <main role="main">
+<div class="contentContainer">
 <h1>PNG Metadata Format Specification</h1>
 
 <p>
@@ -561,6 +562,7 @@
           &lt;!-- Data type: String --&gt;
 ]&gt;
 </pre>
+</div>
 </main>
 </body>
 </html>
--- a/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/standard_metadata.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/standard_metadata.html	Tue Oct 15 21:33:54 2019 +0000
@@ -5,7 +5,7 @@
   <title>Standard Metadata Format Specification</title>
 </head>
 <!--
-Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
 This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 <body>
 <main role="main">
+<div class="contentContainer">
 <h1>Standard (Plug-in Neutral) Metadata Format Specification</h1>
 
 <p> The plug-in neutral "javax_imageio_1.0" format consists
@@ -394,6 +395,7 @@
             &lt;!-- Data type: Integer --&gt;
 ]&gt;
 </pre>
+</div>
 </main>
 </body>
 </html>
--- a/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/tiff_metadata.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/tiff_metadata.html	Tue Oct 15 21:33:54 2019 +0000
@@ -31,6 +31,7 @@
 
 <body>
 <main role="main">
+<div class="contentContainer">
 <h1>TIFF Metadata Format Specification and Usage Notes</h1>
 
 <a href="#Reading">Reading Images</a>
@@ -1235,6 +1236,7 @@
 </pre>
 
 @since 9
+</div>
 </main>
 </body>
 </html>
--- a/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/wbmp_metadata.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/wbmp_metadata.html	Tue Oct 15 21:33:54 2019 +0000
@@ -5,7 +5,7 @@
   <title>WBMP Metadata Format Specification</title>
 </head>
 <!--
-Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
 This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 <body>
 <main role="main">
+<div class="contentContainer">
 <h1>WBMP Metadata Format Specification</h1>
 
 The XML schema for the native image metadata format is as follows:
@@ -63,5 +64,6 @@
 </pre>
 
 @since 1.5
+</div>
 </main>
 </body>
--- a/src/java.desktop/share/classes/javax/swing/plaf/multi/doc-files/multi_tsc.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/javax/swing/plaf/multi/doc-files/multi_tsc.html	Tue Oct 15 21:33:54 2019 +0000
@@ -5,7 +5,7 @@
   <title>Using the Multiplexing Look and Feel</title>
 </head>
 <!--
- Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 <body>
 <main role="main">
+<div class="contentContainer">
 <h1>Using the Multiplexing Look and Feel</h1>
 
 <blockquote>
@@ -495,6 +496,7 @@
 of auxiliary look and feels will most likely have developed and
 tested against our Multiplexing look and feel.
 </p>
+</div>
 </main>
 </body>
 </html>
--- a/src/java.desktop/share/classes/javax/swing/plaf/nimbus/doc-files/properties.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/javax/swing/plaf/nimbus/doc-files/properties.html	Tue Oct 15 21:33:54 2019 +0000
@@ -31,6 +31,7 @@
 
 <body>
 <main role="main">
+<div class="contentContainer">
 <h1>Colors Used in Nimbus Look and Feel</h1>
 <h2 id="primaryColors">Primary Colors</h2>
 <table>
@@ -236,6 +237,7 @@
 </tr>
 </tbody>
 </table>
+</div>
 </main>
 </body>
 </html>
--- a/src/java.desktop/share/classes/javax/swing/plaf/synth/doc-files/componentProperties.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/javax/swing/plaf/synth/doc-files/componentProperties.html	Tue Oct 15 21:33:54 2019 +0000
@@ -32,6 +32,7 @@
 
 <body>
 <main role="main">
+<div class="contentContainer">
 <h1>Component Specific Properties</h1>
 <p> The look, and to some degree the feel of Synth
   can be customized by way of component specific properties.
@@ -1345,6 +1346,7 @@
 <p><code>Prefix</code> is one of: EditorPane, FormattedTextField,
 PasswordField, TextArea, TextField or TextPane.<br>
 </p>
+</div>
 </main>
 </body>
 </html>
--- a/src/java.desktop/share/classes/javax/swing/plaf/synth/doc-files/synthFileFormat.html	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/share/classes/javax/swing/plaf/synth/doc-files/synthFileFormat.html	Tue Oct 15 21:33:54 2019 +0000
@@ -46,6 +46,7 @@
 
   <body>
   <main role="main">
+  <div class="contentContainer">
     <h1><a id="file">File Format</a></h1>
     <p>
       Synth's file format (<a href="synth.dtd">dtd</a>)
@@ -1030,6 +1031,7 @@
 &lt;/synth>
       </pre>
     </div>
+  </div>
   </main>
   </body>
 </html>
--- a/src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java	Tue Oct 15 21:33:54 2019 +0000
@@ -25,7 +25,6 @@
 
 package sun.font;
 
-import java.awt.Font;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -45,11 +44,9 @@
 import sun.awt.FontDescriptor;
 import sun.awt.SunToolkit;
 import sun.font.CompositeFontDescriptor;
-import sun.font.FontManager;
 import sun.font.FontConfigManager.FontConfigInfo;
 import sun.font.FontConfigManager.FcCompFont;
 import sun.font.FontConfigManager.FontConfigFont;
-import sun.java2d.SunGraphicsEnvironment;
 import sun.util.logging.PlatformLogger;
 
 public class FcFontConfiguration extends FontConfiguration {
@@ -289,12 +286,10 @@
     /**
      * Gets the OS version string from a Linux release-specific file.
      */
-    private String getVersionString(File f){
-        try {
-            Scanner sc  = new Scanner(f);
+    private String getVersionString(File f) {
+        try (Scanner sc  = new Scanner(f)) {
             return sc.findInLine("(\\d)+((\\.)(\\d)+)*");
-        }
-        catch (Exception e){
+        } catch (Exception e) {
         }
         return null;
     }
@@ -429,23 +424,26 @@
     private void readFcInfo() {
         File fcFile = getFcInfoFile();
         if (!fcFile.exists()) {
+            if (FontUtilities.debugFonts()) {
+                warning("fontconfig info file " + fcFile.toString() + " does not exist");
+            }
             return;
         }
         Properties props = new Properties();
-        FcFontManager fm = (FcFontManager) fontManager;
-        FontConfigManager fcm = fm.getFontConfigManager();
-        try {
-            FileInputStream fis = new FileInputStream(fcFile);
+        try (FileInputStream fis = new FileInputStream(fcFile)) {
             props.load(fis);
-            fis.close();
         } catch (IOException e) {
             if (FontUtilities.debugFonts()) {
-                warning("IOException reading from "+fcFile.toString());
+                warning("IOException (" + e.getCause() + ") reading from " + fcFile.toString());
             }
             return;
         }
         String version = (String)props.get("version");
         if (version == null || !version.equals(fileVersion)) {
+            if (FontUtilities.debugFonts()) {
+                warning("fontconfig info file version mismatch (found: " + version +
+                    ", expected: " + fileVersion + ")");
+            }
             return;
         }
 
@@ -458,6 +456,9 @@
                 fcVersion = Integer.parseInt(fcVersionStr);
                 if (fcVersion != 0 &&
                     fcVersion != FontConfigManager.getFontConfigVersion()) {
+                    if (FontUtilities.debugFonts()) {
+                        warning("new, different fontconfig detected");
+                    }
                     return;
                 }
             } catch (Exception e) {
@@ -480,6 +481,9 @@
             }
             File dirFile = new File(dir);
             if (dirFile.exists() && dirFile.lastModified() > lastModified) {
+                if (FontUtilities.debugFonts()) {
+                    warning("out of date cache directories detected");
+                }
                 return;
             }
             cacheDirIndex++;
@@ -503,6 +507,9 @@
                     String lenStr = (String)props.get(key+".length");
                     int nfonts = Integer.parseInt(lenStr);
                     if (nfonts <= 0) {
+                        if (FontUtilities.debugFonts()) {
+                            warning("bad non-positive .length entry in fontconfig file " + fcFile.toString());
+                        }
                         return; // bad file
                     }
                     fci[index].allFonts = new FontConfigFont[nfonts];
@@ -514,6 +521,9 @@
                         fkey = key+"."+f+".file";
                         String file = (String)props.get(fkey);
                         if (file == null) {
+                            if (FontUtilities.debugFonts()) {
+                                warning("missing file value for key " + fkey + " in fontconfig file " + fcFile.toString());
+                            }
                             return; // bad file
                         }
                         fci[index].allFonts[f].fontFile = file;
@@ -528,6 +538,11 @@
                 warning(t.toString());
             }
         }
+
+        if (FontUtilities.debugFonts()) {
+            PlatformLogger logger = FontUtilities.getLogger();
+            logger.info("successfully parsed the fontconfig file at " + fcFile.toString());
+        }
     }
 
     private static void warning(String msg) {
--- a/src/java.desktop/unix/native/common/awt/X11Color.c	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/unix/native/common/awt/X11Color.c	Tue Oct 15 21:33:54 2019 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -336,19 +336,6 @@
 
     return awt_color_match(r, g, b, awt_data);
 }
-
-void
-awt_allocate_systemcolors(XColor *colorsPtr, int num_pixels, AwtGraphicsConfigDataPtr awtData) {
-    int i;
-    int r, g, b, pixel;
-
-    for (i=0; i < num_pixels; i++) {
-        r = colorsPtr[i].red   >> 8;
-        g = colorsPtr[i].green >> 8;
-        b = colorsPtr[i].blue  >> 8;
-        pixel = alloc_col(awt_display, awtData->awt_cmap, r, g, b, -1, awtData);
-    }
-}
 #endif /* !HEADLESS */
 
 void
@@ -1276,12 +1263,6 @@
 extern jfieldID colorValueID;
 
 #ifndef HEADLESS
-int awtJNI_GetColor(JNIEnv *env,jobject this)
-{
-    /* REMIND: should not be defaultConfig. */
-    return awtJNI_GetColorForVis (env, this, getDefaultConfig(DefaultScreen(awt_display)));
-}
-
 int awtJNI_GetColorForVis (JNIEnv *env,jobject this, AwtGraphicsConfigDataPtr awt_data)
 {
     int col;
--- a/src/java.desktop/unix/native/common/awt/awt_Font.c	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/unix/native/common/awt/awt_Font.c	Tue Oct 15 21:33:54 2019 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,51 +23,10 @@
  * questions.
  */
 
-#ifndef HEADLESS
-
-#include "awt_p.h"
-#include <string.h>
-#include "java_awt_Component.h"
 #include "java_awt_Font.h"
-#include "java_awt_FontMetrics.h"
-#include "sun_awt_X11GraphicsEnvironment.h"
-
-#include "awt_Font.h"
-
-#include "java_awt_Dimension.h"
-#include "Disposer.h"
-#endif /* !HEADLESS */
-#include <jni.h>
-#ifndef HEADLESS
-#include <jni_util.h>
-
-#define defaultXLFD "-*-helvetica-*-*-*-*-12-*-*-*-*-*-iso8859-1"
-
-struct FontIDs fontIDs;
-struct PlatformFontIDs platformFontIDs;
+#include "sun_awt_FontDescriptor.h"
+#include "sun_awt_PlatformFont.h"
 
-static void pDataDisposeMethod(JNIEnv *env, jlong pData);
-
-/* #define FONT_DEBUG 2 */
-/* 1- print failures, 2- print all, 3- terminate on failure */
-#if FONT_DEBUG
-static XFontStruct *XLoadQueryFontX(Display *display, char *name)
-{
-    XFontStruct *result = NULL;
-    result = XLoadQueryFont(display, name);
-#if FONT_DEBUG < 2
-    if (result == NULL)
-#endif
-        fprintf(stderr, "XLoadQueryFont(\"%s\") -> 0x%x.\n", name, result);
-#if FONT_DEBUG >= 3
-    if (result == NULL)
-        exit(-1);
-#endif
-    return result;
-}
-#define XLoadQueryFont XLoadQueryFontX
-#endif
-#endif /* !HEADLESS */
 
 /*
  * Class:     java_awt_Font
@@ -79,28 +38,9 @@
    to initialize the fieldIDs for fields that may be accessed from C */
 
 JNIEXPORT void JNICALL
-Java_java_awt_Font_initIDs
-  (JNIEnv *env, jclass cls)
-{
-#ifndef HEADLESS
-    CHECK_NULL(fontIDs.pData = (*env)->GetFieldID(env, cls, "pData", "J"));
-    CHECK_NULL(fontIDs.style = (*env)->GetFieldID(env, cls, "style", "I"));
-    CHECK_NULL(fontIDs.size = (*env)->GetFieldID(env, cls, "size", "I"));
-    CHECK_NULL(fontIDs.getPeer = (*env)->GetMethodID(env, cls, "getFontPeer",
-                                                     "()Ljava/awt/peer/FontPeer;"));
-    CHECK_NULL(fontIDs.getFamily = (*env)->GetMethodID(env, cls, "getFamily_NoClientCode",
-                                                       "()Ljava/lang/String;"));
-#endif /* !HEADLESS */
+Java_java_awt_Font_initIDs(JNIEnv *env, jclass cls) {
 }
 
-#ifndef HEADLESS
-/* fieldIDs for FontDescriptor fields that may be accessed from C */
-static struct FontDescriptorIDs {
-    jfieldID nativeName;
-    jfieldID charsetName;
-} fontDescriptorIDs;
-#endif /* !HEADLESS */
-
 /*
  * Class:     sun_awt_FontDescriptor
  * Method:    initIDs
@@ -112,15 +52,7 @@
    that may be accessed from C */
 
 JNIEXPORT void JNICALL
-Java_sun_awt_FontDescriptor_initIDs
-  (JNIEnv *env, jclass cls)
-{
-#ifndef HEADLESS
-    CHECK_NULL(fontDescriptorIDs.nativeName =
-               (*env)->GetFieldID(env, cls, "nativeName", "Ljava/lang/String;"));
-    CHECK_NULL(fontDescriptorIDs.charsetName =
-               (*env)->GetFieldID(env, cls, "charsetName", "Ljava/lang/String;"));
-#endif /* !HEADLESS */
+Java_sun_awt_FontDescriptor_initIDs(JNIEnv *env, jclass cls) {
 }
 
 /*
@@ -134,354 +66,5 @@
    that may be accessed from C */
 
 JNIEXPORT void JNICALL
-Java_sun_awt_PlatformFont_initIDs
-  (JNIEnv *env, jclass cls)
-{
-#ifndef HEADLESS
-    CHECK_NULL(platformFontIDs.componentFonts =
-               (*env)->GetFieldID(env, cls, "componentFonts",
-                                  "[Lsun/awt/FontDescriptor;"));
-    CHECK_NULL(platformFontIDs.fontConfig =
-               (*env)->GetFieldID(env,cls, "fontConfig",
-                                  "Lsun/awt/FontConfiguration;"));
-    CHECK_NULL(platformFontIDs.makeConvertedMultiFontString =
-               (*env)->GetMethodID(env, cls, "makeConvertedMultiFontString",
-                                   "(Ljava/lang/String;)[Ljava/lang/Object;"));
-    CHECK_NULL(platformFontIDs.makeConvertedMultiFontChars =
-               (*env)->GetMethodID(env, cls, "makeConvertedMultiFontChars",
-                                   "([CII)[Ljava/lang/Object;"));
-#endif /* !HEADLESS */
+Java_sun_awt_PlatformFont_initIDs(JNIEnv *env, jclass cls) {
 }
-
-#ifndef HEADLESS
-XFontStruct *
-loadFont(Display * display, char *name, int32_t pointSize)
-{
-    XFontStruct *f = NULL;
-
-    /* try the exact xlfd name in font configuration file */
-    f = XLoadQueryFont(display, name);
-    if (f != NULL) {
-        return f;
-    }
-
-    /*
-     * try nearly font
-     *
-     *  1. specify FAMILY_NAME, WEIGHT_NAME, SLANT, POINT_SIZE,
-     *     CHARSET_REGISTRY and CHARSET_ENCODING.
-     *  2. change POINT_SIZE to PIXEL_SIZE
-     *  3. change FAMILY_NAME to *
-     *  4. specify only PIXEL_SIZE and CHARSET_REGISTRY/ENCODING
-     *  5. change PIXEL_SIZE +1/-1/+2/-2...+4/-4
-     *  6. default font pattern
-     */
-    {
-        /*
-         * This code assumes the name contains exactly 14 '-' delimiter.
-         * If not use default pattern.
-         */
-        int32_t i, length, pixelSize;
-        Boolean useDefault = FALSE;
-
-        char buffer[BUFSIZ], buffer2[BUFSIZ];
-        char *family = NULL, *style = NULL, *slant = NULL, *encoding = NULL;
-        char *start = NULL, *end = NULL;
-
-        if (strlen(name) > BUFSIZ - 1) {
-            useDefault = TRUE;
-        } else {
-            strcpy(buffer, name);
-        }
-
-#define NEXT_HYPHEN\
-        start = end + 1;\
-        end = strchr(start, '-');\
-        if (end == NULL) {\
-                              useDefault = TRUE;\
-        break;\
-        }\
-        *end = '\0'
-
-             do {
-                 end = buffer;
-
-                 /* skip FOUNDRY */
-                 NEXT_HYPHEN;
-
-                 /* set FAMILY_NAME */
-                 NEXT_HYPHEN;
-                 family = start;
-
-                 /* set STYLE_NAME */
-                 NEXT_HYPHEN;
-                 style = start;
-
-                 /* set SLANT */
-                 NEXT_HYPHEN;
-                 slant = start;
-
-                 /* skip SETWIDTH_NAME, ADD_STYLE_NAME, PIXEL_SIZE
-                    POINT_SIZE, RESOLUTION_X, RESOLUTION_Y, SPACING
-                    and AVERAGE_WIDTH */
-                 NEXT_HYPHEN;
-                 NEXT_HYPHEN;
-                 NEXT_HYPHEN;
-                 NEXT_HYPHEN;
-                 NEXT_HYPHEN;
-                 NEXT_HYPHEN;
-                 NEXT_HYPHEN;
-                 NEXT_HYPHEN;
-
-                 /* set CHARSET_REGISTRY and CHARSET_ENCODING */
-                 encoding = end + 1;
-             }
-             while (0);
-
-#define TRY_LOAD\
-        f = XLoadQueryFont(display, buffer2);\
-        if (f != NULL) {\
-                            strcpy(name, buffer2);\
-        return f;\
-        }
-
-        if (!useDefault) {
-            char *altstyle = NULL;
-
-            /* Regular is the style for TrueType fonts -- Type1, F3 use roman */
-            if (strcmp(style, "regular") == 0) {
-                altstyle = "roman";
-            }
-#if defined(__linux__) || defined(MACOSX)
-            if (!strcmp(family, "lucidasans")) {
-                family = "lucida";
-            }
-#endif
-            /* try 1. */
-            jio_snprintf(buffer2, sizeof(buffer2),
-                         "-*-%s-%s-%s-*-*-*-%d-*-*-*-*-%s",
-                         family, style, slant, pointSize, encoding);
-            TRY_LOAD;
-
-            if (altstyle != NULL) {
-                jio_snprintf(buffer2, sizeof(buffer2),
-                             "-*-%s-%s-%s-*-*-*-%d-*-*-*-*-%s",
-                             family, altstyle, slant, pointSize, encoding);
-                TRY_LOAD;
-            }
-
-            /* search bitmap font */
-            pixelSize = pointSize / 10;
-
-            /* try 2. */
-            jio_snprintf(buffer2, sizeof(buffer2),
-                         "-*-%s-%s-%s-*-*-%d-*-*-*-*-*-%s",
-                         family, style, slant, pixelSize, encoding);
-            TRY_LOAD;
-
-            if (altstyle != NULL) {
-                jio_snprintf(buffer2, sizeof(buffer2),
-                             "-*-%s-%s-%s-*-*-%d-*-*-*-*-*-%s",
-                             family, altstyle, slant, pixelSize, encoding);
-                TRY_LOAD;
-            }
-
-            /* try 3 */
-            jio_snprintf(buffer2, sizeof(buffer2),
-                         "-*-*-%s-%s-*-*-%d-*-*-*-*-*-%s",
-                         style, slant, pixelSize, encoding);
-            TRY_LOAD;
-            if (altstyle != NULL) {
-                jio_snprintf(buffer2, sizeof(buffer2),
-                             "-*-*-%s-%s-*-*-%d-*-*-*-*-*-%s",
-                             altstyle, slant, pixelSize, encoding);
-                TRY_LOAD;
-            }
-
-            /* try 4 */
-            jio_snprintf(buffer2, sizeof(buffer2),
-                         "-*-*-*-%s-*-*-%d-*-*-*-*-*-%s",
-                         slant, pixelSize, encoding);
-
-            TRY_LOAD;
-
-            /* try 5. */
-            jio_snprintf(buffer2, sizeof(buffer2),
-                         "-*-*-*-*-*-*-%d-*-*-*-*-*-%s",
-                         pixelSize, encoding);
-            TRY_LOAD;
-
-            /* try 6. */
-            for (i = 1; i < 4; i++) {
-                if (pixelSize < i)
-                    break;
-                jio_snprintf(buffer2, sizeof(buffer2),
-                             "-*-%s-%s-%s-*-*-%d-*-*-*-*-*-%s",
-                             family, style, slant, pixelSize + i, encoding);
-                TRY_LOAD;
-
-                jio_snprintf(buffer2, sizeof(buffer2),
-                             "-*-%s-%s-%s-*-*-%d-*-*-*-*-*-%s",
-                             family, style, slant, pixelSize - i, encoding);
-                TRY_LOAD;
-
-                jio_snprintf(buffer2, sizeof(buffer2),
-                             "-*-*-*-*-*-*-%d-*-*-*-*-*-%s",
-                             pixelSize + i, encoding);
-                TRY_LOAD;
-
-                jio_snprintf(buffer2, sizeof(buffer2),
-                             "-*-*-*-*-*-*-%d-*-*-*-*-*-%s",
-                             pixelSize - i, encoding);
-                TRY_LOAD;
-            }
-        }
-    }
-
-    strcpy(name, defaultXLFD);
-    return XLoadQueryFont(display, defaultXLFD);
-}
-
-/*
- * Hardwired list of mappings for generic font names "Helvetica",
- * "TimesRoman", "Courier", "Dialog", and "DialogInput".
- */
-static char *defaultfontname = "fixed";
-static char *defaultfoundry = "misc";
-static char *anyfoundry = "*";
-static char *anystyle = "*-*";
-static char *isolatin1 = "iso8859-1";
-
-static char *
-Style(int32_t s)
-{
-    switch (s) {
-        case java_awt_Font_ITALIC:
-            return "medium-i";
-        case java_awt_Font_BOLD:
-            return "bold-r";
-        case java_awt_Font_BOLD + java_awt_Font_ITALIC:
-            return "bold-i";
-        case java_awt_Font_PLAIN:
-        default:
-            return "medium-r";
-    }
-}
-
-static int32_t
-awtJNI_FontName(JNIEnv * env, jstring name, char **foundry, char **facename, char **encoding)
-{
-    char *cname = NULL;
-
-    if (JNU_IsNull(env, name)) {
-        return 0;
-    }
-    cname = (char *) JNU_GetStringPlatformChars(env, name, NULL);
-    if (cname == NULL) {
-        (*env)->ExceptionClear(env);
-        JNU_ThrowOutOfMemoryError(env, "Could not create font name");
-        return 0;
-    }
-
-    /* additional default font names */
-    if (strcmp(cname, "serif") == 0) {
-        *foundry = "adobe";
-        *facename = "times";
-        *encoding = isolatin1;
-    } else if (strcmp(cname, "sansserif") == 0) {
-        *foundry = "adobe";
-        *facename = "helvetica";
-        *encoding = isolatin1;
-    } else if (strcmp(cname, "monospaced") == 0) {
-        *foundry = "adobe";
-        *facename = "courier";
-        *encoding = isolatin1;
-    } else if (strcmp(cname, "helvetica") == 0) {
-        *foundry = "adobe";
-        *facename = "helvetica";
-        *encoding = isolatin1;
-    } else if (strcmp(cname, "timesroman") == 0) {
-        *foundry = "adobe";
-        *facename = "times";
-        *encoding = isolatin1;
-    } else if (strcmp(cname, "courier") == 0) {
-        *foundry = "adobe";
-        *facename = "courier";
-        *encoding = isolatin1;
-    } else if (strcmp(cname, "dialog") == 0) {
-        *foundry = "b&h";
-        *facename = "lucida";
-        *encoding = isolatin1;
-    } else if (strcmp(cname, "dialoginput") == 0) {
-        *foundry = "b&h";
-        *facename = "lucidatypewriter";
-        *encoding = isolatin1;
-    } else if (strcmp(cname, "zapfdingbats") == 0) {
-        *foundry = "itc";
-        *facename = "zapfdingbats";
-        *encoding = "*-*";
-    } else {
-#ifdef DEBUG
-        jio_fprintf(stderr, "Unknown font: %s\n", cname);
-#endif
-        *foundry = defaultfoundry;
-        *facename = defaultfontname;
-        *encoding = isolatin1;
-    }
-
-    if (cname != NULL)
-        JNU_ReleaseStringPlatformChars(env, name, (const char *) cname);
-
-    return 1;
-}
-
-/*
- * Registered with the 2D disposer to be called after the Font is GC'd.
- */
-static void pDataDisposeMethod(JNIEnv *env, jlong pData)
-{
-    struct FontData *fdata = NULL;
-    int32_t i = 0;
-    Display *display = XDISPLAY;
-
-    AWT_LOCK();
-    fdata = (struct FontData *)pData;
-
-    if (fdata == NULL) {
-        AWT_UNLOCK();
-        return;
-    }
-
-    if (fdata->xfs != NULL) {
-        XFreeFontSet(display, fdata->xfs);
-    }
-
-    /* AWT fonts are always "multifonts" and probably have been in
-     * all post 1.0 releases, so this test for multi fonts is
-     * probably not needed, and the singleton xfont is probably never used.
-     */
-    if (fdata->charset_num > 0) {
-        for (i = 0; i < fdata->charset_num; i++) {
-            free((void *)fdata->flist[i].xlfd);
-            JNU_ReleaseStringPlatformChars(env, NULL,
-                                           fdata->flist[i].charset_name);
-            if (fdata->flist[i].load) {
-                XFreeFont(display, fdata->flist[i].xfont);
-            }
-        }
-
-        free((void *)fdata->flist);
-
-        /* Don't free fdata->xfont because it is equal to fdata->flist[i].xfont
-           for some 'i' */
-    } else {
-        if (fdata->xfont != NULL) {
-            XFreeFont(display, fdata->xfont);
-        }
-    }
-
-    free((void *)fdata);
-
-    AWT_UNLOCK();
-}
-#endif /* !HEADLESS */
--- a/src/java.desktop/unix/native/common/awt/awt_Font.h	Mon Oct 14 21:01:25 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * 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.
- */
-
-#include <jni_util.h>
-
-/* fieldIDs for Font fields that may be accessed from C */
-struct FontIDs {
-    jfieldID pData;
-    jfieldID style;
-    jfieldID size;
-    jmethodID getPeer;
-    jmethodID getFamily;
-};
-
-/* fieldIDs for PlatformFont fields that may be accessed from C */
-struct PlatformFontIDs {
-    jfieldID componentFonts;
-    jfieldID fontConfig;
-    jmethodID makeConvertedMultiFontString;
-    jmethodID makeConvertedMultiFontChars;
-};
--- a/src/java.desktop/unix/native/common/awt/awt_p.h	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/unix/native/common/awt/awt_p.h	Tue Oct 15 21:33:54 2019 +0000
@@ -30,11 +30,6 @@
 #ifndef _AWT_P_H_
 #define _AWT_P_H_
 
-/* turn on to do event filtering */
-#define NEW_EVENT_MODEL
-/* turn on to only filter keyboard events */
-#define KEYBOARD_ONLY_EVENTS
-
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -58,9 +53,6 @@
 #endif
 #endif /* !HEADLESS */
 
-#define RepaintPending_NONE     0
-#define RepaintPending_REPAINT  (1 << 0)
-#define RepaintPending_EXPOSE   (1 << 1)
 #define LOOKUPSIZE 32
 
 #ifndef HEADLESS
@@ -101,24 +93,6 @@
 
 typedef AwtScreenData* AwtScreenDataPtr;
 
-#define W_GRAVITY_INITIALIZED 1
-#define W_IS_EMBEDDED 2
-
-typedef struct awtFontList {
-    char *xlfd;
-    int index_length;
-    int load;
-    char *charset_name;
-    XFontStruct *xfont;
-} awtFontList;
-
-struct FontData {
-    int charset_num;
-    awtFontList *flist;
-    XFontSet xfs;       /* for TextField & TextArea */
-    XFontStruct *xfont; /* Latin1 font */
-};
-
 extern AwtGraphicsConfigDataPtr getDefaultConfig(int screen);
 extern AwtScreenDataPtr getScreenData(int screen);
 #endif /* !HEADLESS */
@@ -127,13 +101,10 @@
 #define ZALLOC(T)       ((struct T *)calloc(1, sizeof(struct T)))
 
 #ifndef HEADLESS
-#define XDISPLAY awt_display;
 
 extern int awt_allocate_colors(AwtGraphicsConfigDataPtr);
-extern void awt_allocate_systemcolors(XColor *, int, AwtGraphicsConfigDataPtr);
 extern void awt_allocate_systemrgbcolors(jint *, int, AwtGraphicsConfigDataPtr);
 
-extern int awtJNI_GetColor(JNIEnv *, jobject);
 extern int awtJNI_GetColorForVis (JNIEnv *, jobject, AwtGraphicsConfigDataPtr);
 extern jobject awtJNI_GetColorModel(JNIEnv *, AwtGraphicsConfigDataPtr);
 extern void awtJNI_CreateColorData (JNIEnv *, AwtGraphicsConfigDataPtr, int lock);
--- a/src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c	Tue Oct 15 21:33:54 2019 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,7 +39,6 @@
 #include "awt_p.h"
 #include "awt_Component.h"
 #include "awt_MenuComponent.h"
-#include "awt_Font.h"
 #include "awt_util.h"
 
 #include "sun_awt_X11_XToolkit.h"
--- a/src/java.rmi/share/classes/java/rmi/activation/ActivationGroup.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.rmi/share/classes/java/rmi/activation/ActivationGroup.java	Tue Oct 15 21:33:54 2019 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -107,6 +107,7 @@
     /**
      * @serial the group's monitor
      */
+    @SuppressWarnings("serial") // Not statically typed as Serializable
     private ActivationMonitor monitor;
 
     /**
--- a/src/java.rmi/share/classes/java/rmi/activation/ActivationGroupID.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.rmi/share/classes/java/rmi/activation/ActivationGroupID.java	Tue Oct 15 21:33:54 2019 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -49,6 +49,7 @@
     /**
      * @serial The group's activation system.
      */
+    @SuppressWarnings("serial") // Not statically typed as Serializable
     private ActivationSystem system;
 
     /**
--- a/src/java.rmi/share/classes/java/rmi/server/UnicastRemoteObject.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.rmi/share/classes/java/rmi/server/UnicastRemoteObject.java	Tue Oct 15 21:33:54 2019 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -189,12 +189,14 @@
     /**
      * @serial client-side socket factory (if any)
      */
+    @SuppressWarnings("serial") // Not statically typed as Serializable
     private RMIClientSocketFactory csf = null;
 
     /**
      * @serial server-side socket factory (if any) to use when
      * exporting object
      */
+    @SuppressWarnings("serial") // Not statically typed as Serializable
     private RMIServerSocketFactory ssf = null;
 
     /* indicate compatibility with JDK 1.1.x version of class */
--- a/src/java.rmi/share/classes/sun/rmi/server/ActivatableServerRef.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.rmi/share/classes/sun/rmi/server/ActivatableServerRef.java	Tue Oct 15 21:33:54 2019 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,6 +38,7 @@
  *
  * @author Ann Wollrath
  */
+@SuppressWarnings("serial") // Externalizable class w/o no-arg c'tor
 public class ActivatableServerRef extends UnicastServerRef2 {
 
     private static final long serialVersionUID = 2002967993223003793L;
--- a/src/java.rmi/share/classes/sun/rmi/server/Activation.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.rmi/share/classes/sun/rmi/server/Activation.java	Tue Oct 15 21:33:54 2019 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -145,9 +145,11 @@
     private static boolean debugExec;
 
     /** maps activation id to its respective group id */
+    @SuppressWarnings("serial") // Conditionally serializable
     private Map<ActivationID,ActivationGroupID> idTable =
         new ConcurrentHashMap<>();
     /** maps group id to its GroupEntry groups */
+    @SuppressWarnings("serial") // Conditionally serializable
     private Map<ActivationGroupID,GroupEntry> groupTable =
         new ConcurrentHashMap<>();
 
@@ -297,6 +299,7 @@
 
         private static final String NAME = ActivationSystem.class.getName();
         private static final long serialVersionUID = 4877330021609408794L;
+        @SuppressWarnings("serial") // Not statically typed as Serializable
         private ActivationSystem systemStub = null;
 
         SystemRegistryImpl(int port,
@@ -498,6 +501,7 @@
      * with RegistryImpl.checkAccess().
      * The kind of access is retained for an exception if one is thrown.
      */
+    @SuppressWarnings("serial") // Externalizable class w/o no-arg c'tor
     static class SameHostOnlyServerRef extends UnicastServerRef {
         private static final long serialVersionUID = 1234L;
         private String accessKind;      // an exception message
@@ -873,7 +877,9 @@
         ActivationGroupDesc desc = null;
         ActivationGroupID groupID = null;
         long incarnation = 0;
+        @SuppressWarnings("serial") // Conditionally serializable
         Map<ActivationID,ObjectEntry> objects = new HashMap<>();
+        @SuppressWarnings("serial") // Conditionally serializable
         Set<ActivationID> restartSet = new HashSet<>();
 
         transient ActivationInstantiator group = null;
--- a/src/java.rmi/share/classes/sun/rmi/server/ActivationGroupImpl.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/java.rmi/share/classes/sun/rmi/server/ActivationGroupImpl.java	Tue Oct 15 21:33:54 2019 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -69,6 +69,7 @@
         new Hashtable<>();
     private boolean groupInactive = false;
     private final ActivationGroupID groupID;
+    @SuppressWarnings("serial")  // Conditionally serializable
     private final List<ActivationID> lockedIDs = new ArrayList<>();
 
     /**
--- a/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.c	Mon Oct 14 21:01:25 2019 +0000
+++ b/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.c	Tue Oct 15 21:33:54 2019 +0000
@@ -40,7 +40,6 @@
 #include "sys.h"
 
 /* How the options get to OnLoad: */
-#define XDEBUG "-Xdebug"
 #define XRUN "-Xrunjdwp"
 #define AGENTLIB "-agentlib:jdwp"
 
@@ -898,7 +897,7 @@
  "--------\n"
  "  - The older " XRUN " interface can still be used, but will be removed in\n"
  "    a future release, for example:\n"
- "        java " XDEBUG " " XRUN ":[help]|[<option>=<value>, ...]\n"
+ "        java " XRUN ":[help]|[<option>=<value>, ...]\n"
     ));
 
 #ifdef DEBUG
--- a/test/hotspot/jtreg/TEST.groups	Mon Oct 14 21:01:25 2019 +0000
+++ b/test/hotspot/jtreg/TEST.groups	Tue Oct 15 21:33:54 2019 +0000
@@ -384,26 +384,26 @@
 
 hotspot_tier2_runtime = \
   runtime/ \
-  serviceability/ \
  -runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java \
  -runtime/CompressedOops/UseCompressedOops.java \
  -runtime/InvocationTests \
  -runtime/Thread/TestThreadDumpMonitorContention.java \
  -:tier1_runtime \
- -:tier1_serviceability \
  -:hotspot_tier2_runtime_platform_agnostic \
  -runtime/signal \
  -runtime/NMT/MallocStressTest.java
 
+hotspot_tier2_serviceability = \
+  serviceability/ \
+ -:tier1_serviceability
+
 hotspot_tier2_runtime_platform_agnostic = \
   runtime/SelectionResolution \
  -:tier1_runtime
 
 hotspot_tier3_runtime = \
   runtime/ \
-  serviceability/ \
  -:tier1_runtime \
- -:tier1_serviceability \
  -:hotspot_tier2_runtime_platform_agnostic \
  -:hotspot_tier2_runtime
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/loopopts/TestRemoveEmptyLoop.java	Tue Oct 15 21:33:54 2019 +0000
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2019, Huawei Technologies Co. Ltd. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8231988
+ * @summary Unexpected test result caused by C2 IdealLoopTree::do_remove_empty_loop
+ *
+ * @run main/othervm -XX:-TieredCompilation -XX:-BackgroundCompilation
+ *      compiler.loopopts.TestRemoveEmptyLoop
+ */
+
+package compiler.loopopts;
+
+public class TestRemoveEmptyLoop {
+
+    public void test() {
+        int i = 34;
+        for (; i > 0; i -= 11);
+        if (i < 0) {
+            // do nothing
+        } else {
+            throw new RuntimeException("Test failed.");
+        }
+    }
+
+    public static void main(String[] args) {
+        TestRemoveEmptyLoop _instance = new TestRemoveEmptyLoop();
+        for (int i = 0; i < 50000; i++) {
+            _instance.test();
+        }
+        System.out.println("Test passed.");
+    }
+
+}
--- a/test/hotspot/jtreg/gc/epsilon/TestAlwaysPretouch.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/test/hotspot/jtreg/gc/epsilon/TestAlwaysPretouch.java	Tue Oct 15 21:33:54 2019 +0000
@@ -26,7 +26,12 @@
  * @key gc
  * @requires vm.gc.Epsilon & !vm.graal.enabled
  * @summary Basic sanity test for Epsilon
- * @run main/othervm -Xmx1g -XX:+AlwaysPreTouch -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestAlwaysPretouch
+ * @run main/othervm -Xms128m -Xmx1g                     -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestAlwaysPretouch
+ * @run main/othervm -Xms128m -Xmx1g -XX:-AlwaysPreTouch -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestAlwaysPretouch
+ * @run main/othervm -Xms128m -Xmx1g -XX:+AlwaysPreTouch -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestAlwaysPretouch
+ * @run main/othervm          -Xmx1g                     -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestAlwaysPretouch
+ * @run main/othervm          -Xmx1g -XX:-AlwaysPreTouch -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestAlwaysPretouch
+ * @run main/othervm          -Xmx1g -XX:+AlwaysPreTouch -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC gc.epsilon.TestAlwaysPretouch
  */
 
 package gc.epsilon;
--- a/test/jdk/ProblemList.txt	Mon Oct 14 21:01:25 2019 +0000
+++ b/test/jdk/ProblemList.txt	Tue Oct 15 21:33:54 2019 +0000
@@ -884,6 +884,7 @@
 jdk/jfr/event/io/EvilInstrument.java                            8221331    generic-all
 jdk/jfr/event/runtime/TestNetworkUtilizationEvent.java          8228990,8229370    generic-all
 jdk/jfr/event/compiler/TestCodeSweeper.java                     8225209    generic-all
+jdk/jfr/event/oldobject/TestLargeRootSet.java                   8205651    generic-all
 
 ############################################################################
 
--- a/test/jdk/com/sun/jdi/RedefineNestmateAttr/TestNestmateAttr.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/test/jdk/com/sun/jdi/RedefineNestmateAttr/TestNestmateAttr.java	Tue Oct 15 21:33:54 2019 +0000
@@ -151,9 +151,13 @@
    reference.
 */
 class Target {
+
+    static Class<?> topLevelHostA; // Prevent unloading of the class
+
     // We have to load all of the variants of the classes that we will
     // attempt to redefine. This requires some in-memory compilation
     // and use of additional classloaders.
+
     public static void main(String[] args) throws Throwable {
         String origin = args[0];
         System.out.println("Target: Testing original Host class from " + origin);
@@ -178,7 +182,7 @@
             String hostA = "public class " + name + " {}";
             byte[] bytes = InMemoryJavaCompiler.compile(name, hostA);
             // And we have to load this into a new classloader
-            Class<?> topLevelHostA = ByteCodeLoader.load(name, bytes);
+            topLevelHostA = ByteCodeLoader.load(name, bytes);
             // The loaded class has not been linked (as per ClassLoader.resolveClass)
             // and so will be filtered out by VirtualMachine.allClasses(). There are
             // a number of ways to force linking - this is the simplest.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/awt/Toolkit/GetMulticlickTime/GetMulticlickTime.java	Tue Oct 15 21:33:54 2019 +0000
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2002, 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.Toolkit;
+
+/**
+ * @test
+ * @key headful
+ * @bug 4559047 7124404
+ * @summary Solaris/Linux/macOS do not set awt.multiClickInterval desktop property
+ */
+public final class GetMulticlickTime {
+
+    public static void main(final String[] args) {
+        Integer time = (Integer) Toolkit.getDefaultToolkit()
+                                        .getDesktopProperty("awt.multiClickInterval");
+        if (time == null || time <= 0 || time > 30_000) {
+            throw new RuntimeException("awt.multiClickInterval:" + time);
+        }
+    }
+}
--- a/test/jdk/java/awt/print/PrinterJob/CustomFont/CustomFont.java	Mon Oct 14 21:01:25 2019 +0000
+++ b/test/jdk/java/awt/print/PrinterJob/CustomFont/CustomFont.java	Tue Oct 15 21:33:54 2019 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
 
 /*
   @test
-  @bug 4386025
+  @bug 4386025 8231243
   @summary fonts not in win32 font directory print incorrectly.
   @author prr: area=PrinterJob
   @run main/manual CustomFont
@@ -83,12 +83,13 @@
   Font customFont;
   public CustomFont() {
        try {
-             FileInputStream fin = new FileInputStream("A.ttf");
+             String dir = System.getProperty("test.src", ".");
+             String fileName = dir + File.separator + "A.ttf";
+             FileInputStream fin = new FileInputStream(fileName);
              Font cf = Font.createFont(Font.TRUETYPE_FONT, fin);
              customFont = cf.deriveFont(Font.PLAIN, 14);
         } catch (Exception ioe) {
-             System.err.println(ioe.getMessage());
-             customFont = new Font("serif", Font.PLAIN, 14);
+             throw new RuntimeException(ioe);
         }
   }
 
@@ -99,7 +100,7 @@
 
        g2D.setColor(Color.black);
        g2D.setFont(customFont);
-       String str = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
+       String str = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
        g.drawString(str, 100, 100);
 
        return Printable.PAGE_EXISTS;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Format/DecimalFormat/SetGroupingSizeTest.java	Tue Oct 15 21:33:54 2019 +0000
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8212749
+ * @summary test whether input value check for
+ *          DecimalFormat.setGroupingSize(int) works correctly.
+ * @run testng/othervm SetGroupingSizeTest
+ */
+
+import java.text.DecimalFormat;
+
+import static org.testng.Assert.assertEquals;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+@Test
+public class SetGroupingSizeTest {
+
+    @DataProvider
+    public static Object[][] validGroupingSizes() {
+        return new Object[][] {
+            { 0 },
+            { Byte.MAX_VALUE },
+        };
+    }
+
+    @DataProvider
+    public static Object[][] invalidGroupingSizes() {
+        return new Object[][] {
+            { Byte.MIN_VALUE - 1 },
+            { Byte.MIN_VALUE },
+            { -1 },
+            { Byte.MAX_VALUE + 1 },
+            { Integer.MIN_VALUE },
+            { Integer.MAX_VALUE },
+        };
+    }
+
+    @Test(dataProvider = "validGroupingSizes")
+    public void test_validGroupingSize(int newVal) {
+        DecimalFormat df = new DecimalFormat();
+        df.setGroupingSize(newVal);
+        assertEquals(df.getGroupingSize(), newVal);
+    }
+
+    @Test(dataProvider = "invalidGroupingSizes",
+        expectedExceptions = IllegalArgumentException.class)
+    public void test_invalidGroupingSize(int newVal) {
+        DecimalFormat df = new DecimalFormat();
+        df.setGroupingSize(newVal);
+    }
+}