changeset 51986:8bc6627d9614 patterns

Automatic merge with default
author mcimadamore
date Thu, 02 Aug 2018 22:07:20 +0200
parents 3ff9953b5597 744f731e9e8c
children 8f8eabbec3e8
files
diffstat 254 files changed, 1556 insertions(+), 1560 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Thu Jul 26 22:07:25 2018 +0200
+++ b/.hgtags	Thu Aug 02 22:07:20 2018 +0200
@@ -501,3 +501,4 @@
 69b438908512d3dfef5852c6a843a5778333a309 jdk-12+2
 990db216e7199b2ba9989d8fa20b657e0ca7d969 jdk-12+3
 499b873761d8e8a1cc4aa649daf04cbe98cbce77 jdk-12+4
+f8696e0ab9b795030429fc3374ec03e378fd9ed7 jdk-12+5
--- a/bin/idea.sh	Thu Jul 26 22:07:25 2018 +0200
+++ b/bin/idea.sh	Thu Aug 02 22:07:20 2018 +0200
@@ -68,9 +68,12 @@
 cd $IDEA_OUTPUT; IDEA_OUTPUT=`pwd`
 
 MAKE_DIR="$SCRIPT_DIR/../make"
+SUPPORT_DIR="$SCRIPT_DIR/../build/.idea-support"
 IDEA_MAKE="$MAKE_DIR/idea"
 IDEA_TEMPLATE="$IDEA_MAKE/template"
 
+mkdir -p $SUPPORT_DIR
+
 cp -r "$IDEA_TEMPLATE"/* "$IDEA_OUTPUT"
 
 #init template variables
@@ -124,6 +127,11 @@
   echo "FATAL: SPEC is empty" >&2; exit 1
 fi
 
+# move build.xml out of .idea, see IDEA-189915
+IDEA_BUILD_OLD=$IDEA_BUILD
+IDEA_BUILD=$SUPPORT_DIR/build.xml
+mv $IDEA_BUILD_OLD $IDEA_BUILD
+
 SOURCE_FOLDER="      <sourceFolder url=\"file://\$MODULE_DIR\$/####\" isTestSource=\"false\" />"
 SOURCE_FOLDERS_DONE="false"
 
--- a/make/conf/jib-profiles.js	Thu Jul 26 22:07:25 2018 +0200
+++ b/make/conf/jib-profiles.js	Thu Aug 02 22:07:20 2018 +0200
@@ -901,7 +901,7 @@
         jtreg: {
             server: "javare",
             revision: "4.2",
-            build_number: "b12",
+            build_number: "b13",
             checksum_file: "MD5_VALUES",
             file: "jtreg_bin-4.2.zip",
             environment_name: "JT_HOME",
--- a/make/data/docs-resources/resources/jdk-default.css	Thu Jul 26 22:07:25 2018 +0200
+++ b/make/data/docs-resources/resources/jdk-default.css	Thu Aug 02 22:07:20 2018 +0200
@@ -75,7 +75,7 @@
 }
 
 a:link {
-  color: #437291;
+  color: #4A6782;
 }
 
 a:visited {
@@ -117,7 +117,7 @@
 }
 
 tr:nth-child(even), tr:nth-child(even) th[scope=row] {
-  background: #DDD;
+  background: #E3E3E3;
 }
 
 tr:nth-child(odd), tr:nth-child(odd) th[scope=row] {
--- a/make/idea/template/ant.xml	Thu Jul 26 22:07:25 2018 +0200
+++ b/make/idea/template/ant.xml	Thu Aug 02 22:07:20 2018 +0200
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="AntConfiguration">
-    <buildFile url="file://$PROJECT_DIR$/.idea/build.xml">
+    <buildFile url="file://$PROJECT_DIR$/build/.idea-support/build.xml">
       <properties>
         <property name="intellij.ismake" value="$IsMake$" />
         <property name="build.target.dir" value="specDir" /> <!-- this will be replaced -->
--- a/make/idea/template/build.xml	Thu Jul 26 22:07:25 2018 +0200
+++ b/make/idea/template/build.xml	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 <!-- importing.xml -->
-<project name="jdk" basedir="..">
+<project name="jdk" basedir="../..">
 
     <script language="javascript" classpath=".idea/classes">
         var JdkLogger = Java.type("idea.JdkIdeaAntLogger");
--- a/make/idea/template/misc.xml	Thu Jul 26 22:07:25 2018 +0200
+++ b/make/idea/template/misc.xml	Thu Aug 02 22:07:20 2018 +0200
@@ -9,10 +9,10 @@
     <jre alt="true" value="images_jdk" /> <!-- this will be replaced -->
     <options></options>
     <ant>
-      <target file="file://$PROJECT_DIR$/.idea/build.xml" name="images" />
+      <target file="file://$PROJECT_DIR$/build/.idea-support/build.xml" name="images" />
     </ant>
   </component>
   <component name="ProjectRootManager" version="2" languageLevel="JDK_1_9" assert-keyword="true" jdk-15="true">
-    <output url="file://$PROJECT_DIR$/build/idea/out" />
+    <output url="file://$PROJECT_DIR$/build/.idea-support/out" />
   </component>
 </project>
--- a/make/langtools/build.xml	Thu Jul 26 22:07:25 2018 +0200
+++ b/make/langtools/build.xml	Thu Aug 02 22:07:20 2018 +0200
@@ -76,6 +76,7 @@
     <property name="make.conf.dir" location="${make.dir}/conf"/>
     <property name="make.tools.dir" location="${make.dir}/tools"/>
     <property name="build.dir" location="build/langtools"/>
+    <property name="idea.support.dir" location="build/.idea-support"/>
     <property name="build.modules" location="${build.dir}/modules"/>
     <property name="build.gensrc" location="${build.dir}/gensrc"/>
     <property name="build.tools" location="${build.dir}/toolclasses"/>
@@ -274,6 +275,9 @@
                <exclude name="**/utils/**"/>
             </fileset>
         </copy>
+        <!-- move build.xml out of .idea, see IDEA-189915 -->
+        <mkdir dir="${idea.support.dir}"/>
+        <move todir="${idea.support.dir}" file=".idea/build.xml"/>
         <condition property="idea.jtreg.home" value="${jtreg.home}" else = "[jtreg.home]">
             <isset property="jtreg.home"/>
         </condition>
--- a/make/langtools/intellij/ant.xml	Thu Jul 26 22:07:25 2018 +0200
+++ b/make/langtools/intellij/ant.xml	Thu Aug 02 22:07:20 2018 +0200
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="AntConfiguration">
-    <buildFile url="file://$PROJECT_DIR$/.idea/build.xml">
+    <buildFile url="file://$PROJECT_DIR$/build/.idea-support/build.xml">
       <properties>
 	    <property name="langtools.jdk.home" value="@IDEA_TARGET_JDK@" />
         <property name="intellij.ismake" value="$IsMake$" />
--- a/make/langtools/intellij/build.xml	Thu Jul 26 22:07:25 2018 +0200
+++ b/make/langtools/intellij/build.xml	Thu Aug 02 22:07:20 2018 +0200
@@ -1,12 +1,12 @@
 <!-- importing.xml -->
-<project name="langtools" basedir="..">
+<project name="langtools" basedir="../..">
 
     <script language="javascript" classpath=".idea/classes">
         var LangtoolsLogger = Java.type("idea.LangtoolsIdeaAntLogger");
         new LangtoolsLogger(project)
     </script>
 
-    <import file="../make/langtools/build.xml"/>
+    <import file="../../make/langtools/build.xml"/>
 
     <target name="cond-clean" unless="${intellij.ismake}">
         <antcall target="clean"/>
--- a/make/langtools/intellij/misc.xml	Thu Jul 26 22:07:25 2018 +0200
+++ b/make/langtools/intellij/misc.xml	Thu Aug 02 22:07:20 2018 +0200
@@ -9,12 +9,10 @@
     <jre alt="true" value="@IDEA_TARGET_JDK@" />
     <options>@XPATCH@</options>
     <ant>
-      <target file="file://$PROJECT_DIR$/.idea/build.xml" name="build-all-classes" />
+      <target file="file://$PROJECT_DIR$/build/.idea-support/build.xml" name="build-all-classes" />
     </ant>
   </component>
   <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
-    <output url="file://$PROJECT_DIR$/.idea/out" />
+    <output url="file://$PROJECT_DIR$/build/.idea-support/out" />
   </component>
 </project>
-
-
--- a/src/hotspot/cpu/aarch64/frame_aarch64.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/cpu/aarch64/frame_aarch64.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2014, Red Hat Inc. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -539,7 +539,7 @@
   Method* m = *interpreter_frame_method_addr();
 
   // validate the method we'd find in this potential sender
-  if (!m->is_valid_method()) return false;
+  if (!Method::is_valid_method(m)) return false;
 
   // stack frames shouldn't be much larger than max_stack elements
   // this test requires the use of unextended_sp which is the sp as seen by
--- a/src/hotspot/cpu/arm/frame_arm.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/cpu/arm/frame_arm.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
@@ -500,7 +500,7 @@
   Method* m = *interpreter_frame_method_addr();
 
   // validate the method we'd find in this potential sender
-  if (!m->is_valid_method()) return false;
+  if (!Method::is_valid_method(m)) return false;
 
   // stack frames shouldn't be much larger than max_stack elements
 
--- a/src/hotspot/cpu/sparc/frame_sparc.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/cpu/sparc/frame_sparc.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -648,7 +648,7 @@
   Method* m = *interpreter_frame_method_addr();
 
   // validate the method we'd find in this potential sender
-  if (!m->is_valid_method()) return false;
+  if (!Method::is_valid_method(m)) return false;
 
   // stack frames shouldn't be much larger than max_stack elements
 
--- a/src/hotspot/cpu/x86/frame_x86.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/cpu/x86/frame_x86.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 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
@@ -526,7 +526,7 @@
   Method* m = *interpreter_frame_method_addr();
 
   // validate the method we'd find in this potential sender
-  if (!m->is_valid_method()) return false;
+  if (!Method::is_valid_method(m)) return false;
 
   // stack frames shouldn't be much larger than max_stack elements
   // this test requires the use the unextended_sp which is the sp as seen by
--- a/src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -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
@@ -32,6 +32,7 @@
 #include "code/icBuffer.hpp"
 #include "code/nativeInst.hpp"
 #include "code/vtableStubs.hpp"
+#include "gc/shared/collectedHeap.hpp"
 #include "gc/shared/gcLocker.hpp"
 #include "interpreter/interpreter.hpp"
 #include "logging/log.hpp"
@@ -1434,6 +1435,64 @@
   }
 }
 
+// Pin object, return pinned object or null in rax
+static void gen_pin_object(MacroAssembler* masm,
+                           VMRegPair reg) {
+  __ block_comment("gen_pin_object {");
+
+  // rax always contains oop, either incoming or
+  // pinned.
+  Register tmp_reg = rax;
+
+  Label is_null;
+  VMRegPair tmp;
+  VMRegPair in_reg = reg;
+
+  tmp.set_ptr(tmp_reg->as_VMReg());
+  if (reg.first()->is_stack()) {
+    // Load the arg up from the stack
+    move_ptr(masm, reg, tmp);
+    reg = tmp;
+  } else {
+    __ movptr(rax, reg.first()->as_Register());
+  }
+  __ testptr(reg.first()->as_Register(), reg.first()->as_Register());
+  __ jccb(Assembler::equal, is_null);
+
+  if (reg.first()->as_Register() != c_rarg1) {
+    __ movptr(c_rarg1, reg.first()->as_Register());
+  }
+
+  __ call_VM_leaf(
+    CAST_FROM_FN_PTR(address, SharedRuntime::pin_object),
+    r15_thread, c_rarg1);
+
+  __ bind(is_null);
+  __ block_comment("} gen_pin_object");
+}
+
+// Unpin object
+static void gen_unpin_object(MacroAssembler* masm,
+                             VMRegPair reg) {
+  __ block_comment("gen_unpin_object {");
+  Label is_null;
+
+  if (reg.first()->is_stack()) {
+    __ movptr(c_rarg1, Address(rbp, reg2offset_in(reg.first())));
+  } else if (reg.first()->as_Register() != c_rarg1) {
+    __ movptr(c_rarg1, reg.first()->as_Register());
+  }
+
+  __ testptr(c_rarg1, c_rarg1);
+  __ jccb(Assembler::equal, is_null);
+
+  __ call_VM_leaf(
+    CAST_FROM_FN_PTR(address, SharedRuntime::unpin_object),
+    r15_thread, c_rarg1);
+
+  __ bind(is_null);
+  __ block_comment("} gen_unpin_object");
+}
 
 // Check GCLocker::needs_gc and enter the runtime if it's true.  This
 // keeps a new JNI critical region from starting until a GC has been
@@ -2129,7 +2188,7 @@
 
   const Register oop_handle_reg = r14;
 
-  if (is_critical_native) {
+  if (is_critical_native && !Universe::heap()->supports_object_pinning()) {
     check_needs_gc_for_critical_native(masm, stack_slots, total_c_args, total_in_args,
                                        oop_handle_offset, oop_maps, in_regs, in_sig_bt);
   }
@@ -2186,6 +2245,11 @@
   // the incoming and outgoing registers are offset upwards and for
   // critical natives they are offset down.
   GrowableArray<int> arg_order(2 * total_in_args);
+  // Inbound arguments that need to be pinned for critical natives
+  GrowableArray<int> pinned_args(total_in_args);
+  // Current stack slot for storing register based array argument
+  int pinned_slot = oop_handle_offset;
+
   VMRegPair tmp_vmreg;
   tmp_vmreg.set2(rbx->as_VMReg());
 
@@ -2233,6 +2297,23 @@
     switch (in_sig_bt[i]) {
       case T_ARRAY:
         if (is_critical_native) {
+          // pin before unpack
+          if (Universe::heap()->supports_object_pinning()) {
+            save_args(masm, total_c_args, 0, out_regs);
+            gen_pin_object(masm, in_regs[i]);
+            pinned_args.append(i);
+            restore_args(masm, total_c_args, 0, out_regs);
+
+            // rax has pinned array
+            VMRegPair result_reg;
+            result_reg.set_ptr(rax->as_VMReg());
+            move_ptr(masm, result_reg, in_regs[i]);
+            if (!in_regs[i].first()->is_stack()) {
+              assert(pinned_slot <= stack_slots, "overflow");
+              move_ptr(masm, result_reg, VMRegImpl::stack2reg(pinned_slot));
+              pinned_slot += VMRegImpl::slots_per_word;
+            }
+          }
           unpack_array_argument(masm, in_regs[i], in_elem_bt[i], out_regs[c_arg + 1], out_regs[c_arg]);
           c_arg++;
 #ifdef ASSERT
@@ -2449,6 +2530,24 @@
   default       : ShouldNotReachHere();
   }
 
+  // unpin pinned arguments
+  pinned_slot = oop_handle_offset;
+  if (pinned_args.length() > 0) {
+    // save return value that may be overwritten otherwise.
+    save_native_result(masm, ret_type, stack_slots);
+    for (int index = 0; index < pinned_args.length(); index ++) {
+      int i = pinned_args.at(index);
+      assert(pinned_slot <= stack_slots, "overflow");
+      if (!in_regs[i].first()->is_stack()) {
+        int offset = pinned_slot * VMRegImpl::stack_slot_size;
+        __ movq(in_regs[i].first()->as_Register(), Address(rsp, offset));
+        pinned_slot += VMRegImpl::slots_per_word;
+      }
+      gen_unpin_object(masm, in_regs[i]);
+    }
+    restore_native_result(masm, ret_type, stack_slots);
+  }
+
   // Switch thread to "native transition" state before reading the synchronization state.
   // This additional state is necessary because reading and testing the synchronization
   // state is not atomic w.r.t. GC, as this scenario demonstrates:
--- a/src/hotspot/share/classfile/dictionary.hpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/classfile/dictionary.hpp	Thu Aug 02 22:07:20 2018 +0200
@@ -182,7 +182,7 @@
     for (ProtectionDomainEntry* current = pd_set(); // accessed at a safepoint
                                 current != NULL;
                                 current = current->_next) {
-      current->_pd_cache->object_no_keepalive()->verify();
+      oopDesc::verify(current->_pd_cache->object_no_keepalive());
     }
   }
 
--- a/src/hotspot/share/classfile/systemDictionary.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/classfile/systemDictionary.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -443,8 +443,18 @@
     // Print out trace information
     LogStream ls(lt);
     ls.print_cr("Checking package access");
-    ls.print("class loader: "); class_loader()->print_value_on(&ls);
-    ls.print(" protection domain: "); protection_domain()->print_value_on(&ls);
+    if (class_loader() != NULL) {
+      ls.print("class loader: ");
+      class_loader()->print_value_on(&ls);
+    } else {
+      ls.print_cr("class loader: NULL");
+    }
+    if (protection_domain() != NULL) {
+      ls.print(" protection domain: ");
+      protection_domain()->print_value_on(&ls);
+    } else {
+      ls.print_cr(" protection domain: NULL");
+    }
     ls.print(" loading: "); klass->print_value_on(&ls);
     ls.cr();
   }
--- a/src/hotspot/share/code/debugInfo.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/code/debugInfo.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -251,7 +251,11 @@
 }
 
 void ConstantOopReadValue::print_on(outputStream* st) const {
-  value()()->print_value_on(st);
+  if (value()() != NULL) {
+    value()()->print_value_on(st);
+  } else {
+    st->print_cr("NULL");
+  }
 }
 
 
--- a/src/hotspot/share/code/nmethod.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/code/nmethod.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -2332,7 +2332,11 @@
     if (o == (oop)Universe::non_oop_word()) {
       tty->print("non-oop word");
     } else {
-      o->print_value();
+      if (o != NULL) {
+        o->print_value();
+      } else {
+        tty->print_cr("NULL");
+      }
     }
     tty->cr();
   }
@@ -2346,7 +2350,7 @@
     if (m == (Metadata*)Universe::non_oop_word()) {
       tty->print("non-metadata word");
     } else {
-      m->print_value_on_maybe_null(tty);
+      Metadata::print_value_on_maybe_null(tty, m);
     }
     tty->cr();
   }
--- a/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/gc/cms/compactibleFreeListSpace.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -2406,7 +2406,7 @@
       res = _sp->adjustObjectSize(p->size());
       if (_sp->obj_is_alive(addr)) {
         was_live = true;
-        p->verify();
+        oopDesc::verify(p);
       }
     } else {
       FreeChunk* fc = (FreeChunk*)addr;
@@ -2455,7 +2455,7 @@
                   _sp->block_is_obj((HeapWord*)obj),
                   "Should be an object");
         guarantee(oopDesc::is_oop(obj), "Should be an oop");
-        obj->verify();
+        oopDesc::verify(obj);
         if (_past_remark) {
           // Remark has been completed, the object should be marked
           _bit_map->isMarked((HeapWord*)obj);
@@ -2472,7 +2472,7 @@
     } else if (_sp->is_in_reserved(p)) {
       // the reference is from FLS, and points out of FLS
       guarantee(oopDesc::is_oop(obj), "Should be an oop");
-      obj->verify();
+      oopDesc::verify(obj);
     }
   }
 
--- a/src/hotspot/share/gc/cms/parNewGeneration.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/gc/cms/parNewGeneration.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -438,7 +438,7 @@
 }
 
 void ParScanThreadStateSet::print_taskqueue_stats() {
-  if (!log_develop_is_enabled(Trace, gc, task, stats)) {
+  if (!log_is_enabled(Trace, gc, task, stats)) {
     return;
   }
   Log(gc, task, stats) log;
--- a/src/hotspot/share/gc/g1/g1Arguments.hpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/gc/g1/g1Arguments.hpp	Thu Aug 02 22:07:20 2018 +0200
@@ -31,7 +31,7 @@
 class CollectedHeap;
 
 class G1Arguments : public GCArguments {
-  friend class G1HeapVerifierTest_parse_Test;
+  friend class G1HeapVerifierTest;
 
 private:
   static void initialize_verification_types();
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -52,6 +52,7 @@
 #include "gc/g1/g1RemSet.hpp"
 #include "gc/g1/g1RootClosures.hpp"
 #include "gc/g1/g1RootProcessor.hpp"
+#include "gc/g1/g1SATBMarkQueueFilter.hpp"
 #include "gc/g1/g1StringDedup.hpp"
 #include "gc/g1/g1ThreadLocalData.hpp"
 #include "gc/g1/g1YCTypes.hpp"
@@ -1668,7 +1669,9 @@
   // Perform any initialization actions delegated to the policy.
   g1_policy()->init(this, &_collection_set);
 
-  G1BarrierSet::satb_mark_queue_set().initialize(SATB_Q_CBL_mon,
+  G1SATBMarkQueueFilter* satb_filter = new G1SATBMarkQueueFilter(this);
+  G1BarrierSet::satb_mark_queue_set().initialize(satb_filter,
+                                                 SATB_Q_CBL_mon,
                                                  SATB_Q_FL_lock,
                                                  G1SATBProcessCompletedThreshold,
                                                  Shared_SATB_Q_lock);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/g1/g1SATBMarkQueueFilter.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "gc/g1/g1CollectedHeap.inline.hpp"
+#include "gc/g1/g1SATBMarkQueueFilter.hpp"
+#include "gc/g1/heapRegion.hpp"
+#include "gc/g1/satbMarkQueue.hpp"
+#include "oops/oop.hpp"
+#include "utilities/debug.hpp"
+#include "utilities/globalDefinitions.hpp"
+
+G1SATBMarkQueueFilter::G1SATBMarkQueueFilter(G1CollectedHeap* g1h) : _g1h(g1h) {}
+
+// Return true if a SATB buffer entry refers to an object that
+// requires marking.
+//
+// The entry must point into the G1 heap.  In particular, it must not
+// be a NULL pointer.  NULL pointers are pre-filtered and never
+// inserted into a SATB buffer.
+//
+// An entry that is below the NTAMS pointer for the containing heap
+// region requires marking. Such an entry must point to a valid object.
+//
+// An entry that is at least the NTAMS pointer for the containing heap
+// region might be any of the following, none of which should be marked.
+//
+// * A reference to an object allocated since marking started.
+//   According to SATB, such objects are implicitly kept live and do
+//   not need to be dealt with via SATB buffer processing.
+//
+// * A reference to a young generation object. Young objects are
+//   handled separately and are not marked by concurrent marking.
+//
+// * A stale reference to a young generation object. If a young
+//   generation object reference is recorded and not filtered out
+//   before being moved by a young collection, the reference becomes
+//   stale.
+//
+// * A stale reference to an eagerly reclaimed humongous object.  If a
+//   humongous object is recorded and then reclaimed, the reference
+//   becomes stale.
+//
+// The stale reference cases are implicitly handled by the NTAMS
+// comparison. Because of the possibility of stale references, buffer
+// processing must be somewhat circumspect and not assume entries
+// in an unfiltered buffer refer to valid objects.
+
+static inline bool requires_marking(const void* entry, G1CollectedHeap* g1h) {
+  // Includes rejection of NULL pointers.
+  assert(g1h->is_in_reserved(entry),
+         "Non-heap pointer in SATB buffer: " PTR_FORMAT, p2i(entry));
+
+  HeapRegion* region = g1h->heap_region_containing(entry);
+  assert(region != NULL, "No region for " PTR_FORMAT, p2i(entry));
+  if (entry >= region->next_top_at_mark_start()) {
+    return false;
+  }
+
+  assert(oopDesc::is_oop(oop(entry), true /* ignore mark word */),
+         "Invalid oop in SATB buffer: " PTR_FORMAT, p2i(entry));
+
+  return true;
+}
+
+static inline bool discard_entry(const void* entry, G1CollectedHeap* g1h) {
+  return !requires_marking(entry, g1h) || g1h->is_marked_next((oop)entry);
+}
+
+// Workaround for not yet having std::bind.
+class G1SATBMarkQueueFilterFn {
+  G1CollectedHeap* _g1h;
+
+public:
+  G1SATBMarkQueueFilterFn(G1CollectedHeap* g1h) : _g1h(g1h) {}
+
+  // Return true if entry should be filtered out (removed), false if
+  // it should be retained.
+  bool operator()(const void* entry) const {
+    return discard_entry(entry, _g1h);
+  }
+};
+
+void G1SATBMarkQueueFilter::filter(SATBMarkQueue* queue) {
+  queue->apply_filter(G1SATBMarkQueueFilterFn(_g1h));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/g1/g1SATBMarkQueueFilter.hpp	Thu Aug 02 22:07:20 2018 +0200
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ *
+ */
+
+#ifndef SHARE_GC_G1_G1SATBMARKQUEUEFILTER_HPP
+#define SHARE_GC_G1_G1SATBMARKQUEUEFILTER_HPP
+
+#include "gc/g1/satbMarkQueue.hpp"
+
+class G1CollectedHeap;
+
+class G1SATBMarkQueueFilter : public SATBMarkQueueFilter {
+  G1CollectedHeap* _g1h;
+
+public:
+  G1SATBMarkQueueFilter(G1CollectedHeap* g1h);
+
+  virtual void filter(SATBMarkQueue* queue);
+};
+
+#endif // SHARE_GC_G1_G1SATBMARKQUEUEFILTER_HPP
--- a/src/hotspot/share/gc/g1/satbMarkQueue.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/gc/g1/satbMarkQueue.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -52,103 +52,9 @@
   flush_impl();
 }
 
