changeset 5731:bf15208b72a5

Merge
author mgronlun
date Sun, 08 Dec 2013 18:00:58 +0100
parents a150ff9e8efc (current diff) 3aa20cee331a (diff)
children 9fbabcbb875b
files
diffstat 54 files changed, 126 insertions(+), 154 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Fri Dec 06 11:49:50 2013 -0500
+++ b/.hgtags	Sun Dec 08 18:00:58 2013 +0100
@@ -399,3 +399,5 @@
 abad3b2d905d9e1ad767c94baa94aba6ed5b207b hs25-b60
 c9f439732b18ea16f7e65815327d5ea7092cc258 jdk8-b118
 b2426da30009cd3069d03de073f351e6432c7682 hs25-b61
+ce42d815dd2130250acf6132b51b624001638f0d jdk8-b119
+05fedd51e40da22c9460bf17c7185889e435db3d hs25-b62
--- a/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1HeapRegionTable.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1HeapRegionTable.java	Sun Dec 08 18:00:58 2013 +0100
@@ -103,14 +103,14 @@
         @Override
         public void remove()     { /* not supported */    }
 
-        HeapRegionIterator(Address addr) {
+        HeapRegionIterator(long committedLength) {
             index = 0;
-            length = length();
+            length = committedLength;
         }
     }
 
