Thu, 12 Dec 2013 11:05:39 -0800
Merge
1.1 --- a/.hgtags Wed Dec 11 12:28:09 2013 +0100 1.2 +++ b/.hgtags Thu Dec 12 11:05:39 2013 -0800 1.3 @@ -400,3 +400,5 @@ 1.4 c9f439732b18ea16f7e65815327d5ea7092cc258 jdk8-b118 1.5 b2426da30009cd3069d03de073f351e6432c7682 hs25-b61 1.6 ce42d815dd2130250acf6132b51b624001638f0d jdk8-b119 1.7 +05fedd51e40da22c9460bf17c7185889e435db3d hs25-b62 1.8 +fca262db9c4309f99d2f5542ab0780e45c2f1578 jdk8-b120
2.1 --- a/agent/make/jsdbproc64.sh Wed Dec 11 12:28:09 2013 +0100 2.2 +++ b/agent/make/jsdbproc64.sh Thu Dec 12 11:05:39 2013 -0800 2.3 @@ -1,7 +1,7 @@ 2.4 -#!/bin/sh 2.5 +#!/bin/sh 2.6 2.7 # 2.8 -# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. 2.9 +# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. 2.10 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 2.11 # 2.12 # This code is free software; you can redistribute it and/or modify it 2.13 @@ -21,10 +21,10 @@ 2.14 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2.15 # or visit www.oracle.com if you need additional information or have any 2.16 # questions. 2.17 -# 2.18 +# 2.19 # 2.20 2.21 - 2.22 -. `dirname $0`/saenv64.sh 2.23 - 2.24 -$SA_JAVA_CMD sun.jvm.hotspot.tools.JSDB $* 2.25 + 2.26 +. `dirname $0`/saenv64.sh 2.27 + 2.28 +$SA_JAVA_CMD sun.jvm.hotspot.tools.soql.JSDB $*
3.1 --- a/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1HeapRegionTable.java Wed Dec 11 12:28:09 2013 +0100 3.2 +++ b/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1HeapRegionTable.java Thu Dec 12 11:05:39 2013 -0800 3.3 @@ -103,14 +103,14 @@ 3.4 @Override 3.5 public void remove() { /* not supported */ } 3.6 3.7 - HeapRegionIterator(Address addr) { 3.8 + HeapRegionIterator(long committedLength) { 3.9 index = 0; 3.10 - length = length(); 3.11 + length = committedLength; 3.12 } 3.13 } 3.14 3.15 - public Iterator<HeapRegion> heapRegionIterator() { 3.16 - return new HeapRegionIterator(addr); 3.17 + public Iterator<HeapRegion> heapRegionIterator(long committedLength) { 3.18 + return new HeapRegionIterator(committedLength); 3.19 } 3.20 3.21 public G1HeapRegionTable(Address addr) {
4.1 --- a/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java Wed Dec 11 12:28:09 2013 +0100 4.2 +++ b/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java Thu Dec 12 11:05:39 2013 -0800 4.3 @@ -42,6 +42,8 @@ 4.4 public class HeapRegionSeq extends VMObject { 4.5 // G1HeapRegionTable _regions 4.6 static private long regionsFieldOffset; 4.7 + // uint _committed_length 4.8 + static private CIntegerField committedLengthField; 4.9 4.10 static { 4.11 VM.registerVMInitializedObserver(new Observer() { 4.12 @@ -55,6 +57,7 @@ 4.13 Type type = db.lookupType("HeapRegionSeq"); 4.14 4.15 regionsFieldOffset = type.getField("_regions").getOffset(); 4.16 + committedLengthField = type.getCIntegerField("_committed_length"); 4.17 } 4.18 4.19 private G1HeapRegionTable regions() { 4.20 @@ -67,8 +70,12 @@ 4.21 return regions().length(); 4.22 } 4.23 4.24 + public long committedLength() { 4.25 + return committedLengthField.getValue(addr); 4.26 + } 4.27 + 4.28 public Iterator<HeapRegion> heapRegionIterator() { 4.29 - return regions().heapRegionIterator(); 4.30 + return regions().heapRegionIterator(committedLength()); 4.31 } 4.32 4.33 public HeapRegionSeq(Address addr) {
5.1 --- a/make/hotspot_version Wed Dec 11 12:28:09 2013 +0100 5.2 +++ b/make/hotspot_version Thu Dec 12 11:05:39 2013 -0800 5.3 @@ -35,7 +35,7 @@ 5.4 5.5 HS_MAJOR_VER=25 5.6 HS_MINOR_VER=0 5.7 -HS_BUILD_NUMBER=61 5.8 +HS_BUILD_NUMBER=62 5.9 5.10 JDK_MAJOR_VER=1 5.11 JDK_MINOR_VER=8
6.1 --- a/src/cpu/sparc/vm/vm_version_sparc.cpp Wed Dec 11 12:28:09 2013 +0100 6.2 +++ b/src/cpu/sparc/vm/vm_version_sparc.cpp Thu Dec 12 11:05:39 2013 -0800 6.3 @@ -89,6 +89,27 @@ 6.4 _supports_cx8 = has_v9(); 6.5 _supports_atomic_getset4 = true; // swap instruction 6.6 6.7 + // There are Fujitsu Sparc64 CPUs which support blk_init as well so 6.8 + // we have to take this check out of the 'is_niagara()' block below. 6.9 + if (has_blk_init()) { 6.10 + // When using CMS or G1, we cannot use memset() in BOT updates 6.11 + // because the sun4v/CMT version in libc_psr uses BIS which 6.12 + // exposes "phantom zeros" to concurrent readers. See 6948537. 6.13 + if (FLAG_IS_DEFAULT(UseMemSetInBOT) && (UseConcMarkSweepGC || UseG1GC)) { 6.14 + FLAG_SET_DEFAULT(UseMemSetInBOT, false); 6.15 + } 6.16 + // Issue a stern warning if the user has explicitly set 6.17 + // UseMemSetInBOT (it is known to cause issues), but allow 6.18 + // use for experimentation and debugging. 6.19 + if (UseConcMarkSweepGC || UseG1GC) { 6.20 + if (UseMemSetInBOT) { 6.21 + assert(!FLAG_IS_DEFAULT(UseMemSetInBOT), "Error"); 6.22 + warning("Experimental flag -XX:+UseMemSetInBOT is known to cause instability" 6.23 + " on sun4v; please understand that you are using at your own risk!"); 6.24 + } 6.25 + } 6.26 + } 6.27 + 6.28 if (is_niagara()) { 6.29 // Indirect branch is the same cost as direct 6.30 if (FLAG_IS_DEFAULT(UseInlineCaches)) { 6.31 @@ -98,12 +119,6 @@ 6.32 if (FLAG_IS_DEFAULT(OptoLoopAlignment)) { 6.33 FLAG_SET_DEFAULT(OptoLoopAlignment, 4); 6.34 } 6.35 - // When using CMS or G1, we cannot use memset() in BOT updates 6.36 - // because the sun4v/CMT version in libc_psr uses BIS which 6.37 - // exposes "phantom zeros" to concurrent readers. See 6948537. 6.38 - if (FLAG_IS_DEFAULT(UseMemSetInBOT) && (UseConcMarkSweepGC || UseG1GC)) { 6.39 - FLAG_SET_DEFAULT(UseMemSetInBOT, false); 6.40 - } 6.41 #ifdef _LP64 6.42 // 32-bit oops don't make sense for the 64-bit VM on sparc 6.43 // since the 32-bit VM has the same registers and smaller objects.
7.1 --- a/src/cpu/sparc/vm/vm_version_sparc.hpp Wed Dec 11 12:28:09 2013 +0100 7.2 +++ b/src/cpu/sparc/vm/vm_version_sparc.hpp Thu Dec 12 11:05:39 2013 -0800 7.3 @@ -94,7 +94,13 @@ 7.4 static bool is_M_family(int features) { return (features & M_family_m) != 0; } 7.5 static bool is_T_family(int features) { return (features & T_family_m) != 0; } 7.6 static bool is_niagara() { return is_T_family(_features); } 7.7 - DEBUG_ONLY( static bool is_niagara(int features) { return (features & sun4v_m) != 0; } ) 7.8 +#ifdef ASSERT 7.9 + static bool is_niagara(int features) { 7.10 + // 'sun4v_m' may be defined on both Sun/Oracle Sparc CPUs as well as 7.11 + // on Fujitsu Sparc64 CPUs, but only Sun/Oracle Sparcs can be 'niagaras'. 7.12 + return (features & sun4v_m) != 0 && (features & sparc64_family_m) == 0; 7.13 + } 7.14 +#endif 7.15 7.16 // Returns true if it is niagara1 (T1). 7.17 static bool is_T1_model(int features) { return is_T_family(features) && ((features & T1_model_m) != 0); }
8.1 --- a/src/cpu/x86/vm/c1_Runtime1_x86.cpp Wed Dec 11 12:28:09 2013 +0100 8.2 +++ b/src/cpu/x86/vm/c1_Runtime1_x86.cpp Thu Dec 12 11:05:39 2013 -0800 8.3 @@ -1719,10 +1719,12 @@ 8.4 8.5 BarrierSet* bs = Universe::heap()->barrier_set(); 8.6 CardTableModRefBS* ct = (CardTableModRefBS*)bs; 8.7 + assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code"); 8.8 + 8.9 Label done; 8.10 Label runtime; 8.11 8.12 - // At this point we know new_value is non-NULL and the new_value crosses regsion. 8.13 + // At this point we know new_value is non-NULL and the new_value crosses regions. 8.14 // Must check to see if card is already dirty 8.15 8.16 const Register thread = NOT_LP64(rax) LP64_ONLY(r15_thread); 8.17 @@ -1735,26 +1737,17 @@ 8.18 __ push(rax); 8.19 __ push(rcx); 8.20 8.21 + const Register cardtable = rax; 8.22 + const Register card_addr = rcx; 8.23 + 8.24 + f.load_argument(0, card_addr); 8.25 + __ shrptr(card_addr, CardTableModRefBS::card_shift); 8.26 + // Do not use ExternalAddress to load 'byte_map_base', since 'byte_map_base' is NOT 8.27 + // a valid address and therefore is not properly handled by the relocation code. 8.28 + __ movptr(cardtable, (intptr_t)ct->byte_map_base); 8.29 + __ addptr(card_addr, cardtable); 8.30 + 8.31 NOT_LP64(__ get_thread(thread);) 8.32 - ExternalAddress cardtable((address)ct->byte_map_base); 8.33 - assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code"); 8.34 - 8.35 - const Register card_addr = rcx; 8.36 -#ifdef _LP64 8.37 - const Register tmp = rscratch1; 8.38 - f.load_argument(0, card_addr); 8.39 - __ shrq(card_addr, CardTableModRefBS::card_shift); 8.40 - __ lea(tmp, cardtable); 8.41 - // get the address of the card 8.42 - __ addq(card_addr, tmp); 8.43 -#else 8.44 - const Register card_index = rcx; 8.45 - f.load_argument(0, card_index); 8.46 - __ shrl(card_index, CardTableModRefBS::card_shift); 8.47 - 8.48 - Address index(noreg, card_index, Address::times_1); 8.49 - __ leal(card_addr, __ as_Address(ArrayAddress(cardtable, index))); 8.50 -#endif 8.51 8.52 __ cmpb(Address(card_addr, 0), (int)G1SATBCardTableModRefBS::g1_young_card_val()); 8.53 __ jcc(Assembler::equal, done);
9.1 --- a/src/cpu/x86/vm/macroAssembler_x86.cpp Wed Dec 11 12:28:09 2013 +0100 9.2 +++ b/src/cpu/x86/vm/macroAssembler_x86.cpp Thu Dec 12 11:05:39 2013 -0800 9.3 @@ -3354,6 +3354,8 @@ 9.4 9.5 BarrierSet* bs = Universe::heap()->barrier_set(); 9.6 CardTableModRefBS* ct = (CardTableModRefBS*)bs; 9.7 + assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code"); 9.8 + 9.9 Label done; 9.10 Label runtime; 9.11 9.12 @@ -3371,28 +3373,16 @@ 9.13 9.14 // storing region crossing non-NULL, is card already dirty? 9.15 9.16 - ExternalAddress cardtable((address) ct->byte_map_base); 9.17 - assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code"); 9.18 -#ifdef _LP64 9.19 const Register card_addr = tmp; 9.20 - 9.21 - movq(card_addr, store_addr); 9.22 - shrq(card_addr, CardTableModRefBS::card_shift); 9.23 - 9.24 - lea(tmp2, cardtable); 9.25 - 9.26 - // get the address of the card 9.27 - addq(card_addr, tmp2); 9.28 -#else 9.29 - const Register card_index = tmp; 9.30 - 9.31 - movl(card_index, store_addr); 9.32 - shrl(card_index, CardTableModRefBS::card_shift); 9.33 - 9.34 - Address index(noreg, card_index, Address::times_1); 9.35 - const Register card_addr = tmp; 9.36 - lea(card_addr, as_Address(ArrayAddress(cardtable, index))); 9.37 -#endif 9.38 + const Register cardtable = tmp2; 9.39 + 9.40 + movptr(card_addr, store_addr); 9.41 + shrptr(card_addr, CardTableModRefBS::card_shift); 9.42 + // Do not use ExternalAddress to load 'byte_map_base', since 'byte_map_base' is NOT 9.43 + // a valid address and therefore is not properly handled by the relocation code. 9.44 + movptr(cardtable, (intptr_t)ct->byte_map_base); 9.45 + addptr(card_addr, cardtable); 9.46 + 9.47 cmpb(Address(card_addr, 0), (int)G1SATBCardTableModRefBS::g1_young_card_val()); 9.48 jcc(Assembler::equal, done); 9.49 9.50 @@ -3416,7 +3406,7 @@ 9.51 movq(Address(tmp2, 0), card_addr); 9.52 #else 9.53 addl(tmp2, queue_index); 9.54 - movl(Address(tmp2, 0), card_index); 9.55 + movl(Address(tmp2, 0), card_addr); 9.56 #endif 9.57 jmp(done); 9.58 9.59 @@ -3468,25 +3458,19 @@ 9.60 9.61 // The calculation for byte_map_base is as follows: 9.62 // byte_map_base = _byte_map - (uintptr_t(low_bound) >> card_shift); 9.63 - // So this essentially converts an address to a displacement and 9.64 - // it will never need to be relocated. On 64bit however the value may be too 9.65 - // large for a 32bit displacement 9.66 - 9.67 + // So this essentially converts an address to a displacement and it will 9.68 + // never need to be relocated. On 64bit however the value may be too 9.69 + // large for a 32bit displacement. 9.70 intptr_t disp = (intptr_t) ct->byte_map_base; 9.71 if (is_simm32(disp)) { 9.72 Address cardtable(noreg, obj, Address::times_1, disp); 9.73 movb(cardtable, 0); 9.74 } else { 9.75 - // By doing it as an ExternalAddress disp could be converted to a rip-relative 9.76 - // displacement and done in a single instruction given favorable mapping and 9.77 - // a smarter version of as_Address. Worst case it is two instructions which 9.78 - // is no worse off then loading disp into a register and doing as a simple 9.79 - // Address() as above. 9.80 - // We can't do as ExternalAddress as the only style since if disp == 0 we'll 9.81 - // assert since NULL isn't acceptable in a reloci (see 6644928). In any case 9.82 - // in some cases we'll get a single instruction version. 9.83 - 9.84 - ExternalAddress cardtable((address)disp); 9.85 + // By doing it as an ExternalAddress 'disp' could be converted to a rip-relative 9.86 + // displacement and done in a single instruction given favorable mapping and a 9.87 + // smarter version of as_Address. However, 'ExternalAddress' generates a relocation 9.88 + // entry and that entry is not properly handled by the relocation code. 9.89 + AddressLiteral cardtable((address)ct->byte_map_base, relocInfo::none); 9.90 Address index(noreg, obj, Address::times_1); 9.91 movb(as_Address(ArrayAddress(cardtable, index)), 0); 9.92 }
10.1 --- a/src/share/vm/classfile/defaultMethods.cpp Wed Dec 11 12:28:09 2013 +0100 10.2 +++ b/src/share/vm/classfile/defaultMethods.cpp Thu Dec 12 11:05:39 2013 -0800 10.3 @@ -625,13 +625,13 @@ 10.4 while (super != NULL) { 10.5 for (int i = 0; i < super->methods()->length(); ++i) { 10.6 Method* m = super->methods()->at(i); 10.7 - if (m->is_overpass()) { 10.8 + if (m->is_overpass() || m->is_static()) { 10.9 // m is a method that would have been a miranda if not for the 10.10 // default method processing that occurred on behalf of our superclass, 10.11 // so it's a method we want to re-examine in this new context. That is, 10.12 // unless we have a real implementation of it in the current class. 10.13 Method* impl = klass->lookup_method(m->name(), m->signature()); 10.14 - if (impl == NULL || impl->is_overpass()) { 10.15 + if (impl == NULL || impl->is_overpass() || impl->is_static()) { 10.16 if (!already_in_vtable_slots(slots, m)) { 10.17 slots->append(new EmptyVtableSlot(m)); 10.18 } 10.19 @@ -648,7 +648,7 @@ 10.20 // so it's a method we want to re-examine in this new context. That is, 10.21 // unless we have a real implementation of it in the current class. 10.22 Method* impl = klass->lookup_method(m->name(), m->signature()); 10.23 - if (impl == NULL || impl->is_overpass()) { 10.24 + if (impl == NULL || impl->is_overpass() || impl->is_static()) { 10.25 if (!already_in_vtable_slots(slots, m)) { 10.26 slots->append(new EmptyVtableSlot(m)); 10.27 }
11.1 --- a/src/share/vm/gc_implementation/shared/markSweep.cpp Wed Dec 11 12:28:09 2013 +0100 11.2 +++ b/src/share/vm/gc_implementation/shared/markSweep.cpp Thu Dec 12 11:05:39 2013 -0800 11.3 @@ -66,29 +66,10 @@ 11.4 klass->oops_do(&MarkSweep::adjust_pointer_closure); 11.5 } 11.6 11.7 -void MarkSweep::follow_klass(Klass* klass) { 11.8 - ClassLoaderData* cld = klass->class_loader_data(); 11.9 - // The actual processing of the klass is done when we 11.10 - // traverse the list of Klasses in the class loader data. 11.11 - MarkSweep::follow_class_loader(cld); 11.12 -} 11.13 - 11.14 -void MarkSweep::adjust_klass(Klass* klass) { 11.15 - ClassLoaderData* cld = klass->class_loader_data(); 11.16 - // The actual processing of the klass is done when we 11.17 - // traverse the list of Klasses in the class loader data. 11.18 - MarkSweep::adjust_class_loader(cld); 11.19 -} 11.20 - 11.21 void MarkSweep::follow_class_loader(ClassLoaderData* cld) { 11.22 cld->oops_do(&MarkSweep::mark_and_push_closure, &MarkSweep::follow_klass_closure, true); 11.23 } 11.24 11.25 -void MarkSweep::adjust_class_loader(ClassLoaderData* cld) { 11.26 - cld->oops_do(&MarkSweep::adjust_pointer_closure, &MarkSweep::adjust_klass_closure, true); 11.27 -} 11.28 - 11.29 - 11.30 void MarkSweep::follow_stack() { 11.31 do { 11.32 while (!_marking_stack.is_empty()) {
12.1 --- a/src/share/vm/gc_implementation/shared/markSweep.hpp Wed Dec 11 12:28:09 2013 +0100 12.2 +++ b/src/share/vm/gc_implementation/shared/markSweep.hpp Thu Dec 12 11:05:39 2013 -0800 12.3 @@ -172,10 +172,8 @@ 12.4 static void follow_stack(); // Empty marking stack. 12.5 12.6 static void follow_klass(Klass* klass); 12.7 - static void adjust_klass(Klass* klass); 12.8 12.9 static void follow_class_loader(ClassLoaderData* cld); 12.10 - static void adjust_class_loader(ClassLoaderData* cld); 12.11 12.12 static void preserve_mark(oop p, markOop mark); 12.13 // Save the mark word so it can be restored later
13.1 --- a/src/share/vm/gc_implementation/shared/markSweep.inline.hpp Wed Dec 11 12:28:09 2013 +0100 13.2 +++ b/src/share/vm/gc_implementation/shared/markSweep.inline.hpp Thu Dec 12 11:05:39 2013 -0800 13.3 @@ -44,6 +44,11 @@ 13.4 } 13.5 } 13.6 13.7 +inline void MarkSweep::follow_klass(Klass* klass) { 13.8 + oop op = klass->klass_holder(); 13.9 + MarkSweep::mark_and_push(&op); 13.10 +} 13.11 + 13.12 template <class T> inline void MarkSweep::follow_root(T* p) { 13.13 assert(!Universe::heap()->is_in_reserved(p), 13.14 "roots shouldn't be things within the heap");
14.1 --- a/src/share/vm/interpreter/linkResolver.cpp Wed Dec 11 12:28:09 2013 +0100 14.2 +++ b/src/share/vm/interpreter/linkResolver.cpp Thu Dec 12 11:05:39 2013 -0800 14.3 @@ -242,7 +242,7 @@ 14.4 14.5 // Look up method in klasses, including static methods 14.6 // Then look up local default methods 14.7 -void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) { 14.8 +void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, bool checkpolymorphism, TRAPS) { 14.9 Method* result_oop = klass->uncached_lookup_method(name, signature); 14.10 if (result_oop == NULL) { 14.11 Array<Method*>* default_methods = InstanceKlass::cast(klass())->default_methods(); 14.12 @@ -251,7 +251,7 @@ 14.13 } 14.14 } 14.15 14.16 - if (EnableInvokeDynamic && result_oop != NULL) { 14.17 + if (checkpolymorphism && EnableInvokeDynamic && result_oop != NULL) { 14.18 vmIntrinsics::ID iid = result_oop->intrinsic_id(); 14.19 if (MethodHandles::is_signature_polymorphic(iid)) { 14.20 // Do not link directly to these. The VM must produce a synthetic one using lookup_polymorphic_method. 14.21 @@ -267,8 +267,8 @@ 14.22 Method* result_oop = klass->uncached_lookup_method(name, signature); 14.23 result = methodHandle(THREAD, result_oop); 14.24 while (!result.is_null() && result->is_static() && result->method_holder()->super() != NULL) { 14.25 - klass = KlassHandle(THREAD, result->method_holder()->super()); 14.26 - result = methodHandle(THREAD, klass->uncached_lookup_method(name, signature)); 14.27 + KlassHandle super_klass = KlassHandle(THREAD, result->method_holder()->super()); 14.28 + result = methodHandle(THREAD, super_klass->uncached_lookup_method(name, signature)); 14.29 } 14.30 14.31 if (result.is_null()) { 14.32 @@ -503,11 +503,14 @@ 14.33 } 14.34 14.35 if (code == Bytecodes::_invokeinterface) { 14.36 - resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, CHECK); 14.37 + resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, true, CHECK); 14.38 } else if (code == Bytecodes::_invokevirtual) { 14.39 resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, true, CHECK); 14.40 + } else if (!resolved_klass->is_interface()) { 14.41 + resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, false, CHECK); 14.42 } else { 14.43 - resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, false, CHECK); 14.44 + bool nostatics = (code == Bytecodes::_invokestatic) ? false : true; 14.45 + resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, nostatics, CHECK); 14.46 } 14.47 } 14.48 14.49 @@ -528,7 +531,7 @@ 14.50 } 14.51 14.52 // 2. lookup method in resolved klass and its super klasses 14.53 - lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, CHECK); 14.54 + lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, true, CHECK); 14.55 14.56 if (resolved_method.is_null()) { // not found in the class hierarchy 14.57 // 3. lookup method in all the interfaces implemented by the resolved klass 14.58 @@ -612,7 +615,8 @@ 14.59 Symbol* method_name, 14.60 Symbol* method_signature, 14.61 KlassHandle current_klass, 14.62 - bool check_access, TRAPS) { 14.63 + bool check_access, 14.64 + bool nostatics, TRAPS) { 14.65 14.66 // check if klass is interface 14.67 if (!resolved_klass->is_interface()) { 14.68 @@ -623,7 +627,8 @@ 14.69 } 14.70 14.71 // lookup method in this interface or its super, java.lang.Object 14.72 - lookup_instance_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, CHECK); 14.73 + // JDK8: also look for static methods 14.74 + lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, false, CHECK); 14.75 14.76 if (resolved_method.is_null()) { 14.77 // lookup method in all the super-interfaces 14.78 @@ -638,6 +643,16 @@ 14.79 } 14.80 } 14.81 14.82 + if (nostatics && resolved_method->is_static()) { 14.83 + ResourceMark rm(THREAD); 14.84 + char buf[200]; 14.85 + jio_snprintf(buf, sizeof(buf), "Expected instance not static method %s", Method::name_and_sig_as_C_string(resolved_klass(), 14.86 + resolved_method->name(), 14.87 + resolved_method->signature())); 14.88 + THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf); 14.89 + } 14.90 + 14.91 + 14.92 if (check_access) { 14.93 // JDK8 adds non-public interface methods, and accessability check requirement 14.94 assert(current_klass.not_null() , "current_klass should not be null"); 14.95 @@ -864,7 +879,11 @@ 14.96 Symbol* method_name, Symbol* method_signature, 14.97 KlassHandle current_klass, bool check_access, TRAPS) { 14.98 14.99 - resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, false, CHECK); 14.100 + if (!resolved_klass->is_interface()) { 14.101 + resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, false, CHECK); 14.102 + } else { 14.103 + resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, false, CHECK); 14.104 + } 14.105 assert(resolved_method->name() != vmSymbols::class_initializer_name(), "should have been checked in verifier"); 14.106 14.107 // check if static 14.108 @@ -898,7 +917,11 @@ 14.109 // and the selected method is recalculated relative to the direct superclass 14.110 // superinterface.method, which explicitly does not check shadowing 14.111 14.112 - resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, false, CHECK); 14.113 + if (!resolved_klass->is_interface()) { 14.114 + resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, false, CHECK); 14.115 + } else { 14.116 + resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, true, CHECK); 14.117 + } 14.118 14.119 // check if method name is <init>, that it is found in same klass as static type 14.120 if (resolved_method->name() == vmSymbols::object_initializer_name() && 14.121 @@ -1219,7 +1242,7 @@ 14.122 void LinkResolver::linktime_resolve_interface_method(methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, 14.123 Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS) { 14.124 // normal interface method resolution 14.125 - resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, CHECK); 14.126 + resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, true, CHECK); 14.127 14.128 assert(resolved_method->name() != vmSymbols::object_initializer_name(), "should have been checked in verifier"); 14.129 assert(resolved_method->name() != vmSymbols::class_initializer_name (), "should have been checked in verifier");
15.1 --- a/src/share/vm/interpreter/linkResolver.hpp Wed Dec 11 12:28:09 2013 +0100 15.2 +++ b/src/share/vm/interpreter/linkResolver.hpp Thu Dec 12 11:05:39 2013 -0800 15.3 @@ -124,7 +124,7 @@ 15.4 friend class klassItable; 15.5 15.6 private: 15.7 - static void lookup_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); 15.8 + static void lookup_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, bool checkpolymorphism, TRAPS); 15.9 static void lookup_instance_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); 15.10 static void lookup_method_in_interfaces (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS); 15.11 static void lookup_polymorphic_method (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, 15.12 @@ -134,7 +134,7 @@ 15.13 15.14 static void resolve_pool (KlassHandle& resolved_klass, Symbol*& method_name, Symbol*& method_signature, KlassHandle& current_klass, constantPoolHandle pool, int index, TRAPS); 15.15 15.16 - static void resolve_interface_method(methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS); 15.17 + static void resolve_interface_method(methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, bool nostatics, TRAPS); 15.18 static void resolve_method (methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, bool require_methodref, TRAPS); 15.19 15.20 static void linktime_resolve_static_method (methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS);
16.1 --- a/src/share/vm/oops/instanceKlass.cpp Wed Dec 11 12:28:09 2013 +0100 16.2 +++ b/src/share/vm/oops/instanceKlass.cpp Thu Dec 12 11:05:39 2013 -0800 16.3 @@ -1431,6 +1431,17 @@ 16.4 return InstanceKlass::find_method(methods(), name, signature); 16.5 } 16.6 16.7 +// find_instance_method looks up the name/signature in the local methods array 16.8 +// and skips over static methods 16.9 +Method* InstanceKlass::find_instance_method( 16.10 + Array<Method*>* methods, Symbol* name, Symbol* signature) { 16.11 + Method* meth = InstanceKlass::find_method(methods, name, signature); 16.12 + if (meth != NULL && meth->is_static()) { 16.13 + meth = NULL; 16.14 + } 16.15 + return meth; 16.16 +} 16.17 + 16.18 // find_method looks up the name/signature in the local methods array 16.19 Method* InstanceKlass::find_method( 16.20 Array<Method*>* methods, Symbol* name, Symbol* signature) { 16.21 @@ -2173,7 +2184,6 @@ 16.22 obj, \ 16.23 MarkSweep::adjust_pointer(p), \ 16.24 assert_is_in) 16.25 - MarkSweep::adjust_klass(obj->klass()); 16.26 return size; 16.27 } 16.28
17.1 --- a/src/share/vm/oops/instanceKlass.hpp Wed Dec 11 12:28:09 2013 +0100 17.2 +++ b/src/share/vm/oops/instanceKlass.hpp Thu Dec 12 11:05:39 2013 -0800 17.3 @@ -515,6 +515,7 @@ 17.4 // find a local method (returns NULL if not found) 17.5 Method* find_method(Symbol* name, Symbol* signature) const; 17.6 static Method* find_method(Array<Method*>* methods, Symbol* name, Symbol* signature); 17.7 + static Method* find_instance_method(Array<Method*>* methods, Symbol* name, Symbol* signature); 17.8 17.9 // find a local method index in default_methods (returns -1 if not found) 17.10 static int find_method_index(Array<Method*>* methods, Symbol* name, Symbol* signature);
18.1 --- a/src/share/vm/oops/instanceMirrorKlass.cpp Wed Dec 11 12:28:09 2013 +0100 18.2 +++ b/src/share/vm/oops/instanceMirrorKlass.cpp Thu Dec 12 11:05:39 2013 -0800 18.3 @@ -155,7 +155,13 @@ 18.4 // Follow the klass field in the mirror. 18.5 Klass* klass = java_lang_Class::as_Klass(obj); 18.6 if (klass != NULL) { 18.7 - MarkSweep::follow_klass(klass); 18.8 + // For anonymous classes we need to handle the class loader data, 18.9 + // otherwise it won't be claimed and can be unloaded. 18.10 + if (klass->oop_is_instance() && InstanceKlass::cast(klass)->is_anonymous()) { 18.11 + MarkSweep::follow_class_loader(klass->class_loader_data()); 18.12 + } else { 18.13 + MarkSweep::follow_klass(klass); 18.14 + } 18.15 } else { 18.16 // If klass is NULL then this a mirror for a primitive type. 18.17 // We don't have to follow them, since they are handled as strong 18.18 @@ -196,17 +202,6 @@ 18.19 int size = oop_size(obj); 18.20 InstanceKlass::oop_adjust_pointers(obj); 18.21 18.22 - // Follow the klass field in the mirror. 18.23 - Klass* klass = java_lang_Class::as_Klass(obj); 18.24 - if (klass != NULL) { 18.25 - MarkSweep::adjust_klass(klass); 18.26 - } else { 18.27 - // If klass is NULL then this a mirror for a primitive type. 18.28 - // We don't have to follow them, since they are handled as strong 18.29 - // roots in Universe::oops_do. 18.30 - assert(java_lang_Class::is_primitive(obj), "Sanity check"); 18.31 - } 18.32 - 18.33 InstanceMirrorKlass_OOP_ITERATE( \ 18.34 start_of_static_fields(obj), java_lang_Class::static_oop_field_count(obj), \ 18.35 MarkSweep::adjust_pointer(p), \
19.1 --- a/src/share/vm/oops/klassVtable.cpp Wed Dec 11 12:28:09 2013 +0100 19.2 +++ b/src/share/vm/oops/klassVtable.cpp Thu Dec 12 11:05:39 2013 -0800 19.3 @@ -665,6 +665,11 @@ 19.4 19.5 // check if a method is a miranda method, given a class's methods table, 19.6 // its default_method table and its super 19.7 +// Miranda methods are calculated twice: 19.8 +// first: before vtable size calculation: including abstract and default 19.9 +// This is seen by default method creation 19.10 +// Second: recalculated during vtable initialization: only abstract 19.11 +// This is seen by link resolution and selection. 19.12 // "miranda" means not static, not defined by this class. 19.13 // private methods in interfaces do not belong in the miranda list. 19.14 // the caller must make sure that the method belongs to an interface implemented by the class 19.15 @@ -678,7 +683,8 @@ 19.16 } 19.17 Symbol* name = m->name(); 19.18 Symbol* signature = m->signature(); 19.19 - if (InstanceKlass::find_method(class_methods, name, signature) == NULL) { 19.20 + 19.21 + if (InstanceKlass::find_instance_method(class_methods, name, signature) == NULL) { 19.22 // did not find it in the method table of the current class 19.23 if ((default_methods == NULL) || 19.24 InstanceKlass::find_method(default_methods, name, signature) == NULL) { 19.25 @@ -688,6 +694,12 @@ 19.26 } 19.27 19.28 Method* mo = InstanceKlass::cast(super)->lookup_method(name, signature); 19.29 + while (mo != NULL && mo->access_flags().is_static() 19.30 + && mo->method_holder() != NULL 19.31 + && mo->method_holder()->super() != NULL) 19.32 + { 19.33 + mo = mo->method_holder()->super()->uncached_lookup_method(name, signature); 19.34 + } 19.35 if (mo == NULL || mo->access_flags().is_private() ) { 19.36 // super class hierarchy does not implement it or protection is different 19.37 return true;
20.1 --- a/src/share/vm/oops/objArrayKlass.cpp Wed Dec 11 12:28:09 2013 +0100 20.2 +++ b/src/share/vm/oops/objArrayKlass.cpp Thu Dec 12 11:05:39 2013 -0800 20.3 @@ -569,7 +569,6 @@ 20.4 // Get size before changing pointers. 20.5 // Don't call size() or oop_size() since that is a virtual call. 20.6 int size = a->object_size(); 20.7 - MarkSweep::adjust_klass(a->klass()); 20.8 ObjArrayKlass_OOP_ITERATE(a, p, MarkSweep::adjust_pointer(p)) 20.9 return size; 20.10 }
21.1 --- a/src/share/vm/opto/c2_globals.hpp Wed Dec 11 12:28:09 2013 +0100 21.2 +++ b/src/share/vm/opto/c2_globals.hpp Thu Dec 12 11:05:39 2013 -0800 21.3 @@ -647,7 +647,7 @@ 21.4 diagnostic(bool, OptimizeExpensiveOps, true, \ 21.5 "Find best control for expensive operations") \ 21.6 \ 21.7 - product(bool, UseMathExactIntrinsics, true, \ 21.8 + experimental(bool, UseMathExactIntrinsics, false, \ 21.9 "Enables intrinsification of various java.lang.Math functions") \ 21.10 \ 21.11 experimental(bool, ReplaceInParentMaps, false, \
22.1 --- a/src/share/vm/prims/jvmtiEnvThreadState.cpp Wed Dec 11 12:28:09 2013 +0100 22.2 +++ b/src/share/vm/prims/jvmtiEnvThreadState.cpp Thu Dec 12 11:05:39 2013 -0800 22.3 @@ -269,11 +269,20 @@ 22.4 void doit() { 22.5 ResourceMark rmark; // _thread != Thread::current() 22.6 RegisterMap rm(_thread, false); 22.7 - javaVFrame* vf = _thread->last_java_vframe(&rm); 22.8 - assert(vf != NULL, "must have last java frame"); 22.9 - Method* method = vf->method(); 22.10 - _method_id = method->jmethod_id(); 22.11 - _bci = vf->bci(); 22.12 + // There can be a race condition between a VM_Operation reaching a safepoint 22.13 + // and the target thread exiting from Java execution. 22.14 + // We must recheck the last Java frame still exists. 22.15 + if (_thread->has_last_Java_frame()) { 22.16 + javaVFrame* vf = _thread->last_java_vframe(&rm); 22.17 + assert(vf != NULL, "must have last java frame"); 22.18 + Method* method = vf->method(); 22.19 + _method_id = method->jmethod_id(); 22.20 + _bci = vf->bci(); 22.21 + } else { 22.22 + // Clear current location as the target thread has no Java frames anymore. 22.23 + _method_id = (jmethodID)NULL; 22.24 + _bci = 0; 22.25 + } 22.26 } 22.27 void get_current_location(jmethodID *method_id, int *bci) { 22.28 *method_id = _method_id;
23.1 --- a/src/share/vm/prims/jvmtiImpl.hpp Wed Dec 11 12:28:09 2013 +0100 23.2 +++ b/src/share/vm/prims/jvmtiImpl.hpp Thu Dec 12 11:05:39 2013 -0800 23.3 @@ -299,7 +299,7 @@ 23.4 static inline bool is_breakpoint(address bcp); 23.5 23.6 static void oops_do(OopClosure* f); 23.7 - static void metadata_do(void f(Metadata*)); 23.8 + static void metadata_do(void f(Metadata*)) NOT_JVMTI_RETURN; 23.9 static void gc_epilogue(); 23.10 }; 23.11
24.1 --- a/src/share/vm/runtime/arguments.cpp Wed Dec 11 12:28:09 2013 +0100 24.2 +++ b/src/share/vm/runtime/arguments.cpp Thu Dec 12 11:05:39 2013 -0800 24.3 @@ -2281,18 +2281,6 @@ 24.4 status = status && verify_percentage(MarkSweepDeadRatio, "MarkSweepDeadRatio"); 24.5 24.6 status = status && verify_min_value(MarkSweepAlwaysCompactCount, 1, "MarkSweepAlwaysCompactCount"); 24.7 -#ifdef SPARC 24.8 - if (UseConcMarkSweepGC || UseG1GC) { 24.9 - // Issue a stern warning if the user has explicitly set 24.10 - // UseMemSetInBOT (it is known to cause issues), but allow 24.11 - // use for experimentation and debugging. 24.12 - if (VM_Version::is_sun4v() && UseMemSetInBOT) { 24.13 - assert(!FLAG_IS_DEFAULT(UseMemSetInBOT), "Error"); 24.14 - warning("Experimental flag -XX:+UseMemSetInBOT is known to cause instability" 24.15 - " on sun4v; please understand that you are using at your own risk!"); 24.16 - } 24.17 - } 24.18 -#endif // SPARC 24.19 24.20 if (PrintNMTStatistics) { 24.21 #if INCLUDE_NMT
25.1 --- a/test/TEST.groups Wed Dec 11 12:28:09 2013 +0100 25.2 +++ b/test/TEST.groups Thu Dec 12 11:05:39 2013 -0800 25.3 @@ -70,7 +70,6 @@ 25.4 runtime/7107135/Test7107135.sh \ 25.5 runtime/7158988/FieldMonitor.java \ 25.6 runtime/7194254/Test7194254.java \ 25.7 - runtime/8026365/InvokeSpecialAnonTest.java \ 25.8 runtime/jsig/Test8017498.sh \ 25.9 runtime/Metaspace/FragmentMetaspace.java \ 25.10 runtime/NMT/BaselineWithParameter.java \
26.1 --- a/test/compiler/intrinsics/mathexact/AddExactICondTest.java Wed Dec 11 12:28:09 2013 +0100 26.2 +++ b/test/compiler/intrinsics/mathexact/AddExactICondTest.java Thu Dec 12 11:05:39 2013 -0800 26.3 @@ -26,7 +26,7 @@ 26.4 * @bug 8024924 26.5 * @summary Test non constant addExact 26.6 * @compile AddExactICondTest.java 26.7 - * @run main AddExactICondTest 26.8 + * @run main AddExactICondTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 26.9 * 26.10 */ 26.11
27.1 --- a/test/compiler/intrinsics/mathexact/AddExactIConstantTest.java Wed Dec 11 12:28:09 2013 +0100 27.2 +++ b/test/compiler/intrinsics/mathexact/AddExactIConstantTest.java Thu Dec 12 11:05:39 2013 -0800 27.3 @@ -26,7 +26,7 @@ 27.4 * @bug 8024924 27.5 * @summary Test constant addExact 27.6 * @compile AddExactIConstantTest.java Verify.java 27.7 - * @run main AddExactIConstantTest 27.8 + * @run main AddExactIConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 27.9 * 27.10 */ 27.11
28.1 --- a/test/compiler/intrinsics/mathexact/AddExactILoadTest.java Wed Dec 11 12:28:09 2013 +0100 28.2 +++ b/test/compiler/intrinsics/mathexact/AddExactILoadTest.java Thu Dec 12 11:05:39 2013 -0800 28.3 @@ -26,7 +26,7 @@ 28.4 * @bug 8024924 28.5 * @summary Test non constant addExact 28.6 * @compile AddExactILoadTest.java Verify.java 28.7 - * @run main AddExactILoadTest 28.8 + * @run main AddExactILoadTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 28.9 * 28.10 */ 28.11
29.1 --- a/test/compiler/intrinsics/mathexact/AddExactILoopDependentTest.java Wed Dec 11 12:28:09 2013 +0100 29.2 +++ b/test/compiler/intrinsics/mathexact/AddExactILoopDependentTest.java Thu Dec 12 11:05:39 2013 -0800 29.3 @@ -26,7 +26,7 @@ 29.4 * @bug 8024924 29.5 * @summary Test non constant addExact 29.6 * @compile AddExactILoopDependentTest.java Verify.java 29.7 - * @run main AddExactILoopDependentTest 29.8 + * @run main AddExactILoopDependentTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 29.9 * 29.10 */ 29.11
30.1 --- a/test/compiler/intrinsics/mathexact/AddExactINonConstantTest.java Wed Dec 11 12:28:09 2013 +0100 30.2 +++ b/test/compiler/intrinsics/mathexact/AddExactINonConstantTest.java Thu Dec 12 11:05:39 2013 -0800 30.3 @@ -26,7 +26,7 @@ 30.4 * @bug 8024924 30.5 * @summary Test non constant addExact 30.6 * @compile AddExactINonConstantTest.java Verify.java 30.7 - * @run main AddExactINonConstantTest 30.8 + * @run main AddExactINonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 30.9 * 30.10 */ 30.11
31.1 --- a/test/compiler/intrinsics/mathexact/AddExactIRepeatTest.java Wed Dec 11 12:28:09 2013 +0100 31.2 +++ b/test/compiler/intrinsics/mathexact/AddExactIRepeatTest.java Thu Dec 12 11:05:39 2013 -0800 31.3 @@ -26,7 +26,7 @@ 31.4 * @bug 8025657 31.5 * @summary Test repeating addExact 31.6 * @compile AddExactIRepeatTest.java Verify.java 31.7 - * @run main AddExactIRepeatTest 31.8 + * @run main AddExactIRepeatTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 31.9 * 31.10 */ 31.11
32.1 --- a/test/compiler/intrinsics/mathexact/AddExactLConstantTest.java Wed Dec 11 12:28:09 2013 +0100 32.2 +++ b/test/compiler/intrinsics/mathexact/AddExactLConstantTest.java Thu Dec 12 11:05:39 2013 -0800 32.3 @@ -26,7 +26,7 @@ 32.4 * @bug 8026844 32.5 * @summary Test constant addExact 32.6 * @compile AddExactLConstantTest.java Verify.java 32.7 - * @run main AddExactLConstantTest 32.8 + * @run main AddExactLConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 32.9 * 32.10 */ 32.11
33.1 --- a/test/compiler/intrinsics/mathexact/AddExactLNonConstantTest.java Wed Dec 11 12:28:09 2013 +0100 33.2 +++ b/test/compiler/intrinsics/mathexact/AddExactLNonConstantTest.java Thu Dec 12 11:05:39 2013 -0800 33.3 @@ -26,7 +26,7 @@ 33.4 * @bug 8026844 33.5 * @summary Test non constant addExact 33.6 * @compile AddExactLNonConstantTest.java Verify.java 33.7 - * @run main AddExactLNonConstantTest 33.8 + * @run main AddExactLNonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 33.9 * 33.10 */ 33.11
34.1 --- a/test/compiler/intrinsics/mathexact/CompareTest.java Wed Dec 11 12:28:09 2013 +0100 34.2 +++ b/test/compiler/intrinsics/mathexact/CompareTest.java Thu Dec 12 11:05:39 2013 -0800 34.3 @@ -26,7 +26,7 @@ 34.4 * @bug 8026722 34.5 * @summary Verify that the compare after addExact is a signed compare 34.6 * @compile CompareTest.java 34.7 - * @run main CompareTest 34.8 + * @run main CompareTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 34.9 * 34.10 */ 34.11
35.1 --- a/test/compiler/intrinsics/mathexact/DecExactITest.java Wed Dec 11 12:28:09 2013 +0100 35.2 +++ b/test/compiler/intrinsics/mathexact/DecExactITest.java Thu Dec 12 11:05:39 2013 -0800 35.3 @@ -26,7 +26,7 @@ 35.4 * @bug 8026844 35.5 * @summary Test decrementExact 35.6 * @compile DecExactITest.java Verify.java 35.7 - * @run main DecExactITest 35.8 + * @run main DecExactITest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 35.9 * 35.10 */ 35.11
36.1 --- a/test/compiler/intrinsics/mathexact/DecExactLTest.java Wed Dec 11 12:28:09 2013 +0100 36.2 +++ b/test/compiler/intrinsics/mathexact/DecExactLTest.java Thu Dec 12 11:05:39 2013 -0800 36.3 @@ -25,8 +25,8 @@ 36.4 * @test 36.5 * @bug 8026844 36.6 * @summary Test decrementExact 36.7 - * @compile DecExactITest.java Verify.java 36.8 - * @run main DecExactITest 36.9 + * @compile DecExactLTest.java Verify.java 36.10 + * @run main DecExactLTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 36.11 * 36.12 */ 36.13
37.1 --- a/test/compiler/intrinsics/mathexact/GVNTest.java Wed Dec 11 12:28:09 2013 +0100 37.2 +++ b/test/compiler/intrinsics/mathexact/GVNTest.java Thu Dec 12 11:05:39 2013 -0800 37.3 @@ -26,7 +26,7 @@ 37.4 * @bug 8028207 37.5 * @summary Verify that GVN doesn't mess up the two addExacts 37.6 * @compile GVNTest.java 37.7 - * @run main GVNTest 37.8 + * @run main GVNTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 37.9 * 37.10 */ 37.11
38.1 --- a/test/compiler/intrinsics/mathexact/IncExactITest.java Wed Dec 11 12:28:09 2013 +0100 38.2 +++ b/test/compiler/intrinsics/mathexact/IncExactITest.java Thu Dec 12 11:05:39 2013 -0800 38.3 @@ -26,7 +26,7 @@ 38.4 * @bug 8026844 38.5 * @summary Test incrementExact 38.6 * @compile IncExactITest.java Verify.java 38.7 - * @run main IncExactITest 38.8 + * @run main IncExactITest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 38.9 * 38.10 */ 38.11
39.1 --- a/test/compiler/intrinsics/mathexact/IncExactLTest.java Wed Dec 11 12:28:09 2013 +0100 39.2 +++ b/test/compiler/intrinsics/mathexact/IncExactLTest.java Thu Dec 12 11:05:39 2013 -0800 39.3 @@ -26,7 +26,7 @@ 39.4 * @bug 8026844 39.5 * @summary Test incrementExact 39.6 * @compile IncExactLTest.java Verify.java 39.7 - * @run main IncExactLTest 39.8 + * @run main IncExactLTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 39.9 * 39.10 */ 39.11
40.1 --- a/test/compiler/intrinsics/mathexact/MulExactICondTest.java Wed Dec 11 12:28:09 2013 +0100 40.2 +++ b/test/compiler/intrinsics/mathexact/MulExactICondTest.java Thu Dec 12 11:05:39 2013 -0800 40.3 @@ -26,7 +26,7 @@ 40.4 * @bug 8026844 40.5 * @summary Test multiplyExact as condition 40.6 * @compile MulExactICondTest.java 40.7 - * @run main MulExactICondTest 40.8 + * @run main MulExactICondTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 40.9 * 40.10 */ 40.11
41.1 --- a/test/compiler/intrinsics/mathexact/MulExactIConstantTest.java Wed Dec 11 12:28:09 2013 +0100 41.2 +++ b/test/compiler/intrinsics/mathexact/MulExactIConstantTest.java Thu Dec 12 11:05:39 2013 -0800 41.3 @@ -26,7 +26,7 @@ 41.4 * @bug 8026844 41.5 * @summary Test constant multiplyExact 41.6 * @compile MulExactIConstantTest.java Verify.java 41.7 - * @run main MulExactIConstantTest 41.8 + * @run main MulExactIConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 41.9 * 41.10 */ 41.11
42.1 --- a/test/compiler/intrinsics/mathexact/MulExactILoadTest.java Wed Dec 11 12:28:09 2013 +0100 42.2 +++ b/test/compiler/intrinsics/mathexact/MulExactILoadTest.java Thu Dec 12 11:05:39 2013 -0800 42.3 @@ -26,7 +26,7 @@ 42.4 * @bug 8026844 42.5 * @summary Test multiplyExact 42.6 * @compile MulExactILoadTest.java Verify.java 42.7 - * @run main MulExactILoadTest 42.8 + * @run main MulExactILoadTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 42.9 * 42.10 */ 42.11
43.1 --- a/test/compiler/intrinsics/mathexact/MulExactILoopDependentTest.java Wed Dec 11 12:28:09 2013 +0100 43.2 +++ b/test/compiler/intrinsics/mathexact/MulExactILoopDependentTest.java Thu Dec 12 11:05:39 2013 -0800 43.3 @@ -26,7 +26,7 @@ 43.4 * @bug 8026844 43.5 * @summary Test loop dependent multiplyExact 43.6 * @compile MulExactILoopDependentTest.java Verify.java 43.7 - * @run main MulExactILoopDependentTest 43.8 + * @run main MulExactILoopDependentTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 43.9 * 43.10 */ 43.11 public class MulExactILoopDependentTest {
44.1 --- a/test/compiler/intrinsics/mathexact/MulExactINonConstantTest.java Wed Dec 11 12:28:09 2013 +0100 44.2 +++ b/test/compiler/intrinsics/mathexact/MulExactINonConstantTest.java Thu Dec 12 11:05:39 2013 -0800 44.3 @@ -26,7 +26,7 @@ 44.4 * @bug 8026844 44.5 * @summary Test non constant multiplyExact 44.6 * @compile MulExactINonConstantTest.java Verify.java 44.7 - * @run main MulExactINonConstantTest 44.8 + * @run main MulExactINonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 44.9 * 44.10 */ 44.11
45.1 --- a/test/compiler/intrinsics/mathexact/MulExactIRepeatTest.java Wed Dec 11 12:28:09 2013 +0100 45.2 +++ b/test/compiler/intrinsics/mathexact/MulExactIRepeatTest.java Thu Dec 12 11:05:39 2013 -0800 45.3 @@ -26,7 +26,7 @@ 45.4 * @bug 8026844 45.5 * @summary Test repeating multiplyExact 45.6 * @compile MulExactIRepeatTest.java Verify.java 45.7 - * @run main MulExactIRepeatTest 45.8 + * @run main MulExactIRepeatTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 45.9 * 45.10 */ 45.11
46.1 --- a/test/compiler/intrinsics/mathexact/MulExactLConstantTest.java Wed Dec 11 12:28:09 2013 +0100 46.2 +++ b/test/compiler/intrinsics/mathexact/MulExactLConstantTest.java Thu Dec 12 11:05:39 2013 -0800 46.3 @@ -26,7 +26,7 @@ 46.4 * @bug 8026844 46.5 * @summary Test constant mulExact 46.6 * @compile MulExactLConstantTest.java Verify.java 46.7 - * @run main MulExactLConstantTest 46.8 + * @run main MulExactLConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 46.9 * 46.10 */ 46.11
47.1 --- a/test/compiler/intrinsics/mathexact/MulExactLNonConstantTest.java Wed Dec 11 12:28:09 2013 +0100 47.2 +++ b/test/compiler/intrinsics/mathexact/MulExactLNonConstantTest.java Thu Dec 12 11:05:39 2013 -0800 47.3 @@ -26,7 +26,7 @@ 47.4 * @bug 8026844 47.5 * @summary Test non constant mulExact 47.6 * @compile MulExactLNonConstantTest.java Verify.java 47.7 - * @run main MulExactLNonConstantTest 47.8 + * @run main MulExactLNonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 47.9 * 47.10 */ 47.11
48.1 --- a/test/compiler/intrinsics/mathexact/NegExactIConstantTest.java Wed Dec 11 12:28:09 2013 +0100 48.2 +++ b/test/compiler/intrinsics/mathexact/NegExactIConstantTest.java Thu Dec 12 11:05:39 2013 -0800 48.3 @@ -26,7 +26,7 @@ 48.4 * @bug 8026844 48.5 * @summary Test constant negExact 48.6 * @compile NegExactIConstantTest.java Verify.java 48.7 - * @run main NegExactIConstantTest 48.8 + * @run main NegExactIConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 48.9 * 48.10 */ 48.11
49.1 --- a/test/compiler/intrinsics/mathexact/NegExactILoadTest.java Wed Dec 11 12:28:09 2013 +0100 49.2 +++ b/test/compiler/intrinsics/mathexact/NegExactILoadTest.java Thu Dec 12 11:05:39 2013 -0800 49.3 @@ -26,7 +26,7 @@ 49.4 * @bug 8026844 49.5 * @summary Test negExact 49.6 * @compile NegExactILoadTest.java Verify.java 49.7 - * @run main NegExactILoadTest 49.8 + * @run main NegExactILoadTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 49.9 * 49.10 */ 49.11
50.1 --- a/test/compiler/intrinsics/mathexact/NegExactILoopDependentTest.java Wed Dec 11 12:28:09 2013 +0100 50.2 +++ b/test/compiler/intrinsics/mathexact/NegExactILoopDependentTest.java Thu Dec 12 11:05:39 2013 -0800 50.3 @@ -26,7 +26,7 @@ 50.4 * @bug 8026844 50.5 * @summary Test negExact loop dependent 50.6 * @compile NegExactILoopDependentTest.java Verify.java 50.7 - * @run main NegExactILoopDependentTest 50.8 + * @run main NegExactILoopDependentTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 50.9 * 50.10 */ 50.11 public class NegExactILoopDependentTest {
51.1 --- a/test/compiler/intrinsics/mathexact/NegExactINonConstantTest.java Wed Dec 11 12:28:09 2013 +0100 51.2 +++ b/test/compiler/intrinsics/mathexact/NegExactINonConstantTest.java Thu Dec 12 11:05:39 2013 -0800 51.3 @@ -26,7 +26,7 @@ 51.4 * @bug 8026844 51.5 * @summary Test non constant negExact 51.6 * @compile NegExactINonConstantTest.java Verify.java 51.7 - * @run main NegExactINonConstantTest 51.8 + * @run main NegExactINonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 51.9 * 51.10 */ 51.11
52.1 --- a/test/compiler/intrinsics/mathexact/NegExactLConstantTest.java Wed Dec 11 12:28:09 2013 +0100 52.2 +++ b/test/compiler/intrinsics/mathexact/NegExactLConstantTest.java Thu Dec 12 11:05:39 2013 -0800 52.3 @@ -26,7 +26,7 @@ 52.4 * @bug 8026844 52.5 * @summary Test constant negExact 52.6 * @compile NegExactLConstantTest.java Verify.java 52.7 - * @run main NegExactLConstantTest 52.8 + * @run main NegExactLConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 52.9 * 52.10 */ 52.11
53.1 --- a/test/compiler/intrinsics/mathexact/NegExactLNonConstantTest.java Wed Dec 11 12:28:09 2013 +0100 53.2 +++ b/test/compiler/intrinsics/mathexact/NegExactLNonConstantTest.java Thu Dec 12 11:05:39 2013 -0800 53.3 @@ -26,7 +26,7 @@ 53.4 * @bug 8026844 53.5 * @summary Test constant negExact 53.6 * @compile NegExactLNonConstantTest.java Verify.java 53.7 - * @run main NegExactLNonConstantTest 53.8 + * @run main NegExactLNonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 53.9 * 53.10 */ 53.11
54.1 --- a/test/compiler/intrinsics/mathexact/NestedMathExactTest.java Wed Dec 11 12:28:09 2013 +0100 54.2 +++ b/test/compiler/intrinsics/mathexact/NestedMathExactTest.java Thu Dec 12 11:05:39 2013 -0800 54.3 @@ -26,7 +26,7 @@ 54.4 * @bug 8027444 54.5 * @summary Test nested loops 54.6 * @compile NestedMathExactTest.java 54.7 - * @run main NestedMathExactTest 54.8 + * @run main NestedMathExactTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 54.9 * 54.10 */ 54.11
55.1 --- a/test/compiler/intrinsics/mathexact/SplitThruPhiTest.java Wed Dec 11 12:28:09 2013 +0100 55.2 +++ b/test/compiler/intrinsics/mathexact/SplitThruPhiTest.java Thu Dec 12 11:05:39 2013 -0800 55.3 @@ -26,7 +26,7 @@ 55.4 * @bug 8028198 55.5 * @summary Verify that split through phi does the right thing 55.6 * @compile SplitThruPhiTest.java 55.7 - * @run main SplitThruPhiTest 55.8 + * @run main SplitThruPhiTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 55.9 * 55.10 */ 55.11
56.1 --- a/test/compiler/intrinsics/mathexact/SubExactICondTest.java Wed Dec 11 12:28:09 2013 +0100 56.2 +++ b/test/compiler/intrinsics/mathexact/SubExactICondTest.java Thu Dec 12 11:05:39 2013 -0800 56.3 @@ -26,7 +26,7 @@ 56.4 * @bug 8026844 56.5 * @summary Test subtractExact as condition 56.6 * @compile SubExactICondTest.java Verify.java 56.7 - * @run main SubExactICondTest 56.8 + * @run main SubExactICondTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 56.9 * 56.10 */ 56.11
57.1 --- a/test/compiler/intrinsics/mathexact/SubExactIConstantTest.java Wed Dec 11 12:28:09 2013 +0100 57.2 +++ b/test/compiler/intrinsics/mathexact/SubExactIConstantTest.java Thu Dec 12 11:05:39 2013 -0800 57.3 @@ -26,7 +26,7 @@ 57.4 * @bug 8026844 57.5 * @summary Test constant subtractExact 57.6 * @compile SubExactIConstantTest.java Verify.java 57.7 - * @run main SubExactIConstantTest 57.8 + * @run main SubExactIConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 57.9 * 57.10 */ 57.11
58.1 --- a/test/compiler/intrinsics/mathexact/SubExactILoadTest.java Wed Dec 11 12:28:09 2013 +0100 58.2 +++ b/test/compiler/intrinsics/mathexact/SubExactILoadTest.java Thu Dec 12 11:05:39 2013 -0800 58.3 @@ -26,7 +26,7 @@ 58.4 * @bug 8026844 58.5 * @summary Test non constant subtractExact 58.6 * @compile SubExactILoadTest.java Verify.java 58.7 - * @run main SubExactILoadTest 58.8 + * @run main SubExactILoadTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 58.9 * 58.10 */ 58.11
59.1 --- a/test/compiler/intrinsics/mathexact/SubExactILoopDependentTest.java Wed Dec 11 12:28:09 2013 +0100 59.2 +++ b/test/compiler/intrinsics/mathexact/SubExactILoopDependentTest.java Thu Dec 12 11:05:39 2013 -0800 59.3 @@ -26,7 +26,7 @@ 59.4 * @bug 8026844 59.5 * @summary Test non constant subtractExact 59.6 * @compile SubExactILoopDependentTest.java Verify.java 59.7 - * @run main SubExactILoopDependentTest 59.8 + * @run main SubExactILoopDependentTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 59.9 * 59.10 */ 59.11
60.1 --- a/test/compiler/intrinsics/mathexact/SubExactINonConstantTest.java Wed Dec 11 12:28:09 2013 +0100 60.2 +++ b/test/compiler/intrinsics/mathexact/SubExactINonConstantTest.java Thu Dec 12 11:05:39 2013 -0800 60.3 @@ -26,7 +26,7 @@ 60.4 * @bug 8026844 60.5 * @summary Test non constant subtractExact 60.6 * @compile SubExactINonConstantTest.java Verify.java 60.7 - * @run main SubExactINonConstantTest 60.8 + * @run main SubExactINonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 60.9 * 60.10 */ 60.11
61.1 --- a/test/compiler/intrinsics/mathexact/SubExactIRepeatTest.java Wed Dec 11 12:28:09 2013 +0100 61.2 +++ b/test/compiler/intrinsics/mathexact/SubExactIRepeatTest.java Thu Dec 12 11:05:39 2013 -0800 61.3 @@ -26,7 +26,7 @@ 61.4 * @bug 8026844 61.5 * @summary Test repeating subtractExact 61.6 * @compile SubExactIRepeatTest.java Verify.java 61.7 - * @run main SubExactIRepeatTest 61.8 + * @run main SubExactIRepeatTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 61.9 * 61.10 */ 61.11
62.1 --- a/test/compiler/intrinsics/mathexact/SubExactLConstantTest.java Wed Dec 11 12:28:09 2013 +0100 62.2 +++ b/test/compiler/intrinsics/mathexact/SubExactLConstantTest.java Thu Dec 12 11:05:39 2013 -0800 62.3 @@ -27,7 +27,7 @@ 62.4 * @bug 8027353 62.5 * @summary Test constant subtractExact 62.6 * @compile SubExactLConstantTest.java Verify.java 62.7 - * @run main SubExactLConstantTest 62.8 + * @run main SubExactLConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 62.9 * 62.10 */ 62.11
63.1 --- a/test/compiler/intrinsics/mathexact/SubExactLNonConstantTest.java Wed Dec 11 12:28:09 2013 +0100 63.2 +++ b/test/compiler/intrinsics/mathexact/SubExactLNonConstantTest.java Thu Dec 12 11:05:39 2013 -0800 63.3 @@ -27,7 +27,7 @@ 63.4 * @bug 8027353 63.5 * @summary Test non constant subtractExact 63.6 * @compile SubExactLNonConstantTest.java Verify.java 63.7 - * @run main SubExactLNonConstantTest 63.8 + * @run main SubExactLNonConstantTest -XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseMathExactIntrinsics 63.9 * 63.10 */ 63.11
64.1 --- a/test/runtime/8024804/RegisterNatives.java Wed Dec 11 12:28:09 2013 +0100 64.2 +++ b/test/runtime/8024804/RegisterNatives.java Thu Dec 12 11:05:39 2013 -0800 64.3 @@ -22,6 +22,7 @@ 64.4 */ 64.5 64.6 /* 64.7 + * @ignore 8028741 64.8 * @test 64.9 * @bug 8024804 64.10 * @summary registerNatives() interface resolution should receive IAE