-// Return true if a SATB buffer entry refers to an object that
-// requires marking.
-//
-// The entry must point into the G1 heap.  In particular, it must not
-// be a NULL pointer.  NULL pointers are pre-filtered and never
-// inserted into a SATB buffer.
-//
-// An entry that is below the NTAMS pointer for the containing heap
-// region requires marking. Such an entry must point to a valid object.
-//
-// An entry that is at least the NTAMS pointer for the containing heap
-// region might be any of the following, none of which should be marked.
-//
-// * A reference to an object allocated since marking started.
-//   According to SATB, such objects are implicitly kept live and do
-//   not need to be dealt with via SATB buffer processing.
-//
-// * A reference to a young generation object. Young objects are
-//   handled separately and are not marked by concurrent marking.
-//
-// * A stale reference to a young generation object. If a young
-//   generation object reference is recorded and not filtered out
-//   before being moved by a young collection, the reference becomes
-//   stale.
-//
-// * A stale reference to an eagerly reclaimed humongous object.  If a
-//   humongous object is recorded and then reclaimed, the reference
-//   becomes stale.
-//
-// The stale reference cases are implicitly handled by the NTAMS
-// comparison. Because of the possibility of stale references, buffer
-// processing must be somewhat circumspect and not assume entries
-// in an unfiltered buffer refer to valid objects.
-
-inline bool requires_marking(const void* entry, G1CollectedHeap* heap) {
-  // Includes rejection of NULL pointers.
-  assert(heap->is_in_reserved(entry),
-         "Non-heap pointer in SATB buffer: " PTR_FORMAT, p2i(entry));
-
-  HeapRegion* region = heap->heap_region_containing(entry);
-  assert(region != NULL, "No region for " PTR_FORMAT, p2i(entry));
-  if (entry >= region->next_top_at_mark_start()) {
-    return false;
-  }
-
-  assert(oopDesc::is_oop(oop(entry), true /* ignore mark word */),
-         "Invalid oop in SATB buffer: " PTR_FORMAT, p2i(entry));
-
-  return true;
-}
-
-inline bool retain_entry(const void* entry, G1CollectedHeap* heap) {
-  return requires_marking(entry, heap) && !heap->is_marked_next((oop)entry);
-}
-
-// This method removes entries from a SATB buffer that will not be
-// useful to the concurrent marking threads.  Entries are retained if
-// they require marking and are not already marked. Retained entries
-// are compacted toward the top of the buffer.
-
-void SATBMarkQueue::filter() {
-  G1CollectedHeap* g1h = G1CollectedHeap::heap();
-  void** buf = _buf;
-
-  if (buf == NULL) {
-    // nothing to do
-    return;
-  }
-
-  // Two-fingered compaction toward the end.
-  void** src = &buf[index()];
-  void** dst = &buf[capacity()];
-  assert(src <= dst, "invariant");
-  for ( ; src < dst; ++src) {
-    // Search low to high for an entry to keep.
-    void* entry = *src;
-    if (retain_entry(entry, g1h)) {
-      // Found keeper.  Search high to low for an entry to discard.
-      while (src < --dst) {
-        if (!retain_entry(*dst, g1h)) {
-          *dst = entry;         // Replace discard with keeper.
-          break;
-        }
-      }
-      // If discard search failed (src == dst), the outer loop will also end.
-    }
-  }
-  // dst points to the lowest retained entry, or the end of the buffer
-  // if all the entries were filtered out.
-  set_index(dst - buf);
-}
-
-// This method will first apply the above filtering to the buffer. If
-// post-filtering a large enough chunk of the buffer has been cleared
-// we can re-use the buffer (instead of enqueueing it) and we can just
-// allow the mutator to carry on executing using the same buffer
-// instead of replacing it.
+// This method will first apply filtering to the buffer. If filtering
+// retains a small enough collection in the buffer, we can continue to
+// use the buffer as-is, instead of enqueueing and replacing it.
 
 bool SATBMarkQueue::should_enqueue_buffer() {
   assert(_lock == NULL || _lock->owned_by_self(),
@@ -198,13 +104,17 @@
 
 SATBMarkQueueSet::SATBMarkQueueSet() :
   PtrQueueSet(),
-  _shared_satb_queue(this, true /* permanent */) { }
+  _shared_satb_queue(this, true /* permanent */),
+  _filter(NULL)
+{}
 
-void SATBMarkQueueSet::initialize(Monitor* cbl_mon, Mutex* fl_lock,
+void SATBMarkQueueSet::initialize(SATBMarkQueueFilter* filter,
+                                  Monitor* cbl_mon, Mutex* fl_lock,
                                   int process_completed_threshold,
                                   Mutex* lock) {
   PtrQueueSet::initialize(cbl_mon, fl_lock, process_completed_threshold, -1);
   _shared_satb_queue.set_lock(lock);
+  _filter = filter;
 }
 
 void SATBMarkQueueSet::handle_zero_index_for_thread(JavaThread* t) {
--- a/src/hotspot/share/gc/g1/satbMarkQueue.hpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/gc/g1/satbMarkQueue.hpp	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -47,11 +47,15 @@
 
 private:
   // Filter out unwanted entries from the buffer.
-  void filter();
+  inline void filter();
 
 public:
   SATBMarkQueue(SATBMarkQueueSet* qset, bool permanent = false);
 
+  // Removes entries from the buffer that are no longer needed.
+  template<typename Filter>
+  inline void apply_filter(Filter filter_out);
+
   // Process queue entries and free resources.
   void flush();
 
@@ -86,8 +90,15 @@
 
 };
 
+class SATBMarkQueueFilter : public CHeapObj<mtGC> {
+public:
+  virtual ~SATBMarkQueueFilter() {}
+  virtual void filter(SATBMarkQueue* queue) = 0;
+};
+
 class SATBMarkQueueSet: public PtrQueueSet {
   SATBMarkQueue _shared_satb_queue;
+  SATBMarkQueueFilter* _filter;
 
 #ifdef ASSERT
   void dump_active_states(bool expected_active);
@@ -97,7 +108,8 @@
 public:
   SATBMarkQueueSet();
 
-  void initialize(Monitor* cbl_mon, Mutex* fl_lock,
+  void initialize(SATBMarkQueueFilter* filter,
+                  Monitor* cbl_mon, Mutex* fl_lock,
                   int process_completed_threshold,
                   Mutex* lock);
 
@@ -109,6 +121,10 @@
   // set itself, has an active value same as expected_active.
   void set_active_all_threads(bool active, bool expected_active);
 
+  void filter(SATBMarkQueue* queue) {
+    _filter->filter(queue);
+  }
+
   // Filter all the currently-active SATB buffers.
   void filter_thread_buffers();
 
@@ -129,4 +145,45 @@
   void abandon_partial_marking();
 };
 
+inline void SATBMarkQueue::filter() {
+  static_cast<SATBMarkQueueSet*>(qset())->filter(this);
+}
+
+// Removes entries from the buffer that are no longer needed, as
+// determined by filter. If e is a void* entry in the buffer,
+// filter_out(e) must be a valid expression whose value is convertible
+// to bool. Entries are removed (filtered out) if the result is true,
+// retained if false.
+template<typename Filter>
+inline void SATBMarkQueue::apply_filter(Filter filter_out) {
+  void** buf = this->_buf;
+
+  if (buf == NULL) {
+    // nothing to do
+    return;
+  }
+
+  // Two-fingered compaction toward the end.
+  void** src = &buf[this->index()];
+  void** dst = &buf[this->capacity()];
+  assert(src <= dst, "invariant");
+  for ( ; src < dst; ++src) {
+    // Search low to high for an entry to keep.
+    void* entry = *src;
+    if (!filter_out(entry)) {
+      // Found keeper.  Search high to low for an entry to discard.
+      while (src < --dst) {
+        if (filter_out(*dst)) {
+          *dst = entry;         // Replace discard with keeper.
+          break;
+        }
+      }
+      // If discard search failed (src == dst), the outer loop will also end.
+    }
+  }
+  // dst points to the lowest retained entry, or the end of the buffer
+  // if all the entries were filtered out.
+  this->set_index(dst - buf);
+}
+
 #endif // SHARE_VM_GC_G1_SATBMARKQUEUE_HPP
--- a/src/hotspot/share/gc/parallel/immutableSpace.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/gc/parallel/immutableSpace.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -75,7 +75,7 @@
   HeapWord* t = end();
   HeapWord* prev_p = NULL;
   while (p < t) {
-    oop(p)->verify();
+    oopDesc::verify(oop(p));
     prev_p = p;
     p += oop(p)->size();
   }
--- a/src/hotspot/share/gc/parallel/mutableSpace.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/gc/parallel/mutableSpace.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -250,7 +250,7 @@
   HeapWord* t = top();
   HeapWord* prev_p = NULL;
   while (p < t) {
-    oop(p)->verify();
+    oopDesc::verify(oop(p));
     prev_p = p;
     p += oop(p)->size();
   }
--- a/src/hotspot/share/gc/parallel/psPromotionManager.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/gc/parallel/psPromotionManager.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -158,7 +158,7 @@
 
 void
 PSPromotionManager::print_taskqueue_stats() {
-  if (!log_develop_is_enabled(Trace, gc, task, stats)) {
+  if (!log_is_enabled(Trace, gc, task, stats)) {
     return;
   }
   Log(gc, task, stats) log;
--- a/src/hotspot/share/gc/shared/space.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/gc/shared/space.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -461,7 +461,7 @@
   HeapWord* t = top();
   HeapWord* prev_p = NULL;
   while (p < t) {
-    oop(p)->verify();
+    oopDesc::verify(oop(p));
     prev_p = p;
     p += oop(p)->size();
   }
@@ -708,7 +708,7 @@
     }
 
     if (objs == OBJ_SAMPLE_INTERVAL) {
-      oop(p)->verify();
+      oopDesc::verify(oop(p));
       objs = 0;
     } else {
       objs++;
--- a/src/hotspot/share/gc/shared/threadLocalAllocBuffer.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/gc/shared/threadLocalAllocBuffer.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -311,7 +311,7 @@
   HeapWord* t = top();
   HeapWord* prev_p = NULL;
   while (p < t) {
-    oop(p)->verify();
+    oopDesc::verify(oop(p));
     prev_p = p;
     p += oop(p)->size();
   }
--- a/src/hotspot/share/jfr/periodic/sampling/jfrCallTrace.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/jfr/periodic/sampling/jfrCallTrace.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -50,7 +50,7 @@
       const bool known_valid = (state == _thread_in_native || state == _thread_in_vm || state == _thread_blocked);
       if (known_valid || candidate.is_interpreted_frame_valid(_thread)) {
         Method* im = candidate.interpreter_frame_method();
-        if (known_valid && !im->is_valid_method()) {
+        if (known_valid && !Method::is_valid_method(im)) {
           return false;
         }
         *method = im;
--- a/src/hotspot/share/jfr/recorder/stacktrace/jfrStackTraceRepository.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/jfr/recorder/stacktrace/jfrStackTraceRepository.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -431,7 +431,7 @@
       break;
     }
     const Method* method = st.method();
-    if (!method->is_valid_method()) {
+    if (!Method::is_valid_method(method)) {
       // we throw away everything we've gathered in this sample since
       // none of it is safe
       return false;
--- a/src/hotspot/share/memory/allocation.hpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/memory/allocation.hpp	Thu Aug 02 22:07:20 2018 +0200
@@ -113,29 +113,30 @@
  */
 enum MemoryType {
   // Memory type by sub systems. It occupies lower byte.
-  mtJavaHeap          = 0x00,  // Java heap
-  mtClass             = 0x01,  // memory class for Java classes
-  mtThread            = 0x02,  // memory for thread objects
-  mtThreadStack       = 0x03,
-  mtCode              = 0x04,  // memory for generated code
-  mtGC                = 0x05,  // memory for GC
-  mtCompiler          = 0x06,  // memory for compiler
-  mtInternal          = 0x07,  // memory used by VM, but does not belong to
-                                 // any of above categories, and not used for
-                                 // native memory tracking
-  mtOther             = 0x08,  // memory not used by VM
-  mtSymbol            = 0x09,  // symbol
-  mtNMT               = 0x0A,  // memory used by native memory tracking
-  mtClassShared       = 0x0B,  // class data sharing
-  mtChunk             = 0x0C,  // chunk that holds content of arenas
-  mtTest              = 0x0D,  // Test type for verifying NMT
-  mtTracing           = 0x0E,  // memory used for Tracing
-  mtLogging           = 0x0F,  // memory for logging
-  mtArguments         = 0x10,  // memory for argument processing
-  mtModule            = 0x11,  // memory for module processing
-  mtNone              = 0x12,  // undefined
-  mt_number_of_types  = 0x13   // number of memory types (mtDontTrack
-                                 // is not included as validate type)
+  mtJavaHeap,          // Java heap
+  mtClass,             // memory class for Java classes
+  mtThread,            // memory for thread objects
+  mtThreadStack,
+  mtCode,              // memory for generated code
+  mtGC,                // memory for GC
+  mtCompiler,          // memory for compiler
+  mtInternal,          // memory used by VM, but does not belong to
+                       // any of above categories, and not used for
+                       // native memory tracking
+  mtOther,             // memory not used by VM
+  mtSymbol,            // symbol
+  mtNMT,               // memory used by native memory tracking
+  mtClassShared,       // class data sharing
+  mtChunk,             // chunk that holds content of arenas
+  mtTest,              // Test type for verifying NMT
+  mtTracing,           // memory used for Tracing
+  mtLogging,           // memory for logging
+  mtArguments,         // memory for argument processing
+  mtModule,            // memory for module processing
+  mtSafepoint,         // memory for safepoint support
+  mtNone,              // undefined
+  mt_number_of_types   // number of memory types (mtDontTrack
+                       // is not included as validate type)
 };
 
 typedef MemoryType MEMFLAGS;
--- a/src/hotspot/share/oops/instanceKlass.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/oops/instanceKlass.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -3072,7 +3072,7 @@
   st->print(BULLET"access:            "); access_flags().print_on(st);            st->cr();
   st->print(BULLET"state:             "); st->print_cr("%s", state_names[_init_state]);
   st->print(BULLET"name:              "); name()->print_value_on(st);             st->cr();
-  st->print(BULLET"super:             "); super()->print_value_on_maybe_null(st); st->cr();
+  st->print(BULLET"super:             "); Metadata::print_value_on_maybe_null(st, super()); st->cr();
   st->print(BULLET"sub:               ");
   Klass* sub = subklass();
   int n;
@@ -3095,7 +3095,7 @@
     }
   }
 
-  st->print(BULLET"arrays:            "); array_klasses()->print_value_on_maybe_null(st); st->cr();
+  st->print(BULLET"arrays:            "); Metadata::print_value_on_maybe_null(st, array_klasses()); st->cr();
   st->print(BULLET"methods:           "); methods()->print_value_on(st);                  st->cr();
   if (Verbose || WizardMode) {
     Array<Method*>* method_array = methods();
@@ -3122,7 +3122,7 @@
     class_loader_data()->print_value_on(st);
     st->cr();
   }
-  st->print(BULLET"host class:        "); host_klass()->print_value_on_maybe_null(st); st->cr();
+  st->print(BULLET"host class:        "); Metadata::print_value_on_maybe_null(st, host_klass()); st->cr();
   if (source_file_name() != NULL) {
     st->print(BULLET"source file:       ");
     source_file_name()->print_value_on(st);
@@ -3158,7 +3158,13 @@
   }
   st->print(BULLET"inner classes:     "); inner_classes()->print_value_on(st);     st->cr();
   st->print(BULLET"nest members:     "); nest_members()->print_value_on(st);     st->cr();
-  st->print(BULLET"java mirror:       "); java_mirror()->print_value_on(st);       st->cr();
+  if (java_mirror() != NULL) {
+    st->print(BULLET"java mirror:       ");
+    java_mirror()->print_value_on(st);
+    st->cr();
+  } else {
+    st->print_cr(BULLET"java mirror:       NULL");
+  }
   st->print(BULLET"vtable length      %d  (start addr: " INTPTR_FORMAT ")", vtable_length(), p2i(start_of_vtable())); st->cr();
   if (vtable_length() > 0 && (Verbose || WizardMode))  print_vtable(start_of_vtable(), vtable_length(), st);
   st->print(BULLET"itable length      %d (start addr: " INTPTR_FORMAT ")", itable_length(), p2i(start_of_itable())); st->cr();
@@ -3229,11 +3235,11 @@
     st->cr();
     Klass* mirrored_klass = java_lang_Class::as_Klass(obj);
     st->print(BULLET"fake entry for mirror: ");
-    mirrored_klass->print_value_on_maybe_null(st);
+    Metadata::print_value_on_maybe_null(st, mirrored_klass);
     st->cr();
     Klass* array_klass = java_lang_Class::array_klass_acquire(obj);
     st->print(BULLET"fake entry for array: ");
-    array_klass->print_value_on_maybe_null(st);
+    Metadata::print_value_on_maybe_null(st, array_klass);
     st->cr();
     st->print_cr(BULLET"fake entry for oop_size: %d", java_lang_Class::oop_size(obj));
     st->print_cr(BULLET"fake entry for static_oop_field_count: %d", java_lang_Class::static_oop_field_count(obj));
--- a/src/hotspot/share/oops/metadata.hpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/oops/metadata.hpp	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -56,18 +56,11 @@
   void print()       const { print_on(tty); }
   void print_value() const { print_value_on(tty); }
 
-  void print_maybe_null() const { print_on_maybe_null(tty); }
-  void print_on_maybe_null(outputStream* st) const {
-    if (this == NULL)
+  static void print_value_on_maybe_null(outputStream* st, const Metadata* m) {
+    if (NULL == m)
       st->print("NULL");
     else
-      print_on(st);
-  }
-  void print_value_on_maybe_null(outputStream* st) const {
-    if (this == NULL)
-      st->print("NULL");
-    else
-      print_value_on(st);
+      m->print_value_on(st);
   }
 
   virtual void print_on(outputStream* st) const;       // First level print
--- a/src/hotspot/share/oops/method.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/oops/method.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -1095,7 +1095,7 @@
 }
 
 void Method::restore_unshareable_info(TRAPS) {
-  assert(is_method() && is_valid_method(), "ensure C++ vtable is restored");
+  assert(is_method() && is_valid_method(this), "ensure C++ vtable is restored");
 
   // Since restore_unshareable_info can be called more than once for a method, don't
   // redo any work.
@@ -2166,16 +2166,16 @@
 }
 
 // Check that this pointer is valid by checking that the vtbl pointer matches
-bool Method::is_valid_method() const {
-  if (this == NULL) {
+bool Method::is_valid_method(const Method* m) {
+  if (m == NULL) {
     return false;
-  } else if ((intptr_t(this) & (wordSize-1)) != 0) {
+  } else if ((intptr_t(m) & (wordSize-1)) != 0) {
     // Quick sanity check on pointer.
     return false;
-  } else if (is_shared()) {
-    return MetaspaceShared::is_valid_shared_method(this);
-  } else if (Metaspace::contains_non_shared(this)) {
-    return has_method_vptr((const void*)this);
+  } else if (m->is_shared()) {
+    return MetaspaceShared::is_valid_shared_method(m);
+  } else if (Metaspace::contains_non_shared(m)) {
+    return has_method_vptr((const void*)m);
   } else {
     return false;
   }
--- a/src/hotspot/share/oops/method.hpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/oops/method.hpp	Thu Aug 02 22:07:20 2018 +0200
@@ -984,7 +984,7 @@
 
   // Check for valid method pointer
   static bool has_method_vptr(const void* ptr);
-  bool is_valid_method() const;
+  static bool is_valid_method(const Method* m);
 
   // Verify
   void verify() { verify_on(tty); }
--- a/src/hotspot/share/oops/objArrayKlass.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/oops/objArrayKlass.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -477,8 +477,12 @@
   int print_len = MIN2((intx) oa->length(), MaxElementPrintSize);
   for(int index = 0; index < print_len; index++) {
     st->print(" - %3d : ", index);
-    oa->obj_at(index)->print_value_on(st);
-    st->cr();
+    if (oa->obj_at(index) != NULL) {
+      oa->obj_at(index)->print_value_on(st);
+      st->cr();
+    } else {
+      st->print_cr("NULL");
+    }
   }
   int remaining = oa->length() - print_len;
   if (remaining > 0) {
@@ -494,7 +498,11 @@
   element_klass()->print_value_on(st);
   int len = objArrayOop(obj)->length();
   st->print("[%d] ", len);
-  obj->print_address_on(st);
+  if (obj != NULL) {
+    obj->print_address_on(st);
+  } else {
+    st->print_cr("NULL");
+  }
 }
 
 const char* ObjArrayKlass::internal_name() const {
--- a/src/hotspot/share/oops/oop.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/oops/oop.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -36,11 +36,7 @@
 bool always_do_update_barrier = false;
 
 void oopDesc::print_on(outputStream* st) const {
-  if (this == NULL) {
-    st->print_cr("NULL");
-  } else {
-    klass()->oop_print_on(oop(this), st);
-  }
+  klass()->oop_print_on(oop(this), st);
 }
 
 void oopDesc::print_address_on(outputStream* st) const {
@@ -71,9 +67,7 @@
 
 void oopDesc::print_value_on(outputStream* st) const {
   oop obj = oop(this);
-  if (this == NULL) {
-    st->print("NULL");
-  } else if (java_lang_String::is_instance(obj)) {
+  if (java_lang_String::is_instance(obj)) {
     java_lang_String::print(obj, st);
     print_address_on(st);
   } else {
@@ -82,15 +76,15 @@
 }
 
 
-void oopDesc::verify_on(outputStream* st) {
-  if (this != NULL) {
-    klass()->oop_verify_on(this, st);
+void oopDesc::verify_on(outputStream* st, oopDesc* oop_desc) {
+  if (oop_desc != NULL) {
+    oop_desc->klass()->oop_verify_on(oop_desc, st);
   }
 }
 
 
-void oopDesc::verify() {
-  verify_on(tty);
+void oopDesc::verify(oopDesc* oop_desc) {
+  verify_on(tty, oop_desc);
 }
 
 intptr_t oopDesc::slow_identity_hash() {
--- a/src/hotspot/share/oops/oop.hpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/oops/oop.hpp	Thu Aug 02 22:07:20 2018 +0200
@@ -226,8 +226,8 @@
   void release_address_field_put(int offset, address contents);
 
   // printing functions for VM debugging
-  void print_on(outputStream* st) const;         // First level print
-  void print_value_on(outputStream* st) const;   // Second level print.
+  void print_on(outputStream* st) const;        // First level print
+  void print_value_on(outputStream* st) const;  // Second level print.
   void print_address_on(outputStream* st) const; // Address printing
 
   // printing on default output stream
@@ -240,8 +240,8 @@
   char* print_value_string();
 
   // verification operations
-  void verify_on(outputStream* st);
-  void verify();
+  static void verify_on(outputStream* st, oopDesc* oop_desc);
+  static void verify(oopDesc* oopDesc);
 
   // locking operations
   inline bool is_locked()   const;
--- a/src/hotspot/share/prims/forte.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/prims/forte.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -248,7 +248,7 @@
     // a valid method. Then again we may have caught an interpreter
     // frame in the middle of construction and the bci field is
     // not yet valid.
-    if (!method->is_valid_method()) return false;
+    if (!Method::is_valid_method(method)) return false;
     *method_p = method; // If the Method* found is invalid, it is
                         // ignored by forte_fill_call_trace_given_top().
                         // So set method_p only if the Method is valid.
@@ -434,7 +434,7 @@
   // Check if a Java Method has been found.
   if (method == NULL) return;
 
-  if (!method->is_valid_method()) {
+  if (!Method::is_valid_method(method)) {
     trace->num_frames = ticks_GC_active; // -2
     return;
   }
@@ -445,7 +445,7 @@
     bci = st.bci();
     method = st.method();
 
-    if (!method->is_valid_method()) {
+    if (!Method::is_valid_method(method)) {
       // we throw away everything we've gathered in this sample since
       // none of it is safe
       trace->num_frames = ticks_GC_active; // -2
--- a/src/hotspot/share/runtime/fieldDescriptor.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/runtime/fieldDescriptor.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -188,12 +188,20 @@
     case T_ARRAY:
       st->print(" ");
       NOT_LP64(as_int = obj->int_field(offset()));
-      obj->obj_field(offset())->print_value_on(st);
+      if (obj->obj_field(offset()) != NULL) {
+        obj->obj_field(offset())->print_value_on(st);
+      } else {
+        st->print_cr("NULL");
+      }
       break;
     case T_OBJECT:
       st->print(" ");
       NOT_LP64(as_int = obj->int_field(offset()));
-      obj->obj_field(offset())->print_value_on(st);
+      if (obj->obj_field(offset()) != NULL) {
+        obj->obj_field(offset())->print_value_on(st);
+      } else {
+        st->print_cr("NULL");
+      }
       break;
     default:
       ShouldNotReachHere();
--- a/src/hotspot/share/runtime/jniHandles.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/runtime/jniHandles.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -318,7 +318,7 @@
 class VerifyJNIHandles: public OopClosure {
 public:
   virtual void do_oop(oop* root) {
-    (*root)->verify();
+    oopDesc::verify(*root);
   }
   virtual void do_oop(narrowOop* root) { ShouldNotReachHere(); }
 };
--- a/src/hotspot/share/runtime/objectMonitor.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/runtime/objectMonitor.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -2354,10 +2354,6 @@
   SETKNOB(FastHSSEC);
   #undef SETKNOB
 
-  if (Knob_Verbose) {
-    sanity_checks();
-  }
-
   if (os::is_MP()) {
     BackOffMask = (1 << Knob_SpinBackOff) - 1;
     if (Knob_ReportSettings) {
@@ -2376,70 +2372,3 @@
   InitDone = 1;
 }
 
-void ObjectMonitor::sanity_checks() {
-  int error_cnt = 0;
-  int warning_cnt = 0;
-  bool verbose = Knob_Verbose != 0 NOT_PRODUCT(|| VerboseInternalVMTests);
-
-  if (verbose) {
-    tty->print_cr("INFO: sizeof(ObjectMonitor)=" SIZE_FORMAT,
-                  sizeof(ObjectMonitor));
-    tty->print_cr("INFO: sizeof(PaddedEnd<ObjectMonitor>)=" SIZE_FORMAT,
-                  sizeof(PaddedEnd<ObjectMonitor>));
-  }
-
-  uint cache_line_size = VM_Version::L1_data_cache_line_size();
-  if (verbose) {
-    tty->print_cr("INFO: L1_data_cache_line_size=%u", cache_line_size);
-  }
-
-  ObjectMonitor dummy;
-  u_char *addr_begin  = (u_char*)&dummy;
-  u_char *addr_header = (u_char*)&dummy._header;
-  u_char *addr_owner  = (u_char*)&dummy._owner;
-
-  uint offset_header = (uint)(addr_header - addr_begin);
-  if (verbose) tty->print_cr("INFO: offset(_header)=%u", offset_header);
-
-  uint offset_owner = (uint)(addr_owner - addr_begin);
-  if (verbose) tty->print_cr("INFO: offset(_owner)=%u", offset_owner);
-
-  if ((uint)(addr_header - addr_begin) != 0) {
-    tty->print_cr("ERROR: offset(_header) must be zero (0).");
-    error_cnt++;
-  }
-
-  if (cache_line_size != 0) {
-    // We were able to determine the L1 data cache line size so
-    // do some cache line specific sanity checks
-
-    if ((offset_owner - offset_header) < cache_line_size) {
-      tty->print_cr("WARNING: the _header and _owner fields are closer "
-                    "than a cache line which permits false sharing.");
-      warning_cnt++;
-    }
-
-    if ((sizeof(PaddedEnd<ObjectMonitor>) % cache_line_size) != 0) {
-      tty->print_cr("WARNING: PaddedEnd<ObjectMonitor> size is not a "
-                    "multiple of a cache line which permits false sharing.");
-      warning_cnt++;
-    }
-  }
-
-  ObjectSynchronizer::sanity_checks(verbose, cache_line_size, &error_cnt,
-                                    &warning_cnt);
-
-  if (verbose || error_cnt != 0 || warning_cnt != 0) {
-    tty->print_cr("INFO: error_cnt=%d", error_cnt);
-    tty->print_cr("INFO: warning_cnt=%d", warning_cnt);
-  }
-
-  guarantee(error_cnt == 0,
-            "Fatal error(s) found in ObjectMonitor::sanity_checks()");
-}
-
-#ifndef PRODUCT
-void ObjectMonitor_test() {
-  ObjectMonitor::sanity_checks();
-}
-#endif
--- a/src/hotspot/share/runtime/objectMonitor.hpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/runtime/objectMonitor.hpp	Thu Aug 02 22:07:20 2018 +0200
@@ -103,11 +103,11 @@
 //   coherency misses. There is no single optimal layout for both
 //   single-threaded and multi-threaded environments.
 //
-// - See ObjectMonitor::sanity_checks() for how critical restrictions are
-//   enforced and advisory recommendations are reported.
+// - See TEST_VM(ObjectMonitor, sanity) gtest for how critical restrictions are
+//   enforced.
 // - Adjacent ObjectMonitors should be separated by enough space to avoid
 //   false sharing. This is handled by the ObjectMonitor allocation code
-//   in synchronizer.cpp. Also see ObjectSynchronizer::sanity_checks().
+//   in synchronizer.cpp. Also see TEST_VM(SynchronizerTest, sanity) gtest.
 //
 // Futures notes:
 //   - Separating _owner from the <remaining_fields> by enough space to
@@ -294,8 +294,6 @@
   bool      check(TRAPS);       // true if the thread owns the monitor.
   void      check_slow(TRAPS);
   void      clear();
-  static void sanity_checks();  // public for -XX:+ExecuteInternalVMTests
-                                // in PRODUCT for -XX:SyncKnobs=Verbose=1
 
   void      enter(TRAPS);
   void      exit(bool not_suspended, TRAPS);
--- a/src/hotspot/share/runtime/safepointMechanism.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/runtime/safepointMechanism.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -51,7 +51,7 @@
       const size_t allocation_size = 2 * page_size;
       char* polling_page = os::reserve_memory(allocation_size, NULL, page_size);
       os::commit_memory_or_exit(polling_page, allocation_size, false, "Unable to commit Safepoint polling page");
-      MemTracker::record_virtual_memory_type((address)polling_page, mtInternal);
+      MemTracker::record_virtual_memory_type((address)polling_page, mtSafepoint);
 
       char* bad_page  = polling_page;
       char* good_page = polling_page + page_size;
@@ -76,6 +76,7 @@
     char* polling_page = os::reserve_memory(page_size, NULL, page_size);
     os::commit_memory_or_exit(polling_page, page_size, false, "Unable to commit Safepoint polling page");
     os::protect_memory(polling_page, page_size, os::MEM_PROT_READ);
+    MemTracker::record_virtual_memory_type((address)polling_page, mtSafepoint);
 
     log_info(os)("SafePoint Polling address: " INTPTR_FORMAT, p2i(polling_page));
     os::set_polling_page((address)(polling_page));
--- a/src/hotspot/share/runtime/sharedRuntime.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/runtime/sharedRuntime.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -2863,6 +2863,22 @@
   GCLocker::unlock_critical(thread);
 JRT_END
 
+JRT_LEAF(oopDesc*, SharedRuntime::pin_object(JavaThread* thread, oopDesc* obj))
+  assert(Universe::heap()->supports_object_pinning(), "Why we are here?");
+  assert(obj != NULL, "Should not be null");
+  oop o(obj);
+  o = Universe::heap()->pin_object(thread, o);
+  assert(o != NULL, "Should not be null");
+  return o;
+JRT_END
+
+JRT_LEAF(void, SharedRuntime::unpin_object(JavaThread* thread, oopDesc* obj))
+  assert(Universe::heap()->supports_object_pinning(), "Why we are here?");
+  assert(obj != NULL, "Should not be null");
+  oop o(obj);
+  Universe::heap()->unpin_object(thread, o);
+JRT_END
+
 // -------------------------------------------------------------------------
 // Java-Java calling convention
 // (what you use when Java calls Java)
--- a/src/hotspot/share/runtime/sharedRuntime.hpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/runtime/sharedRuntime.hpp	Thu Aug 02 22:07:20 2018 +0200
@@ -486,6 +486,10 @@
   // Block before entering a JNI critical method
   static void block_for_jni_critical(JavaThread* thread);
 
+  // Pin/Unpin object
+  static oopDesc* pin_object(JavaThread* thread, oopDesc* obj);
+  static void unpin_object(JavaThread* thread, oopDesc* obj);
+
   // A compiled caller has just called the interpreter, but compiled code
   // exists.  Patch the caller so he no longer calls into the interpreter.
   static void fixup_callers_callsite(Method* moop, address ret_pc);
--- a/src/hotspot/share/runtime/synchronizer.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/runtime/synchronizer.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -1906,52 +1906,20 @@
 //------------------------------------------------------------------------------
 // Debugging code
 
-void ObjectSynchronizer::sanity_checks(const bool verbose,
-                                       const uint cache_line_size,
-                                       int *error_cnt_ptr,
-                                       int *warning_cnt_ptr) {
-  u_char *addr_begin      = (u_char*)&GVars;
-  u_char *addr_stwRandom  = (u_char*)&GVars.stwRandom;
-  u_char *addr_hcSequence = (u_char*)&GVars.hcSequence;
+u_char* ObjectSynchronizer::get_gvars_addr() {
+  return (u_char*)&GVars;
+}
 
-  if (verbose) {
-    tty->print_cr("INFO: sizeof(SharedGlobals)=" SIZE_FORMAT,
-                  sizeof(SharedGlobals));
-  }
+u_char* ObjectSynchronizer::get_gvars_hcSequence_addr() {
+  return (u_char*)&GVars.hcSequence;
+}
 
-  uint offset_stwRandom = (uint)(addr_stwRandom - addr_begin);
-  if (verbose) tty->print_cr("INFO: offset(stwRandom)=%u", offset_stwRandom);
+size_t ObjectSynchronizer::get_gvars_size() {
+  return sizeof(SharedGlobals);
+}
 
-  uint offset_hcSequence = (uint)(addr_hcSequence - addr_begin);
-  if (verbose) {
-    tty->print_cr("INFO: offset(_hcSequence)=%u", offset_hcSequence);
-  }
-
-  if (cache_line_size != 0) {
-    // We were able to determine the L1 data cache line size so
-    // do some cache line specific sanity checks
-
-    if (offset_stwRandom < cache_line_size) {
-      tty->print_cr("WARNING: the SharedGlobals.stwRandom field is closer "
-                    "to the struct beginning than a cache line which permits "
-                    "false sharing.");
-      (*warning_cnt_ptr)++;
-    }
-
-    if ((offset_hcSequence - offset_stwRandom) < cache_line_size) {
-      tty->print_cr("WARNING: the SharedGlobals.stwRandom and "
-                    "SharedGlobals.hcSequence fields are closer than a cache "
-                    "line which permits false sharing.");
-      (*warning_cnt_ptr)++;
-    }
-
-    if ((sizeof(SharedGlobals) - offset_hcSequence) < cache_line_size) {
-      tty->print_cr("WARNING: the SharedGlobals.hcSequence field is closer "
-                    "to the struct end than a cache line which permits false "
-                    "sharing.");
-      (*warning_cnt_ptr)++;
-    }
-  }
+u_char* ObjectSynchronizer::get_gvars_stwRandom_addr() {
+  return (u_char*)&GVars.stwRandom;
 }
 
 #ifndef PRODUCT
--- a/src/hotspot/share/runtime/synchronizer.hpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/runtime/synchronizer.hpp	Thu Aug 02 22:07:20 2018 +0200
@@ -153,12 +153,11 @@
   static void thread_local_used_oops_do(Thread* thread, OopClosure* f);
 
   // debugging
-  static void sanity_checks(const bool verbose,
-                            const unsigned int cache_line_size,
-                            int *error_cnt_ptr, int *warning_cnt_ptr);
   static int  verify_objmon_isinpool(ObjectMonitor *addr) PRODUCT_RETURN0;
 
  private:
+  friend class SynchronizerTest;
+
   enum { _BLOCKSIZE = 128 };
   // global list of blocks of monitors
   static PaddedEnd<ObjectMonitor> * volatile gBlockList;
@@ -177,6 +176,11 @@
   // Process oops in monitors on the given list
   static void list_oops_do(ObjectMonitor* list, OopClosure* f);
 
+  // Support for SynchronizerTest access to GVars fields:
+  static u_char* get_gvars_addr();
+  static u_char* get_gvars_hcSequence_addr();
+  static size_t get_gvars_size();
+  static u_char* get_gvars_stwRandom_addr();
 };
 
 // ObjectLocker enforced balanced locking and can never thrown an
--- a/src/hotspot/share/services/memTracker.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/services/memTracker.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -32,6 +32,7 @@
 #include "services/memReporter.hpp"
 #include "services/mallocTracker.inline.hpp"
 #include "services/memTracker.hpp"
+#include "utilities/debug.hpp"
 #include "utilities/defaultStream.hpp"
 #include "utilities/vmError.hpp"
 
@@ -50,6 +51,10 @@
 
 
 NMT_TrackingLevel MemTracker::init_tracking_level() {
+  // Memory type is encoded into tracking header as a byte field,
+  // make sure that we don't overflow it.
+  STATIC_ASSERT(mt_number_of_types <= max_jubyte);
+
   NMT_TrackingLevel level = NMT_off;
   char buf[64];
   jio_snprintf(buf, sizeof(buf), "NMT_LEVEL_%d", os::current_process_id());
--- a/src/hotspot/share/services/nmtCommon.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/services/nmtCommon.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, 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
@@ -44,6 +44,7 @@
   "Logging",
   "Arguments",
   "Module",
+  "Safepoint",
   "Unknown"
 };
 
--- a/src/hotspot/share/utilities/internalVMTests.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/hotspot/share/utilities/internalVMTests.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 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
@@ -47,7 +47,6 @@
   run_unit_test(TestVirtualSpace_test);
   run_unit_test(TestMetaspaceUtils_test);
   run_unit_test(GCTimer_test);
-  run_unit_test(ObjectMonitor_test);
   // These tests require the "C" locale to correctly parse decimal values
   const char* orig_locale = setlocale(LC_NUMERIC, NULL);
   setlocale(LC_NUMERIC, "C");
--- a/src/java.base/share/classes/java/text/ChoiceFormat.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/java.base/share/classes/java/text/ChoiceFormat.java	Thu Aug 02 22:07:20 2018 +0200
@@ -459,24 +459,30 @@
      * If {@code NaN}, returns same value.
      * <p>Used to make half-open intervals.
      *
+     * @implNote This is equivalent to calling
+     * {@link Math#nextUp(double) Math.nextUp(d)}
+     *
      * @param d the reference value
      * @return the least double value greather than {@code d}
      * @see #previousDouble
      */
     public static final double nextDouble (double d) {
-        return nextDouble(d,true);
+        return Math.nextUp(d);
     }
 
     /**
      * Finds the greatest double less than {@code d}.
      * If {@code NaN}, returns same value.
      *
+     * @implNote This is equivalent to calling
+     * {@link Math#nextDown(double) Math.nextDown(d)}
+     *
      * @param d the reference value
      * @return the greatest double value less than {@code d}
      * @see #nextDouble
      */
     public static final double previousDouble (double d) {
-        return nextDouble(d,false);
+        return Math.nextDown(d);
     }
 
     /**
@@ -548,48 +554,14 @@
      */
     private String[] choiceFormats;
 
-    /*
-    static final long SIGN          = 0x8000000000000000L;
-    static final long EXPONENT      = 0x7FF0000000000000L;
-    static final long SIGNIFICAND   = 0x000FFFFFFFFFFFFFL;
-
-    private static double nextDouble (double d, boolean positive) {
-        if (Double.isNaN(d) || Double.isInfinite(d)) {
-                return d;
-            }
-        long bits = Double.doubleToLongBits(d);
-        long significand = bits & SIGNIFICAND;
-        if (bits < 0) {
-            significand |= (SIGN | EXPONENT);
-        }
-        long exponent = bits & EXPONENT;
-        if (positive) {
-            significand += 1;
-            // FIXME fix overflow & underflow
-        } else {
-            significand -= 1;
-            // FIXME fix overflow & underflow
-        }
-        bits = exponent | (significand & ~EXPONENT);
-        return Double.longBitsToDouble(bits);
-    }
-    */
-
-    static final long SIGN                = 0x8000000000000000L;
-    static final long EXPONENT            = 0x7FF0000000000000L;
-    static final long POSITIVEINFINITY    = 0x7FF0000000000000L;
-
     /**
      * Finds the least double greater than {@code d} (if {@code positive} is
      * {@code true}), or the greatest double less than {@code d} (if
      * {@code positive} is {@code false}).
      * If {@code NaN}, returns same value.
      *
-     * Does not affect floating-point flags,
-     * provided these member functions do not:
-     *          Double.longBitsToDouble(long)
-     *          Double.doubleToLongBits(double)
-     *          Double.isNaN(double)
+     * @implNote This is equivalent to calling
+     * {@code positive ? Math.nextUp(d) : Math.nextDown(d)}
      *
      * @param d        the reference value
      * @param positive {@code true} if the least double is desired;
@@ -597,44 +569,7 @@
      * @return the least or greater double value
      */
     public static double nextDouble (double d, boolean positive) {
-
-        /* filter out NaN's */
-        if (Double.isNaN(d)) {
-            return d;
-        }
-
-        /* zero's are also a special case */
-        if (d == 0.0) {
-            double smallestPositiveDouble = Double.longBitsToDouble(1L);
-            if (positive) {
-                return smallestPositiveDouble;
-            } else {
-                return -smallestPositiveDouble;
-            }
-        }
-
-        /* if entering here, d is a nonzero value */
-
-        /* hold all bits in a long for later use */
-        long bits = Double.doubleToLongBits(d);
-
-        /* strip off the sign bit */
-        long magnitude = bits & ~SIGN;
-
-        /* if next double away from zero, increase magnitude */
-        if ((bits > 0) == positive) {
-            if (magnitude != POSITIVEINFINITY) {
-                magnitude += 1;
-            }
-        }
-        /* else decrease magnitude */
-        else {
-            magnitude -= 1;
-        }
-
-        /* restore sign bit and return */
-        long signbit = bits & SIGN;
-        return Double.longBitsToDouble (magnitude | signbit);
+        return positive ? Math.nextUp(d) : Math.nextDown(d);
     }
 
     private static double[] doubleArraySize(double[] array) {
--- a/src/java.base/share/classes/sun/security/provider/X509Factory.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/java.base/share/classes/sun/security/provider/X509Factory.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -635,7 +635,8 @@
                 if (next != '\r') footer.append((char)next);
             }
 
-            checkHeaderFooter(header.toString(), footer.toString());
+            checkHeaderFooter(header.toString().stripTrailing(),
+                    footer.toString().stripTrailing());
 
             try {
                 return Base64.getDecoder().decode(data.toByteArray());
--- a/src/java.base/share/classes/sun/util/locale/provider/CalendarDataUtility.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/java.base/share/classes/sun/util/locale/provider/CalendarDataUtility.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
@@ -41,6 +41,7 @@
 public class CalendarDataUtility {
     public static final String FIRST_DAY_OF_WEEK = "firstDayOfWeek";
     public static final String MINIMAL_DAYS_IN_FIRST_WEEK = "minimalDaysInFirstWeek";
+    private static final Locale.Builder OVERRIDE_BUILDER = new Locale.Builder();
 
     // No instantiation
     private CalendarDataUtility() {
@@ -144,7 +145,9 @@
                 rg.charAt(1) >= 0x0041 &&
                 rg.charAt(1) <= 0x005A &&
                 rg.substring(2).equals("ZZZZ")) {
-                override = new Locale.Builder().setLocale(l)
+                override = OVERRIDE_BUILDER
+                    .clear()
+                    .setLocale(l)
                     .setRegion(rg.substring(0, 2))
                     .build();
             }
--- a/src/java.base/share/classes/sun/util/locale/provider/SPILocaleProviderAdapter.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/java.base/share/classes/sun/util/locale/provider/SPILocaleProviderAdapter.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
@@ -40,6 +40,7 @@
 import java.text.spi.DateFormatSymbolsProvider;
 import java.text.spi.DecimalFormatSymbolsProvider;
 import java.text.spi.NumberFormatProvider;
+import java.util.Arrays;
 import java.util.Locale;
 import java.util.Map;
 import java.util.ServiceLoader;
@@ -110,22 +111,52 @@
      * Delegate interface. All the implementations have to have the class name
      * following "<provider class name>Delegate" convention.
      */
-    interface Delegate<P extends LocaleServiceProvider> {
-        public void addImpl(P impl);
-        public P getImpl(Locale locale);
-    }
-
-    /*
-     * Obtain the real SPI implementation, using locale fallback
-     */
-    private static <P extends LocaleServiceProvider> P getImpl(Map<Locale, P> map, Locale locale) {
-        for (Locale l : LocaleServiceProviderPool.getLookupLocales(locale)) {
-            P ret = map.get(l);
-            if (ret != null) {
-                return ret;
+    private interface Delegate<P extends LocaleServiceProvider> {
+        default public void addImpl(P impl) {
+            for (Locale l : impl.getAvailableLocales()) {
+                getDelegateMap().putIfAbsent(l, impl);
             }
         }
-        return null;
+
+        /*
+         * Obtain the real SPI implementation, using locale fallback
+         */
+        default public P getImpl(Locale locale) {
+            for (Locale l : LocaleServiceProviderPool.getLookupLocales(locale.stripExtensions())) {
+                P ret = getDelegateMap().get(l);
+                if (ret != null) {
+                    return ret;
+                }
+            }
+            return null;
+        }
+
+        public Map<Locale, P> getDelegateMap();
+
+        default public Locale[] getAvailableLocalesDelegate() {
+            return getDelegateMap().keySet().stream().toArray(Locale[]::new);
+        }
+
+        default public boolean isSupportedLocaleDelegate(Locale locale) {
+            Map<Locale, P> map = getDelegateMap();
+            Locale override = CalendarDataUtility.findRegionOverride(locale);
+
+            // First, call the method with extensions (if any)
+            P impl = map.get(override);
+            if (impl != null) {
+                return impl.isSupportedLocale(override);
+            } else {
+                // The default behavior
+                Locale overrideNoExt = override.stripExtensions();
+                impl = map.get(overrideNoExt);
+                if (impl != null) {
+                    return Arrays.stream(impl.getAvailableLocales())
+                                .anyMatch(overrideNoExt::equals);
+                }
+            }
+
+            return false;
+        }
     }
 
     /*
@@ -133,50 +164,47 @@
      */
     static class BreakIteratorProviderDelegate extends BreakIteratorProvider
                                         implements Delegate<BreakIteratorProvider> {
-        private final ConcurrentMap<Locale, BreakIteratorProvider> map = new ConcurrentHashMap<>();
+        private final Map<Locale, BreakIteratorProvider> map = new ConcurrentHashMap<>();
 
         @Override
-        public void addImpl(BreakIteratorProvider impl) {
-            for (Locale l : impl.getAvailableLocales()) {
-                map.putIfAbsent(l, impl);
-            }
-        }
-
-        @Override
-        public BreakIteratorProvider getImpl(Locale locale) {
-            return SPILocaleProviderAdapter.getImpl(map, locale);
+        public Map<Locale, BreakIteratorProvider> getDelegateMap() {
+            return map;
         }
 
         @Override
         public Locale[] getAvailableLocales() {
-            return map.keySet().toArray(new Locale[0]);
+            return getAvailableLocalesDelegate();
         }
 
         @Override
         public boolean isSupportedLocale(Locale locale) {
-            return map.containsKey(locale);
+            return isSupportedLocaleDelegate(locale);
         }
 
         @Override
         public BreakIterator getWordInstance(Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             BreakIteratorProvider bip = getImpl(locale);
             return bip.getWordInstance(locale);
         }
 
         @Override
         public BreakIterator getLineInstance(Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             BreakIteratorProvider bip = getImpl(locale);
             return bip.getLineInstance(locale);
         }
 
         @Override
         public BreakIterator getCharacterInstance(Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             BreakIteratorProvider bip = getImpl(locale);
             return bip.getCharacterInstance(locale);
         }
 
         @Override
         public BreakIterator getSentenceInstance(Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             BreakIteratorProvider bip = getImpl(locale);
             return bip.getSentenceInstance(locale);
         }
@@ -184,32 +212,26 @@
     }
 
     static class CollatorProviderDelegate extends CollatorProvider implements Delegate<CollatorProvider> {
-        private final ConcurrentMap<Locale, CollatorProvider> map = new ConcurrentHashMap<>();
+        private final Map<Locale, CollatorProvider> map = new ConcurrentHashMap<>();
 
         @Override
-        public void addImpl(CollatorProvider impl) {
-            for (Locale l : impl.getAvailableLocales()) {
-                map.putIfAbsent(l, impl);
-            }
-        }
-
-        @Override
-        public CollatorProvider getImpl(Locale locale) {
-            return SPILocaleProviderAdapter.getImpl(map, locale);
+        public Map<Locale, CollatorProvider> getDelegateMap() {
+            return map;
         }
 
         @Override
         public Locale[] getAvailableLocales() {
-            return map.keySet().toArray(new Locale[0]);
+            return getAvailableLocalesDelegate();
         }
 
         @Override
         public boolean isSupportedLocale(Locale locale) {
-            return map.containsKey(locale);
+            return isSupportedLocaleDelegate(locale);
         }
 
         @Override
         public Collator getInstance(Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             CollatorProvider cp = getImpl(locale);
             return cp.getInstance(locale);
         }
@@ -217,44 +239,40 @@
 
     static class DateFormatProviderDelegate extends DateFormatProvider
                                      implements Delegate<DateFormatProvider> {
-        private final ConcurrentMap<Locale, DateFormatProvider> map = new ConcurrentHashMap<>();
+        private final Map<Locale, DateFormatProvider> map = new ConcurrentHashMap<>();
 
         @Override
-        public void addImpl(DateFormatProvider impl) {
-            for (Locale l : impl.getAvailableLocales()) {
-                map.putIfAbsent(l, impl);
-            }
-        }
-
-        @Override
-        public DateFormatProvider getImpl(Locale locale) {
-            return SPILocaleProviderAdapter.getImpl(map, locale);
+        public Map<Locale, DateFormatProvider> getDelegateMap() {
+            return map;
         }
 
         @Override
         public Locale[] getAvailableLocales() {
-            return map.keySet().toArray(new Locale[0]);
+            return getAvailableLocalesDelegate();
         }
 
         @Override
         public boolean isSupportedLocale(Locale locale) {
-            return map.containsKey(locale);
+            return isSupportedLocaleDelegate(locale);
         }
 
         @Override
         public DateFormat getTimeInstance(int style, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             DateFormatProvider dfp = getImpl(locale);
             return dfp.getTimeInstance(style, locale);
         }
 
         @Override
         public DateFormat getDateInstance(int style, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             DateFormatProvider dfp = getImpl(locale);
             return dfp.getDateInstance(style, locale);
         }
 
         @Override
         public DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             DateFormatProvider dfp = getImpl(locale);
             return dfp.getDateTimeInstance(dateStyle, timeStyle, locale);
         }
@@ -262,32 +280,26 @@
 
     static class DateFormatSymbolsProviderDelegate extends DateFormatSymbolsProvider
                                             implements Delegate<DateFormatSymbolsProvider> {
-        private final ConcurrentMap<Locale, DateFormatSymbolsProvider> map = new ConcurrentHashMap<>();
+        private final Map<Locale, DateFormatSymbolsProvider> map = new ConcurrentHashMap<>();
 
         @Override
-        public void addImpl(DateFormatSymbolsProvider impl) {
-            for (Locale l : impl.getAvailableLocales()) {
-                map.putIfAbsent(l, impl);
-            }
-        }
-
-        @Override
-        public DateFormatSymbolsProvider getImpl(Locale locale) {
-            return SPILocaleProviderAdapter.getImpl(map, locale);
+        public Map<Locale, DateFormatSymbolsProvider> getDelegateMap() {
+            return map;
         }
 
         @Override
         public Locale[] getAvailableLocales() {
-            return map.keySet().toArray(new Locale[0]);
+            return getAvailableLocalesDelegate();
         }
 
         @Override
         public boolean isSupportedLocale(Locale locale) {
-            return map.containsKey(locale);
+            return isSupportedLocaleDelegate(locale);
         }
 
         @Override
         public DateFormatSymbols getInstance(Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             DateFormatSymbolsProvider dfsp = getImpl(locale);
             return dfsp.getInstance(locale);
         }
@@ -295,32 +307,26 @@
 
     static class DecimalFormatSymbolsProviderDelegate extends DecimalFormatSymbolsProvider
                                                implements Delegate<DecimalFormatSymbolsProvider> {
-        private final ConcurrentMap<Locale, DecimalFormatSymbolsProvider> map = new ConcurrentHashMap<>();
+        private final Map<Locale, DecimalFormatSymbolsProvider> map = new ConcurrentHashMap<>();
 
         @Override
-        public void addImpl(DecimalFormatSymbolsProvider impl) {
-            for (Locale l : impl.getAvailableLocales()) {
-                map.putIfAbsent(l, impl);
-            }
-        }
-
-        @Override
-        public DecimalFormatSymbolsProvider getImpl(Locale locale) {
-            return SPILocaleProviderAdapter.getImpl(map, locale);
+        public Map<Locale, DecimalFormatSymbolsProvider> getDelegateMap() {
+            return map;
         }
 
         @Override
         public Locale[] getAvailableLocales() {
-            return map.keySet().toArray(new Locale[0]);
+            return getAvailableLocalesDelegate();
         }
 
         @Override
         public boolean isSupportedLocale(Locale locale) {
-            return map.containsKey(locale);
+            return isSupportedLocaleDelegate(locale);
         }
 
         @Override
         public DecimalFormatSymbols getInstance(Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             DecimalFormatSymbolsProvider dfsp = getImpl(locale);
             return dfsp.getInstance(locale);
         }
@@ -328,50 +334,47 @@
 
     static class NumberFormatProviderDelegate extends NumberFormatProvider
                                        implements Delegate<NumberFormatProvider> {
-        private final ConcurrentMap<Locale, NumberFormatProvider> map = new ConcurrentHashMap<>();
+        private final Map<Locale, NumberFormatProvider> map = new ConcurrentHashMap<>();
 
         @Override
-        public void addImpl(NumberFormatProvider impl) {
-            for (Locale l : impl.getAvailableLocales()) {
-                map.putIfAbsent(l, impl);
-            }
-        }
-
-        @Override
-        public NumberFormatProvider getImpl(Locale locale) {
-            return SPILocaleProviderAdapter.getImpl(map, locale);
+        public Map<Locale, NumberFormatProvider> getDelegateMap() {
+            return map;
         }
 
         @Override
         public Locale[] getAvailableLocales() {
-            return map.keySet().toArray(new Locale[0]);
+            return getAvailableLocalesDelegate();
         }
 
         @Override
         public boolean isSupportedLocale(Locale locale) {
-            return map.containsKey(locale);
+            return isSupportedLocaleDelegate(locale);
         }
 
         @Override
         public NumberFormat getCurrencyInstance(Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             NumberFormatProvider nfp = getImpl(locale);
             return nfp.getCurrencyInstance(locale);
         }
 
         @Override
         public NumberFormat getIntegerInstance(Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             NumberFormatProvider nfp = getImpl(locale);
             return nfp.getIntegerInstance(locale);
         }
 
         @Override
         public NumberFormat getNumberInstance(Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             NumberFormatProvider nfp = getImpl(locale);
             return nfp.getNumberInstance(locale);
         }
 
         @Override
         public NumberFormat getPercentInstance(Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             NumberFormatProvider nfp = getImpl(locale);
             return nfp.getPercentInstance(locale);
         }
@@ -379,38 +382,33 @@
 
     static class CalendarDataProviderDelegate extends CalendarDataProvider
                                        implements Delegate<CalendarDataProvider> {
-        private final ConcurrentMap<Locale, CalendarDataProvider> map = new ConcurrentHashMap<>();
+        private final Map<Locale, CalendarDataProvider> map = new ConcurrentHashMap<>();
 
         @Override
-        public void addImpl(CalendarDataProvider impl) {
-            for (Locale l : impl.getAvailableLocales()) {
-                map.putIfAbsent(l, impl);
-            }
-        }
-
-        @Override
-        public CalendarDataProvider getImpl(Locale locale) {
-            return SPILocaleProviderAdapter.getImpl(map, locale);
+        public Map<Locale, CalendarDataProvider> getDelegateMap() {
+            return map;
         }
 
         @Override
         public Locale[] getAvailableLocales() {
-            return map.keySet().toArray(new Locale[0]);
+            return getAvailableLocalesDelegate();
         }
 
         @Override
         public boolean isSupportedLocale(Locale locale) {
-            return map.containsKey(locale);
+            return isSupportedLocaleDelegate(locale);
         }
 
         @Override
         public int getFirstDayOfWeek(Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             CalendarDataProvider cdp = getImpl(locale);
             return cdp.getFirstDayOfWeek(locale);
         }
 
         @Override
         public int getMinimalDaysInFirstWeek(Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             CalendarDataProvider cdp = getImpl(locale);
             return cdp.getMinimalDaysInFirstWeek(locale);
         }
@@ -418,34 +416,28 @@
 
     static class CalendarNameProviderDelegate extends CalendarNameProvider
                                        implements Delegate<CalendarNameProvider> {
-        private final ConcurrentMap<Locale, CalendarNameProvider> map = new ConcurrentHashMap<>();
+        private final Map<Locale, CalendarNameProvider> map = new ConcurrentHashMap<>();
 
         @Override
-        public void addImpl(CalendarNameProvider impl) {
-            for (Locale l : impl.getAvailableLocales()) {
-                map.putIfAbsent(l, impl);
-            }
-        }
-
-        @Override
-        public CalendarNameProvider getImpl(Locale locale) {
-            return SPILocaleProviderAdapter.getImpl(map, locale);
+        public Map<Locale, CalendarNameProvider> getDelegateMap() {
+            return map;
         }
 
         @Override
         public Locale[] getAvailableLocales() {
-            return map.keySet().toArray(new Locale[0]);
+            return getAvailableLocalesDelegate();
         }
 
         @Override
         public boolean isSupportedLocale(Locale locale) {
-            return map.containsKey(locale);
+            return isSupportedLocaleDelegate(locale);
         }
 
         @Override
         public String getDisplayName(String calendarType,
                                               int field, int value,
                                               int style, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             CalendarNameProvider cdp = getImpl(locale);
             return cdp.getDisplayName(calendarType, field, value, style, locale);
         }
@@ -454,6 +446,7 @@
         public Map<String, Integer> getDisplayNames(String calendarType,
                                                              int field, int style,
                                                              Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             CalendarNameProvider cdp = getImpl(locale);
             return cdp.getDisplayNames(calendarType, field, style, locale);
         }
@@ -461,38 +454,33 @@
 
     static class CurrencyNameProviderDelegate extends CurrencyNameProvider
                                        implements Delegate<CurrencyNameProvider> {
-        private final ConcurrentMap<Locale, CurrencyNameProvider> map = new ConcurrentHashMap<>();
+        private final Map<Locale, CurrencyNameProvider> map = new ConcurrentHashMap<>();
 
         @Override
-        public void addImpl(CurrencyNameProvider impl) {
-            for (Locale l : impl.getAvailableLocales()) {
-                map.putIfAbsent(l, impl);
-            }
-        }
-
-        @Override
-        public CurrencyNameProvider getImpl(Locale locale) {
-            return SPILocaleProviderAdapter.getImpl(map, locale);
+        public Map<Locale, CurrencyNameProvider> getDelegateMap() {
+            return map;
         }
 
         @Override
         public Locale[] getAvailableLocales() {
-            return map.keySet().toArray(new Locale[0]);
+            return getAvailableLocalesDelegate();
         }
 
         @Override
         public boolean isSupportedLocale(Locale locale) {
-            return map.containsKey(locale);
+            return isSupportedLocaleDelegate(locale);
         }
 
         @Override
         public String getSymbol(String currencyCode, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             CurrencyNameProvider cnp = getImpl(locale);
             return cnp.getSymbol(currencyCode, locale);
         }
 
         @Override
         public String getDisplayName(String currencyCode, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             CurrencyNameProvider cnp = getImpl(locale);
             return cnp.getDisplayName(currencyCode, locale);
         }
@@ -500,62 +488,61 @@
 
     static class LocaleNameProviderDelegate extends LocaleNameProvider
                                      implements Delegate<LocaleNameProvider> {
-        private final ConcurrentMap<Locale, LocaleNameProvider> map = new ConcurrentHashMap<>();
+        private final Map<Locale, LocaleNameProvider> map = new ConcurrentHashMap<>();
 
         @Override
-        public void addImpl(LocaleNameProvider impl) {
-            for (Locale l : impl.getAvailableLocales()) {
-                map.putIfAbsent(l, impl);
-            }
-        }
-
-        @Override
-        public LocaleNameProvider getImpl(Locale locale) {
-            return SPILocaleProviderAdapter.getImpl(map, locale);
+        public Map<Locale, LocaleNameProvider> getDelegateMap() {
+            return map;
         }
 
         @Override
         public Locale[] getAvailableLocales() {
-            return map.keySet().toArray(new Locale[0]);
+            return getAvailableLocalesDelegate();
         }
 
         @Override
         public boolean isSupportedLocale(Locale locale) {
-            return map.containsKey(locale);
+            return isSupportedLocaleDelegate(locale);
         }
 
         @Override
         public String getDisplayLanguage(String languageCode, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             LocaleNameProvider lnp = getImpl(locale);
             return lnp.getDisplayLanguage(languageCode, locale);
         }
 
         @Override
         public String getDisplayScript(String scriptCode, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             LocaleNameProvider lnp = getImpl(locale);
             return lnp.getDisplayScript(scriptCode, locale);
         }
 
         @Override
         public String getDisplayCountry(String countryCode, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             LocaleNameProvider lnp = getImpl(locale);
             return lnp.getDisplayCountry(countryCode, locale);
         }
 
         @Override
         public String getDisplayVariant(String variant, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             LocaleNameProvider lnp = getImpl(locale);
             return lnp.getDisplayVariant(variant, locale);
         }
 
         @Override
         public String getDisplayUnicodeExtensionKey(String key, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             LocaleNameProvider lnp = getImpl(locale);
             return lnp.getDisplayUnicodeExtensionKey(key, locale);
         }
 
         @Override
         public String getDisplayUnicodeExtensionType(String extType, String key, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             LocaleNameProvider lnp = getImpl(locale);
             return lnp.getDisplayUnicodeExtensionType(extType, key, locale);
         }
@@ -563,38 +550,33 @@
 
     static class TimeZoneNameProviderDelegate extends TimeZoneNameProvider
                                      implements Delegate<TimeZoneNameProvider> {
-        private final ConcurrentMap<Locale, TimeZoneNameProvider> map = new ConcurrentHashMap<>();
+        private final Map<Locale, TimeZoneNameProvider> map = new ConcurrentHashMap<>();
 
         @Override
-        public void addImpl(TimeZoneNameProvider impl) {
-            for (Locale l : impl.getAvailableLocales()) {
-                map.putIfAbsent(l, impl);
-            }
-        }
-
-        @Override
-        public TimeZoneNameProvider getImpl(Locale locale) {
-            return SPILocaleProviderAdapter.getImpl(map, locale);
+        public Map<Locale, TimeZoneNameProvider> getDelegateMap() {
+            return map;
         }
 
         @Override
         public Locale[] getAvailableLocales() {
-            return map.keySet().toArray(new Locale[0]);
+            return getAvailableLocalesDelegate();
         }
 
         @Override
         public boolean isSupportedLocale(Locale locale) {
-            return map.containsKey(locale);
+            return isSupportedLocaleDelegate(locale);
         }
 
         @Override
         public String getDisplayName(String ID, boolean daylight, int style, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             TimeZoneNameProvider tznp = getImpl(locale);
             return tznp.getDisplayName(ID, daylight, style, locale);
         }
 
         @Override
         public String getGenericDisplayName(String ID, int style, Locale locale) {
+            locale = CalendarDataUtility.findRegionOverride(locale);
             TimeZoneNameProvider tznp = getImpl(locale);
             return tznp.getGenericDisplayName(ID, style, locale);
         }
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesIndexWriter.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesIndexWriter.java	Thu Aug 02 22:07:20 2018 +0200
@@ -150,9 +150,7 @@
                 .addTab(resources.exceptionSummary, e -> utils.isException((TypeElement)e))
                 .addTab(resources.errorSummary, e -> utils.isError((TypeElement)e))
                 .addTab(resources.annotationTypeSummary, utils::isAnnotationType)
-                .setTabScript(i -> "show(" + i + ");")
-                .setUseTBody(false)
-                .setPutIdFirst(true);
+                .setTabScript(i -> "show(" + i + ");");
         for (Character unicode : indexbuilder.index()) {
             for (Element element : indexbuilder.getMemberList(unicode)) {
                 TypeElement typeElement = (TypeElement) element;
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeFieldWriterImpl.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeFieldWriterImpl.java	Thu Aug 02 22:07:20 2018 +0200
@@ -221,8 +221,7 @@
                 .setCaption(caption)
                 .setHeader(header)
                 .setRowScopeColumn(1)
-                .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast)
-                .setUseTBody(false);  // temporary? compatibility mode for TBody
+                .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast);
     }
 
     /**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java	Thu Aug 02 22:07:20 2018 +0200
@@ -242,8 +242,7 @@
                 .setCaption(getCaption())
                 .setHeader(getSummaryTableHeader(typeElement))
                 .setRowScopeColumn(1)
-                .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast)
-                .setUseTBody(false);  // temporary? compatibility mode for TBody
+                .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast);
     }
 
     /**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriterImpl.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriterImpl.java	Thu Aug 02 22:07:20 2018 +0200
@@ -268,8 +268,7 @@
                 .setCaption(contents.constructors)
                 .setHeader(getSummaryTableHeader(typeElement))
                 .setRowScopeColumn(rowScopeColumn)
-                .setColumnStyles(bodyRowStyles)
-                .setUseTBody(false);  // temporary? compatibility mode for TBody
+                .setColumnStyles(bodyRowStyles);
     }
 
     /**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/EnumConstantWriterImpl.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/EnumConstantWriterImpl.java	Thu Aug 02 22:07:20 2018 +0200
@@ -212,8 +212,7 @@
                 .setSummary(summary)
                 .setCaption(contents.getContent("doclet.Enum_Constants"))
                 .setHeader(getSummaryTableHeader(typeElement))
-                .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast)
-                .setUseTBody(false);
+                .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast);
     }
 
     /**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriterImpl.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriterImpl.java	Thu Aug 02 22:07:20 2018 +0200
@@ -218,8 +218,7 @@
                 .setCaption(contents.fields)
                 .setHeader(getSummaryTableHeader(typeElement))
                 .setRowScopeColumn(1)
-                .setColumnStyles(bodyRowStyles)
-                .setUseTBody(false);  // temporary? compatibility mode for TBody
+                .setColumnStyles(bodyRowStyles);
     }
 
     /**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java	Thu Aug 02 22:07:20 2018 +0200
@@ -267,9 +267,7 @@
                 .addTab(resources.getText("doclet.Default_Methods"), utils::isDefault)
                 .addTab(resources.getText("doclet.Deprecated_Methods"),
                         e -> utils.isDeprecated(e) || utils.isDeprecated(typeElement))
-                .setTabScript(i -> "show(" + i + ");")
-                .setUseTBody(false)
-                .setPutIdFirst(true);
+                .setTabScript(i -> "show(" + i + ");");
     }
 
     /**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NestedClassWriterImpl.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NestedClassWriterImpl.java	Thu Aug 02 22:07:20 2018 +0200
@@ -121,8 +121,7 @@
                 .setCaption(contents.getContent("doclet.Nested_Classes"))
                 .setHeader(getSummaryTableHeader(typeElement))
                 .setRowScopeColumn(1)
-                .setColumnStyles(bodyRowStyles)
-                .setUseTBody(false);  // temporary? compatibility mode for TBody
+                .setColumnStyles(bodyRowStyles);
     }
 
     /**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java	Thu Aug 02 22:07:20 2018 +0200
@@ -232,8 +232,7 @@
                 .setCaption(contents.properties)
                 .setHeader(getSummaryTableHeader(typeElement))
                 .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast)
-                .setRowScopeColumn(1)
-                .setUseTBody(false);
+                .setRowScopeColumn(1);
     }
 
     /**
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Table.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Table.java	Thu Aug 02 22:07:20 2018 +0200
@@ -81,10 +81,6 @@
     private final List<Integer> bodyRowMasks;
     private String rowIdPrefix = "i";
 
-    // compatibility flags
-    private boolean putIdFirst = false;
-    private boolean useTBody = true;
-
     /**
      * Creates a builder for an HTML table.
      *
@@ -302,37 +298,6 @@
     }
 
     /**
-     * Sets whether the {@code id} attribute should appear first in a {@code <tr>} tag.
-     * The default is {@code false}.
-     *
-     * <b>This is a compatibility feature that should be removed when all tables use a
-     * consistent policy.</b>
-     *
-     * @param first whether to put {@code id} attributes first
-     * @return this object
-     */
-    public Table setPutIdFirst(boolean first) {
-        this.putIdFirst = first;
-        return this;
-    }
-
-    /**
-     * Sets whether or not to use an explicit {@code <tbody>} element to enclose the rows
-     * of a table.
-     * The default is {@code true}.
-     *
-     * <b>This is a compatibility feature that should be removed when all tables use a
-     * consistent policy.</b>
-     *
-     * @param use whether o use a {@code <tbody> element
-     * @return this object
-     */
-    public Table setUseTBody(boolean use) {
-        this.useTBody = use;
-        return this;
-    }
-
-    /**
      * Add a row of data to the table.
      * Each item of content should be suitable for use as the content of a
      * {@code <th>} or {@code <td>} cell.
@@ -399,11 +364,6 @@
 
         HtmlTree row = new HtmlTree(HtmlTag.TR);
 
-        if (putIdFirst && tabMap != null) {
-            int index = bodyRows.size();
-            row.addAttr(HtmlAttr.ID, (rowIdPrefix + index));
-        }
-
         if (stripedStyles != null) {
             int rowIndex = bodyRows.size();
             row.addAttr(HtmlAttr.CLASS, stripedStyles.get(rowIndex % 2).name());
@@ -422,10 +382,8 @@
         bodyRows.add(row);
 
         if (tabMap != null) {
-            if (!putIdFirst) {
-                int index = bodyRows.size() - 1;
-                row.addAttr(HtmlAttr.ID, (rowIdPrefix + index));
-            }
+            int index = bodyRows.size() - 1;
+            row.addAttr(HtmlAttr.ID, (rowIdPrefix + index));
             int mask = 0;
             int maskBit = 1;
             for (Map.Entry<String, Predicate<Element>> e : tabMap.entrySet()) {
@@ -493,13 +451,10 @@
             table.addContent(caption);
         }
         table.addContent(header.toContent());
-        if (useTBody) {
-            Content tbody = new HtmlTree(HtmlTag.TBODY);
-            bodyRows.forEach(row -> tbody.addContent(row));
-            table.addContent(tbody);
-        } else {
-            bodyRows.forEach(row -> table.addContent(row));
-        }
+        Content tbody = new HtmlTree(HtmlTag.TBODY);
+        bodyRows.forEach(row -> tbody.addContent(row));
+        table.addContent(tbody);
+
         return table;
     }
 
--- a/src/utils/hsdis/Makefile	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/utils/hsdis/Makefile	Thu Aug 02 22:07:20 2018 +0200
@@ -15,7 +15,7 @@
 # (a) the Software, and
 #
 # (b) any piece of software and/or hardware listed in the lrgrwrks.txt file
-# if one is included with the Software (each a “Larger Work” to which the
+# if one is included with the Software (each a "Larger Work" to which the
 # Software is contributed by such licensors),
 #
 # without restriction, including without limitation the rights to copy,
--- a/src/utils/hsdis/README	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/utils/hsdis/README	Thu Aug 02 22:07:20 2018 +0200
@@ -1,4 +1,4 @@
-Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   
 The Universal Permissive License (UPL), Version 1.0
@@ -14,7 +14,7 @@
 (a) the Software, and
 
 (b) any piece of software and/or hardware listed in the lrgrwrks.txt file
-if one is included with the Software (each a “Larger Work” to which the
+if one is included with the Software (each a "Larger Work" to which the
 Software is contributed by such licensors),
 
 without restriction, including without limitation the rights to copy,
@@ -54,11 +54,12 @@
 
 * Building
 
-To build this project you a copy of GNU binutils to build against.  It
-is known to work with binutils 2.17 and binutils 2.19.1.  Download a
+To build this project you need a copy of GNU binutils to build against.
+It is known to work with binutils 2.29.1, 2.30, and 2.31.1. Building
+against versions older than 2.29 is no longer supported. Download a
 copy of the software from http://directory.fsf.org/project/binutils or
-one of it's mirrors.  Builds targetting windows should use at least
-2.19 and currently requires the use of a cross compiler.
+one of its mirrors.  Builds targetting windows currently require the
+use of a cross compiler.
 
 Binutils should be configured with the '--disable-nls' flag to disable
 Native Language Support, otherwise you might get an "undefined
@@ -107,9 +108,9 @@
 the makefile what prefix to use to find the mingw tools by using
 MINGW=.  For example:
 
-make MINGW=i586-mingw32msvc BINTUILS=build/binutils-2.19.1
+make MINGW=i586-mingw32msvc BINUTILS=build/binutils-2.31.1
 
-will build the Win32 cross compiled version of hsdis based on 2.19.1.
+will build the Win32 cross compiled version of hsdis based on 2.31.1.
 
 * Installing
 
--- a/src/utils/hsdis/hsdis-demo.c	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/utils/hsdis/hsdis-demo.c	Thu Aug 02 22:07:20 2018 +0200
@@ -15,7 +15,7 @@
  * (a) the Software, and
  *
  * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file
- * if one is included with the Software (each a “Larger Work” to which the
+ * if one is included with the Software (each a "Larger Work" to which the
  * Software is contributed by such licensors),
  *
  * without restriction, including without limitation the rights to copy,
--- a/src/utils/hsdis/hsdis.c	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/utils/hsdis/hsdis.c	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * The Universal Permissive License (UPL), Version 1.0
@@ -15,7 +15,7 @@
  * (a) the Software, and
  *
  * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file
- * if one is included with the Software (each a “Larger Work” to which the
+ * if one is included with the Software (each a "Larger Work" to which the
  * Software is contributed by such licensors),
  *
  * without restriction, including without limitation the rights to copy,
@@ -50,12 +50,15 @@
 */
 
 #include <config.h> /* required by bfd.h */
+#include <errno.h>
+#include <inttypes.h>
+#include <string.h>
+
 #include <libiberty.h>
 #include <bfd.h>
+#include <bfdver.h>
 #include <dis-asm.h>
-#include <inttypes.h>
-#include <string.h>
-#include <errno.h>
+
 #include "hsdis.h"
 
 #ifndef bool
@@ -335,7 +338,10 @@
 
   /* Finish linking together the various callback blocks. */
   app_data->dinfo.application_data = (void*) app_data;
-  app_data->dfn = disassembler(native_bfd);
+  app_data->dfn = disassembler(bfd_get_arch(native_bfd),
+                               bfd_big_endian(native_bfd),
+                               bfd_get_mach(native_bfd),
+                               native_bfd);
   app_data->dinfo.print_address_func = hsdis_print_address_func;
   app_data->dinfo.read_memory_func = hsdis_read_memory_func;
 
--- a/src/utils/hsdis/hsdis.h	Thu Jul 26 22:07:25 2018 +0200
+++ b/src/utils/hsdis/hsdis.h	Thu Aug 02 22:07:20 2018 +0200
@@ -15,7 +15,7 @@
  * (a) the Software, and
  *
  * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file
- * if one is included with the Software (each a “Larger Work” to which the
+ * if one is included with the Software (each a "Larger Work" to which the
  * Software is contributed by such licensors),
  *
  * without restriction, including without limitation the rights to copy,
--- a/test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/GatherDiagnosticInfoObserver.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/GatherDiagnosticInfoObserver.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 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
@@ -119,10 +119,10 @@
     public void startingTestRun(Parameters params) {
         // TODO find a better way to get JDKs
         InterviewParameters rp = (InterviewParameters) params;
-        Map<?,?> map = new HashMap<>();
+        Map<String, String> map = new HashMap<>();
         rp.save(map);
-        compileJdk = (String) map.get("regtest.compilejdk");
-        testJdk = (String) map.get("regtest.testjdk");
+        compileJdk = map.get("regtest.compilejdk");
+        testJdk = map.get("regtest.testjdk");
     }
 
     @Override
--- a/test/hotspot/gtest/classfile/test_symbolTable.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/gtest/classfile/test_symbolTable.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -125,7 +125,7 @@
 
     // Find a symbol where there will probably be only one instance.
     for (int i = 0; i < 100; i++) {
-       snprintf(symbol_name, SYM_NAME_LENGTH, "some_symbol%d", i);
+       os::snprintf(symbol_name, SYM_NAME_LENGTH, "some_symbol%d", i);
        TempNewSymbol ts = SymbolTable::new_symbol(symbol_name, CATCH);
        if (ts->refcount() == 1) {
          EXPECT_TRUE(ts->refcount() == 1) << "Symbol is just created";
--- a/test/hotspot/gtest/gc/g1/test_g1HeapVerifier.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/gtest/gc/g1/test_g1HeapVerifier.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -30,9 +30,13 @@
 #include "unittest.hpp"
 
 class G1HeapVerifierTest : public LogTestFixture {
+  protected:
+    static void parse_verification_type(const char* type) {
+      G1Arguments::parse_verification_type(type);
+    }
 };
 
-TEST_F(G1HeapVerifierTest, parse) {
+TEST_VM_F(G1HeapVerifierTest, parse) {
   LogConfiguration::configure_stdout(LogLevel::Off, true, LOG_TAGS(gc, verify));
 
   // Default is to verify everything.
@@ -45,7 +49,7 @@
   ASSERT_TRUE(G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyFull));
 
   // Setting one will disable all other.
-  G1Arguments::parse_verification_type("full");
+  G1HeapVerifierTest::parse_verification_type("full");
   ASSERT_FALSE(G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyAll));
   ASSERT_FALSE(G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyYoungNormal));
   ASSERT_FALSE(G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyConcurrentStart));
@@ -55,23 +59,23 @@
   ASSERT_TRUE(G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyFull));
 
   // Verify case sensitivity.
-  G1Arguments::parse_verification_type("YOUNG-NORMAL");
+  G1HeapVerifierTest::parse_verification_type("YOUNG-NORMAL");
   ASSERT_FALSE(G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyYoungNormal));
-  G1Arguments::parse_verification_type("young-normal");
+  G1HeapVerifierTest::parse_verification_type("young-normal");
   ASSERT_TRUE(G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyYoungNormal));
 
   // Verify perfect match
-  G1Arguments::parse_verification_type("mixedgc");
+  G1HeapVerifierTest::parse_verification_type("mixedgc");
   ASSERT_FALSE(G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyMixed));
-  G1Arguments::parse_verification_type("mixe");
+  G1HeapVerifierTest::parse_verification_type("mixe");
   ASSERT_FALSE(G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyMixed));
-  G1Arguments::parse_verification_type("mixed");
+  G1HeapVerifierTest::parse_verification_type("mixed");
   ASSERT_TRUE(G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyMixed));
 
   // Verify the last three
-  G1Arguments::parse_verification_type("concurrent-start");
-  G1Arguments::parse_verification_type("remark");
-  G1Arguments::parse_verification_type("cleanup");
+  G1HeapVerifierTest::parse_verification_type("concurrent-start");
+  G1HeapVerifierTest::parse_verification_type("remark");
+  G1HeapVerifierTest::parse_verification_type("cleanup");
   ASSERT_TRUE(G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyRemark));
   ASSERT_TRUE(G1HeapVerifier::should_verify(G1HeapVerifier::G1VerifyCleanup));
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/gtest/runtime/test_objectMonitor.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ */
+
+#include "precompiled.hpp"
+#include "runtime/objectMonitor.hpp"
+#include "runtime/vm_version.hpp"
+#include "unittest.hpp"
+
+TEST_VM(ObjectMonitor, sanity) {
+
+ EXPECT_EQ(0, ObjectMonitor::header_offset_in_bytes()) << "Offset for _header must be zero.";
+
+ uint cache_line_size = VM_Version::L1_data_cache_line_size();
+
+ if (cache_line_size != 0) {
+   // We were able to determine the L1 data cache line size so
+   // do some cache line specific sanity checks
+   EXPECT_EQ((size_t) 0, sizeof (PaddedEnd<ObjectMonitor>) % cache_line_size)
+        << "PaddedEnd<ObjectMonitor> size is not a "
+        << "multiple of a cache line which permits false sharing. "
+        << "sizeof(PaddedEnd<ObjectMonitor>) = "
+        << sizeof (PaddedEnd<ObjectMonitor>)
+        << "; cache_line_size = " << cache_line_size;
+
+   EXPECT_GE((size_t) ObjectMonitor::owner_offset_in_bytes(), cache_line_size)
+        << "the _header and _owner fields are closer "
+        << "than a cache line which permits false sharing.";
+  }
+}
--- a/test/hotspot/gtest/runtime/test_os.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/gtest/runtime/test_os.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -236,11 +236,11 @@
   return result;
 }
 
-TEST(os, vsnprintf) {
+TEST_VM(os, vsnprintf) {
   test_snprintf(vsnprintf_wrapper, true);
 }
 
-TEST(os, snprintf) {
+TEST_VM(os, snprintf) {
   test_snprintf(os::snprintf, true);
 }
 
@@ -260,10 +260,10 @@
   return result;
 }
 
-TEST(os, jio_vsnprintf) {
+TEST_VM(os, jio_vsnprintf) {
   test_snprintf(jio_vsnprintf_wrapper, false);
 }
 
-TEST(os, jio_snprintf) {
+TEST_VM(os, jio_snprintf) {
   test_snprintf(jio_snprintf, false);
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/gtest/runtime/test_synchronizer.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ */
+
+#include "precompiled.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/synchronizer.hpp"
+#include "runtime/vm_version.hpp"
+#include "unittest.hpp"
+
+class SynchronizerTest : public ::testing::Test {
+  public:
+    static u_char* get_gvars_addr() { return ObjectSynchronizer::get_gvars_addr(); }
+    static u_char* get_gvars_hcSequence_addr() { return ObjectSynchronizer::get_gvars_hcSequence_addr(); }
+    static size_t get_gvars_size() { return ObjectSynchronizer::get_gvars_size(); }
+    static u_char* get_gvars_stwRandom_addr() { return ObjectSynchronizer::get_gvars_stwRandom_addr(); }
+};
+
+TEST_VM(SynchronizerTest, sanity) {
+  uint cache_line_size = VM_Version::L1_data_cache_line_size();
+  if (cache_line_size != 0) {
+    // We were able to determine the L1 data cache line size so
+    // do some cache line specific sanity checks
+
+    u_char *addr_begin = SynchronizerTest::get_gvars_addr();
+    u_char *addr_stwRandom = SynchronizerTest::get_gvars_stwRandom_addr();
+    u_char *addr_hcSequence = SynchronizerTest::get_gvars_hcSequence_addr();
+    size_t gvars_size = SynchronizerTest::get_gvars_size();
+
+    uint offset_stwRandom = (uint) (addr_stwRandom - addr_begin);
+    uint offset_hcSequence = (uint) (addr_hcSequence - addr_begin);
+    uint offset_hcSequence_stwRandom = offset_hcSequence - offset_stwRandom;
+    uint offset_hcSequence_struct_end = (uint) gvars_size - offset_hcSequence;
+
+    EXPECT_GE(offset_stwRandom, cache_line_size)
+            << "the SharedGlobals.stwRandom field is closer "
+            << "to the struct beginning than a cache line which permits "
+            << "false sharing.";
+
+    EXPECT_GE(offset_hcSequence_stwRandom, cache_line_size)
+            << "the SharedGlobals.stwRandom and "
+            << "SharedGlobals.hcSequence fields are closer than a cache "
+            << "line which permits false sharing.";
+
+    EXPECT_GE(offset_hcSequence_struct_end, cache_line_size)
+            << "the SharedGlobals.hcSequence field is closer "
+            << "to the struct end than a cache line which permits false "
+            << "sharing.";
+  }
+}
--- a/test/hotspot/gtest/utilities/test_spinYield.cpp	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/gtest/utilities/test_spinYield.cpp	Thu Aug 02 22:07:20 2018 +0200
@@ -65,7 +65,7 @@
   check_report(&spinner, "yields = 2");
 }
 
-TEST(SpinYield, one_sleep) {
+TEST_VM(SpinYield, one_sleep) {
   SpinYield spinner(0, 0);
   spinner.wait();
 
@@ -77,7 +77,7 @@
   ASSERT_TRUE(strncmp(expected, buffer, strlen(expected)) == 0);
 }
 
-TEST(SpinYield, one_spin_one_sleep) {
+TEST_VM(SpinYield, one_spin_one_sleep) {
   SpinYield spinner(1, 0);
   spinner.wait();
   spinner.wait();
--- a/test/hotspot/jtreg/ProblemList.txt	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/ProblemList.txt	Thu Aug 02 22:07:20 2018 +0200
@@ -101,6 +101,7 @@
 serviceability/sa/ClhsdbSymbol.java 8193639 solaris
 serviceability/sa/ClhsdbSymbolTable.java 8193639 solaris
 serviceability/sa/ClhsdbThread.java 8193639 solaris
+serviceability/sa/ClhsdbVmStructsDump.java 8193639 solaris
 serviceability/sa/ClhsdbWhere.java 8193639 solaris
 serviceability/sa/DeadlockDetectionTest.java 8193639 solaris
 serviceability/sa/JhsdbThreadInfoTest.java 8193639 solaris
@@ -109,6 +110,7 @@
 serviceability/sa/TestCpoolForInvokeDynamic.java 8193639 solaris
 serviceability/sa/TestDefaultMethods.java 8193639 solaris
 serviceability/sa/TestG1HeapRegion.java 8193639 solaris
+serviceability/sa/TestHeapDumpForInvokeDynamic.java 8193639 solaris
 serviceability/sa/TestRevPtrsForInvokeDynamic.java 8191270 generic-all
 serviceability/sa/TestType.java 8193639 solaris
 serviceability/sa/TestUniverse.java 8193639 solaris
@@ -154,7 +156,6 @@
 
 vmTestbase/nsk/jvmti/ClearBreakpoint/clrbrk001/TestDescription.java 8016181 generic-all
 vmTestbase/nsk/jvmti/FieldModification/fieldmod001/TestDescription.java 8016181 generic-all
-vmTestbase/nsk/jvmti/RedefineClasses/StressRedefineWithoutBytecodeCorruption/TestDescription.java 8202896,8206076,8208074 generic-all
 vmTestbase/nsk/jvmti/ResourceExhausted/resexhausted001/TestDescription.java 7013634 generic-all
 vmTestbase/nsk/jvmti/ResourceExhausted/resexhausted003/TestDescription.java 6606767 generic-all
 vmTestbase/nsk/jvmti/ResourceExhausted/resexhausted004/TestDescription.java 7013634,6606767 generic-all
--- a/test/hotspot/jtreg/gc/TestNUMAPageSize.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/gc/TestNUMAPageSize.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 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
@@ -26,7 +26,7 @@
  * @key gc regression
  * @summary Make sure that start up with NUMA support does not cause problems.
  * @bug 8061467
- * @requires (vm.opt.AggressiveOpts == null) | (vm.opt.AggressiveOpts == false)
+ * @requires vm.opt.AggressiveOpts != true
  * @run main/othervm -Xmx128m -XX:+UseNUMA TestNUMAPageSize
  */
 
--- a/test/hotspot/jtreg/gc/arguments/TestTargetSurvivorRatioFlag.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/gc/arguments/TestTargetSurvivorRatioFlag.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 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
@@ -25,8 +25,8 @@
  * @test TestTargetSurvivorRatioFlag
  * @key gc
  * @summary Verify that option TargetSurvivorRatio affects survivor space occupancy after minor GC.
- * @requires (vm.opt.ExplicitGCInvokesConcurrent == null) | (vm.opt.ExplicitGCInvokesConcurrent == false)
- * @requires (vm.opt.UseJVMCICompiler == null) | (vm.opt.UseJVMCICompiler == false)
+ * @requires vm.opt.ExplicitGCInvokesConcurrent != true
+ * @requires vm.opt.UseJVMCICompiler != true
  * @requires vm.gc != "Z"
  * @library /test/lib
  * @modules java.base/jdk.internal.misc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/gc/epsilon/CriticalNativeArgs.java	Thu Aug 02 22:07:20 2018 +0200
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2018, Red Hat, Inc. and/or its affiliates.
+ *
+ * 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 CriticalNativeStress
+ * @key gc
+ * @bug 8199868
+ * @requires (os.arch =="x86_64" | os.arch == "amd64") & (vm.bits == "64") & vm.gc.Epsilon & !vm.graal.enabled
+ * @summary test argument unpacking nmethod wrapper of critical native method
+ * @run main/othervm/native -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -Xcomp -Xmx256M -XX:+CriticalJNINatives CriticalNativeArgs
+ */
+public class CriticalNativeArgs {
+  static {
+    System.loadLibrary("CriticalNative");
+  }
+
+  static native boolean isNull(int[] a);
+
+  public static void main(String[] args) {
+    int[] arr = new int[2];
+
+    if (isNull(arr)) {
+      throw new RuntimeException("Should not be null");
+    }
+
+    if (!isNull(null)) {
+      throw new RuntimeException("Should be null");
+    }
+  }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/gc/epsilon/CriticalNativeStress.java	Thu Aug 02 22:07:20 2018 +0200
@@ -0,0 +1,197 @@
+/*
+ * Copyright (c) 2018, Red Hat, Inc. and/or its affiliates.
+ *
+ * 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.util.Random;
+
+/*
+ * @test CriticalNativeStress
+ * @key gc
+ * @bug 8199868
+ * @requires (os.arch =="x86_64" | os.arch == "amd64") & (vm.bits == "64") & vm.gc.Epsilon & !vm.graal.enabled
+ * @summary test argument pinning by nmethod wrapper of critical native method
+ * @run main/othervm/native -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -Xcomp -Xmx1G -XX:+CriticalJNINatives CriticalNativeStress
+ */
+public class CriticalNativeStress {
+  private static Random rand = new Random();
+  static {
+    System.loadLibrary("CriticalNative");
+  }
+
+  // CYCLES and THREAD_PER_CASE are used to tune the tests for different GC settings,
+  // so that they can execrise enough GC cycles and not OOM
+  private static int CYCLES = Integer.getInteger("cycles", 3);
+  private static int THREAD_PER_CASE = Integer.getInteger("threadPerCase", 1);
+
+  static native long sum1(long[] a);
+
+  // More than 6 parameters
+  static native long sum2(long a1, int[] a2, int[] a3, long[] a4, int[] a5);
+
+  static long sum(long[] a) {
+    long sum = 0;
+    for (int index = 0; index < a.length; index ++) {
+      sum += a[index];
+    }
+    return sum;
+  }
+
+  static long sum(int[] a) {
+    long sum = 0;
+    for (int index = 0; index < a.length; index ++) {
+      sum += a[index];
+    }
+    return sum;
+  }
+
+  private static volatile String garbage_array[];
+
+  // GC potentially moves arrays passed to critical native methods
+  // if they are not pinned correctly.
+  // Create enough garbages to exercise GC cycles, verify
+  // the arrays are pinned correctly.
+  static void create_garbage(int len) {
+    len = Math.max(len, 1024);
+    String array[] = new String[len];
+    for (int index = 0; index < len; index ++) {
+      array[index] = "String " + index;
+    }
+    garbage_array = array;
+  }
+
+  // Two test cases with different method signatures:
+  // Tests generate arbitrary length of arrays with
+  // arbitrary values, then calcuate sum of the array
+  // elements with critical native JNI methods and java
+  // methods, and compare the results for correctness.
+  static void run_test_case1() {
+    // Create testing arary with arbitrary length and
+    // values
+    int length = rand.nextInt(50) + 1;
+    long[] arr = new long[length];
+    for (int index = 0; index < length; index ++) {
+      arr[index] = rand.nextLong() % 1002;
+    }
+
+    // Generate garbages to trigger GCs
+    for (int index = 0; index < length; index ++) {
+      create_garbage(index);
+    }
+
+    // Compare results for correctness.
+    long native_sum = sum1(arr);
+    long java_sum = sum(arr);
+    if (native_sum != java_sum) {
+      StringBuffer sb = new StringBuffer("Sums do not match: native = ")
+        .append(native_sum).append(" java = ").append(java_sum);
+
+      throw new RuntimeException(sb.toString());
+    }
+  }
+
+  static void run_test_case2() {
+    // Create testing arary with arbitrary length and
+    // values
+    int index;
+    long a1 = rand.nextLong() % 1025;
+
+    int a2_length = rand.nextInt(50) + 1;
+    int[] a2 = new int[a2_length];
+    for (index = 0; index < a2_length; index ++) {
+      a2[index] = rand.nextInt(106);
+    }
+
+    int a3_length = rand.nextInt(150) + 1;
+    int[] a3 = new int[a3_length];
+    for (index = 0; index < a3_length; index ++) {
+      a3[index] = rand.nextInt(3333);
+    }
+
+    int a4_length = rand.nextInt(200) + 1;
+    long[] a4 = new long[a4_length];
+    for (index = 0; index < a4_length; index ++) {
+      a4[index] = rand.nextLong() % 122;
+    }
+
+    int a5_length = rand.nextInt(350) + 1;
+    int[] a5 = new int[a5_length];
+    for (index = 0; index < a5_length; index ++) {
+      a5[index] = rand.nextInt(333);
+    }
+
+    // Generate garbages to trigger GCs
+    for (index = 0; index < a1; index ++) {
+      create_garbage(index);
+    }
+
+    // Compare results for correctness.
+    long native_sum = sum2(a1, a2, a3, a4, a5);
+    long java_sum = a1 + sum(a2) + sum(a3) + sum(a4) + sum(a5);
+    if (native_sum != java_sum) {
+      StringBuffer sb = new StringBuffer("Sums do not match: native = ")
+        .append(native_sum).append(" java = ").append(java_sum);
+
+      throw new RuntimeException(sb.toString());
+    }
+  }
+
+  static class Case1Runner extends Thread {
+    public Case1Runner() {
+      start();
+    }
+
+    public void run() {
+      for (int index = 0; index < CYCLES; index ++) {
+        run_test_case1();
+      }
+    }
+  }
+
+  static class Case2Runner extends Thread {
+    public Case2Runner() {
+      start();
+    }
+
+    public void run() {
+      for (int index = 0; index < CYCLES; index ++) {
+        run_test_case2();
+      }
+    }
+  }
+
+  public static void main(String[] args) {
+    Thread[] thrs = new Thread[THREAD_PER_CASE * 2];
+    for (int index = 0; index < thrs.length; index = index + 2) {
+      thrs[index] = new Case1Runner();
+      thrs[index + 1] = new Case2Runner();
+    }
+
+    for (int index = 0; index < thrs.length; index ++) {
+      try {
+        thrs[index].join();
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+    }
+  }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/gc/epsilon/libCriticalNative.c	Thu Aug 02 22:07:20 2018 +0200
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2018, Red Hat, Inc. and/or its affiliates.
+ *
+ * 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.
+ *
+ */
+
+#include "jni.h"
+
+JNIEXPORT jlong JNICALL JavaCritical_CriticalNativeStress_sum1
+  (jint length, jlong* a) {
+  jlong sum = 0;
+  jint index;
+  for (index = 0; index < length; index ++) {
+    sum += a[index];
+  }
+
+  return sum;
+}
+
+JNIEXPORT jlong JNICALL  JavaCritical_CriticalNativeStress_sum2
+  (jlong a1, jint a2_length, jint* a2, jint a4_length, jint* a4, jint a6_length, jlong* a6, jint a8_length, jint* a8) {
+  jlong sum = a1;
+  jint index;
+  for (index = 0; index < a2_length; index ++) {
+    sum += a2[index];
+  }
+
+  for (index = 0; index < a4_length; index ++) {
+    sum += a4[index];
+  }
+
+  for (index = 0; index < a6_length; index ++) {
+    sum += a6[index];
+  }
+
+  for (index = 0; index < a8_length; index ++) {
+    sum += a8[index];
+  }
+  return sum;
+}
+
+JNIEXPORT jlong JNICALL Java_CriticalNativeStress_sum1
+  (JNIEnv *env, jclass jclazz, jlongArray a) {
+  jlong sum = 0;
+  jsize len = (*env)->GetArrayLength(env, a);
+  jsize index;
+  jlong* arr = (jlong*)(*env)->GetPrimitiveArrayCritical(env, a, 0);
+  for (index = 0; index < len; index ++) {
+    sum += arr[index];
+  }
+
+  (*env)->ReleasePrimitiveArrayCritical(env, a, arr, 0);
+  return sum;
+}
+
+JNIEXPORT jlong JNICALL Java_CriticalNativeStress_sum2
+  (JNIEnv *env, jclass jclazz, jlong a1, jintArray a2, jintArray a3, jlongArray a4, jintArray a5) {
+  jlong sum = a1;
+  jsize index;
+  jsize len;
+  jint* a2_arr;
+  jint* a3_arr;
+  jlong* a4_arr;
+  jint* a5_arr;
+
+  len = (*env)->GetArrayLength(env, a2);
+  a2_arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a2, 0);
+  for (index = 0; index < len; index ++) {
+    sum += a2_arr[index];
+  }
+  (*env)->ReleasePrimitiveArrayCritical(env, a2, a2_arr, 0);
+
+  len = (*env)->GetArrayLength(env, a3);
+  a3_arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a3, 0);
+  for (index = 0; index < len; index ++) {
+    sum += a3_arr[index];
+  }
+  (*env)->ReleasePrimitiveArrayCritical(env, a3, a3_arr, 0);
+
+  len = (*env)->GetArrayLength(env, a4);
+  a4_arr = (jlong*)(*env)->GetPrimitiveArrayCritical(env, a4, 0);
+  for (index = 0; index < len; index ++) {
+    sum += a4_arr[index];
+  }
+  (*env)->ReleasePrimitiveArrayCritical(env, a4, a4_arr, 0);
+
+  len = (*env)->GetArrayLength(env, a5);
+  a5_arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a5, 0);
+  for (index = 0; index < len; index ++) {
+    sum += a5_arr[index];
+  }
+  (*env)->ReleasePrimitiveArrayCritical(env, a5, a5_arr, 0);
+
+  return sum;
+}
+
+
+JNIEXPORT jboolean JNICALL JavaCritical_CriticalNativeArgs_isNull
+  (jint length, jint* a) {
+  return (a == NULL) && (length == 0);
+}
+
+JNIEXPORT jboolean JNICALL Java_CriticalNativeArgs_isNull
+  (JNIEnv *env, jclass jclazz, jintArray a) {
+  jboolean is_null;
+  jsize len = (*env)->GetArrayLength(env, a);
+  jint* arr = (jint*)(*env)->GetPrimitiveArrayCritical(env, a, 0);
+  is_null = (arr == NULL) && (len == 0);
+  (*env)->ReleasePrimitiveArrayCritical(env, a, arr, 0);
+  return is_null;
+}
+
--- a/test/hotspot/jtreg/gc/g1/TestHumongousCodeCacheRoots.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/gc/g1/TestHumongousCodeCacheRoots.java	Thu Aug 02 22:07:20 2018 +0200
@@ -119,26 +119,10 @@
 
     ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(finalargs.toArray(new String[0]));
     OutputAnalyzer output = new OutputAnalyzer(pb.start());
-    try {
-        output.shouldHaveExitValue(0);
-    } catch (RuntimeException e) {
-        // It's ok if there is no client vm in the jdk.
-        if (output.firstMatch("Unrecognized option: -client") == null) {
-            throw e;
-        }
-    }
-
+    output.shouldHaveExitValue(0);
     return output;
   }
 
-  public static void runTest(String compiler, String[] other) throws Exception {
-    ArrayList<String> joined = new ArrayList<String>();
-    joined.add(compiler);
-    joined.addAll(Arrays.asList(other));
-    runWhiteBoxTest(joined.toArray(new String[0]), TestHumongousCodeCacheRootsHelper.class.getName(),
-      new String[] {}, false);
-  }
-
   public static void main(String[] args) throws Exception {
     final String[] baseArguments = new String[] {
       "-XX:+UseG1GC", "-XX:G1HeapRegionSize=1M", "-Xmx100M", // make sure we get a humongous region
@@ -146,8 +130,9 @@
       "-XX:InitiatingHeapOccupancyPercent=1", // strong code root marking
       "-XX:+G1VerifyHeapRegionCodeRoots", "-XX:+VerifyAfterGC", // make sure that verification is run
     };
-    runTest("-client", baseArguments);
-    runTest("-server", baseArguments);
+
+    runWhiteBoxTest(baseArguments, TestHumongousCodeCacheRootsHelper.class.getName(),
+      new String[] {}, false);
   }
 }
 
--- a/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData00.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData00.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 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,7 +27,7 @@
  * @summary Checks that decommitment occurs for JVM with different
  * G1ConcRSLogCacheSize and ObjectAlignmentInBytes options values
  * @requires vm.gc.G1
- * @requires vm.opt.AggressiveOpts=="false" | vm.opt.AggressiveOpts=="null"
+ * @requires vm.opt.AggressiveOpts != true
  * @library /test/lib
  * @modules java.base/jdk.internal.misc
  *          java.management
--- a/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData05.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData05.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 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,7 +27,7 @@
  * @summary Checks that decommitment occurs for JVM with different
  * G1ConcRSLogCacheSize and ObjectAlignmentInBytes options values
  * @requires vm.gc.G1
- * @requires vm.opt.AggressiveOpts=="false" | vm.opt.AggressiveOpts=="null"
+ * @requires vm.opt.AggressiveOpts != true
  * @library /test/lib
  * @modules java.base/jdk.internal.misc
  *          java.management
--- a/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData10.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData10.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 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,7 +27,7 @@
  * @summary Checks that decommitment occurs for JVM with different
  * G1ConcRSLogCacheSize and ObjectAlignmentInBytes options values
  * @requires vm.gc.G1
- * @requires vm.opt.AggressiveOpts=="false" | vm.opt.AggressiveOpts=="null"
+ * @requires vm.opt.AggressiveOpts != true
  * @library /test/lib
  * @modules java.base/jdk.internal.misc
  *          java.management
--- a/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData15.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData15.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 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,7 +27,7 @@
  * @summary Checks that decommitment occurs for JVM with different
  * G1ConcRSLogCacheSize and ObjectAlignmentInBytes options values
  * @requires vm.gc.G1
- * @requires vm.opt.AggressiveOpts=="false" | vm.opt.AggressiveOpts=="null"
+ * @requires vm.opt.AggressiveOpts != true
  * @library /test/lib
  * @modules java.base/jdk.internal.misc
  *          java.management
--- a/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData20.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData20.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 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,7 +27,7 @@
  * @summary Checks that decommitment occurs for JVM with different
  * G1ConcRSLogCacheSize and ObjectAlignmentInBytes options values
  * @requires vm.gc.G1
- * @requires vm.opt.AggressiveOpts=="false" | vm.opt.AggressiveOpts=="null"
+ * @requires vm.opt.AggressiveOpts != true
  * @library /test/lib
  * @modules java.base/jdk.internal.misc
   *          java.management
--- a/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData25.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData25.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 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,7 +27,7 @@
  * @summary Checks that decommitment occurs for JVM with different
  * G1ConcRSLogCacheSize and ObjectAlignmentInBytes options values
  * @requires vm.gc.G1
- * @requires vm.opt.AggressiveOpts=="false" | vm.opt.AggressiveOpts=="null"
+ * @requires vm.opt.AggressiveOpts != true
  * @library /test/lib
  * @modules java.base/jdk.internal.misc
  *          java.management
--- a/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData30.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/gc/g1/TestShrinkAuxiliaryData30.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 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,7 +27,7 @@
  * @summary Checks that decommitment occurs for JVM with different
  * G1ConcRSLogCacheSize and ObjectAlignmentInBytes options values
  * @requires vm.gc.G1
- * @requires vm.opt.AggressiveOpts=="false" | vm.opt.AggressiveOpts=="null"
+ * @requires vm.opt.AggressiveOpts != true
  * @library /test/lib
  * @modules java.base/jdk.internal.misc
  *          java.management
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/NMT/SafepointPollingPages.java	Thu Aug 02 22:07:20 2018 +0200
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 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
+ * 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 8208499
+ * @summary NMT should report safepoint polling page(s)
+ * @key nmt jcmd
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @run main/othervm -Xbootclasspath/a:. -XX:NativeMemoryTracking=summary -XX:+ThreadLocalHandshakes SafepointPollingPages
+ * @run main/othervm -Xbootclasspath/a:. -XX:NativeMemoryTracking=summary -XX:-ThreadLocalHandshakes SafepointPollingPages
+ */
+
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.JDKToolFinder;
+import jdk.internal.misc.Unsafe;
+
+public class SafepointPollingPages {
+  public static void main(String args[]) throws Exception {
+    OutputAnalyzer output;
+
+    // Grab my own PID
+    String pid = Long.toString(ProcessTools.getProcessId());
+    ProcessBuilder pb = new ProcessBuilder();
+
+    // Run 'jcmd <pid> VM.native_memory summary'
+    pb.command(new String[] { JDKToolFinder.getJDKTool("jcmd"), pid, "VM.native_memory", "summary"});
+    output = new OutputAnalyzer(pb.start());
+    output.shouldContain("Safepoint (reserved=");
+  }
+}
+
--- a/test/hotspot/jtreg/runtime/ReservedStack/ReservedStackTest.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/runtime/ReservedStack/ReservedStackTest.java	Thu Aug 02 22:07:20 2018 +0200
@@ -24,7 +24,7 @@
 /*
  * @test ReservedStackTest
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @library /test/lib
  * @modules java.base/jdk.internal.misc
  * @modules java.base/jdk.internal.vm.annotation
--- a/test/hotspot/jtreg/runtime/ReservedStack/ReservedStackTestCompiler.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/runtime/ReservedStack/ReservedStackTestCompiler.java	Thu Aug 02 22:07:20 2018 +0200
@@ -26,7 +26,7 @@
  * @summary Run ReservedStackTest with dedicated compilers C1 and C2.
  *
  * @requires vm.flavor == "server" & !vm.emulatedClient
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @library /test/lib
  * @modules java.base/jdk.internal.misc
  * @modules java.base/jdk.internal.vm.annotation
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/ExerciseGC.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/ExerciseGC.java	Thu Aug 02 22:07:20 2018 +0200
@@ -33,6 +33,8 @@
  * @build HelloStringGC sun.hotspot.WhiteBox
  * @run driver ClassFileInstaller sun.hotspot.WhiteBox
  * @run main ExerciseGC
+ * @run main/othervm -XX:+UseStringDeduplication ExerciseGC
+ * @run main/othervm -XX:-CompactStrings ExerciseGC
  */
 public class ExerciseGC {
     public static void main(String[] args) throws Exception {
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/IncompatibleOptions.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/IncompatibleOptions.java	Thu Aug 02 22:07:20 2018 +0200
@@ -36,6 +36,8 @@
  * @run driver ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.WhiteBox$WhiteBoxPermission
  * @build HelloString
  * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions
+ * @run main/othervm -XX:+UseStringDeduplication -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions
+ * @run main/othervm -XX:-CompactStrings -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. IncompatibleOptions
  */
 
 import jdk.test.lib.Asserts;
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/InternSharedString.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/InternSharedString.java	Thu Aug 02 22:07:20 2018 +0200
@@ -34,6 +34,8 @@
  * @build sun.hotspot.WhiteBox
  * @run driver ClassFileInstaller sun.hotspot.WhiteBox
  * @run main InternSharedString
+ * @run main/othervm -XX:+UseStringDeduplication InternSharedString
+ * @run main/othervm -XX:-CompactStrings InternSharedString
  */
 
 public class InternSharedString {
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/InvalidFileFormat.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/InvalidFileFormat.java	Thu Aug 02 22:07:20 2018 +0200
@@ -32,6 +32,8 @@
  *          jdk.jartool/sun.tools.jar
  * @build HelloString
  * @run main InvalidFileFormat
+ * @run main/othervm -XX:+UseStringDeduplication InvalidFileFormat
+ * @run main/othervm -XX:-CompactStrings InvalidFileFormat
  */
 
 import jdk.test.lib.process.OutputAnalyzer;
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/LargePages.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/LargePages.java	Thu Aug 02 22:07:20 2018 +0200
@@ -32,6 +32,8 @@
  *          jdk.jartool/sun.tools.jar
  * @build HelloString
  * @run main LargePages
+ * @run main/othervm -XX:+UseStringDeduplication LargePages
+ * @run main/othervm -XX:-CompactStrings LargePages
  */
 public class LargePages {
     public static void main(String[] args) throws Exception {
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/LockSharedStrings.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/LockSharedStrings.java	Thu Aug 02 22:07:20 2018 +0200
@@ -34,6 +34,8 @@
  * @build sun.hotspot.WhiteBox
  * @run driver ClassFileInstaller sun.hotspot.WhiteBox
  * @run main LockSharedStrings
+ * @run main/othervm -XX:+UseStringDeduplication LockSharedStrings
+ * @run main/othervm -XX:-CompactStrings LockSharedStrings
  */
 
 public class LockSharedStrings {
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasic.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasic.java	Thu Aug 02 22:07:20 2018 +0200
@@ -32,6 +32,8 @@
  *          jdk.jartool/sun.tools.jar
  * @build HelloString
  * @run main SharedStringsBasic
+ * @run main/othervm -XX:+UseStringDeduplication SharedStringsBasic
+ * @run main/othervm -XX:-CompactStrings SharedStringsBasic
  */
 import jdk.test.lib.process.OutputAnalyzer;
 import jdk.test.lib.process.ProcessTools;
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasicPlus.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasicPlus.java	Thu Aug 02 22:07:20 2018 +0200
@@ -33,6 +33,8 @@
  * @build HelloStringPlus sun.hotspot.WhiteBox
  * @run driver ClassFileInstaller sun.hotspot.WhiteBox
  * @run main SharedStringsBasicPlus
+ * @run main/othervm -XX:+UseStringDeduplication SharedStringsBasicPlus
+ * @run main/othervm -XX:-CompactStrings SharedStringsBasicPlus
  */
 
 public class SharedStringsBasicPlus {
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsStress.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsStress.java	Thu Aug 02 22:07:20 2018 +0200
@@ -30,6 +30,8 @@
  * @modules jdk.jartool/sun.tools.jar
  * @build HelloString
  * @run main SharedStringsStress
+ * @run main/othervm -XX:+UseStringDeduplication SharedStringsStress
+ * @run main/othervm -XX:-CompactStrings SharedStringsStress
  */
 import java.io.File;
 import java.io.FileOutputStream;
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsWbTest.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsWbTest.java	Thu Aug 02 22:07:20 2018 +0200
@@ -33,6 +33,8 @@
  * @build sun.hotspot.WhiteBox SharedStringsWb
  * @run driver ClassFileInstaller sun.hotspot.WhiteBox
  * @run main SharedStringsWbTest
+ * @run main/othervm -XX:+UseStringDeduplication SharedStringsWbTest
+ * @run main/othervm -XX:-CompactStrings SharedStringsWbTest
  */
 
 import java.io.*;
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SysDictCrash.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/SysDictCrash.java	Thu Aug 02 22:07:20 2018 +0200
@@ -32,6 +32,8 @@
  * @modules java.base/jdk.internal.misc
  * @modules java.management
  * @run main SysDictCrash
+ * @run main/othervm -XX:+UseStringDeduplication SysDictCrash
+ * @run main/othervm -XX:-CompactStrings SysDictCrash
  */
 
 import jdk.test.lib.process.OutputAnalyzer;
--- a/test/hotspot/jtreg/serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitorGCTest.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitorGCTest.java	Thu Aug 02 22:07:20 2018 +0200
@@ -43,13 +43,17 @@
       throw new RuntimeException("Statistics should be null to begin with.");
     }
 
+    // Put sampling rate to 100k to ensure samples are collected.
+    HeapMonitor.setSamplingInterval(100 * 1024);
+
     HeapMonitor.enableSamplingEvents();
 
     List<Frame> frameList = HeapMonitor.allocate();
-    frameList.add(new Frame("main", "([Ljava/lang/String;)V", "HeapMonitorGCTest.java", 48));
+    frameList.add(new Frame("main", "([Ljava/lang/String;)V", "HeapMonitorGCTest.java", 51));
     Frame[] frames = frameList.toArray(new Frame[0]);
 
-    if (!HeapMonitor.obtainedEvents(frames)) {
+    if (!HeapMonitor.obtainedEvents(frames)
+        && !HeapMonitor.garbageContains(frames)) {
       throw new RuntimeException("No expected events were found.");
     }
 
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_anonclassloader_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_anonclassloader_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -48,13 +48,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_anonclassloader_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_anonclassloader_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -48,13 +48,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_anonclassloader_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_anonclassloader_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -48,13 +48,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_anonclassloader_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_anonclassloader_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -48,13 +48,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level1_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level1_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level1_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level1_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level1_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level1_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level1_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level1_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level1_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level1_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level1_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level1_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level2_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level2_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level2_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level2_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level2_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level2_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level2_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level2_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level2_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level2_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level2_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level2_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level3_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level3_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level3_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level3_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level3_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level3_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level3_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level3_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level3_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level3_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level3_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level3_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level4_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level4_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level4_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level4_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level4_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level4_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level4_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level4_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level4_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level4_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level4_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_compilation_level4_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_humongous_class_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_humongous_class_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_humongous_class_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_humongous_class_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_humongous_class_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_humongous_class_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_humongous_class_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_humongous_class_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_humongous_class_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_humongous_class_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_humongous_class_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_humongous_class_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_jni_classloading_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_jni_classloading_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_jni_classloading_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_jni_classloading_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_jni_classloading_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_jni_classloading_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_jni_classloading_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_jni_classloading_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_jni_classloading_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_jni_classloading_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_jni_classloading_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_jni_classloading_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_global_ref_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_global_ref_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_global_ref_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_global_ref_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_global_ref_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_global_ref_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_global_ref_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_global_ref_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_global_ref_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_global_ref_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_global_ref_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_global_ref_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_local_ref_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_local_ref_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_local_ref_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_local_ref_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_local_ref_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_local_ref_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_local_ref_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_local_ref_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_local_ref_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_local_ref_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_local_ref_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_jni_local_ref_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_rootClass_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_rootClass_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -52,13 +52,6 @@
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
  *      -Xbootclasspath/a:classPool.jar
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_rootClass_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_rootClass_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -52,13 +52,6 @@
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
  *      -Xbootclasspath/a:classPool.jar
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_rootClass_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_rootClass_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -52,13 +52,6 @@
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
  *      -Xbootclasspath/a:classPool.jar
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_rootClass_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_rootClass_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -52,13 +52,6 @@
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
  *      -Xbootclasspath/a:classPool.jar
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_rootClass_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_rootClass_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -52,13 +52,6 @@
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
  *      -Xbootclasspath/a:classPool.jar
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_rootClass_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_rootClass_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -52,13 +52,6 @@
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
  *      -Xbootclasspath/a:classPool.jar
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_stackLocal_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_stackLocal_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_stackLocal_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_stackLocal_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_stackLocal_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_stackLocal_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_stackLocal_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_stackLocal_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_stackLocal_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_stackLocal_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_stackLocal_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_stackLocal_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_staticField_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_staticField_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_staticField_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_staticField_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_staticField_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_staticField_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_staticField_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_staticField_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_staticField_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_staticField_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_staticField_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_staticField_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_strongRef_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_strongRef_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_strongRef_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_strongRef_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_strongRef_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_strongRef_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_strongRef_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_strongRef_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_strongRef_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_strongRef_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_strongRef_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_strongRef_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_threadItself_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_threadItself_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_threadItself_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_threadItself_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_threadItself_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_threadItself_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_threadItself_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_threadItself_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_threadItself_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_threadItself_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_threadItself_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_keepRef_threadItself_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_phantom_ref_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_phantom_ref_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_phantom_ref_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_phantom_ref_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_phantom_ref_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_phantom_ref_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_phantom_ref_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_phantom_ref_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_phantom_ref_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_phantom_ref_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_phantom_ref_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_phantom_ref_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_prot_domains_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_prot_domains_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_prot_domains_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_prot_domains_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_prot_domains_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_prot_domains_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_prot_domains_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_prot_domains_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_prot_domains_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_prot_domains_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_prot_domains_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_prot_domains_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_redefinition_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_redefinition_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_redefinition_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_redefinition_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_redefinition_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_redefinition_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_redefinition_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_redefinition_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_redefinition_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_redefinition_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_redefinition_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_redefinition_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_reflection_classloading_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_reflection_classloading_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_reflection_classloading_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_reflection_classloading_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_reflection_classloading_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_reflection_classloading_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_reflection_classloading_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_reflection_classloading_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_reflection_classloading_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_reflection_classloading_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_reflection_classloading_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_reflection_classloading_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_weak_ref_inMemoryCompilation_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_weak_ref_inMemoryCompilation_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_weak_ref_inMemoryCompilation_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_weak_ref_inMemoryCompilation_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_weak_ref_inMemoryCompilation_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_weak_ref_inMemoryCompilation_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_weak_ref_keep_cl/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_weak_ref_keep_cl/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_weak_ref_keep_class/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_weak_ref_keep_class/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_weak_ref_keep_obj/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/gc/g1/unloading/tests/unloading_weak_ref_keep_obj/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,13 +47,6 @@
  *      -XX:+WhiteBoxAPI
  *      -XX:+UseG1GC
  *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xbootclasspath/a:.
- *      -XX:+UnlockDiagnosticVMOptions
- *      -XX:+WhiteBoxAPI
- *      -XX:+UseG1GC
- *      -XX:+ExplicitGCInvokesConcurrent
- *      -Xlog:gc:gc.log
- *      -XX:-UseGCOverheadLimit
  *      -Xlog:gc:gc.log
  *      -XX:-UseGCOverheadLimit
  *      gc.g1.unloading.UnloadingTest
--- a/test/hotspot/jtreg/vmTestbase/nsk/jvmti/RedefineClasses/StressRedefine.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jvmti/RedefineClasses/StressRedefine.java	Thu Aug 02 22:07:20 2018 +0200
@@ -114,8 +114,8 @@
             try {
                 // Just for fun we transfer parameters to method
                 Object res = myClass.getMethod(name, double.class, int.class, Object.class)
-                                         .invoke(null, random.nextDouble(), random.nextInt(), new Object());
-             } catch (IllegalArgumentException | InvocationTargetException
+                                         .invoke(myClass.newInstance(), random.nextDouble(), random.nextInt(), new Object());
+             } catch (IllegalArgumentException | InvocationTargetException | InstantiationException
                      | IllegalAccessException | NoSuchMethodException e) {
                  // It's okay to get exception here since we are corrupting bytecode and can't expect
                  // class to work properly.
--- a/test/hotspot/jtreg/vmTestbase/nsk/jvmti/ResourceExhausted/resexhausted003/TestDescription.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jvmti/ResourceExhausted/resexhausted003/TestDescription.java	Thu Aug 02 22:07:20 2018 +0200
@@ -42,9 +42,9 @@
  *      -agentlib:resexhausted=-waittime=5
  *      -Xms64m
  *      -Xmx64m
- *      -XX:MaxMetaspaceSize=8m
+ *      -XX:MaxMetaspaceSize=9m
  *      -XX:-UseGCOverheadLimit
  *      nsk.jvmti.ResourceExhausted.resexhausted003
- *      ./bin/classes
+ *      ../../classes/0/vmTestbase
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack001.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack001.java	Thu Aug 02 22:07:20 2018 +0200
@@ -51,7 +51,7 @@
  *     4254634     println() while catching StackOverflowError causes hotspot VM crash
  *     4302288 the second stack overflow causes Classic VM to exit on win32
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack001
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack002.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack002.java	Thu Aug 02 22:07:20 2018 +0200
@@ -52,7 +52,7 @@
  *     4254634     println() while catching StackOverflowError causes hotspot VM crash
  *     4302288 the second stack overflow causes Classic VM to exit on win32
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack002
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack003.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack003.java	Thu Aug 02 22:07:20 2018 +0200
@@ -46,7 +46,7 @@
  *     See the bug:
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack003
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack004.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack004.java	Thu Aug 02 22:07:20 2018 +0200
@@ -46,7 +46,7 @@
  *     See the bug:
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack004
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack005.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack005.java	Thu Aug 02 22:07:20 2018 +0200
@@ -46,7 +46,7 @@
  *     See the bug:
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack005
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack006.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack006.java	Thu Aug 02 22:07:20 2018 +0200
@@ -46,7 +46,7 @@
  *     See the bug:
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack006
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack007.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack007.java	Thu Aug 02 22:07:20 2018 +0200
@@ -45,7 +45,7 @@
  *     See also the bug:
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack007
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack008.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack008.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,7 +47,7 @@
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
  * @ignore 8139875
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack008
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack009.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack009.java	Thu Aug 02 22:07:20 2018 +0200
@@ -46,7 +46,7 @@
  *     See the bug:
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack009
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack010.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack010.java	Thu Aug 02 22:07:20 2018 +0200
@@ -46,7 +46,7 @@
  *     See the bug:
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack010
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack011.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack011.java	Thu Aug 02 22:07:20 2018 +0200
@@ -46,7 +46,7 @@
  *     See the bug:
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack011
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack012.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack012.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,7 +47,7 @@
  *     See the bug:
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack012
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack013.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack013.java	Thu Aug 02 22:07:20 2018 +0200
@@ -46,7 +46,7 @@
  *     See the bug:
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack013
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack014.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack014.java	Thu Aug 02 22:07:20 2018 +0200
@@ -49,7 +49,7 @@
  *     See the bug:
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack014
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack015.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack015.java	Thu Aug 02 22:07:20 2018 +0200
@@ -47,7 +47,7 @@
  *     See the bug:
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack015
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack016.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack016.java	Thu Aug 02 22:07:20 2018 +0200
@@ -50,7 +50,7 @@
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
  * @ignore 8139875
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack016 -eager
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack017.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack017.java	Thu Aug 02 22:07:20 2018 +0200
@@ -43,7 +43,7 @@
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
  * @ignore 8139875
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack017 -eager
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack018.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack018.java	Thu Aug 02 22:07:20 2018 +0200
@@ -48,7 +48,7 @@
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
  * @ignore 8139875
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack018 -eager
  */
 
--- a/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack019.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/stack/stack019.java	Thu Aug 02 22:07:20 2018 +0200
@@ -41,7 +41,7 @@
  *     4366625 (P4/S4) multiple stack overflow causes HS crash
  *
  * @ignore 8139875
- * @requires vm.opt.DeoptimizeALot == null | vm.opt.DeoptimizeALot == false
+ * @requires vm.opt.DeoptimizeALot != true
  * @run main/othervm nsk.stress.stack.stack019 -eager
  */
 
--- a/test/hotspot/jtreg/vmTestbase/vm/share/gc/TriggerUnloadingByFillingMetaspace.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/hotspot/jtreg/vmTestbase/vm/share/gc/TriggerUnloadingByFillingMetaspace.java	Thu Aug 02 22:07:20 2018 +0200
@@ -39,7 +39,13 @@
     private static class FillMetaspace {
         private volatile boolean gotOOME = false;
         private ExecutionController stresser;
-        private GeneratedClassProducer generatedClassProducer = new GeneratedClassProducer("metaspace.stressHierarchy.common.HumongousClass");
+        private final ThreadLocal<GeneratedClassProducer> generatedClassProducer =
+            new ThreadLocal<GeneratedClassProducer>() {
+              @Override
+              protected GeneratedClassProducer initialValue() {
+                return new GeneratedClassProducer("metaspace.stressHierarchy.common.HumongousClass");
+              }
+            };
 
         public FillMetaspace(ExecutionController stresser) { this.stresser = stresser; }
 
@@ -48,7 +54,7 @@
             public Object call() throws Exception {
                 while (stresser.continueExecution() && ! gotOOME) {
                     try {
-                        generatedClassProducer.create(-100500); //argument is not used.
+                        generatedClassProducer.get().create(-100500); //argument is not used.
                     } catch (OutOfMemoryError oome) {
                         if (!isInMetaspace(oome)) {
                             throw new GotWrongOOMEException("Got OOME in heap while gaining OOME in metaspace. Test result can't be valid.");
--- a/test/jdk/java/lang/Package/PackageFromManifest.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/jdk/java/lang/Package/PackageFromManifest.java	Thu Aug 02 22:07:20 2018 +0200
@@ -29,6 +29,7 @@
  *          same package if multiple jars). Then verify package versioning info
  * @library /lib/testlibrary
  * @library /test/lib
+ * @modules jdk.compiler
  * @run main PackageFromManifest setup test
  * @run main PackageFromManifest runJar test1.jar
  * @run main PackageFromManifest runJar test1.jar test2.jar foo.Foo1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/util/Locale/bcp47u/spi/DateFormatSymbolsProviderTests.java	Thu Aug 02 22:07:20 2018 +0200
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 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
+ * 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 8208080
+ * @summary Tests DateFormatSymbols provider implementations
+ * @library provider
+ * @build provider/module-info provider/foo.DateFormatSymbolsProviderImpl
+ * @run main/othervm -Djava.locale.providers=SPI,CLDR DateFormatSymbolsProviderTests
+ */
+
+import java.text.DateFormatSymbols;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Test DateFormatSymbolsProvider SPI with BCP47 U extensions
+ */
+public class DateFormatSymbolsProviderTests {
+    private static final Map<Locale, String> data = Map.of(
+        Locale.forLanguageTag("en-AA"),                 "foo",
+        Locale.forLanguageTag("en-US-u-rg-aazzzz"),     "foo",
+        Locale.forLanguageTag("en-US-u-ca-japanese"),   "bar"
+    );
+
+    public static void main(String... args) {
+        data.forEach((l, e) -> {
+            DateFormatSymbols dfs = DateFormatSymbols.getInstance(l);
+            String[] months = dfs.getMonths();
+            System.out.printf("January string for locale %s is %s.%n", l.toString(), months[0]);
+            if (!months[0].equals(e)) {
+                throw new RuntimeException("DateFormatSymbols provider is not called for" + l);
+            }
+        });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/util/Locale/bcp47u/spi/provider/foo/DateFormatSymbolsProviderImpl.java	Thu Aug 02 22:07:20 2018 +0200
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ */
+
+package foo;
+
+import java.text.DateFormatSymbols;
+import java.text.spi.DateFormatSymbolsProvider;
+import java.util.Locale;
+
+/*
+ * Implements DateFormatSymbolsProvider SPI, in order to check if the
+ * extensions work correctly.
+ */
+public class DateFormatSymbolsProviderImpl extends DateFormatSymbolsProvider {
+    private static final Locale AA = Locale.forLanguageTag("en-AA");
+    private static final Locale USJCAL = Locale.forLanguageTag("en-US-u-ca-japanese");
+    private static final Locale[] avail = {AA, Locale.US};
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return avail;
+    }
+
+    @Override
+    public boolean isSupportedLocale(Locale l) {
+        // Overriding to check the relation between
+        // isSupportedLocale/getAvailableLocales works correctly
+        if (l.equals(AA)) {
+            // delegates to super, as if isSupportedLocale didn't exist.
+            return super.isSupportedLocale(l);
+        } else {
+            return (l.equals(USJCAL));
+        }
+    }
+
+    @Override
+    public DateFormatSymbols getInstance(Locale l) {
+        return new MyDateFormatSymbols(l);
+    }
+
+    class MyDateFormatSymbols extends DateFormatSymbols {
+        Locale locale;
+
+        public MyDateFormatSymbols(Locale l) {
+            super(l);
+            locale = l;
+        }
+
+        @Override
+        public String[] getMonths() {
+            String[] ret = super.getMonths();
+            // replace the first item with some unique value
+            if (locale.stripExtensions().equals(AA)) {
+                ret[0] = "foo";
+            } else if (locale.equals(USJCAL)) {
+                ret[0] = "bar";
+            } else {
+                throw new RuntimeException("Unsupported locale: " + locale);
+            }
+            return ret;
+        }
+    }
+}
--- a/test/jdk/java/util/Locale/bcp47u/spi/provider/module-info.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/jdk/java/util/Locale/bcp47u/spi/provider/module-info.java	Thu Aug 02 22:07:20 2018 +0200
@@ -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
@@ -23,5 +23,6 @@
 
 module provider {
     exports foo;
+    provides java.text.spi.DateFormatSymbolsProvider with foo.DateFormatSymbolsProviderImpl;
     provides java.util.spi.LocaleNameProvider with foo.LocaleNameProviderImpl;
 }
--- a/test/jdk/sun/security/provider/X509Factory/BadPem.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/jdk/sun/security/provider/X509Factory/BadPem.java	Thu Aug 02 22:07:20 2018 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 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
@@ -23,14 +23,13 @@
 
 /*
  * @test
- * @bug 8074935
- * @summary jdk8 keytool doesn't validate pem files for RFC 1421 correctness, as jdk7 did
+ * @bug 8074935 8208602
+ * @summary X.509 cert PEM format read
  * @modules java.base/sun.security.provider
  */
 
 import java.io.ByteArrayOutputStream;
 import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.PrintStream;
 import java.security.KeyStore;
 import java.security.cert.CertificateException;
@@ -49,10 +48,12 @@
         String pass = "passphrase";
         String alias = "dummy";
 
+        CertificateFactory cf = CertificateFactory.getInstance("X.509");
         KeyStore keyStore = KeyStore.getInstance("JKS");
         keyStore.load(new FileInputStream(ks), pass.toCharArray());
         byte[] cert = keyStore.getCertificate(alias).getEncoded();
 
+        // 8074935
         ByteArrayOutputStream bout = new ByteArrayOutputStream();
         PrintStream pout = new PrintStream(bout);
         byte[] CRLF = new byte[] {'\r', '\n'};
@@ -64,14 +65,20 @@
         }
         pout.println(X509Factory.END_CERT);
 
-        CertificateFactory cf = CertificateFactory.getInstance("X.509");
-
         try {
             cf.generateCertificate(new ByteArrayInputStream(bout.toByteArray()));
             throw new Exception("Should fail");
         } catch (CertificateException e) {
             // Good
         }
+
+        // 8208602
+        bout.reset();
+        pout.println(X509Factory.BEGIN_CERT + "  ");
+        pout.println(Base64.getMimeEncoder().encodeToString(cert));
+        pout.println(X509Factory.END_CERT + "    ");
+
+        cf.generateCertificate(new ByteArrayInputStream(bout.toByteArray()));
     }
 }
 
--- a/test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java	Thu Aug 02 22:07:20 2018 +0200
@@ -25,6 +25,7 @@
  * @test
  * @bug 7112427 8012295 8025633 8026567 8061305 8081854 8150130 8162363
  *      8167967 8172528 8175200 8178830 8182257 8186332 8182765 8025091
+ *      8203791
  * @summary Test of the JavaFX doclet features.
  * @author jvalenta
  * @library ../lib
@@ -316,27 +317,28 @@
                 + "<th class=\"colSecond\" scope=\"col\">Method</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
                 + "</tr>\n"
-                + "<tr id=\"i0\" class=\"altColor\">\n"
+                + "<tbody>\n"
+                + "<tr class=\"altColor\" id=\"i0\">\n"
                 + "<td class=\"colFirst\"><code>&lt;T&gt;&nbsp;java.lang.Object</code></td>\n"
                 + "<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
                 + "<a href=\"#alphaProperty(java.util.List)\">alphaProperty</a>"
                 + "</span>&#8203;(java.util.List&lt;T&gt;&nbsp;foo)</code></th>\n"
                 + "<td class=\"colLast\">&nbsp;</td>\n"
                 + "</tr>\n"
-                + "<tr id=\"i1\" class=\"rowColor\">\n"
+                + "<tr class=\"rowColor\" id=\"i1\">\n"
                 + "<td class=\"colFirst\"><code>java.lang.Object</code></td>\n"
                 + "<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
                 + "<a href=\"#betaProperty()\">betaProperty</a></span>()</code></th>\n"
                 + "<td class=\"colLast\">&nbsp;</td>\n"
                 + "</tr>\n"
-                + "<tr id=\"i2\" class=\"altColor\">\n"
+                + "<tr class=\"altColor\" id=\"i2\">\n"
                 + "<td class=\"colFirst\"><code>java.util.List&lt;java.util.Set&lt;? super java.lang.Object&gt;&gt;"
                 + "</code></td>\n"
                 + "<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
                 + "<a href=\"#deltaProperty()\">deltaProperty</a></span>()</code></th>\n"
                 + "<td class=\"colLast\">&nbsp;</td>\n"
                 + "</tr>\n"
-                + "<tr id=\"i3\" class=\"rowColor\">\n"
+                + "<tr class=\"rowColor\" id=\"i3\">\n"
                 + "<td class=\"colFirst\"><code>java.util.List&lt;java.lang.String&gt;</code></td>\n"
                 + "<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
                 + "<a href=\"#gammaProperty()\">gammaProperty</a></span>()</code></th>\n"
@@ -357,27 +359,28 @@
                 + "<th class=\"colSecond\" scope=\"col\">Method</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
                 + "</tr>\n"
-                + "<tr id=\"i0\" class=\"altColor\">\n"
+                + "<tbody>\n"
+                + "<tr class=\"altColor\" id=\"i0\">\n"
                 + "<td class=\"colFirst\"><code>&lt;T&gt;&nbsp;java.lang.Object</code></td>\n"
                 + "<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
                 + "<a href=\"#alphaProperty-java.util.List-\">alphaProperty</a>"
                 + "</span>&#8203;(java.util.List&lt;T&gt;&nbsp;foo)</code></th>\n"
                 + "<td class=\"colLast\">&nbsp;</td>\n"
                 + "</tr>\n"
-                + "<tr id=\"i1\" class=\"rowColor\">\n"
+                + "<tr class=\"rowColor\" id=\"i1\">\n"
                 + "<td class=\"colFirst\"><code>java.lang.Object</code></td>\n"
                 + "<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
                 + "<a href=\"#betaProperty--\">betaProperty</a></span>()</code></th>\n"
                 + "<td class=\"colLast\">&nbsp;</td>\n"
                 + "</tr>\n"
-                + "<tr id=\"i2\" class=\"altColor\">\n"
+                + "<tr class=\"altColor\" id=\"i2\">\n"
                 + "<td class=\"colFirst\"><code>java.util.List&lt;java.util.Set&lt;? super java.lang.Object&gt;&gt;"
                 + "</code></td>\n"
                 + "<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
                 + "<a href=\"#deltaProperty--\">deltaProperty</a></span>()</code></th>\n"
                 + "<td class=\"colLast\">&nbsp;</td>\n"
                 + "</tr>\n"
-                + "<tr id=\"i3\" class=\"rowColor\">\n"
+                + "<tr class=\"rowColor\" id=\"i3\">\n"
                 + "<td class=\"colFirst\"><code>java.util.List&lt;java.lang.String&gt;</code></td>\n"
                 + "<th class=\"colSecond\" scope=\"row\"><code><span class=\"memberNameLink\">"
                 + "<a href=\"#gammaProperty--\">gammaProperty</a></span>()</code></th>\n"
--- a/test/langtools/jdk/javadoc/doclet/testMethodTypes/TestMethodTypes.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/langtools/jdk/javadoc/doclet/testMethodTypes/TestMethodTypes.java	Thu Aug 02 22:07:20 2018 +0200
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug      8002304 8024096 8193671 8196201
+ * @bug      8002304 8024096 8193671 8196201 8203791
  * @summary  Test for various method type tabs in the method summary table
  * @author   Bhavesh Patel
  * @library  ../lib
@@ -59,7 +59,7 @@
                 + "<span id=\"t6\" class=\"tableTab\"><span><a href=\"javascript:show(32);\">"
                 + "Deprecated Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
                 + "</caption>",
-                "<tr id=\"i0\" class=\"altColor\">");
+                "<tr class=\"altColor\" id=\"i0\">");
 
         checkOutput("pkg1/B.html", true,
                 "var data = {\"i0\":6,\"i1\":18,\"i2\":18,\"i3\":1,\"i4\":1,"
@@ -88,7 +88,7 @@
                 + "<span id=\"t6\" class=\"tableTab\"><span><a href=\"javascript:show(32);\">"
                 + "Deprecated Methods</a></span><span class=\"tabEnd\">&nbsp;</span></span>"
                 + "</caption>",
-                "<tr id=\"i0\" class=\"altColor\">");
+                "<tr class=\"altColor\" id=\"i0\">");
 
         checkOutput("pkg1/A.html", false,
                 "<caption><span>Methods</span><span class=\"tabEnd\">&nbsp;</span>"
--- a/test/langtools/jdk/javadoc/doclet/testProperty/TestProperty.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/langtools/jdk/javadoc/doclet/testProperty/TestProperty.java	Thu Aug 02 22:07:20 2018 +0200
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug      8176231 8189843 8182765
+ * @bug      8176231 8189843 8182765 8203791
  * @summary  Test JavaFX property.
  * @library  ../lib/
  * @modules jdk.javadoc/jdk.javadoc.internal.tool
@@ -83,7 +83,7 @@
                 + "<a href=\"#badProperty\">bad</a></span></code></th>",
 
                 // id should be used in the method table
-                "<tr id=\"i0\" class=\"altColor\">\n"
+                "<tr class=\"altColor\" id=\"i0\">\n"
                 + "<td class=\"colFirst\"><code><a href=\"ObjectProperty.html\" "
                 + "title=\"class in pkg\">ObjectProperty</a>&lt;<a href=\"MyObj.html\" "
                 + "title=\"class in pkg\">MyObj</a>[]&gt;</code></td>\n"
@@ -147,7 +147,7 @@
                 + "</dl>",
 
                 // id should be used in the method table
-                "<tr id=\"i0\" class=\"altColor\">\n"
+                "<tr class=\"altColor\" id=\"i0\">\n"
                 + "<td class=\"colFirst\"><code><a href=\"ObjectProperty.html\" "
                 + "title=\"class in pkg\">ObjectProperty</a>&lt;<a href=\"MyObj.html\" "
                 + "title=\"class in pkg\">MyObj</a>[]&gt;</code></td>\n"
--- a/test/langtools/jdk/javadoc/doclet/testUnnamedPackage/TestUnnamedPackage.java	Thu Jul 26 22:07:25 2018 +0200
+++ b/test/langtools/jdk/javadoc/doclet/testUnnamedPackage/TestUnnamedPackage.java	Thu Aug 02 22:07:20 2018 +0200
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug      4904075 4774450 5015144 8043698 8196201
+ * @bug      4904075 4774450 5015144 8043698 8196201 8203791
  * @summary  Reference unnamed package as "Unnamed", not empty string.
  *           Generate a package summary for the unnamed package.
  * @author   jamieh
@@ -71,12 +71,14 @@
                 + "<th class=\"colFirst\" scope=\"col\">Class</th>\n"
                 + "<th class=\"colLast\" scope=\"col\">Description</th>\n"
                 + "</tr>\n"
-                + "<tr id=\"i0\" class=\"altColor\">\n"
+                + "<tbody>\n"
+                + "<tr class=\"altColor\" id=\"i0\">\n"
                 + "<td class=\"colFirst\"><a href=\"C.html\" title=\"class in &lt;Unnamed&gt;\">C</a></td>\n"
                 + "<th class=\"colLast\" scope=\"row\">\n"
                 + "<div class=\"block\">This is a class in the unnamed package.</div>\n"
                 + "</th>\n"
                 + "</tr>\n"
+                + "</tbody>\n"
                 + "</table>");
 
         checkOutput("allpackages-index.html", true,