-    public Iterator<HeapRegion> heapRegionIterator() {
-        return new HeapRegionIterator(addr);
+    public Iterator<HeapRegion> heapRegionIterator(long committedLength) {
+        return new HeapRegionIterator(committedLength);
     }
 
     public G1HeapRegionTable(Address addr) {
--- a/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java	Sun Dec 08 18:00:58 2013 +0100
@@ -42,6 +42,8 @@
 public class HeapRegionSeq extends VMObject {
     // G1HeapRegionTable _regions
     static private long regionsFieldOffset;
+    // uint _committed_length
+    static private CIntegerField committedLengthField;
 
     static {
         VM.registerVMInitializedObserver(new Observer() {
@@ -55,6 +57,7 @@
         Type type = db.lookupType("HeapRegionSeq");
 
         regionsFieldOffset = type.getField("_regions").getOffset();
+        committedLengthField = type.getCIntegerField("_committed_length");
     }
 
     private G1HeapRegionTable regions() {
@@ -67,8 +70,12 @@
         return regions().length();
     }
 
+    public long committedLength() {
+        return committedLengthField.getValue(addr);
+    }
+
     public Iterator<HeapRegion> heapRegionIterator() {
-        return regions().heapRegionIterator();
+        return regions().heapRegionIterator(committedLength());
     }
 
     public HeapRegionSeq(Address addr) {
--- a/make/hotspot_version	Fri Dec 06 11:49:50 2013 -0500
+++ b/make/hotspot_version	Sun Dec 08 18:00:58 2013 +0100
@@ -35,7 +35,7 @@
 
 HS_MAJOR_VER=25
 HS_MINOR_VER=0
-HS_BUILD_NUMBER=62
+HS_BUILD_NUMBER=63
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=8
--- a/src/cpu/sparc/vm/vm_version_sparc.cpp	Fri Dec 06 11:49:50 2013 -0500
+++ b/src/cpu/sparc/vm/vm_version_sparc.cpp	Sun Dec 08 18:00:58 2013 +0100
@@ -89,6 +89,27 @@
   _supports_cx8 = has_v9();
   _supports_atomic_getset4 = true; // swap instruction
 
+  // There are Fujitsu Sparc64 CPUs which support blk_init as well so
+  // we have to take this check out of the 'is_niagara()' block below.
+  if (has_blk_init()) {
+    // When using CMS or G1, we cannot use memset() in BOT updates
+    // because the sun4v/CMT version in libc_psr uses BIS which
+    // exposes "phantom zeros" to concurrent readers. See 6948537.
+    if (FLAG_IS_DEFAULT(UseMemSetInBOT) && (UseConcMarkSweepGC || UseG1GC)) {
+      FLAG_SET_DEFAULT(UseMemSetInBOT, false);
+    }
+    // Issue a stern warning if the user has explicitly set
+    // UseMemSetInBOT (it is known to cause issues), but allow
+    // use for experimentation and debugging.
+    if (UseConcMarkSweepGC || UseG1GC) {
+      if (UseMemSetInBOT) {
+        assert(!FLAG_IS_DEFAULT(UseMemSetInBOT), "Error");
+        warning("Experimental flag -XX:+UseMemSetInBOT is known to cause instability"
+                " on sun4v; please understand that you are using at your own risk!");
+      }
+    }
+  }
+
   if (is_niagara()) {
     // Indirect branch is the same cost as direct
     if (FLAG_IS_DEFAULT(UseInlineCaches)) {
@@ -98,12 +119,6 @@
     if (FLAG_IS_DEFAULT(OptoLoopAlignment)) {
       FLAG_SET_DEFAULT(OptoLoopAlignment, 4);
     }
-    // When using CMS or G1, we cannot use memset() in BOT updates
-    // because the sun4v/CMT version in libc_psr uses BIS which
-    // exposes "phantom zeros" to concurrent readers. See 6948537.
-    if (FLAG_IS_DEFAULT(UseMemSetInBOT) && (UseConcMarkSweepGC || UseG1GC)) {
-      FLAG_SET_DEFAULT(UseMemSetInBOT, false);
-    }
 #ifdef _LP64
     // 32-bit oops don't make sense for the 64-bit VM on sparc
     // since the 32-bit VM has the same registers and smaller objects.
--- a/src/cpu/sparc/vm/vm_version_sparc.hpp	Fri Dec 06 11:49:50 2013 -0500
+++ b/src/cpu/sparc/vm/vm_version_sparc.hpp	Sun Dec 08 18:00:58 2013 +0100
@@ -94,7 +94,13 @@
   static bool is_M_family(int features) { return (features & M_family_m) != 0; }
   static bool is_T_family(int features) { return (features & T_family_m) != 0; }
   static bool is_niagara() { return is_T_family(_features); }
-  DEBUG_ONLY( static bool is_niagara(int features)  { return (features & sun4v_m) != 0; } )
+#ifdef ASSERT
+  static bool is_niagara(int features)  {
+    // 'sun4v_m' may be defined on both Sun/Oracle Sparc CPUs as well as
+    // on Fujitsu Sparc64 CPUs, but only Sun/Oracle Sparcs can be 'niagaras'.
+    return (features & sun4v_m) != 0 && (features & sparc64_family_m) == 0;
+  }
+#endif
 
   // Returns true if it is niagara1 (T1).
   static bool is_T1_model(int features) { return is_T_family(features) && ((features & T1_model_m) != 0); }
--- a/src/cpu/x86/vm/c1_Runtime1_x86.cpp	Fri Dec 06 11:49:50 2013 -0500
+++ b/src/cpu/x86/vm/c1_Runtime1_x86.cpp	Sun Dec 08 18:00:58 2013 +0100
@@ -1719,10 +1719,12 @@
 
         BarrierSet* bs = Universe::heap()->barrier_set();
         CardTableModRefBS* ct = (CardTableModRefBS*)bs;
+        assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code");
+
         Label done;
         Label runtime;
 
-        // At this point we know new_value is non-NULL and the new_value crosses regsion.
+        // At this point we know new_value is non-NULL and the new_value crosses regions.
         // Must check to see if card is already dirty
 
         const Register thread = NOT_LP64(rax) LP64_ONLY(r15_thread);
@@ -1735,26 +1737,17 @@
         __ push(rax);
         __ push(rcx);
 
-        NOT_LP64(__ get_thread(thread);)
-        ExternalAddress cardtable((address)ct->byte_map_base);
-        assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code");
+        const Register cardtable = rax;
+        const Register card_addr = rcx;
 
-        const Register card_addr = rcx;
-#ifdef _LP64
-        const Register tmp = rscratch1;
         f.load_argument(0, card_addr);
-        __ shrq(card_addr, CardTableModRefBS::card_shift);
-        __ lea(tmp, cardtable);
-        // get the address of the card
-        __ addq(card_addr, tmp);
-#else
-        const Register card_index = rcx;
-        f.load_argument(0, card_index);
-        __ shrl(card_index, CardTableModRefBS::card_shift);
+        __ shrptr(card_addr, CardTableModRefBS::card_shift);
+        // Do not use ExternalAddress to load 'byte_map_base', since 'byte_map_base' is NOT
+        // a valid address and therefore is not properly handled by the relocation code.
+        __ movptr(cardtable, (intptr_t)ct->byte_map_base);
+        __ addptr(card_addr, cardtable);
 
-        Address index(noreg, card_index, Address::times_1);
-        __ leal(card_addr, __ as_Address(ArrayAddress(cardtable, index)));
-#endif
+        NOT_LP64(__ get_thread(thread);)
 
         __ cmpb(Address(card_addr, 0), (int)G1SATBCardTableModRefBS::g1_young_card_val());
         __ jcc(Assembler::equal, done);
--- a/src/cpu/x86/vm/macroAssembler_x86.cpp	Fri Dec 06 11:49:50 2013 -0500
+++ b/src/cpu/x86/vm/macroAssembler_x86.cpp	Sun Dec 08 18:00:58 2013 +0100
@@ -3354,6 +3354,8 @@
 
   BarrierSet* bs = Universe::heap()->barrier_set();
   CardTableModRefBS* ct = (CardTableModRefBS*)bs;
+  assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code");
+
   Label done;
   Label runtime;
 
@@ -3371,28 +3373,16 @@
 
   // storing region crossing non-NULL, is card already dirty?
 
-  ExternalAddress cardtable((address) ct->byte_map_base);
-  assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code");
-#ifdef _LP64
   const Register card_addr = tmp;
-
-  movq(card_addr, store_addr);
-  shrq(card_addr, CardTableModRefBS::card_shift);
-
-  lea(tmp2, cardtable);
-
-  // get the address of the card
-  addq(card_addr, tmp2);
-#else
-  const Register card_index = tmp;
-
-  movl(card_index, store_addr);
-  shrl(card_index, CardTableModRefBS::card_shift);
-
-  Address index(noreg, card_index, Address::times_1);
-  const Register card_addr = tmp;
-  lea(card_addr, as_Address(ArrayAddress(cardtable, index)));
-#endif
+  const Register cardtable = tmp2;
+
+  movptr(card_addr, store_addr);
+  shrptr(card_addr, CardTableModRefBS::card_shift);
+  // Do not use ExternalAddress to load 'byte_map_base', since 'byte_map_base' is NOT
+  // a valid address and therefore is not properly handled by the relocation code.
+  movptr(cardtable, (intptr_t)ct->byte_map_base);
+  addptr(card_addr, cardtable);
+
   cmpb(Address(card_addr, 0), (int)G1SATBCardTableModRefBS::g1_young_card_val());
   jcc(Assembler::equal, done);
 
@@ -3416,7 +3406,7 @@
   movq(Address(tmp2, 0), card_addr);
 #else
   addl(tmp2, queue_index);
-  movl(Address(tmp2, 0), card_index);
+  movl(Address(tmp2, 0), card_addr);
 #endif
   jmp(done);
 
@@ -3468,25 +3458,19 @@
 
   // The calculation for byte_map_base is as follows:
   // byte_map_base = _byte_map - (uintptr_t(low_bound) >> card_shift);
-  // So this essentially converts an address to a displacement and
-  // it will never need to be relocated. On 64bit however the value may be too
-  // large for a 32bit displacement
-
+  // So this essentially converts an address to a displacement and it will
+  // never need to be relocated. On 64bit however the value may be too
+  // large for a 32bit displacement.
   intptr_t disp = (intptr_t) ct->byte_map_base;
   if (is_simm32(disp)) {
     Address cardtable(noreg, obj, Address::times_1, disp);
     movb(cardtable, 0);
   } else {
-    // By doing it as an ExternalAddress disp could be converted to a rip-relative
-    // displacement and done in a single instruction given favorable mapping and
-    // a smarter version of as_Address. Worst case it is two instructions which
-    // is no worse off then loading disp into a register and doing as a simple
-    // Address() as above.
-    // We can't do as ExternalAddress as the only style since if disp == 0 we'll
-    // assert since NULL isn't acceptable in a reloci (see 6644928). In any case
-    // in some cases we'll get a single instruction version.
-
-    ExternalAddress cardtable((address)disp);
+    // By doing it as an ExternalAddress 'disp' could be converted to a rip-relative
+    // displacement and done in a single instruction given favorable mapping and a
+    // smarter version of as_Address. However, 'ExternalAddress' generates a relocation
+    // entry and that entry is not properly handled by the relocation code.
+    AddressLiteral cardtable((address)ct->byte_map_base, relocInfo::none);
     Address index(noreg, obj, Address::times_1);
     movb(as_Address(ArrayAddress(cardtable, index)), 0);
   }
--- a/src/share/vm/gc_implementation/shared/markSweep.cpp	Fri Dec 06 11:49:50 2013 -0500
+++ b/src/share/vm/gc_implementation/shared/markSweep.cpp	Sun Dec 08 18:00:58 2013 +0100
@@ -66,29 +66,10 @@
   klass->oops_do(&MarkSweep::adjust_pointer_closure);
 }
 
-void MarkSweep::follow_klass(Klass* klass) {
-  ClassLoaderData* cld = klass->class_loader_data();
-  // The actual processing of the klass is done when we
-  // traverse the list of Klasses in the class loader data.
-  MarkSweep::follow_class_loader(cld);
-}
-
-void MarkSweep::adjust_klass(Klass* klass) {
-  ClassLoaderData* cld = klass->class_loader_data();
-  // The actual processing of the klass is done when we
-  // traverse the list of Klasses in the class loader data.
-  MarkSweep::adjust_class_loader(cld);
-}
-
 void MarkSweep::follow_class_loader(ClassLoaderData* cld) {
   cld->oops_do(&MarkSweep::mark_and_push_closure, &MarkSweep::follow_klass_closure, true);
 }
 
-void MarkSweep::adjust_class_loader(ClassLoaderData* cld) {
-  cld->oops_do(&MarkSweep::adjust_pointer_closure, &MarkSweep::adjust_klass_closure, true);
-}
-
-
 void MarkSweep::follow_stack() {
   do {
     while (!_marking_stack.is_empty()) {
--- a/src/share/vm/gc_implementation/shared/markSweep.hpp	Fri Dec 06 11:49:50 2013 -0500
+++ b/src/share/vm/gc_implementation/shared/markSweep.hpp	Sun Dec 08 18:00:58 2013 +0100
@@ -172,10 +172,8 @@
   static void follow_stack();   // Empty marking stack.
 
   static void follow_klass(Klass* klass);
-  static void adjust_klass(Klass* klass);
 
   static void follow_class_loader(ClassLoaderData* cld);
-  static void adjust_class_loader(ClassLoaderData* cld);
 
   static void preserve_mark(oop p, markOop mark);
                                 // Save the mark word so it can be restored later
--- a/src/share/vm/gc_implementation/shared/markSweep.inline.hpp	Fri Dec 06 11:49:50 2013 -0500
+++ b/src/share/vm/gc_implementation/shared/markSweep.inline.hpp	Sun Dec 08 18:00:58 2013 +0100
@@ -44,6 +44,11 @@
   }
 }
 
+inline void MarkSweep::follow_klass(Klass* klass) {
+  oop op = klass->klass_holder();
+  MarkSweep::mark_and_push(&op);
+}
+
 template <class T> inline void MarkSweep::follow_root(T* p) {
   assert(!Universe::heap()->is_in_reserved(p),
          "roots shouldn't be things within the heap");
--- a/src/share/vm/oops/instanceKlass.cpp	Fri Dec 06 11:49:50 2013 -0500
+++ b/src/share/vm/oops/instanceKlass.cpp	Sun Dec 08 18:00:58 2013 +0100
@@ -2180,7 +2180,6 @@
     obj, \
     MarkSweep::adjust_pointer(p), \
     assert_is_in)
-  MarkSweep::adjust_klass(obj->klass());
   return size;
 }
 
--- a/src/share/vm/oops/instanceMirrorKlass.cpp	Fri Dec 06 11:49:50 2013 -0500
+++ b/src/share/vm/oops/instanceMirrorKlass.cpp	Sun Dec 08 18:00:58 2013 +0100
@@ -155,7 +155,13 @@
   // Follow the klass field in the mirror.
   Klass* klass = java_lang_Class::as_Klass(obj);
   if (klass != NULL) {
-    MarkSweep::follow_klass(klass);
+    // For anonymous classes we need to handle the class loader data,
+    // otherwise it won't be claimed and can be unloaded.
+    if (klass->oop_is_instance() && InstanceKlass::cast(klass)->is_anonymous()) {
+      MarkSweep::follow_class_loader(klass->class_loader_data());
+    } else {
+      MarkSweep::follow_klass(klass);
+    }
   } else {
     // If klass is NULL then this a mirror for a primitive type.
     // We don't have to follow them, since they are handled as strong
@@ -196,17 +202,6 @@
   int size = oop_size(obj);
   InstanceKlass::oop_adjust_pointers(obj);
 
-  // Follow the klass field in the mirror.
-  Klass* klass = java_lang_Class::as_Klass(obj);
-  if (klass != NULL) {
-    MarkSweep::adjust_klass(klass);
-  } else {
-    // If klass is NULL then this a mirror for a primitive type.
-    // We don't have to follow them, since they are handled as strong
-    // roots in Universe::oops_do.
-    assert(java_lang_Class::is_primitive(obj), "Sanity check");
-  }
-
   InstanceMirrorKlass_OOP_ITERATE(                                                    \
     start_of_static_fields(obj), java_lang_Class::static_oop_field_count(obj),        \
     MarkSweep::adjust_pointer(p),                                                     \
--- a/src/share/vm/oops/objArrayKlass.cpp	Fri Dec 06 11:49:50 2013 -0500
+++ b/src/share/vm/oops/objArrayKlass.cpp	Sun Dec 08 18:00:58 2013 +0100
@@ -569,7 +569,6 @@
   // Get size before changing pointers.
   // Don't call size() or oop_size() since that is a virtual call.
   int size = a->object_size();
-  MarkSweep::adjust_klass(a->klass());
   ObjArrayKlass_OOP_ITERATE(a, p, MarkSweep::adjust_pointer(p))
   return size;
 }
--- a/src/share/vm/opto/c2_globals.hpp	Fri Dec 06 11:49:50 2013 -0500
+++ b/src/share/vm/opto/c2_globals.hpp	Sun Dec 08 18:00:58 2013 +0100
@@ -637,7 +637,7 @@
   diagnostic(bool, OptimizeExpensiveOps, true,                              \
           "Find best control for expensive operations")                     \
                                                                             \
-  product(bool, UseMathExactIntrinsics, true,                               \
+  experimental(bool, UseMathExactIntrinsics, false,                         \
           "Enables intrinsification of various java.lang.Math functions")   \
                                                                             \
   experimental(bool, ReplaceInParentMaps, false,                            \
--- a/src/share/vm/runtime/arguments.cpp	Fri Dec 06 11:49:50 2013 -0500
+++ b/src/share/vm/runtime/arguments.cpp	Sun Dec 08 18:00:58 2013 +0100
@@ -2278,18 +2278,6 @@
   status = status && verify_percentage(MarkSweepDeadRatio, "MarkSweepDeadRatio");
 
   status = status && verify_min_value(MarkSweepAlwaysCompactCount, 1, "MarkSweepAlwaysCompactCount");
-#ifdef SPARC
-  if (UseConcMarkSweepGC || UseG1GC) {
-    // Issue a stern warning if the user has explicitly set
-    // UseMemSetInBOT (it is known to cause issues), but allow
-    // use for experimentation and debugging.
-    if (VM_Version::is_sun4v() && UseMemSetInBOT) {
-      assert(!FLAG_IS_DEFAULT(UseMemSetInBOT), "Error");
-      warning("Experimental flag -XX:+UseMemSetInBOT is known to cause instability"
-          " on sun4v; please understand that you are using at your own risk!");
-    }
-  }
-#endif // SPARC
 
   if (PrintNMTStatistics) {
 #if INCLUDE_NMT
--- a/test/compiler/intrinsics/mathexact/AddExactICondTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/AddExactICondTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8024924
  * @summary Test non constant addExact
  * @compile AddExactICondTest.java
- * @run main AddExactICondTest
+ * @run main AddExactICondTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/AddExactIConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/AddExactIConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8024924
  * @summary Test constant addExact
  * @compile AddExactIConstantTest.java Verify.java
- * @run main AddExactIConstantTest
+ * @run main AddExactIConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/AddExactILoadTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/AddExactILoadTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8024924
  * @summary Test non constant addExact
  * @compile AddExactILoadTest.java Verify.java
- * @run main AddExactILoadTest
+ * @run main AddExactILoadTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/AddExactILoopDependentTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/AddExactILoopDependentTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8024924
  * @summary Test non constant addExact
  * @compile AddExactILoopDependentTest.java Verify.java
- * @run main AddExactILoopDependentTest
+ * @run main AddExactILoopDependentTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/AddExactINonConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/AddExactINonConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8024924
  * @summary Test non constant addExact
  * @compile AddExactINonConstantTest.java Verify.java
- * @run main AddExactINonConstantTest
+ * @run main AddExactINonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/AddExactIRepeatTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/AddExactIRepeatTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8025657
  * @summary Test repeating addExact
  * @compile AddExactIRepeatTest.java Verify.java
- * @run main AddExactIRepeatTest
+ * @run main AddExactIRepeatTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/AddExactLConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/AddExactLConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test constant addExact
  * @compile AddExactLConstantTest.java Verify.java
- * @run main AddExactLConstantTest
+ * @run main AddExactLConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/AddExactLNonConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/AddExactLNonConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test non constant addExact
  * @compile AddExactLNonConstantTest.java Verify.java
- * @run main AddExactLNonConstantTest
+ * @run main AddExactLNonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/CompareTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/CompareTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026722
  * @summary Verify that the compare after addExact is a signed compare
  * @compile CompareTest.java
- * @run main CompareTest
+ * @run main CompareTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/DecExactITest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/DecExactITest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test decrementExact
  * @compile DecExactITest.java Verify.java
- * @run main DecExactITest
+ * @run main DecExactITest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/DecExactLTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/DecExactLTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -25,8 +25,8 @@
  * @test
  * @bug 8026844
  * @summary Test decrementExact
- * @compile DecExactITest.java Verify.java
- * @run main DecExactITest
+ * @compile DecExactLTest.java Verify.java
+ * @run main DecExactLTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/GVNTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/GVNTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8028207
  * @summary Verify that GVN doesn't mess up the two addExacts
  * @compile GVNTest.java
- * @run main GVNTest
+ * @run main GVNTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/IncExactITest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/IncExactITest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test incrementExact
  * @compile IncExactITest.java Verify.java
- * @run main IncExactITest
+ * @run main IncExactITest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/IncExactLTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/IncExactLTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test incrementExact
  * @compile IncExactLTest.java Verify.java
- * @run main IncExactLTest
+ * @run main IncExactLTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/MulExactICondTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/MulExactICondTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test multiplyExact as condition
  * @compile MulExactICondTest.java
- * @run main MulExactICondTest
+ * @run main MulExactICondTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/MulExactIConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/MulExactIConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test constant multiplyExact
  * @compile MulExactIConstantTest.java Verify.java
- * @run main MulExactIConstantTest
+ * @run main MulExactIConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/MulExactILoadTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/MulExactILoadTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test multiplyExact
  * @compile MulExactILoadTest.java Verify.java
- * @run main MulExactILoadTest
+ * @run main MulExactILoadTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/MulExactILoopDependentTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/MulExactILoopDependentTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test loop dependent multiplyExact
  * @compile MulExactILoopDependentTest.java Verify.java
- * @run main MulExactILoopDependentTest
+ * @run main MulExactILoopDependentTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 public class MulExactILoopDependentTest {
--- a/test/compiler/intrinsics/mathexact/MulExactINonConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/MulExactINonConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test non constant multiplyExact
  * @compile MulExactINonConstantTest.java Verify.java
- * @run main MulExactINonConstantTest
+ * @run main MulExactINonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/MulExactIRepeatTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/MulExactIRepeatTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test repeating multiplyExact
  * @compile MulExactIRepeatTest.java Verify.java
- * @run main MulExactIRepeatTest
+ * @run main MulExactIRepeatTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/MulExactLConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/MulExactLConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test constant mulExact
  * @compile MulExactLConstantTest.java Verify.java
- * @run main MulExactLConstantTest
+ * @run main MulExactLConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/MulExactLNonConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/MulExactLNonConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test non constant mulExact
  * @compile MulExactLNonConstantTest.java Verify.java
- * @run main MulExactLNonConstantTest
+ * @run main MulExactLNonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/NegExactIConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/NegExactIConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test constant negExact
  * @compile NegExactIConstantTest.java Verify.java
- * @run main NegExactIConstantTest
+ * @run main NegExactIConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/NegExactILoadTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/NegExactILoadTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test negExact
  * @compile NegExactILoadTest.java Verify.java
- * @run main NegExactILoadTest
+ * @run main NegExactILoadTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/NegExactILoopDependentTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/NegExactILoopDependentTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test negExact loop dependent
  * @compile NegExactILoopDependentTest.java Verify.java
- * @run main NegExactILoopDependentTest
+ * @run main NegExactILoopDependentTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 public class NegExactILoopDependentTest {
--- a/test/compiler/intrinsics/mathexact/NegExactINonConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/NegExactINonConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test non constant negExact
  * @compile NegExactINonConstantTest.java Verify.java
- * @run main NegExactINonConstantTest
+ * @run main NegExactINonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/NegExactLConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/NegExactLConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test constant negExact
  * @compile NegExactLConstantTest.java Verify.java
- * @run main NegExactLConstantTest
+ * @run main NegExactLConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/NegExactLNonConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/NegExactLNonConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test constant negExact
  * @compile NegExactLNonConstantTest.java Verify.java
- * @run main NegExactLNonConstantTest
+ * @run main NegExactLNonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/NestedMathExactTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/NestedMathExactTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8027444
  * @summary Test nested loops
  * @compile NestedMathExactTest.java
- * @run main NestedMathExactTest
+ * @run main NestedMathExactTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/SplitThruPhiTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/SplitThruPhiTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8028198
  * @summary Verify that split through phi does the right thing
  * @compile SplitThruPhiTest.java
- * @run main SplitThruPhiTest
+ * @run main SplitThruPhiTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/SubExactICondTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/SubExactICondTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test subtractExact as condition
  * @compile SubExactICondTest.java Verify.java
- * @run main SubExactICondTest
+ * @run main SubExactICondTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/SubExactIConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/SubExactIConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test constant subtractExact
  * @compile SubExactIConstantTest.java Verify.java
- * @run main SubExactIConstantTest
+ * @run main SubExactIConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/SubExactILoadTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/SubExactILoadTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test non constant subtractExact
  * @compile SubExactILoadTest.java Verify.java
- * @run main SubExactILoadTest
+ * @run main SubExactILoadTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/SubExactILoopDependentTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/SubExactILoopDependentTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test non constant subtractExact
  * @compile SubExactILoopDependentTest.java Verify.java
- * @run main SubExactILoopDependentTest
+ * @run main SubExactILoopDependentTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/SubExactINonConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/SubExactINonConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test non constant subtractExact
  * @compile SubExactINonConstantTest.java Verify.java
- * @run main SubExactINonConstantTest
+ * @run main SubExactINonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/SubExactIRepeatTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/SubExactIRepeatTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -26,7 +26,7 @@
  * @bug 8026844
  * @summary Test repeating subtractExact
  * @compile SubExactIRepeatTest.java Verify.java
- * @run main SubExactIRepeatTest
+ * @run main SubExactIRepeatTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/SubExactLConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/SubExactLConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -27,7 +27,7 @@
  * @bug 8027353
  * @summary Test constant subtractExact
  * @compile SubExactLConstantTest.java Verify.java
- * @run main SubExactLConstantTest
+ * @run main SubExactLConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */
 
--- a/test/compiler/intrinsics/mathexact/SubExactLNonConstantTest.java	Fri Dec 06 11:49:50 2013 -0500
+++ b/test/compiler/intrinsics/mathexact/SubExactLNonConstantTest.java	Sun Dec 08 18:00:58 2013 +0100
@@ -27,7 +27,7 @@
  * @bug 8027353
  * @summary Test non constant subtractExact
  * @compile SubExactLNonConstantTest.java Verify.java
- * @run main SubExactLNonConstantTest
+ * @run main SubExactLNonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics
  *
  */