--- a/.hgtags-top-repo Tue Dec 10 15:20:46 2013 -0800
+++ b/.hgtags-top-repo Wed Jul 05 19:25:17 2017 +0200
@@ -240,3 +240,4 @@
cbfe5da942c63ef865cab4a7159e01eff7d7fcf5 jdk8-b116
a4afb0a8d55ef75aef5b0d77b434070468fb89f8 jdk8-b117
0a6db1aac998cdc88e52f9adb97d40ca5b0f1da6 jdk8-b118
+9e90215673be68a3e77a9e444e4232076373734d jdk8-b119
--- a/Makefile Tue Dec 10 15:20:46 2013 -0800
+++ b/Makefile Wed Jul 05 19:25:17 2017 +0200
@@ -66,12 +66,12 @@
# First, find out the valid targets
# Run the makefile with an arbitrary SPEC using -p -q (quiet dry-run and dump rules) to find
# available PHONY targets. Use this list as valid targets to pass on to the repeated calls.
- all_phony_targets=$(filter-out $(global_targets) bundles-only, $(strip $(shell \
- $(MAKE) -p -q -f make/Main.gmk FRC SPEC=$(firstword $(SPEC)) | \
+ all_phony_targets=$(filter-out $(global_targets) bundles bundles-only final-images-only, $(strip $(shell \
+ cd $(root_dir) && $(MAKE) -p -q FRC SPEC=$(firstword $(SPEC)) | \
grep ^.PHONY: | head -n 1 | cut -d " " -f 2-)))
$(all_phony_targets):
- @$(foreach spec,$(SPEC),($(MAKE) -f NewMakefile.gmk SPEC=$(spec) \
+ @$(foreach spec,$(SPEC),(cd $(root_dir) && $(MAKE) SPEC=$(spec) \
$(VERBOSE) VERBOSE=$(VERBOSE) LOG_LEVEL=$(LOG_LEVEL) $@) &&) true
.PHONY: $(all_phony_targets)
--- a/common/autoconf/spec.gmk.in Tue Dec 10 15:20:46 2013 -0800
+++ b/common/autoconf/spec.gmk.in Wed Jul 05 19:25:17 2017 +0200
@@ -236,7 +236,6 @@
JDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk
NASHORN_OUTPUTDIR=$(BUILD_OUTPUT)/nashorn
IMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images
-JCE_OUTPUTDIR=$(BUILD_OUTPUT)/jce-release
LANGTOOLS_DIST=$(LANGTOOLS_OUTPUTDIR)/dist
CORBA_DIST=$(CORBA_OUTPUTDIR)/dist
--- a/hotspot/.hgtags Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/.hgtags Wed Jul 05 19:25:17 2017 +0200
@@ -399,3 +399,5 @@
abad3b2d905d9e1ad767c94baa94aba6ed5b207b hs25-b60
c9f439732b18ea16f7e65815327d5ea7092cc258 jdk8-b118
b2426da30009cd3069d03de073f351e6432c7682 hs25-b61
+ce42d815dd2130250acf6132b51b624001638f0d jdk8-b119
+05fedd51e40da22c9460bf17c7185889e435db3d hs25-b62
--- a/hotspot/agent/make/jsdbproc64.sh Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/agent/make/jsdbproc64.sh Wed Jul 05 19:25:17 2017 +0200
@@ -1,7 +1,7 @@
-#!/bin/sh
+#!/bin/sh
#
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -21,10 +21,10 @@
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
-#
+#
#
-
-. `dirname $0`/saenv64.sh
-
-$SA_JAVA_CMD sun.jvm.hotspot.tools.JSDB $*
+
+. `dirname $0`/saenv64.sh
+
+$SA_JAVA_CMD sun.jvm.hotspot.tools.soql.JSDB $*
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1HeapRegionTable.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1HeapRegionTable.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/HeapRegionSeq.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/make/hotspot_version Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/make/hotspot_version Wed Jul 05 19:25:17 2017 +0200
@@ -35,7 +35,7 @@
HS_MAJOR_VER=25
HS_MINOR_VER=0
-HS_BUILD_NUMBER=61
+HS_BUILD_NUMBER=62
JDK_MAJOR_VER=1
JDK_MINOR_VER=8
--- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/src/share/vm/classfile/defaultMethods.cpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/classfile/defaultMethods.cpp Wed Jul 05 19:25:17 2017 +0200
@@ -625,13 +625,13 @@
while (super != NULL) {
for (int i = 0; i < super->methods()->length(); ++i) {
Method* m = super->methods()->at(i);
- if (m->is_overpass()) {
+ if (m->is_overpass() || m->is_static()) {
// m is a method that would have been a miranda if not for the
// default method processing that occurred on behalf of our superclass,
// so it's a method we want to re-examine in this new context. That is,
// unless we have a real implementation of it in the current class.
Method* impl = klass->lookup_method(m->name(), m->signature());
- if (impl == NULL || impl->is_overpass()) {
+ if (impl == NULL || impl->is_overpass() || impl->is_static()) {
if (!already_in_vtable_slots(slots, m)) {
slots->append(new EmptyVtableSlot(m));
}
@@ -648,7 +648,7 @@
// so it's a method we want to re-examine in this new context. That is,
// unless we have a real implementation of it in the current class.
Method* impl = klass->lookup_method(m->name(), m->signature());
- if (impl == NULL || impl->is_overpass()) {
+ if (impl == NULL || impl->is_overpass() || impl->is_static()) {
if (!already_in_vtable_slots(slots, m)) {
slots->append(new EmptyVtableSlot(m));
}
--- a/hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/src/share/vm/gc_implementation/shared/markSweep.hpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/markSweep.hpp Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/src/share/vm/gc_implementation/shared/markSweep.inline.hpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/shared/markSweep.inline.hpp Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/src/share/vm/interpreter/linkResolver.cpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp Wed Jul 05 19:25:17 2017 +0200
@@ -242,7 +242,7 @@
// Look up method in klasses, including static methods
// Then look up local default methods
-void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) {
+void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, bool checkpolymorphism, TRAPS) {
Method* result_oop = klass->uncached_lookup_method(name, signature);
if (result_oop == NULL) {
Array<Method*>* default_methods = InstanceKlass::cast(klass())->default_methods();
@@ -251,7 +251,7 @@
}
}
- if (EnableInvokeDynamic && result_oop != NULL) {
+ if (checkpolymorphism && EnableInvokeDynamic && result_oop != NULL) {
vmIntrinsics::ID iid = result_oop->intrinsic_id();
if (MethodHandles::is_signature_polymorphic(iid)) {
// Do not link directly to these. The VM must produce a synthetic one using lookup_polymorphic_method.
@@ -267,8 +267,8 @@
Method* result_oop = klass->uncached_lookup_method(name, signature);
result = methodHandle(THREAD, result_oop);
while (!result.is_null() && result->is_static() && result->method_holder()->super() != NULL) {
- klass = KlassHandle(THREAD, result->method_holder()->super());
- result = methodHandle(THREAD, klass->uncached_lookup_method(name, signature));
+ KlassHandle super_klass = KlassHandle(THREAD, result->method_holder()->super());
+ result = methodHandle(THREAD, super_klass->uncached_lookup_method(name, signature));
}
if (result.is_null()) {
@@ -503,11 +503,14 @@
}
if (code == Bytecodes::_invokeinterface) {
- resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, CHECK);
+ resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, true, CHECK);
} else if (code == Bytecodes::_invokevirtual) {
resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, true, CHECK);
+ } else if (!resolved_klass->is_interface()) {
+ resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, false, CHECK);
} else {
- resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, false, CHECK);
+ bool nostatics = (code == Bytecodes::_invokestatic) ? false : true;
+ resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, nostatics, CHECK);
}
}
@@ -528,7 +531,7 @@
}
// 2. lookup method in resolved klass and its super klasses
- lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, CHECK);
+ lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, true, CHECK);
if (resolved_method.is_null()) { // not found in the class hierarchy
// 3. lookup method in all the interfaces implemented by the resolved klass
@@ -612,7 +615,8 @@
Symbol* method_name,
Symbol* method_signature,
KlassHandle current_klass,
- bool check_access, TRAPS) {
+ bool check_access,
+ bool nostatics, TRAPS) {
// check if klass is interface
if (!resolved_klass->is_interface()) {
@@ -623,7 +627,8 @@
}
// lookup method in this interface or its super, java.lang.Object
- lookup_instance_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, CHECK);
+ // JDK8: also look for static methods
+ lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, false, CHECK);
if (resolved_method.is_null()) {
// lookup method in all the super-interfaces
@@ -638,6 +643,16 @@
}
}
+ if (nostatics && resolved_method->is_static()) {
+ ResourceMark rm(THREAD);
+ char buf[200];
+ jio_snprintf(buf, sizeof(buf), "Expected instance not static method %s", Method::name_and_sig_as_C_string(resolved_klass(),
+ resolved_method->name(),
+ resolved_method->signature()));
+ THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
+ }
+
+
if (check_access) {
// JDK8 adds non-public interface methods, and accessability check requirement
assert(current_klass.not_null() , "current_klass should not be null");
@@ -864,7 +879,11 @@
Symbol* method_name, Symbol* method_signature,
KlassHandle current_klass, bool check_access, TRAPS) {
- resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, false, CHECK);
+ if (!resolved_klass->is_interface()) {
+ resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, false, CHECK);
+ } else {
+ resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, false, CHECK);
+ }
assert(resolved_method->name() != vmSymbols::class_initializer_name(), "should have been checked in verifier");
// check if static
@@ -898,7 +917,11 @@
// and the selected method is recalculated relative to the direct superclass
// superinterface.method, which explicitly does not check shadowing
- resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, false, CHECK);
+ if (!resolved_klass->is_interface()) {
+ resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, false, CHECK);
+ } else {
+ resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, true, CHECK);
+ }
// check if method name is <init>, that it is found in same klass as static type
if (resolved_method->name() == vmSymbols::object_initializer_name() &&
@@ -1219,7 +1242,7 @@
void LinkResolver::linktime_resolve_interface_method(methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name,
Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS) {
// normal interface method resolution
- resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, CHECK);
+ resolve_interface_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, check_access, true, CHECK);
assert(resolved_method->name() != vmSymbols::object_initializer_name(), "should have been checked in verifier");
assert(resolved_method->name() != vmSymbols::class_initializer_name (), "should have been checked in verifier");
--- a/hotspot/src/share/vm/interpreter/linkResolver.hpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/interpreter/linkResolver.hpp Wed Jul 05 19:25:17 2017 +0200
@@ -124,7 +124,7 @@
friend class klassItable;
private:
- static void lookup_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS);
+ static void lookup_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, bool checkpolymorphism, TRAPS);
static void lookup_instance_method_in_klasses (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS);
static void lookup_method_in_interfaces (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS);
static void lookup_polymorphic_method (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature,
@@ -134,7 +134,7 @@
static void resolve_pool (KlassHandle& resolved_klass, Symbol*& method_name, Symbol*& method_signature, KlassHandle& current_klass, constantPoolHandle pool, int index, TRAPS);
- static void resolve_interface_method(methodHandle& resolved_method, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass, bool check_access, TRAPS);
+ 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);
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);
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);
--- a/hotspot/src/share/vm/oops/instanceKlass.cpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/oops/instanceKlass.cpp Wed Jul 05 19:25:17 2017 +0200
@@ -1427,6 +1427,17 @@
return InstanceKlass::find_method(methods(), name, signature);
}
+// find_instance_method looks up the name/signature in the local methods array
+// and skips over static methods
+Method* InstanceKlass::find_instance_method(
+ Array<Method*>* methods, Symbol* name, Symbol* signature) {
+ Method* meth = InstanceKlass::find_method(methods, name, signature);
+ if (meth != NULL && meth->is_static()) {
+ meth = NULL;
+ }
+ return meth;
+}
+
// find_method looks up the name/signature in the local methods array
Method* InstanceKlass::find_method(
Array<Method*>* methods, Symbol* name, Symbol* signature) {
@@ -2169,7 +2180,6 @@
obj, \
MarkSweep::adjust_pointer(p), \
assert_is_in)
- MarkSweep::adjust_klass(obj->klass());
return size;
}
--- a/hotspot/src/share/vm/oops/instanceKlass.hpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/oops/instanceKlass.hpp Wed Jul 05 19:25:17 2017 +0200
@@ -515,6 +515,7 @@
// find a local method (returns NULL if not found)
Method* find_method(Symbol* name, Symbol* signature) const;
static Method* find_method(Array<Method*>* methods, Symbol* name, Symbol* signature);
+ static Method* find_instance_method(Array<Method*>* methods, Symbol* name, Symbol* signature);
// find a local method index in default_methods (returns -1 if not found)
static int find_method_index(Array<Method*>* methods, Symbol* name, Symbol* signature);
--- a/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/oops/instanceMirrorKlass.cpp Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/src/share/vm/oops/klassVtable.cpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/oops/klassVtable.cpp Wed Jul 05 19:25:17 2017 +0200
@@ -665,6 +665,11 @@
// check if a method is a miranda method, given a class's methods table,
// its default_method table and its super
+// Miranda methods are calculated twice:
+// first: before vtable size calculation: including abstract and default
+// This is seen by default method creation
+// Second: recalculated during vtable initialization: only abstract
+// This is seen by link resolution and selection.
// "miranda" means not static, not defined by this class.
// private methods in interfaces do not belong in the miranda list.
// the caller must make sure that the method belongs to an interface implemented by the class
@@ -678,7 +683,8 @@
}
Symbol* name = m->name();
Symbol* signature = m->signature();
- if (InstanceKlass::find_method(class_methods, name, signature) == NULL) {
+
+ if (InstanceKlass::find_instance_method(class_methods, name, signature) == NULL) {
// did not find it in the method table of the current class
if ((default_methods == NULL) ||
InstanceKlass::find_method(default_methods, name, signature) == NULL) {
@@ -688,6 +694,12 @@
}
Method* mo = InstanceKlass::cast(super)->lookup_method(name, signature);
+ while (mo != NULL && mo->access_flags().is_static()
+ && mo->method_holder() != NULL
+ && mo->method_holder()->super() != NULL)
+ {
+ mo = mo->method_holder()->super()->uncached_lookup_method(name, signature);
+ }
if (mo == NULL || mo->access_flags().is_private() ) {
// super class hierarchy does not implement it or protection is different
return true;
--- a/hotspot/src/share/vm/oops/objArrayKlass.cpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/oops/objArrayKlass.cpp Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/src/share/vm/opto/c2_globals.hpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/opto/c2_globals.hpp Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp Wed Jul 05 19:25:17 2017 +0200
@@ -269,11 +269,20 @@
void doit() {
ResourceMark rmark; // _thread != Thread::current()
RegisterMap rm(_thread, false);
- javaVFrame* vf = _thread->last_java_vframe(&rm);
- assert(vf != NULL, "must have last java frame");
- Method* method = vf->method();
- _method_id = method->jmethod_id();
- _bci = vf->bci();
+ // There can be a race condition between a VM_Operation reaching a safepoint
+ // and the target thread exiting from Java execution.
+ // We must recheck the last Java frame still exists.
+ if (_thread->has_last_Java_frame()) {
+ javaVFrame* vf = _thread->last_java_vframe(&rm);
+ assert(vf != NULL, "must have last java frame");
+ Method* method = vf->method();
+ _method_id = method->jmethod_id();
+ _bci = vf->bci();
+ } else {
+ // Clear current location as the target thread has no Java frames anymore.
+ _method_id = (jmethodID)NULL;
+ _bci = 0;
+ }
}
void get_current_location(jmethodID *method_id, int *bci) {
*method_id = _method_id;
--- a/hotspot/src/share/vm/prims/jvmtiImpl.hpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/prims/jvmtiImpl.hpp Wed Jul 05 19:25:17 2017 +0200
@@ -299,7 +299,7 @@
static inline bool is_breakpoint(address bcp);
static void oops_do(OopClosure* f);
- static void metadata_do(void f(Metadata*));
+ static void metadata_do(void f(Metadata*)) NOT_JVMTI_RETURN;
static void gc_epilogue();
};
--- a/hotspot/src/share/vm/runtime/arguments.cpp Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/TEST.groups Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/TEST.groups Wed Jul 05 19:25:17 2017 +0200
@@ -70,7 +70,6 @@
runtime/7107135/Test7107135.sh \
runtime/7158988/FieldMonitor.java \
runtime/7194254/Test7194254.java \
- runtime/8026365/InvokeSpecialAnonTest.java \
runtime/jsig/Test8017498.sh \
runtime/Metaspace/FragmentMetaspace.java \
runtime/NMT/BaselineWithParameter.java \
--- a/hotspot/test/compiler/intrinsics/mathexact/AddExactICondTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/AddExactICondTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/AddExactIConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/AddExactIConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/AddExactILoadTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/AddExactILoadTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/AddExactILoopDependentTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/AddExactILoopDependentTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/AddExactINonConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/AddExactINonConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/AddExactIRepeatTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/AddExactIRepeatTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/AddExactLConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/AddExactLConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/AddExactLNonConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/AddExactLNonConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/CompareTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/CompareTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/DecExactITest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/DecExactITest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/DecExactLTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/DecExactLTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/GVNTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/GVNTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/IncExactITest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/IncExactITest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/IncExactLTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/IncExactLTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/MulExactICondTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/MulExactICondTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/MulExactIConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/MulExactIConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/MulExactILoadTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/MulExactILoadTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/MulExactILoopDependentTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/MulExactILoopDependentTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/MulExactINonConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/MulExactINonConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/MulExactIRepeatTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/MulExactIRepeatTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/MulExactLConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/MulExactLConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/MulExactLNonConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/MulExactLNonConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/NegExactIConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/NegExactIConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/NegExactILoadTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/NegExactILoadTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/NegExactILoopDependentTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/NegExactILoopDependentTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/NegExactINonConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/NegExactINonConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/NegExactLConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/NegExactLConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/NegExactLNonConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/NegExactLNonConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/NestedMathExactTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/NestedMathExactTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/SplitThruPhiTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/SplitThruPhiTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/SubExactICondTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/SubExactICondTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/SubExactIConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/SubExactIConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/SubExactILoadTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/SubExactILoadTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/SubExactILoopDependentTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/SubExactILoopDependentTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/SubExactINonConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/SubExactINonConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/SubExactIRepeatTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/SubExactIRepeatTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/SubExactLConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/SubExactLConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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/hotspot/test/compiler/intrinsics/mathexact/SubExactLNonConstantTest.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/compiler/intrinsics/mathexact/SubExactLNonConstantTest.java Wed Jul 05 19:25:17 2017 +0200
@@ -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
*
*/
--- a/hotspot/test/runtime/8024804/RegisterNatives.java Tue Dec 10 15:20:46 2013 -0800
+++ b/hotspot/test/runtime/8024804/RegisterNatives.java Wed Jul 05 19:25:17 2017 +0200
@@ -22,6 +22,7 @@
*/
/*
+ * @ignore 8028741
* @test
* @bug 8024804
* @summary registerNatives() interface resolution should receive IAE
--- a/make/MakeHelpers.gmk Tue Dec 10 15:20:46 2013 -0800
+++ b/make/MakeHelpers.gmk Wed Jul 05 19:25:17 2017 +0200
@@ -50,7 +50,7 @@
# Global targets are possible to run either with or without a SPEC. The prototypical
# global target is "help".
-global_targets=help jprt% bridgeBuild
+global_targets=help jprt% bridgeBuild bridge2configure
##############################
# Functions