--- a/.hgtags Thu Sep 19 17:33:18 2019 -0700
+++ b/.hgtags Sat Sep 21 12:10:52 2019 +0200
@@ -586,3 +586,5 @@
8570f22b9b6ac6bec673899b582150865696e425 jdk-14+12
fbbe6672ae15deaf350a9e935290a36f57ba9c25 jdk-14+13
cddef3bde924f3ff4f17f3d369280cf69d0450e5 jdk-14+14
+9c250a7600e12bdb1e611835250af3204d4aa152 jdk-13-ga
+778fc2dcbdaa8981e07e929a2cacef979c72261e jdk-14+15
--- a/make/test/JtregGraalUnit.gmk Thu Sep 19 17:33:18 2019 -0700
+++ b/make/test/JtregGraalUnit.gmk Sat Sep 21 12:10:52 2019 +0200
@@ -115,6 +115,7 @@
BIN := $(COMPILE_OUTPUTDIR)/jdk.vm.compiler.tests, \
CLASSPATH := $(TEST_COMPILE_CP), \
ADD_JAVAC_FLAGS := $(TEST_JAVAC_FLAGS), \
+ COPY := .input, \
))
TARGETS_BUILD += $(BUILD_VM_COMPILER_TESTS)
@@ -142,6 +143,7 @@
$(eval $(call SetupJarArchive, BUILD_VM_COMPILER_TESTS_JAR, \
DEPENDENCIES := $(BUILD_VM_COMPILER_TESTS) $(BUILD_VM_COMPILER_TESTS_SET2), \
SRCS := $(COMPILE_OUTPUTDIR)/jdk.vm.compiler.tests, \
+ SUFFIXES:=.class .input, \
JAR := $(COMPILE_OUTPUTDIR)/jdk.vm.compiler.tests.jar, \
))
--- a/src/hotspot/cpu/aarch64/gc/shenandoah/c1/shenandoahBarrierSetC1_aarch64.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/cpu/aarch64/gc/shenandoah/c1/shenandoahBarrierSetC1_aarch64.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -99,7 +99,7 @@
__ xchg(access.resolved_addr(), value_opr, result, tmp);
if (access.is_oop()) {
- result = load_reference_barrier(access.gen(), result);
+ result = load_reference_barrier(access.gen(), result, LIR_OprFact::addressConst(0));
LIR_Opr tmp = gen->new_register(type);
__ move(result, tmp);
result = tmp;
--- a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -47,7 +47,7 @@
Register src, Register dst, Register count, RegSet saved_regs) {
if (is_oop) {
bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0;
- if (ShenandoahSATBBarrier && !dest_uninitialized) {
+ if ((ShenandoahSATBBarrier && !dest_uninitialized) || ShenandoahLoadRefBarrier) {
Label done;
@@ -57,27 +57,27 @@
// Is marking active?
Address gc_state(rthread, in_bytes(ShenandoahThreadLocalData::gc_state_offset()));
__ ldrb(rscratch1, gc_state);
- __ tbz(rscratch1, ShenandoahHeap::MARKING_BITPOS, done);
+ if (dest_uninitialized) {
+ __ tbz(rscratch2, ShenandoahHeap::HAS_FORWARDED_BITPOS, done);
+ } else {
+ __ mov(rscratch2, ShenandoahHeap::HAS_FORWARDED | ShenandoahHeap::MARKING);
+ __ tst(rscratch1, rscratch2);
+ __ br(Assembler::EQ, done);
+ }
__ push(saved_regs, sp);
- if (count == c_rarg0) {
- if (dst == c_rarg1) {
- // exactly backwards!!
- __ mov(rscratch1, c_rarg0);
- __ mov(c_rarg0, c_rarg1);
- __ mov(c_rarg1, rscratch1);
+ if (UseCompressedOops) {
+ if (dest_uninitialized) {
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_pre_duinit_narrow_oop_entry), src, dst, count);
} else {
- __ mov(c_rarg1, count);
- __ mov(c_rarg0, dst);
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_pre_narrow_oop_entry), src, dst, count);
}
} else {
- __ mov(c_rarg0, dst);
- __ mov(c_rarg1, count);
- }
- if (UseCompressedOops) {
- __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_pre_narrow_oop_entry), 2);
- } else {
- __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_pre_oop_entry), 2);
+ if (dest_uninitialized) {
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_pre_duinit_oop_entry), src, dst, count);
+ } else {
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_pre_oop_entry), src, dst, count);
+ }
}
__ pop(saved_regs, sp);
__ bind(done);
@@ -85,31 +85,6 @@
}
}
-void ShenandoahBarrierSetAssembler::arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
- Register start, Register count, Register scratch, RegSet saved_regs) {
- if (is_oop) {
- Label done;
-
- // Avoid calling runtime if count == 0
- __ cbz(count, done);
-
- // Is updating references?
- Address gc_state(rthread, in_bytes(ShenandoahThreadLocalData::gc_state_offset()));
- __ ldrb(rscratch1, gc_state);
- __ tbz(rscratch1, ShenandoahHeap::UPDATEREFS_BITPOS, done);
-
- __ push(saved_regs, sp);
- assert_different_registers(start, count, scratch);
- assert_different_registers(c_rarg0, count);
- __ mov(c_rarg0, start);
- __ mov(c_rarg1, count);
- __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_post_entry), 2);
- __ pop(saved_regs, sp);
-
- __ bind(done);
- }
-}
-
void ShenandoahBarrierSetAssembler::shenandoah_write_barrier_pre(MacroAssembler* masm,
Register obj,
Register pre_val,
@@ -526,6 +501,7 @@
Register obj = stub->obj()->as_register();
Register res = stub->result()->as_register();
+ Register addr = stub->addr()->as_register_lo();
Register tmp1 = stub->tmp1()->as_register();
Register tmp2 = stub->tmp2()->as_register();
@@ -558,6 +534,7 @@
__ bind(slow_path);
ce->store_parameter(res, 0);
+ ce->store_parameter(addr, 1);
__ far_call(RuntimeAddress(bs->load_reference_barrier_rt_code_blob()->code_begin()));
__ b(*stub->continuation());
@@ -619,7 +596,12 @@
__ push_call_clobbered_registers();
__ load_parameter(0, r0);
- __ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier));
+ __ load_parameter(1, r1);
+ if (UseCompressedOops) {
+ __ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_fixup_narrow));
+ } else {
+ __ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_fixup));
+ }
__ blr(lr);
__ mov(rscratch1, r0);
__ pop_call_clobbered_registers();
--- a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -76,8 +76,6 @@
virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
Register src, Register dst, Register count, RegSet saved_regs);
- virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
- Register start, Register count, Register tmp, RegSet saved_regs);
virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Register dst, Address src, Register tmp1, Register tmp_thread);
virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
--- a/src/hotspot/cpu/x86/gc/shenandoah/c1/shenandoahBarrierSetC1_x86.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/cpu/x86/gc/shenandoah/c1/shenandoahBarrierSetC1_x86.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -110,7 +110,7 @@
__ xchg(access.resolved_addr(), result, result, LIR_OprFact::illegalOpr);
if (access.is_oop()) {
- result = load_reference_barrier(access.gen(), result);
+ result = load_reference_barrier(access.gen(), result, LIR_OprFact::addressConst(0));
LIR_Opr tmp = gen->new_register(type);
__ move(result, tmp);
result = tmp;
--- a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -47,35 +47,28 @@
void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Register src, Register dst, Register count) {
- bool checkcast = (decorators & ARRAYCOPY_CHECKCAST) != 0;
- bool disjoint = (decorators & ARRAYCOPY_DISJOINT) != 0;
- bool obj_int = type == T_OBJECT LP64_ONLY(&& UseCompressedOops);
bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0;
if (type == T_OBJECT || type == T_ARRAY) {
+
+ if ((ShenandoahSATBBarrier && !dest_uninitialized) || ShenandoahLoadRefBarrier) {
#ifdef _LP64
- if (!checkcast) {
- if (!obj_int) {
- // Save count for barrier
- __ movptr(r11, count);
- } else if (disjoint) {
- // Save dst in r11 in the disjoint case
- __ movq(r11, dst);
+ Register thread = r15_thread;
+#else
+ Register thread = rax;
+ if (thread == src || thread == dst || thread == count) {
+ thread = rbx;
}
- }
-#else
- if (disjoint) {
- __ mov(rdx, dst); // save 'to'
- }
-#endif
-
- if (ShenandoahSATBBarrier && !dest_uninitialized) {
- Register thread = NOT_LP64(rax) LP64_ONLY(r15_thread);
- assert_different_registers(dst, count, thread); // we don't care about src here?
-#ifndef _LP64
+ if (thread == src || thread == dst || thread == count) {
+ thread = rcx;
+ }
+ if (thread == src || thread == dst || thread == count) {
+ thread = rdx;
+ }
__ push(thread);
__ get_thread(thread);
#endif
+ assert_different_registers(src, dst, count, thread);
Label done;
// Short-circuit if count == 0.
@@ -84,32 +77,33 @@
// Avoid runtime call when not marking.
Address gc_state(thread, in_bytes(ShenandoahThreadLocalData::gc_state_offset()));
- __ testb(gc_state, ShenandoahHeap::MARKING);
+ int flags = ShenandoahHeap::HAS_FORWARDED;
+ if (!dest_uninitialized) {
+ flags |= ShenandoahHeap::MARKING;
+ }
+ __ testb(gc_state, flags);
__ jcc(Assembler::zero, done);
__ pusha(); // push registers
#ifdef _LP64
- if (count == c_rarg0) {
- if (dst == c_rarg1) {
- // exactly backwards!!
- __ xchgptr(c_rarg1, c_rarg0);
+ assert(src == rdi, "expected");
+ assert(dst == rsi, "expected");
+ assert(count == rdx, "expected");
+ if (UseCompressedOops) {
+ if (dest_uninitialized) {
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_pre_duinit_narrow_oop_entry), src, dst, count);
} else {
- __ movptr(c_rarg1, count);
- __ movptr(c_rarg0, dst);
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_pre_narrow_oop_entry), src, dst, count);
}
- } else {
- __ movptr(c_rarg0, dst);
- __ movptr(c_rarg1, count);
+ } else
+#endif
+ {
+ if (dest_uninitialized) {
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_pre_duinit_oop_entry), src, dst, count);
+ } else {
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_pre_oop_entry), src, dst, count);
+ }
}
- if (UseCompressedOops) {
- __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_pre_narrow_oop_entry), 2);
- } else {
- __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_pre_oop_entry), 2);
- }
-#else
- __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_pre_oop_entry),
- dst, count);
-#endif
__ popa();
__ bind(done);
NOT_LP64(__ pop(thread);)
@@ -118,73 +112,6 @@
}
-void ShenandoahBarrierSetAssembler::arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
- Register src, Register dst, Register count) {
- bool checkcast = (decorators & ARRAYCOPY_CHECKCAST) != 0;
- bool disjoint = (decorators & ARRAYCOPY_DISJOINT) != 0;
- bool obj_int = type == T_OBJECT LP64_ONLY(&& UseCompressedOops);
- Register tmp = rax;
-
- if (type == T_OBJECT || type == T_ARRAY) {
-#ifdef _LP64
- if (!checkcast) {
- if (!obj_int) {
- // Save count for barrier
- count = r11;
- } else if (disjoint && obj_int) {
- // Use the saved dst in the disjoint case
- dst = r11;
- }
- } else {
- tmp = rscratch1;
- }
-#else
- if (disjoint) {
- __ mov(dst, rdx); // restore 'to'
- }
-#endif
-
- Register thread = NOT_LP64(rax) LP64_ONLY(r15_thread);
- assert_different_registers(dst, thread); // do we care about src at all here?
-
-#ifndef _LP64
- __ push(thread);
- __ get_thread(thread);
-#endif
-
- // Short-circuit if count == 0.
- Label done;
- __ testptr(count, count);
- __ jcc(Assembler::zero, done);
-
- // Skip runtime call if no forwarded objects.
- Address gc_state(thread, in_bytes(ShenandoahThreadLocalData::gc_state_offset()));
- __ testb(gc_state, ShenandoahHeap::UPDATEREFS);
- __ jcc(Assembler::zero, done);
-
- __ pusha(); // push registers (overkill)
-#ifdef _LP64
- if (c_rarg0 == count) { // On win64 c_rarg0 == rcx
- assert_different_registers(c_rarg1, dst);
- __ mov(c_rarg1, count);
- __ mov(c_rarg0, dst);
- } else {
- assert_different_registers(c_rarg0, count);
- __ mov(c_rarg0, dst);
- __ mov(c_rarg1, count);
- }
- __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_post_entry), 2);
-#else
- __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_array_post_entry),
- dst, count);
-#endif
- __ popa();
-
- __ bind(done);
- NOT_LP64(__ pop(thread);)
- }
-}
-
void ShenandoahBarrierSetAssembler::shenandoah_write_barrier_pre(MacroAssembler* masm,
Register obj,
Register pre_val,
@@ -788,8 +715,10 @@
Register obj = stub->obj()->as_register();
Register res = stub->result()->as_register();
+ Register addr = stub->addr()->as_register();
Register tmp1 = stub->tmp1()->as_register();
Register tmp2 = stub->tmp2()->as_register();
+ assert_different_registers(obj, res, addr, tmp1, tmp2);
Label slow_path;
@@ -818,29 +747,9 @@
#endif
__ jcc(Assembler::zero, *stub->continuation());
- // Test if object is resolved.
- __ movptr(tmp1, Address(res, oopDesc::mark_offset_in_bytes()));
- // Test if both lowest bits are set. We trick it by negating the bits
- // then test for both bits clear.
- __ notptr(tmp1);
-#ifdef _LP64
- __ testb(tmp1, markWord::marked_value);
-#else
- // On x86_32, C1 register allocator can give us the register without 8-bit support.
- // Do the full-register access and test to avoid compilation failures.
- __ testptr(tmp1, markWord::marked_value);
-#endif
- __ jccb(Assembler::notZero, slow_path);
- // Clear both lower bits. It's still inverted, so set them, and then invert back.
- __ orptr(tmp1, markWord::marked_value);
- __ notptr(tmp1);
- // At this point, tmp1 contains the decoded forwarding pointer.
- __ mov(res, tmp1);
-
- __ jmp(*stub->continuation());
-
__ bind(slow_path);
ce->store_parameter(res, 0);
+ ce->store_parameter(addr, 1);
__ call(RuntimeAddress(bs->load_reference_barrier_rt_code_blob()->code_begin()));
__ jmp(*stub->continuation());
@@ -911,8 +820,21 @@
// arg0 : object to be resolved
__ save_live_registers_no_oop_map(true);
- __ load_parameter(0, LP64_ONLY(c_rarg0) NOT_LP64(rax));
- __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier), LP64_ONLY(c_rarg0) NOT_LP64(rax));
+
+#ifdef _LP64
+ __ load_parameter(0, c_rarg0);
+ __ load_parameter(1, c_rarg1);
+ if (UseCompressedOops) {
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_fixup_narrow), c_rarg0, c_rarg1);
+ } else {
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_fixup), c_rarg0, c_rarg1);
+ }
+#else
+ __ load_parameter(0, rax);
+ __ load_parameter(1, rbx);
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_fixup), rax, rbx);
+#endif
+
__ restore_live_registers_except_rax(true);
__ epilogue();
--- a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -83,8 +83,6 @@
bool exchange, Register tmp1, Register tmp2);
virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Register src, Register dst, Register count);
- virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
- Register src, Register dst, Register count);
virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Register dst, Address src, Register tmp1, Register tmp_thread);
virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
--- a/src/hotspot/share/aot/aotCodeHeap.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/aot/aotCodeHeap.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -38,6 +38,7 @@
#include "memory/universe.hpp"
#include "oops/compressedOops.hpp"
#include "oops/method.inline.hpp"
+#include "runtime/deoptimization.hpp"
#include "runtime/handles.inline.hpp"
#include "runtime/os.hpp"
#include "runtime/safepointVerifiers.hpp"
@@ -351,7 +352,10 @@
#ifdef TIERED
mh->set_aot_code(aot);
#endif
- Method::set_code(mh, aot);
+ {
+ MutexLocker pl(CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
+ Method::set_code(mh, aot);
+ }
if (PrintAOT || (PrintCompilation && PrintAOT)) {
PauseNoSafepointVerifier pnsv(&nsv); // aot code is registered already
aot->print_on(tty, NULL);
@@ -731,8 +735,7 @@
}
}
if (marked > 0) {
- VM_Deoptimize op;
- VMThread::execute(&op);
+ Deoptimization::deoptimize_all_marked();
}
}
--- a/src/hotspot/share/aot/aotCompiledMethod.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/aot/aotCompiledMethod.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -165,7 +165,7 @@
{
// Enter critical section. Does not block for safepoint.
- MutexLocker pl(Patching_lock, Mutex::_no_safepoint_check_flag);
+ MutexLocker pl(CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
if (*_state_adr == new_state) {
// another thread already performed this transition so nothing
@@ -188,12 +188,10 @@
#endif
// Remove AOTCompiledMethod from method.
- if (method() != NULL && (method()->code() == this ||
- method()->from_compiled_entry() == verified_entry_point())) {
- HandleMark hm;
- method()->clear_code(false /* already owns Patching_lock */);
+ if (method() != NULL) {
+ method()->unlink_code(this);
}
- } // leave critical region under Patching_lock
+ } // leave critical region under CompiledMethod_lock
if (TraceCreateZombies) {
@@ -208,7 +206,6 @@
#ifdef TIERED
bool AOTCompiledMethod::make_entrant() {
assert(!method()->is_old(), "reviving evolved method!");
- assert(*_state_adr != not_entrant, "%s", method()->has_aot_code() ? "has_aot_code() not cleared" : "caller didn't check has_aot_code()");
// Make sure the method is not flushed in case of a safepoint in code below.
methodHandle the_method(method());
@@ -216,9 +213,9 @@
{
// Enter critical section. Does not block for safepoint.
- MutexLocker pl(Patching_lock, Mutex::_no_safepoint_check_flag);
+ MutexLocker pl(CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
- if (*_state_adr == in_use) {
+ if (*_state_adr == in_use || *_state_adr == not_entrant) {
// another thread already performed this transition so nothing
// to do, but return false to indicate this.
return false;
@@ -230,7 +227,7 @@
// Log the transition once
log_state_change();
- } // leave critical region under Patching_lock
+ } // leave critical region under CompiledMethod_lock
if (TraceCreateZombies) {
--- a/src/hotspot/share/ci/ciEnv.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/ci/ciEnv.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -1072,7 +1072,10 @@
task()->comp_level(), method_name);
}
// Allow the code to be executed
- method->set_code(method, nm);
+ MutexLocker ml(CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
+ if (nm->make_in_use()) {
+ method->set_code(method, nm);
+ }
} else {
LogTarget(Info, nmethod, install) lt;
if (lt.is_enabled()) {
@@ -1081,9 +1084,11 @@
lt.print("Installing osr method (%d) %s @ %d",
task()->comp_level(), method_name, entry_bci);
}
- method->method_holder()->add_osr_nmethod(nm);
+ MutexLocker ml(CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
+ if (nm->make_in_use()) {
+ method->method_holder()->add_osr_nmethod(nm);
+ }
}
- nm->make_in_use();
}
} // safepoints are allowed again
--- a/src/hotspot/share/classfile/classFileParser.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/classfile/classFileParser.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -3552,16 +3552,16 @@
cfs->skip_u1(attribute_length, CHECK);
}
}
- _annotations = assemble_annotations(runtime_visible_annotations,
- runtime_visible_annotations_length,
- runtime_invisible_annotations,
- runtime_invisible_annotations_length,
- CHECK);
- _type_annotations = assemble_annotations(runtime_visible_type_annotations,
- runtime_visible_type_annotations_length,
- runtime_invisible_type_annotations,
- runtime_invisible_type_annotations_length,
- CHECK);
+ _class_annotations = assemble_annotations(runtime_visible_annotations,
+ runtime_visible_annotations_length,
+ runtime_invisible_annotations,
+ runtime_invisible_annotations_length,
+ CHECK);
+ _class_type_annotations = assemble_annotations(runtime_visible_type_annotations,
+ runtime_visible_type_annotations_length,
+ runtime_invisible_type_annotations,
+ runtime_invisible_type_annotations_length,
+ CHECK);
if (parsed_innerclasses_attribute || parsed_enclosingmethod_attribute) {
const u2 num_of_classes = parse_classfile_inner_classes_attribute(
@@ -3615,8 +3615,8 @@
// Create the Annotations object that will
// hold the annotations array for the Klass.
void ClassFileParser::create_combined_annotations(TRAPS) {
- if (_annotations == NULL &&
- _type_annotations == NULL &&
+ if (_class_annotations == NULL &&
+ _class_type_annotations == NULL &&
_fields_annotations == NULL &&
_fields_type_annotations == NULL) {
// Don't create the Annotations object unnecessarily.
@@ -3624,8 +3624,8 @@
}
Annotations* const annotations = Annotations::allocate(_loader_data, CHECK);
- annotations->set_class_annotations(_annotations);
- annotations->set_class_type_annotations(_type_annotations);
+ annotations->set_class_annotations(_class_annotations);
+ annotations->set_class_type_annotations(_class_type_annotations);
annotations->set_fields_annotations(_fields_annotations);
annotations->set_fields_type_annotations(_fields_type_annotations);
@@ -3635,8 +3635,8 @@
// The annotations arrays below has been transfered the
// _combined_annotations so these fields can now be cleared.
- _annotations = NULL;
- _type_annotations = NULL;
+ _class_annotations = NULL;
+ _class_type_annotations = NULL;
_fields_annotations = NULL;
_fields_type_annotations = NULL;
}
@@ -5790,8 +5790,8 @@
_local_interfaces(NULL),
_transitive_interfaces(NULL),
_combined_annotations(NULL),
- _annotations(NULL),
- _type_annotations(NULL),
+ _class_annotations(NULL),
+ _class_type_annotations(NULL),
_fields_annotations(NULL),
_fields_type_annotations(NULL),
_klass(NULL),
@@ -5895,7 +5895,7 @@
_nest_members = NULL;
_local_interfaces = NULL;
_combined_annotations = NULL;
- _annotations = _type_annotations = NULL;
+ _class_annotations = _class_type_annotations = NULL;
_fields_annotations = _fields_type_annotations = NULL;
}
@@ -5937,15 +5937,15 @@
// If the _combined_annotations pointer is non-NULL,
// then the other annotations fields should have been cleared.
- assert(_annotations == NULL, "Should have been cleared");
- assert(_type_annotations == NULL, "Should have been cleared");
+ assert(_class_annotations == NULL, "Should have been cleared");
+ assert(_class_type_annotations == NULL, "Should have been cleared");
assert(_fields_annotations == NULL, "Should have been cleared");
assert(_fields_type_annotations == NULL, "Should have been cleared");
} else {
// If the annotations arrays were not installed into the Annotations object,
// then they have to be deallocated explicitly.
- MetadataFactory::free_array<u1>(_loader_data, _annotations);
- MetadataFactory::free_array<u1>(_loader_data, _type_annotations);
+ MetadataFactory::free_array<u1>(_loader_data, _class_annotations);
+ MetadataFactory::free_array<u1>(_loader_data, _class_type_annotations);
Annotations::free_contents(_loader_data, _fields_annotations);
Annotations::free_contents(_loader_data, _fields_type_annotations);
}
--- a/src/hotspot/share/classfile/classFileParser.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/classfile/classFileParser.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -101,8 +101,8 @@
Array<InstanceKlass*>* _local_interfaces;
Array<InstanceKlass*>* _transitive_interfaces;
Annotations* _combined_annotations;
- AnnotationArray* _annotations;
- AnnotationArray* _type_annotations;
+ AnnotationArray* _class_annotations;
+ AnnotationArray* _class_type_annotations;
Array<AnnotationArray*>* _fields_annotations;
Array<AnnotationArray*>* _fields_type_annotations;
InstanceKlass* _klass; // InstanceKlass* once created.
--- a/src/hotspot/share/code/codeCache.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/code/codeCache.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -1143,28 +1143,17 @@
// At least one nmethod has been marked for deoptimization
- // All this already happens inside a VM_Operation, so we'll do all the work here.
- // Stuff copied from VM_Deoptimize and modified slightly.
-
- // We do not want any GCs to happen while we are in the middle of this VM operation
- ResourceMark rm;
- DeoptimizationMarker dm;
-
- // Deoptimize all activations depending on marked nmethods
- Deoptimization::deoptimize_dependents();
-
- // Make the dependent methods not entrant
- make_marked_nmethods_not_entrant();
+ Deoptimization::deoptimize_all_marked();
}
#endif // INCLUDE_JVMTI
-// Deoptimize all methods
+// Mark methods for deopt (if safe or possible).
void CodeCache::mark_all_nmethods_for_deoptimization() {
MutexLocker mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
CompiledMethodIterator iter(CompiledMethodIterator::only_alive_and_not_unloading);
while(iter.next()) {
CompiledMethod* nm = iter.method();
- if (!nm->method()->is_method_handle_intrinsic()) {
+ if (!nm->is_native_method()) {
nm->mark_for_deoptimization();
}
}
@@ -1192,7 +1181,7 @@
CompiledMethodIterator iter(CompiledMethodIterator::only_alive_and_not_unloading);
while(iter.next()) {
CompiledMethod* nm = iter.method();
- if (nm->is_marked_for_deoptimization() && !nm->is_not_entrant()) {
+ if (nm->is_marked_for_deoptimization()) {
nm->make_not_entrant();
}
}
@@ -1204,17 +1193,12 @@
if (number_of_nmethods_with_dependencies() == 0) return;
- // CodeCache can only be updated by a thread_in_VM and they will all be
- // stopped during the safepoint so CodeCache will be safe to update without
- // holding the CodeCache_lock.
-
KlassDepChange changes(dependee);
// Compute the dependent nmethods
if (mark_for_deoptimization(changes) > 0) {
// At least one nmethod has been marked for deoptimization
- VM_Deoptimize op;
- VMThread::execute(&op);
+ Deoptimization::deoptimize_all_marked();
}
}
@@ -1223,26 +1207,9 @@
// --- Compile_lock is not held. However we are at a safepoint.
assert_locked_or_safepoint(Compile_lock);
- // CodeCache can only be updated by a thread_in_VM and they will all be
- // stopped dring the safepoint so CodeCache will be safe to update without
- // holding the CodeCache_lock.
-
// Compute the dependent nmethods
if (mark_for_deoptimization(m_h()) > 0) {
- // At least one nmethod has been marked for deoptimization
-
- // All this already happens inside a VM_Operation, so we'll do all the work here.
- // Stuff copied from VM_Deoptimize and modified slightly.
-
- // We do not want any GCs to happen while we are in the middle of this VM operation
- ResourceMark rm;
- DeoptimizationMarker dm;
-
- // Deoptimize all activations depending on marked nmethods
- Deoptimization::deoptimize_dependents();
-
- // Make the dependent methods not entrant
- make_marked_nmethods_not_entrant();
+ Deoptimization::deoptimize_all_marked();
}
}
--- a/src/hotspot/share/code/compiledMethod.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/code/compiledMethod.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -104,6 +104,13 @@
}
//-----------------------------------------------------------------------------
+void CompiledMethod::mark_for_deoptimization(bool inc_recompile_counts) {
+ MutexLocker ml(CompiledMethod_lock->owned_by_self() ? NULL : CompiledMethod_lock,
+ Mutex::_no_safepoint_check_flag);
+ _mark_for_deoptimization_status = (inc_recompile_counts ? deoptimize : deoptimize_noupdate);
+}
+
+//-----------------------------------------------------------------------------
ExceptionCache* CompiledMethod::exception_cache_acquire() const {
return OrderAccess::load_acquire(&_exception_cache);
--- a/src/hotspot/share/code/compiledMethod.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/code/compiledMethod.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -244,10 +244,9 @@
bool is_at_poll_return(address pc);
bool is_at_poll_or_poll_return(address pc);
- bool is_marked_for_deoptimization() const { return _mark_for_deoptimization_status != not_marked; }
- void mark_for_deoptimization(bool inc_recompile_counts = true) {
- _mark_for_deoptimization_status = (inc_recompile_counts ? deoptimize : deoptimize_noupdate);
- }
+ bool is_marked_for_deoptimization() const { return _mark_for_deoptimization_status != not_marked; }
+ void mark_for_deoptimization(bool inc_recompile_counts = true);
+
bool update_recompile_counts() const {
// Update recompile counts when either the update is explicitly requested (deoptimize)
// or the nmethod is not marked for deoptimization at all (not_marked).
--- a/src/hotspot/share/code/nmethod.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/code/nmethod.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -50,6 +50,7 @@
#include "oops/oop.inline.hpp"
#include "prims/jvmtiImpl.hpp"
#include "runtime/atomic.hpp"
+#include "runtime/deoptimization.hpp"
#include "runtime/flags/flagSetting.hpp"
#include "runtime/frame.inline.hpp"
#include "runtime/handles.inline.hpp"
@@ -476,7 +477,6 @@
debug_only(nm->verify();) // might block
nm->log_new_nmethod();
- nm->make_in_use();
}
return nm;
}
@@ -1138,6 +1138,11 @@
bool nmethod::try_transition(int new_state_int) {
signed char new_state = new_state_int;
+#ifdef DEBUG
+ if (new_state != unloaded) {
+ assert_lock_strong(CompiledMethod_lock);
+ }
+#endif
for (;;) {
signed char old_state = Atomic::load(&_state);
if (old_state >= new_state) {
@@ -1193,11 +1198,7 @@
// have the Method* live here, in case we unload the nmethod because
// it is pointing to some oop (other than the Method*) being unloaded.
if (_method != NULL) {
- // OSR methods point to the Method*, but the Method* does not
- // point back!
- if (_method->code() == this) {
- _method->clear_code(); // Break a cycle
- }
+ _method->unlink_code(this);
}
// Make the class unloaded - i.e., change state and notify sweeper
@@ -1281,16 +1282,9 @@
}
}
-void nmethod::unlink_from_method(bool acquire_lock) {
- // We need to check if both the _code and _from_compiled_code_entry_point
- // refer to this nmethod because there is a race in setting these two fields
- // in Method* as seen in bugid 4947125.
- // If the vep() points to the zombie nmethod, the memory for the nmethod
- // could be flushed and the compiler and vtable stubs could still call
- // through it.
- if (method() != NULL && (method()->code() == this ||
- method()->from_compiled_entry() == verified_entry_point())) {
- method()->clear_code(acquire_lock);
+void nmethod::unlink_from_method() {
+ if (method() != NULL) {
+ method()->unlink_code(this);
}
}
@@ -1317,24 +1311,24 @@
// during patching, depending on the nmethod state we must notify the GC that
// code has been unloaded, unregistering it. We cannot do this right while
- // holding the Patching_lock because we need to use the CodeCache_lock. This
+ // holding the CompiledMethod_lock because we need to use the CodeCache_lock. This
// would be prone to deadlocks.
// This flag is used to remember whether we need to later lock and unregister.
bool nmethod_needs_unregister = false;
+ // invalidate osr nmethod before acquiring the patching lock since
+ // they both acquire leaf locks and we don't want a deadlock.
+ // This logic is equivalent to the logic below for patching the
+ // verified entry point of regular methods. We check that the
+ // nmethod is in use to ensure that it is invalidated only once.
+ if (is_osr_method() && is_in_use()) {
+ // this effectively makes the osr nmethod not entrant
+ invalidate_osr_method();
+ }
+
{
- // invalidate osr nmethod before acquiring the patching lock since
- // they both acquire leaf locks and we don't want a deadlock.
- // This logic is equivalent to the logic below for patching the
- // verified entry point of regular methods. We check that the
- // nmethod is in use to ensure that it is invalidated only once.
- if (is_osr_method() && is_in_use()) {
- // this effectively makes the osr nmethod not entrant
- invalidate_osr_method();
- }
-
// Enter critical section. Does not block for safepoint.
- MutexLocker pl(Patching_lock, Mutex::_no_safepoint_check_flag);
+ MutexLocker ml(CompiledMethod_lock->owned_by_self() ? NULL : CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
if (Atomic::load(&_state) >= state) {
// another thread already performed this transition so nothing
@@ -1389,8 +1383,9 @@
log_state_change();
// Remove nmethod from method.
- unlink_from_method(false /* already owns Patching_lock */);
- } // leave critical region under Patching_lock
+ unlink_from_method();
+
+ } // leave critical region under CompiledMethod_lock
#if INCLUDE_JVMCI
// Invalidate can't occur while holding the Patching lock
--- a/src/hotspot/share/code/nmethod.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/code/nmethod.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -119,7 +119,7 @@
// used by jvmti to track if an unload event has been posted for this nmethod.
bool _unload_reported;
- // Protected by Patching_lock
+ // Protected by CompiledMethod_lock
volatile signed char _state; // {not_installed, in_use, not_entrant, zombie, unloaded}
#ifdef ASSERT
@@ -357,7 +357,9 @@
void set_rtm_state(RTMState state) { _rtm_state = state; }
#endif
- void make_in_use() { _state = in_use; }
+ bool make_in_use() {
+ return try_transition(in_use);
+ }
// Make the nmethod non entrant. The nmethod will continue to be
// alive. It is used when an uncommon trap happens. Returns true
// if this thread changed the state of the nmethod or false if
@@ -390,7 +392,7 @@
int comp_level() const { return _comp_level; }
- void unlink_from_method(bool acquire_lock);
+ void unlink_from_method();
// Support for oops in scopes and relocs:
// Note: index 0 is reserved for null.
--- a/src/hotspot/share/gc/cms/cmsHeap.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/cms/cmsHeap.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -135,10 +135,6 @@
bool should_do_concurrent_full_gc(GCCause::Cause cause);
void collect_mostly_concurrent(GCCause::Cause cause);
-
- // CMS forwards some non-heap value into the mark oop to reserve oops during
- // promotion, so we can't assert about obj alignment or that the forwardee is in heap
- virtual void check_oop_location(void* addr) const {}
};
#endif // SHARE_GC_CMS_CMSHEAP_HPP
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -2377,7 +2377,8 @@
void G1CollectedHeap::print_regions_on(outputStream* st) const {
st->print_cr("Heap Regions: E=young(eden), S=young(survivor), O=old, "
"HS=humongous(starts), HC=humongous(continues), "
- "CS=collection set, F=free, A=archive, "
+ "CS=collection set, F=free, "
+ "OA=open archive, CA=closed archive, "
"TAMS=top-at-mark-start (previous, next)");
PrintRegionClosure blk(st);
heap_region_iterate(&blk);
--- a/src/hotspot/share/gc/g1/g1OopClosures.inline.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/g1/g1OopClosures.inline.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -38,6 +38,7 @@
#include "oops/oopsHierarchy.hpp"
#include "oops/oop.inline.hpp"
#include "runtime/prefetch.inline.hpp"
+#include "utilities/align.hpp"
template <class T>
inline void G1ScanClosureBase::prefetch_and_push(T* p, const oop obj) {
@@ -115,7 +116,8 @@
G1CollectedHeap* g1h = G1CollectedHeap::heap();
// can't do because of races
// assert(oopDesc::is_oop_or_null(obj), "expected an oop");
- g1h->check_oop_location(obj);
+ assert(is_object_aligned(obj), "oop must be aligned");
+ assert(g1h->is_in_reserved(obj), "oop must be in reserved");
HeapRegion* from = g1h->heap_region_containing(p);
--- a/src/hotspot/share/gc/serial/markSweep.inline.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/serial/markSweep.inline.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -32,6 +32,7 @@
#include "oops/access.inline.hpp"
#include "oops/compressedOops.inline.hpp"
#include "oops/oop.inline.hpp"
+#include "utilities/align.hpp"
#include "utilities/stack.inline.hpp"
inline void MarkSweep::mark_object(oop obj) {
@@ -87,7 +88,7 @@
"should be forwarded");
if (new_obj != NULL) {
- DEBUG_ONLY(Universe::heap()->check_oop_location((HeapWord*)new_obj);)
+ assert(is_object_aligned(new_obj), "oop must be aligned");
RawAccess<IS_NOT_NULL>::oop_store(p, new_obj);
}
}
--- a/src/hotspot/share/gc/shared/c2/barrierSetC2.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -30,6 +30,7 @@
#include "opto/idealKit.hpp"
#include "opto/macro.hpp"
#include "opto/narrowptrnode.hpp"
+#include "opto/runtime.hpp"
#include "utilities/macros.hpp"
// By default this is a no-op.
@@ -794,7 +795,29 @@
return fast_oop;
}
-void BarrierSetC2::clone_barrier_at_expansion(ArrayCopyNode* ac, Node* call, PhaseIterGVN& igvn) const {
- // no barrier
- igvn.replace_node(ac, call);
+#define XTOP LP64_ONLY(COMMA phase->top())
+
+void BarrierSetC2::clone_at_expansion(PhaseMacroExpand* phase, ArrayCopyNode* ac) const {
+ Node* ctrl = ac->in(TypeFunc::Control);
+ Node* mem = ac->in(TypeFunc::Memory);
+ Node* src = ac->in(ArrayCopyNode::Src);
+ Node* src_offset = ac->in(ArrayCopyNode::SrcPos);
+ Node* dest = ac->in(ArrayCopyNode::Dest);
+ Node* dest_offset = ac->in(ArrayCopyNode::DestPos);
+ Node* length = ac->in(ArrayCopyNode::Length);
+
+ assert (src_offset == NULL && dest_offset == NULL, "for clone offsets should be null");
+
+ const char* copyfunc_name = "arraycopy";
+ address copyfunc_addr =
+ phase->basictype2arraycopy(T_LONG, NULL, NULL,
+ true, copyfunc_name, true);
+
+ const TypePtr* raw_adr_type = TypeRawPtr::BOTTOM;
+ const TypeFunc* call_type = OptoRuntime::fast_arraycopy_Type();
+
+ Node* call = phase->make_leaf_call(ctrl, mem, call_type, copyfunc_addr, copyfunc_name, raw_adr_type, src, dest, length XTOP);
+ phase->transform_later(call);
+
+ phase->igvn().replace_node(ac, call);
}
--- a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -261,7 +261,7 @@
};
virtual bool array_copy_requires_gc_barriers(bool tightly_coupled_alloc, BasicType type, bool is_clone, ArrayCopyPhase phase) const { return false; }
- virtual void clone_barrier_at_expansion(ArrayCopyNode* ac, Node* call, PhaseIterGVN& igvn) const;
+ virtual void clone_at_expansion(PhaseMacroExpand* phase, ArrayCopyNode* ac) const;
// Support for GC barriers emitted during parsing
virtual bool has_load_barriers() const { return false; }
--- a/src/hotspot/share/gc/shared/collectedHeap.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shared/collectedHeap.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -343,11 +343,6 @@
}
#endif // PRODUCT
-void CollectedHeap::check_oop_location(void* addr) const {
- assert(is_object_aligned(addr), "address is not aligned");
- assert(_reserved.contains(addr), "address is not in reserved heap");
-}
-
size_t CollectedHeap::max_tlab_size() const {
// TLABs can't be bigger than we can fill with a int[Integer.MAX_VALUE].
// This restriction could be removed by enabling filling with multiple arrays.
@@ -376,8 +371,6 @@
{
assert(words >= min_fill_size(), "too small to fill");
assert(is_object_aligned(words), "unaligned size");
- DEBUG_ONLY(Universe::heap()->check_oop_location(start);)
- DEBUG_ONLY(Universe::heap()->check_oop_location(start + words - MinObjAlignment);)
}
void CollectedHeap::zap_filler_array(HeapWord* start, size_t words, bool zap)
--- a/src/hotspot/share/gc/shared/collectedHeap.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shared/collectedHeap.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -233,11 +233,6 @@
DEBUG_ONLY(bool is_in_or_null(const void* p) const { return p == NULL || is_in(p); })
- // This function verifies that "addr" is a valid oop location, w.r.t. heap
- // datastructures such as bitmaps and virtual memory address. It does *not*
- // check if the location is within committed heap memory.
- virtual void check_oop_location(void* addr) const;
-
virtual uint32_t hash_oop(oop obj) const;
void set_gc_cause(GCCause::Cause v) {
--- a/src/hotspot/share/gc/shenandoah/c1/shenandoahBarrierSetC1.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/c1/shenandoahBarrierSetC1.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -105,19 +105,21 @@
__ branch_destination(slow->continuation());
}
-LIR_Opr ShenandoahBarrierSetC1::load_reference_barrier(LIRGenerator* gen, LIR_Opr obj) {
+LIR_Opr ShenandoahBarrierSetC1::load_reference_barrier(LIRGenerator* gen, LIR_Opr obj, LIR_Opr addr) {
if (ShenandoahLoadRefBarrier) {
- return load_reference_barrier_impl(gen, obj);
+ return load_reference_barrier_impl(gen, obj, addr);
} else {
return obj;
}
}
-LIR_Opr ShenandoahBarrierSetC1::load_reference_barrier_impl(LIRGenerator* gen, LIR_Opr obj) {
+LIR_Opr ShenandoahBarrierSetC1::load_reference_barrier_impl(LIRGenerator* gen, LIR_Opr obj, LIR_Opr addr) {
assert(ShenandoahLoadRefBarrier, "Should be enabled");
obj = ensure_in_register(gen, obj);
assert(obj->is_register(), "must be a register at this point");
+ addr = ensure_in_register(gen, addr);
+ assert(addr->is_register(), "must be a register at this point");
LIR_Opr result = gen->result_register_for(obj->value_type());
__ move(obj, result);
LIR_Opr tmp1 = gen->new_register(T_OBJECT);
@@ -146,7 +148,7 @@
}
__ cmp(lir_cond_notEqual, flag_val, LIR_OprFact::intConst(0));
- CodeStub* slow = new ShenandoahLoadReferenceBarrierStub(obj, result, tmp1, tmp2);
+ CodeStub* slow = new ShenandoahLoadReferenceBarrierStub(obj, addr, result, tmp1, tmp2);
__ branch(lir_cond_notEqual, T_INT, slow);
__ branch_destination(slow->continuation());
@@ -155,10 +157,18 @@
LIR_Opr ShenandoahBarrierSetC1::ensure_in_register(LIRGenerator* gen, LIR_Opr obj) {
if (!obj->is_register()) {
- LIR_Opr obj_reg = gen->new_register(T_OBJECT);
+ LIR_Opr obj_reg;
if (obj->is_constant()) {
+ obj_reg = gen->new_register(T_OBJECT);
__ move(obj, obj_reg);
} else {
+#ifdef AARCH64
+ // AArch64 expects double-size register.
+ obj_reg = gen->new_pointer_register();
+#else
+ // x86 expects single-size register.
+ obj_reg = gen->new_register(T_OBJECT);
+#endif
__ leal(obj, obj_reg);
}
obj = obj_reg;
@@ -184,6 +194,14 @@
BarrierSetC1::store_at_resolved(access, value);
}
+LIR_Opr ShenandoahBarrierSetC1::resolve_address(LIRAccess& access, bool resolve_in_register) {
+ // We must resolve in register when patching. This is to avoid
+ // having a patch area in the load barrier stub, since the call
+ // into the runtime to patch will not have the proper oop map.
+ const bool patch_before_barrier = access.is_oop() && (access.decorators() & C1_NEEDS_PATCHING) != 0;
+ return BarrierSetC1::resolve_address(access, resolve_in_register || patch_before_barrier);
+}
+
void ShenandoahBarrierSetC1::load_at_resolved(LIRAccess& access, LIR_Opr result) {
if (!access.is_oop()) {
BarrierSetC1::load_at_resolved(access, result);
@@ -210,7 +228,7 @@
if (ShenandoahLoadRefBarrier) {
LIR_Opr tmp = gen->new_register(T_OBJECT);
BarrierSetC1::load_at_resolved(access, tmp);
- tmp = load_reference_barrier(access.gen(), tmp);
+ tmp = load_reference_barrier(access.gen(), tmp, access.resolved_addr());
__ move(tmp, result);
} else {
BarrierSetC1::load_at_resolved(access, result);
--- a/src/hotspot/share/gc/shenandoah/c1/shenandoahBarrierSetC1.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/c1/shenandoahBarrierSetC1.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -89,21 +89,24 @@
friend class ShenandoahBarrierSetC1;
private:
LIR_Opr _obj;
+ LIR_Opr _addr;
LIR_Opr _result;
LIR_Opr _tmp1;
LIR_Opr _tmp2;
public:
- ShenandoahLoadReferenceBarrierStub(LIR_Opr obj, LIR_Opr result, LIR_Opr tmp1, LIR_Opr tmp2) :
- _obj(obj), _result(result), _tmp1(tmp1), _tmp2(tmp2)
+ ShenandoahLoadReferenceBarrierStub(LIR_Opr obj, LIR_Opr addr, LIR_Opr result, LIR_Opr tmp1, LIR_Opr tmp2) :
+ _obj(obj), _addr(addr), _result(result), _tmp1(tmp1), _tmp2(tmp2)
{
assert(_obj->is_register(), "should be register");
+ assert(_addr->is_register(), "should be register");
assert(_result->is_register(), "should be register");
assert(_tmp1->is_register(), "should be register");
assert(_tmp2->is_register(), "should be register");
}
LIR_Opr obj() const { return _obj; }
+ LIR_Opr addr() const { return _addr; }
LIR_Opr result() const { return _result; }
LIR_Opr tmp1() const { return _tmp1; }
LIR_Opr tmp2() const { return _tmp2; }
@@ -112,6 +115,9 @@
virtual void visit(LIR_OpVisitState* visitor) {
visitor->do_slow_case();
visitor->do_input(_obj);
+ visitor->do_temp(_obj);
+ visitor->do_input(_addr);
+ visitor->do_temp(_addr);
visitor->do_temp(_result);
visitor->do_temp(_tmp1);
visitor->do_temp(_tmp2);
@@ -186,10 +192,10 @@
void pre_barrier(LIRGenerator* gen, CodeEmitInfo* info, DecoratorSet decorators, LIR_Opr addr_opr, LIR_Opr pre_val);
- LIR_Opr load_reference_barrier(LIRGenerator* gen, LIR_Opr obj);
+ LIR_Opr load_reference_barrier(LIRGenerator* gen, LIR_Opr obj, LIR_Opr addr);
LIR_Opr storeval_barrier(LIRGenerator* gen, LIR_Opr obj, CodeEmitInfo* info, DecoratorSet decorators);
- LIR_Opr load_reference_barrier_impl(LIRGenerator* gen, LIR_Opr obj);
+ LIR_Opr load_reference_barrier_impl(LIRGenerator* gen, LIR_Opr obj, LIR_Opr addr);
LIR_Opr ensure_in_register(LIRGenerator* gen, LIR_Opr obj);
@@ -209,6 +215,7 @@
protected:
virtual void store_at_resolved(LIRAccess& access, LIR_Opr value);
+ virtual LIR_Opr resolve_address(LIRAccess& access, bool resolve_in_register);
virtual void load_at_resolved(LIRAccess& access, LIR_Opr result);
virtual LIR_Opr atomic_cmpxchg_at_resolved(LIRAccess& access, LIRItem& cmp_value, LIRItem& new_value);
--- a/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -461,9 +461,11 @@
}
const TypeFunc* ShenandoahBarrierSetC2::shenandoah_clone_barrier_Type() {
- const Type **fields = TypeTuple::fields(1);
- fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // original field value
- const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields);
+ const Type **fields = TypeTuple::fields(3);
+ fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // src
+ fields[TypeFunc::Parms+1] = TypeInstPtr::NOTNULL; // dst
+ fields[TypeFunc::Parms+2] = TypeInt::INT; // length
+ const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+3, fields);
// create result type (range)
fields = TypeTuple::fields(0);
@@ -473,9 +475,11 @@
}
const TypeFunc* ShenandoahBarrierSetC2::shenandoah_load_reference_barrier_Type() {
- const Type **fields = TypeTuple::fields(1);
+ const Type **fields = TypeTuple::fields(2);
fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // original field value
- const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields);
+ fields[TypeFunc::Parms+1] = TypeRawPtr::BOTTOM; // original load address
+
+ const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+2, fields);
// create result type (range)
fields = TypeTuple::fields(1);
@@ -705,11 +709,6 @@
return result;
}
-void ShenandoahBarrierSetC2::clone(GraphKit* kit, Node* src, Node* dst, Node* size, bool is_array) const {
- assert(!src->is_AddP(), "unexpected input");
- BarrierSetC2::clone(kit, src, dst, size, is_array);
-}
-
// Support for GC barriers emitted during parsing
bool ShenandoahBarrierSetC2::is_gc_barrier_node(Node* node) const {
if (node->Opcode() == Op_ShenandoahLoadReferenceBarrier) return true;
@@ -771,9 +770,8 @@
return true;
}
-bool ShenandoahBarrierSetC2::clone_needs_postbarrier(ArrayCopyNode *ac, PhaseIterGVN& igvn) {
- Node* src = ac->in(ArrayCopyNode::Src);
- const TypeOopPtr* src_type = igvn.type(src)->is_oopptr();
+bool ShenandoahBarrierSetC2::clone_needs_barrier(Node* src, PhaseGVN& gvn) {
+ const TypeOopPtr* src_type = gvn.type(src)->is_oopptr();
if (src_type->isa_instptr() != NULL) {
ciInstanceKlass* ik = src_type->klass()->as_instance_klass();
if ((src_type->klass_is_exact() || (!ik->is_interface() && !ik->has_subklass())) && !ik->has_injected_fields()) {
@@ -781,7 +779,7 @@
return true;
} else {
if (!src_type->klass_is_exact()) {
- igvn.C->dependencies()->assert_leaf_type(ik);
+ Compile::current()->dependencies()->assert_leaf_type(ik);
}
}
} else {
@@ -798,42 +796,29 @@
return false;
}
-void ShenandoahBarrierSetC2::clone_barrier_at_expansion(ArrayCopyNode* ac, Node* call, PhaseIterGVN& igvn) const {
- assert(ac->is_clonebasic(), "no other kind of arraycopy here");
+#define XTOP LP64_ONLY(COMMA phase->top())
- if (!clone_needs_postbarrier(ac, igvn)) {
- BarrierSetC2::clone_barrier_at_expansion(ac, call, igvn);
- return;
- }
-
- const TypePtr* raw_adr_type = TypeRawPtr::BOTTOM;
- Node* c = new ProjNode(call,TypeFunc::Control);
- c = igvn.transform(c);
- Node* m = new ProjNode(call, TypeFunc::Memory);
- m = igvn.transform(m);
-
+void ShenandoahBarrierSetC2::clone_at_expansion(PhaseMacroExpand* phase, ArrayCopyNode* ac) const {
+ Node* ctrl = ac->in(TypeFunc::Control);
+ Node* mem = ac->in(TypeFunc::Memory);
+ Node* src = ac->in(ArrayCopyNode::Src);
+ Node* src_offset = ac->in(ArrayCopyNode::SrcPos);
Node* dest = ac->in(ArrayCopyNode::Dest);
- assert(dest->is_AddP(), "bad input");
- Node* barrier_call = new CallLeafNode(ShenandoahBarrierSetC2::shenandoah_clone_barrier_Type(),
- CAST_FROM_FN_PTR(address, ShenandoahRuntime::shenandoah_clone_barrier),
- "shenandoah_clone_barrier", raw_adr_type);
- barrier_call->init_req(TypeFunc::Control, c);
- barrier_call->init_req(TypeFunc::I_O , igvn.C->top());
- barrier_call->init_req(TypeFunc::Memory , m);
- barrier_call->init_req(TypeFunc::ReturnAdr, igvn.C->top());
- barrier_call->init_req(TypeFunc::FramePtr, igvn.C->top());
- barrier_call->init_req(TypeFunc::Parms+0, dest->in(AddPNode::Base));
-
- barrier_call = igvn.transform(barrier_call);
- c = new ProjNode(barrier_call,TypeFunc::Control);
- c = igvn.transform(c);
- m = new ProjNode(barrier_call, TypeFunc::Memory);
- m = igvn.transform(m);
-
- Node* out_c = ac->proj_out(TypeFunc::Control);
- Node* out_m = ac->proj_out(TypeFunc::Memory);
- igvn.replace_node(out_c, c);
- igvn.replace_node(out_m, m);
+ Node* dest_offset = ac->in(ArrayCopyNode::DestPos);
+ Node* length = ac->in(ArrayCopyNode::Length);
+ assert (src_offset == NULL && dest_offset == NULL, "for clone offsets should be null");
+ if (ShenandoahCloneBarrier && clone_needs_barrier(src, phase->igvn())) {
+ Node* call = phase->make_leaf_call(ctrl, mem,
+ ShenandoahBarrierSetC2::shenandoah_clone_barrier_Type(),
+ CAST_FROM_FN_PTR(address, ShenandoahRuntime::shenandoah_clone_barrier),
+ "shenandoah_clone",
+ TypeRawPtr::BOTTOM,
+ src, dest, length);
+ call = phase->transform_later(call);
+ phase->igvn().replace_node(ac, call);
+ } else {
+ BarrierSetC2::clone_at_expansion(phase, ac);
+ }
}
--- a/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -78,7 +78,7 @@
void insert_pre_barrier(GraphKit* kit, Node* base_oop, Node* offset,
Node* pre_val, bool need_mem_bar) const;
- static bool clone_needs_postbarrier(ArrayCopyNode *ac, PhaseIterGVN& igvn);
+ static bool clone_needs_barrier(Node* src, PhaseGVN& gvn);
protected:
virtual Node* load_at_resolved(C2Access& access, const Type* val_type) const;
@@ -106,11 +106,10 @@
virtual bool has_load_barriers() const { return true; }
// This is the entry-point for the backend to perform accesses through the Access API.
- virtual void clone(GraphKit* kit, Node* src, Node* dst, Node* size, bool is_array) const;
+ virtual void clone_at_expansion(PhaseMacroExpand* phase, ArrayCopyNode* ac) const;
// These are general helper methods used by C2
virtual bool array_copy_requires_gc_barriers(bool tightly_coupled_alloc, BasicType type, bool is_clone, ArrayCopyPhase phase) const;
- virtual void clone_barrier_at_expansion(ArrayCopyNode* ac, Node* call, PhaseIterGVN& igvn) const;
// Support for GC barriers emitted during parsing
virtual bool is_gc_barrier_node(Node* node) const;
--- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -1016,7 +1016,7 @@
phase->register_control(ctrl, loop, in_cset_fast_test_iff);
}
-void ShenandoahBarrierC2Support::call_lrb_stub(Node*& ctrl, Node*& val, Node*& result_mem, Node* raw_mem, bool is_native, PhaseIdealLoop* phase) {
+void ShenandoahBarrierC2Support::call_lrb_stub(Node*& ctrl, Node*& val, Node* load_addr, Node*& result_mem, Node* raw_mem, bool is_native, PhaseIdealLoop* phase) {
IdealLoopTree*loop = phase->get_loop(ctrl);
const TypePtr* obj_type = phase->igvn().type(val)->is_oopptr()->cast_to_nonconst();
@@ -1027,16 +1027,22 @@
mm->set_memory_at(Compile::AliasIdxRaw, raw_mem);
phase->register_new_node(mm, ctrl);
+ address target = LP64_ONLY(UseCompressedOops) NOT_LP64(false) ?
+ CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_fixup_narrow) :
+ CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_fixup);
+
address calladdr = is_native ? CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_native)
- : CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier);
+ : target;
const char* name = is_native ? "oop_load_from_native_barrier" : "load_reference_barrier";
Node* call = new CallLeafNode(ShenandoahBarrierSetC2::shenandoah_load_reference_barrier_Type(), calladdr, name, TypeRawPtr::BOTTOM);
+
call->init_req(TypeFunc::Control, ctrl);
call->init_req(TypeFunc::I_O, phase->C->top());
call->init_req(TypeFunc::Memory, mm);
call->init_req(TypeFunc::FramePtr, phase->C->top());
call->init_req(TypeFunc::ReturnAdr, phase->C->top());
call->init_req(TypeFunc::Parms, val);
+ call->init_req(TypeFunc::Parms+1, load_addr);
phase->register_control(call, loop, ctrl);
ctrl = new ProjNode(call, TypeFunc::Control);
phase->register_control(ctrl, loop, call);
@@ -1401,7 +1407,7 @@
assert(val->bottom_type()->make_oopptr(), "need oop");
assert(val->bottom_type()->make_oopptr()->const_oop() == NULL, "expect non-constant");
- enum { _heap_stable = 1, _not_cset, _fwded, _evac_path, _null_path, PATH_LIMIT };
+ enum { _heap_stable = 1, _not_cset, _evac_path, _null_path, PATH_LIMIT };
Node* region = new RegionNode(PATH_LIMIT);
Node* val_phi = new PhiNode(region, uncasted_val->bottom_type()->is_oopptr());
Node* raw_mem_phi = PhiNode::make(region, raw_mem, Type::MEMORY, TypeRawPtr::BOTTOM);
@@ -1451,49 +1457,44 @@
IfNode* iff = unc_ctrl->in(0)->as_If();
phase->igvn().replace_input_of(iff, 1, phase->igvn().intcon(1));
}
- Node* addr = new AddPNode(new_val, uncasted_val, phase->igvn().MakeConX(oopDesc::mark_offset_in_bytes()));
- phase->register_new_node(addr, ctrl);
- assert(new_val->bottom_type()->isa_oopptr(), "what else?");
- Node* markword = new LoadXNode(ctrl, raw_mem, addr, TypeRawPtr::BOTTOM, TypeX_X, MemNode::unordered);
- phase->register_new_node(markword, ctrl);
-
- // Test if object is forwarded. This is the case if lowest two bits are set.
- Node* masked = new AndXNode(markword, phase->igvn().MakeConX(markWord::lock_mask_in_place));
- phase->register_new_node(masked, ctrl);
- Node* cmp = new CmpXNode(masked, phase->igvn().MakeConX(markWord::marked_value));
- phase->register_new_node(cmp, ctrl);
-
- // Only branch to LRB stub if object is not forwarded; otherwise reply with fwd ptr
- Node* bol = new BoolNode(cmp, BoolTest::eq); // Equals 3 means it's forwarded
- phase->register_new_node(bol, ctrl);
-
- IfNode* iff = new IfNode(ctrl, bol, PROB_LIKELY(0.999), COUNT_UNKNOWN);
- phase->register_control(iff, loop, ctrl);
- Node* if_fwd = new IfTrueNode(iff);
- phase->register_control(if_fwd, loop, iff);
- Node* if_not_fwd = new IfFalseNode(iff);
- phase->register_control(if_not_fwd, loop, iff);
-
- // Decode forward pointer: since we already have the lowest bits, we can just subtract them
- // from the mark word without the need for large immediate mask.
- Node* masked2 = new SubXNode(markword, masked);
- phase->register_new_node(masked2, if_fwd);
- Node* fwdraw = new CastX2PNode(masked2);
- fwdraw->init_req(0, if_fwd);
- phase->register_new_node(fwdraw, if_fwd);
- Node* fwd = new CheckCastPPNode(NULL, fwdraw, val->bottom_type());
- phase->register_new_node(fwd, if_fwd);
-
- // Wire up not-equal-path in slots 3.
- region->init_req(_fwded, if_fwd);
- val_phi->init_req(_fwded, fwd);
- raw_mem_phi->init_req(_fwded, raw_mem);
// Call lrb-stub and wire up that path in slots 4
Node* result_mem = NULL;
- ctrl = if_not_fwd;
- fwd = new_val;
- call_lrb_stub(ctrl, fwd, result_mem, raw_mem, lrb->is_native(), phase);
+
+ Node* fwd = new_val;
+ Node* addr;
+ if (ShenandoahSelfFixing) {
+ VectorSet visited(Thread::current()->resource_area());
+ addr = get_load_addr(phase, visited, lrb);
+ } else {
+ addr = phase->igvn().zerocon(T_OBJECT);
+ }
+ if (addr->Opcode() == Op_AddP) {
+ Node* orig_base = addr->in(AddPNode::Base);
+ Node* base = new CheckCastPPNode(ctrl, orig_base, orig_base->bottom_type(), true);
+ phase->register_new_node(base, ctrl);
+ if (addr->in(AddPNode::Base) == addr->in((AddPNode::Address))) {
+ // Field access
+ addr = addr->clone();
+ addr->set_req(AddPNode::Base, base);
+ addr->set_req(AddPNode::Address, base);
+ phase->register_new_node(addr, ctrl);
+ } else {
+ Node* addr2 = addr->in(AddPNode::Address);
+ if (addr2->Opcode() == Op_AddP && addr2->in(AddPNode::Base) == addr2->in(AddPNode::Address) &&
+ addr2->in(AddPNode::Base) == orig_base) {
+ addr2 = addr2->clone();
+ addr2->set_req(AddPNode::Base, base);
+ addr2->set_req(AddPNode::Address, base);
+ phase->register_new_node(addr2, ctrl);
+ addr = addr->clone();
+ addr->set_req(AddPNode::Base, base);
+ addr->set_req(AddPNode::Address, addr2);
+ phase->register_new_node(addr, ctrl);
+ }
+ }
+ }
+ call_lrb_stub(ctrl, fwd, addr, result_mem, raw_mem, lrb->is_native(), phase);
region->init_req(_evac_path, ctrl);
val_phi->init_req(_evac_path, fwd);
raw_mem_phi->init_req(_evac_path, result_mem);
@@ -1696,6 +1697,74 @@
}
+Node* ShenandoahBarrierC2Support::get_load_addr(PhaseIdealLoop* phase, VectorSet& visited, Node* in) {
+ if (visited.test_set(in->_idx)) {
+ return NULL;
+ }
+ switch (in->Opcode()) {
+ case Op_Proj:
+ return get_load_addr(phase, visited, in->in(0));
+ case Op_CastPP:
+ case Op_CheckCastPP:
+ case Op_DecodeN:
+ case Op_EncodeP:
+ return get_load_addr(phase, visited, in->in(1));
+ case Op_LoadN:
+ case Op_LoadP:
+ return in->in(MemNode::Address);
+ case Op_CompareAndExchangeN:
+ case Op_CompareAndExchangeP:
+ case Op_GetAndSetN:
+ case Op_GetAndSetP:
+ case Op_ShenandoahCompareAndExchangeP:
+ case Op_ShenandoahCompareAndExchangeN:
+ // Those instructions would just have stored a different
+ // value into the field. No use to attempt to fix it at this point.
+ return phase->igvn().zerocon(T_OBJECT);
+ case Op_CMoveP:
+ case Op_CMoveN: {
+ Node* t = get_load_addr(phase, visited, in->in(CMoveNode::IfTrue));
+ Node* f = get_load_addr(phase, visited, in->in(CMoveNode::IfFalse));
+ // Handle unambiguous cases: single address reported on both branches.
+ if (t != NULL && f == NULL) return t;
+ if (t == NULL && f != NULL) return f;
+ if (t != NULL && t == f) return t;
+ // Ambiguity.
+ return phase->igvn().zerocon(T_OBJECT);
+ }
+ case Op_Phi: {
+ Node* addr = NULL;
+ for (uint i = 1; i < in->req(); i++) {
+ Node* addr1 = get_load_addr(phase, visited, in->in(i));
+ if (addr == NULL) {
+ addr = addr1;
+ }
+ if (addr != addr1) {
+ return phase->igvn().zerocon(T_OBJECT);
+ }
+ }
+ return addr;
+ }
+ case Op_ShenandoahLoadReferenceBarrier:
+ return get_load_addr(phase, visited, in->in(ShenandoahLoadReferenceBarrierNode::ValueIn));
+ case Op_ShenandoahEnqueueBarrier:
+ return get_load_addr(phase, visited, in->in(1));
+ case Op_CallDynamicJava:
+ case Op_CallLeaf:
+ case Op_CallStaticJava:
+ case Op_ConN:
+ case Op_ConP:
+ case Op_Parm:
+ return phase->igvn().zerocon(T_OBJECT);
+ default:
+#ifdef ASSERT
+ fatal("Unknown node in get_load_addr: %s", NodeClassNames[in->Opcode()]);
+#endif
+ return phase->igvn().zerocon(T_OBJECT);
+ }
+
+}
+
void ShenandoahBarrierC2Support::move_heap_stable_test_out_of_loop(IfNode* iff, PhaseIdealLoop* phase) {
IdealLoopTree *loop = phase->get_loop(iff);
Node* loop_head = loop->_head;
--- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -60,7 +60,7 @@
static void test_null(Node*& ctrl, Node* val, Node*& null_ctrl, PhaseIdealLoop* phase);
static void test_heap_stable(Node*& ctrl, Node* raw_mem, Node*& heap_stable_ctrl,
PhaseIdealLoop* phase);
- static void call_lrb_stub(Node*& ctrl, Node*& val, Node*& result_mem, Node* raw_mem, bool is_native, PhaseIdealLoop* phase);
+ static void call_lrb_stub(Node*& ctrl, Node*& val, Node* load_addr, Node*& result_mem, Node* raw_mem, bool is_native, PhaseIdealLoop* phase);
static Node* clone_null_check(Node*& c, Node* val, Node* unc_ctrl, PhaseIdealLoop* phase);
static void fix_null_check(Node* unc, Node* unc_ctrl, Node* new_unc_ctrl, Unique_Node_List& uses,
PhaseIdealLoop* phase);
@@ -71,6 +71,7 @@
static void fix_ctrl(Node* barrier, Node* region, const MemoryGraphFixer& fixer, Unique_Node_List& uses, Unique_Node_List& uses_to_ignore, uint last, PhaseIdealLoop* phase);
static IfNode* find_unswitching_candidate(const IdealLoopTree *loop, PhaseIdealLoop* phase);
+ static Node* get_load_addr(PhaseIdealLoop* phase, VectorSet& visited, Node* lrb);
public:
static bool is_dominator(Node* d_c, Node* n_c, Node* d, Node* n, PhaseIdealLoop* phase);
static bool is_dominator_same_ctrl(Node* c, Node* d, Node* n, PhaseIdealLoop* phase);
--- a/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -41,33 +41,6 @@
class ShenandoahBarrierSetC1;
class ShenandoahBarrierSetC2;
-template <bool STOREVAL_EVAC_BARRIER>
-class ShenandoahUpdateRefsForOopClosure: public BasicOopIterateClosure {
-private:
- ShenandoahHeap* _heap;
- ShenandoahBarrierSet* _bs;
-
- template <class T>
- inline void do_oop_work(T* p) {
- oop o;
- if (STOREVAL_EVAC_BARRIER) {
- o = _heap->evac_update_with_forwarded(p);
- if (!CompressedOops::is_null(o)) {
- _bs->enqueue(o);
- }
- } else {
- _heap->maybe_update_with_forwarded(p);
- }
- }
-public:
- ShenandoahUpdateRefsForOopClosure() : _heap(ShenandoahHeap::heap()), _bs(ShenandoahBarrierSet::barrier_set()) {
- assert(UseShenandoahGC && ShenandoahCloneBarrier, "should be enabled");
- }
-
- virtual void do_oop(oop* p) { do_oop_work(p); }
- virtual void do_oop(narrowOop* p) { do_oop_work(p); }
-};
-
ShenandoahBarrierSet::ShenandoahBarrierSet(ShenandoahHeap* heap) :
BarrierSet(make_barrier_set_assembler<ShenandoahBarrierSetAssembler>(),
make_barrier_set_c1<ShenandoahBarrierSetC1>(),
@@ -97,73 +70,6 @@
return true;
}
-template <class T, bool STOREVAL_EVAC_BARRIER>
-void ShenandoahBarrierSet::write_ref_array_loop(HeapWord* start, size_t count) {
- assert(UseShenandoahGC && ShenandoahCloneBarrier, "should be enabled");
- ShenandoahUpdateRefsForOopClosure<STOREVAL_EVAC_BARRIER> cl;
- T* dst = (T*) start;
- for (size_t i = 0; i < count; i++) {
- cl.do_oop(dst++);
- }
-}
-
-void ShenandoahBarrierSet::write_ref_array(HeapWord* start, size_t count) {
- assert(_heap->is_update_refs_in_progress(), "should not be here otherwise");
- assert(count > 0, "Should have been filtered before");
-
- if (_heap->is_concurrent_traversal_in_progress()) {
- ShenandoahEvacOOMScope oom_evac_scope;
- if (UseCompressedOops) {
- write_ref_array_loop<narrowOop, /* evac = */ true>(start, count);
- } else {
- write_ref_array_loop<oop, /* evac = */ true>(start, count);
- }
- } else {
- if (UseCompressedOops) {
- write_ref_array_loop<narrowOop, /* evac = */ false>(start, count);
- } else {
- write_ref_array_loop<oop, /* evac = */ false>(start, count);
- }
- }
-}
-
-template <class T>
-void ShenandoahBarrierSet::write_ref_array_pre_work(T* dst, size_t count) {
- shenandoah_assert_not_in_cset_loc_except(dst, _heap->cancelled_gc());
- assert(ShenandoahThreadLocalData::satb_mark_queue(Thread::current()).is_active(), "Shouldn't be here otherwise");
- assert(ShenandoahSATBBarrier, "Shouldn't be here otherwise");
- assert(count > 0, "Should have been filtered before");
-
- Thread* thread = Thread::current();
- ShenandoahMarkingContext* ctx = _heap->marking_context();
- bool has_forwarded = _heap->has_forwarded_objects();
- T* elem_ptr = dst;
- for (size_t i = 0; i < count; i++, elem_ptr++) {
- T heap_oop = RawAccess<>::oop_load(elem_ptr);
- if (!CompressedOops::is_null(heap_oop)) {
- oop obj = CompressedOops::decode_not_null(heap_oop);
- if (has_forwarded) {
- obj = resolve_forwarded_not_null(obj);
- }
- if (!ctx->is_marked(obj)) {
- ShenandoahThreadLocalData::satb_mark_queue(thread).enqueue_known_active(obj);
- }
- }
- }
-}
-
-void ShenandoahBarrierSet::write_ref_array_pre(oop* dst, size_t count, bool dest_uninitialized) {
- if (! dest_uninitialized) {
- write_ref_array_pre_work(dst, count);
- }
-}
-
-void ShenandoahBarrierSet::write_ref_array_pre(narrowOop* dst, size_t count, bool dest_uninitialized) {
- if (! dest_uninitialized) {
- write_ref_array_pre_work(dst, count);
- }
-}
-
template <class T>
inline void ShenandoahBarrierSet::inline_write_ref_field_pre(T* field, oop new_val) {
shenandoah_assert_not_in_cset_loc_except(field, _heap->cancelled_gc());
@@ -194,27 +100,6 @@
shenandoah_assert_not_in_cset_except (v, o, o == NULL || _heap->cancelled_gc() || !_heap->is_concurrent_mark_in_progress());
}
-void ShenandoahBarrierSet::write_region(MemRegion mr) {
- if (!ShenandoahCloneBarrier) return;
- if (!_heap->is_update_refs_in_progress()) return;
-
- // This is called for cloning an object (see jvm.cpp) after the clone
- // has been made. We are not interested in any 'previous value' because
- // it would be NULL in any case. But we *are* interested in any oop*
- // that potentially need to be updated.
-
- oop obj = oop(mr.start());
- shenandoah_assert_correct(NULL, obj);
- if (_heap->is_concurrent_traversal_in_progress()) {
- ShenandoahEvacOOMScope oom_evac_scope;
- ShenandoahUpdateRefsForOopClosure</* evac = */ true> cl;
- obj->oop_iterate(&cl);
- } else {
- ShenandoahUpdateRefsForOopClosure</* evac = */ false> cl;
- obj->oop_iterate(&cl);
- }
-}
-
oop ShenandoahBarrierSet::load_reference_barrier_not_null(oop obj) {
if (ShenandoahLoadRefBarrier && _heap->has_forwarded_objects()) {
return load_reference_barrier_impl(obj);
@@ -231,14 +116,24 @@
}
}
+oop ShenandoahBarrierSet::load_reference_barrier_mutator(oop obj, oop* load_addr) {
+ return load_reference_barrier_mutator_work(obj, load_addr);
+}
-oop ShenandoahBarrierSet::load_reference_barrier_mutator(oop obj) {
+oop ShenandoahBarrierSet::load_reference_barrier_mutator(oop obj, narrowOop* load_addr) {
+ return load_reference_barrier_mutator_work(obj, load_addr);
+}
+
+template <class T>
+oop ShenandoahBarrierSet::load_reference_barrier_mutator_work(oop obj, T* load_addr) {
assert(ShenandoahLoadRefBarrier, "should be enabled");
- assert(_heap->is_gc_in_progress_mask(ShenandoahHeap::EVACUATION | ShenandoahHeap::TRAVERSAL), "evac should be in progress");
- shenandoah_assert_in_cset(NULL, obj);
+ shenandoah_assert_in_cset(load_addr, obj);
oop fwd = resolve_forwarded_not_null(obj);
if (obj == fwd) {
+ assert(_heap->is_gc_in_progress_mask(ShenandoahHeap::EVACUATION | ShenandoahHeap::TRAVERSAL),
+ "evac should be in progress");
+
ShenandoahEvacOOMScope oom_evac_scope;
Thread* thread = Thread::current();
@@ -274,8 +169,14 @@
}
}
- return res_oop;
+ fwd = res_oop;
}
+
+ if (load_addr != NULL && fwd != obj) {
+ // Since we are here and we know the load address, update the reference.
+ ShenandoahHeap::cas_oop(fwd, load_addr, obj);
+ }
+
return fwd;
}
--- a/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -63,14 +63,14 @@
bool is_aligned(HeapWord* hw);
- void write_ref_array(HeapWord* start, size_t count);
+ template <class T> void
+ write_ref_array_pre_work(T* src, T* dst, size_t count, bool dest_uninitialized);
- template <class T> void
- write_ref_array_pre_work(T* dst, size_t count);
-
- void write_ref_array_pre(oop* dst, size_t count, bool dest_uninitialized);
-
- void write_ref_array_pre(narrowOop* dst, size_t count, bool dest_uninitialized);
+ inline void arraycopy_pre(oop* src, oop* dst, size_t count);
+ inline void arraycopy_pre(narrowOop* src, narrowOop* dst, size_t count);
+ inline void arraycopy_update(oop* src, size_t count);
+ inline void arraycopy_update(narrowOop* src, size_t count);
+ inline void clone_barrier(oop src);
// We export this to make it available in cases where the static
// type of the barrier set is known. Note that it is non-virtual.
@@ -82,7 +82,6 @@
void write_ref_field_pre_work(void* field, oop new_val);
void write_ref_field_work(void* v, oop o, bool release = false);
- void write_region(MemRegion mr);
oop oop_load_from_native_barrier(oop obj);
@@ -98,14 +97,23 @@
void keep_alive_barrier(oop obj);
oop load_reference_barrier(oop obj);
- oop load_reference_barrier_mutator(oop obj);
oop load_reference_barrier_not_null(oop obj);
+ oop load_reference_barrier_mutator(oop obj, oop* load_addr);
+ oop load_reference_barrier_mutator(oop obj, narrowOop* load_addr);
+
+ template <class T>
+ oop load_reference_barrier_mutator_work(oop obj, T* load_addr);
+
void enqueue(oop obj);
private:
- template <class T, bool STOREVAL_WRITE_BARRIER>
- void write_ref_array_loop(HeapWord* start, size_t count);
+ template <class T>
+ inline void arraycopy_pre_work(T* src, T* dst, size_t count);
+ template <class T, bool HAS_FWD, bool EVAC, bool ENQUEUE>
+ inline void arraycopy_work(T* src, size_t count);
+ template <class T>
+ inline void arraycopy_update_impl(T* src, size_t count);
oop load_reference_barrier_impl(oop obj);
@@ -118,24 +126,6 @@
}
}
- template <typename T>
- bool arraycopy_loop_1(T* src, T* dst, size_t length, Klass* bound,
- bool checkcast, bool satb, bool disjoint, ShenandoahBarrierSet::ArrayCopyStoreValMode storeval_mode);
-
- template <typename T, bool CHECKCAST>
- bool arraycopy_loop_2(T* src, T* dst, size_t length, Klass* bound,
- bool satb, bool disjoint, ShenandoahBarrierSet::ArrayCopyStoreValMode storeval_mode);
-
- template <typename T, bool CHECKCAST, bool SATB>
- bool arraycopy_loop_3(T* src, T* dst, size_t length, Klass* bound,
- bool disjoint, ShenandoahBarrierSet::ArrayCopyStoreValMode storeval_mode);
-
- template <typename T, bool CHECKCAST, bool SATB, ShenandoahBarrierSet::ArrayCopyStoreValMode STOREVAL_MODE>
- bool arraycopy_loop(T* src, T* dst, size_t length, Klass* bound, bool disjoint);
-
- template <typename T, bool CHECKCAST, bool SATB, ShenandoahBarrierSet::ArrayCopyStoreValMode STOREVAL_MODE>
- bool arraycopy_element(T* cur_src, T* cur_dst, Klass* bound, Thread* const thread, ShenandoahMarkingContext* const ctx);
-
public:
// Callbacks for runtime accesses.
template <DecoratorSet decorators, typename BarrierSetT = ShenandoahBarrierSet>
--- a/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -27,11 +27,14 @@
#include "gc/shared/barrierSet.hpp"
#include "gc/shenandoah/shenandoahAsserts.hpp"
#include "gc/shenandoah/shenandoahBarrierSet.hpp"
+#include "gc/shenandoah/shenandoahCollectionSet.inline.hpp"
#include "gc/shenandoah/shenandoahForwarding.inline.hpp"
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahHeapRegion.hpp"
#include "gc/shenandoah/shenandoahMarkingContext.inline.hpp"
#include "gc/shenandoah/shenandoahThreadLocalData.hpp"
+#include "memory/iterator.inline.hpp"
+#include "oops/oop.inline.hpp"
inline oop ShenandoahBarrierSet::resolve_forwarded_not_null(oop p) {
return ShenandoahForwarding::get_forwardee(p);
@@ -179,158 +182,13 @@
return result;
}
-template <typename T>
-bool ShenandoahBarrierSet::arraycopy_loop_1(T* src, T* dst, size_t length, Klass* bound,
- bool checkcast, bool satb, bool disjoint,
- ShenandoahBarrierSet::ArrayCopyStoreValMode storeval_mode) {
- if (checkcast) {
- return arraycopy_loop_2<T, true>(src, dst, length, bound, satb, disjoint, storeval_mode);
- } else {
- return arraycopy_loop_2<T, false>(src, dst, length, bound, satb, disjoint, storeval_mode);
- }
-}
-
-template <typename T, bool CHECKCAST>
-bool ShenandoahBarrierSet::arraycopy_loop_2(T* src, T* dst, size_t length, Klass* bound,
- bool satb, bool disjoint,
- ShenandoahBarrierSet::ArrayCopyStoreValMode storeval_mode) {
- if (satb) {
- return arraycopy_loop_3<T, CHECKCAST, true>(src, dst, length, bound, disjoint, storeval_mode);
- } else {
- return arraycopy_loop_3<T, CHECKCAST, false>(src, dst, length, bound, disjoint, storeval_mode);
- }
-}
-
-template <typename T, bool CHECKCAST, bool SATB>
-bool ShenandoahBarrierSet::arraycopy_loop_3(T* src, T* dst, size_t length, Klass* bound, bool disjoint,
- ShenandoahBarrierSet::ArrayCopyStoreValMode storeval_mode) {
- switch (storeval_mode) {
- case NONE:
- return arraycopy_loop<T, CHECKCAST, SATB, NONE>(src, dst, length, bound, disjoint);
- case RESOLVE_BARRIER:
- return arraycopy_loop<T, CHECKCAST, SATB, RESOLVE_BARRIER>(src, dst, length, bound, disjoint);
- case EVAC_BARRIER:
- return arraycopy_loop<T, CHECKCAST, SATB, EVAC_BARRIER>(src, dst, length, bound, disjoint);
- default:
- ShouldNotReachHere();
- return true; // happy compiler
- }
-}
-
-template <typename T, bool CHECKCAST, bool SATB, ShenandoahBarrierSet::ArrayCopyStoreValMode STOREVAL_MODE>
-bool ShenandoahBarrierSet::arraycopy_loop(T* src, T* dst, size_t length, Klass* bound, bool disjoint) {
- Thread* thread = Thread::current();
- ShenandoahMarkingContext* ctx = _heap->marking_context();
- ShenandoahEvacOOMScope oom_evac_scope;
-
- // We need to handle four cases:
- //
- // a) src < dst, conjoint, can only copy backward only
- // [...src...]
- // [...dst...]
- //
- // b) src < dst, disjoint, can only copy forward, because types may mismatch
- // [...src...]
- // [...dst...]
- //
- // c) src > dst, conjoint, can copy forward only
- // [...src...]
- // [...dst...]
- //
- // d) src > dst, disjoint, can only copy forward, because types may mismatch
- // [...src...]
- // [...dst...]
- //
- if (src > dst || disjoint) {
- // copy forward:
- T* cur_src = src;
- T* cur_dst = dst;
- T* src_end = src + length;
- for (; cur_src < src_end; cur_src++, cur_dst++) {
- if (!arraycopy_element<T, CHECKCAST, SATB, STOREVAL_MODE>(cur_src, cur_dst, bound, thread, ctx)) {
- return false;
- }
- }
- } else {
- // copy backward:
- T* cur_src = src + length - 1;
- T* cur_dst = dst + length - 1;
- for (; cur_src >= src; cur_src--, cur_dst--) {
- if (!arraycopy_element<T, CHECKCAST, SATB, STOREVAL_MODE>(cur_src, cur_dst, bound, thread, ctx)) {
- return false;
- }
- }
- }
- return true;
-}
-
-template <typename T, bool CHECKCAST, bool SATB, ShenandoahBarrierSet::ArrayCopyStoreValMode STOREVAL_MODE>
-bool ShenandoahBarrierSet::arraycopy_element(T* cur_src, T* cur_dst, Klass* bound, Thread* const thread, ShenandoahMarkingContext* const ctx) {
- T o = RawAccess<>::oop_load(cur_src);
-
- if (SATB) {
- assert(ShenandoahThreadLocalData::satb_mark_queue(thread).is_active(), "Shouldn't be here otherwise");
- T prev = RawAccess<>::oop_load(cur_dst);
- if (!CompressedOops::is_null(prev)) {
- oop prev_obj = CompressedOops::decode_not_null(prev);
- switch (STOREVAL_MODE) {
- case NONE:
- break;
- case RESOLVE_BARRIER:
- case EVAC_BARRIER:
- // The evac-barrier case cannot really happen. It's traversal-only and traversal
- // doesn't currently use SATB. And even if it did, it would not be fatal to just do the normal resolve here.
- prev_obj = ShenandoahBarrierSet::resolve_forwarded_not_null(prev_obj);
- }
- if (!ctx->is_marked(prev_obj)) {
- ShenandoahThreadLocalData::satb_mark_queue(thread).enqueue_known_active(prev_obj);
- }
- }
- }
-
- if (!CompressedOops::is_null(o)) {
- oop obj = CompressedOops::decode_not_null(o);
-
- if (CHECKCAST) {
- assert(bound != NULL, "need element klass for checkcast");
- if (!oopDesc::is_instanceof_or_null(obj, bound)) {
- return false;
- }
- }
-
- switch (STOREVAL_MODE) {
- case NONE:
- break;
- case RESOLVE_BARRIER:
- obj = ShenandoahBarrierSet::resolve_forwarded_not_null(obj);
- break;
- case EVAC_BARRIER:
- if (_heap->in_collection_set(obj)) {
- oop forw = ShenandoahBarrierSet::resolve_forwarded_not_null(obj);
- if (forw == obj) {
- forw = _heap->evacuate_object(forw, thread);
- }
- obj = forw;
- }
- enqueue(obj);
- break;
- default:
- ShouldNotReachHere();
- }
-
- RawAccess<IS_NOT_NULL>::oop_store(cur_dst, obj);
- } else {
- // Store null.
- RawAccess<>::oop_store(cur_dst, o);
- }
- return true;
-}
-
// Clone barrier support
template <DecoratorSet decorators, typename BarrierSetT>
void ShenandoahBarrierSet::AccessBarrier<decorators, BarrierSetT>::clone_in_heap(oop src, oop dst, size_t size) {
+ if (ShenandoahCloneBarrier) {
+ ShenandoahBarrierSet::barrier_set()->clone_barrier(src);
+ }
Raw::clone(src, dst, size);
- ShenandoahBarrierSet::barrier_set()->write_region(MemRegion((HeapWord*) dst, size));
}
template <DecoratorSet decorators, typename BarrierSetT>
@@ -338,36 +196,144 @@
bool ShenandoahBarrierSet::AccessBarrier<decorators, BarrierSetT>::oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
size_t length) {
- ShenandoahHeap* heap = ShenandoahHeap::heap();
- bool satb = ShenandoahSATBBarrier && heap->is_concurrent_mark_in_progress();
- bool checkcast = HasDecorator<decorators, ARRAYCOPY_CHECKCAST>::value;
- bool disjoint = HasDecorator<decorators, ARRAYCOPY_DISJOINT>::value;
- ArrayCopyStoreValMode storeval_mode;
- if (heap->has_forwarded_objects()) {
- if (heap->is_concurrent_traversal_in_progress()) {
- storeval_mode = EVAC_BARRIER;
- } else if (heap->is_update_refs_in_progress()) {
- storeval_mode = RESOLVE_BARRIER;
+ ShenandoahBarrierSet* bs = ShenandoahBarrierSet::barrier_set();
+ bs->arraycopy_pre(arrayOopDesc::obj_offset_to_raw(src_obj, src_offset_in_bytes, src_raw),
+ arrayOopDesc::obj_offset_to_raw(dst_obj, dst_offset_in_bytes, dst_raw),
+ length);
+ return Raw::oop_arraycopy_in_heap(src_obj, src_offset_in_bytes, src_raw, dst_obj, dst_offset_in_bytes, dst_raw, length);
+}
+
+template <class T, bool HAS_FWD, bool EVAC, bool ENQUEUE>
+void ShenandoahBarrierSet::arraycopy_work(T* src, size_t count) {
+ Thread* thread = Thread::current();
+ SATBMarkQueue& queue = ShenandoahThreadLocalData::satb_mark_queue(thread);
+ ShenandoahMarkingContext* ctx = _heap->marking_context();
+ const ShenandoahCollectionSet* const cset = _heap->collection_set();
+ T* end = src + count;
+ for (T* elem_ptr = src; elem_ptr < end; elem_ptr++) {
+ T o = RawAccess<>::oop_load(elem_ptr);
+ if (!CompressedOops::is_null(o)) {
+ oop obj = CompressedOops::decode_not_null(o);
+ if (HAS_FWD && cset->is_in((HeapWord *) obj)) {
+ assert(_heap->has_forwarded_objects(), "only get here with forwarded objects");
+ oop fwd = resolve_forwarded_not_null(obj);
+ if (EVAC && obj == fwd) {
+ fwd = _heap->evacuate_object(obj, thread);
+ }
+ assert(obj != fwd || _heap->cancelled_gc(), "must be forwarded");
+ oop witness = ShenandoahHeap::cas_oop(fwd, elem_ptr, o);
+ obj = fwd;
+ }
+ if (ENQUEUE && !ctx->is_marked(obj)) {
+ queue.enqueue_known_active(obj);
+ }
+ }
+ }
+}
+
+template <class T>
+void ShenandoahBarrierSet::arraycopy_pre_work(T* src, T* dst, size_t count) {
+ if (_heap->is_concurrent_mark_in_progress()) {
+ if (_heap->has_forwarded_objects()) {
+ arraycopy_work<T, true, false, true>(dst, count);
} else {
- assert(heap->is_idle() || heap->is_evacuation_in_progress(), "must not have anything in progress");
- storeval_mode = NONE; // E.g. during evac or outside cycle
+ arraycopy_work<T, false, false, true>(dst, count);
}
- } else {
- assert(heap->is_stable() || heap->is_concurrent_mark_in_progress(), "must not have anything in progress");
- storeval_mode = NONE;
}
- if (!satb && !checkcast && storeval_mode == NONE) {
- // Short-circuit to bulk copy.
- return Raw::oop_arraycopy(src_obj, src_offset_in_bytes, src_raw, dst_obj, dst_offset_in_bytes, dst_raw, length);
+ arraycopy_update_impl(src, count);
+}
+
+void ShenandoahBarrierSet::arraycopy_pre(oop* src, oop* dst, size_t count) {
+ arraycopy_pre_work(src, dst, count);
+}
+
+void ShenandoahBarrierSet::arraycopy_pre(narrowOop* src, narrowOop* dst, size_t count) {
+ arraycopy_pre_work(src, dst, count);
+}
+
+template <class T>
+void ShenandoahBarrierSet::arraycopy_update_impl(T* src, size_t count) {
+ if (_heap->is_evacuation_in_progress()) {
+ ShenandoahEvacOOMScope oom_evac;
+ arraycopy_work<T, true, true, false>(src, count);
+ } else if (_heap->is_concurrent_traversal_in_progress()){
+ ShenandoahEvacOOMScope oom_evac;
+ arraycopy_work<T, true, true, true>(src, count);
+ } else if (_heap->has_forwarded_objects()) {
+ arraycopy_work<T, true, false, false>(src, count);
+ }
+}
+
+void ShenandoahBarrierSet::arraycopy_update(oop* src, size_t count) {
+ arraycopy_update_impl(src, count);
+}
+
+void ShenandoahBarrierSet::arraycopy_update(narrowOop* src, size_t count) {
+ arraycopy_update_impl(src, count);
+}
+
+template <bool EVAC, bool ENQUEUE>
+class ShenandoahUpdateRefsForOopClosure: public BasicOopIterateClosure {
+private:
+ ShenandoahHeap* const _heap;
+ ShenandoahBarrierSet* const _bs;
+ const ShenandoahCollectionSet* const _cset;
+ Thread* const _thread;
+
+ template <class T>
+ inline void do_oop_work(T* p) {
+ T o = RawAccess<>::oop_load(p);
+ if (!CompressedOops::is_null(o)) {
+ oop obj = CompressedOops::decode_not_null(o);
+ if (_cset->is_in((HeapWord *)obj)) {
+ oop fwd = _bs->resolve_forwarded_not_null(obj);
+ if (EVAC && obj == fwd) {
+ fwd = _heap->evacuate_object(obj, _thread);
+ }
+ if (ENQUEUE) {
+ _bs->enqueue(fwd);
+ }
+ assert(obj != fwd || _heap->cancelled_gc(), "must be forwarded");
+ ShenandoahHeap::cas_oop(fwd, p, o);
+ }
+
+ }
+ }
+public:
+ ShenandoahUpdateRefsForOopClosure() :
+ _heap(ShenandoahHeap::heap()),
+ _bs(ShenandoahBarrierSet::barrier_set()),
+ _cset(_heap->collection_set()),
+ _thread(Thread::current()) {
}
- src_raw = arrayOopDesc::obj_offset_to_raw(src_obj, src_offset_in_bytes, src_raw);
- dst_raw = arrayOopDesc::obj_offset_to_raw(dst_obj, dst_offset_in_bytes, dst_raw);
+ virtual void do_oop(oop* p) { do_oop_work(p); }
+ virtual void do_oop(narrowOop* p) { do_oop_work(p); }
+};
+
+void ShenandoahBarrierSet::clone_barrier(oop obj) {
+ assert(ShenandoahCloneBarrier, "only get here with clone barriers enabled");
+ if (!_heap->has_forwarded_objects()) return;
+
+ // This is called for cloning an object (see jvm.cpp) after the clone
+ // has been made. We are not interested in any 'previous value' because
+ // it would be NULL in any case. But we *are* interested in any oop*
+ // that potentially need to be updated.
- Klass* bound = objArrayOop(dst_obj)->element_klass();
- ShenandoahBarrierSet* bs = ShenandoahBarrierSet::barrier_set();
- return bs->arraycopy_loop_1(src_raw, dst_raw, length, bound, checkcast, satb, disjoint, storeval_mode);
+ shenandoah_assert_correct(NULL, obj);
+ if (_heap->is_evacuation_in_progress()) {
+ ShenandoahEvacOOMScope evac_scope;
+ ShenandoahUpdateRefsForOopClosure</* evac = */ true, /* enqueue */ false> cl;
+ obj->oop_iterate(&cl);
+ } else if (_heap->is_concurrent_traversal_in_progress()) {
+ ShenandoahEvacOOMScope evac_scope;
+ ShenandoahUpdateRefsForOopClosure</* evac = */ true, /* enqueue */ true> cl;
+ obj->oop_iterate(&cl);
+ } else {
+ ShenandoahUpdateRefsForOopClosure</* evac = */ false, /* enqueue */ false> cl;
+ obj->oop_iterate(&cl);
+ }
}
#endif // SHARE_GC_SHENANDOAH_SHENANDOAHBARRIERSET_INLINE_HPP
--- a/src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -316,7 +316,11 @@
oop *loc = _oops[c];
assert(_nm->code_contains((address) loc) || _nm->oops_contains(loc), "nmethod should contain the oop*");
oop o = RawAccess<>::oop_load(loc);
- shenandoah_assert_correct_except(loc, o, o == NULL || heap->is_full_gc_move_in_progress());
+ shenandoah_assert_correct_except(loc, o,
+ o == NULL ||
+ heap->is_full_gc_move_in_progress() ||
+ (VMThread::vm_operation() != NULL) && (VMThread::vm_operation()->type() == VM_Operation::VMOp_HeapWalkOperation)
+ );
}
}
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -1225,7 +1225,22 @@
T o = RawAccess<>::oop_load(p);
if (!CompressedOops::is_null(o)) {
oop obj = CompressedOops::decode_not_null(o);
- obj = ShenandoahBarrierSet::resolve_forwarded_not_null(obj);
+ oop fwd = (oop) ShenandoahForwarding::get_forwardee_raw_unchecked(obj);
+ if (fwd == NULL) {
+ // There is an odd interaction with VM_HeapWalkOperation, see jvmtiTagMap.cpp.
+ //
+ // That operation walks the reachable objects on its own, storing the marking
+ // wavefront in the object marks. When it is done, it calls the CollectedHeap
+ // to iterate over all objects to clean up the mess. When it reaches here,
+ // the Shenandoah fwdptr resolution code encounters the marked objects with
+ // NULL forwardee. Trying to act on that would crash the VM. Or fail the
+ // asserts, should we go for resolve_forwarded_pointer(obj).
+ //
+ // Therefore, we have to dodge it by doing the raw access to forwardee, and
+ // assuming the object had no forwardee, if that thing is NULL.
+ } else {
+ obj = fwd;
+ }
assert(oopDesc::is_oop(obj), "must be a valid oop");
if (!_bitmap->is_marked((HeapWord*) obj)) {
_bitmap->mark((HeapWord*) obj);
@@ -1281,7 +1296,10 @@
ShenandoahHeapIterationRootScanner rp;
ObjectIterateScanRootClosure oops(&_aux_bit_map, &oop_stack);
- if (unload_classes()) {
+ // If we are unloading classes right now, we should not touch weak roots,
+ // on the off-chance we would evacuate them and make them live accidentally.
+ // In other cases, we have to scan all roots.
+ if (is_evacuation_in_progress() && unload_classes()) {
rp.strong_roots_do(&oops);
} else {
rp.roots_do(&oops);
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -707,6 +707,7 @@
static inline oop cas_oop(oop n, narrowOop* addr, oop c);
static inline oop cas_oop(oop n, oop* addr, oop c);
+ static inline oop cas_oop(oop n, narrowOop* addr, narrowOop c);
void trash_humongous_region_at(ShenandoahHeapRegion *r);
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -133,6 +133,11 @@
return (oop) Atomic::cmpxchg(n, addr, c);
}
+inline oop ShenandoahHeap::cas_oop(oop n, narrowOop* addr, narrowOop c) {
+ narrowOop val = CompressedOops::encode(n);
+ return CompressedOops::decode((narrowOop) Atomic::cmpxchg(val, addr, c));
+}
+
inline oop ShenandoahHeap::cas_oop(oop n, narrowOop* addr, oop c) {
narrowOop cmp = CompressedOops::encode(c);
narrowOop val = CompressedOops::encode(n);
--- a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -223,6 +223,7 @@
CLDToOopClosure clds(oops, ClassLoaderData::_claim_none);
MarkingCodeBlobClosure code(oops, !CodeBlobToOopClosure::FixRelocations);
ShenandoahParallelOopsDoThreadClosure tc_cl(oops, &code, NULL);
+ AlwaysTrueClosure always_true;
ResourceMark rm;
_serial_roots.oops_do(oops, 0);
@@ -230,6 +231,10 @@
_cld_roots.cld_do(&clds, 0);
_thread_roots.threads_do(&tc_cl, 0);
_code_roots.code_blobs_do(&code, 0);
+
+ _serial_weak_roots.weak_oops_do(oops, 0);
+ _weak_roots.oops_do<OopClosure>(oops, 0);
+ _dedup_roots.oops_do(&always_true, oops, 0);
}
void ShenandoahHeapIterationRootScanner::strong_roots_do(OopClosure* oops) {
--- a/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -254,6 +254,9 @@
ShenandoahVMRoots<false /*concurrent*/> _vm_roots;
ShenandoahClassLoaderDataRoots<false /*concurrent*/, true /*single threaded*/>
_cld_roots;
+ ShenandoahSerialWeakRoots _serial_weak_roots;
+ ShenandoahWeakRoots<false /*concurrent*/> _weak_roots;
+ ShenandoahStringDedupRoots _dedup_roots;
ShenandoahCodeCacheRoots<ShenandoahAllCodeRootsIterator> _code_roots;
public:
--- a/src/hotspot/share/gc/shenandoah/shenandoahRuntime.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/shenandoahRuntime.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -22,25 +22,30 @@
*/
#include "precompiled.hpp"
-#include "gc/shenandoah/shenandoahBarrierSet.hpp"
+#include "gc/shenandoah/shenandoahBarrierSet.inline.hpp"
#include "gc/shenandoah/shenandoahRuntime.hpp"
#include "gc/shenandoah/shenandoahThreadLocalData.hpp"
#include "runtime/interfaceSupport.inline.hpp"
#include "oops/oop.inline.hpp"
-void ShenandoahRuntime::write_ref_array_pre_oop_entry(oop* dst, size_t length) {
+void ShenandoahRuntime::write_ref_array_pre_oop_entry(oop* src, oop* dst, size_t length) {
ShenandoahBarrierSet *bs = ShenandoahBarrierSet::barrier_set();
- bs->write_ref_array_pre(dst, length, false);
+ bs->arraycopy_pre(src, dst, length);
}
-void ShenandoahRuntime::write_ref_array_pre_narrow_oop_entry(narrowOop* dst, size_t length) {
+void ShenandoahRuntime::write_ref_array_pre_narrow_oop_entry(narrowOop* src, narrowOop* dst, size_t length) {
ShenandoahBarrierSet *bs = ShenandoahBarrierSet::barrier_set();
- bs->write_ref_array_pre(dst, length, false);
+ bs->arraycopy_pre(src, dst, length);
}
-void ShenandoahRuntime::write_ref_array_post_entry(HeapWord* dst, size_t length) {
+void ShenandoahRuntime::write_ref_array_pre_duinit_oop_entry(oop* src, oop* dst, size_t length) {
ShenandoahBarrierSet *bs = ShenandoahBarrierSet::barrier_set();
- bs->ShenandoahBarrierSet::write_ref_array(dst, length);
+ bs->arraycopy_update(src, length);
+}
+
+void ShenandoahRuntime::write_ref_array_pre_duinit_narrow_oop_entry(narrowOop* src, narrowOop* dst, size_t length) {
+ ShenandoahBarrierSet *bs = ShenandoahBarrierSet::barrier_set();
+ bs->arraycopy_update(src, length);
}
// Shenandoah pre write barrier slowpath
@@ -55,15 +60,27 @@
ShenandoahThreadLocalData::satb_mark_queue(thread).enqueue_known_active(orig);
JRT_END
-JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier(oopDesc * src))
- oop result = ShenandoahBarrierSet::barrier_set()->load_reference_barrier_mutator(src);
- return (oopDesc*) result;
+JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier(oopDesc* src))
+ return ShenandoahBarrierSet::barrier_set()->load_reference_barrier_mutator(src, (oop*)NULL);
+JRT_END
+
+JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_fixup(oopDesc* src, oop* load_addr))
+ return ShenandoahBarrierSet::barrier_set()->load_reference_barrier_mutator(src, load_addr);
+JRT_END
+
+JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_fixup_narrow(oopDesc* src, narrowOop* load_addr))
+ return ShenandoahBarrierSet::barrier_set()->load_reference_barrier_mutator(src, load_addr);
JRT_END
// Shenandoah clone barrier: makes sure that references point to to-space
// in cloned objects.
-JRT_LEAF(void, ShenandoahRuntime::shenandoah_clone_barrier(oopDesc* obj))
- ShenandoahBarrierSet::barrier_set()->write_region(MemRegion((HeapWord*) obj, obj->size()));
+JRT_LEAF(void, ShenandoahRuntime::shenandoah_clone_barrier(oopDesc* s, oopDesc* d, size_t length))
+ oop src = oop(s);
+ oop dst = oop(d);
+ shenandoah_assert_correct(NULL, src);
+ shenandoah_assert_correct(NULL, dst);
+ ShenandoahBarrierSet::barrier_set()->clone_barrier(src);
+ RawAccessBarrier<IS_NOT_NULL>::clone(src, dst, length);
JRT_END
JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_native(oopDesc * src))
--- a/src/hotspot/share/gc/shenandoah/shenandoahRuntime.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/shenandoahRuntime.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -32,15 +32,19 @@
class ShenandoahRuntime : public AllStatic {
public:
- static void write_ref_array_pre_oop_entry(oop* dst, size_t length);
- static void write_ref_array_pre_narrow_oop_entry(narrowOop* dst, size_t length);
- static void write_ref_array_post_entry(HeapWord* dst, size_t length);
+ static void write_ref_array_pre_oop_entry(oop* src, oop* dst, size_t length);
+ static void write_ref_array_pre_narrow_oop_entry(narrowOop* src, narrowOop* dst, size_t length);
+ static void write_ref_array_pre_duinit_oop_entry(oop* src, oop* dst, size_t length);
+ static void write_ref_array_pre_duinit_narrow_oop_entry(narrowOop* src, narrowOop* dst, size_t length);
static void write_ref_field_pre_entry(oopDesc* orig, JavaThread* thread);
- static oopDesc* load_reference_barrier(oopDesc *src);
- static oopDesc* load_reference_barrier_native(oopDesc *src);
+ static oopDesc* load_reference_barrier(oopDesc* src);
+ static oopDesc* load_reference_barrier_fixup(oopDesc* src, oop* load_addr);
+ static oopDesc* load_reference_barrier_fixup_narrow(oopDesc* src, narrowOop* load_addr);
- static void shenandoah_clone_barrier(oopDesc* obj);
+ static oopDesc* load_reference_barrier_native(oopDesc* src);
+
+ static void shenandoah_clone_barrier(oopDesc* s, oopDesc* d, size_t length);
};
#endif // SHARE_GC_SHENANDOAH_SHENANDOAHRUNTIME_HPP
--- a/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -391,5 +391,10 @@
\
experimental(bool, ShenandoahLoopOptsAfterExpansion, true, \
"Attempt more loop opts after barrier expansion") \
+ \
+ diagnostic(bool, ShenandoahSelfFixing, true, \
+ "Fix references with load reference barrier. Disabling this " \
+ "might degrade performance.") \
+
#endif // SHARE_GC_SHENANDOAH_SHENANDOAH_GLOBALS_HPP
--- a/src/hotspot/share/gc/z/zAttachedArray.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zAttachedArray.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -29,7 +29,7 @@
template <typename ObjectT, typename ArrayT>
class ZAttachedArray {
private:
- const uint32_t _length;
+ const size_t _length;
static size_t object_size();
@@ -39,7 +39,7 @@
ZAttachedArray(size_t length);
- uint32_t length() const;
+ size_t length() const;
ArrayT* operator()(const ObjectT* obj) const;
};
--- a/src/hotspot/share/gc/z/zAttachedArray.inline.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zAttachedArray.inline.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -51,7 +51,7 @@
_length(length) {}
template <typename ObjectT, typename ArrayT>
-inline uint32_t ZAttachedArray<ObjectT, ArrayT>::length() const {
+inline size_t ZAttachedArray<ObjectT, ArrayT>::length() const {
return _length;
}
--- a/src/hotspot/share/gc/z/zBarrierSetNMethod.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zBarrierSetNMethod.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -45,7 +45,7 @@
// We don't need to take the lock when unlinking nmethods from
// the Method, because it is only concurrently unlinked by
// the entry barrier, which acquires the per nmethod lock.
- nm->unlink_from_method(false /* acquire_lock */);
+ nm->unlink_from_method();
// We can end up calling nmethods that are unloading
// since we clear compiled ICs lazily. Returning false
--- a/src/hotspot/share/gc/z/zCollectedHeap.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zCollectedHeap.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -368,11 +368,3 @@
bool ZCollectedHeap::is_oop(oop object) const {
return CollectedHeap::is_oop(object) && _heap.is_oop(object);
}
-
-void ZCollectedHeap::check_oop_location(void* addr) const {
- assert(is_object_aligned(addr), "address is not aligned");
-
- const uintptr_t addr_int = reinterpret_cast<uintptr_t>(addr);
- assert(addr_int >= ZAddressSpaceStart, "address is outside of the heap");
- assert(addr_int < ZAddressSpaceEnd, "address is outside of the heap");
-}
--- a/src/hotspot/share/gc/z/zCollectedHeap.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zCollectedHeap.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -126,7 +126,6 @@
virtual void prepare_for_verify();
virtual void verify(VerifyOption option /* ignored */);
virtual bool is_oop(oop object) const;
- virtual void check_oop_location(void* addr) const;
};
#endif // SHARE_GC_Z_ZCOLLECTEDHEAP_HPP
--- a/src/hotspot/share/gc/z/zForwarding.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zForwarding.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -34,7 +34,7 @@
// The table is sized to have a load factor of 50%, i.e. sized to have
// double the number of entries actually inserted.
assert(page->live_objects() > 0, "Invalid value");
- const uint32_t nentries = ZUtils::round_up_power_of_2(page->live_objects() * 2);
+ const size_t nentries = ZUtils::round_up_power_of_2(page->live_objects() * 2);
return ::new (AttachedArray::alloc(nentries)) ZForwarding(page, nentries);
}
@@ -42,7 +42,7 @@
AttachedArray::free(forwarding);
}
-ZForwarding::ZForwarding(ZPage* page, uint32_t nentries) :
+ZForwarding::ZForwarding(ZPage* page, size_t nentries) :
_virtual(page->virtual_memory()),
_object_alignment_shift(page->object_alignment_shift()),
_entries(nentries),
@@ -54,7 +54,7 @@
guarantee(_refcount > 0, "Invalid refcount");
guarantee(_page != NULL, "Invalid page");
- uint32_t live_objects = 0;
+ size_t live_objects = 0;
for (ZForwardingCursor i = 0; i < _entries.length(); i++) {
const ZForwardingEntry entry = at(&i);
--- a/src/hotspot/share/gc/z/zForwarding.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zForwarding.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -30,7 +30,7 @@
class ZPage;
-typedef uint32_t ZForwardingCursor;
+typedef size_t ZForwardingCursor;
class ZForwarding {
friend class VMStructs;
@@ -54,7 +54,7 @@
ZForwardingEntry first(uintptr_t from_index, ZForwardingCursor* cursor) const;
ZForwardingEntry next(ZForwardingCursor* cursor) const;
- ZForwarding(ZPage* page, uint32_t nentries);
+ ZForwarding(ZPage* page, size_t nentries);
public:
static ZForwarding* create(ZPage* page);
--- a/src/hotspot/share/gc/z/zForwarding.inline.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zForwarding.inline.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -99,14 +99,14 @@
}
inline ZForwardingEntry ZForwarding::first(uintptr_t from_index, ZForwardingCursor* cursor) const {
- const uint32_t mask = _entries.length() - 1;
- const uint32_t hash = ZHash::uint32_to_uint32((uint32_t)from_index);
+ const size_t mask = _entries.length() - 1;
+ const size_t hash = ZHash::uint32_to_uint32((uint32_t)from_index);
*cursor = hash & mask;
return at(cursor);
}
inline ZForwardingEntry ZForwarding::next(ZForwardingCursor* cursor) const {
- const uint32_t mask = _entries.length() - 1;
+ const size_t mask = _entries.length() - 1;
*cursor = (*cursor + 1) & mask;
return at(cursor);
}
--- a/src/hotspot/share/gc/z/zForwardingEntry.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zForwardingEntry.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -46,7 +46,7 @@
//
class ZForwardingEntry {
- friend struct PrimitiveConversions;
+ friend class PrimitiveConversions;
private:
typedef ZBitField<uint64_t, bool, 0, 1> field_populated;
--- a/src/hotspot/share/gc/z/zNMethod.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zNMethod.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -266,10 +266,11 @@
// handshake separating unlink and purge.
nm->flush_dependencies(false /* delete_immediately */);
- // We don't need to take the lock when unlinking nmethods from
+ // unlink_from_method will take the CompiledMethod_lock.
+ // In this case we don't strictly need it when unlinking nmethods from
// the Method, because it is only concurrently unlinked by
// the entry barrier, which acquires the per nmethod lock.
- nm->unlink_from_method(false /* acquire_lock */);
+ nm->unlink_from_method();
if (nm->is_osr_method()) {
// Invalidate the osr nmethod before the handshake. The nmethod
--- a/src/hotspot/share/gc/z/zNMethodData.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zNMethodData.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -45,7 +45,7 @@
_has_non_immediates(has_non_immediates) {
// Save all immediate oops
for (size_t i = 0; i < immediates_count(); i++) {
- immediates_begin()[i] = immediates.at(i);
+ immediates_begin()[i] = immediates.at(int(i));
}
}
--- a/src/hotspot/share/gc/z/zNUMA.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zNUMA.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -21,6 +21,7 @@
* questions.
*/
+#include "precompiled.hpp"
#include "gc/z/zNUMA.hpp"
#include "logging/log.hpp"
#include "runtime/os.hpp"
--- a/src/hotspot/share/gc/z/zRelocate.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zRelocate.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -126,7 +126,7 @@
// Relocation contention
ZStatInc(ZCounterRelocationContention);
log_trace(gc)("Relocation contention, thread: " PTR_FORMAT " (%s), forwarding: " PTR_FORMAT
- ", entry: " UINT32_FORMAT ", oop: " PTR_FORMAT ", size: " SIZE_FORMAT,
+ ", entry: " SIZE_FORMAT ", oop: " PTR_FORMAT ", size: " SIZE_FORMAT,
ZThread::id(), ZThread::name(), p2i(forwarding), cursor, from_good, size);
// Try undo allocation
--- a/src/hotspot/share/gc/z/zStat.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zStat.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -354,12 +354,11 @@
void ZStatValue::initialize() {
// Finalize and align CPU offset
- _cpu_offset = align_up(_cpu_offset, ZCacheLineSize);
+ _cpu_offset = align_up(_cpu_offset, (uint32_t)ZCacheLineSize);
// Allocation aligned memory
const size_t size = _cpu_offset * ZCPU::count();
_base = ZUtils::alloc_aligned(ZCacheLineSize, size);
- memset((void*)_base, 0, size);
}
const char* ZStatValue::group() const {
--- a/src/hotspot/share/gc/z/zUncommitter.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/gc/z/zUncommitter.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -36,7 +36,7 @@
bool ZUncommitter::idle(uint64_t timeout) {
// Idle for at least one second
- const uint64_t expires = os::elapsedTime() + MAX2(timeout, 1ul);
+ const uint64_t expires = os::elapsedTime() + MAX2<uint64_t>(timeout, 1);
for (;;) {
// We might wake up spuriously from wait, so always recalculate
--- a/src/hotspot/share/include/jmm.h Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/include/jmm.h Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, 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
@@ -239,9 +239,6 @@
jobject (JNICALL *GetMemoryPoolUsage) (JNIEnv* env, jobject pool);
jobject (JNICALL *GetPeakMemoryPoolUsage) (JNIEnv* env, jobject pool);
- jlong (JNICALL *GetOneThreadAllocatedMemory)
- (JNIEnv *env,
- jlong thread_id);
void (JNICALL *GetThreadAllocatedMemory)
(JNIEnv *env,
jlongArray ids,
--- a/src/hotspot/share/jvmci/jvmciEnv.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/jvmci/jvmciEnv.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -31,6 +31,7 @@
#include "memory/universe.hpp"
#include "oops/objArrayKlass.hpp"
#include "oops/typeArrayOop.inline.hpp"
+#include "runtime/deoptimization.hpp"
#include "runtime/jniHandles.inline.hpp"
#include "runtime/javaCalls.hpp"
#include "jvmci/jniAccessMark.inline.hpp"
@@ -1491,8 +1492,7 @@
// Invalidating the HotSpotNmethod means we want the nmethod
// to be deoptimized.
nm->mark_for_deoptimization();
- VM_Deoptimize op;
- VMThread::execute(&op);
+ Deoptimization::deoptimize_all_marked();
}
// A HotSpotNmethod instance can only reference a single nmethod
--- a/src/hotspot/share/jvmci/jvmciRuntime.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/jvmci/jvmciRuntime.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -1520,7 +1520,10 @@
comp_level, method_name, nm->entry_point());
}
// Allow the code to be executed
- method->set_code(method, nm);
+ MutexLocker ml(CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
+ if (nm->make_in_use()) {
+ method->set_code(method, nm);
+ }
} else {
LogTarget(Info, nmethod, install) lt;
if (lt.is_enabled()) {
@@ -1529,12 +1532,14 @@
lt.print("Installing osr method (%d) %s @ %d",
comp_level, method_name, entry_bci);
}
- InstanceKlass::cast(method->method_holder())->add_osr_nmethod(nm);
+ MutexLocker ml(CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
+ if (nm->make_in_use()) {
+ InstanceKlass::cast(method->method_holder())->add_osr_nmethod(nm);
+ }
}
} else {
assert(!nmethod_mirror.is_hotspot() || data->get_nmethod_mirror(nm, /* phantom_ref */ false) == HotSpotJVMCI::resolve(nmethod_mirror), "must be");
}
- nm->make_in_use();
}
result = nm != NULL ? JVMCI::ok :JVMCI::cache_full;
}
--- a/src/hotspot/share/oops/compressedOops.inline.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/oops/compressedOops.inline.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -58,7 +58,8 @@
inline narrowOop CompressedOops::encode_not_null(oop v) {
assert(!is_null(v), "oop value can never be zero");
- DEBUG_ONLY(Universe::heap()->check_oop_location(v);)
+ assert(is_object_aligned(v), "address not aligned: " PTR_FORMAT, p2i((void*)v));
+ assert(is_in(v), "address not in heap range: " PTR_FORMAT, p2i((void*)v));
uint64_t pd = (uint64_t)(pointer_delta((void*)v, (void*)base(), 1));
assert(OopEncodingHeapMax > pd, "change encoding max if new encoding");
uint64_t result = pd >> shift();
--- a/src/hotspot/share/oops/instanceKlass.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/oops/instanceKlass.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -2973,6 +2973,7 @@
// On-stack replacement stuff
void InstanceKlass::add_osr_nmethod(nmethod* n) {
+ assert_lock_strong(CompiledMethod_lock);
#ifndef PRODUCT
if (TieredCompilation) {
nmethod * prev = lookup_osr_nmethod(n->method(), n->osr_entry_bci(), n->comp_level(), true);
@@ -2982,8 +2983,6 @@
#endif
// only one compilation can be active
{
- // This is a short non-blocking critical region, so the no safepoint check is ok.
- MutexLocker ml(OsrList_lock, Mutex::_no_safepoint_check_flag);
assert(n->is_osr_method(), "wrong kind of nmethod");
n->set_osr_link(osr_nmethods_head());
set_osr_nmethods_head(n);
@@ -3008,7 +3007,8 @@
// Remove osr nmethod from the list. Return true if found and removed.
bool InstanceKlass::remove_osr_nmethod(nmethod* n) {
// This is a short non-blocking critical region, so the no safepoint check is ok.
- MutexLocker ml(OsrList_lock, Mutex::_no_safepoint_check_flag);
+ MutexLocker ml(CompiledMethod_lock->owned_by_self() ? NULL : CompiledMethod_lock
+ , Mutex::_no_safepoint_check_flag);
assert(n->is_osr_method(), "wrong kind of nmethod");
nmethod* last = NULL;
nmethod* cur = osr_nmethods_head();
@@ -3051,8 +3051,8 @@
}
int InstanceKlass::mark_osr_nmethods(const Method* m) {
- // This is a short non-blocking critical region, so the no safepoint check is ok.
- MutexLocker ml(OsrList_lock, Mutex::_no_safepoint_check_flag);
+ MutexLocker ml(CompiledMethod_lock->owned_by_self() ? NULL : CompiledMethod_lock,
+ Mutex::_no_safepoint_check_flag);
nmethod* osr = osr_nmethods_head();
int found = 0;
while (osr != NULL) {
@@ -3067,8 +3067,8 @@
}
nmethod* InstanceKlass::lookup_osr_nmethod(const Method* m, int bci, int comp_level, bool match_level) const {
- // This is a short non-blocking critical region, so the no safepoint check is ok.
- MutexLocker ml(OsrList_lock, Mutex::_no_safepoint_check_flag);
+ MutexLocker ml(CompiledMethod_lock->owned_by_self() ? NULL : CompiledMethod_lock,
+ Mutex::_no_safepoint_check_flag);
nmethod* osr = osr_nmethods_head();
nmethod* best = NULL;
while (osr != NULL) {
--- a/src/hotspot/share/oops/method.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/oops/method.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -103,7 +103,7 @@
// Fix and bury in Method*
set_interpreter_entry(NULL); // sets i2i entry and from_int
set_adapter_entry(NULL);
- clear_code(false /* don't need a lock */); // from_c/from_i get set to c2i/i2i
+ Method::clear_code(); // from_c/from_i get set to c2i/i2i
if (access_flags.is_native()) {
clear_native_function();
@@ -825,7 +825,7 @@
set_native_function(
SharedRuntime::native_method_throw_unsatisfied_link_error_entry(),
!native_bind_event_is_interesting);
- clear_code();
+ this->unlink_code();
}
@@ -941,8 +941,7 @@
}
// Revert to using the interpreter and clear out the nmethod
-void Method::clear_code(bool acquire_lock /* = true */) {
- MutexLocker pl(acquire_lock ? Patching_lock : NULL, Mutex::_no_safepoint_check_flag);
+void Method::clear_code() {
// this may be NULL if c2i adapters have not been made yet
// Only should happen at allocate time.
if (adapter() == NULL) {
@@ -956,6 +955,25 @@
_code = NULL;
}
+void Method::unlink_code(CompiledMethod *compare) {
+ MutexLocker ml(CompiledMethod_lock->owned_by_self() ? NULL : CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
+ // We need to check if either the _code or _from_compiled_code_entry_point
+ // refer to this nmethod because there is a race in setting these two fields
+ // in Method* as seen in bugid 4947125.
+ // If the vep() points to the zombie nmethod, the memory for the nmethod
+ // could be flushed and the compiler and vtable stubs could still call
+ // through it.
+ if (code() == compare ||
+ from_compiled_entry() == compare->verified_entry_point()) {
+ clear_code();
+ }
+}
+
+void Method::unlink_code() {
+ MutexLocker ml(CompiledMethod_lock->owned_by_self() ? NULL : CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
+ clear_code();
+}
+
#if INCLUDE_CDS
// Called by class data sharing to remove any entry points (which are not shared)
void Method::unlink_method() {
@@ -1182,7 +1200,7 @@
// Install compiled code. Instantly it can execute.
void Method::set_code(const methodHandle& mh, CompiledMethod *code) {
- MutexLocker pl(Patching_lock, Mutex::_no_safepoint_check_flag);
+ assert_lock_strong(CompiledMethod_lock);
assert( code, "use clear_code to remove code" );
assert( mh->check_code(), "" );
--- a/src/hotspot/share/oops/method.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/oops/method.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -463,7 +463,17 @@
address verified_code_entry();
bool check_code() const; // Not inline to avoid circular ref
CompiledMethod* volatile code() const;
- void clear_code(bool acquire_lock = true); // Clear out any compiled code
+
+ // Locks CompiledMethod_lock if not held.
+ void unlink_code(CompiledMethod *compare);
+ // Locks CompiledMethod_lock if not held.
+ void unlink_code();
+
+private:
+ // Either called with CompiledMethod_lock held or from constructor.
+ void clear_code();
+
+public:
static void set_code(const methodHandle& mh, CompiledMethod* code);
void set_adapter_entry(AdapterHandlerEntry* adapter) {
constMethod()->set_adapter_entry(adapter);
--- a/src/hotspot/share/oops/oop.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/oops/oop.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -209,7 +209,6 @@
#ifdef ASSERT
void oopDesc::verify_forwardee(oop forwardee) {
- Universe::heap()->check_oop_location(forwardee);
#if INCLUDE_CDS_JAVA_HEAP
assert(!HeapShared::is_archived_object(forwardee) && !HeapShared::is_archived_object(this),
"forwarding archive object");
--- a/src/hotspot/share/opto/macro.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/opto/macro.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -63,6 +63,22 @@
Node* make_store(Node* ctl, Node* mem, Node* base, int offset,
Node* value, BasicType bt);
+ Node* make_leaf_call(Node* ctrl, Node* mem,
+ const TypeFunc* call_type, address call_addr,
+ const char* call_name,
+ const TypePtr* adr_type,
+ Node* parm0 = NULL, Node* parm1 = NULL,
+ Node* parm2 = NULL, Node* parm3 = NULL,
+ Node* parm4 = NULL, Node* parm5 = NULL,
+ Node* parm6 = NULL, Node* parm7 = NULL);
+
+ address basictype2arraycopy(BasicType t,
+ Node* src_offset,
+ Node* dest_offset,
+ bool disjoint_bases,
+ const char* &name,
+ bool dest_uninitialized);
+
private:
// projections extracted from a call node
ProjNode *_fallthroughproj;
@@ -103,14 +119,6 @@
void insert_mem_bar(Node** ctrl, Node** mem, int opcode, Node* precedent = NULL);
Node* array_element_address(Node* ary, Node* idx, BasicType elembt);
Node* ConvI2L(Node* offset);
- Node* make_leaf_call(Node* ctrl, Node* mem,
- const TypeFunc* call_type, address call_addr,
- const char* call_name,
- const TypePtr* adr_type,
- Node* parm0 = NULL, Node* parm1 = NULL,
- Node* parm2 = NULL, Node* parm3 = NULL,
- Node* parm4 = NULL, Node* parm5 = NULL,
- Node* parm6 = NULL, Node* parm7 = NULL);
// helper methods modeled after LibraryCallKit for array copy
Node* generate_guard(Node** ctrl, Node* test, RegionNode* region, float true_prob);
@@ -121,12 +129,6 @@
// More helper methods for array copy
Node* generate_nonpositive_guard(Node** ctrl, Node* index, bool never_negative);
void finish_arraycopy_call(Node* call, Node** ctrl, MergeMemNode** mem, const TypePtr* adr_type);
- address basictype2arraycopy(BasicType t,
- Node* src_offset,
- Node* dest_offset,
- bool disjoint_bases,
- const char* &name,
- bool dest_uninitialized);
Node* generate_arraycopy(ArrayCopyNode *ac,
AllocateArrayNode* alloc,
Node** ctrl, MergeMemNode* mem, Node** io,
--- a/src/hotspot/share/opto/macroArrayCopy.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/opto/macroArrayCopy.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -1093,22 +1093,8 @@
MergeMemNode* merge_mem = NULL;
if (ac->is_clonebasic()) {
- assert (src_offset == NULL && dest_offset == NULL, "for clone offsets should be null");
- Node* mem = ac->in(TypeFunc::Memory);
- const char* copyfunc_name = "arraycopy";
- address copyfunc_addr =
- basictype2arraycopy(T_LONG, NULL, NULL,
- true, copyfunc_name, true);
-
- const TypePtr* raw_adr_type = TypeRawPtr::BOTTOM;
- const TypeFunc* call_type = OptoRuntime::fast_arraycopy_Type();
-
- Node* call = make_leaf_call(ctrl, mem, call_type, copyfunc_addr, copyfunc_name, raw_adr_type, src, dest, length XTOP);
- transform_later(call);
-
BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
- bs->clone_barrier_at_expansion(ac, call, _igvn);
-
+ bs->clone_at_expansion(this, ac);
return;
} else if (ac->is_copyof() || ac->is_copyofrange() || ac->is_cloneoop()) {
Node* mem = ac->in(TypeFunc::Memory);
--- a/src/hotspot/share/prims/jvmtiEnv.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/prims/jvmtiEnv.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -3411,7 +3411,7 @@
#endif /* PROPER_TRANSITIONS */
} else {
if (thread->is_Named_thread()) {
- r = rmonitor->raw_wait(millis, true, thread);
+ r = rmonitor->raw_wait(millis, false, thread);
} else {
ShouldNotReachHere();
}
--- a/src/hotspot/share/prims/jvmtiEventController.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/prims/jvmtiEventController.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -32,6 +32,7 @@
#include "prims/jvmtiExport.hpp"
#include "prims/jvmtiImpl.hpp"
#include "prims/jvmtiThreadState.inline.hpp"
+#include "runtime/deoptimization.hpp"
#include "runtime/frame.hpp"
#include "runtime/thread.inline.hpp"
#include "runtime/threadSMR.hpp"
@@ -239,8 +240,7 @@
}
}
if (num_marked > 0) {
- VM_Deoptimize op;
- VMThread::execute(&op);
+ Deoptimization::deoptimize_all_marked();
}
}
}
--- a/src/hotspot/share/prims/methodHandles.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/prims/methodHandles.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -42,6 +42,7 @@
#include "oops/typeArrayOop.inline.hpp"
#include "prims/methodHandles.hpp"
#include "runtime/compilationPolicy.hpp"
+#include "runtime/deoptimization.hpp"
#include "runtime/fieldDescriptor.inline.hpp"
#include "runtime/handles.inline.hpp"
#include "runtime/interfaceSupport.inline.hpp"
@@ -1109,8 +1110,7 @@
}
if (marked > 0) {
// At least one nmethod has been marked for deoptimization.
- VM_Deoptimize op;
- VMThread::execute(&op);
+ Deoptimization::deoptimize_all_marked();
}
}
@@ -1506,8 +1506,7 @@
}
if (marked > 0) {
// At least one nmethod has been marked for deoptimization
- VM_Deoptimize op;
- VMThread::execute(&op);
+ Deoptimization::deoptimize_all_marked();
}
}
}
--- a/src/hotspot/share/prims/whitebox.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/prims/whitebox.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -820,10 +820,8 @@
WB_END
WB_ENTRY(void, WB_DeoptimizeAll(JNIEnv* env, jobject o))
- MutexLocker mu(Compile_lock);
CodeCache::mark_all_nmethods_for_deoptimization();
- VM_Deoptimize op;
- VMThread::execute(&op);
+ Deoptimization::deoptimize_all_marked();
WB_END
WB_ENTRY(jint, WB_DeoptimizeMethod(JNIEnv* env, jobject o, jobject method, jboolean is_osr))
@@ -840,8 +838,7 @@
}
result += CodeCache::mark_for_deoptimization(mh());
if (result > 0) {
- VM_Deoptimize op;
- VMThread::execute(&op);
+ Deoptimization::deoptimize_all_marked();
}
return result;
WB_END
--- a/src/hotspot/share/runtime/biasedLocking.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/biasedLocking.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -726,6 +726,29 @@
assert(!obj->mark().has_bias_pattern(), "must not be biased");
}
+void BiasedLocking::revoke_own_lock(Handle obj, TRAPS) {
+ assert(THREAD->is_Java_thread(), "must be called by a JavaThread");
+ JavaThread* thread = (JavaThread*)THREAD;
+
+ markWord mark = obj->mark();
+
+ if (!mark.has_bias_pattern()) {
+ return;
+ }
+
+ Klass *k = obj->klass();
+ assert(mark.biased_locker() == thread &&
+ k->prototype_header().bias_epoch() == mark.bias_epoch(), "Revoke failed, unhandled biased lock state");
+ ResourceMark rm;
+ log_info(biasedlocking)("Revoking bias by walking my own stack:");
+ EventBiasedLockSelfRevocation event;
+ BiasedLocking::walk_stack_and_revoke(obj(), (JavaThread*) thread);
+ thread->set_cached_monitor_info(NULL);
+ assert(!obj->mark().has_bias_pattern(), "invariant");
+ if (event.should_commit()) {
+ post_self_revocation_event(&event, k);
+ }
+}
void BiasedLocking::revoke(Handle obj, TRAPS) {
assert(!SafepointSynchronize::is_at_safepoint(), "must not be called while at safepoint");
@@ -864,23 +887,6 @@
}
-void BiasedLocking::revoke_at_safepoint(GrowableArray<Handle>* objs) {
- assert(SafepointSynchronize::is_at_safepoint(), "must only be called while at safepoint");
- int len = objs->length();
- for (int i = 0; i < len; i++) {
- oop obj = (objs->at(i))();
- HeuristicsResult heuristics = update_heuristics(obj);
- if (heuristics == HR_SINGLE_REVOKE) {
- single_revoke_at_safepoint(obj, false, NULL, NULL);
- } else if ((heuristics == HR_BULK_REBIAS) ||
- (heuristics == HR_BULK_REVOKE)) {
- bulk_revoke_at_safepoint(obj, (heuristics == HR_BULK_REBIAS), NULL);
- }
- }
- clean_up_cached_monitor_info();
-}
-
-
void BiasedLocking::preserve_marks() {
if (!UseBiasedLocking)
return;
--- a/src/hotspot/share/runtime/biasedLocking.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/biasedLocking.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -190,12 +190,14 @@
// This should be called by JavaThreads to revoke the bias of an object
static void revoke(Handle obj, TRAPS);
+ // This must only be called by a JavaThread to revoke the bias of an owned object.
+ static void revoke_own_lock(Handle obj, TRAPS);
+
static void revoke_at_safepoint(Handle obj);
// These are used by deoptimization to ensure that monitors on the stack
// can be migrated
static void revoke(GrowableArray<Handle>* objs, JavaThread *biaser);
- static void revoke_at_safepoint(GrowableArray<Handle>* objs);
static void print_counters() { _counters.print(); }
static BiasedLockingCounters* counters() { return &_counters; }
--- a/src/hotspot/share/runtime/deoptimization.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/deoptimization.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -157,6 +157,92 @@
return fetch_unroll_info_helper(thread, exec_mode);
JRT_END
+#if COMPILER2_OR_JVMCI
+static bool eliminate_allocations(JavaThread* thread, int exec_mode, CompiledMethod* compiled_method,
+ frame& deoptee, RegisterMap& map, GrowableArray<compiledVFrame*>* chunk) {
+ bool realloc_failures = false;
+ assert (chunk->at(0)->scope() != NULL,"expect only compiled java frames");
+
+ GrowableArray<ScopeValue*>* objects = chunk->at(0)->scope()->objects();
+
+ // The flag return_oop() indicates call sites which return oop
+ // in compiled code. Such sites include java method calls,
+ // runtime calls (for example, used to allocate new objects/arrays
+ // on slow code path) and any other calls generated in compiled code.
+ // It is not guaranteed that we can get such information here only
+ // by analyzing bytecode in deoptimized frames. This is why this flag
+ // is set during method compilation (see Compile::Process_OopMap_Node()).
+ // If the previous frame was popped or if we are dispatching an exception,
+ // we don't have an oop result.
+ bool save_oop_result = chunk->at(0)->scope()->return_oop() && !thread->popframe_forcing_deopt_reexecution() && (exec_mode == Deoptimization::Unpack_deopt);
+ Handle return_value;
+ if (save_oop_result) {
+ // Reallocation may trigger GC. If deoptimization happened on return from
+ // call which returns oop we need to save it since it is not in oopmap.
+ oop result = deoptee.saved_oop_result(&map);
+ assert(oopDesc::is_oop_or_null(result), "must be oop");
+ return_value = Handle(thread, result);
+ assert(Universe::heap()->is_in_or_null(result), "must be heap pointer");
+ if (TraceDeoptimization) {
+ ttyLocker ttyl;
+ tty->print_cr("SAVED OOP RESULT " INTPTR_FORMAT " in thread " INTPTR_FORMAT, p2i(result), p2i(thread));
+ }
+ }
+ if (objects != NULL) {
+ JRT_BLOCK
+ realloc_failures = Deoptimization::realloc_objects(thread, &deoptee, &map, objects, THREAD);
+ JRT_END
+ bool skip_internal = (compiled_method != NULL) && !compiled_method->is_compiled_by_jvmci();
+ Deoptimization::reassign_fields(&deoptee, &map, objects, realloc_failures, skip_internal);
+#ifndef PRODUCT
+ if (TraceDeoptimization) {
+ ttyLocker ttyl;
+ tty->print_cr("REALLOC OBJECTS in thread " INTPTR_FORMAT, p2i(thread));
+ Deoptimization::print_objects(objects, realloc_failures);
+ }
+#endif
+ }
+ if (save_oop_result) {
+ // Restore result.
+ deoptee.set_saved_oop_result(&map, return_value());
+ }
+ return realloc_failures;
+}
+
+static void eliminate_locks(JavaThread* thread, GrowableArray<compiledVFrame*>* chunk, bool realloc_failures) {
+#ifndef PRODUCT
+ bool first = true;
+#endif
+ for (int i = 0; i < chunk->length(); i++) {
+ compiledVFrame* cvf = chunk->at(i);
+ assert (cvf->scope() != NULL,"expect only compiled java frames");
+ GrowableArray<MonitorInfo*>* monitors = cvf->monitors();
+ if (monitors->is_nonempty()) {
+ Deoptimization::relock_objects(monitors, thread, realloc_failures);
+#ifndef PRODUCT
+ if (PrintDeoptimizationDetails) {
+ ttyLocker ttyl;
+ for (int j = 0; j < monitors->length(); j++) {
+ MonitorInfo* mi = monitors->at(j);
+ if (mi->eliminated()) {
+ if (first) {
+ first = false;
+ tty->print_cr("RELOCK OBJECTS in thread " INTPTR_FORMAT, p2i(thread));
+ }
+ if (mi->owner_is_scalar_replaced()) {
+ Klass* k = java_lang_Class::as_Klass(mi->owner_klass());
+ tty->print_cr(" failed reallocation for klass %s", k->external_name());
+ } else {
+ tty->print_cr(" object <" INTPTR_FORMAT "> locked", p2i(mi->owner()));
+ }
+ }
+ }
+ }
+#endif // !PRODUCT
+ }
+ }
+}
+#endif // COMPILER2_OR_JVMCI
// This is factored, since it is both called from a JRT_LEAF (deoptimization) and a JRT_ENTRY (uncommon_trap)
Deoptimization::UnrollBlock* Deoptimization::fetch_unroll_info_helper(JavaThread* thread, int exec_mode) {
@@ -201,95 +287,33 @@
bool realloc_failures = false;
#if COMPILER2_OR_JVMCI
+#if INCLUDE_JVMCI
+ bool jvmci_enabled = true;
+#else
+ bool jvmci_enabled = false;
+#endif
+
// Reallocate the non-escaping objects and restore their fields. Then
// relock objects if synchronization on them was eliminated.
-#if !INCLUDE_JVMCI
- if (DoEscapeAnalysis || EliminateNestedLocks) {
- if (EliminateAllocations) {
-#endif // INCLUDE_JVMCI
- assert (chunk->at(0)->scope() != NULL,"expect only compiled java frames");
- GrowableArray<ScopeValue*>* objects = chunk->at(0)->scope()->objects();
+ if (jvmci_enabled || ((DoEscapeAnalysis || EliminateNestedLocks) && EliminateAllocations)) {
+ realloc_failures = eliminate_allocations(thread, exec_mode, cm, deoptee, map, chunk);
+ }
+#endif // COMPILER2_OR_JVMCI
+
+ // Revoke biases, done with in java state.
+ // No safepoints allowed after this
+ revoke_from_deopt_handler(thread, deoptee, &map);
- // The flag return_oop() indicates call sites which return oop
- // in compiled code. Such sites include java method calls,
- // runtime calls (for example, used to allocate new objects/arrays
- // on slow code path) and any other calls generated in compiled code.
- // It is not guaranteed that we can get such information here only
- // by analyzing bytecode in deoptimized frames. This is why this flag
- // is set during method compilation (see Compile::Process_OopMap_Node()).
- // If the previous frame was popped or if we are dispatching an exception,
- // we don't have an oop result.
- bool save_oop_result = chunk->at(0)->scope()->return_oop() && !thread->popframe_forcing_deopt_reexecution() && (exec_mode == Unpack_deopt);
- Handle return_value;
- if (save_oop_result) {
- // Reallocation may trigger GC. If deoptimization happened on return from
- // call which returns oop we need to save it since it is not in oopmap.
- oop result = deoptee.saved_oop_result(&map);
- assert(oopDesc::is_oop_or_null(result), "must be oop");
- return_value = Handle(thread, result);
- assert(Universe::heap()->is_in_or_null(result), "must be heap pointer");
- if (TraceDeoptimization) {
- ttyLocker ttyl;
- tty->print_cr("SAVED OOP RESULT " INTPTR_FORMAT " in thread " INTPTR_FORMAT, p2i(result), p2i(thread));
- }
- }
- if (objects != NULL) {
- JRT_BLOCK
- realloc_failures = realloc_objects(thread, &deoptee, &map, objects, THREAD);
- JRT_END
- bool skip_internal = (cm != NULL) && !cm->is_compiled_by_jvmci();
- reassign_fields(&deoptee, &map, objects, realloc_failures, skip_internal);
-#ifndef PRODUCT
- if (TraceDeoptimization) {
- ttyLocker ttyl;
- tty->print_cr("REALLOC OBJECTS in thread " INTPTR_FORMAT, p2i(thread));
- print_objects(objects, realloc_failures);
- }
-#endif
- }
- if (save_oop_result) {
- // Restore result.
- deoptee.set_saved_oop_result(&map, return_value());
- }
-#if !INCLUDE_JVMCI
- }
- if (EliminateLocks) {
-#endif // INCLUDE_JVMCI
-#ifndef PRODUCT
- bool first = true;
-#endif
- for (int i = 0; i < chunk->length(); i++) {
- compiledVFrame* cvf = chunk->at(i);
- assert (cvf->scope() != NULL,"expect only compiled java frames");
- GrowableArray<MonitorInfo*>* monitors = cvf->monitors();
- if (monitors->is_nonempty()) {
- relock_objects(monitors, thread, realloc_failures);
-#ifndef PRODUCT
- if (PrintDeoptimizationDetails) {
- ttyLocker ttyl;
- for (int j = 0; j < monitors->length(); j++) {
- MonitorInfo* mi = monitors->at(j);
- if (mi->eliminated()) {
- if (first) {
- first = false;
- tty->print_cr("RELOCK OBJECTS in thread " INTPTR_FORMAT, p2i(thread));
- }
- if (mi->owner_is_scalar_replaced()) {
- Klass* k = java_lang_Class::as_Klass(mi->owner_klass());
- tty->print_cr(" failed reallocation for klass %s", k->external_name());
- } else {
- tty->print_cr(" object <" INTPTR_FORMAT "> locked", p2i(mi->owner()));
- }
- }
- }
- }
-#endif // !PRODUCT
- }
- }
-#if !INCLUDE_JVMCI
- }
+ // Ensure that no safepoint is taken after pointers have been stored
+ // in fields of rematerialized objects. If a safepoint occurs from here on
+ // out the java state residing in the vframeArray will be missed.
+ // Locks may be rebaised in a safepoint.
+ NoSafepointVerifier no_safepoint;
+
+#if COMPILER2_OR_JVMCI
+ if (jvmci_enabled || ((DoEscapeAnalysis || EliminateNestedLocks) && EliminateLocks)) {
+ eliminate_locks(thread, chunk, realloc_failures);
}
-#endif // INCLUDE_JVMCI
#endif // COMPILER2_OR_JVMCI
ScopeDesc* trap_scope = chunk->at(0)->scope();
@@ -305,11 +329,6 @@
guarantee(exceptionObject() != NULL, "exception oop can not be null");
}
- // Ensure that no safepoint is taken after pointers have been stored
- // in fields of rematerialized objects. If a safepoint occurs from here on
- // out the java state residing in the vframeArray will be missed.
- NoSafepointVerifier no_safepoint;
-
vframeArray* array = create_vframeArray(thread, deoptee, &map, chunk, realloc_failures);
#if COMPILER2_OR_JVMCI
if (realloc_failures) {
@@ -779,10 +798,33 @@
return bt;
JRT_END
+class DeoptimizeMarkedTC : public ThreadClosure {
+ public:
+ virtual void do_thread(Thread* thread) {
+ assert(thread->is_Java_thread(), "must be");
+ JavaThread* jt = (JavaThread*)thread;
+ jt->deoptimize_marked_methods();
+ }
+};
-int Deoptimization::deoptimize_dependents() {
- Threads::deoptimized_wrt_marked_nmethods();
- return 0;
+void Deoptimization::deoptimize_all_marked() {
+ ResourceMark rm;
+ DeoptimizationMarker dm;
+
+ if (SafepointSynchronize::is_at_safepoint()) {
+ DeoptimizeMarkedTC deopt;
+ // Make the dependent methods not entrant
+ CodeCache::make_marked_nmethods_not_entrant();
+ Threads::java_threads_do(&deopt);
+ } else {
+ // Make the dependent methods not entrant
+ {
+ MutexLocker mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
+ CodeCache::make_marked_nmethods_not_entrant();
+ }
+ DeoptimizeMarkedTC deopt;
+ Handshake::execute(&deopt);
+ }
}
Deoptimization::DeoptAction Deoptimization::_unloaded_action
@@ -1397,14 +1439,7 @@
}
}
-
-void Deoptimization::revoke_biases_of_monitors(JavaThread* thread, frame fr, RegisterMap* map) {
- if (!UseBiasedLocking) {
- return;
- }
-
- GrowableArray<Handle>* objects_to_revoke = new GrowableArray<Handle>();
-
+static void get_monitors_from_stack(GrowableArray<Handle>* objects_to_revoke, JavaThread* thread, frame fr, RegisterMap* map) {
// Unfortunately we don't have a RegisterMap available in most of
// the places we want to call this routine so we need to walk the
// stack again to update the register map.
@@ -1428,11 +1463,20 @@
cvf = compiledVFrame::cast(cvf->sender());
}
collect_monitors(cvf, objects_to_revoke);
+}
- if (SafepointSynchronize::is_at_safepoint()) {
- BiasedLocking::revoke_at_safepoint(objects_to_revoke);
- } else {
- BiasedLocking::revoke(objects_to_revoke, thread);
+void Deoptimization::revoke_from_deopt_handler(JavaThread* thread, frame fr, RegisterMap* map) {
+ if (!UseBiasedLocking) {
+ return;
+ }
+ GrowableArray<Handle>* objects_to_revoke = new GrowableArray<Handle>();
+ get_monitors_from_stack(objects_to_revoke, thread, fr, map);
+
+ int len = objects_to_revoke->length();
+ for (int i = 0; i < len; i++) {
+ oop obj = (objects_to_revoke->at(i))();
+ BiasedLocking::revoke_own_lock(objects_to_revoke->at(i), thread);
+ assert(!obj->mark().has_bias_pattern(), "biases should be revoked by now");
}
}
@@ -1464,10 +1508,6 @@
fr.deoptimize(thread);
}
-void Deoptimization::deoptimize(JavaThread* thread, frame fr, RegisterMap *map) {
- deoptimize(thread, fr, map, Reason_constraint);
-}
-
void Deoptimization::deoptimize(JavaThread* thread, frame fr, RegisterMap *map, DeoptReason reason) {
// Deoptimize only if the frame comes from compile code.
// Do not deoptimize the frame which is already patched
@@ -1477,11 +1517,7 @@
}
ResourceMark rm;
DeoptimizationMarker dm;
- if (UseBiasedLocking) {
- revoke_biases_of_monitors(thread, fr, map);
- }
deoptimize_single_frame(thread, fr, reason);
-
}
#if INCLUDE_JVMCI
@@ -1642,9 +1678,6 @@
{
ResourceMark rm;
- // Revoke biases of any monitors in the frame to ensure we can migrate them
- revoke_biases_of_monitors(thread, fr, ®_map);
-
DeoptReason reason = trap_request_reason(trap_request);
DeoptAction action = trap_request_action(trap_request);
#if INCLUDE_JVMCI
--- a/src/hotspot/share/runtime/deoptimization.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/deoptimization.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -137,13 +137,19 @@
Unpack_LIMIT = 4
};
+ static void deoptimize_all_marked();
+
+ private:
// Checks all compiled methods. Invalid methods are deleted and
// corresponding activations are deoptimized.
static int deoptimize_dependents();
+ // Revoke biased locks at deopt.
+ static void revoke_from_deopt_handler(JavaThread* thread, frame fr, RegisterMap* map);
+
+ public:
// Deoptimizes a frame lazily. nmethod gets patched deopt happens on return to the frame
- static void deoptimize(JavaThread* thread, frame fr, RegisterMap *reg_map);
- static void deoptimize(JavaThread* thread, frame fr, RegisterMap *reg_map, DeoptReason reason);
+ static void deoptimize(JavaThread* thread, frame fr, RegisterMap *reg_map, DeoptReason reason = Reason_constraint);
#if INCLUDE_JVMCI
static address deoptimize_for_missing_exception_handler(CompiledMethod* cm);
@@ -154,12 +160,8 @@
// Does the actual work for deoptimizing a single frame
static void deoptimize_single_frame(JavaThread* thread, frame fr, DeoptReason reason);
- // Helper function to revoke biases of all monitors in frame if UseBiasedLocking
- // is enabled
- static void revoke_biases_of_monitors(JavaThread* thread, frame fr, RegisterMap* map);
-
#if COMPILER2_OR_JVMCI
-JVMCI_ONLY(public:)
+ public:
// Support for restoring non-escaping objects
static bool realloc_objects(JavaThread* thread, frame* fr, RegisterMap* reg_map, GrowableArray<ScopeValue*>* objects, TRAPS);
--- a/src/hotspot/share/runtime/mutex.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/mutex.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -64,7 +64,7 @@
event,
access = event + 1,
tty = access + 2,
- special = tty + 1,
+ special = tty + 2,
suspend_resume = special + 1,
oopstorage = suspend_resume + 2,
leaf = oopstorage + 2,
--- a/src/hotspot/share/runtime/mutexLocker.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/mutexLocker.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -39,6 +39,7 @@
// Consider using GCC's __read_mostly.
Mutex* Patching_lock = NULL;
+Mutex* CompiledMethod_lock = NULL;
Monitor* SystemDictionary_lock = NULL;
Mutex* ProtectionDomainSet_lock = NULL;
Mutex* SharedDictionary_lock = NULL;
@@ -93,7 +94,6 @@
Monitor* Notify_lock = NULL;
Mutex* ProfilePrint_lock = NULL;
Mutex* ExceptionCache_lock = NULL;
-Mutex* OsrList_lock = NULL;
Mutex* NMethodSweeperStats_lock = NULL;
#ifndef PRODUCT
Mutex* FullGCALot_lock = NULL;
@@ -233,6 +233,7 @@
def(ClassLoaderDataGraph_lock , PaddedMutex , nonleaf, true, Monitor::_safepoint_check_always);
def(Patching_lock , PaddedMutex , special, true, Monitor::_safepoint_check_never); // used for safepointing and code patching.
+ def(CompiledMethod_lock , PaddedMutex , special-1, true, Monitor::_safepoint_check_never);
def(Service_lock , PaddedMonitor, special, true, Monitor::_safepoint_check_never); // used for service thread operations
def(JmethodIdCreation_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_always); // used for creating jmethodIDs.
@@ -248,7 +249,6 @@
def(SymbolArena_lock , PaddedMutex , leaf+2, true, Monitor::_safepoint_check_never);
def(ProfilePrint_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing
def(ExceptionCache_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // serial profile printing
- def(OsrList_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
def(Debug1_lock , PaddedMutex , leaf, true, Monitor::_safepoint_check_never);
#ifndef PRODUCT
def(FullGCALot_lock , PaddedMutex , leaf, false, Monitor::_safepoint_check_always); // a lock to make FullGCALot MT safe
--- a/src/hotspot/share/runtime/mutexLocker.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/mutexLocker.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -32,6 +32,7 @@
// Mutexes used in the VM.
extern Mutex* Patching_lock; // a lock used to guard code patching of compiled code
+extern Mutex* CompiledMethod_lock; // a lock used to guard a compiled method and OSR queues
extern Monitor* SystemDictionary_lock; // a lock on the system dictionary
extern Mutex* ProtectionDomainSet_lock; // a lock on the pd_set list in the system dictionary
extern Mutex* SharedDictionary_lock; // a lock on the CDS shared dictionary
@@ -90,7 +91,6 @@
extern Monitor* Notify_lock; // a lock used to synchronize the start-up of the vm
extern Mutex* ProfilePrint_lock; // a lock used to serialize the printing of profiles
extern Mutex* ExceptionCache_lock; // a lock used to synchronize exception cache updates
-extern Mutex* OsrList_lock; // a lock used to serialize access to OSR queues
extern Mutex* NMethodSweeperStats_lock; // a lock used to serialize access to sweeper statistics
#ifndef PRODUCT
--- a/src/hotspot/share/runtime/sharedRuntime.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/sharedRuntime.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -2902,7 +2902,12 @@
nm = SharedRuntime::generate_native_wrapper(&_masm, method, compile_id, sig_bt, regs, ret_type, critical_entry);
if (nm != NULL) {
- method->set_code(method, nm);
+ {
+ MutexLocker pl(CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
+ if (nm->make_in_use()) {
+ method->set_code(method, nm);
+ }
+ }
DirectiveSet* directive = DirectivesStack::getDefaultDirective(CompileBroker::compiler(CompLevel_simple));
if (directive->PrintAssemblyOption) {
--- a/src/hotspot/share/runtime/thread.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/thread.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -2894,7 +2894,7 @@
#endif // PRODUCT
-void JavaThread::deoptimized_wrt_marked_nmethods() {
+void JavaThread::deoptimize_marked_methods() {
if (!has_last_Java_frame()) return;
// BiasedLocking needs an updated RegisterMap for the revoke monitors pass
StackFrameStream fst(this, UseBiasedLocking);
@@ -2905,7 +2905,6 @@
}
}
-
// If the caller is a NamedThread, then remember, in the current scope,
// the given JavaThread in its _processed_thread field.
class RememberProcessedThread: public StackObj {
@@ -4638,13 +4637,6 @@
threads_do(&handles_closure);
}
-void Threads::deoptimized_wrt_marked_nmethods() {
- ALL_JAVA_THREADS(p) {
- p->deoptimized_wrt_marked_nmethods();
- }
-}
-
-
// Get count Java threads that are waiting to enter the specified monitor.
GrowableArray<JavaThread*>* Threads::get_pending_threads(ThreadsList * t_list,
int count,
@@ -5000,65 +4992,6 @@
}
}
-void Thread::muxAcquireW(volatile intptr_t * Lock, ParkEvent * ev) {
- intptr_t w = Atomic::cmpxchg(LOCKBIT, Lock, (intptr_t)0);
- if (w == 0) return;
- if ((w & LOCKBIT) == 0 && Atomic::cmpxchg(w|LOCKBIT, Lock, w) == w) {
- return;
- }
-
- ParkEvent * ReleaseAfter = NULL;
- if (ev == NULL) {
- ev = ReleaseAfter = ParkEvent::Allocate(NULL);
- }
- assert((intptr_t(ev) & LOCKBIT) == 0, "invariant");
- for (;;) {
- guarantee(ev->OnList == 0, "invariant");
- int its = (os::is_MP() ? 100 : 0) + 1;
-
- // Optional spin phase: spin-then-park strategy
- while (--its >= 0) {
- w = *Lock;
- if ((w & LOCKBIT) == 0 && Atomic::cmpxchg(w|LOCKBIT, Lock, w) == w) {
- if (ReleaseAfter != NULL) {
- ParkEvent::Release(ReleaseAfter);
- }
- return;
- }
- }
-
- ev->reset();
- ev->OnList = intptr_t(Lock);
- // The following fence() isn't _strictly necessary as the subsequent
- // CAS() both serializes execution and ratifies the fetched *Lock value.
- OrderAccess::fence();
- for (;;) {
- w = *Lock;
- if ((w & LOCKBIT) == 0) {
- if (Atomic::cmpxchg(w|LOCKBIT, Lock, w) == w) {
- ev->OnList = 0;
- // We call ::Release while holding the outer lock, thus
- // artificially lengthening the critical section.
- // Consider deferring the ::Release() until the subsequent unlock(),
- // after we've dropped the outer lock.
- if (ReleaseAfter != NULL) {
- ParkEvent::Release(ReleaseAfter);
- }
- return;
- }
- continue; // Interference -- *Lock changed -- Just retry
- }
- assert(w & LOCKBIT, "invariant");
- ev->ListNext = (ParkEvent *) (w & ~LOCKBIT);
- if (Atomic::cmpxchg(intptr_t(ev)|LOCKBIT, Lock, w) == w) break;
- }
-
- while (ev->OnList != 0) {
- ev->park();
- }
- }
-}
-
// Release() must extract a successor from the list and then wake that thread.
// It can "pop" the front of the list or use a detach-modify-reattach (DMR) scheme
// similar to that used by ParkEvent::Allocate() and ::Release(). DMR-based
--- a/src/hotspot/share/runtime/thread.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/thread.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -802,7 +802,6 @@
static void SpinAcquire(volatile int * Lock, const char * Name);
static void SpinRelease(volatile int * Lock);
static void muxAcquire(volatile intptr_t * Lock, const char * Name);
- static void muxAcquireW(volatile intptr_t * Lock, ParkEvent * ev);
static void muxRelease(volatile intptr_t * Lock);
};
@@ -1886,7 +1885,7 @@
void deoptimize();
void make_zombies();
- void deoptimized_wrt_marked_nmethods();
+ void deoptimize_marked_methods();
public:
// Returns the running thread as a JavaThread
--- a/src/hotspot/share/runtime/tieredThresholdPolicy.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/tieredThresholdPolicy.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -445,6 +445,7 @@
if (mh->has_compiled_code()) {
mh->code()->make_not_entrant();
}
+ MutexLocker pl(CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
Method::set_code(mh, mh->aot_code());
}
}
--- a/src/hotspot/share/runtime/vmOperations.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/vmOperations.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -115,18 +115,6 @@
}
}
-void VM_Deoptimize::doit() {
- // We do not want any GCs to happen while we are in the middle of this VM operation
- ResourceMark rm;
- DeoptimizationMarker dm;
-
- // Deoptimize all activations depending on marked nmethods
- Deoptimization::deoptimize_dependents();
-
- // Make the dependent methods not entrant
- CodeCache::make_marked_nmethods_not_entrant();
-}
-
void VM_MarkActiveNMethods::doit() {
NMethodSweeper::mark_active_nmethods();
}
--- a/src/hotspot/share/runtime/vmOperations.hpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/vmOperations.hpp Sat Sep 21 12:10:52 2019 +0200
@@ -49,7 +49,6 @@
template(ClearICs) \
template(ForceSafepoint) \
template(ForceAsyncSafepoint) \
- template(Deoptimize) \
template(DeoptimizeFrame) \
template(DeoptimizeAll) \
template(ZombieAll) \
@@ -318,14 +317,6 @@
VM_GTestExecuteAtSafepoint() {}
};
-class VM_Deoptimize: public VM_Operation {
- public:
- VM_Deoptimize() {}
- VMOp_Type type() const { return VMOp_Deoptimize; }
- void doit();
- bool allow_nested_vm_operations() const { return true; }
-};
-
class VM_MarkActiveNMethods: public VM_Operation {
public:
VM_MarkActiveNMethods() {}
--- a/src/hotspot/share/runtime/vmThread.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/runtime/vmThread.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -556,6 +556,7 @@
_cur_vm_operation = safepoint_ops;
if (_cur_vm_operation != NULL) {
do {
+ EventMark em("Executing coalesced safepoint VM operation: %s", _cur_vm_operation->name());
log_debug(vmthread)("Evaluating coalesced safepoint VM operation: %s", _cur_vm_operation->name());
// evaluate_operation deletes the op object so we have
// to grab the next op now
--- a/src/hotspot/share/services/dtraceAttacher.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/services/dtraceAttacher.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,23 +33,6 @@
#ifdef SOLARIS
-class VM_DeoptimizeTheWorld : public VM_Operation {
- public:
- VMOp_Type type() const {
- return VMOp_DeoptimizeTheWorld;
- }
- void doit() {
- CodeCache::mark_all_nmethods_for_deoptimization();
- ResourceMark rm;
- DeoptimizationMarker dm;
- // Deoptimize all activations depending on marked methods
- Deoptimization::deoptimize_dependents();
-
- // Mark the dependent methods non entrant
- CodeCache::make_marked_nmethods_not_entrant();
- }
-};
-
static void set_bool_flag(const char* name, bool value) {
JVMFlag* flag = JVMFlag::find_flag(name);
JVMFlag::boolAtPut(flag, &value, JVMFlag::ATTACH_ON_DEMAND);
@@ -74,8 +57,8 @@
if (changed) {
// one or more flags changed, need to deoptimize
- VM_DeoptimizeTheWorld op;
- VMThread::execute(&op);
+ CodeCache::mark_all_nmethods_for_deoptimization();
+ Deoptimization::deoptimize_all_marked();
}
}
@@ -97,8 +80,8 @@
}
if (changed) {
// one or more flags changed, need to deoptimize
- VM_DeoptimizeTheWorld op;
- VMThread::execute(&op);
+ CodeCache::mark_all_nmethods_for_deoptimization();
+ Deoptimization::deoptimize_all_marked();
}
}
--- a/src/hotspot/share/services/management.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/src/hotspot/share/services/management.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -2068,31 +2068,6 @@
}
#endif // INCLUDE_MANAGEMENT
-// Gets the amount of memory allocated on the Java heap for a single thread.
-// Returns -1 if the thread does not exist or has terminated.
-JVM_ENTRY(jlong, jmm_GetOneThreadAllocatedMemory(JNIEnv *env, jlong thread_id))
- if (thread_id < 0) {
- THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
- "Invalid thread ID", -1);
- }
-
- if (thread_id == 0) {
- // current thread
- if (THREAD->is_Java_thread()) {
- return ((JavaThread*)THREAD)->cooked_allocated_bytes();
- }
- return -1;
- }
-
- ThreadsListHandle tlh;
- JavaThread* java_thread = tlh.list()->find_JavaThread_from_java_tid(thread_id);
-
- if (java_thread != NULL) {
- return java_thread->cooked_allocated_bytes();
- }
- return -1;
-JVM_END
-
// Gets an array containing the amount of memory allocated on the Java
// heap for a set of threads (in bytes). Each element of the array is
// the amount of memory allocated for the thread ID specified in the
@@ -2217,7 +2192,6 @@
jmm_GetMemoryManagers,
jmm_GetMemoryPoolUsage,
jmm_GetPeakMemoryPoolUsage,
- jmm_GetOneThreadAllocatedMemory,
jmm_GetThreadAllocatedMemory,
jmm_GetMemoryUsage,
jmm_GetLongAttribute,
--- a/src/java.base/share/classes/java/io/BufferedInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/BufferedInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -192,7 +192,7 @@
*
* @param in the underlying input stream.
* @param size the buffer size.
- * @exception IllegalArgumentException if {@code size <= 0}.
+ * @throws IllegalArgumentException if {@code size <= 0}.
*/
public BufferedInputStream(InputStream in, int size) {
super(in);
@@ -254,7 +254,7 @@
*
* @return the next byte of data, or <code>-1</code> if the end of the
* stream is reached.
- * @exception IOException if this input stream has been closed by
+ * @throws IOException if this input stream has been closed by
* invoking its {@link #close()} method,
* or an I/O error occurs.
* @see java.io.FilterInputStream#in
@@ -325,7 +325,7 @@
* @param len maximum number of bytes to read.
* @return the number of bytes read, or <code>-1</code> if the end of
* the stream has been reached.
- * @exception IOException if this input stream has been closed by
+ * @throws IOException if this input stream has been closed by
* invoking its {@link #close()} method,
* or an I/O error occurs.
*/
@@ -400,7 +400,7 @@
*
* @return an estimate of the number of bytes that can be read (or skipped
* over) from this input stream without blocking.
- * @exception IOException if this input stream has been closed by
+ * @throws IOException if this input stream has been closed by
* invoking its {@link #close()} method,
* or an I/O error occurs.
*/
@@ -435,7 +435,7 @@
* is thrown. Otherwise, <code>pos</code> is
* set equal to <code>markpos</code>.
*
- * @exception IOException if this stream has not been marked or,
+ * @throws IOException if this stream has not been marked or,
* if the mark has been invalidated, or the stream
* has been closed by invoking its {@link #close()}
* method, or an I/O error occurs.
@@ -470,7 +470,7 @@
* or skip() invocations will throw an IOException.
* Closing a previously closed stream has no effect.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void close() throws IOException {
byte[] buffer;
--- a/src/java.base/share/classes/java/io/BufferedOutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/BufferedOutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -65,7 +65,7 @@
*
* @param out the underlying output stream.
* @param size the buffer size.
- * @exception IllegalArgumentException if size <= 0.
+ * @throws IllegalArgumentException if size <= 0.
*/
public BufferedOutputStream(OutputStream out, int size) {
super(out);
@@ -87,7 +87,7 @@
* Writes the specified byte to this buffered output stream.
*
* @param b the byte to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
@Override
public synchronized void write(int b) throws IOException {
@@ -111,7 +111,7 @@
* @param b the data.
* @param off the start offset in the data.
* @param len the number of bytes to write.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
@Override
public synchronized void write(byte b[], int off, int len) throws IOException {
@@ -134,7 +134,7 @@
* Flushes this buffered output stream. This forces any buffered
* output bytes to be written out to the underlying output stream.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
*/
@Override
--- a/src/java.base/share/classes/java/io/BufferedReader.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/BufferedReader.java Sat Sep 21 12:10:52 2019 +0200
@@ -95,7 +95,7 @@
* @param in A Reader
* @param sz Input-buffer size
*
- * @exception IllegalArgumentException If {@code sz <= 0}
+ * @throws IllegalArgumentException If {@code sz <= 0}
*/
public BufferedReader(Reader in, int sz) {
super(in);
@@ -172,7 +172,7 @@
* @return The character read, as an integer in the range
* 0 to 65535 ({@code 0x00-0xffff}), or -1 if the
* end of the stream has been reached
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public int read() throws IOException {
synchronized (lock) {
@@ -271,8 +271,8 @@
* @return The number of characters read, or -1 if the end of the
* stream has been reached
*
- * @exception IOException If an I/O error occurs
- * @exception IndexOutOfBoundsException {@inheritDoc}
+ * @throws IOException If an I/O error occurs
+ * @throws IndexOutOfBoundsException {@inheritDoc}
*/
public int read(char cbuf[], int off, int len) throws IOException {
synchronized (lock) {
@@ -311,7 +311,7 @@
*
* @see java.io.LineNumberReader#readLine()
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
String readLine(boolean ignoreLF, boolean[] term) throws IOException {
StringBuffer s = null;
@@ -388,7 +388,7 @@
* any line-termination characters, or null if the end of the
* stream has been reached without reading any characters
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*
* @see java.nio.file.Files#readAllLines
*/
@@ -403,8 +403,8 @@
*
* @return The number of characters actually skipped
*
- * @exception IllegalArgumentException If <code>n</code> is negative.
- * @exception IOException If an I/O error occurs
+ * @throws IllegalArgumentException If <code>n</code> is negative.
+ * @throws IOException If an I/O error occurs
*/
public long skip(long n) throws IOException {
if (n < 0L) {
@@ -444,7 +444,7 @@
* stream is ready if the buffer is not empty, or if the underlying
* character stream is ready.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public boolean ready() throws IOException {
synchronized (lock) {
@@ -491,8 +491,8 @@
* whose size is no smaller than limit.
* Therefore large values should be used with care.
*
- * @exception IllegalArgumentException If {@code readAheadLimit < 0}
- * @exception IOException If an I/O error occurs
+ * @throws IllegalArgumentException If {@code readAheadLimit < 0}
+ * @throws IOException If an I/O error occurs
*/
public void mark(int readAheadLimit) throws IOException {
if (readAheadLimit < 0) {
@@ -509,7 +509,7 @@
/**
* Resets the stream to the most recent mark.
*
- * @exception IOException If the stream has never been marked,
+ * @throws IOException If the stream has never been marked,
* or if the mark has been invalidated
*/
public void reset() throws IOException {
--- a/src/java.base/share/classes/java/io/BufferedWriter.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/BufferedWriter.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -89,7 +89,7 @@
* @param out A Writer
* @param sz Output-buffer size, a positive integer
*
- * @exception IllegalArgumentException If {@code sz <= 0}
+ * @throws IllegalArgumentException If {@code sz <= 0}
*/
public BufferedWriter(Writer out, int sz) {
super(out);
@@ -125,7 +125,7 @@
/**
* Writes a single character.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public void write(int c) throws IOException {
synchronized (lock) {
@@ -240,7 +240,7 @@
* system property {@code line.separator}, and is not necessarily a single
* newline ('\n') character.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public void newLine() throws IOException {
write(System.lineSeparator());
@@ -249,7 +249,7 @@
/**
* Flushes the stream.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public void flush() throws IOException {
synchronized (lock) {
--- a/src/java.base/share/classes/java/io/CharArrayReader.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/CharArrayReader.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -95,7 +95,7 @@
/**
* Reads a single character.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public int read() throws IOException {
synchronized (lock) {
@@ -109,14 +109,14 @@
/**
* Reads characters into a portion of an array.
- * @param b Destination buffer
- * @param off Offset at which to start storing characters
- * @param len Maximum number of characters to read
+ * @param b Destination buffer
+ * @param off Offset at which to start storing characters
+ * @param len Maximum number of characters to read
* @return The actual number of characters read, or -1 if
* the end of the stream has been reached
*
- * @exception IOException If an I/O error occurs
- * @exception IndexOutOfBoundsException {@inheritDoc}
+ * @throws IOException If an I/O error occurs
+ * @throws IndexOutOfBoundsException {@inheritDoc}
*/
public int read(char b[], int off, int len) throws IOException {
synchronized (lock) {
@@ -153,9 +153,9 @@
* an exception in this case. If <code>n</code> is negative, then
* this method does nothing and returns <code>0</code>.
*
- * @param n The number of characters to skip
- * @return The number of characters actually skipped
- * @exception IOException If the stream is closed, or an I/O error occurs
+ * @param n The number of characters to skip
+ * @return The number of characters actually skipped
+ * @throws IOException If the stream is closed, or an I/O error occurs
*/
public long skip(long n) throws IOException {
synchronized (lock) {
@@ -177,7 +177,7 @@
* Tells whether this stream is ready to be read. Character-array readers
* are always ready to be read.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public boolean ready() throws IOException {
synchronized (lock) {
@@ -203,7 +203,7 @@
* there is no actual limit; hence this argument is
* ignored.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public void mark(int readAheadLimit) throws IOException {
synchronized (lock) {
@@ -216,7 +216,7 @@
* Resets the stream to the most recent mark, or to the beginning if it has
* never been marked.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public void reset() throws IOException {
synchronized (lock) {
--- a/src/java.base/share/classes/java/io/CharArrayWriter.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/CharArrayWriter.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -61,8 +61,8 @@
/**
* Creates a new CharArrayWriter with the specified initial size.
*
- * @param initialSize an int specifying the initial buffer size.
- * @exception IllegalArgumentException if initialSize is negative
+ * @param initialSize an int specifying the initial buffer size.
+ * @throws IllegalArgumentException if initialSize is negative
*/
public CharArrayWriter(int initialSize) {
if (initialSize < 0) {
--- a/src/java.base/share/classes/java/io/DataInput.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/DataInput.java Sat Sep 21 12:10:52 2019 +0200
@@ -268,7 +268,7 @@
*
* @param n the number of bytes to be skipped.
* @return the number of bytes actually skipped.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
int skipBytes(int n) throws IOException;
@@ -281,9 +281,9 @@
* method of interface {@code DataOutput}.
*
* @return the {@code boolean} value read.
- * @exception EOFException if this stream reaches the end before reading
+ * @throws EOFException if this stream reaches the end before reading
* all the bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
boolean readBoolean() throws IOException;
@@ -297,9 +297,9 @@
* method of interface {@code DataOutput}.
*
* @return the 8-bit value read.
- * @exception EOFException if this stream reaches the end before reading
+ * @throws EOFException if this stream reaches the end before reading
* all the bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
byte readByte() throws IOException;
@@ -317,9 +317,9 @@
* {@code 0} through {@code 255}.
*
* @return the unsigned 8-bit value read.
- * @exception EOFException if this stream reaches the end before reading
+ * @throws EOFException if this stream reaches the end before reading
* all the bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
int readUnsignedByte() throws IOException;
@@ -338,9 +338,9 @@
* interface {@code DataOutput}.
*
* @return the 16-bit value read.
- * @exception EOFException if this stream reaches the end before reading
+ * @throws EOFException if this stream reaches the end before reading
* all the bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
short readShort() throws IOException;
@@ -361,9 +361,9 @@
* {@code 0} through {@code 65535}.
*
* @return the unsigned 16-bit value read.
- * @exception EOFException if this stream reaches the end before reading
+ * @throws EOFException if this stream reaches the end before reading
* all the bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
int readUnsignedShort() throws IOException;
@@ -381,9 +381,9 @@
* {@code DataOutput}.
*
* @return the {@code char} value read.
- * @exception EOFException if this stream reaches the end before reading
+ * @throws EOFException if this stream reaches the end before reading
* all the bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
char readChar() throws IOException;
@@ -400,9 +400,9 @@
* method of interface {@code DataOutput}.
*
* @return the {@code int} value read.
- * @exception EOFException if this stream reaches the end before reading
+ * @throws EOFException if this stream reaches the end before reading
* all the bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
int readInt() throws IOException;
@@ -427,9 +427,9 @@
* method of interface {@code DataOutput}.
*
* @return the {@code long} value read.
- * @exception EOFException if this stream reaches the end before reading
+ * @throws EOFException if this stream reaches the end before reading
* all the bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
long readLong() throws IOException;
@@ -447,9 +447,9 @@
* method of interface {@code DataOutput}.
*
* @return the {@code float} value read.
- * @exception EOFException if this stream reaches the end before reading
+ * @throws EOFException if this stream reaches the end before reading
* all the bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
float readFloat() throws IOException;
@@ -467,9 +467,9 @@
* method of interface {@code DataOutput}.
*
* @return the {@code double} value read.
- * @exception EOFException if this stream reaches the end before reading
+ * @throws EOFException if this stream reaches the end before reading
* all the bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
double readDouble() throws IOException;
@@ -510,7 +510,7 @@
* @return the next line of text from the input stream,
* or {@code null} if the end of file is
* encountered before a byte can be read.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
String readLine() throws IOException;
@@ -593,10 +593,10 @@
* may be used to write data that is suitable
* for reading by this method.
* @return a Unicode string.
- * @exception EOFException if this stream reaches the end
+ * @throws EOFException if this stream reaches the end
* before reading all the bytes.
- * @exception IOException if an I/O error occurs.
- * @exception UTFDataFormatException if the bytes do not represent a
+ * @throws IOException if an I/O error occurs.
+ * @throws UTFDataFormatException if the bytes do not represent a
* valid modified UTF-8 encoding of a string.
*/
String readUTF() throws IOException;
--- a/src/java.base/share/classes/java/io/DataInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/DataInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -89,10 +89,10 @@
* @return the total number of bytes read into the buffer, or
* <code>-1</code> if there is no more data because the end
* of the stream has been reached.
- * @exception IOException if the first byte cannot be read for any reason
- * other than end of file, the stream has been closed and the underlying
- * input stream does not support reading after close, or another I/O
- * error occurs.
+ * @throws IOException if the first byte cannot be read for any reason
+ * other than end of file, the stream has been closed and the underlying
+ * input stream does not support reading after close, or another I/O
+ * error occurs.
* @see java.io.FilterInputStream#in
* @see java.io.InputStream#read(byte[], int, int)
*/
@@ -129,19 +129,19 @@
* <code>b[b.length-1]</code> are unaffected.
*
* @param b the buffer into which the data is read.
- * @param off the start offset in the destination array <code>b</code>
+ * @param off the start offset in the destination array <code>b</code>
* @param len the maximum number of bytes read.
* @return the total number of bytes read into the buffer, or
* <code>-1</code> if there is no more data because the end
* of the stream has been reached.
- * @exception NullPointerException If <code>b</code> is <code>null</code>.
- * @exception IndexOutOfBoundsException If <code>off</code> is negative,
- * <code>len</code> is negative, or <code>len</code> is greater than
- * <code>b.length - off</code>
- * @exception IOException if the first byte cannot be read for any reason
- * other than end of file, the stream has been closed and the underlying
- * input stream does not support reading after close, or another I/O
- * error occurs.
+ * @throws NullPointerException If <code>b</code> is <code>null</code>.
+ * @throws IndexOutOfBoundsException If <code>off</code> is negative,
+ * <code>len</code> is negative, or <code>len</code> is greater than
+ * <code>b.length - off</code>
+ * @throws IOException if the first byte cannot be read for any reason
+ * other than end of file, the stream has been closed and the underlying
+ * input stream does not support reading after close, or another I/O
+ * error occurs.
* @see java.io.FilterInputStream#in
* @see java.io.InputStream#read(byte[], int, int)
*/
@@ -181,13 +181,13 @@
* @param b the buffer into which the data is read.
* @param off the start offset in the data array {@code b}.
* @param len the number of bytes to read.
- * @exception NullPointerException if {@code b} is {@code null}.
- * @exception IndexOutOfBoundsException if {@code off} is negative,
+ * @throws NullPointerException if {@code b} is {@code null}.
+ * @throws IndexOutOfBoundsException if {@code off} is negative,
* {@code len} is negative, or {@code len} is greater than
* {@code b.length - off}.
- * @exception EOFException if this input stream reaches the end before
+ * @throws EOFException if this input stream reaches the end before
* reading all the bytes.
- * @exception IOException the stream has been closed and the contained
+ * @throws IOException the stream has been closed and the contained
* input stream does not support reading after close, or
* another I/O error occurs.
* @see java.io.FilterInputStream#in
@@ -213,7 +213,7 @@
*
* @param n the number of bytes to be skipped.
* @return the actual number of bytes skipped.
- * @exception IOException if the contained input stream does not support
+ * @throws IOException if the contained input stream does not support
* seek, or the stream has been closed and
* the contained input stream does not support
* reading after close, or another I/O error occurs.
@@ -237,8 +237,8 @@
* input stream.
*
* @return the <code>boolean</code> value read.
- * @exception EOFException if this input stream has reached the end.
- * @exception IOException the stream has been closed and the contained
+ * @throws EOFException if this input stream has reached the end.
+ * @throws IOException the stream has been closed and the contained
* input stream does not support reading after close, or
* another I/O error occurs.
* @see java.io.FilterInputStream#in
@@ -260,8 +260,8 @@
*
* @return the next byte of this input stream as a signed 8-bit
* <code>byte</code>.
- * @exception EOFException if this input stream has reached the end.
- * @exception IOException the stream has been closed and the contained
+ * @throws EOFException if this input stream has reached the end.
+ * @throws IOException the stream has been closed and the contained
* input stream does not support reading after close, or
* another I/O error occurs.
* @see java.io.FilterInputStream#in
@@ -283,8 +283,8 @@
*
* @return the next byte of this input stream, interpreted as an
* unsigned 8-bit number.
- * @exception EOFException if this input stream has reached the end.
- * @exception IOException the stream has been closed and the contained
+ * @throws EOFException if this input stream has reached the end.
+ * @throws IOException the stream has been closed and the contained
* input stream does not support reading after close, or
* another I/O error occurs.
* @see java.io.FilterInputStream#in
@@ -306,9 +306,9 @@
*
* @return the next two bytes of this input stream, interpreted as a
* signed 16-bit number.
- * @exception EOFException if this input stream reaches the end before
+ * @throws EOFException if this input stream reaches the end before
* reading two bytes.
- * @exception IOException the stream has been closed and the contained
+ * @throws IOException the stream has been closed and the contained
* input stream does not support reading after close, or
* another I/O error occurs.
* @see java.io.FilterInputStream#in
@@ -331,9 +331,9 @@
*
* @return the next two bytes of this input stream, interpreted as an
* unsigned 16-bit integer.
- * @exception EOFException if this input stream reaches the end before
+ * @throws EOFException if this input stream reaches the end before
* reading two bytes.
- * @exception IOException the stream has been closed and the contained
+ * @throws IOException the stream has been closed and the contained
* input stream does not support reading after close, or
* another I/O error occurs.
* @see java.io.FilterInputStream#in
@@ -356,9 +356,9 @@
*
* @return the next two bytes of this input stream, interpreted as a
* <code>char</code>.
- * @exception EOFException if this input stream reaches the end before
+ * @throws EOFException if this input stream reaches the end before
* reading two bytes.
- * @exception IOException the stream has been closed and the contained
+ * @throws IOException the stream has been closed and the contained
* input stream does not support reading after close, or
* another I/O error occurs.
* @see java.io.FilterInputStream#in
@@ -381,9 +381,9 @@
*
* @return the next four bytes of this input stream, interpreted as an
* <code>int</code>.
- * @exception EOFException if this input stream reaches the end before
+ * @throws EOFException if this input stream reaches the end before
* reading four bytes.
- * @exception IOException the stream has been closed and the contained
+ * @throws IOException the stream has been closed and the contained
* input stream does not support reading after close, or
* another I/O error occurs.
* @see java.io.FilterInputStream#in
@@ -410,9 +410,9 @@
*
* @return the next eight bytes of this input stream, interpreted as a
* <code>long</code>.
- * @exception EOFException if this input stream reaches the end before
+ * @throws EOFException if this input stream reaches the end before
* reading eight bytes.
- * @exception IOException the stream has been closed and the contained
+ * @throws IOException the stream has been closed and the contained
* input stream does not support reading after close, or
* another I/O error occurs.
* @see java.io.FilterInputStream#in
@@ -439,9 +439,9 @@
*
* @return the next four bytes of this input stream, interpreted as a
* <code>float</code>.
- * @exception EOFException if this input stream reaches the end before
+ * @throws EOFException if this input stream reaches the end before
* reading four bytes.
- * @exception IOException the stream has been closed and the contained
+ * @throws IOException the stream has been closed and the contained
* input stream does not support reading after close, or
* another I/O error occurs.
* @see java.io.DataInputStream#readInt()
@@ -461,9 +461,9 @@
*
* @return the next eight bytes of this input stream, interpreted as a
* <code>double</code>.
- * @exception EOFException if this input stream reaches the end before
+ * @throws EOFException if this input stream reaches the end before
* reading eight bytes.
- * @exception IOException the stream has been closed and the contained
+ * @throws IOException the stream has been closed and the contained
* input stream does not support reading after close, or
* another I/O error occurs.
* @see java.io.DataInputStream#readLong()
@@ -498,7 +498,7 @@
* </pre></blockquote>
*
* @return the next line of text from this input stream.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.BufferedReader#readLine()
* @see java.io.FilterInputStream#in
*/
@@ -556,12 +556,12 @@
* input stream.
*
* @return a Unicode string.
- * @exception EOFException if this input stream reaches the end before
+ * @throws EOFException if this input stream reaches the end before
* reading all the bytes.
- * @exception IOException the stream has been closed and the contained
+ * @throws IOException the stream has been closed and the contained
* input stream does not support reading after close, or
* another I/O error occurs.
- * @exception UTFDataFormatException if the bytes do not represent a valid
+ * @throws UTFDataFormatException if the bytes do not represent a valid
* modified UTF-8 encoding of a string.
* @see java.io.DataInputStream#readUTF(java.io.DataInput)
*/
@@ -581,12 +581,12 @@
*
* @param in a data input stream.
* @return a Unicode string.
- * @exception EOFException if the input stream reaches the end
+ * @throws EOFException if the input stream reaches the end
* before all the bytes.
- * @exception IOException the stream has been closed and the contained
+ * @throws IOException the stream has been closed and the contained
* input stream does not support reading after close, or
* another I/O error occurs.
- * @exception UTFDataFormatException if the bytes do not represent a
+ * @throws UTFDataFormatException if the bytes do not represent a
* valid modified UTF-8 encoding of a Unicode string.
* @see java.io.DataInputStream#readUnsignedShort()
*/
--- a/src/java.base/share/classes/java/io/DataOutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/DataOutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -81,7 +81,7 @@
* Implements the <code>write</code> method of <code>OutputStream</code>.
*
* @param b the <code>byte</code> to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
*/
public synchronized void write(int b) throws IOException {
@@ -98,7 +98,7 @@
* @param b the data.
* @param off the start offset in the data.
* @param len the number of bytes to write.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
*/
public synchronized void write(byte b[], int off, int len)
@@ -115,7 +115,7 @@
* The <code>flush</code> method of <code>DataOutputStream</code>
* calls the <code>flush</code> method of its underlying output stream.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
* @see java.io.OutputStream#flush()
*/
@@ -132,7 +132,7 @@
* <code>1</code>.
*
* @param v a <code>boolean</code> value to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
*/
public final void writeBoolean(boolean v) throws IOException {
@@ -146,7 +146,7 @@
* <code>written</code> is incremented by <code>1</code>.
*
* @param v a <code>byte</code> value to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
*/
public final void writeByte(int v) throws IOException {
@@ -160,7 +160,7 @@
* <code>written</code> is incremented by <code>2</code>.
*
* @param v a <code>short</code> to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
*/
public final void writeShort(int v) throws IOException {
@@ -175,7 +175,7 @@
* counter <code>written</code> is incremented by <code>2</code>.
*
* @param v a <code>char</code> value to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
*/
public final void writeChar(int v) throws IOException {
@@ -190,7 +190,7 @@
* <code>written</code> is incremented by <code>4</code>.
*
* @param v an <code>int</code> to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
*/
public final void writeInt(int v) throws IOException {
@@ -209,7 +209,7 @@
* <code>written</code> is incremented by <code>8</code>.
*
* @param v a <code>long</code> to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
*/
public final void writeLong(long v) throws IOException {
@@ -234,7 +234,7 @@
* incremented by <code>4</code>.
*
* @param v a <code>float</code> value to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
* @see java.lang.Float#floatToIntBits(float)
*/
@@ -251,7 +251,7 @@
* incremented by <code>8</code>.
*
* @param v a <code>double</code> value to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
* @see java.lang.Double#doubleToLongBits(double)
*/
@@ -267,7 +267,7 @@
* length of <code>s</code>.
*
* @param s a string of bytes to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
*/
public final void writeBytes(String s) throws IOException {
@@ -286,7 +286,7 @@
* the length of <code>s</code>.
*
* @param s a <code>String</code> value to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.DataOutputStream#writeChar(int)
* @see java.io.FilterOutputStream#out
*/
--- a/src/java.base/share/classes/java/io/Externalizable.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/Externalizable.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -76,8 +76,8 @@
* relate the element to a public/protected field and/or
* method of this Externalizable class.
*
- * @param out the stream to write the object to
- * @exception IOException Includes any I/O exceptions that may occur
+ * @param out the stream to write the object to
+ * @throws IOException Includes any I/O exceptions that may occur
*/
void writeExternal(ObjectOutput out) throws IOException;
@@ -88,10 +88,10 @@
* readExternal method must read the values in the same sequence
* and with the same types as were written by writeExternal.
*
- * @param in the stream to read data from in order to restore the object
- * @exception IOException if I/O errors occur
- * @exception ClassNotFoundException If the class for an object being
- * restored cannot be found.
+ * @param in the stream to read data from in order to restore the object
+ * @throws IOException if I/O errors occur
+ * @throws ClassNotFoundException If the class for an object being
+ * restored cannot be found.
*/
void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;
}
--- a/src/java.base/share/classes/java/io/FileDescriptor.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/FileDescriptor.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -199,7 +199,7 @@
* be flushed into the FileDescriptor (for example, by invoking
* OutputStream.flush) before that data will be affected by sync.
*
- * @exception SyncFailedException
+ * @throws SyncFailedException
* Thrown when the buffers cannot be flushed,
* or because the system cannot guarantee that all the
* buffers have been synchronized with physical media.
--- a/src/java.base/share/classes/java/io/FileInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/FileInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -97,13 +97,13 @@
* <code>FileNotFoundException</code> is thrown.
*
* @param name the system-dependent file name.
- * @exception FileNotFoundException if the file does not exist,
- * is a directory rather than a regular file,
- * or for some other reason cannot be opened for
- * reading.
- * @exception SecurityException if a security manager exists and its
- * <code>checkRead</code> method denies read access
- * to the file.
+ * @throws FileNotFoundException if the file does not exist,
+ * is a directory rather than a regular file,
+ * or for some other reason cannot be opened for
+ * reading.
+ * @throws SecurityException if a security manager exists and its
+ * <code>checkRead</code> method denies read access
+ * to the file.
* @see java.lang.SecurityManager#checkRead(java.lang.String)
*/
public FileInputStream(String name) throws FileNotFoundException {
@@ -128,12 +128,12 @@
* <code>FileNotFoundException</code> is thrown.
*
* @param file the file to be opened for reading.
- * @exception FileNotFoundException if the file does not exist,
- * is a directory rather than a regular file,
- * or for some other reason cannot be opened for
- * reading.
- * @exception SecurityException if a security manager exists and its
- * <code>checkRead</code> method denies read access to the file.
+ * @throws FileNotFoundException if the file does not exist,
+ * is a directory rather than a regular file,
+ * or for some other reason cannot be opened for
+ * reading.
+ * @throws SecurityException if a security manager exists and its
+ * <code>checkRead</code> method denies read access to the file.
* @see java.io.File#getPath()
* @see java.lang.SecurityManager#checkRead(java.lang.String)
*/
@@ -176,8 +176,8 @@
*
* @param fdObj the file descriptor to be opened for reading.
* @throws SecurityException if a security manager exists and its
- * <code>checkRead</code> method denies read access to the
- * file descriptor.
+ * <code>checkRead</code> method denies read access to the
+ * file descriptor.
* @see SecurityManager#checkRead(java.io.FileDescriptor)
*/
public FileInputStream(FileDescriptor fdObj) {
@@ -219,7 +219,7 @@
*
* @return the next byte of data, or <code>-1</code> if the end of the
* file is reached.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public int read() throws IOException {
return read0();
@@ -229,10 +229,10 @@
/**
* Reads a subarray as a sequence of bytes.
- * @param b the data to be written
- * @param off the start offset in the data
- * @param len the number of bytes that are written
- * @exception IOException If an I/O error has occurred.
+ * @param b the data to be written
+ * @param off the start offset in the data
+ * @param len the number of bytes that are written
+ * @throws IOException If an I/O error has occurred.
*/
private native int readBytes(byte b[], int off, int len) throws IOException;
@@ -245,7 +245,7 @@
* @return the total number of bytes read into the buffer, or
* <code>-1</code> if there is no more data because the end of
* the file has been reached.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public int read(byte b[]) throws IOException {
return readBytes(b, 0, b.length);
@@ -263,11 +263,11 @@
* @return the total number of bytes read into the buffer, or
* <code>-1</code> if there is no more data because the end of
* the file has been reached.
- * @exception NullPointerException If <code>b</code> is <code>null</code>.
- * @exception IndexOutOfBoundsException If <code>off</code> is negative,
- * <code>len</code> is negative, or <code>len</code> is greater than
- * <code>b.length - off</code>
- * @exception IOException if an I/O error occurs.
+ * @throws NullPointerException If <code>b</code> is <code>null</code>.
+ * @throws IndexOutOfBoundsException If <code>off</code> is negative,
+ * <code>len</code> is negative, or <code>len</code> is greater than
+ * <code>b.length - off</code>
+ * @throws IOException if an I/O error occurs.
*/
public int read(byte b[], int off, int len) throws IOException {
return readBytes(b, off, len);
@@ -294,7 +294,7 @@
*
* @param n the number of bytes to be skipped.
* @return the actual number of bytes skipped.
- * @exception IOException if n is negative, if the stream does not
+ * @throws IOException if n is negative, if the stream does not
* support seek, or if an I/O error occurs.
*/
public long skip(long n) throws IOException {
@@ -317,7 +317,7 @@
*
* @return an estimate of the number of remaining bytes that can be read
* (or skipped over) from this input stream without blocking.
- * @exception IOException if this file input stream has been closed by calling
+ * @throws IOException if this file input stream has been closed by calling
* {@code close} or an I/O error occurs.
*/
public int available() throws IOException {
@@ -341,7 +341,7 @@
* If cleanup of native resources is needed, other mechanisms such as
* {@linkplain java.lang.ref.Cleaner} should be used.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*
* @revised 1.4
* @spec JSR-51
@@ -378,7 +378,7 @@
* used by this <code>FileInputStream</code>.
*
* @return the file descriptor object associated with this stream.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FileDescriptor
*/
public final FileDescriptor getFD() throws IOException {
--- a/src/java.base/share/classes/java/io/FileOutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/FileOutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -112,10 +112,10 @@
* new FileOutputStream(name, false)}.
*
* @param name the system-dependent filename
- * @exception FileNotFoundException if the file exists but is a directory
+ * @throws FileNotFoundException if the file exists but is a directory
* rather than a regular file, does not exist but cannot
* be created, or cannot be opened for any other reason
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* <code>checkWrite</code> method denies write access
* to the file.
* @see java.lang.SecurityManager#checkWrite(java.lang.String)
@@ -141,10 +141,10 @@
* @param name the system-dependent file name
* @param append if <code>true</code>, then bytes will be written
* to the end of the file rather than the beginning
- * @exception FileNotFoundException if the file exists but is a directory
+ * @throws FileNotFoundException if the file exists but is a directory
* rather than a regular file, does not exist but cannot
* be created, or cannot be opened for any other reason.
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* <code>checkWrite</code> method denies write access
* to the file.
* @see java.lang.SecurityManager#checkWrite(java.lang.String)
@@ -171,10 +171,10 @@
* reason then a <code>FileNotFoundException</code> is thrown.
*
* @param file the file to be opened for writing.
- * @exception FileNotFoundException if the file exists but is a directory
+ * @throws FileNotFoundException if the file exists but is a directory
* rather than a regular file, does not exist but cannot
* be created, or cannot be opened for any other reason
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* <code>checkWrite</code> method denies write access
* to the file.
* @see java.io.File#getPath()
@@ -203,10 +203,10 @@
* @param file the file to be opened for writing.
* @param append if <code>true</code>, then bytes will be written
* to the end of the file rather than the beginning
- * @exception FileNotFoundException if the file exists but is a directory
+ * @throws FileNotFoundException if the file exists but is a directory
* rather than a regular file, does not exist but cannot
* be created, or cannot be opened for any other reason
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* <code>checkWrite</code> method denies write access
* to the file.
* @see java.io.File#getPath()
@@ -254,7 +254,7 @@
* I/O on the stream, an <code>IOException</code> is thrown.
*
* @param fdObj the file descriptor to be opened for writing
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* <code>checkWrite</code> method denies
* write access to the file descriptor
* @see java.lang.SecurityManager#checkWrite(java.io.FileDescriptor)
@@ -306,7 +306,7 @@
* the <code>write</code> method of <code>OutputStream</code>.
*
* @param b the byte to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void write(int b) throws IOException {
write(b, fdAccess.getAppend(fd));
@@ -319,7 +319,7 @@
* @param len the number of bytes that are written
* @param append {@code true} to first advance the position to the
* end of file
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
private native void writeBytes(byte b[], int off, int len, boolean append)
throws IOException;
@@ -329,7 +329,7 @@
* to this file output stream.
*
* @param b the data.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void write(byte b[]) throws IOException {
writeBytes(b, 0, b.length, fdAccess.getAppend(fd));
@@ -342,7 +342,7 @@
* @param b the data.
* @param off the start offset in the data.
* @param len the number of bytes to write.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void write(byte b[], int off, int len) throws IOException {
writeBytes(b, off, len, fdAccess.getAppend(fd));
@@ -364,7 +364,7 @@
* If cleanup of native resources is needed, other mechanisms such as
* {@linkplain java.lang.ref.Cleaner} should be used.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*
* @revised 1.4
* @spec JSR-51
@@ -401,7 +401,7 @@
* the connection to the file in the file system being used
* by this <code>FileOutputStream</code> object.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FileDescriptor
*/
public final FileDescriptor getFD() throws IOException {
--- a/src/java.base/share/classes/java/io/FilePermission.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/FilePermission.java Sat Sep 21 12:10:52 2019 +0200
@@ -1127,10 +1127,10 @@
*
* @param permission the Permission object to add.
*
- * @exception IllegalArgumentException - if the permission is not a
+ * @throws IllegalArgumentException - if the permission is not a
* FilePermission
*
- * @exception SecurityException - if this FilePermissionCollection object
+ * @throws SecurityException - if this FilePermissionCollection object
* has been marked readonly
*/
@Override
--- a/src/java.base/share/classes/java/io/FileReader.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/FileReader.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -50,11 +50,11 @@
* using the platform's
* {@linkplain java.nio.charset.Charset#defaultCharset() default charset}.
*
- * @param fileName the name of the file to read
- * @exception FileNotFoundException if the named file does not exist,
- * is a directory rather than a regular file,
- * or for some other reason cannot be opened for
- * reading.
+ * @param fileName the name of the file to read
+ * @throws FileNotFoundException if the named file does not exist,
+ * is a directory rather than a regular file,
+ * or for some other reason cannot be opened for
+ * reading.
*/
public FileReader(String fileName) throws FileNotFoundException {
super(new FileInputStream(fileName));
@@ -65,11 +65,11 @@
* using the platform's
* {@linkplain java.nio.charset.Charset#defaultCharset() default charset}.
*
- * @param file the {@code File} to read
- * @exception FileNotFoundException if the file does not exist,
- * is a directory rather than a regular file,
- * or for some other reason cannot be opened for
- * reading.
+ * @param file the {@code File} to read
+ * @throws FileNotFoundException if the file does not exist,
+ * is a directory rather than a regular file,
+ * or for some other reason cannot be opened for
+ * reading.
*/
public FileReader(File file) throws FileNotFoundException {
super(new FileInputStream(file));
@@ -90,12 +90,12 @@
* Creates a new {@code FileReader}, given the name of the file to read
* and the {@linkplain java.nio.charset.Charset charset}.
*
- * @param fileName the name of the file to read
- * @param charset the {@linkplain java.nio.charset.Charset charset}
- * @exception IOException if the named file does not exist,
- * is a directory rather than a regular file,
- * or for some other reason cannot be opened for
- * reading.
+ * @param fileName the name of the file to read
+ * @param charset the {@linkplain java.nio.charset.Charset charset}
+ * @throws IOException if the named file does not exist,
+ * is a directory rather than a regular file,
+ * or for some other reason cannot be opened for
+ * reading.
*
* @since 11
*/
@@ -107,12 +107,12 @@
* Creates a new {@code FileReader}, given the {@code File} to read and
* the {@linkplain java.nio.charset.Charset charset}.
*
- * @param file the {@code File} to read
- * @param charset the {@linkplain java.nio.charset.Charset charset}
- * @exception IOException if the file does not exist,
- * is a directory rather than a regular file,
- * or for some other reason cannot be opened for
- * reading.
+ * @param file the {@code File} to read
+ * @param charset the {@linkplain java.nio.charset.Charset charset}
+ * @throws IOException if the file does not exist,
+ * is a directory rather than a regular file,
+ * or for some other reason cannot be opened for
+ * reading.
*
* @since 11
*/
--- a/src/java.base/share/classes/java/io/FilterInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/FilterInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -76,7 +76,7 @@
*
* @return the next byte of data, or <code>-1</code> if the end of the
* stream is reached.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterInputStream#in
*/
public int read() throws IOException {
@@ -100,7 +100,7 @@
* @return the total number of bytes read into the buffer, or
* <code>-1</code> if there is no more data because the end of
* the stream has been reached.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterInputStream#read(byte[], int, int)
*/
public int read(byte b[]) throws IOException {
@@ -122,11 +122,11 @@
* @return the total number of bytes read into the buffer, or
* <code>-1</code> if there is no more data because the end of
* the stream has been reached.
- * @exception NullPointerException If <code>b</code> is <code>null</code>.
- * @exception IndexOutOfBoundsException If <code>off</code> is negative,
- * <code>len</code> is negative, or <code>len</code> is greater than
- * <code>b.length - off</code>
- * @exception IOException if an I/O error occurs.
+ * @throws NullPointerException If <code>b</code> is <code>null</code>.
+ * @throws IndexOutOfBoundsException If <code>off</code> is negative,
+ * <code>len</code> is negative, or <code>len</code> is greater than
+ * <code>b.length - off</code>
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterInputStream#in
*/
public int read(byte b[], int off, int len) throws IOException {
@@ -161,7 +161,7 @@
*
* @return an estimate of the number of bytes that can be read (or skipped
* over) from this input stream without blocking.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public int available() throws IOException {
return in.available();
@@ -173,7 +173,7 @@
* This
* method simply performs <code>in.close()</code>.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterInputStream#in
*/
public void close() throws IOException {
@@ -216,7 +216,7 @@
* If this happens within readlimit bytes, it allows the outer
* code to reset the stream and try another parser.
*
- * @exception IOException if the stream has not been marked or if the
+ * @throws IOException if the stream has not been marked or if the
* mark has been invalidated.
* @see java.io.FilterInputStream#in
* @see java.io.FilterInputStream#mark(int)
--- a/src/java.base/share/classes/java/io/FilterOutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/FilterOutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -80,7 +80,7 @@
* Implements the abstract {@code write} method of {@code OutputStream}.
*
* @param b the <code>byte</code>.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
@Override
public void write(int b) throws IOException {
@@ -100,7 +100,7 @@
* the single argument <code>b</code>.
*
* @param b the data to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#write(byte[], int, int)
*/
@Override
@@ -125,7 +125,7 @@
* @param b the data.
* @param off the start offset in the data.
* @param len the number of bytes to write.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#write(int)
*/
@Override
@@ -145,7 +145,7 @@
* The <code>flush</code> method of <code>FilterOutputStream</code>
* calls the <code>flush</code> method of its underlying output stream.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out
*/
@Override
@@ -161,7 +161,7 @@
* FilterOutputStream} calls its {@code flush} method, and then
* calls the {@code close} method of its underlying output stream.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#flush()
* @see java.io.FilterOutputStream#out
*/
--- a/src/java.base/share/classes/java/io/FilterReader.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/FilterReader.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -59,7 +59,7 @@
/**
* Reads a single character.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public int read() throws IOException {
return in.read();
@@ -68,8 +68,8 @@
/**
* Reads characters into a portion of an array.
*
- * @exception IOException If an I/O error occurs
- * @exception IndexOutOfBoundsException {@inheritDoc}
+ * @throws IOException If an I/O error occurs
+ * @throws IndexOutOfBoundsException {@inheritDoc}
*/
public int read(char cbuf[], int off, int len) throws IOException {
return in.read(cbuf, off, len);
@@ -78,7 +78,7 @@
/**
* Skips characters.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public long skip(long n) throws IOException {
return in.skip(n);
@@ -87,7 +87,7 @@
/**
* Tells whether this stream is ready to be read.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public boolean ready() throws IOException {
return in.ready();
@@ -103,7 +103,7 @@
/**
* Marks the present position in the stream.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public void mark(int readAheadLimit) throws IOException {
in.mark(readAheadLimit);
@@ -112,7 +112,7 @@
/**
* Resets the stream.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public void reset() throws IOException {
in.reset();
--- a/src/java.base/share/classes/java/io/FilterWriter.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/FilterWriter.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -59,7 +59,7 @@
/**
* Writes a single character.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public void write(int c) throws IOException {
out.write(c);
@@ -104,7 +104,7 @@
/**
* Flushes the stream.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public void flush() throws IOException {
out.flush();
--- a/src/java.base/share/classes/java/io/InputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/InputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -177,7 +177,7 @@
*
* @return the next byte of data, or <code>-1</code> if the end of the
* stream is reached.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public abstract int read() throws IOException;
@@ -208,10 +208,10 @@
* @return the total number of bytes read into the buffer, or
* <code>-1</code> if there is no more data because the end of
* the stream has been reached.
- * @exception IOException If the first byte cannot be read for any reason
- * other than the end of the file, if the input stream has been closed, or
- * if some other I/O error occurs.
- * @exception NullPointerException if <code>b</code> is <code>null</code>.
+ * @throws IOException If the first byte cannot be read for any reason
+ * other than the end of the file, if the input stream has been
+ * closed, or if some other I/O error occurs.
+ * @throws NullPointerException if <code>b</code> is <code>null</code>.
* @see java.io.InputStream#read(byte[], int, int)
*/
public int read(byte b[]) throws IOException {
@@ -266,13 +266,13 @@
* @return the total number of bytes read into the buffer, or
* <code>-1</code> if there is no more data because the end of
* the stream has been reached.
- * @exception IOException If the first byte cannot be read for any reason
- * other than end of file, or if the input stream has been closed, or if
- * some other I/O error occurs.
- * @exception NullPointerException If <code>b</code> is <code>null</code>.
- * @exception IndexOutOfBoundsException If <code>off</code> is negative,
- * <code>len</code> is negative, or <code>len</code> is greater than
- * <code>b.length - off</code>
+ * @throws IOException If the first byte cannot be read for any reason
+ * other than end of file, or if the input stream has been closed,
+ * or if some other I/O error occurs.
+ * @throws NullPointerException If <code>b</code> is <code>null</code>.
+ * @throws IndexOutOfBoundsException If <code>off</code> is negative,
+ * <code>len</code> is negative, or <code>len</code> is greater than
+ * <code>b.length - off</code>
* @see java.io.InputStream#read()
*/
public int read(byte b[], int off, int len) throws IOException {
@@ -634,7 +634,7 @@
* @return an estimate of the number of bytes that can be read (or
* skipped over) from this input stream without blocking or
* {@code 0} when it reaches the end of the input stream.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public int available() throws IOException {
return 0;
@@ -647,7 +647,7 @@
* <p> The <code>close</code> method of <code>InputStream</code> does
* nothing.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void close() throws IOException {}
@@ -718,8 +718,8 @@
* <p>The method <code>reset</code> for class <code>InputStream</code>
* does nothing except throw an <code>IOException</code>.
*
- * @exception IOException if this stream has not been marked or if the
- * mark has been invalidated.
+ * @throws IOException if this stream has not been marked or if the
+ * mark has been invalidated.
* @see java.io.InputStream#mark(int)
* @see java.io.IOException
*/
--- a/src/java.base/share/classes/java/io/InputStreamReader.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/InputStreamReader.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -88,7 +88,7 @@
* The name of a supported
* {@link java.nio.charset.Charset charset}
*
- * @exception UnsupportedEncodingException
+ * @throws UnsupportedEncodingException
* If the named charset is not supported
*/
public InputStreamReader(InputStream in, String charsetName)
@@ -162,7 +162,7 @@
* @return The character read, or -1 if the end of the stream has been
* reached
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public int read() throws IOException {
return sd.read();
@@ -178,8 +178,8 @@
* @return The number of characters read, or -1 if the end of the
* stream has been reached
*
- * @exception IOException If an I/O error occurs
- * @exception IndexOutOfBoundsException {@inheritDoc}
+ * @throws IOException If an I/O error occurs
+ * @throws IndexOutOfBoundsException {@inheritDoc}
*/
public int read(char cbuf[], int offset, int length) throws IOException {
return sd.read(cbuf, offset, length);
@@ -190,7 +190,7 @@
* ready if its input buffer is not empty, or if bytes are available to be
* read from the underlying byte stream.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public boolean ready() throws IOException {
return sd.ready();
--- a/src/java.base/share/classes/java/io/LineNumberInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/LineNumberInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -83,7 +83,7 @@
*
* @return the next byte of data, or {@code -1} if the end of this
* stream is reached.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterInputStream#in
* @see java.io.LineNumberInputStream#getLineNumber()
*/
@@ -124,7 +124,7 @@
* @return the total number of bytes read into the buffer, or
* {@code -1} if there is no more data because the end of
* this stream has been reached.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.LineNumberInputStream#read()
*/
public int read(byte b[], int off, int len) throws IOException {
@@ -173,7 +173,7 @@
*
* @param n the number of bytes to be skipped.
* @return the actual number of bytes skipped.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterInputStream#in
*/
public long skip(long n) throws IOException {
@@ -234,7 +234,7 @@
*
* @return the number of bytes that can be read from this input stream
* without blocking.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterInputStream#in
*/
public int available() throws IOException {
@@ -281,7 +281,7 @@
* which, if it happens within readlimit bytes, allows the outer
* code to reset the stream and try another parser.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FilterInputStream#in
* @see java.io.LineNumberInputStream#mark(int)
*/
--- a/src/java.base/share/classes/java/io/ObjectInput.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/ObjectInput.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -41,11 +41,11 @@
* Read and return an object. The class that implements this interface
* defines where the object is "read" from.
*
- * @return the object read from the stream
- * @exception java.lang.ClassNotFoundException If the class of a serialized
- * object cannot be found.
- * @exception IOException If any of the usual Input/Output
- * related exceptions occur.
+ * @return the object read from the stream
+ * @throws java.lang.ClassNotFoundException If the class of a serialized
+ * object cannot be found.
+ * @throws IOException If any of the usual Input/Output
+ * related exceptions occur.
*/
public Object readObject()
throws ClassNotFoundException, IOException;
@@ -55,45 +55,45 @@
* available.
* @return the byte read, or -1 if the end of the
* stream is reached.
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
public int read() throws IOException;
/**
* Reads into an array of bytes. This method will
* block until some input is available.
- * @param b the buffer into which the data is read
+ * @param b the buffer into which the data is read
* @return the actual number of bytes read, -1 is
* returned when the end of the stream is reached.
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
public int read(byte b[]) throws IOException;
/**
* Reads into an array of bytes. This method will
* block until some input is available.
- * @param b the buffer into which the data is read
- * @param off the start offset of the data
- * @param len the maximum number of bytes read
+ * @param b the buffer into which the data is read
+ * @param off the start offset of the data
+ * @param len the maximum number of bytes read
* @return the actual number of bytes read, -1 is
* returned when the end of the stream is reached.
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
public int read(byte b[], int off, int len) throws IOException;
/**
* Skips n bytes of input.
- * @param n the number of bytes to be skipped
+ * @param n the number of bytes to be skipped
* @return the actual number of bytes skipped.
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
public long skip(long n) throws IOException;
/**
* Returns the number of bytes that can be read
* without blocking.
- * @return the number of available bytes.
- * @exception IOException If an I/O error has occurred.
+ * @return the number of available bytes.
+ * @throws IOException If an I/O error has occurred.
*/
public int available() throws IOException;
@@ -101,7 +101,7 @@
* Closes the input stream. Must be called
* to release any resources associated with
* the stream.
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
public void close() throws IOException;
}
--- a/src/java.base/share/classes/java/io/ObjectInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/ObjectInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -2414,22 +2414,6 @@
}
/**
- * Converts specified span of bytes into float values.
- */
- // REMIND: remove once hotspot inlines Float.intBitsToFloat
- private static native void bytesToFloats(byte[] src, int srcpos,
- float[] dst, int dstpos,
- int nfloats);
-
- /**
- * Converts specified span of bytes into double values.
- */
- // REMIND: remove once hotspot inlines Double.longBitsToDouble
- private static native void bytesToDoubles(byte[] src, int srcpos,
- double[] dst, int dstpos,
- int ndoubles);
-
- /**
* Returns the first non-null and non-platform class loader (not counting
* class loaders of generated reflection implementation classes) up the
* execution stack, or the platform class loader if only code from the
@@ -3433,22 +3417,24 @@
}
void readFloats(float[] v, int off, int len) throws IOException {
- int span, endoff = off + len;
+ int stop, endoff = off + len;
while (off < endoff) {
if (!blkmode) {
- span = Math.min(endoff - off, MAX_BLOCK_SIZE >> 2);
+ int span = Math.min(endoff - off, MAX_BLOCK_SIZE >> 2);
in.readFully(buf, 0, span << 2);
+ stop = off + span;
pos = 0;
} else if (end - pos < 4) {
v[off++] = din.readFloat();
continue;
} else {
- span = Math.min(endoff - off, ((end - pos) >> 2));
+ stop = Math.min(endoff, ((end - pos) >> 2));
}
- bytesToFloats(buf, pos, v, off, span);
- off += span;
- pos += span << 2;
+ while (off < stop) {
+ v[off++] = Bits.getFloat(buf, pos);
+ pos += 4;
+ }
}
}
@@ -3475,22 +3461,24 @@
}
void readDoubles(double[] v, int off, int len) throws IOException {
- int span, endoff = off + len;
+ int stop, endoff = off + len;
while (off < endoff) {
if (!blkmode) {
- span = Math.min(endoff - off, MAX_BLOCK_SIZE >> 3);
+ int span = Math.min(endoff - off, MAX_BLOCK_SIZE >> 3);
in.readFully(buf, 0, span << 3);
+ stop = off + span;
pos = 0;
} else if (end - pos < 8) {
v[off++] = din.readDouble();
continue;
} else {
- span = Math.min(endoff - off, ((end - pos) >> 3));
+ stop = Math.min(endoff - off, ((end - pos) >> 3));
}
- bytesToDoubles(buf, pos, v, off, span);
- off += span;
- pos += span << 3;
+ while (off < stop) {
+ v[off++] = Bits.getDouble(buf, pos);
+ pos += 8;
+ }
}
}
--- a/src/java.base/share/classes/java/io/ObjectInputValidation.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/ObjectInputValidation.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -39,7 +39,7 @@
/**
* Validates the object.
*
- * @exception InvalidObjectException If the object cannot validate itself.
+ * @throws InvalidObjectException If the object cannot validate itself.
*/
public void validateObject() throws InvalidObjectException;
}
--- a/src/java.base/share/classes/java/io/ObjectOutput.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/ObjectOutput.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -42,8 +42,8 @@
* class that implements this interface defines how the object is
* written.
*
- * @param obj the object to be written
- * @exception IOException Any of the usual Input/Output related exceptions.
+ * @param obj the object to be written
+ * @throws IOException Any of the usual Input/Output related exceptions.
*/
public void writeObject(Object obj)
throws IOException;
@@ -51,32 +51,32 @@
/**
* Writes a byte. This method will block until the byte is actually
* written.
- * @param b the byte
- * @exception IOException If an I/O error has occurred.
+ * @param b the byte
+ * @throws IOException If an I/O error has occurred.
*/
public void write(int b) throws IOException;
/**
* Writes an array of bytes. This method will block until the bytes
* are actually written.
- * @param b the data to be written
- * @exception IOException If an I/O error has occurred.
+ * @param b the data to be written
+ * @throws IOException If an I/O error has occurred.
*/
public void write(byte b[]) throws IOException;
/**
* Writes a sub array of bytes.
- * @param b the data to be written
- * @param off the start offset in the data
- * @param len the number of bytes that are written
- * @exception IOException If an I/O error has occurred.
+ * @param b the data to be written
+ * @param off the start offset in the data
+ * @param len the number of bytes that are written
+ * @throws IOException If an I/O error has occurred.
*/
public void write(byte b[], int off, int len) throws IOException;
/**
* Flushes the stream. This will write any buffered
* output bytes.
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
public void flush() throws IOException;
@@ -84,7 +84,7 @@
* Closes the stream. This method must be called
* to release any resources associated with the
* stream.
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
public void close() throws IOException;
}
--- a/src/java.base/share/classes/java/io/ObjectOutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/ObjectOutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1592,22 +1592,6 @@
}
/**
- * Converts specified span of float values into byte values.
- */
- // REMIND: remove once hotspot inlines Float.floatToIntBits
- private static native void floatsToBytes(float[] src, int srcpos,
- byte[] dst, int dstpos,
- int nfloats);
-
- /**
- * Converts specified span of double values into byte values.
- */
- // REMIND: remove once hotspot inlines Double.doubleToLongBits
- private static native void doublesToBytes(double[] src, int srcpos,
- byte[] dst, int dstpos,
- int ndoubles);
-
- /**
* Default PutField implementation.
*/
private class PutFieldImpl extends PutField {
@@ -2096,10 +2080,11 @@
while (off < endoff) {
if (pos <= limit) {
int avail = (MAX_BLOCK_SIZE - pos) >> 2;
- int chunklen = Math.min(endoff - off, avail);
- floatsToBytes(v, off, buf, pos, chunklen);
- off += chunklen;
- pos += chunklen << 2;
+ int stop = Math.min(endoff, off + avail);
+ while (off < stop) {
+ Bits.putFloat(buf, pos, v[off++]);
+ pos += 4;
+ }
} else {
dout.writeFloat(v[off++]);
}
@@ -2129,10 +2114,11 @@
while (off < endoff) {
if (pos <= limit) {
int avail = (MAX_BLOCK_SIZE - pos) >> 3;
- int chunklen = Math.min(endoff - off, avail);
- doublesToBytes(v, off, buf, pos, chunklen);
- off += chunklen;
- pos += chunklen << 3;
+ int stop = Math.min(endoff, off + avail);
+ while (off < stop) {
+ Bits.putDouble(buf, pos, v[off++]);
+ pos += 8;
+ }
} else {
dout.writeDouble(v[off++]);
}
--- a/src/java.base/share/classes/java/io/OutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/OutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -107,7 +107,7 @@
* implementation for this method.
*
* @param b the <code>byte</code>.
- * @exception IOException if an I/O error occurs. In particular,
+ * @throws IOException if an I/O error occurs. In particular,
* an <code>IOException</code> may be thrown if the
* output stream has been closed.
*/
@@ -120,7 +120,7 @@
* <code>write(b, 0, b.length)</code>.
*
* @param b the data.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.OutputStream#write(byte[], int, int)
*/
public void write(byte b[]) throws IOException {
@@ -151,7 +151,7 @@
* @param b the data.
* @param off the start offset in the data.
* @param len the number of bytes to write.
- * @exception IOException if an I/O error occurs. In particular,
+ * @throws IOException if an I/O error occurs. In particular,
* an <code>IOException</code> is thrown if the output
* stream is closed.
*/
@@ -179,7 +179,7 @@
* <p>
* The <code>flush</code> method of <code>OutputStream</code> does nothing.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void flush() throws IOException {
}
@@ -192,7 +192,7 @@
* <p>
* The <code>close</code> method of <code>OutputStream</code> does nothing.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void close() throws IOException {
}
--- a/src/java.base/share/classes/java/io/OutputStreamWriter.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/OutputStreamWriter.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -87,7 +87,7 @@
* The name of a supported
* {@link java.nio.charset.Charset charset}
*
- * @exception UnsupportedEncodingException
+ * @throws UnsupportedEncodingException
* If the named encoding is not supported
*/
public OutputStreamWriter(OutputStream out, String charsetName)
@@ -187,7 +187,7 @@
/**
* Writes a single character.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public void write(int c) throws IOException {
se.write(c);
@@ -248,7 +248,7 @@
/**
* Flushes the stream.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public void flush() throws IOException {
se.flush();
--- a/src/java.base/share/classes/java/io/PipedInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/PipedInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -100,7 +100,7 @@
* as input from this stream.
*
* @param src the stream to connect to.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public PipedInputStream(PipedOutputStream src) throws IOException {
this(src, DEFAULT_PIPE_SIZE);
@@ -116,8 +116,8 @@
*
* @param src the stream to connect to.
* @param pipeSize the size of the pipe's buffer.
- * @exception IOException if an I/O error occurs.
- * @exception IllegalArgumentException if {@code pipeSize <= 0}.
+ * @throws IOException if an I/O error occurs.
+ * @throws IllegalArgumentException if {@code pipeSize <= 0}.
* @since 1.6
*/
public PipedInputStream(PipedOutputStream src, int pipeSize)
@@ -147,7 +147,7 @@
* connected} to a <code>PipedOutputStream</code> before being used.
*
* @param pipeSize the size of the pipe's buffer.
- * @exception IllegalArgumentException if {@code pipeSize <= 0}.
+ * @throws IllegalArgumentException if {@code pipeSize <= 0}.
* @since 1.6
*/
public PipedInputStream(int pipeSize) {
@@ -182,7 +182,7 @@
* The two calls have the same effect.
*
* @param src The piped output stream to connect to.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void connect(PipedOutputStream src) throws IOException {
src.connect(this);
@@ -191,11 +191,11 @@
/**
* Receives a byte of data. This method will block if no input is
* available.
- * @param b the byte being received
- * @exception IOException If the pipe is <a href="#BROKEN"> <code>broken</code></a>,
+ * @param b the byte being received
+ * @throws IOException If the pipe is <a href="#BROKEN"> <code>broken</code></a>,
* {@link #connect(java.io.PipedOutputStream) unconnected},
* closed, or if an I/O error occurs.
- * @since 1.1
+ * @since 1.1
*/
protected synchronized void receive(int b) throws IOException {
checkStateForReceive();
@@ -215,10 +215,10 @@
/**
* Receives data into an array of bytes. This method will
* block until some input is available.
- * @param b the buffer into which the data is received
- * @param off the start offset of the data
- * @param len the maximum number of bytes received
- * @exception IOException If the pipe is <a href="#BROKEN"> broken</a>,
+ * @param b the buffer into which the data is received
+ * @param off the start offset of the data
+ * @param len the maximum number of bytes received
+ * @throws IOException If the pipe is <a href="#BROKEN"> broken</a>,
* {@link #connect(java.io.PipedOutputStream) unconnected},
* closed,or if an I/O error occurs.
*/
@@ -293,9 +293,9 @@
* This method blocks until input data is available, the end of the
* stream is detected, or an exception is thrown.
*
- * @return the next byte of data, or <code>-1</code> if the end of the
- * stream is reached.
- * @exception IOException if the pipe is
+ * @return the next byte of data, or <code>-1</code> if the end of the
+ * stream is reached.
+ * @throws IOException if the pipe is
* {@link #connect(java.io.PipedOutputStream) unconnected},
* <a href="#BROKEN"> <code>broken</code></a>, closed,
* or if an I/O error occurs.
@@ -356,11 +356,11 @@
* @return the total number of bytes read into the buffer, or
* <code>-1</code> if there is no more data because the end of
* the stream has been reached.
- * @exception NullPointerException If <code>b</code> is <code>null</code>.
- * @exception IndexOutOfBoundsException If <code>off</code> is negative,
- * <code>len</code> is negative, or <code>len</code> is greater than
- * <code>b.length - off</code>
- * @exception IOException if the pipe is <a href="#BROKEN"> <code>broken</code></a>,
+ * @throws NullPointerException If <code>b</code> is <code>null</code>.
+ * @throws IndexOutOfBoundsException If <code>off</code> is negative,
+ * <code>len</code> is negative, or <code>len</code> is greater than
+ * <code>b.length - off</code>
+ * @throws IOException if the pipe is <a href="#BROKEN"> <code>broken</code></a>,
* {@link #connect(java.io.PipedOutputStream) unconnected},
* closed, or if an I/O error occurs.
*/
@@ -418,10 +418,10 @@
* without blocking, or {@code 0} if this input stream has been
* closed by invoking its {@link #close()} method, or if the pipe
* is {@link #connect(java.io.PipedOutputStream) unconnected}, or
- * <a href="#BROKEN"> <code>broken</code></a>.
+ * <a href="#BROKEN"> <code>broken</code></a>.
*
- * @exception IOException if an I/O error occurs.
- * @since 1.0.2
+ * @throws IOException if an I/O error occurs.
+ * @since 1.0.2
*/
public synchronized int available() throws IOException {
if(in < 0)
@@ -438,7 +438,7 @@
* Closes this piped input stream and releases any system resources
* associated with the stream.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void close() throws IOException {
closedByReader = true;
--- a/src/java.base/share/classes/java/io/PipedOutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/PipedOutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -58,7 +58,7 @@
* available as input from <code>snk</code>.
*
* @param snk The piped input stream to connect to.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public PipedOutputStream(PipedInputStream snk) throws IOException {
connect(snk);
@@ -91,7 +91,7 @@
* The two calls have the same effect.
*
* @param snk the piped input stream to connect to.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public synchronized void connect(PipedInputStream snk) throws IOException {
if (snk == null) {
@@ -110,8 +110,8 @@
* <p>
* Implements the <code>write</code> method of <code>OutputStream</code>.
*
- * @param b the <code>byte</code> to be written.
- * @exception IOException if the pipe is <a href=#BROKEN> broken</a>,
+ * @param b the <code>byte</code> to be written.
+ * @throws IOException if the pipe is <a href=#BROKEN> broken</a>,
* {@link #connect(java.io.PipedInputStream) unconnected},
* closed, or if an I/O error occurs.
*/
@@ -128,10 +128,10 @@
* This method blocks until all the bytes are written to the output
* stream.
*
- * @param b the data.
- * @param off the start offset in the data.
- * @param len the number of bytes to write.
- * @exception IOException if the pipe is <a href=#BROKEN> broken</a>,
+ * @param b the data.
+ * @param off the start offset in the data.
+ * @param len the number of bytes to write.
+ * @throws IOException if the pipe is <a href=#BROKEN> broken</a>,
* {@link #connect(java.io.PipedInputStream) unconnected},
* closed, or if an I/O error occurs.
*/
@@ -154,7 +154,7 @@
* to be written out.
* This will notify any readers that bytes are waiting in the pipe.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public synchronized void flush() throws IOException {
if (sink != null) {
@@ -169,7 +169,7 @@
* associated with this stream. This stream may no longer be used for
* writing bytes.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void close() throws IOException {
if (sink != null) {
--- a/src/java.base/share/classes/java/io/PipedReader.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/PipedReader.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -76,7 +76,7 @@
* will then be available as input from this stream.
*
* @param src the stream to connect to.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public PipedReader(PipedWriter src) throws IOException {
this(src, DEFAULT_PIPE_SIZE);
@@ -90,8 +90,8 @@
* @param src the stream to connect to.
* @param pipeSize the size of the pipe's buffer.
- * @exception IOException if an I/O error occurs.
- * @exception IllegalArgumentException if {@code pipeSize <= 0}.
+ * @throws IOException if an I/O error occurs.
+ * @throws IllegalArgumentException if {@code pipeSize <= 0}.
* @since 1.6
*/
public PipedReader(PipedWriter src, int pipeSize) throws IOException {
@@ -120,8 +120,8 @@
* before being used.
*
* @param pipeSize the size of the pipe's buffer.
- * @exception IllegalArgumentException if {@code pipeSize <= 0}.
- * @since 1.6
+ * @throws IllegalArgumentException if {@code pipeSize <= 0}.
+ * @since 1.6
*/
public PipedReader(int pipeSize) {
initPipe(pipeSize);
@@ -155,7 +155,7 @@
* The two calls have the same effect.
*
* @param src The piped writer to connect to.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void connect(PipedWriter src) throws IOException {
src.connect(this);
@@ -223,9 +223,9 @@
* This method blocks until input data is available, the end of
* the stream is detected, or an exception is thrown.
*
- * @return the next character of data, or <code>-1</code> if the end of the
- * stream is reached.
- * @exception IOException if the pipe is
+ * @return the next character of data, or <code>-1</code> if the end of the
+ * stream is reached.
+ * @throws IOException if the pipe is
* <a href=PipedInputStream.html#BROKEN> <code>broken</code></a>,
* {@link #connect(java.io.PipedWriter) unconnected}, closed,
* or an I/O error occurs.
@@ -282,11 +282,11 @@
* @return the total number of characters read into the buffer, or
* <code>-1</code> if there is no more data because the end of
* the stream has been reached.
- * @exception IOException if the pipe is
- * <a href=PipedInputStream.html#BROKEN> <code>broken</code></a>,
- * {@link #connect(java.io.PipedWriter) unconnected}, closed,
- * or an I/O error occurs.
- * @exception IndexOutOfBoundsException {@inheritDoc}
+ * @throws IOException if the pipe is
+ * <a href=PipedInputStream.html#BROKEN> <code>broken</code></a>,
+ * {@link #connect(java.io.PipedWriter) unconnected}, closed,
+ * or an I/O error occurs.
+ * @throws IndexOutOfBoundsException {@inheritDoc}
*/
public synchronized int read(char cbuf[], int off, int len) throws IOException {
if (!connected) {
@@ -330,9 +330,9 @@
* Tell whether this stream is ready to be read. A piped character
* stream is ready if the circular buffer is not empty.
*
- * @exception IOException if the pipe is
- * <a href=PipedInputStream.html#BROKEN> <code>broken</code></a>,
- * {@link #connect(java.io.PipedWriter) unconnected}, or closed.
+ * @throws IOException if the pipe is
+ * <a href=PipedInputStream.html#BROKEN> <code>broken</code></a>,
+ * {@link #connect(java.io.PipedWriter) unconnected}, or closed.
*/
public synchronized boolean ready() throws IOException {
if (!connected) {
@@ -354,7 +354,7 @@
* Closes this piped stream and releases any system resources
* associated with the stream.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void close() throws IOException {
in = -1;
--- a/src/java.base/share/classes/java/io/PipedWriter.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/PipedWriter.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -53,7 +53,7 @@
* available as input from <code>snk</code>.
*
* @param snk The piped reader to connect to.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public PipedWriter(PipedReader snk) throws IOException {
connect(snk);
@@ -86,7 +86,7 @@
* The two calls have the same effect.
*
* @param snk the piped reader to connect to.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public synchronized void connect(PipedReader snk) throws IOException {
if (snk == null) {
@@ -111,8 +111,8 @@
* <p>
* Implements the <code>write</code> method of <code>Writer</code>.
*
- * @param c the <code>char</code> to be written.
- * @exception IOException if the pipe is
+ * @param c the <code>char</code> to be written.
+ * @throw IOException if the pipe is
* <a href=PipedOutputStream.html#BROKEN> <code>broken</code></a>,
* {@link #connect(java.io.PipedReader) unconnected}, closed
* or an I/O error occurs.
@@ -133,9 +133,9 @@
* stream, but the thread is no longer alive, then an
* {@code IOException} is thrown.
*
- * @param cbuf the data.
- * @param off the start offset in the data.
- * @param len the number of characters to write.
+ * @param cbuf the data.
+ * @param off the start offset in the data.
+ * @param len the number of characters to write.
*
* @throws IndexOutOfBoundsException
* If {@code off} is negative, or {@code len} is negative,
@@ -161,7 +161,7 @@
* to be written out.
* This will notify any readers that characters are waiting in the pipe.
*
- * @exception IOException if the pipe is closed, or an I/O error occurs.
+ * @throws IOException if the pipe is closed, or an I/O error occurs.
*/
public synchronized void flush() throws IOException {
if (sink != null) {
@@ -179,7 +179,7 @@
* associated with this stream. This stream may no longer be used for
* writing characters.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void close() throws IOException {
closed = true;
--- a/src/java.base/share/classes/java/io/PushbackInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/PushbackInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -84,7 +84,7 @@
*
* @param in the input stream from which bytes will be read.
* @param size the size of the pushback buffer.
- * @exception IllegalArgumentException if {@code size <= 0}
+ * @throws IllegalArgumentException if {@code size <= 0}
* @since 1.1
*/
public PushbackInputStream(InputStream in, int size) {
@@ -123,7 +123,7 @@
*
* @return the next byte of data, or <code>-1</code> if the end of the
* stream has been reached.
- * @exception IOException if this input stream has been closed by
+ * @throws IOException if this input stream has been closed by
* invoking its {@link #close()} method,
* or an I/O error occurs.
* @see java.io.InputStream#read()
@@ -150,11 +150,11 @@
* @return the total number of bytes read into the buffer, or
* <code>-1</code> if there is no more data because the end of
* the stream has been reached.
- * @exception NullPointerException If <code>b</code> is <code>null</code>.
- * @exception IndexOutOfBoundsException If <code>off</code> is negative,
- * <code>len</code> is negative, or <code>len</code> is greater than
- * <code>b.length - off</code>
- * @exception IOException if this input stream has been closed by
+ * @throws NullPointerException If <code>b</code> is <code>null</code>.
+ * @throws IndexOutOfBoundsException If <code>off</code> is negative,
+ * <code>len</code> is negative, or <code>len</code> is greater than
+ * <code>b.length - off</code>
+ * @throws IOException if this input stream has been closed by
* invoking its {@link #close()} method,
* or an I/O error occurs.
* @see java.io.InputStream#read(byte[], int, int)
@@ -196,7 +196,7 @@
*
* @param b the <code>int</code> value whose low-order
* byte is to be pushed back.
- * @exception IOException If there is not enough room in the pushback
+ * @throws IOException If there is not enough room in the pushback
* buffer for the byte, or this input stream has been closed by
* invoking its {@link #close()} method.
*/
@@ -214,11 +214,11 @@
* read will have the value <code>b[off]</code>, the byte after that will
* have the value <code>b[off+1]</code>, and so forth.
*
- * @param b the byte array to push back.
- * @param off the start offset of the data.
- * @param len the number of bytes to push back.
- * @exception NullPointerException If <code>b</code> is <code>null</code>.
- * @exception IOException If there is not enough room in the pushback
+ * @param b the byte array to push back.
+ * @param off the start offset of the data.
+ * @param len the number of bytes to push back.
+ * @throws NullPointerException If <code>b</code> is <code>null</code>.
+ * @throws IOException If there is not enough room in the pushback
* buffer for the specified number of bytes,
* or this input stream has been closed by
* invoking its {@link #close()} method.
@@ -239,9 +239,9 @@
* will have the value <code>b[0]</code>, the byte after that will have the
* value <code>b[1]</code>, and so forth.
*
- * @param b the byte array to push back
- * @exception NullPointerException If <code>b</code> is <code>null</code>.
- * @exception IOException If there is not enough room in the pushback
+ * @param b the byte array to push back
+ * @throws NullPointerException If <code>b</code> is <code>null</code>.
+ * @throws IOException If there is not enough room in the pushback
* buffer for the specified number of bytes,
* or this input stream has been closed by
* invoking its {@link #close()} method.
@@ -264,7 +264,7 @@
*
* @return the number of bytes that can be read (or skipped over) from
* the input stream without blocking.
- * @exception IOException if this input stream has been closed by
+ * @throws IOException if this input stream has been closed by
* invoking its {@link #close()} method,
* or an I/O error occurs.
* @see java.io.FilterInputStream#in
@@ -327,8 +327,8 @@
*
* @return <code>false</code>, since this class does not support the
* <code>mark</code> and <code>reset</code> methods.
- * @see java.io.InputStream#mark(int)
- * @see java.io.InputStream#reset()
+ * @see java.io.InputStream#mark(int)
+ * @see java.io.InputStream#reset()
*/
public boolean markSupported() {
return false;
@@ -355,7 +355,7 @@
* <code>PushbackInputStream</code> does nothing except throw an
* <code>IOException</code>.
*
- * @exception IOException if this method is invoked.
+ * @throws IOException if this method is invoked.
* @see java.io.InputStream#mark(int)
* @see java.io.IOException
*/
@@ -370,7 +370,7 @@
* available(), reset(), or skip() invocations will throw an IOException.
* Closing a previously closed stream has no effect.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public synchronized void close() throws IOException {
if (in == null)
--- a/src/java.base/share/classes/java/io/PushbackReader.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/PushbackReader.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,7 +47,7 @@
*
* @param in The reader from which characters will be read
* @param size The size of the pushback buffer
- * @exception IllegalArgumentException if {@code size <= 0}
+ * @throws IllegalArgumentException if {@code size <= 0}
*/
public PushbackReader(Reader in, int size) {
super(in);
@@ -79,7 +79,7 @@
* @return The character read, or -1 if the end of the stream has been
* reached
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public int read() throws IOException {
synchronized (lock) {
@@ -101,8 +101,8 @@
* @return The number of characters read, or -1 if the end of the
* stream has been reached
*
- * @exception IOException If an I/O error occurs
- * @exception IndexOutOfBoundsException {@inheritDoc}
+ * @throws IOException If an I/O error occurs
+ * @throws IndexOutOfBoundsException {@inheritDoc}
*/
public int read(char cbuf[], int off, int len) throws IOException {
synchronized (lock) {
@@ -146,8 +146,8 @@
*
* @param c The int value representing a character to be pushed back
*
- * @exception IOException If the pushback buffer is full,
- * or if some other I/O error occurs
+ * @throws IOException If the pushback buffer is full,
+ * or if some other I/O error occurs
*/
public void unread(int c) throws IOException {
synchronized (lock) {
@@ -165,11 +165,11 @@
* character after that will have the value <code>cbuf[off+1]</code>, and
* so forth.
*
- * @param cbuf Character array
- * @param off Offset of first character to push back
- * @param len Number of characters to push back
+ * @param cbuf Character array
+ * @param off Offset of first character to push back
+ * @param len Number of characters to push back
*
- * @exception IOException If there is insufficient room in the pushback
+ * @throws IOException If there is insufficient room in the pushback
* buffer, or if some other I/O error occurs
*/
public void unread(char cbuf[], int off, int len) throws IOException {
@@ -188,9 +188,9 @@
* read will have the value <code>cbuf[0]</code>, the character after that
* will have the value <code>cbuf[1]</code>, and so forth.
*
- * @param cbuf Character array to push back
+ * @param cbuf Character array to push back
*
- * @exception IOException If there is insufficient room in the pushback
+ * @throws IOException If there is insufficient room in the pushback
* buffer, or if some other I/O error occurs
*/
public void unread(char cbuf[]) throws IOException {
@@ -200,7 +200,7 @@
/**
* Tells whether this stream is ready to be read.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public boolean ready() throws IOException {
synchronized (lock) {
@@ -213,7 +213,7 @@
* Marks the present position in the stream. The <code>mark</code>
* for class <code>PushbackReader</code> always throws an exception.
*
- * @exception IOException Always, since mark is not supported
+ * @throws IOException Always, since mark is not supported
*/
public void mark(int readAheadLimit) throws IOException {
throw new IOException("mark/reset not supported");
@@ -223,7 +223,7 @@
* Resets the stream. The <code>reset</code> method of
* <code>PushbackReader</code> always throws an exception.
*
- * @exception IOException Always, since reset is not supported
+ * @throws IOException Always, since reset is not supported
*/
public void reset() throws IOException {
throw new IOException("mark/reset not supported");
@@ -244,7 +244,7 @@
* Closing a previously closed stream has no effect. This method will block
* while there is another thread blocking on the reader.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public void close() throws IOException {
synchronized (lock) {
@@ -257,12 +257,12 @@
* Skips characters. This method will block until some characters are
* available, an I/O error occurs, or the end of the stream is reached.
*
- * @param n The number of characters to skip
+ * @param n The number of characters to skip
*
* @return The number of characters actually skipped
*
- * @exception IllegalArgumentException If <code>n</code> is negative.
- * @exception IOException If an I/O error occurs
+ * @throws IllegalArgumentException If <code>n</code> is negative.
+ * @throws IOException If an I/O error occurs
*/
public long skip(long n) throws IOException {
if (n < 0L)
--- a/src/java.base/share/classes/java/io/RandomAccessFile.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/RandomAccessFile.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -103,17 +103,17 @@
*
* @param name the system-dependent filename
* @param mode the access <a href="#mode">mode</a>
- * @exception IllegalArgumentException if the mode argument is not equal
+ * @throws IllegalArgumentException if the mode argument is not equal
* to one of {@code "r"}, {@code "rw"}, {@code "rws"}, or
* {@code "rwd"}
- * @exception FileNotFoundException
- * if the mode is {@code "r"} but the given string does not
- * denote an existing regular file, or if the mode begins with
- * {@code "rw"} but the given string does not denote an
- * existing, writable regular file and a new regular file of
- * that name cannot be created, or if some other error occurs
- * while opening or creating the file
- * @exception SecurityException if a security manager exists and its
+ * @throws FileNotFoundException
+ * if the mode is {@code "r"} but the given string does not
+ * denote an existing regular file, or if the mode begins with
+ * {@code "rw"} but the given string does not denote an
+ * existing, writable regular file and a new regular file of
+ * that name cannot be created, or if some other error occurs
+ * while opening or creating the file
+ * @throws SecurityException if a security manager exists and its
* {@code checkRead} method denies read access to the file
* or the mode is {@code "rw"} and the security manager's
* {@code checkWrite} method denies write access to the file
@@ -190,17 +190,17 @@
* @param file the file object
* @param mode the access mode, as described
* <a href="#mode">above</a>
- * @exception IllegalArgumentException if the mode argument is not equal
+ * @throws IllegalArgumentException if the mode argument is not equal
* to one of {@code "r"}, {@code "rw"}, {@code "rws"}, or
* {@code "rwd"}
- * @exception FileNotFoundException
- * if the mode is {@code "r"} but the given file object does
- * not denote an existing regular file, or if the mode begins
- * with {@code "rw"} but the given file object does not denote
- * an existing, writable regular file and a new regular file of
- * that name cannot be created, or if some other error occurs
- * while opening or creating the file
- * @exception SecurityException if a security manager exists and its
+ * @throws FileNotFoundException
+ * if the mode is {@code "r"} but the given file object does
+ * not denote an existing regular file, or if the mode begins
+ * with {@code "rw"} but the given file object does not denote
+ * an existing, writable regular file and a new regular file of
+ * that name cannot be created, or if some other error occurs
+ * while opening or creating the file
+ * @throws SecurityException if a security manager exists and its
* {@code checkRead} method denies read access to the file
* or the mode is {@code "rw"} and the security manager's
* {@code checkWrite} method denies write access to the file
@@ -267,7 +267,7 @@
* stream.
*
* @return the file descriptor object associated with this stream.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.FileDescriptor
*/
public final FileDescriptor getFD() throws IOException {
@@ -361,7 +361,7 @@
*
* @return the next byte of data, or {@code -1} if the end of the
* file has been reached.
- * @exception IOException if an I/O error occurs. Not thrown if
+ * @throws IOException if an I/O error occurs. Not thrown if
* end-of-file has been reached.
*/
public int read() throws IOException {
@@ -372,10 +372,10 @@
/**
* Reads a sub array as a sequence of bytes.
- * @param b the buffer into which the data is read.
- * @param off the start offset of the data.
- * @param len the number of bytes to read.
- * @exception IOException If an I/O error has occurred.
+ * @param b the buffer into which the data is read.
+ * @param off the start offset of the data.
+ * @param len the number of bytes to read.
+ * @throws IOException If an I/O error has occurred.
*/
private native int readBytes(byte b[], int off, int len) throws IOException;
@@ -396,13 +396,13 @@
* @return the total number of bytes read into the buffer, or
* {@code -1} if there is no more data because the end of
* the file has been reached.
- * @exception IOException If the first byte cannot be read for any reason
- * other than end of file, or if the random access file has been closed, or if
- * some other I/O error occurs.
- * @exception NullPointerException If {@code b} is {@code null}.
- * @exception IndexOutOfBoundsException If {@code off} is negative,
- * {@code len} is negative, or {@code len} is greater than
- * {@code b.length - off}
+ * @throws IOException If the first byte cannot be read for any reason
+ * other than end of file, or if the random access file has been closed,
+ * or if some other I/O error occurs.
+ * @throws NullPointerException If {@code b} is {@code null}.
+ * @throws IndexOutOfBoundsException If {@code off} is negative,
+ * {@code len} is negative, or {@code len} is greater than
+ * {@code b.length - off}
*/
public int read(byte b[], int off, int len) throws IOException {
return readBytes(b, off, len);
@@ -422,10 +422,10 @@
* @return the total number of bytes read into the buffer, or
* {@code -1} if there is no more data because the end of
* this file has been reached.
- * @exception IOException If the first byte cannot be read for any reason
- * other than end of file, or if the random access file has been closed, or if
- * some other I/O error occurs.
- * @exception NullPointerException If {@code b} is {@code null}.
+ * @throws IOException If the first byte cannot be read for any reason
+ * other than end of file, or if the random access file has been closed,
+ * or if some other I/O error occurs.
+ * @throws NullPointerException If {@code b} is {@code null}.
*/
public int read(byte b[]) throws IOException {
return readBytes(b, 0, b.length);
@@ -490,7 +490,7 @@
*
* @param n the number of bytes to be skipped.
* @return the actual number of bytes skipped.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public int skipBytes(int n) throws IOException {
long pos;
@@ -519,7 +519,7 @@
* the current file pointer.
*
* @param b the {@code byte} to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void write(int b) throws IOException {
write0(b);
@@ -529,11 +529,11 @@
/**
* Writes a sub array as a sequence of bytes.
- * @param b the data to be written
+ * @param b the data to be written
- * @param off the start offset in the data
- * @param len the number of bytes that are written
- * @exception IOException If an I/O error has occurred.
+ * @param off the start offset in the data
+ * @param len the number of bytes that are written
+ * @throws IOException If an I/O error has occurred.
*/
private native void writeBytes(byte b[], int off, int len) throws IOException;
@@ -542,7 +542,7 @@
* to this file, starting at the current file pointer.
*
* @param b the data.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void write(byte b[]) throws IOException {
writeBytes(b, 0, b.length);
@@ -555,7 +555,7 @@
* @param b the data.
* @param off the start offset in the data.
* @param len the number of bytes to write.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void write(byte b[], int off, int len) throws IOException {
writeBytes(b, off, len);
@@ -568,7 +568,7 @@
*
* @return the offset from the beginning of the file, in bytes,
* at which the next read or write occurs.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public native long getFilePointer() throws IOException;
@@ -583,7 +583,7 @@
* @param pos the offset position, measured in bytes from the
* beginning of the file, at which to set the file
* pointer.
- * @exception IOException if {@code pos} is less than
+ * @throws IOException if {@code pos} is less than
* {@code 0} or if an I/O error occurs.
*/
public void seek(long pos) throws IOException {
@@ -600,7 +600,7 @@
* Returns the length of this file.
*
* @return the length of this file, measured in bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public native long length() throws IOException;
@@ -620,7 +620,7 @@
* the extended portion of the file are not defined.
*
* @param newLength The desired length of the file
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
* @since 1.2
*/
public native void setLength(long newLength) throws IOException;
@@ -634,7 +634,7 @@
* <p> If this file has an associated channel then the channel is closed
* as well.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*
* @revised 1.4
* @spec JSR-51
@@ -678,8 +678,8 @@
* is detected, or an exception is thrown.
*
* @return the {@code boolean} value read.
- * @exception EOFException if this file has reached the end.
- * @exception IOException if an I/O error occurs.
+ * @throws EOFException if this file has reached the end.
+ * @throws IOException if an I/O error occurs.
*/
public final boolean readBoolean() throws IOException {
int ch = this.read();
@@ -703,8 +703,8 @@
*
* @return the next byte of this file as a signed eight-bit
* {@code byte}.
- * @exception EOFException if this file has reached the end.
- * @exception IOException if an I/O error occurs.
+ * @throws EOFException if this file has reached the end.
+ * @throws IOException if an I/O error occurs.
*/
public final byte readByte() throws IOException {
int ch = this.read();
@@ -723,8 +723,8 @@
*
* @return the next byte of this file, interpreted as an unsigned
* eight-bit number.
- * @exception EOFException if this file has reached the end.
- * @exception IOException if an I/O error occurs.
+ * @throws EOFException if this file has reached the end.
+ * @throws IOException if an I/O error occurs.
*/
public final int readUnsignedByte() throws IOException {
int ch = this.read();
@@ -749,9 +749,9 @@
*
* @return the next two bytes of this file, interpreted as a signed
* 16-bit number.
- * @exception EOFException if this file reaches the end before reading
+ * @throws EOFException if this file reaches the end before reading
* two bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public final short readShort() throws IOException {
int ch1 = this.read();
@@ -777,9 +777,9 @@
*
* @return the next two bytes of this file, interpreted as an unsigned
* 16-bit integer.
- * @exception EOFException if this file reaches the end before reading
+ * @throws EOFException if this file reaches the end before reading
* two bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public final int readUnsignedShort() throws IOException {
int ch1 = this.read();
@@ -805,9 +805,9 @@
*
* @return the next two bytes of this file, interpreted as a
* {@code char}.
- * @exception EOFException if this file reaches the end before reading
+ * @throws EOFException if this file reaches the end before reading
* two bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public final char readChar() throws IOException {
int ch1 = this.read();
@@ -833,9 +833,9 @@
*
* @return the next four bytes of this file, interpreted as an
* {@code int}.
- * @exception EOFException if this file reaches the end before reading
+ * @throws EOFException if this file reaches the end before reading
* four bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public final int readInt() throws IOException {
int ch1 = this.read();
@@ -871,9 +871,9 @@
*
* @return the next eight bytes of this file, interpreted as a
* {@code long}.
- * @exception EOFException if this file reaches the end before reading
+ * @throws EOFException if this file reaches the end before reading
* eight bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public final long readLong() throws IOException {
return ((long)(readInt()) << 32) + (readInt() & 0xFFFFFFFFL);
@@ -892,9 +892,9 @@
*
* @return the next four bytes of this file, interpreted as a
* {@code float}.
- * @exception EOFException if this file reaches the end before reading
+ * @throws EOFException if this file reaches the end before reading
* four bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.RandomAccessFile#readInt()
* @see java.lang.Float#intBitsToFloat(int)
*/
@@ -915,9 +915,9 @@
*
* @return the next eight bytes of this file, interpreted as a
* {@code double}.
- * @exception EOFException if this file reaches the end before reading
+ * @throws EOFException if this file reaches the end before reading
* eight bytes.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.RandomAccessFile#readLong()
* @see java.lang.Double#longBitsToDouble(long)
*/
@@ -946,7 +946,7 @@
*
* @return the next line of text from this file, or null if end
* of file is encountered before even one byte is read.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public final String readLine() throws IOException {
@@ -997,10 +997,10 @@
* stream is detected, or an exception is thrown.
*
* @return a Unicode string.
- * @exception EOFException if this file reaches the end before
+ * @throws EOFException if this file reaches the end before
* reading all the bytes.
- * @exception IOException if an I/O error occurs.
- * @exception UTFDataFormatException if the bytes do not represent
+ * @throws IOException if an I/O error occurs.
+ * @throws UTFDataFormatException if the bytes do not represent
* valid modified UTF-8 encoding of a Unicode string.
* @see java.io.RandomAccessFile#readUnsignedShort()
*/
@@ -1016,7 +1016,7 @@
* the current position of the file pointer.
*
* @param v a {@code boolean} value to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public final void writeBoolean(boolean v) throws IOException {
write(v ? 1 : 0);
@@ -1028,7 +1028,7 @@
* write starts at the current position of the file pointer.
*
* @param v a {@code byte} value to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public final void writeByte(int v) throws IOException {
write(v);
@@ -1040,7 +1040,7 @@
* The write starts at the current position of the file pointer.
*
* @param v a {@code short} to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public final void writeShort(int v) throws IOException {
write((v >>> 8) & 0xFF);
@@ -1054,7 +1054,7 @@
* file pointer.
*
* @param v a {@code char} value to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public final void writeChar(int v) throws IOException {
write((v >>> 8) & 0xFF);
@@ -1067,7 +1067,7 @@
* The write starts at the current position of the file pointer.
*
* @param v an {@code int} to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public final void writeInt(int v) throws IOException {
write((v >>> 24) & 0xFF);
@@ -1082,7 +1082,7 @@
* The write starts at the current position of the file pointer.
*
* @param v a {@code long} to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public final void writeLong(long v) throws IOException {
write((int)(v >>> 56) & 0xFF);
@@ -1104,7 +1104,7 @@
* current position of the file pointer.
*
* @param v a {@code float} value to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.lang.Float#floatToIntBits(float)
*/
public final void writeFloat(float v) throws IOException {
@@ -1119,7 +1119,7 @@
* position of the file pointer.
*
* @param v a {@code double} value to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.lang.Double#doubleToLongBits(double)
*/
public final void writeDouble(double v) throws IOException {
@@ -1133,7 +1133,7 @@
* the file pointer.
*
* @param s a string of bytes to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
@SuppressWarnings("deprecation")
public final void writeBytes(String s) throws IOException {
@@ -1150,7 +1150,7 @@
* position of the file pointer.
*
* @param s a {@code String} value to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.RandomAccessFile#writeChar(int)
*/
public final void writeChars(String s) throws IOException {
@@ -1180,7 +1180,7 @@
* for each character.
*
* @param str a string to be written.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public final void writeUTF(String str) throws IOException {
DataOutputStream.writeUTF(str, this);
--- a/src/java.base/share/classes/java/io/Reader.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/Reader.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -203,7 +203,7 @@
* ({@code 0x00-0xffff}), or -1 if the end of the stream has
* been reached
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public int read() throws IOException {
char cb[] = new char[1];
@@ -223,7 +223,7 @@
* if the end of the stream
* has been reached
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public int read(char cbuf[]) throws IOException {
return read(cbuf, 0, cbuf.length);
@@ -241,8 +241,8 @@
* @return The number of characters read, or -1 if the end of the
* stream has been reached
*
- * @exception IOException If an I/O error occurs
- * @exception IndexOutOfBoundsException
+ * @throws IOException If an I/O error occurs
+ * @throws IndexOutOfBoundsException
* If {@code off} is negative, or {@code len} is negative,
* or {@code len} is greater than {@code cbuf.length - off}
*/
@@ -262,8 +262,8 @@
*
* @return The number of characters actually skipped
*
- * @exception IllegalArgumentException If <code>n</code> is negative.
- * @exception IOException If an I/O error occurs
+ * @throws IllegalArgumentException If <code>n</code> is negative.
+ * @throws IOException If an I/O error occurs
*/
public long skip(long n) throws IOException {
if (n < 0L)
@@ -290,7 +290,7 @@
* false otherwise. Note that returning false does not guarantee that the
* next read will block.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public boolean ready() throws IOException {
return false;
@@ -317,7 +317,7 @@
* reading this many characters, attempting to
* reset the stream may fail.
*
- * @exception IOException If the stream does not support mark(),
+ * @throws IOException If the stream does not support mark(),
* or if some other I/O error occurs
*/
public void mark(int readAheadLimit) throws IOException {
@@ -332,7 +332,7 @@
* character-input streams support the reset() operation, and some support
* reset() without supporting mark().
*
- * @exception IOException If the stream has not been marked,
+ * @throws IOException If the stream has not been marked,
* or if the mark has been invalidated,
* or if the stream does not support reset(),
* or if some other I/O error occurs
@@ -347,7 +347,7 @@
* mark(), reset(), or skip() invocations will throw an IOException.
* Closing a previously closed stream has no effect.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public abstract void close() throws IOException;
--- a/src/java.base/share/classes/java/io/SequenceInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/SequenceInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -118,13 +118,13 @@
* This method simply calls {@code available} of the current underlying
* input stream and returns the result.
*
- * @return an estimate of the number of bytes that can be read (or
- * skipped over) from the current underlying input stream
- * without blocking or {@code 0} if this input stream
- * has been closed by invoking its {@link #close()} method
- * @exception IOException if an I/O error occurs.
+ * @return an estimate of the number of bytes that can be read (or
+ * skipped over) from the current underlying input stream
+ * without blocking or {@code 0} if this input stream
+ * has been closed by invoking its {@link #close()} method
+ * @throw IOException if an I/O error occurs.
*
- * @since 1.1
+ * @since 1.1
*/
public int available() throws IOException {
if (in == null) {
@@ -149,7 +149,7 @@
*
* @return the next byte of data, or <code>-1</code> if the end of the
* stream is reached.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public int read() throws IOException {
while (in != null) {
@@ -179,11 +179,11 @@
* at which the data is written.
* @param len the maximum number of bytes read.
* @return int the number of bytes read.
- * @exception NullPointerException If <code>b</code> is <code>null</code>.
- * @exception IndexOutOfBoundsException If <code>off</code> is negative,
- * <code>len</code> is negative, or <code>len</code> is greater than
- * <code>b.length - off</code>
- * @exception IOException if an I/O error occurs.
+ * @throws NullPointerException If <code>b</code> is <code>null</code>.
+ * @throws IndexOutOfBoundsException If <code>off</code> is negative,
+ * <code>len</code> is negative, or <code>len</code> is
+ * greater than <code>b.length - off</code>
+ * @throws IOException if an I/O error occurs.
*/
public int read(byte b[], int off, int len) throws IOException {
if (in == null) {
@@ -217,7 +217,7 @@
* are requested from the enumeration and closed
* before the <code>close</code> method returns.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*/
public void close() throws IOException {
IOException ioe = null;
--- a/src/java.base/share/classes/java/io/StreamTokenizer.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/StreamTokenizer.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -517,7 +517,7 @@
* is returned.
*
* @return the value of the {@code ttype} field.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
* @see java.io.StreamTokenizer#nval
* @see java.io.StreamTokenizer#sval
* @see java.io.StreamTokenizer#ttype
--- a/src/java.base/share/classes/java/io/StringReader.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/io/StringReader.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -62,7 +62,7 @@
* @return The character read, or -1 if the end of the stream has been
* reached
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public int read() throws IOException {
synchronized (lock) {
@@ -83,8 +83,8 @@
* @return The number of characters read, or -1 if the end of the
* stream has been reached
*
- * @exception IOException If an I/O error occurs
- * @exception IndexOutOfBoundsException {@inheritDoc}
+ * @throws IOException If an I/O error occurs
+ * @throws IndexOutOfBoundsException {@inheritDoc}
*/
public int read(char cbuf[], int off, int len) throws IOException {
synchronized (lock) {
@@ -118,7 +118,7 @@
* <p>If the entire string has been read or skipped, then this method has
* no effect and always returns 0.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public long skip(long ns) throws IOException {
synchronized (lock) {
@@ -138,7 +138,7 @@
*
* @return True if the next read() is guaranteed not to block for input
*
- * @exception IOException If the stream is closed
+ * @throws IOException If the stream is closed
*/
public boolean ready() throws IOException {
synchronized (lock) {
@@ -164,8 +164,8 @@
* is no actual limit, so this argument must not
* be negative, but is otherwise ignored.
*
- * @exception IllegalArgumentException If {@code readAheadLimit < 0}
- * @exception IOException If an I/O error occurs
+ * @throws IllegalArgumentException If {@code readAheadLimit < 0}
+ * @throws IOException If an I/O error occurs
*/
public void mark(int readAheadLimit) throws IOException {
if (readAheadLimit < 0){
@@ -181,7 +181,7 @@
* Resets the stream to the most recent mark, or to the beginning of the
* string if it has never been marked.
*
- * @exception IOException If an I/O error occurs
+ * @throws IOException If an I/O error occurs
*/
public void reset() throws IOException {
synchronized (lock) {
--- a/src/java.base/share/classes/java/lang/Class.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/Class.java Sat Sep 21 12:10:52 2019 +0200
@@ -321,10 +321,10 @@
* @param className the fully qualified name of the desired class.
* @return the {@code Class} object for the class with the
* specified name.
- * @exception LinkageError if the linkage fails
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws LinkageError if the linkage fails
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails
- * @exception ClassNotFoundException if the class cannot be located
+ * @throws ClassNotFoundException if the class cannot be located
*/
@CallerSensitive
public static Class<?> forName(String className)
@@ -379,12 +379,12 @@
* @param loader class loader from which the class must be loaded
* @return class object representing the desired class
*
- * @exception LinkageError if the linkage fails
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws LinkageError if the linkage fails
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails
- * @exception ClassNotFoundException if the class cannot be located by
+ * @throws ClassNotFoundException if the class cannot be located by
* the specified class loader
- * @exception SecurityException
+ * @throws SecurityException
* if a security manager is present, and the {@code loader} is
* {@code null}, and the caller's class loader is not
* {@code null}, and the caller does not have the
@@ -667,12 +667,12 @@
* or via a widening reference conversion. See <em>The Java Language
* Specification</em>, sections 5.1.1 and 5.1.4 , for details.
*
- * @param cls the {@code Class} object to be checked
- * @return the {@code boolean} value indicating whether objects of the
- * type {@code cls} can be assigned to objects of this class
- * @exception NullPointerException if the specified Class parameter is
+ * @param cls the {@code Class} object to be checked
+ * @return the {@code boolean} value indicating whether objects of the
+ * type {@code cls} can be assigned to objects of this class
+ * @throws NullPointerException if the specified Class parameter is
* null.
- * @since 1.1
+ * @since 1.1
*/
@HotSpotIntrinsicCandidate
public native boolean isAssignableFrom(Class<?> cls);
@@ -1512,7 +1512,7 @@
* class. If the underlying class is a top level class this
* method returns {@code null}.
* @return the immediately enclosing class of the underlying class
- * @exception SecurityException
+ * @throws SecurityException
* If a security manager, <i>s</i>, is present and the caller's
* class loader is not the same as or an ancestor of the class
* loader for the enclosing class and invocation of {@link
--- a/src/java.base/share/classes/java/lang/ClassLoader.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/ClassLoader.java Sat Sep 21 12:10:52 2019 +0200
@@ -445,10 +445,10 @@
* @param parent
* The parent class loader
*
- * @throws SecurityException
- * If a security manager exists and its
- * {@code checkCreateClassLoader} method doesn't allow creation
- * of a new class loader.
+ * @throws SecurityException
+ * If a security manager exists and its
+ * {@code checkCreateClassLoader} method doesn't allow creation
+ * of a new class loader.
*
* @since 1.2
*/
@@ -509,8 +509,8 @@
* to invoking {@link #loadClass(String, boolean) loadClass(name,
* false)}.
*
- * @param name
- * The <a href="#binary-name">binary name</a> of the class
+ * @param name
+ * The <a href="#binary-name">binary name</a> of the class
*
* @return The resulting {@code Class} object
*
@@ -551,11 +551,11 @@
* {@link #getClassLoadingLock getClassLoadingLock} method
* during the entire class loading process.
*
- * @param name
- * The <a href="#binary-name">binary name</a> of the class
+ * @param name
+ * The <a href="#binary-name">binary name</a> of the class
*
- * @param resolve
- * If {@code true} then resolve the class
+ * @param resolve
+ * If {@code true} then resolve the class
*
* @return The resulting {@code Class} object
*
@@ -704,8 +704,8 @@
*
* @implSpec The default implementation throws {@code ClassNotFoundException}.
*
- * @param name
- * The <a href="#binary-name">binary name</a> of the class
+ * @param name
+ * The <a href="#binary-name">binary name</a> of the class
*
* @return The resulting {@code Class} object
*
--- a/src/java.base/share/classes/java/lang/Integer.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/Integer.java Sat Sep 21 12:10:52 2019 +0200
@@ -598,7 +598,7 @@
* @param radix the radix to be used while parsing {@code s}.
* @return the integer represented by the string argument in the
* specified radix.
- * @exception NumberFormatException if the {@code String}
+ * @throws NumberFormatException if the {@code String}
* does not contain a parsable {@code int}.
*/
public static int parseInt(String s, int radix)
@@ -763,7 +763,7 @@
* @param s a {@code String} containing the {@code int}
* representation to be parsed
* @return the integer value represented by the argument in decimal.
- * @exception NumberFormatException if the string does not contain a
+ * @throws NumberFormatException if the string does not contain a
* parsable integer.
*/
public static int parseInt(String s) throws NumberFormatException {
@@ -950,7 +950,7 @@
* @return an {@code Integer} object holding the value
* represented by the string argument in the specified
* radix.
- * @exception NumberFormatException if the {@code String}
+ * @throws NumberFormatException if the {@code String}
* does not contain a parsable {@code int}.
*/
public static Integer valueOf(String s, int radix) throws NumberFormatException {
@@ -976,7 +976,7 @@
* @param s the string to be parsed.
* @return an {@code Integer} object holding the value
* represented by the string argument.
- * @exception NumberFormatException if the string cannot be parsed
+ * @throws NumberFormatException if the string cannot be parsed
* as an integer.
*/
public static Integer valueOf(String s) throws NumberFormatException {
@@ -1393,7 +1393,7 @@
* @param nm the {@code String} to decode.
* @return an {@code Integer} object holding the {@code int}
* value represented by {@code nm}
- * @exception NumberFormatException if the {@code String} does not
+ * @throws NumberFormatException if the {@code String} does not
* contain a parsable integer.
* @see java.lang.Integer#parseInt(java.lang.String, int)
*/
--- a/src/java.base/share/classes/java/lang/Package.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/Package.java Sat Sep 21 12:10:52 2019 +0200
@@ -233,7 +233,7 @@
* Returns true if this package is sealed with respect to the specified
* code source {@code url}.
*
- * @param url the code source URL
+ * @param url the code source URL
* @return true if this package is sealed with respect to the given {@code url}
*/
public boolean isSealed(URL url) {
@@ -267,12 +267,12 @@
* If the values are equal the period is skipped and the next pair of
* components is compared.
*
- * @param desired the version string of the desired version.
+ * @param desired the version string of the desired version.
* @return true if this package's version number is greater
- * than or equal to the desired version number
+ * than or equal to the desired version number
*
- * @exception NumberFormatException if the current version is not known or
- * the desired or current version is not of the correct dotted form.
+ * @throws NumberFormatException if the current version is not known or
+ * the desired or current version is not of the correct dotted form.
*/
public boolean isCompatibleWith(String desired)
throws NumberFormatException
--- a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -223,9 +223,9 @@
/**
* Returns a ProcessHandle for an existing native process.
*
- * @param pid the native process identifier
+ * @param pid the native process identifier
* @return The ProcessHandle for the pid if the process is alive;
- * or {@code null} if the process ID does not exist in the native system.
+ * or {@code null} if the process ID does not exist in the native system.
* @throws SecurityException if RuntimePermission("manageProcess") is not granted
*/
static Optional<ProcessHandle> get(long pid) {
--- a/src/java.base/share/classes/java/lang/SecurityManager.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/SecurityManager.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -331,7 +331,7 @@
* security manager.
* This may result in throwing a <code>SecurityException</code>.
*
- * @exception java.lang.SecurityException if a security manager already
+ * @throws java.lang.SecurityException if a security manager already
* exists and its <code>checkPermission</code> method
* doesn't allow creation of a new security manager.
* @see java.lang.System#getSecurityManager()
@@ -398,9 +398,9 @@
* with the given permission.
*
* @param perm the requested permission.
- * @exception SecurityException if access is not permitted based on
+ * @throws SecurityException if access is not permitted based on
* the current security policy.
- * @exception NullPointerException if the permission argument is
+ * @throws NullPointerException if the permission argument is
* <code>null</code>.
* @since 1.2
*/
@@ -429,11 +429,11 @@
*
* @param perm the specified permission
* @param context a system-dependent security context.
- * @exception SecurityException if the specified security context
+ * @throws SecurityException if the specified security context
* is not an instance of <code>AccessControlContext</code>
* (e.g., is <code>null</code>), or is denied access to the
* resource specified by the given permission.
- * @exception NullPointerException if the permission argument is
+ * @throws NullPointerException if the permission argument is
* <code>null</code>.
* @see java.lang.SecurityManager#getSecurityContext()
* @see java.security.AccessControlContext#checkPermission(java.security.Permission)
@@ -460,7 +460,7 @@
* at the point the overridden method would normally throw an
* exception.
*
- * @exception SecurityException if the calling thread does not
+ * @throws SecurityException if the calling thread does not
* have permission
* to create a new class loader.
* @see java.lang.ClassLoader#ClassLoader()
@@ -515,9 +515,9 @@
* equivalent security check should be placed in the overridden method.
*
* @param t the thread to be checked.
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to modify the thread.
- * @exception NullPointerException if the thread argument is
+ * @throws NullPointerException if the thread argument is
* <code>null</code>.
* @see java.lang.Thread#resume() resume
* @see java.lang.Thread#setDaemon(boolean) setDaemon
@@ -568,9 +568,9 @@
* equivalent security check should be placed in the overridden method.
*
* @param g the thread group to be checked.
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to modify the thread group.
- * @exception NullPointerException if the thread group argument is
+ * @throws NullPointerException if the thread group argument is
* <code>null</code>.
* @see java.lang.ThreadGroup#destroy() destroy
* @see java.lang.ThreadGroup#resume() resume
@@ -610,7 +610,7 @@
* exception.
*
* @param status the exit status.
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to halt the Java Virtual Machine with
* the specified status.
* @see java.lang.Runtime#exit(int) exit
@@ -639,9 +639,9 @@
* exception.
*
* @param cmd the specified system command.
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to create a subprocess.
- * @exception NullPointerException if the <code>cmd</code> argument is
+ * @throws NullPointerException if the <code>cmd</code> argument is
* <code>null</code>.
* @see java.lang.Runtime#exec(java.lang.String)
* @see java.lang.Runtime#exec(java.lang.String, java.lang.String[])
@@ -679,9 +679,9 @@
* exception.
*
* @param lib the name of the library.
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to dynamically link the library.
- * @exception NullPointerException if the <code>lib</code> argument is
+ * @throws NullPointerException if the <code>lib</code> argument is
* <code>null</code>.
* @see java.lang.Runtime#load(java.lang.String)
* @see java.lang.Runtime#loadLibrary(java.lang.String)
@@ -709,9 +709,9 @@
* exception.
*
* @param fd the system-dependent file descriptor.
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to access the specified file descriptor.
- * @exception NullPointerException if the file descriptor argument is
+ * @throws NullPointerException if the file descriptor argument is
* <code>null</code>.
* @see java.io.FileDescriptor
* @see #checkPermission(java.security.Permission) checkPermission
@@ -737,9 +737,9 @@
* exception.
*
* @param file the system-dependent file name.
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to access the specified file.
- * @exception NullPointerException if the <code>file</code> argument is
+ * @throws NullPointerException if the <code>file</code> argument is
* <code>null</code>.
* @see #checkPermission(java.security.Permission) checkPermission
*/
@@ -769,11 +769,11 @@
*
* @param file the system-dependent filename.
* @param context a system-dependent security context.
- * @exception SecurityException if the specified security context
+ * @throws SecurityException if the specified security context
* is not an instance of <code>AccessControlContext</code>
* (e.g., is <code>null</code>), or does not have permission
* to read the specified file.
- * @exception NullPointerException if the <code>file</code> argument is
+ * @throws NullPointerException if the <code>file</code> argument is
* <code>null</code>.
* @see java.lang.SecurityManager#getSecurityContext()
* @see java.security.AccessControlContext#checkPermission(java.security.Permission)
@@ -799,9 +799,9 @@
* exception.
*
* @param fd the system-dependent file descriptor.
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to access the specified file descriptor.
- * @exception NullPointerException if the file descriptor argument is
+ * @throws NullPointerException if the file descriptor argument is
* <code>null</code>.
* @see java.io.FileDescriptor
* @see #checkPermission(java.security.Permission) checkPermission
@@ -828,9 +828,9 @@
* exception.
*
* @param file the system-dependent filename.
- * @exception SecurityException if the calling thread does not
+ * @throws SecurityException if the calling thread does not
* have permission to access the specified file.
- * @exception NullPointerException if the <code>file</code> argument is
+ * @throws NullPointerException if the <code>file</code> argument is
* <code>null</code>.
* @see #checkPermission(java.security.Permission) checkPermission
*/
@@ -855,9 +855,9 @@
* exception.
*
* @param file the system-dependent filename.
- * @exception SecurityException if the calling thread does not
+ * @throws SecurityException if the calling thread does not
* have permission to delete the file.
- * @exception NullPointerException if the <code>file</code> argument is
+ * @throws NullPointerException if the <code>file</code> argument is
* <code>null</code>.
* @see java.io.File#delete()
* @see #checkPermission(java.security.Permission) checkPermission
@@ -889,10 +889,10 @@
*
* @param host the host name port to connect to.
* @param port the protocol port to connect to.
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to open a socket connection to the specified
* <code>host</code> and <code>port</code>.
- * @exception NullPointerException if the <code>host</code> argument is
+ * @throws NullPointerException if the <code>host</code> argument is
* <code>null</code>.
* @see #checkPermission(java.security.Permission) checkPermission
*/
@@ -941,12 +941,12 @@
* @param host the host name port to connect to.
* @param port the protocol port to connect to.
* @param context a system-dependent security context.
- * @exception SecurityException if the specified security context
+ * @throws SecurityException if the specified security context
* is not an instance of <code>AccessControlContext</code>
* (e.g., is <code>null</code>), or does not have permission
* to open a socket connection to the specified
* <code>host</code> and <code>port</code>.
- * @exception NullPointerException if the <code>host</code> argument is
+ * @throws NullPointerException if the <code>host</code> argument is
* <code>null</code>.
* @see java.lang.SecurityManager#getSecurityContext()
* @see java.security.AccessControlContext#checkPermission(java.security.Permission)
@@ -982,7 +982,7 @@
* exception.
*
* @param port the local port.
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to listen on the specified port.
* @see #checkPermission(java.security.Permission) checkPermission
*/
@@ -1009,9 +1009,9 @@
*
* @param host the host name of the socket connection.
* @param port the port number of the socket connection.
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to accept the connection.
- * @exception NullPointerException if the <code>host</code> argument is
+ * @throws NullPointerException if the <code>host</code> argument is
* <code>null</code>.
* @see java.net.ServerSocket#accept()
* @see #checkPermission(java.security.Permission) checkPermission
@@ -1042,9 +1042,9 @@
* exception.
*
* @param maddr Internet group address to be used.
- * @exception SecurityException if the calling thread is not allowed to
+ * @throws SecurityException if the calling thread is not allowed to
* use (join/leave/send/receive) IP multicast.
- * @exception NullPointerException if the address argument is
+ * @throws NullPointerException if the address argument is
* <code>null</code>.
* @since 1.1
* @see #checkPermission(java.security.Permission) checkPermission
@@ -1076,9 +1076,9 @@
* @param ttl value in use, if it is multicast send.
* Note: this particular implementation does not use the ttl
* parameter.
- * @exception SecurityException if the calling thread is not allowed to
+ * @throws SecurityException if the calling thread is not allowed to
* use (join/leave/send/receive) IP multicast.
- * @exception NullPointerException if the address argument is
+ * @throws NullPointerException if the address argument is
* <code>null</code>.
* @since 1.1
* @deprecated Use #checkPermission(java.security.Permission) instead
@@ -1110,7 +1110,7 @@
* at the point the overridden method would normally throw an
* exception.
*
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to access or modify the system properties.
* @see java.lang.System#getProperties()
* @see java.lang.System#setProperties(java.util.Properties)
@@ -1139,11 +1139,11 @@
*
* @param key a system property key.
*
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to access the specified system property.
- * @exception NullPointerException if the <code>key</code> argument is
+ * @throws NullPointerException if the <code>key</code> argument is
* <code>null</code>.
- * @exception IllegalArgumentException if <code>key</code> is empty.
+ * @throws IllegalArgumentException if <code>key</code> is empty.
*
* @see java.lang.System#getProperty(java.lang.String)
* @see #checkPermission(java.security.Permission) checkPermission
@@ -1166,7 +1166,7 @@
* at the point the overridden method would normally throw an
* exception.
*
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to initiate a print job request.
* @since 1.1
* @see #checkPermission(java.security.Permission) checkPermission
@@ -1474,7 +1474,7 @@
* at the point the overridden method would normally throw an
* exception.
*
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission to specify a socket factory or a stream
* handler factory.
*
@@ -1509,10 +1509,10 @@
*
* @param target the target name of the <code>SecurityPermission</code>.
*
- * @exception SecurityException if the calling thread does not have
+ * @throws SecurityException if the calling thread does not have
* permission for the requested access.
- * @exception NullPointerException if <code>target</code> is null.
- * @exception IllegalArgumentException if <code>target</code> is empty.
+ * @throws NullPointerException if <code>target</code> is null.
+ * @throws IllegalArgumentException if <code>target</code> is empty.
*
* @since 1.1
* @see #checkPermission(java.security.Permission) checkPermission
--- a/src/java.base/share/classes/java/lang/String.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/String.java Sat Sep 21 12:10:52 2019 +0200
@@ -702,7 +702,7 @@
* @param index the index of the {@code char} value.
* @return the {@code char} value at the specified index of this string.
* The first {@code char} value is at index {@code 0}.
- * @exception IndexOutOfBoundsException if the {@code index}
+ * @throws IndexOutOfBoundsException if the {@code index}
* argument is negative or not less than the length of this
* string.
*/
@@ -731,7 +731,7 @@
* @param index the index to the {@code char} values
* @return the code point value of the character at the
* {@code index}
- * @exception IndexOutOfBoundsException if the {@code index}
+ * @throws IndexOutOfBoundsException if the {@code index}
* argument is negative or not less than the length of this
* string.
* @since 1.5
@@ -763,7 +763,7 @@
*
* @param index the index following the code point that should be returned
* @return the Unicode code point value before the given index.
- * @exception IndexOutOfBoundsException if the {@code index}
+ * @throws IndexOutOfBoundsException if the {@code index}
* argument is less than 1 or greater than the length
* of this string.
* @since 1.5
@@ -794,7 +794,7 @@
* the text range.
* @return the number of Unicode code points in the specified text
* range
- * @exception IndexOutOfBoundsException if the
+ * @throws IndexOutOfBoundsException if the
* {@code beginIndex} is negative, or {@code endIndex}
* is larger than the length of this {@code String}, or
* {@code beginIndex} is larger than {@code endIndex}.
@@ -821,7 +821,7 @@
* @param index the index to be offset
* @param codePointOffset the offset in code points
* @return the index within this {@code String}
- * @exception IndexOutOfBoundsException if {@code index}
+ * @throws IndexOutOfBoundsException if {@code index}
* is negative or larger then the length of this
* {@code String}, or if {@code codePointOffset} is positive
* and the substring starting with {@code index} has fewer
@@ -858,7 +858,7 @@
* to copy.
* @param dst the destination array.
* @param dstBegin the start offset in the destination array.
- * @exception IndexOutOfBoundsException If any of the following
+ * @throws IndexOutOfBoundsException If any of the following
* is true:
* <ul><li>{@code srcBegin} is negative.
* <li>{@code srcBegin} is greater than {@code srcEnd}
@@ -1867,7 +1867,7 @@
*
* @param beginIndex the beginning index, inclusive.
* @return the specified substring.
- * @exception IndexOutOfBoundsException if
+ * @throws IndexOutOfBoundsException if
* {@code beginIndex} is negative or larger than the
* length of this {@code String} object.
*/
@@ -1890,7 +1890,7 @@
* @param beginIndex the beginning index, inclusive.
* @param endIndex the ending index, exclusive.
* @return the specified substring.
- * @exception IndexOutOfBoundsException if the
+ * @throws IndexOutOfBoundsException if the
* {@code beginIndex} is negative, or
* {@code endIndex} is larger than the length of
* this {@code String} object, or
@@ -3374,7 +3374,7 @@
* @param count length of the subarray.
* @return a {@code String} that contains the characters of the
* specified subarray of the character array.
- * @exception IndexOutOfBoundsException if {@code offset} is
+ * @throws IndexOutOfBoundsException if {@code offset} is
* negative, or {@code count} is negative, or
* {@code offset+count} is larger than
* {@code data.length}.
@@ -3391,7 +3391,7 @@
* @param count length of the subarray.
* @return a {@code String} that contains the characters of the
* specified subarray of the character array.
- * @exception IndexOutOfBoundsException if {@code offset} is
+ * @throws IndexOutOfBoundsException if {@code offset} is
* negative, or {@code count} is negative, or
* {@code offset+count} is larger than
* {@code data.length}.
--- a/src/java.base/share/classes/java/lang/invoke/MethodHandleInfo.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/invoke/MethodHandleInfo.java Sat Sep 21 12:10:52 2019 +0200
@@ -199,9 +199,9 @@
* @param expected a class object representing the desired result type {@code T}
* @param lookup the lookup object that created this MethodHandleInfo, or one with equivalent access privileges
* @return a reference to the method, constructor, or field object
- * @exception ClassCastException if the member is not of the expected type
- * @exception NullPointerException if either argument is {@code null}
- * @exception IllegalArgumentException if the underlying member is not accessible to the given lookup object
+ * @throws ClassCastException if the member is not of the expected type
+ * @throws NullPointerException if either argument is {@code null}
+ * @throws IllegalArgumentException if the underlying member is not accessible to the given lookup object
*/
public <T extends Member> T reflectAs(Class<T> expected, Lookup lookup);
@@ -243,7 +243,7 @@
* The conventional prefix "REF_" is omitted.
* @param referenceKind an integer code for a kind of reference used to access a class member
* @return a mixed-case string such as {@code "getField"}
- * @exception IllegalArgumentException if the argument is not a valid
+ * @throws IllegalArgumentException if the argument is not a valid
* <a href="MethodHandleInfo.html#refkinds">reference kind number</a>
*/
public static String referenceKindToString(int referenceKind) {
@@ -278,9 +278,9 @@
* @param name the {@linkplain #getName member name} part of the symbolic reference
* @param type the {@linkplain #getMethodType method type} part of the symbolic reference
* @return a string of the form {@code "RK C.N:MT"}
- * @exception IllegalArgumentException if the first argument is not a valid
+ * @throws IllegalArgumentException if the first argument is not a valid
* <a href="MethodHandleInfo.html#refkinds">reference kind number</a>
- * @exception NullPointerException if any reference argument is {@code null}
+ * @throws NullPointerException if any reference argument is {@code null}
*/
public static String toString(int kind, Class<?> defc, String name, MethodType type) {
Objects.requireNonNull(name); Objects.requireNonNull(type);
--- a/src/java.base/share/classes/java/lang/invoke/MethodHandles.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/invoke/MethodHandles.java Sat Sep 21 12:10:52 2019 +0200
@@ -274,10 +274,10 @@
* @param target a direct method handle to crack into symbolic reference components
* @param expected a class object representing the desired result type {@code T}
* @return a reference to the method, constructor, or field object
- * @exception SecurityException if the caller is not privileged to call {@code setAccessible}
- * @exception NullPointerException if either argument is {@code null}
- * @exception IllegalArgumentException if the target is not a direct method handle
- * @exception ClassCastException if the member is not of the expected type
+ * @throws SecurityException if the caller is not privileged to call {@code setAccessible}
+ * @throws NullPointerException if either argument is {@code null}
+ * @throws IllegalArgumentException if the target is not a direct method handle
+ * @throws ClassCastException if the member is not of the expected type
* @since 1.8
*/
public static <T extends Member> T
@@ -1754,7 +1754,7 @@
* or if the method is not {@code static},
* or if the method's variable arity modifier bit
* is set and {@code asVarargsCollector} fails
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @throws NullPointerException if any argument is null
*/
@@ -1839,7 +1839,7 @@
* or if the method is {@code static},
* or if the method's variable arity modifier bit
* is set and {@code asVarargsCollector} fails
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @throws NullPointerException if any argument is null
*/
@@ -1913,7 +1913,7 @@
* @throws IllegalAccessException if access checking fails
* or if the method's variable arity modifier bit
* is set and {@code asVarargsCollector} fails
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @throws NullPointerException if any argument is null
*/
@@ -1941,13 +1941,13 @@
*
* @param targetName the fully qualified name of the class to be looked up.
* @return the requested class.
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @throws LinkageError if the linkage fails
* @throws ClassNotFoundException if the class cannot be loaded by the lookup class' loader.
* @throws IllegalAccessException if the class is not accessible, using the allowed access
* modes.
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
*
* @jls 12.2 Loading of Classes and Interfaces
@@ -2022,7 +2022,7 @@
* @return the class that has been access-checked
* @throws IllegalAccessException if the class is not accessible from the lookup class
* and previous lookup class, if present, using the allowed access modes.
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @since 9
* @see <a href="#cross-module-lookup">Cross-module lookups</a>
@@ -2104,7 +2104,7 @@
* or if the method is {@code static},
* or if the method's variable arity modifier bit
* is set and {@code asVarargsCollector} fails
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @throws NullPointerException if any argument is null
*/
@@ -2129,7 +2129,7 @@
* @return a method handle which can load values from the field
* @throws NoSuchFieldException if the field does not exist
* @throws IllegalAccessException if access checking fails, or if the field is {@code static}
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @throws NullPointerException if any argument is null
* @see #findVarHandle(Class, String, Class)
@@ -2153,7 +2153,7 @@
* @throws NoSuchFieldException if the field does not exist
* @throws IllegalAccessException if access checking fails, or if the field is {@code static}
* or {@code final}
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @throws NullPointerException if any argument is null
* @see #findVarHandle(Class, String, Class)
@@ -2226,7 +2226,7 @@
* @return a VarHandle giving access to non-static fields.
* @throws NoSuchFieldException if the field does not exist
* @throws IllegalAccessException if access checking fails, or if the field is {@code static}
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @throws NullPointerException if any argument is null
* @since 9
@@ -2252,7 +2252,7 @@
* @return a method handle which can load values from the field
* @throws NoSuchFieldException if the field does not exist
* @throws IllegalAccessException if access checking fails, or if the field is not {@code static}
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @throws NullPointerException if any argument is null
*/
@@ -2277,7 +2277,7 @@
* @throws NoSuchFieldException if the field does not exist
* @throws IllegalAccessException if access checking fails, or if the field is not {@code static}
* or is {@code final}
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @throws NullPointerException if any argument is null
*/
@@ -2351,7 +2351,7 @@
* @return a VarHandle giving access to a static field
* @throws NoSuchFieldException if the field does not exist
* @throws IllegalAccessException if access checking fails, or if the field is not {@code static}
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @throws NullPointerException if any argument is null
* @since 9
@@ -2405,7 +2405,7 @@
* @throws IllegalAccessException if access checking fails
* or if the method's variable arity modifier bit
* is set and {@code asVarargsCollector} fails
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @throws NullPointerException if any argument is null
* @see MethodHandle#bindTo
@@ -2707,10 +2707,10 @@
* and was created by a lookup object for a different class.
* @param target a direct method handle to crack into symbolic reference components
* @return a symbolic reference which can be used to reconstruct this method handle from this lookup object
- * @exception SecurityException if a security manager is present and it
+ * @throws SecurityException if a security manager is present and it
* <a href="MethodHandles.Lookup.html#secmgr">refuses access</a>
* @throws IllegalArgumentException if the target is not a direct method handle or if access checking fails
- * @exception NullPointerException if the target is {@code null}
+ * @throws NullPointerException if the target is {@code null}
* @see MethodHandleInfo
* @since 1.8
*/
--- a/src/java.base/share/classes/java/lang/invoke/MethodTypeForm.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/invoke/MethodTypeForm.java Sat Sep 21 12:10:52 2019 +0200
@@ -25,7 +25,6 @@
package java.lang.invoke;
-import jdk.internal.vm.annotation.Stable;
import sun.invoke.util.Wrapper;
import java.lang.ref.SoftReference;
@@ -52,7 +51,8 @@
final MethodType basicType; // the canonical erasure, with primitives simplified
// Cached adapter information:
- @Stable final SoftReference<MethodHandle>[] methodHandles;
+ final SoftReference<MethodHandle>[] methodHandles;
+
// Indexes into methodHandles:
static final int
MH_BASIC_INV = 0, // cached instance of MH.invokeBasic
@@ -61,7 +61,8 @@
MH_LIMIT = 3;
// Cached lambda form information, for basic types only:
- final @Stable SoftReference<LambdaForm>[] lambdaForms;
+ final SoftReference<LambdaForm>[] lambdaForms;
+
// Indexes into lambdaForms:
static final int
LF_INVVIRTUAL = 0, // DMH invokeVirtual
@@ -103,15 +104,7 @@
return basicType;
}
- private boolean assertIsBasicType() {
- // primitives must be flattened also
- assert(erasedType == basicType)
- : "erasedType: " + erasedType + " != basicType: " + basicType;
- return true;
- }
-
public MethodHandle cachedMethodHandle(int which) {
- assert(assertIsBasicType());
SoftReference<MethodHandle> entry = methodHandles[which];
return (entry != null) ? entry.get() : null;
}
@@ -130,7 +123,6 @@
}
public LambdaForm cachedLambdaForm(int which) {
- assert(assertIsBasicType());
SoftReference<LambdaForm> entry = lambdaForms[which];
return (entry != null) ? entry.get() : null;
}
@@ -162,59 +154,57 @@
// Walk the argument types, looking for primitives.
short primitiveCount = 0, longArgCount = 0;
- Class<?>[] epts = ptypes;
- Class<?>[] bpts = epts;
- for (int i = 0; i < epts.length; i++) {
- Class<?> pt = epts[i];
- if (pt != Object.class) {
+ Class<?>[] erasedPtypes = ptypes;
+ Class<?>[] basicPtypes = erasedPtypes;
+ for (int i = 0; i < erasedPtypes.length; i++) {
+ Class<?> ptype = erasedPtypes[i];
+ if (ptype != Object.class) {
++primitiveCount;
- Wrapper w = Wrapper.forPrimitiveType(pt);
+ Wrapper w = Wrapper.forPrimitiveType(ptype);
if (w.isDoubleWord()) ++longArgCount;
- if (w.isSubwordOrInt() && pt != int.class) {
- if (bpts == epts)
- bpts = bpts.clone();
- bpts[i] = int.class;
+ if (w.isSubwordOrInt() && ptype != int.class) {
+ if (basicPtypes == erasedPtypes)
+ basicPtypes = basicPtypes.clone();
+ basicPtypes[i] = int.class;
}
}
}
pslotCount += longArgCount; // #slots = #args + #longs
- Class<?> rt = erasedType.returnType();
- Class<?> bt = rt;
- if (rt != Object.class) {
+ Class<?> returnType = erasedType.returnType();
+ Class<?> basicReturnType = returnType;
+ if (returnType != Object.class) {
++primitiveCount; // even void.class counts as a prim here
- Wrapper w = Wrapper.forPrimitiveType(rt);
- if (w.isSubwordOrInt() && rt != int.class)
- bt = int.class;
+ Wrapper w = Wrapper.forPrimitiveType(returnType);
+ if (w.isSubwordOrInt() && returnType != int.class)
+ basicReturnType = int.class;
}
- if (epts == bpts && bt == rt) {
+ if (erasedPtypes == basicPtypes && basicReturnType == returnType) {
+ // Basic type
this.basicType = erasedType;
+
+ if (pslotCount >= 256) throw newIllegalArgumentException("too many arguments");
+
+ this.primitiveCount = primitiveCount;
+ this.parameterSlotCount = (short)pslotCount;
+ this.lambdaForms = new SoftReference[LF_LIMIT];
+ this.methodHandles = new SoftReference[MH_LIMIT];
} else {
- this.basicType = MethodType.makeImpl(bt, bpts, true);
+ this.basicType = MethodType.makeImpl(basicReturnType, basicPtypes, true);
// fill in rest of data from the basic type:
MethodTypeForm that = this.basicType.form();
assert(this != that);
+
this.parameterSlotCount = that.parameterSlotCount;
this.primitiveCount = that.primitiveCount;
this.methodHandles = null;
this.lambdaForms = null;
- return;
}
-
- if (pslotCount >= 256) throw newIllegalArgumentException("too many arguments");
-
- this.primitiveCount = primitiveCount;
- this.parameterSlotCount = (short)pslotCount;
-
- // Initialize caches, but only for basic types
- assert(basicType == erasedType);
- this.lambdaForms = new SoftReference[LF_LIMIT];
- this.methodHandles = new SoftReference[MH_LIMIT];
}
- public int parameterCount() { // # outgoing values
+ public int parameterCount() {
return erasedType.parameterCount();
}
- public int parameterSlotCount() { // # outgoing interpreter slots
+ public int parameterSlotCount() {
return parameterSlotCount;
}
public boolean hasPrimitives() {
@@ -250,17 +240,17 @@
*/
public static MethodType canonicalize(MethodType mt, int howRet, int howArgs) {
Class<?>[] ptypes = mt.ptypes();
- Class<?>[] ptc = canonicalizeAll(ptypes, howArgs);
+ Class<?>[] ptypesCanonical = canonicalizeAll(ptypes, howArgs);
Class<?> rtype = mt.returnType();
- Class<?> rtc = canonicalize(rtype, howRet);
- if (ptc == null && rtc == null) {
+ Class<?> rtypeCanonical = canonicalize(rtype, howRet);
+ if (ptypesCanonical == null && rtypeCanonical == null) {
// It is already canonical.
return null;
}
// Find the erased version of the method type:
- if (rtc == null) rtc = rtype;
- if (ptc == null) ptc = ptypes;
- return MethodType.makeImpl(rtc, ptc, true);
+ if (rtypeCanonical == null) rtypeCanonical = rtype;
+ if (ptypesCanonical == null) ptypesCanonical = ptypes;
+ return MethodType.makeImpl(rtypeCanonical, ptypesCanonical, true);
}
/** Canonicalize the given return or param type.
--- a/src/java.base/share/classes/java/lang/invoke/VarForm.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/invoke/VarForm.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -139,4 +139,4 @@
}
return table;
}
-}
\ No newline at end of file
+}
--- a/src/java.base/share/classes/java/lang/reflect/Array.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/reflect/Array.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -61,17 +61,17 @@
* <p>The number of dimensions of the new array must not
* exceed 255.
*
- * @param componentType the {@code Class} object representing the
- * component type of the new array
- * @param length the length of the new array
+ * @param componentType the {@code Class} object representing the
+ * component type of the new array
+ * @param length the length of the new array
* @return the new array
- * @exception NullPointerException if the specified
- * {@code componentType} parameter is null
- * @exception IllegalArgumentException if componentType is {@link
- * Void#TYPE} or if the number of dimensions of the requested array
- * instance exceed 255.
- * @exception NegativeArraySizeException if the specified {@code length}
- * is negative
+ * @throws NullPointerException if the specified
+ * {@code componentType} parameter is null
+ * @throws IllegalArgumentException if componentType is {@link
+ * Void#TYPE} or if the number of dimensions of the requested array
+ * instance exceed 255.
+ * @throws NegativeArraySizeException if the specified {@code length}
+ * is negative
*/
public static Object newInstance(Class<?> componentType, int length)
throws NegativeArraySizeException {
@@ -100,13 +100,13 @@
* @param dimensions an array of {@code int} representing the dimensions of
* the new array
* @return the new array
- * @exception NullPointerException if the specified
+ * @throws NullPointerException if the specified
* {@code componentType} argument is null
- * @exception IllegalArgumentException if the specified {@code dimensions}
+ * @throws IllegalArgumentException if the specified {@code dimensions}
* argument is a zero-dimensional array, if componentType is {@link
* Void#TYPE}, or if the number of dimensions of the requested array
* instance exceed 255.
- * @exception NegativeArraySizeException if any of the components in
+ * @throws NegativeArraySizeException if any of the components in
* the specified {@code dimensions} argument is negative.
*/
public static Object newInstance(Class<?> componentType, int... dimensions)
@@ -119,7 +119,7 @@
*
* @param array the array
* @return the length of the array
- * @exception IllegalArgumentException if the object argument is not
+ * @throws IllegalArgumentException if the object argument is not
* an array
*/
@HotSpotIntrinsicCandidate
@@ -135,10 +135,10 @@
* @param index the index
* @return the (possibly wrapped) value of the indexed component in
* the specified array
- * @exception NullPointerException If the specified object is null
- * @exception IllegalArgumentException If the specified object is not
+ * @throws NullPointerException If the specified object is null
+ * @throws IllegalArgumentException If the specified object is not
* an array
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to the
* length of the specified array
*/
@@ -152,11 +152,11 @@
* @param array the array
* @param index the index
* @return the value of the indexed component in the specified array
- * @exception NullPointerException If the specified object is null
- * @exception IllegalArgumentException If the specified object is not
+ * @throws NullPointerException If the specified object is null
+ * @throws IllegalArgumentException If the specified object is not
* an array, or if the indexed element cannot be converted to the
* return type by an identity or widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to the
* length of the specified array
* @see Array#get
@@ -171,11 +171,11 @@
* @param array the array
* @param index the index
* @return the value of the indexed component in the specified array
- * @exception NullPointerException If the specified object is null
- * @exception IllegalArgumentException If the specified object is not
+ * @throws NullPointerException If the specified object is null
+ * @throws IllegalArgumentException If the specified object is not
* an array, or if the indexed element cannot be converted to the
* return type by an identity or widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to the
* length of the specified array
* @see Array#get
@@ -190,11 +190,11 @@
* @param array the array
* @param index the index
* @return the value of the indexed component in the specified array
- * @exception NullPointerException If the specified object is null
- * @exception IllegalArgumentException If the specified object is not
+ * @throws NullPointerException If the specified object is null
+ * @throws IllegalArgumentException If the specified object is not
* an array, or if the indexed element cannot be converted to the
* return type by an identity or widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to the
* length of the specified array
* @see Array#get
@@ -209,11 +209,11 @@
* @param array the array
* @param index the index
* @return the value of the indexed component in the specified array
- * @exception NullPointerException If the specified object is null
- * @exception IllegalArgumentException If the specified object is not
+ * @throws NullPointerException If the specified object is null
+ * @throws IllegalArgumentException If the specified object is not
* an array, or if the indexed element cannot be converted to the
* return type by an identity or widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to the
* length of the specified array
* @see Array#get
@@ -228,11 +228,11 @@
* @param array the array
* @param index the index
* @return the value of the indexed component in the specified array
- * @exception NullPointerException If the specified object is null
- * @exception IllegalArgumentException If the specified object is not
+ * @throws NullPointerException If the specified object is null
+ * @throws IllegalArgumentException If the specified object is not
* an array, or if the indexed element cannot be converted to the
* return type by an identity or widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to the
* length of the specified array
* @see Array#get
@@ -247,11 +247,11 @@
* @param array the array
* @param index the index
* @return the value of the indexed component in the specified array
- * @exception NullPointerException If the specified object is null
- * @exception IllegalArgumentException If the specified object is not
+ * @throws NullPointerException If the specified object is null
+ * @throws IllegalArgumentException If the specified object is not
* an array, or if the indexed element cannot be converted to the
* return type by an identity or widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to the
* length of the specified array
* @see Array#get
@@ -266,11 +266,11 @@
* @param array the array
* @param index the index
* @return the value of the indexed component in the specified array
- * @exception NullPointerException If the specified object is null
- * @exception IllegalArgumentException If the specified object is not
+ * @throws NullPointerException If the specified object is null
+ * @throws IllegalArgumentException If the specified object is not
* an array, or if the indexed element cannot be converted to the
* return type by an identity or widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to the
* length of the specified array
* @see Array#get
@@ -285,11 +285,11 @@
* @param array the array
* @param index the index
* @return the value of the indexed component in the specified array
- * @exception NullPointerException If the specified object is null
- * @exception IllegalArgumentException If the specified object is not
+ * @throws NullPointerException If the specified object is null
+ * @throws IllegalArgumentException If the specified object is not
* an array, or if the indexed element cannot be converted to the
* return type by an identity or widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to the
* length of the specified array
* @see Array#get
@@ -305,12 +305,12 @@
* @param array the array
* @param index the index into the array
* @param value the new value of the indexed component
- * @exception NullPointerException If the specified object argument
+ * @throws NullPointerException If the specified object argument
* is null
- * @exception IllegalArgumentException If the specified object argument
+ * @throws IllegalArgumentException If the specified object argument
* is not an array, or if the array component type is primitive and
* an unwrapping conversion fails
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to
* the length of the specified array
*/
@@ -323,13 +323,13 @@
* @param array the array
* @param index the index into the array
* @param z the new value of the indexed component
- * @exception NullPointerException If the specified object argument
+ * @throws NullPointerException If the specified object argument
* is null
- * @exception IllegalArgumentException If the specified object argument
+ * @throws IllegalArgumentException If the specified object argument
* is not an array, or if the specified value cannot be converted
* to the underlying array's component type by an identity or a
* primitive widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to
* the length of the specified array
* @see Array#set
@@ -343,13 +343,13 @@
* @param array the array
* @param index the index into the array
* @param b the new value of the indexed component
- * @exception NullPointerException If the specified object argument
+ * @throws NullPointerException If the specified object argument
* is null
- * @exception IllegalArgumentException If the specified object argument
+ * @throws IllegalArgumentException If the specified object argument
* is not an array, or if the specified value cannot be converted
* to the underlying array's component type by an identity or a
* primitive widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to
* the length of the specified array
* @see Array#set
@@ -363,13 +363,13 @@
* @param array the array
* @param index the index into the array
* @param c the new value of the indexed component
- * @exception NullPointerException If the specified object argument
+ * @throws NullPointerException If the specified object argument
* is null
- * @exception IllegalArgumentException If the specified object argument
+ * @throws IllegalArgumentException If the specified object argument
* is not an array, or if the specified value cannot be converted
* to the underlying array's component type by an identity or a
* primitive widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to
* the length of the specified array
* @see Array#set
@@ -383,13 +383,13 @@
* @param array the array
* @param index the index into the array
* @param s the new value of the indexed component
- * @exception NullPointerException If the specified object argument
+ * @throws NullPointerException If the specified object argument
* is null
- * @exception IllegalArgumentException If the specified object argument
+ * @throws IllegalArgumentException If the specified object argument
* is not an array, or if the specified value cannot be converted
* to the underlying array's component type by an identity or a
* primitive widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to
* the length of the specified array
* @see Array#set
@@ -403,13 +403,13 @@
* @param array the array
* @param index the index into the array
* @param i the new value of the indexed component
- * @exception NullPointerException If the specified object argument
+ * @throws NullPointerException If the specified object argument
* is null
- * @exception IllegalArgumentException If the specified object argument
+ * @throws IllegalArgumentException If the specified object argument
* is not an array, or if the specified value cannot be converted
* to the underlying array's component type by an identity or a
* primitive widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to
* the length of the specified array
* @see Array#set
@@ -423,13 +423,13 @@
* @param array the array
* @param index the index into the array
* @param l the new value of the indexed component
- * @exception NullPointerException If the specified object argument
+ * @throws NullPointerException If the specified object argument
* is null
- * @exception IllegalArgumentException If the specified object argument
+ * @throws IllegalArgumentException If the specified object argument
* is not an array, or if the specified value cannot be converted
* to the underlying array's component type by an identity or a
* primitive widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to
* the length of the specified array
* @see Array#set
@@ -443,13 +443,13 @@
* @param array the array
* @param index the index into the array
* @param f the new value of the indexed component
- * @exception NullPointerException If the specified object argument
+ * @throws NullPointerException If the specified object argument
* is null
- * @exception IllegalArgumentException If the specified object argument
+ * @throws IllegalArgumentException If the specified object argument
* is not an array, or if the specified value cannot be converted
* to the underlying array's component type by an identity or a
* primitive widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to
* the length of the specified array
* @see Array#set
@@ -463,13 +463,13 @@
* @param array the array
* @param index the index into the array
* @param d the new value of the indexed component
- * @exception NullPointerException If the specified object argument
+ * @throws NullPointerException If the specified object argument
* is null
- * @exception IllegalArgumentException If the specified object argument
+ * @throws IllegalArgumentException If the specified object argument
* is not an array, or if the specified value cannot be converted
* to the underlying array's component type by an identity or a
* primitive widening conversion
- * @exception ArrayIndexOutOfBoundsException If the specified {@code index}
+ * @throws ArrayIndexOutOfBoundsException If the specified {@code index}
* argument is negative, or if it is greater than or equal to
* the length of the specified array
* @see Array#set
--- a/src/java.base/share/classes/java/lang/reflect/Constructor.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/reflect/Constructor.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -454,21 +454,21 @@
* @return a new object created by calling the constructor
* this object represents
*
- * @exception IllegalAccessException if this {@code Constructor} object
+ * @throws IllegalAccessException if this {@code Constructor} object
* is enforcing Java language access control and the underlying
* constructor is inaccessible.
- * @exception IllegalArgumentException if the number of actual
+ * @throws IllegalArgumentException if the number of actual
* and formal parameters differ; if an unwrapping
* conversion for primitive arguments fails; or if,
* after possible unwrapping, a parameter value
* cannot be converted to the corresponding formal
* parameter type by a method invocation conversion; if
* this constructor pertains to an enum type.
- * @exception InstantiationException if the class that declares the
+ * @throws InstantiationException if the class that declares the
* underlying constructor represents an abstract class.
- * @exception InvocationTargetException if the underlying constructor
+ * @throws InvocationTargetException if the underlying constructor
* throws an exception.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
*/
@CallerSensitive
--- a/src/java.base/share/classes/java/lang/reflect/Field.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/reflect/Field.java Sat Sep 21 12:10:52 2019 +0200
@@ -393,15 +393,15 @@
* {@code obj}; primitive values are wrapped in an appropriate
* object before being returned
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is inaccessible.
- * @exception IllegalArgumentException if the specified object is not an
+ * @throws IllegalArgumentException if the specified object is not an
* instance of the class or interface declaring the underlying
* field (or a subclass or implementor thereof).
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
*/
@CallerSensitive
@@ -423,18 +423,18 @@
* from
* @return the value of the {@code boolean} field
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is inaccessible.
- * @exception IllegalArgumentException if the specified object is not
+ * @throws IllegalArgumentException if the specified object is not
* an instance of the class or interface declaring the
* underlying field (or a subclass or implementor
* thereof), or if the field value cannot be
* converted to the type {@code boolean} by a
* widening conversion.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
@@ -457,18 +457,18 @@
* from
* @return the value of the {@code byte} field
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is inaccessible.
- * @exception IllegalArgumentException if the specified object is not
+ * @throws IllegalArgumentException if the specified object is not
* an instance of the class or interface declaring the
* underlying field (or a subclass or implementor
* thereof), or if the field value cannot be
* converted to the type {@code byte} by a
* widening conversion.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
@@ -493,18 +493,18 @@
* from
* @return the value of the field converted to type {@code char}
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is inaccessible.
- * @exception IllegalArgumentException if the specified object is not
+ * @throws IllegalArgumentException if the specified object is not
* an instance of the class or interface declaring the
* underlying field (or a subclass or implementor
* thereof), or if the field value cannot be
* converted to the type {@code char} by a
* widening conversion.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
@@ -529,18 +529,18 @@
* from
* @return the value of the field converted to type {@code short}
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is inaccessible.
- * @exception IllegalArgumentException if the specified object is not
+ * @throws IllegalArgumentException if the specified object is not
* an instance of the class or interface declaring the
* underlying field (or a subclass or implementor
* thereof), or if the field value cannot be
* converted to the type {@code short} by a
* widening conversion.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
@@ -565,18 +565,18 @@
* from
* @return the value of the field converted to type {@code int}
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is inaccessible.
- * @exception IllegalArgumentException if the specified object is not
+ * @throws IllegalArgumentException if the specified object is not
* an instance of the class or interface declaring the
* underlying field (or a subclass or implementor
* thereof), or if the field value cannot be
* converted to the type {@code int} by a
* widening conversion.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
@@ -601,18 +601,18 @@
* from
* @return the value of the field converted to type {@code long}
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is inaccessible.
- * @exception IllegalArgumentException if the specified object is not
+ * @throws IllegalArgumentException if the specified object is not
* an instance of the class or interface declaring the
* underlying field (or a subclass or implementor
* thereof), or if the field value cannot be
* converted to the type {@code long} by a
* widening conversion.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
@@ -637,18 +637,18 @@
* from
* @return the value of the field converted to type {@code float}
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is inaccessible.
- * @exception IllegalArgumentException if the specified object is not
+ * @throws IllegalArgumentException if the specified object is not
* an instance of the class or interface declaring the
* underlying field (or a subclass or implementor
* thereof), or if the field value cannot be
* converted to the type {@code float} by a
* widening conversion.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
@@ -673,18 +673,18 @@
* from
* @return the value of the field converted to type {@code double}
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is inaccessible.
- * @exception IllegalArgumentException if the specified object is not
+ * @throws IllegalArgumentException if the specified object is not
* an instance of the class or interface declaring the
* underlying field (or a subclass or implementor
* thereof), or if the field value cannot be
* converted to the type {@code double} by a
* widening conversion.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
@@ -754,16 +754,16 @@
* @param value the new value for the field of {@code obj}
* being modified
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is either inaccessible or final.
- * @exception IllegalArgumentException if the specified object is not an
+ * @throws IllegalArgumentException if the specified object is not an
* instance of the class or interface declaring the underlying
* field (or a subclass or implementor thereof),
* or if an unwrapping conversion fails.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
*/
@CallerSensitive
@@ -789,16 +789,16 @@
* @param z the new value for the field of {@code obj}
* being modified
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is either inaccessible or final.
- * @exception IllegalArgumentException if the specified object is not an
+ * @throws IllegalArgumentException if the specified object is not an
* instance of the class or interface declaring the underlying
* field (or a subclass or implementor thereof),
* or if an unwrapping conversion fails.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
@@ -825,16 +825,16 @@
* @param b the new value for the field of {@code obj}
* being modified
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is either inaccessible or final.
- * @exception IllegalArgumentException if the specified object is not an
+ * @throws IllegalArgumentException if the specified object is not an
* instance of the class or interface declaring the underlying
* field (or a subclass or implementor thereof),
* or if an unwrapping conversion fails.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
@@ -861,16 +861,16 @@
* @param c the new value for the field of {@code obj}
* being modified
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is either inaccessible or final.
- * @exception IllegalArgumentException if the specified object is not an
+ * @throws IllegalArgumentException if the specified object is not an
* instance of the class or interface declaring the underlying
* field (or a subclass or implementor thereof),
* or if an unwrapping conversion fails.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
@@ -897,16 +897,16 @@
* @param s the new value for the field of {@code obj}
* being modified
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is either inaccessible or final.
- * @exception IllegalArgumentException if the specified object is not an
+ * @throws IllegalArgumentException if the specified object is not an
* instance of the class or interface declaring the underlying
* field (or a subclass or implementor thereof),
* or if an unwrapping conversion fails.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
@@ -933,16 +933,16 @@
* @param i the new value for the field of {@code obj}
* being modified
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is either inaccessible or final.
- * @exception IllegalArgumentException if the specified object is not an
+ * @throws IllegalArgumentException if the specified object is not an
* instance of the class or interface declaring the underlying
* field (or a subclass or implementor thereof),
* or if an unwrapping conversion fails.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
@@ -969,16 +969,16 @@
* @param l the new value for the field of {@code obj}
* being modified
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is either inaccessible or final.
- * @exception IllegalArgumentException if the specified object is not an
+ * @throws IllegalArgumentException if the specified object is not an
* instance of the class or interface declaring the underlying
* field (or a subclass or implementor thereof),
* or if an unwrapping conversion fails.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
@@ -1005,16 +1005,16 @@
* @param f the new value for the field of {@code obj}
* being modified
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is either inaccessible or final.
- * @exception IllegalArgumentException if the specified object is not an
+ * @throws IllegalArgumentException if the specified object is not an
* instance of the class or interface declaring the underlying
* field (or a subclass or implementor thereof),
* or if an unwrapping conversion fails.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
@@ -1041,16 +1041,16 @@
* @param d the new value for the field of {@code obj}
* being modified
*
- * @exception IllegalAccessException if this {@code Field} object
+ * @throws IllegalAccessException if this {@code Field} object
* is enforcing Java language access control and the underlying
* field is either inaccessible or final.
- * @exception IllegalArgumentException if the specified object is not an
+ * @throws IllegalArgumentException if the specified object is not an
* instance of the class or interface declaring the underlying
* field (or a subclass or implementor thereof),
* or if an unwrapping conversion fails.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the field is an instance field.
- * @exception ExceptionInInitializerError if the initialization provoked
+ * @throws ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
--- a/src/java.base/share/classes/java/lang/reflect/Method.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/lang/reflect/Method.java Sat Sep 21 12:10:52 2019 +0200
@@ -524,10 +524,10 @@
* this object on {@code obj} with parameters
* {@code args}
*
- * @exception IllegalAccessException if this {@code Method} object
+ * @throws IllegalAccessException if this {@code Method} object
* is enforcing Java language access control and the underlying
* method is inaccessible.
- * @exception IllegalArgumentException if the method is an
+ * @throws IllegalArgumentException if the method is an
* instance method and the specified object argument
* is not an instance of the class or interface
* declaring the underlying method (or of a subclass
@@ -537,11 +537,11 @@
* after possible unwrapping, a parameter value
* cannot be converted to the corresponding formal
* parameter type by a method invocation conversion.
- * @exception InvocationTargetException if the underlying method
+ * @throws InvocationTargetException if the underlying method
* throws an exception.
- * @exception NullPointerException if the specified object is null
+ * @throws NullPointerException if the specified object is null
* and the method is an instance method.
- * @exception ExceptionInInitializerError if the initialization
+ * @throws ExceptionInInitializerError if the initialization
* provoked by this method fails.
*/
@CallerSensitive
--- a/src/java.base/share/classes/java/net/ContentHandler.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/ContentHandler.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -90,7 +90,7 @@
*
* @param urlc a URL connection.
* @return the object read by the {@code ContentHandler}.
- * @exception IOException if an I/O error occurs while reading the object.
+ * @throws IOException if an I/O error occurs while reading the object.
*/
public abstract Object getContent(URLConnection urlc) throws IOException;
@@ -108,7 +108,7 @@
* @return the object read by the {@code ContentHandler} that is
* the first match of the suggested types or
* {@code null} if none of the requested are supported.
- * @exception IOException if an I/O error occurs while reading the object.
+ * @throws IOException if an I/O error occurs while reading the object.
* @since 1.3
*/
@SuppressWarnings("rawtypes")
--- a/src/java.base/share/classes/java/net/DatagramPacket.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/DatagramPacket.java Sat Sep 21 12:10:52 2019 +0200
@@ -245,7 +245,7 @@
* @param length the length of the data
* and/or the length of the buffer used to receive data
*
- * @exception NullPointerException if the argument is null
+ * @throws NullPointerException if the argument is null
*
* @see #getData
* @see #getOffset
@@ -331,7 +331,7 @@
*
* @param buf the buffer to set for this packet.
*
- * @exception NullPointerException if the argument is null.
+ * @throws NullPointerException if the argument is null.
*
* @see #getLength
* @see #getData
@@ -357,7 +357,7 @@
*
* @param length the length to set for this packet.
*
- * @exception IllegalArgumentException if the length is negative
+ * @throws IllegalArgumentException if the length is negative
* of if the length is greater than the packet's data buffer
* length.
*
--- a/src/java.base/share/classes/java/net/DatagramSocket.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/DatagramSocket.java Sat Sep 21 12:10:52 2019 +0200
@@ -188,9 +188,9 @@
* with 0 as its argument to ensure the operation is allowed.
* This could result in a SecurityException.
*
- * @exception SocketException if the socket could not be opened,
+ * @throws SocketException if the socket could not be opened,
* or the socket could not bind to the specified local port.
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkListen} method doesn't allow the operation.
*
* @see SecurityManager#checkListen
@@ -229,9 +229,9 @@
* @param bindaddr local socket address to bind, or {@code null}
* for an unbound socket.
*
- * @exception SocketException if the socket could not be opened,
+ * @throws SocketException if the socket could not be opened,
* or the socket could not bind to the specified local port.
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkListen} method doesn't allow the operation.
*
* @see SecurityManager#checkListen
@@ -263,9 +263,9 @@
* This could result in a SecurityException.
*
* @param port port to use.
- * @exception SocketException if the socket could not be opened,
+ * @throws SocketException if the socket could not be opened,
* or the socket could not bind to the specified local port.
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkListen} method doesn't allow the operation.
*
* @see SecurityManager#checkListen
@@ -290,9 +290,9 @@
* @param port local port to use
* @param laddr local address to bind
*
- * @exception SocketException if the socket could not be opened,
+ * @throws SocketException if the socket could not be opened,
* or the socket could not bind to the specified local port.
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkListen} method doesn't allow the operation.
*
* @see SecurityManager#checkListen
@@ -635,17 +635,17 @@
*
* @param p the {@code DatagramPacket} to be sent.
*
- * @exception IOException if an I/O error occurs.
- * @exception SecurityException if a security manager exists and its
+ * @throws IOException if an I/O error occurs.
+ * @throws SecurityException if a security manager exists and its
* {@code checkMulticast} or {@code checkConnect}
* method doesn't allow the send.
- * @exception PortUnreachableException may be thrown if the socket is connected
+ * @throws PortUnreachableException may be thrown if the socket is connected
* to a currently unreachable destination. Note, there is no
* guarantee that the exception will be thrown.
- * @exception java.nio.channels.IllegalBlockingModeException
+ * @throws java.nio.channels.IllegalBlockingModeException
* if this socket has an associated channel,
* and the channel is in non-blocking mode.
- * @exception IllegalArgumentException if the socket is connected,
+ * @throws IllegalArgumentException if the socket is connected,
* and connected address and packet address differ.
*
* @see java.net.DatagramPacket
@@ -714,13 +714,13 @@
*
* @param p the {@code DatagramPacket} into which to place
* the incoming data.
- * @exception IOException if an I/O error occurs.
- * @exception SocketTimeoutException if setSoTimeout was previously called
+ * @throws IOException if an I/O error occurs.
+ * @throws SocketTimeoutException if setSoTimeout was previously called
* and the timeout has expired.
- * @exception PortUnreachableException may be thrown if the socket is connected
+ * @throws PortUnreachableException may be thrown if the socket is connected
* to a currently unreachable destination. Note, there is no guarantee that the
* exception will be thrown.
- * @exception java.nio.channels.IllegalBlockingModeException
+ * @throws java.nio.channels.IllegalBlockingModeException
* if this socket has an associated channel,
* and the channel is in non-blocking mode.
* @see java.net.DatagramPacket
@@ -951,9 +951,9 @@
* @param size the size to which to set the send buffer
* size. This value must be greater than 0.
*
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as an UDP error.
- * @exception IllegalArgumentException if the value is 0 or is
+ * @throws IllegalArgumentException if the value is 0 or is
* negative.
* @see #getSendBufferSize()
*/
@@ -972,7 +972,7 @@
* buffer size used by the platform for output on this {@code DatagramSocket}.
*
* @return the value of the SO_SNDBUF option for this {@code DatagramSocket}
- * @exception SocketException if there is an error in
+ * @throws SocketException if there is an error in
* the underlying protocol, such as an UDP error.
* @see #setSendBufferSize
*/
@@ -1009,9 +1009,9 @@
* @param size the size to which to set the receive buffer
* size. This value must be greater than 0.
*
- * @exception SocketException if there is an error in
+ * @throws SocketException if there is an error in
* the underlying protocol, such as an UDP error.
- * @exception IllegalArgumentException if the value is 0 or is
+ * @throws IllegalArgumentException if the value is 0 or is
* negative.
* @see #getReceiveBufferSize()
*/
@@ -1030,7 +1030,7 @@
* buffer size used by the platform for input on this {@code DatagramSocket}.
*
* @return the value of the SO_RCVBUF option for this {@code DatagramSocket}
- * @exception SocketException if there is an error in the underlying protocol, such as an UDP error.
+ * @throws SocketException if there is an error in the underlying protocol, such as an UDP error.
* @see #setReceiveBufferSize(int)
*/
public synchronized int getReceiveBufferSize()
@@ -1070,7 +1070,7 @@
* is not defined.
*
* @param on whether to enable or disable the
- * @exception SocketException if an error occurs enabling or
+ * @throws SocketException if an error occurs enabling or
* disabling the {@code SO_REUSEADDR} socket option,
* or the socket is closed.
* @since 1.4
@@ -1093,7 +1093,7 @@
* Tests if SO_REUSEADDR is enabled.
*
* @return a {@code boolean} indicating whether or not SO_REUSEADDR is enabled.
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as an UDP error.
* @since 1.4
* @see #setReuseAddress(boolean)
@@ -1131,7 +1131,7 @@
/**
* Tests if SO_BROADCAST is enabled.
* @return a {@code boolean} indicating whether or not SO_BROADCAST is enabled.
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as an UDP error.
* @since 1.4
* @see #setBroadcast(boolean)
@@ -1290,10 +1290,10 @@
* This could result in a SecurityException.
*
* @param fac the desired factory.
- * @exception IOException if an I/O error occurs when setting the
+ * @throws IOException if an I/O error occurs when setting the
* datagram socket factory.
- * @exception SocketException if the factory is already defined.
- * @exception SecurityException if a security manager exists and its
+ * @throws SocketException if the factory is already defined.
+ * @throws SecurityException if a security manager exists and its
* {@code checkSetFactory} method doesn't allow the operation.
* @see java.net.DatagramSocketImplFactory#createDatagramSocketImpl()
* @see SecurityManager#checkSetFactory
--- a/src/java.base/share/classes/java/net/DatagramSocketImpl.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/DatagramSocketImpl.java Sat Sep 21 12:10:52 2019 +0200
@@ -70,29 +70,29 @@
/**
* Creates a datagram socket.
- * @exception SocketException if there is an error in the
+ * @throws SocketException if there is an error in the
* underlying protocol, such as a TCP error.
*/
protected abstract void create() throws SocketException;
/**
* Binds a datagram socket to a local port and address.
- * @param lport the local port
- * @param laddr the local address
- * @exception SocketException if there is an error in the
- * underlying protocol, such as a TCP error.
+ * @param lport the local port
+ * @param laddr the local address
+ * @throws SocketException if there is an error in the
+ * underlying protocol, such as a TCP error.
*/
protected abstract void bind(int lport, InetAddress laddr) throws SocketException;
/**
* Sends a datagram packet. The packet contains the data and the
* destination address to send the packet to.
- * @param p the packet to be sent.
- * @exception IOException if an I/O exception occurs while sending the
- * datagram packet.
- * @exception PortUnreachableException may be thrown if the socket is connected
- * to a currently unreachable destination. Note, there is no guarantee that
- * the exception will be thrown.
+ * @param p the packet to be sent.
+ * @throws IOException if an I/O exception occurs while sending the
+ * datagram packet.
+ * @throws PortUnreachableException may be thrown if the socket is connected
+ * to a currently unreachable destination. Note, there is no guarantee that
+ * the exception will be thrown.
*/
protected abstract void send(DatagramPacket p) throws IOException;
@@ -107,11 +107,11 @@
* packet has been received for that address, then a subsequent call to
* send or receive may throw a PortUnreachableException.
* Note, there is no guarantee that the exception will be thrown.
- * @param address the remote InetAddress to connect to
- * @param port the remote port number
- * @exception SocketException may be thrown if the socket cannot be
- * connected to the remote destination
- * @since 1.4
+ * @param address the remote InetAddress to connect to
+ * @param port the remote port number
+ * @throws SocketException may be thrown if the socket cannot be
+ * connected to the remote destination
+ * @since 1.4
*/
protected void connect(InetAddress address, int port) throws SocketException {}
@@ -124,12 +124,12 @@
/**
* Peek at the packet to see who it is from. Updates the specified {@code InetAddress}
* to the address which the packet came from.
- * @param i an InetAddress object
- * @return the port number which the packet came from.
- * @exception IOException if an I/O exception occurs
- * @exception PortUnreachableException may be thrown if the socket is connected
- * to a currently unreachable destination. Note, there is no guarantee that the
- * exception will be thrown.
+ * @param i an InetAddress object
+ * @return the port number which the packet came from.
+ * @throws IOException if an I/O exception occurs
+ * @throws PortUnreachableException may be thrown if the socket is connected
+ * to a currently unreachable destination. Note, there is no guarantee that the
+ * exception will be thrown.
*/
protected abstract int peek(InetAddress i) throws IOException;
@@ -138,23 +138,23 @@
* {@code DatagramPacket}. The data is returned,
* but not consumed, so that a subsequent peekData/receive operation
* will see the same data.
- * @param p the Packet Received.
- * @return the port number which the packet came from.
- * @exception IOException if an I/O exception occurs
- * @exception PortUnreachableException may be thrown if the socket is connected
- * to a currently unreachable destination. Note, there is no guarantee that the
- * exception will be thrown.
+ * @param p the Packet Received.
+ * @return the port number which the packet came from.
+ * @throws IOException if an I/O exception occurs
+ * @throws PortUnreachableException may be thrown if the socket is connected
+ * to a currently unreachable destination. Note, there is no guarantee that the
+ * exception will be thrown.
* @since 1.4
*/
protected abstract int peekData(DatagramPacket p) throws IOException;
/**
* Receive the datagram packet.
- * @param p the Packet Received.
- * @exception IOException if an I/O exception occurs
- * while receiving the datagram packet.
- * @exception PortUnreachableException may be thrown if the socket is connected
- * to a currently unreachable destination. Note, there is no guarantee that the
- * exception will be thrown.
+ * @param p the Packet Received.
+ * @throws IOException if an I/O exception occurs
+ * while receiving the datagram packet.
+ * @throws PortUnreachableException may be thrown if the socket is connected
+ * to a currently unreachable destination. Note, there is no guarantee that the
+ * exception will be thrown.
*/
protected abstract void receive(DatagramPacket p) throws IOException;
@@ -163,7 +163,7 @@
* @param ttl a byte specifying the TTL value
*
* @deprecated use setTimeToLive instead.
- * @exception IOException if an I/O exception occurs while setting
+ * @throws IOException if an I/O exception occurs while setting
* the time-to-live option.
* @see #getTTL()
*/
@@ -173,7 +173,7 @@
/**
* Retrieve the TTL (time-to-live) option.
*
- * @exception IOException if an I/O exception occurs
+ * @throws IOException if an I/O exception occurs
* while retrieving the time-to-live option
* @deprecated use getTimeToLive instead.
* @return a byte representing the TTL value
@@ -185,7 +185,7 @@
/**
* Set the TTL (time-to-live) option.
* @param ttl an {@code int} specifying the time-to-live value
- * @exception IOException if an I/O exception occurs
+ * @throws IOException if an I/O exception occurs
* while setting the time-to-live option.
* @see #getTimeToLive()
*/
@@ -193,7 +193,7 @@
/**
* Retrieve the TTL (time-to-live) option.
- * @exception IOException if an I/O exception occurs
+ * @throws IOException if an I/O exception occurs
* while retrieving the time-to-live option
* @return an {@code int} representing the time-to-live value
* @see #setTimeToLive(int)
@@ -203,7 +203,7 @@
/**
* Join the multicast group.
* @param inetaddr multicast address to join.
- * @exception IOException if an I/O exception occurs
+ * @throws IOException if an I/O exception occurs
* while joining the multicast group.
*/
protected abstract void join(InetAddress inetaddr) throws IOException;
@@ -211,7 +211,7 @@
/**
* Leave the multicast group.
* @param inetaddr multicast address to leave.
- * @exception IOException if an I/O exception occurs
+ * @throws IOException if an I/O exception occurs
* while leaving the multicast group.
*/
protected abstract void leave(InetAddress inetaddr) throws IOException;
@@ -272,9 +272,9 @@
* UnsupportedOperationException}. Subclasses should override this method
* with an appropriate implementation.
*
- * @param <T> The type of the socket option value
- * @param name The socket option
- * @param value The value of the socket option. A value of {@code null}
+ * @param <T> The type of the socket option value
+ * @param name The socket option
+ * @param value The value of the socket option. A value of {@code null}
* may be valid for some options.
*
* @throws UnsupportedOperationException if the DatagramSocketImpl does not
@@ -300,8 +300,8 @@
* UnsupportedOperationException}. Subclasses should override this method
* with an appropriate implementation.
*
- * @param <T> The type of the socket option value
- * @param name The socket option
+ * @param <T> The type of the socket option value
+ * @param name The socket option
* @return the socket option
*
* @throws UnsupportedOperationException if the DatagramSocketImpl does not
--- a/src/java.base/share/classes/java/net/HttpURLConnection.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/HttpURLConnection.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -381,7 +381,7 @@
*
* @param set a {@code boolean} indicating whether or not
* to follow HTTP redirects.
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkSetFactory} method doesn't
* allow the operation.
* @see SecurityManager#checkSetFactory
@@ -456,9 +456,9 @@
* method is GET.
*
* @param method the HTTP method
- * @exception ProtocolException if the method cannot be reset or if
+ * @throws ProtocolException if the method cannot be reset or if
* the requested method isn't valid for HTTP.
- * @exception SecurityException if a security manager is set and the
+ * @throws SecurityException if a security manager is set and the
* method is "TRACE", but the "allowHttpTrace"
* NetPermission is not granted.
* @see #getRequestMethod()
@@ -627,7 +627,7 @@
* Returns a {@link SocketPermission} object representing the
* permission necessary to connect to the destination host and port.
*
- * @exception IOException if an error occurs while computing
+ * @throws IOException if an error occurs while computing
* the permission.
*
* @return a {@code SocketPermission} object representing the
--- a/src/java.base/share/classes/java/net/InetAddress.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/InetAddress.java Sat Sep 21 12:10:52 2019 +0200
@@ -1161,7 +1161,7 @@
* @param host the specified host
* @param addr the raw IP address in network byte order
* @return an InetAddress object created from the raw IP address.
- * @exception UnknownHostException if IP address is of illegal length
+ * @throws UnknownHostException if IP address is of illegal length
* @since 1.4
*/
public static InetAddress getByAddress(String host, byte[] addr)
@@ -1216,10 +1216,10 @@
*
* @param host the specified host, or {@code null}.
* @return an IP address for the given host name.
- * @exception UnknownHostException if no IP address for the
+ * @throws UnknownHostException if no IP address for the
* {@code host} could be found, or if a scope_id was specified
* for a global IPv6 address.
- * @exception SecurityException if a security manager exists
+ * @throws SecurityException if a security manager exists
* and its checkConnect method doesn't allow the operation
*/
public static InetAddress getByName(String host)
@@ -1264,10 +1264,10 @@
* @param host the name of the host, or {@code null}.
* @return an array of all the IP addresses for a given host name.
*
- * @exception UnknownHostException if no IP address for the
+ * @throws UnknownHostException if no IP address for the
* {@code host} could be found, or if a scope_id was specified
* for a global IPv6 address.
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkConnect} method doesn't allow the operation.
*
* @see SecurityManager#checkConnect
@@ -1542,7 +1542,7 @@
*
* @param addr the raw IP address in network byte order
* @return an InetAddress object created from the raw IP address.
- * @exception UnknownHostException if IP address is of illegal length
+ * @throws UnknownHostException if IP address is of illegal length
* @since 1.4
*/
public static InetAddress getByAddress(byte[] addr)
@@ -1580,7 +1580,7 @@
*
* @return the address of the local host.
*
- * @exception UnknownHostException if the local host name could not
+ * @throws UnknownHostException if the local host name could not
* be resolved into an address.
*
* @see SecurityManager#checkConnect
--- a/src/java.base/share/classes/java/net/JarURLConnection.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/JarURLConnection.java Sat Sep 21 12:10:52 2019 +0200
@@ -217,7 +217,7 @@
* a connection to an entry of a JAR file, the JAR file object is
* returned
*
- * @exception IOException if an IOException occurs while trying to
+ * @throws IOException if an IOException occurs while trying to
* connect to the JAR file for this connection.
*
* @see #connect
@@ -230,7 +230,7 @@
* @return the manifest object corresponding to the JAR file object
* for this connection.
*
- * @exception IOException if getting the JAR file for this
+ * @throws IOException if getting the JAR file for this
* connection causes an IOException to be thrown.
*
* @see #getJarFile
@@ -247,7 +247,7 @@
* @return the JAR entry object for this connection, or null if
* the JAR URL for this connection points to a JAR file.
*
- * @exception IOException if getting the JAR file for this
+ * @throws IOException if getting the JAR file for this
* connection causes an IOException to be thrown.
*
* @see #getJarFile
@@ -264,7 +264,7 @@
* @return the Attributes object for this connection if the URL
* for it points to a JAR file entry, null otherwise.
*
- * @exception IOException if getting the JAR entry causes an
+ * @throws IOException if getting the JAR entry causes an
* IOException to be thrown.
*
* @see #getJarEntry
@@ -281,7 +281,7 @@
* @return the main Attributes for the JAR file for this
* connection.
*
- * @exception IOException if getting the manifest causes an
+ * @throws IOException if getting the manifest causes an
* IOException to be thrown.
*
* @see #getJarFile
@@ -303,7 +303,7 @@
* @return the Certificate object for this connection if the URL
* for it points to a JAR file entry, null otherwise.
*
- * @exception IOException if getting the JAR entry causes an
+ * @throws IOException if getting the JAR entry causes an
* IOException to be thrown.
*
* @see #getJarEntry
--- a/src/java.base/share/classes/java/net/MulticastSocket.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/MulticastSocket.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -103,9 +103,9 @@
* {@link DatagramSocket#setReuseAddress(boolean)} method is called to
* enable the SO_REUSEADDR socket option.
*
- * @exception IOException if an I/O exception occurs while creating the
+ * @throws IOException if an I/O exception occurs while creating the
* MulticastSocket
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkListen} method doesn't allow the operation.
* @see SecurityManager#checkListen
* @see java.net.DatagramSocket#setReuseAddress(boolean)
@@ -128,13 +128,13 @@
* {@link DatagramSocket#setReuseAddress(boolean)} method is
* called to enable the SO_REUSEADDR socket option.
*
- * @param port port to use
- * @exception IOException if an I/O exception occurs
- * while creating the MulticastSocket
- * @exception SecurityException if a security manager exists and its
- * {@code checkListen} method doesn't allow the operation.
- * @see SecurityManager#checkListen
- * @see java.net.DatagramSocket#setReuseAddress(boolean)
+ * @param port port to use
+ * @throws IOException if an I/O exception occurs
+ * while creating the MulticastSocket
+ * @throws SecurityException if a security manager exists and its
+ * {@code checkListen} method doesn't allow the operation.
+ * @see SecurityManager#checkListen
+ * @see java.net.DatagramSocket#setReuseAddress(boolean)
*/
public MulticastSocket(int port) throws IOException {
this(new InetSocketAddress(port));
@@ -154,14 +154,14 @@
* {@link DatagramSocket#setReuseAddress(boolean)} method is
* called to enable the SO_REUSEADDR socket option.
*
- * @param bindaddr Socket address to bind to, or {@code null} for
- * an unbound socket.
- * @exception IOException if an I/O exception occurs
- * while creating the MulticastSocket
- * @exception SecurityException if a security manager exists and its
- * {@code checkListen} method doesn't allow the operation.
- * @see SecurityManager#checkListen
- * @see java.net.DatagramSocket#setReuseAddress(boolean)
+ * @param bindaddr Socket address to bind to, or {@code null} for
+ * an unbound socket.
+ * @throws IOException if an I/O exception occurs
+ * while creating the MulticastSocket
+ * @throws SecurityException if a security manager exists and its
+ * {@code checkListen} method doesn't allow the operation.
+ * @see SecurityManager#checkListen
+ * @see java.net.DatagramSocket#setReuseAddress(boolean)
*
* @since 1.4
*/
@@ -208,11 +208,11 @@
* <p>The ttl is an <b>unsigned</b> 8-bit quantity, and so <B>must</B> be
* in the range {@code 0 <= ttl <= 0xFF }.
*
- * @param ttl the time-to-live
- * @exception IOException if an I/O exception occurs
- * while setting the default time-to-live value
+ * @param ttl the time-to-live
+ * @throws IOException if an I/O exception occurs
+ * while setting the default time-to-live value
* @deprecated use the setTimeToLive method instead, which uses
- * <b>int</b> instead of <b>byte</b> as the type for ttl.
+ * <b>int</b> instead of <b>byte</b> as the type for ttl.
* @see #getTTL()
*/
@Deprecated
@@ -254,7 +254,7 @@
* Get the default time-to-live for multicast packets sent out on
* the socket.
*
- * @exception IOException if an I/O exception occurs
+ * @throws IOException if an I/O exception occurs
* while getting the default time-to-live value
* @return the default time-to-live value
* @deprecated use the getTimeToLive method instead, which returns
@@ -271,7 +271,7 @@
/**
* Get the default time-to-live for multicast packets sent out on
* the socket.
- * @exception IOException if an I/O exception occurs while
+ * @throws IOException if an I/O exception occurs while
* getting the default time-to-live value
* @return the default time-to-live value
* @see #setTimeToLive(int)
@@ -293,10 +293,10 @@
*
* @param mcastaddr is the multicast address to join
*
- * @exception IOException if there is an error joining, or when the address
+ * @throws IOException if there is an error joining, or when the address
* is not a multicast address, or the platform does not support
* multicasting
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkMulticast} method doesn't allow the join.
*
* @see SecurityManager#checkMulticast(InetAddress)
@@ -339,9 +339,9 @@
* as its argument.
*
* @param mcastaddr is the multicast address to leave
- * @exception IOException if there is an error leaving
+ * @throws IOException if there is an error leaving
* or when the address is not a multicast address.
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkMulticast} method doesn't allow the operation.
*
* @see SecurityManager#checkMulticast(InetAddress)
@@ -378,10 +378,10 @@
* {@link MulticastSocket#setInterface(InetAddress)} or
* {@link MulticastSocket#setNetworkInterface(NetworkInterface)}
*
- * @exception IOException if there is an error joining, or when the address
+ * @throws IOException if there is an error joining, or when the address
* is not a multicast address, or the platform does not support
* multicasting
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkMulticast} method doesn't allow the join.
* @throws IllegalArgumentException if mcastaddr is null or is a
* SocketAddress subclass not supported by this socket
@@ -426,9 +426,9 @@
* to the interface set by
* {@link MulticastSocket#setInterface(InetAddress)} or
* {@link MulticastSocket#setNetworkInterface(NetworkInterface)}
- * @exception IOException if there is an error leaving
+ * @throws IOException if there is an error leaving
* or when the address is not a multicast address.
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkMulticast} method doesn't allow the operation.
* @throws IllegalArgumentException if mcastaddr is null or is a
* SocketAddress subclass not supported by this socket
@@ -465,7 +465,7 @@
* whose behavior would be affected by the value of the
* network interface. Useful for multihomed hosts.
* @param inf the InetAddress
- * @exception SocketException if there is an error in
+ * @throws SocketException if there is an error in
* the underlying protocol, such as a TCP error.
* @see #getInterface()
*/
@@ -489,7 +489,7 @@
* the address of the network interface used for
* multicast packets.
*
- * @exception SocketException if there is an error in
+ * @throws SocketException if there is an error in
* the underlying protocol, such as a TCP error.
*
* @see #setInterface(java.net.InetAddress)
@@ -549,7 +549,7 @@
* sent on this socket.
*
* @param netIf the interface
- * @exception SocketException if there is an error in
+ * @throws SocketException if there is an error in
* the underlying protocol, such as a TCP error.
* @see #getNetworkInterface()
* @since 1.4
@@ -567,7 +567,7 @@
/**
* Get the multicast network interface set.
*
- * @exception SocketException if there is an error in
+ * @throws SocketException if there is an error in
* the underlying protocol, such as a TCP error.
* @return the multicast {@code NetworkInterface} currently set
* @see #setNetworkInterface(NetworkInterface)
@@ -643,9 +643,9 @@
* @param ttl optional time to live for multicast packet.
* default ttl is 1.
*
- * @exception IOException is raised if an error occurs i.e
+ * @throws IOException is raised if an error occurs i.e
* error while setting ttl.
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkMulticast} or {@code checkConnect}
* method doesn't allow the send.
*
--- a/src/java.base/share/classes/java/net/NetworkInterface.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/NetworkInterface.java Sat Sep 21 12:10:52 2019 +0200
@@ -341,7 +341,7 @@
* {@link #getInetAddresses()} to obtain all IP addresses for this node
*
* @return an Enumeration of NetworkInterfaces found on this machine
- * @exception SocketException if an I/O error occurs,
+ * @throws SocketException if an I/O error occurs,
* or if the platform does not have at least one configured
* network interface.
* @see #networkInterfaces()
@@ -371,7 +371,7 @@
* }</pre>
*
* @return a Stream of NetworkInterfaces found on this machine
- * @exception SocketException if an I/O error occurs,
+ * @throws SocketException if an I/O error occurs,
* or if the platform does not have at least one configured
* network interface.
* @since 9
@@ -450,7 +450,7 @@
* Returns whether a network interface is up and running.
*
* @return {@code true} if the interface is up and running.
- * @exception SocketException if an I/O error occurs.
+ * @throws SocketException if an I/O error occurs.
* @since 1.6
*/
@@ -462,7 +462,7 @@
* Returns whether a network interface is a loopback interface.
*
* @return {@code true} if the interface is a loopback interface.
- * @exception SocketException if an I/O error occurs.
+ * @throws SocketException if an I/O error occurs.
* @since 1.6
*/
@@ -477,7 +477,7 @@
*
* @return {@code true} if the interface is a point to point
* interface.
- * @exception SocketException if an I/O error occurs.
+ * @throws SocketException if an I/O error occurs.
* @since 1.6
*/
@@ -489,7 +489,7 @@
* Returns whether a network interface supports multicasting or not.
*
* @return {@code true} if the interface supports Multicasting.
- * @exception SocketException if an I/O error occurs.
+ * @throws SocketException if an I/O error occurs.
* @since 1.6
*/
@@ -508,7 +508,7 @@
* manager is set and the caller does not have the permission
* NetPermission("getNetworkInformation")
*
- * @exception SocketException if an I/O error occurs.
+ * @throws SocketException if an I/O error occurs.
* @since 1.6
*/
public byte[] getHardwareAddress() throws SocketException {
@@ -535,7 +535,7 @@
* Returns the Maximum Transmission Unit (MTU) of this interface.
*
* @return the value of the MTU for that interface.
- * @exception SocketException if an I/O error occurs.
+ * @throws SocketException if an I/O error occurs.
* @since 1.6
*/
public int getMTU() throws SocketException {
--- a/src/java.base/share/classes/java/net/ProxySelector.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/ProxySelector.java Sat Sep 21 12:10:52 2019 +0200
@@ -85,10 +85,10 @@
*
* @throws SecurityException
* If a security manager has been installed and it denies
- * {@link NetPermission}{@code ("getProxySelector")}
- * @see #setDefault(ProxySelector)
- * @return the system-wide {@code ProxySelector}
- * @since 1.5
+ * {@link NetPermission}{@code ("getProxySelector")}
+ * @see #setDefault(ProxySelector)
+ * @return the system-wide {@code ProxySelector}
+ * @since 1.5
*/
public static ProxySelector getDefault() {
SecurityManager sm = System.getSecurityManager();
@@ -108,7 +108,7 @@
*
* @throws SecurityException
* If a security manager has been installed and it denies
- * {@link NetPermission}{@code ("setProxySelector")}
+ * {@link NetPermission}{@code ("setProxySelector")}
*
* @see #getDefault()
* @since 1.5
@@ -163,7 +163,7 @@
*
* @param ioe
* The I/O exception thrown when the connect failed.
- * @throws IllegalArgumentException if either argument is null
+ * @throws IllegalArgumentException if either argument is null
*/
public abstract void connectFailed(URI uri, SocketAddress sa, IOException ioe);
--- a/src/java.base/share/classes/java/net/ServerSocket.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/ServerSocket.java Sat Sep 21 12:10:52 2019 +0200
@@ -83,7 +83,7 @@
/**
* Creates an unbound server socket.
*
- * @exception IOException IO error when opening the socket.
+ * @throws IOException IO error when opening the socket.
* @revised 1.4
*/
public ServerSocket() throws IOException {
@@ -115,11 +115,11 @@
* @param port the port number, or {@code 0} to use a port
* number that is automatically allocated.
*
- * @exception IOException if an I/O error occurs when opening the socket.
- * @exception SecurityException
+ * @throws IOException if an I/O error occurs when opening the socket.
+ * @throws SecurityException
* if a security manager exists and its {@code checkListen}
* method doesn't allow the operation.
- * @exception IllegalArgumentException if the port parameter is outside
+ * @throws IllegalArgumentException if the port parameter is outside
* the specified range of valid port values, which is between
* 0 and 65535, inclusive.
*
@@ -168,11 +168,11 @@
* @param backlog requested maximum length of the queue of incoming
* connections.
*
- * @exception IOException if an I/O error occurs when opening the socket.
- * @exception SecurityException
+ * @throws IOException if an I/O error occurs when opening the socket.
+ * @throws SecurityException
* if a security manager exists and its {@code checkListen}
* method doesn't allow the operation.
- * @exception IllegalArgumentException if the port parameter is outside
+ * @throws IllegalArgumentException if the port parameter is outside
* the specified range of valid port values, which is between
* 0 and 65535, inclusive.
*
@@ -221,7 +221,7 @@
* its {@code checkListen} method doesn't allow the operation.
*
* @throws IOException if an I/O error occurs when opening the socket.
- * @exception IllegalArgumentException if the port parameter is outside
+ * @throws IllegalArgumentException if the port parameter is outside
* the specified range of valid port values, which is between
* 0 and 65535, inclusive.
*
@@ -474,13 +474,13 @@
* of the {@linkplain Socket#setSocketImplFactory(SocketImplFactory)
* client socket implementation factory}, if one has been set.
*
- * @exception IOException if an I/O error occurs when waiting for a
+ * @throws IOException if an I/O error occurs when waiting for a
* connection.
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkAccept} method doesn't allow the operation.
- * @exception SocketTimeoutException if a timeout was previously set with setSoTimeout and
+ * @throws SocketTimeoutException if a timeout was previously set with setSoTimeout and
* the timeout has been reached.
- * @exception java.nio.channels.IllegalBlockingModeException
+ * @throws java.nio.channels.IllegalBlockingModeException
* if this socket has an associated channel, the channel is in
* non-blocking mode, and there is no connection ready to be
* accepted
@@ -674,7 +674,7 @@
* <p> If this socket has an associated channel then the channel is closed
* as well.
*
- * @exception IOException if an I/O error occurs when closing the socket.
+ * @throws IOException if an I/O error occurs when closing the socket.
* @revised 1.4
* @spec JSR-51
*/
@@ -763,7 +763,7 @@
* Retrieve setting for {@link SocketOptions#SO_TIMEOUT SO_TIMEOUT}.
* 0 returns implies that the option is disabled (i.e., timeout of infinity).
* @return the {@link SocketOptions#SO_TIMEOUT SO_TIMEOUT} value
- * @exception IOException if an I/O error occurs
+ * @throws IOException if an I/O error occurs
* @since 1.1
* @see #setSoTimeout(int)
*/
@@ -806,7 +806,7 @@
* is not defined.
*
* @param on whether to enable or disable the socket option
- * @exception SocketException if an error occurs enabling or
+ * @throws SocketException if an error occurs enabling or
* disabling the {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR}
* socket option, or the socket is closed.
* @since 1.4
@@ -826,7 +826,7 @@
*
* @return a {@code boolean} indicating whether or not
* {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR} is enabled.
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
* @since 1.4
* @see #setReuseAddress(boolean)
@@ -885,10 +885,10 @@
* This could result in a SecurityException.
*
* @param fac the desired factory.
- * @exception IOException if an I/O error occurs when setting the
+ * @throws IOException if an I/O error occurs when setting the
* socket factory.
- * @exception SocketException if the factory has already been defined.
- * @exception SecurityException if a security manager exists and its
+ * @throws SocketException if the factory has already been defined.
+ * @throws SecurityException if a security manager exists and its
* {@code checkSetFactory} method doesn't allow the operation.
* @see java.net.SocketImplFactory#createSocketImpl()
* @see SecurityManager#checkSetFactory
@@ -928,13 +928,13 @@
* requested value but the TCP receive window in sockets accepted from
* this ServerSocket will be no larger than 64K bytes.
*
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
*
* @param size the size to which to set the receive buffer
* size. This value must be greater than 0.
*
- * @exception IllegalArgumentException if the
+ * @throws IllegalArgumentException if the
* value is 0 or is negative.
*
* @since 1.4
@@ -958,7 +958,7 @@
* calling {@link Socket#getReceiveBufferSize()}.
* @return the value of the {@link SocketOptions#SO_RCVBUF SO_RCVBUF}
* option for this {@code Socket}.
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
* @see #setReceiveBufferSize(int)
* @since 1.4
--- a/src/java.base/share/classes/java/net/Socket.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/Socket.java Sat Sep 21 12:10:52 2019 +0200
@@ -180,7 +180,7 @@
* @param impl an instance of a <B>SocketImpl</B>
* the subclass wishes to use on the Socket.
*
- * @exception SocketException if there is an error in the underlying protocol,
+ * @throws SocketException if there is an error in the underlying protocol,
* such as a TCP error.
* @since 1.1
*/
@@ -211,13 +211,13 @@
* @param host the host name, or {@code null} for the loopback address.
* @param port the port number.
*
- * @exception UnknownHostException if the IP address of
+ * @throws UnknownHostException if the IP address of
* the host could not be determined.
*
- * @exception IOException if an I/O error occurs when creating the socket.
- * @exception SecurityException if a security manager exists and its
+ * @throws IOException if an I/O error occurs when creating the socket.
+ * @throws SecurityException if a security manager exists and its
* {@code checkConnect} method doesn't allow the operation.
- * @exception IllegalArgumentException if the port parameter is outside
+ * @throws IllegalArgumentException if the port parameter is outside
* the specified range of valid port values, which is between
* 0 and 65535, inclusive.
* @see java.net.Socket#setSocketImplFactory(java.net.SocketImplFactory)
@@ -249,13 +249,13 @@
*
* @param address the IP address.
* @param port the port number.
- * @exception IOException if an I/O error occurs when creating the socket.
- * @exception SecurityException if a security manager exists and its
+ * @throws IOException if an I/O error occurs when creating the socket.
+ * @throws SecurityException if a security manager exists and its
* {@code checkConnect} method doesn't allow the operation.
- * @exception IllegalArgumentException if the port parameter is outside
+ * @throws IllegalArgumentException if the port parameter is outside
* the specified range of valid port values, which is between
* 0 and 65535, inclusive.
- * @exception NullPointerException if {@code address} is null.
+ * @throws NullPointerException if {@code address} is null.
* @see java.net.Socket#setSocketImplFactory(java.net.SocketImplFactory)
* @see java.net.SocketImpl
* @see java.net.SocketImplFactory#createSocketImpl()
@@ -291,12 +291,12 @@
* {@code null} for the {@code anyLocal} address.
* @param localPort the local port the socket is bound to, or
* {@code zero} for a system selected free port.
- * @exception IOException if an I/O error occurs when creating the socket.
- * @exception SecurityException if a security manager exists and its
+ * @throws IOException if an I/O error occurs when creating the socket.
+ * @throws SecurityException if a security manager exists and its
* {@code checkConnect} method doesn't allow the connection
* to the destination, or if its {@code checkListen} method
* doesn't allow the bind to the local port.
- * @exception IllegalArgumentException if the port parameter or localPort
+ * @throws IllegalArgumentException if the port parameter or localPort
* parameter is outside the specified range of valid port values,
* which is between 0 and 65535, inclusive.
* @see SecurityManager#checkConnect
@@ -332,15 +332,15 @@
* {@code null} for the {@code anyLocal} address.
* @param localPort the local port the socket is bound to or
* {@code zero} for a system selected free port.
- * @exception IOException if an I/O error occurs when creating the socket.
- * @exception SecurityException if a security manager exists and its
+ * @throws IOException if an I/O error occurs when creating the socket.
+ * @throws SecurityException if a security manager exists and its
* {@code checkConnect} method doesn't allow the connection
* to the destination, or if its {@code checkListen} method
* doesn't allow the bind to the local port.
- * @exception IllegalArgumentException if the port parameter or localPort
+ * @throws IllegalArgumentException if the port parameter or localPort
* parameter is outside the specified range of valid port values,
* which is between 0 and 65535, inclusive.
- * @exception NullPointerException if {@code address} is null.
+ * @throws NullPointerException if {@code address} is null.
* @see SecurityManager#checkConnect
* @since 1.1
*/
@@ -380,10 +380,10 @@
* @param port the port number.
* @param stream a {@code boolean} indicating whether this is
* a stream socket or a datagram socket.
- * @exception IOException if an I/O error occurs when creating the socket.
- * @exception SecurityException if a security manager exists and its
+ * @throws IOException if an I/O error occurs when creating the socket.
+ * @throws SecurityException if a security manager exists and its
* {@code checkConnect} method doesn't allow the operation.
- * @exception IllegalArgumentException if the port parameter is outside
+ * @throws IllegalArgumentException if the port parameter is outside
* the specified range of valid port values, which is between
* 0 and 65535, inclusive.
* @see java.net.Socket#setSocketImplFactory(java.net.SocketImplFactory)
@@ -423,13 +423,13 @@
* @param port the port number.
* @param stream if {@code true}, create a stream socket;
* otherwise, create a datagram socket.
- * @exception IOException if an I/O error occurs when creating the socket.
- * @exception SecurityException if a security manager exists and its
+ * @throws IOException if an I/O error occurs when creating the socket.
+ * @throws SecurityException if a security manager exists and its
* {@code checkConnect} method doesn't allow the operation.
- * @exception IllegalArgumentException if the port parameter is outside
+ * @throws IllegalArgumentException if the port parameter is outside
* the specified range of valid port values, which is between
* 0 and 65535, inclusive.
- * @exception NullPointerException if {@code host} is null.
+ * @throws NullPointerException if {@code host} is null.
* @see java.net.Socket#setSocketImplFactory(java.net.SocketImplFactory)
* @see java.net.SocketImpl
* @see java.net.SocketImplFactory#createSocketImpl()
@@ -867,7 +867,7 @@
* will close the associated socket.
*
* @return an input stream for reading bytes from this socket.
- * @exception IOException if an I/O error occurs when creating the
+ * @throws IOException if an I/O error occurs when creating the
* input stream, the socket is closed, the socket is
* not connected, or the socket input has been shutdown
* using {@link #shutdownInput()}
@@ -942,7 +942,7 @@
* will close the associated socket.
*
* @return an output stream for writing bytes to this socket.
- * @exception IOException if an I/O error occurs when creating the
+ * @throws IOException if an I/O error occurs when creating the
* output stream or if the socket is not connected.
* @revised 1.4
* @spec JSR-51
@@ -1002,7 +1002,7 @@
* @param on {@code true} to enable TCP_NODELAY,
* {@code false} to disable.
*
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
*
* @since 1.1
@@ -1020,7 +1020,7 @@
*
* @return a {@code boolean} indicating whether or not
* {@link SocketOptions#TCP_NODELAY TCP_NODELAY} is enabled.
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
* @since 1.1
* @see #setTcpNoDelay(boolean)
@@ -1040,9 +1040,9 @@
*
* @param on whether or not to linger on.
* @param linger how long to linger for, if on is true.
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
- * @exception IllegalArgumentException if the linger value is negative.
+ * @throws IllegalArgumentException if the linger value is negative.
* @since 1.1
* @see #getSoLinger()
*/
@@ -1069,7 +1069,7 @@
* The setting only affects socket close.
*
* @return the setting for {@link SocketOptions#SO_LINGER SO_LINGER}.
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
* @since 1.1
* @see #setSoLinger(boolean, int)
@@ -1091,7 +1091,7 @@
* sent after any preceding writes to the socket OutputStream
* and before any future writes to the OutputStream.
* @param data The byte of data to send
- * @exception IOException if there is an error
+ * @throws IOException if there is an error
* sending the data.
* @since 1.4
*/
@@ -1120,7 +1120,7 @@
* {@link SocketOptions#SO_OOBINLINE SO_OOBINLINE},
* {@code false} to disable.
*
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
*
* @since 1.4
@@ -1139,7 +1139,7 @@
* @return a {@code boolean} indicating whether or not
* {@link SocketOptions#SO_OOBINLINE SO_OOBINLINE} is enabled.
*
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
* @since 1.4
* @see #setOOBInline(boolean)
@@ -1182,7 +1182,7 @@
* 0 returns implies that the option is disabled (i.e., timeout of infinity).
*
* @return the setting for {@link SocketOptions#SO_TIMEOUT SO_TIMEOUT}
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
*
* @since 1.1
@@ -1211,13 +1211,13 @@
* applications that want to verify what size the buffers were set to
* should call {@link #getSendBufferSize()}.
*
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
*
* @param size the size to which to set the send buffer
* size. This value must be greater than 0.
*
- * @exception IllegalArgumentException if the
+ * @throws IllegalArgumentException if the
* value is 0 or is negative.
*
* @see #getSendBufferSize()
@@ -1240,7 +1240,7 @@
* @return the value of the {@link SocketOptions#SO_SNDBUF SO_SNDBUF}
* option for this {@code Socket}.
*
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
*
* @see #setSendBufferSize(int)
@@ -1287,10 +1287,10 @@
* @param size the size to which to set the receive buffer
* size. This value must be greater than 0.
*
- * @exception IllegalArgumentException if the value is 0 or is
+ * @throws IllegalArgumentException if the value is 0 or is
* negative.
*
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
*
* @see #getReceiveBufferSize()
@@ -1314,7 +1314,7 @@
*
* @return the value of the {@link SocketOptions#SO_RCVBUF SO_RCVBUF}
* option for this {@code Socket}.
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
* @see #setReceiveBufferSize(int)
* @since 1.2
@@ -1335,7 +1335,7 @@
* Enable/disable {@link SocketOptions#SO_KEEPALIVE SO_KEEPALIVE}.
*
* @param on whether or not to have socket keep alive turned on.
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
* @since 1.3
* @see #getKeepAlive()
@@ -1351,7 +1351,7 @@
*
* @return a {@code boolean} indicating whether or not
* {@link SocketOptions#SO_KEEPALIVE SO_KEEPALIVE} is enabled.
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
* @since 1.3
* @see #setKeepAlive(boolean)
@@ -1470,7 +1470,7 @@
* is not defined.
*
* @param on whether to enable or disable the socket option
- * @exception SocketException if an error occurs enabling or
+ * @throws SocketException if an error occurs enabling or
* disabling the {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR}
* socket option, or the socket is closed.
* @since 1.4
@@ -1490,7 +1490,7 @@
*
* @return a {@code boolean} indicating whether or not
* {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR} is enabled.
- * @exception SocketException if there is an error
+ * @throws SocketException if there is an error
* in the underlying protocol, such as a TCP error.
* @since 1.4
* @see #setReuseAddress(boolean)
@@ -1518,7 +1518,7 @@
* <p> If this socket has an associated channel then the channel is closed
* as well.
*
- * @exception IOException if an I/O error occurs when closing this socket.
+ * @throws IOException if an I/O error occurs when closing this socket.
* @revised 1.4
* @spec JSR-51
* @see #isClosed
@@ -1542,7 +1542,7 @@
* socket, the stream's {@code available} method will return 0, and its
* {@code read} methods will return {@code -1} (end of stream).
*
- * @exception IOException if an I/O error occurs when shutting down this
+ * @throws IOException if an I/O error occurs when shutting down this
* socket.
*
* @since 1.3
@@ -1572,7 +1572,7 @@
* shutdownOutput() on the socket, the stream will throw
* an IOException.
*
- * @exception IOException if an I/O error occurs when shutting down this
+ * @throws IOException if an I/O error occurs when shutting down this
* socket.
*
* @since 1.3
@@ -1700,10 +1700,10 @@
* This could result in a SecurityException.
*
* @param fac the desired factory.
- * @exception IOException if an I/O error occurs when setting the
+ * @throws IOException if an I/O error occurs when setting the
* socket factory.
- * @exception SocketException if the factory is already defined.
- * @exception SecurityException if a security manager exists and its
+ * @throws SocketException if the factory is already defined.
+ * @throws SecurityException if a security manager exists and its
* {@code checkSetFactory} method doesn't allow the operation.
* @see java.net.SocketImplFactory#createSocketImpl()
* @see SecurityManager#checkSetFactory
--- a/src/java.base/share/classes/java/net/SocketImpl.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/SocketImpl.java Sat Sep 21 12:10:52 2019 +0200
@@ -114,7 +114,7 @@
*
* @param stream if {@code true}, create a stream socket;
* otherwise, create a datagram socket.
- * @exception IOException if an I/O error occurs while creating the
+ * @throws IOException if an I/O error occurs while creating the
* socket.
*/
protected abstract void create(boolean stream) throws IOException;
@@ -124,7 +124,7 @@
*
* @param host the name of the remote host.
* @param port the port number.
- * @exception IOException if an I/O error occurs when connecting to the
+ * @throws IOException if an I/O error occurs when connecting to the
* remote host.
*/
protected abstract void connect(String host, int port) throws IOException;
@@ -134,7 +134,7 @@
*
* @param address the IP address of the remote host.
* @param port the port number.
- * @exception IOException if an I/O error occurs when attempting a
+ * @throws IOException if an I/O error occurs when attempting a
* connection.
*/
protected abstract void connect(InetAddress address, int port) throws IOException;
@@ -146,7 +146,7 @@
*
* @param address the Socket address of the remote host.
* @param timeout the timeout value, in milliseconds, or zero for no timeout.
- * @exception IOException if an I/O error occurs when attempting a
+ * @throws IOException if an I/O error occurs when attempting a
* connection.
* @since 1.4
*/
@@ -157,7 +157,7 @@
*
* @param host an IP address that belongs to a local interface.
* @param port the port number.
- * @exception IOException if an I/O error occurs when binding this socket.
+ * @throws IOException if an I/O error occurs when binding this socket.
*/
protected abstract void bind(InetAddress host, int port) throws IOException;
@@ -168,7 +168,7 @@
* connection is refused.
*
* @param backlog the maximum length of the queue.
- * @exception IOException if an I/O error occurs when creating the queue.
+ * @throws IOException if an I/O error occurs when creating the queue.
*/
protected abstract void listen(int backlog) throws IOException;
@@ -176,7 +176,7 @@
* Accepts a connection.
*
* @param s the accepted connection.
- * @exception IOException if an I/O error occurs when accepting the
+ * @throws IOException if an I/O error occurs when accepting the
* connection.
*/
protected abstract void accept(SocketImpl s) throws IOException;
@@ -185,7 +185,7 @@
* Returns an input stream for this socket.
*
* @return a stream for reading from this socket.
- * @exception IOException if an I/O error occurs when creating the
+ * @throws IOException if an I/O error occurs when creating the
* input stream.
*/
protected abstract InputStream getInputStream() throws IOException;
@@ -194,7 +194,7 @@
* Returns an output stream for this socket.
*
* @return an output stream for writing to this socket.
- * @exception IOException if an I/O error occurs when creating the
+ * @throws IOException if an I/O error occurs when creating the
* output stream.
*/
protected abstract OutputStream getOutputStream() throws IOException;
@@ -205,7 +205,7 @@
*
* @return the number of bytes that can be read from this socket
* without blocking.
- * @exception IOException if an I/O error occurs when determining the
+ * @throws IOException if an I/O error occurs when determining the
* number of bytes available.
*/
protected abstract int available() throws IOException;
@@ -213,7 +213,7 @@
/**
* Closes this socket.
*
- * @exception IOException if an I/O error occurs when closing this socket.
+ * @throws IOException if an I/O error occurs when closing this socket.
*/
protected abstract void close() throws IOException;
@@ -235,7 +235,7 @@
* socket, the stream's {@code available} method will return 0, and its
* {@code read} methods will return {@code -1} (end of stream).
*
- * @exception IOException if an I/O error occurs when shutting down this
+ * @throws IOException if an I/O error occurs when shutting down this
* socket.
* @see java.net.Socket#shutdownOutput()
* @see java.net.Socket#close()
@@ -255,7 +255,7 @@
* shutdownOutput() on the socket, the stream will throw
* an IOException.
*
- * @exception IOException if an I/O error occurs when shutting down this
+ * @throws IOException if an I/O error occurs when shutting down this
* socket.
* @see java.net.Socket#shutdownInput()
* @see java.net.Socket#close()
@@ -313,7 +313,7 @@
* Send one byte of urgent data on the socket.
* The byte to be sent is the low eight bits of the parameter
* @param data The byte of data to send
- * @exception IOException if there is an error
+ * @throws IOException if there is an error
* sending the data.
* @since 1.4
*/
--- a/src/java.base/share/classes/java/net/SocketInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/SocketInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -86,7 +86,7 @@
* @param timeout the read timeout in ms
* @return the actual number of bytes read, -1 is
* returned when the end of the stream is reached.
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
private native int socketRead0(FileDescriptor fd,
byte b[], int off, int len,
@@ -104,7 +104,7 @@
* @param timeout the read timeout in ms
* @return the actual number of bytes read, -1 is
* returned when the end of the stream is reached.
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
private int socketRead(FileDescriptor fd,
byte b[], int off, int len,
@@ -118,7 +118,7 @@
* @param b the buffer into which the data is read
* @return the actual number of bytes read, -1 is
* returned when the end of the stream is reached.
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
public int read(byte b[]) throws IOException {
return read(b, 0, b.length);
@@ -132,7 +132,7 @@
* @param length the maximum number of bytes read
* @return the actual number of bytes read, -1 is
* returned when the end of the stream is reached.
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
public int read(byte b[], int off, int length) throws IOException {
return read(b, off, length, impl.getTimeout());
@@ -206,7 +206,7 @@
* Skips n bytes of input.
* @param numbytes the number of bytes to skip
* @return the actual number of bytes skipped.
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
public long skip(long numbytes) throws IOException {
if (numbytes <= 0) {
--- a/src/java.base/share/classes/java/net/SocketOptions.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/SocketOptions.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -81,11 +81,11 @@
* Throws SocketException if the option is unrecognized,
* the socket is closed, or some low-level error occurred
* <BR>
- * @param optID identifies the option
- * @param value the parameter of the socket option
+ * @param optID identifies the option
+ * @param value the parameter of the socket option
* @throws SocketException if the option is unrecognized,
- * the socket is closed, or some low-level error occurred
- * @see #getOption(int)
+ * the socket is closed, or some low-level error occurred
+ * @see #getOption(int)
*/
public void
setOption(int optID, Object value) throws SocketException;
@@ -116,7 +116,7 @@
* }
* </PRE>
*
- * @param optID an {@code int} identifying the option to fetch
+ * @param optID an {@code int} identifying the option to fetch
* @return the value of the option
* @throws SocketException if the socket is closed
* @throws SocketException if <I>optID</I> is unknown along the
--- a/src/java.base/share/classes/java/net/SocketOutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/SocketOutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -79,7 +79,7 @@
* @param b the data to be written
* @param off the start offset in the data
* @param len the number of bytes that are written
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
private native void socketWrite0(FileDescriptor fd, byte[] b, int off,
int len) throws IOException;
@@ -90,7 +90,7 @@
* @param b the data to be written
* @param off the start offset in the data
* @param len the number of bytes that are written
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
private void socketWrite(byte b[], int off, int len) throws IOException {
@@ -120,7 +120,7 @@
/**
* Writes a byte to the socket.
* @param b the data to be written
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
public void write(int b) throws IOException {
temp[0] = (byte)b;
@@ -130,7 +130,7 @@
/**
* Writes the contents of the buffer <i>b</i> to the socket.
* @param b the data to be written
- * @exception SocketException If an I/O error has occurred.
+ * @throws SocketException If an I/O error has occurred.
*/
public void write(byte b[]) throws IOException {
socketWrite(b, 0, b.length);
@@ -142,7 +142,7 @@
* @param b the data to be written
* @param off the start offset in the data
* @param len the number of bytes that are written
- * @exception SocketException If an I/O error has occurred.
+ * @throws SocketException If an I/O error has occurred.
*/
public void write(byte b[], int off, int len) throws IOException {
socketWrite(b, off, len);
--- a/src/java.base/share/classes/java/net/SocketPermission.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/SocketPermission.java Sat Sep 21 12:10:52 2019 +0200
@@ -1361,10 +1361,10 @@
*
* @param permission the Permission object to add.
*
- * @exception IllegalArgumentException - if the permission is not a
+ * @throws IllegalArgumentException - if the permission is not a
* SocketPermission
*
- * @exception SecurityException - if this SocketPermissionCollection object
+ * @throws SecurityException - if this SocketPermissionCollection object
* has been marked readonly
*/
@Override
--- a/src/java.base/share/classes/java/net/URL.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/URL.java Sat Sep 21 12:10:52 2019 +0200
@@ -349,7 +349,7 @@
* @param host the name of the host.
* @param port the port number on the host.
* @param file the file on the host
- * @exception MalformedURLException if an unknown protocol or the port
+ * @throws MalformedURLException if an unknown protocol or the port
* is a negative number other than -1
* @see java.lang.System#getProperty(java.lang.String)
* @see java.net.URL#setURLStreamHandlerFactory(
@@ -378,7 +378,7 @@
* @param protocol the name of the protocol to use.
* @param host the name of the host.
* @param file the file on the host.
- * @exception MalformedURLException if an unknown protocol is specified.
+ * @throws MalformedURLException if an unknown protocol is specified.
* @see java.net.URL#URL(java.lang.String, java.lang.String,
* int, java.lang.String)
*/
@@ -412,9 +412,9 @@
* @param port the port number on the host.
* @param file the file on the host
* @param handler the stream handler for the URL.
- * @exception MalformedURLException if an unknown protocol or the port
+ * @throws MalformedURLException if an unknown protocol or the port
is a negative number other than -1
- * @exception SecurityException
+ * @throws SecurityException
* if a security manager exists and its
* {@code checkPermission} method doesn't allow
* specifying a stream handler explicitly.
@@ -494,7 +494,7 @@
* constructor with a {@code null} first argument.
*
* @param spec the {@code String} to parse as a URL.
- * @exception MalformedURLException if no protocol is specified, or an
+ * @throws MalformedURLException if no protocol is specified, or an
* unknown protocol is found, or {@code spec} is {@code null},
* or the parsed URL fails to comply with the specific syntax
* of the associated protocol.
@@ -543,7 +543,7 @@
*
* @param context the context in which to parse the specification.
* @param spec the {@code String} to parse as a URL.
- * @exception MalformedURLException if no protocol is specified, or an
+ * @throws MalformedURLException if no protocol is specified, or an
* unknown protocol is found, or {@code spec} is {@code null},
* or the parsed URL fails to comply with the specific syntax
* of the associated protocol.
@@ -565,11 +565,11 @@
* @param context the context in which to parse the specification.
* @param spec the {@code String} to parse as a URL.
* @param handler the stream handler for the URL.
- * @exception MalformedURLException if no protocol is specified, or an
+ * @throws MalformedURLException if no protocol is specified, or an
* unknown protocol is found, or {@code spec} is {@code null},
* or the parsed URL fails to comply with the specific syntax
* of the associated protocol.
- * @exception SecurityException
+ * @throws SecurityException
* if a security manager exists and its
* {@code checkPermission} method doesn't allow
* specifying a stream handler.
@@ -1042,7 +1042,7 @@
* to a URI. However, some URLs that are not strictly in compliance
* can not be converted to a URI.
*
- * @exception URISyntaxException if this URL is not formatted strictly according to
+ * @throws URISyntaxException if this URL is not formatted strictly according to
* RFC2396 and cannot be converted to a URI.
*
* @return a URI instance equivalent to this URL.
@@ -1082,7 +1082,7 @@
*
* @return a {@link java.net.URLConnection URLConnection} linking
* to the URL.
- * @exception IOException if an I/O exception occurs.
+ * @throws IOException if an I/O exception occurs.
* @see java.net.URL#URL(java.lang.String, java.lang.String,
* int, java.lang.String)
*/
@@ -1103,13 +1103,13 @@
* will be made. If direct connection is desired,
* Proxy.NO_PROXY should be specified.
* @return a {@code URLConnection} to the URL.
- * @exception IOException if an I/O exception occurs.
- * @exception SecurityException if a security manager is present
+ * @throws IOException if an I/O exception occurs.
+ * @throws SecurityException if a security manager is present
* and the caller doesn't have permission to connect
* to the proxy.
- * @exception IllegalArgumentException will be thrown if proxy is null,
+ * @throws IllegalArgumentException will be thrown if proxy is null,
* or proxy has the wrong type
- * @exception UnsupportedOperationException if the subclass that
+ * @throws UnsupportedOperationException if the subclass that
* implements the protocol handler doesn't support
* this method.
* @see java.net.URL#URL(java.lang.String, java.lang.String,
@@ -1148,7 +1148,7 @@
* </pre></blockquote>
*
* @return an input stream for reading from the URL connection.
- * @exception IOException if an I/O exception occurs.
+ * @throws IOException if an I/O exception occurs.
* @see java.net.URL#openConnection()
* @see java.net.URLConnection#getInputStream()
*/
@@ -1163,7 +1163,7 @@
* </pre></blockquote>
*
* @return the contents of this URL.
- * @exception IOException if an I/O exception occurs.
+ * @throws IOException if an I/O exception occurs.
* @see java.net.URLConnection#getContent()
*/
public final Object getContent() throws java.io.IOException {
@@ -1180,7 +1180,7 @@
* @return the content object of this URL that is the first match of
* the types specified in the classes array.
* null if none of the requested types are supported.
- * @exception IOException if an I/O exception occurs.
+ * @throws IOException if an I/O exception occurs.
* @see java.net.URLConnection#getContent(Class[])
* @since 1.3
*/
@@ -1208,8 +1208,8 @@
* This could result in a SecurityException.
*
* @param fac the desired factory.
- * @exception Error if the application has already set a factory.
- * @exception SecurityException if a security manager exists and its
+ * @throws Error if the application has already set a factory.
+ * @throws SecurityException if a security manager exists and its
* {@code checkSetFactory} method doesn't allow
* the operation.
* @see java.net.URL#URL(java.lang.String, java.lang.String,
--- a/src/java.base/share/classes/java/net/URLClassLoader.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/URLClassLoader.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -99,12 +99,12 @@
* calls the security manager's {@code checkCreateClassLoader} method
* to ensure creation of a class loader is allowed.
*
- * @param urls the URLs from which to load classes and resources
- * @param parent the parent class loader for delegation
- * @exception SecurityException if a security manager exists and its
+ * @param urls the URLs from which to load classes and resources
+ * @param parent the parent class loader for delegation
+ * @throws SecurityException if a security manager exists and its
* {@code checkCreateClassLoader} method doesn't allow
* creation of a class loader.
- * @exception NullPointerException if {@code urls} or any of its
+ * @throws NullPointerException if {@code urls} or any of its
* elements is {@code null}.
* @see SecurityManager#checkCreateClassLoader
*/
@@ -134,12 +134,12 @@
* calls the security manager's {@code checkCreateClassLoader} method
* to ensure creation of a class loader is allowed.
*
- * @param urls the URLs from which to load classes and resources
+ * @param urls the URLs from which to load classes and resources
*
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkCreateClassLoader} method doesn't allow
* creation of a class loader.
- * @exception NullPointerException if {@code urls} or any of its
+ * @throws NullPointerException if {@code urls} or any of its
* elements is {@code null}.
* @see SecurityManager#checkCreateClassLoader
*/
@@ -166,15 +166,15 @@
* calls the security manager's {@code checkCreateClassLoader} method
* to ensure creation of a class loader is allowed.
*
- * @param urls the URLs from which to load classes and resources
- * @param parent the parent class loader for delegation
- * @param factory the URLStreamHandlerFactory to use when creating URLs
+ * @param urls the URLs from which to load classes and resources
+ * @param parent the parent class loader for delegation
+ * @param factory the URLStreamHandlerFactory to use when creating URLs
*
- * @exception SecurityException if a security manager exists and its
- * {@code checkCreateClassLoader} method doesn't allow
- * creation of a class loader.
- * @exception NullPointerException if {@code urls} or any of its
- * elements is {@code null}.
+ * @throws SecurityException if a security manager exists and its
+ * {@code checkCreateClassLoader} method doesn't allow
+ * creation of a class loader.
+ * @throws NullPointerException if {@code urls} or any of its
+ * elements is {@code null}.
* @see SecurityManager#checkCreateClassLoader
*/
public URLClassLoader(URL[] urls, ClassLoader parent,
@@ -326,13 +326,13 @@
* and errors are not caught. Calling close on an already closed
* loader has no effect.
*
- * @exception IOException if closing any file opened by this class loader
+ * @throws IOException if closing any file opened by this class loader
* resulted in an IOException. Any such exceptions are caught internally.
* If only one is caught, then it is re-thrown. If more than one exception
* is caught, then the second and following exceptions are added
* as suppressed exceptions of the first one caught, which is then re-thrown.
*
- * @exception SecurityException if a security manager is set, and it denies
+ * @throws SecurityException if a security manager is set, and it denies
* {@link RuntimePermission}{@code ("closeClassLoader")}
*
* @since 1.7
@@ -401,11 +401,11 @@
* path. Any URLs referring to JAR files are loaded and opened as needed
* until the class is found.
*
- * @param name the name of the class
- * @return the resulting class
- * @exception ClassNotFoundException if the class could not be found,
+ * @param name the name of the class
+ * @return the resulting class
+ * @throws ClassNotFoundException if the class could not be found,
* or if the loader is closed.
- * @exception NullPointerException if {@code name} is {@code null}.
+ * @throws NullPointerException if {@code name} is {@code null}.
*/
protected Class<?> findClass(final String name)
throws ClassNotFoundException
@@ -628,7 +628,7 @@
* on the URL search path having the specified name.
*
* @param name the resource name
- * @exception IOException if an I/O exception occurs
+ * @throws IOException if an I/O exception occurs
* @return An {@code Enumeration} of {@code URL}s.
* If the loader is closed, the Enumeration contains no elements.
*/
@@ -696,7 +696,7 @@
* If the protocol is not "file", then permission
* to connect to and accept connections from the URL's host is granted.
* @param codesource the codesource
- * @exception NullPointerException if {@code codesource} is {@code null}.
+ * @throws NullPointerException if {@code codesource} is {@code null}.
* @return the permissions granted to the codesource
*/
protected PermissionCollection getPermissions(CodeSource codesource)
@@ -776,7 +776,7 @@
*
* @param urls the URLs to search for classes and resources
* @param parent the parent class loader for delegation
- * @exception NullPointerException if {@code urls} or any of its
+ * @throws NullPointerException if {@code urls} or any of its
* elements is {@code null}.
* @return the resulting class loader
*/
@@ -803,7 +803,7 @@
* loading the class.
*
* @param urls the URLs to search for classes and resources
- * @exception NullPointerException if {@code urls} or any of its
+ * @throws NullPointerException if {@code urls} or any of its
* elements is {@code null}.
* @return the resulting class loader
*/
--- a/src/java.base/share/classes/java/net/URLConnection.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/URLConnection.java Sat Sep 21 12:10:52 2019 +0200
@@ -327,7 +327,7 @@
* This could result in a SecurityException.
*
* @param map the FileNameMap to be set
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkSetFactory} method doesn't allow the operation.
* @see SecurityManager#checkSetFactory
* @see #getFileNameMap()
@@ -357,7 +357,7 @@
*
* @throws SocketTimeoutException if the timeout expires before
* the connection can be established
- * @exception IOException if an I/O error occurs while opening the
+ * @throws IOException if an I/O error occurs while opening the
* connection.
* @see java.net.URLConnection#connected
* @see #getConnectTimeout()
@@ -734,9 +734,9 @@
* @return the object fetched. The {@code instanceof} operator
* should be used to determine the specific kind of object
* returned.
- * @exception IOException if an I/O error occurs while
+ * @throws IOException if an I/O error occurs while
* getting the content.
- * @exception UnknownServiceException if the protocol does not support
+ * @throws UnknownServiceException if the protocol does not support
* the content type.
* @see java.net.ContentHandlerFactory#createContentHandler(java.lang.String)
* @see java.net.URLConnection#getContentType()
@@ -760,9 +760,9 @@
* the requested types are supported.
* The {@code instanceof} operator should be used to
* determine the specific kind of object returned.
- * @exception IOException if an I/O error occurs while
+ * @throws IOException if an I/O error occurs while
* getting the content.
- * @exception UnknownServiceException if the protocol does not support
+ * @throws UnknownServiceException if the protocol does not support
* the content type.
* @see java.net.URLConnection#getContent()
* @see java.net.ContentHandlerFactory#createContentHandler(java.lang.String)
@@ -813,7 +813,7 @@
* necessary to make the connection represented by this
* URLConnection.
*
- * @exception IOException if the computation of the permission
+ * @throws IOException if the computation of the permission
* requires network or file I/O and an exception occurs while
* computing it.
*/
@@ -829,9 +829,9 @@
* is available for read.
*
* @return an input stream that reads from this open connection.
- * @exception IOException if an I/O error occurs while
+ * @throws IOException if an I/O error occurs while
* creating the input stream.
- * @exception UnknownServiceException if the protocol does not support
+ * @throws UnknownServiceException if the protocol does not support
* input.
* @see #setReadTimeout(int)
* @see #getReadTimeout()
@@ -844,9 +844,9 @@
* Returns an output stream that writes to this connection.
*
* @return an output stream that writes to this connection.
- * @exception IOException if an I/O error occurs while
+ * @throws IOException if an I/O error occurs while
* creating the output stream.
- * @exception UnknownServiceException if the protocol does not support
+ * @throws UnknownServiceException if the protocol does not support
* output.
*/
public OutputStream getOutputStream() throws IOException {
@@ -1250,8 +1250,8 @@
* This could result in a SecurityException.
*
* @param fac the desired factory.
- * @exception Error if the factory has already been defined.
- * @exception SecurityException if a security manager exists and its
+ * @throws Error if the factory has already been defined.
+ * @throws SecurityException if a security manager exists and its
* {@code checkSetFactory} method doesn't allow the operation.
* @see java.net.ContentHandlerFactory
* @see java.net.URLConnection#getContent()
@@ -1479,7 +1479,7 @@
* @param is an input stream that supports marks.
* @return a guess at the content type, or {@code null} if none
* can be determined.
- * @exception IOException if an I/O error occurs while reading the
+ * @throws IOException if an I/O error occurs while reading the
* input stream.
* @see java.io.InputStream#mark(int)
* @see java.io.InputStream#markSupported()
--- a/src/java.base/share/classes/java/net/URLPermission.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/URLPermission.java Sat Sep 21 12:10:52 2019 +0200
@@ -175,7 +175,7 @@
*
* @param actions the actions string
*
- * @exception IllegalArgumentException if url is invalid or if actions contains white-space.
+ * @throws IllegalArgumentException if url is invalid or if actions contains white-space.
*/
public URLPermission(String url, String actions) {
super(normalize(url));
--- a/src/java.base/share/classes/java/net/URLStreamHandler.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/net/URLStreamHandler.java Sat Sep 21 12:10:52 2019 +0200
@@ -66,7 +66,7 @@
*
* @param u the URL that this connects to.
* @return a {@code URLConnection} object for the {@code URL}.
- * @exception IOException if an I/O error occurs while opening the
+ * @throws IOException if an I/O error occurs while opening the
* connection.
*/
protected abstract URLConnection openConnection(URL u) throws IOException;
@@ -91,11 +91,11 @@
* If direct connection is desired, Proxy.NO_PROXY
* should be specified.
* @return a {@code URLConnection} object for the {@code URL}.
- * @exception IOException if an I/O error occurs while opening the
+ * @throws IOException if an I/O error occurs while opening the
* connection.
- * @exception IllegalArgumentException if either u or p is null,
+ * @throws IllegalArgumentException if either u or p is null,
* or p has the wrong type.
- * @exception UnsupportedOperationException if the subclass that
+ * @throws UnsupportedOperationException if the subclass that
* implements the protocol doesn't support this method.
* @since 1.5
*/
@@ -510,7 +510,7 @@
* @param path the path component of the URL.
* @param query the query part for the URL.
* @param ref the reference.
- * @exception SecurityException if the protocol handler of the URL is
+ * @throws SecurityException if the protocol handler of the URL is
* different from this one
* @since 1.3
*/
@@ -539,7 +539,7 @@
* @param port the port on the remote machine.
* @param file the file.
* @param ref the reference.
- * @exception SecurityException if the protocol handler of the URL is
+ * @throws SecurityException if the protocol handler of the URL is
* different from this one
* @deprecated Use setURL(URL, String, String, int, String, String, String,
* String);
--- a/src/java.base/share/classes/java/nio/Buffer.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/nio/Buffer.java Sat Sep 21 12:10:52 2019 +0200
@@ -249,8 +249,8 @@
* @param capacity
* The new buffer's capacity, in $type$s
*
- * @throws IllegalArgumentException
- * If the {@code capacity} is a negative integer
+ * @throws IllegalArgumentException
+ * If the {@code capacity} is a negative integer
*/
static IllegalArgumentException createCapacityException(int capacity) {
assert capacity < 0 : "capacity expected to be negative";
--- a/src/java.base/share/classes/java/nio/MappedByteBuffer.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/nio/MappedByteBuffer.java Sat Sep 21 12:10:52 2019 +0200
@@ -322,14 +322,14 @@
* mapping modes. This method may or may not have an effect for
* implementation-specific mapping modes. </p>
*
- * @param index
- * The index of the first byte in the buffer region that is
- * to be written back to storage; must be non-negative
- * and less than limit()
+ * @param index
+ * The index of the first byte in the buffer region that is
+ * to be written back to storage; must be non-negative
+ * and less than limit()
*
- * @param length
- * The length of the region in bytes; must be non-negative
- * and no larger than limit() - index
+ * @param length
+ * The length of the region in bytes; must be non-negative
+ * and no larger than limit() - index
*
* @throws IndexOutOfBoundsException
* if the preconditions on the index and length do not
--- a/src/java.base/share/classes/java/nio/file/package-info.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/nio/file/package-info.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,7 +34,7 @@
* platform default provider, or to construct other provider implementations. </p>
*
* <h2><a id="links">Symbolic Links</a></h2>
- * <p> Many operating systems and file systems support for <em>symbolic links</em>.
+ * <p> Many operating systems and file systems have support for <em>symbolic links</em>.
* A symbolic link is a special file that serves as a reference to another file.
* For the most part, symbolic links are transparent to applications and
* operations on symbolic links are automatically redirected to the <em>target</em>
@@ -62,8 +62,8 @@
* to caching performed by the underlying operating system and delays induced by
* network-filesystem protocols. This is true regardless of the language in which
* these other programs are written, and whether they are running on the same machine
- * or on some other machine. The exact nature of any such inconsistencies are
- * system-dependent and are therefore unspecified. </p>
+ * or on some other machine. The exact nature of any such inconsistencies is
+ * system-dependent and therefore unspecified. </p>
*
* <h2><a id="integrity">Synchronized I/O File Integrity</a></h2>
* <p> The {@link java.nio.file.StandardOpenOption#SYNC SYNC} and {@link
--- a/src/java.base/share/classes/java/security/AccessControlContext.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/AccessControlContext.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -162,10 +162,10 @@
* @param combiner the {@code DomainCombiner} to be associated
* with the provided {@code AccessControlContext}.
*
- * @exception NullPointerException if the provided
+ * @throws NullPointerException if the provided
* {@code context} is {@code null}.
*
- * @exception SecurityException if a security manager is installed and the
+ * @throws SecurityException if a security manager is installed and the
* caller does not have the "createAccessControlContext"
* {@link SecurityPermission}
* @since 1.3
@@ -344,7 +344,7 @@
* {@code AccessControlContext}, or {@code null}
* if there is none.
*
- * @exception SecurityException if a security manager is installed and
+ * @throws SecurityException if a security manager is installed and
* the caller does not have the "getDomainCombiner"
* {@link SecurityPermission}
* @since 1.3
@@ -383,10 +383,10 @@
*
* @param perm the requested permission.
*
- * @exception AccessControlException if the specified permission
+ * @throws AccessControlException if the specified permission
* is not permitted, based on the current security policy and the
* context encapsulated by this object.
- * @exception NullPointerException if the permission to check for is null.
+ * @throws NullPointerException if the permission to check for is null.
*/
public void checkPermission(Permission perm)
throws AccessControlException
--- a/src/java.base/share/classes/java/security/AccessController.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/AccessController.java Sat Sep 21 12:10:52 2019 +0200
@@ -298,7 +298,7 @@
*
* @return the value returned by the action's {@code run} method.
*
- * @exception NullPointerException if the action is {@code null}
+ * @throws NullPointerException if the action is {@code null}
*
* @see #doPrivileged(PrivilegedAction,AccessControlContext)
* @see #doPrivileged(PrivilegedExceptionAction)
@@ -330,7 +330,7 @@
*
* @return the value returned by the action's {@code run} method.
*
- * @exception NullPointerException if the action is {@code null}
+ * @throws NullPointerException if the action is {@code null}
*
* @see #doPrivileged(PrivilegedAction)
* @see java.security.DomainCombiner
@@ -377,7 +377,7 @@
*
* @return the value returned by the action's {@code run} method.
*
- * @exception NullPointerException if the action is {@code null}
+ * @throws NullPointerException if the action is {@code null}
*
* @see #doPrivileged(PrivilegedAction)
* @see #doPrivileged(PrivilegedExceptionAction,AccessControlContext)
@@ -534,9 +534,9 @@
*
* @return the value returned by the action's {@code run} method
*
- * @exception PrivilegedActionException if the specified action's
+ * @throws PrivilegedActionException if the specified action's
* {@code run} method threw a <i>checked</i> exception
- * @exception NullPointerException if the action is {@code null}
+ * @throws NullPointerException if the action is {@code null}
*
* @see #doPrivileged(PrivilegedAction)
* @see #doPrivileged(PrivilegedExceptionAction,AccessControlContext)
@@ -577,9 +577,9 @@
*
* @return the value returned by the action's {@code run} method
*
- * @exception PrivilegedActionException if the specified action's
+ * @throws PrivilegedActionException if the specified action's
* {@code run} method threw a <i>checked</i> exception
- * @exception NullPointerException if the action is {@code null}
+ * @throws NullPointerException if the action is {@code null}
*
* @see #doPrivileged(PrivilegedAction)
* @see #doPrivileged(PrivilegedExceptionAction,AccessControlContext)
@@ -672,9 +672,9 @@
*
* @return the value returned by the action's {@code run} method
*
- * @exception PrivilegedActionException if the specified action's
+ * @throws PrivilegedActionException if the specified action's
* {@code run} method threw a <i>checked</i> exception
- * @exception NullPointerException if the action is {@code null}
+ * @throws NullPointerException if the action is {@code null}
*
* @see #doPrivileged(PrivilegedAction)
* @see #doPrivileged(PrivilegedAction,AccessControlContext)
@@ -990,9 +990,9 @@
*
* @param perm the requested permission.
*
- * @exception AccessControlException if the specified permission
+ * @throws AccessControlException if the specified permission
* is not permitted, based on the current security policy.
- * @exception NullPointerException if the specified permission
+ * @throws NullPointerException if the specified permission
* is {@code null} and is checked based on the
* security policy currently in effect.
*/
--- a/src/java.base/share/classes/java/security/AlgorithmParameterGenerator.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/AlgorithmParameterGenerator.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -334,7 +334,7 @@
*
* @param genParamSpec the set of algorithm-specific parameter generation values.
*
- * @exception InvalidAlgorithmParameterException if the given parameter
+ * @throws InvalidAlgorithmParameterException if the given parameter
* generation values are inappropriate for this parameter generator.
*/
public final void init(AlgorithmParameterSpec genParamSpec)
@@ -349,7 +349,7 @@
* @param genParamSpec the set of algorithm-specific parameter generation values.
* @param random the source of randomness.
*
- * @exception InvalidAlgorithmParameterException if the given parameter
+ * @throws InvalidAlgorithmParameterException if the given parameter
* generation values are inappropriate for this parameter generator.
*/
public final void init(AlgorithmParameterSpec genParamSpec,
--- a/src/java.base/share/classes/java/security/AlgorithmParameterGeneratorSpi.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/AlgorithmParameterGeneratorSpi.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -76,7 +76,7 @@
* @param genParamSpec the set of algorithm-specific parameter generation values.
* @param random the source of randomness.
*
- * @exception InvalidAlgorithmParameterException if the given parameter
+ * @throws InvalidAlgorithmParameterException if the given parameter
* generation values are inappropriate for this parameter generator.
*/
protected abstract void engineInit(AlgorithmParameterSpec genParamSpec,
--- a/src/java.base/share/classes/java/security/AlgorithmParameters.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/AlgorithmParameters.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -282,7 +282,7 @@
*
* @param paramSpec the parameter specification.
*
- * @exception InvalidParameterSpecException if the given parameter
+ * @throws InvalidParameterSpecException if the given parameter
* specification is inappropriate for the initialization of this parameter
* object, or if this parameter object has already been initialized.
*/
@@ -303,7 +303,7 @@
*
* @param params the encoded parameters.
*
- * @exception IOException on decoding errors, or if this parameter object
+ * @throws IOException on decoding errors, or if this parameter object
* has already been initialized.
*/
public final void init(byte[] params) throws IOException {
@@ -325,7 +325,7 @@
*
* @param format the name of the decoding scheme.
*
- * @exception IOException on decoding errors, or if this parameter object
+ * @throws IOException on decoding errors, or if this parameter object
* has already been initialized.
*/
public final void init(byte[] params, String format) throws IOException {
@@ -349,7 +349,7 @@
*
* @return the parameter specification.
*
- * @exception InvalidParameterSpecException if the requested parameter
+ * @throws InvalidParameterSpecException if the requested parameter
* specification is inappropriate for this parameter object, or if this
* parameter object has not been initialized.
*/
@@ -370,7 +370,7 @@
*
* @return the parameters encoded using their primary encoding format.
*
- * @exception IOException on encoding errors, or if this parameter object
+ * @throws IOException on encoding errors, or if this parameter object
* has not been initialized.
*/
public final byte[] getEncoded() throws IOException
@@ -392,7 +392,7 @@
*
* @return the parameters encoded using the specified encoding scheme.
*
- * @exception IOException on encoding errors, or if this parameter object
+ * @throws IOException on encoding errors, or if this parameter object
* has not been initialized.
*/
public final byte[] getEncoded(String format) throws IOException
--- a/src/java.base/share/classes/java/security/AlgorithmParametersSpi.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/AlgorithmParametersSpi.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -56,7 +56,7 @@
*
* @param paramSpec the parameter specification.
*
- * @exception InvalidParameterSpecException if the given parameter
+ * @throws InvalidParameterSpecException if the given parameter
* specification is inappropriate for the initialization of this parameter
* object.
*/
@@ -71,7 +71,7 @@
*
* @param params the encoded parameters.
*
- * @exception IOException on decoding errors
+ * @throws IOException on decoding errors
*/
protected abstract void engineInit(byte[] params)
throws IOException;
@@ -88,7 +88,7 @@
*
* @param format the name of the decoding format.
*
- * @exception IOException on decoding errors
+ * @throws IOException on decoding errors
*/
protected abstract void engineInit(byte[] params, String format)
throws IOException;
@@ -109,7 +109,7 @@
*
* @return the parameter specification.
*
- * @exception InvalidParameterSpecException if the requested parameter
+ * @throws InvalidParameterSpecException if the requested parameter
* specification is inappropriate for this parameter object.
*/
protected abstract
@@ -124,7 +124,7 @@
*
* @return the parameters encoded using their primary encoding format.
*
- * @exception IOException on encoding errors.
+ * @throws IOException on encoding errors.
*/
protected abstract byte[] engineGetEncoded() throws IOException;
@@ -139,7 +139,7 @@
*
* @return the parameters encoded using the specified encoding scheme.
*
- * @exception IOException on encoding errors.
+ * @throws IOException on encoding errors.
*/
protected abstract byte[] engineGetEncoded(String format)
throws IOException;
--- a/src/java.base/share/classes/java/security/AllPermission.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/AllPermission.java Sat Sep 21 12:10:52 2019 +0200
@@ -178,10 +178,10 @@
*
* @param permission the Permission object to add.
*
- * @exception IllegalArgumentException - if the permission is not a
+ * @throws IllegalArgumentException - if the permission is not a
* AllPermission
*
- * @exception SecurityException - if this AllPermissionCollection object
+ * @throws SecurityException - if this AllPermissionCollection object
* has been marked readonly
*/
--- a/src/java.base/share/classes/java/security/BasicPermission.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/BasicPermission.java Sat Sep 21 12:10:52 2019 +0200
@@ -349,13 +349,13 @@
*
* @param permission the Permission object to add.
*
- * @exception IllegalArgumentException - if the permission is not a
+ * @throws IllegalArgumentException - if the permission is not a
* BasicPermission, or if
* the permission is not of the
* same Class as the other
* permissions in this collection.
*
- * @exception SecurityException - if this BasicPermissionCollection object
+ * @throws SecurityException - if this BasicPermissionCollection object
* has been marked readonly
*/
@Override
--- a/src/java.base/share/classes/java/security/Certificate.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/Certificate.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -101,10 +101,10 @@
* @param stream the output stream to which to encode the
* certificate.
*
- * @exception KeyException if the certificate is not
+ * @throws KeyException if the certificate is not
* properly initialized, or data is missing, etc.
*
- * @exception IOException if a stream exception occurs while
+ * @throws IOException if a stream exception occurs while
* trying to output the encoded certificate to the output stream.
*
* @see #decode
@@ -121,10 +121,10 @@
* @param stream the input stream from which to fetch the data
* being decoded.
*
- * @exception KeyException if the certificate is not properly initialized,
+ * @throws KeyException if the certificate is not properly initialized,
* or data is missing, etc.
*
- * @exception IOException if an exception occurs while trying to input
+ * @throws IOException if an exception occurs while trying to input
* the encoded certificate from the input stream.
*
* @see #encode
--- a/src/java.base/share/classes/java/security/DigestInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/DigestInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -117,7 +117,7 @@
*
* @return the byte read.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*
* @see MessageDigest#update(byte)
*/
@@ -154,7 +154,7 @@
* read because the end of the stream had already been reached when
* the call was made.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*
* @see MessageDigest#update(byte[], int, int)
*/
--- a/src/java.base/share/classes/java/security/DigestOutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/DigestOutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -108,7 +108,7 @@
* @param b the byte to be used for updating and writing to the
* output stream.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*
* @see MessageDigest#update(byte)
*/
@@ -138,7 +138,7 @@
* @param len the number of bytes of data to be updated and written
* from {@code b}, starting at offset {@code off}.
*
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*
* @see MessageDigest#update(byte[], int, int)
*/
--- a/src/java.base/share/classes/java/security/DomainLoadStoreParameter.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/DomainLoadStoreParameter.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -125,7 +125,7 @@
* been specified by properties in the domain configuration data.
* It is cloned to prevent subsequent modification.
*
- * @exception NullPointerException if {@code configuration} or
+ * @throws NullPointerException if {@code configuration} or
* {@code protectionParams} is {@code null}
*/
public DomainLoadStoreParameter(URI configuration,
--- a/src/java.base/share/classes/java/security/Guard.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/Guard.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -50,7 +50,7 @@
*
* @param object the object being protected by the guard.
*
- * @exception SecurityException if access is denied.
+ * @throws SecurityException if access is denied.
*
*/
void checkGuard(Object object) throws SecurityException;
--- a/src/java.base/share/classes/java/security/GuardedObject.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/GuardedObject.java Sat Sep 21 12:10:52 2019 +0200
@@ -77,7 +77,7 @@
*
* @return the guarded object.
*
- * @exception SecurityException if access to the guarded object is
+ * @throws SecurityException if access to the guarded object is
* denied.
*/
public Object getObject()
--- a/src/java.base/share/classes/java/security/Identity.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/Identity.java Sat Sep 21 12:10:52 2019 +0200
@@ -113,7 +113,7 @@
* @param name the identity name.
* @param scope the scope of the identity.
*
- * @exception KeyManagementException if there is already an identity
+ * @throws KeyManagementException if there is already an identity
* with the same name in the scope.
*/
public Identity(String name, IdentityScope scope) throws
@@ -173,10 +173,10 @@
*
* @param key the public key for this identity.
*
- * @exception KeyManagementException if another identity in the
+ * @throws KeyManagementException if another identity in the
* identity's scope has the same public key, or if another exception occurs.
*
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkSecurityAccess} method doesn't allow
* setting the public key.
*
@@ -200,7 +200,7 @@
*
* @param info the information string.
*
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkSecurityAccess} method doesn't allow
* setting the information string.
*
@@ -235,11 +235,11 @@
*
* @param certificate the certificate to be added.
*
- * @exception KeyManagementException if the certificate is not valid,
+ * @throws KeyManagementException if the certificate is not valid,
* if the public key in the certificate being added conflicts with
* this identity's public key, or if another exception occurs.
*
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkSecurityAccess} method doesn't allow
* adding a certificate.
*
@@ -286,10 +286,10 @@
*
* @param certificate the certificate to be removed.
*
- * @exception KeyManagementException if the certificate is
+ * @throws KeyManagementException if the certificate is
* missing, or if another exception occurs.
*
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkSecurityAccess} method doesn't allow
* removing a certificate.
*
@@ -400,7 +400,7 @@
* @return information about this identity, such as its name and the
* name of its scope (if any).
*
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkSecurityAccess} method doesn't allow
* returning a string describing this identity.
*
@@ -430,7 +430,7 @@
* is true, then this method returns more information than that
* provided by the {@code toString} method without any arguments.
*
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkSecurityAccess} method doesn't allow
* returning a string describing this identity.
*
--- a/src/java.base/share/classes/java/security/IdentityScope.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/IdentityScope.java Sat Sep 21 12:10:52 2019 +0200
@@ -121,7 +121,7 @@
* @param name the scope name.
* @param scope the scope for the new identity scope.
*
- * @exception KeyManagementException if there is already an identity
+ * @throws KeyManagementException if there is already an identity
* with the same name in the scope.
*/
public IdentityScope(String name, IdentityScope scope)
@@ -155,7 +155,7 @@
*
* @param scope the scope to set.
*
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkSecurityAccess} method doesn't allow
* setting the identity scope.
*
@@ -214,7 +214,7 @@
*
* @param identity the identity to be added.
*
- * @exception KeyManagementException if the identity is not
+ * @throws KeyManagementException if the identity is not
* valid, a name conflict occurs, another identity has the same
* public key as the identity being added, or another exception
* occurs. */
@@ -226,7 +226,7 @@
*
* @param identity the identity to be removed.
*
- * @exception KeyManagementException if the identity is missing,
+ * @throws KeyManagementException if the identity is missing,
* or another exception occurs.
*/
public abstract void removeIdentity(Identity identity)
--- a/src/java.base/share/classes/java/security/KeyFactory.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/KeyFactory.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -337,7 +337,7 @@
*
* @return the public key.
*
- * @exception InvalidKeySpecException if the given key specification
+ * @throws InvalidKeySpecException if the given key specification
* is inappropriate for this key factory to produce a public key.
*/
public final PublicKey generatePublic(KeySpec keySpec)
@@ -375,7 +375,7 @@
*
* @return the private key.
*
- * @exception InvalidKeySpecException if the given key specification
+ * @throws InvalidKeySpecException if the given key specification
* is inappropriate for this key factory to produce a private key.
*/
public final PrivateKey generatePrivate(KeySpec keySpec)
@@ -423,7 +423,7 @@
* @return the underlying key specification (key material) in an instance
* of the requested specification class.
*
- * @exception InvalidKeySpecException if the requested key specification is
+ * @throws InvalidKeySpecException if the requested key specification is
* inappropriate for the given key, or the given key cannot be processed
* (e.g., the given key has an unrecognized algorithm or format).
*/
@@ -462,7 +462,7 @@
*
* @return the translated key.
*
- * @exception InvalidKeyException if the given key cannot be processed
+ * @throws InvalidKeyException if the given key cannot be processed
* by this key factory.
*/
public final Key translateKey(Key key) throws InvalidKeyException {
--- a/src/java.base/share/classes/java/security/KeyFactorySpi.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/KeyFactorySpi.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -77,7 +77,7 @@
*
* @return the public key.
*
- * @exception InvalidKeySpecException if the given key specification
+ * @throws InvalidKeySpecException if the given key specification
* is inappropriate for this key factory to produce a public key.
*/
protected abstract PublicKey engineGeneratePublic(KeySpec keySpec)
@@ -91,7 +91,7 @@
*
* @return the private key.
*
- * @exception InvalidKeySpecException if the given key specification
+ * @throws InvalidKeySpecException if the given key specification
* is inappropriate for this key factory to produce a private key.
*/
protected abstract PrivateKey engineGeneratePrivate(KeySpec keySpec)
@@ -116,7 +116,7 @@
* @return the underlying key specification (key material) in an instance
* of the requested specification class.
- * @exception InvalidKeySpecException if the requested key specification is
+ * @throws InvalidKeySpecException if the requested key specification is
* inappropriate for the given key, or the given key cannot be dealt with
* (e.g., the given key has an unrecognized format).
*/
@@ -133,7 +133,7 @@
*
* @return the translated key.
*
- * @exception InvalidKeyException if the given key cannot be processed
+ * @throws InvalidKeyException if the given key cannot be processed
* by this key factory.
*/
protected abstract Key engineTranslateKey(Key key)
--- a/src/java.base/share/classes/java/security/KeyPairGenerator.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/KeyPairGenerator.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -369,7 +369,7 @@
* algorithm-specific metric, such as modulus length, specified in
* number of bits.
*
- * @exception InvalidParameterException if the {@code keysize} is not
+ * @throws InvalidParameterException if the {@code keysize} is not
* supported by this KeyPairGenerator object.
*/
public void initialize(int keysize) {
@@ -385,7 +385,7 @@
* number of bits.
* @param random the source of randomness.
*
- * @exception InvalidParameterException if the {@code keysize} is not
+ * @throws InvalidParameterException if the {@code keysize} is not
* supported by this KeyPairGenerator object.
*
* @since 1.2
@@ -426,7 +426,7 @@
*
* @param params the parameter set used to generate the keys.
*
- * @exception InvalidAlgorithmParameterException if the given parameters
+ * @throws InvalidAlgorithmParameterException if the given parameters
* are inappropriate for this key pair generator.
*
* @since 1.2
@@ -454,7 +454,7 @@
* @param params the parameter set used to generate the keys.
* @param random the source of randomness.
*
- * @exception InvalidAlgorithmParameterException if the given parameters
+ * @throws InvalidAlgorithmParameterException if the given parameters
* are inappropriate for this key pair generator.
*
* @since 1.2
--- a/src/java.base/share/classes/java/security/KeyPairGeneratorSpi.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/KeyPairGeneratorSpi.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -68,7 +68,7 @@
*
* @param random the source of randomness for this generator.
*
- * @exception InvalidParameterException if the {@code keysize} is not
+ * @throws InvalidParameterException if the {@code keysize} is not
* supported by this KeyPairGeneratorSpi object.
*/
public abstract void initialize(int keysize, SecureRandom random);
@@ -90,7 +90,7 @@
*
* @param random the source of randomness for this generator.
*
- * @exception InvalidAlgorithmParameterException if the given parameters
+ * @throws InvalidAlgorithmParameterException if the given parameters
* are inappropriate for this key pair generator.
*
* @since 1.2
--- a/src/java.base/share/classes/java/security/KeyRep.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/KeyRep.java Sat Sep 21 12:10:52 2019 +0200
@@ -121,7 +121,7 @@
* @param encoded the encoded bytes returned from
* {@code Key.getEncoded()}
*
- * @exception NullPointerException
+ * @throws NullPointerException
* if type is {@code null},
* if algorithm is {@code null},
* if format is {@code null},
@@ -158,7 +158,7 @@
*
* @return the resolved Key object
*
- * @exception ObjectStreamException if the Type/format
+ * @throws ObjectStreamException if the Type/format
* combination is unrecognized, if the algorithm, key format, or
* encoded key bytes are unrecognized/invalid, of if the
* resolution of the key fails for any reason
--- a/src/java.base/share/classes/java/security/KeyStore.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/KeyStore.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -296,7 +296,7 @@
* for information about standard encryption algorithm names.
* @param protectionParameters the encryption algorithm parameter
* specification, which may be {@code null}
- * @exception NullPointerException if {@code protectionAlgorithm} is
+ * @throws NullPointerException if {@code protectionAlgorithm} is
* {@code null}
*
* @since 1.8
@@ -346,7 +346,7 @@
*
* @see #destroy()
* @return the password, which may be {@code null}
- * @exception IllegalStateException if the password has
+ * @throws IllegalStateException if the password has
* been cleared (destroyed)
*/
public synchronized char[] getPassword() {
@@ -359,7 +359,7 @@
/**
* Clears the password.
*
- * @exception DestroyFailedException if this method was unable
+ * @throws DestroyFailedException if this method was unable
* to clear the password
*/
public synchronized void destroy() throws DestroyFailedException {
@@ -394,7 +394,7 @@
* CallbackHandler.
*
* @param handler the CallbackHandler
- * @exception NullPointerException if handler is null
+ * @throws NullPointerException if handler is null
*/
public CallbackHandlerProtection(CallbackHandler handler) {
if (handler == null) {
@@ -485,10 +485,10 @@
* {@code Certificate} at index 0
* corresponding to the private key.
*
- * @exception NullPointerException if
+ * @throws NullPointerException if
* {@code privateKey} or {@code chain}
* is {@code null}
- * @exception IllegalArgumentException if the specified chain has a
+ * @throws IllegalArgumentException if the specified chain has a
* length of 0, if the specified chain does not contain
* {@code Certificate}s of the same type,
* or if the {@code PrivateKey} algorithm
@@ -514,9 +514,9 @@
* corresponding to the private key.
* @param attributes the attributes
*
- * @exception NullPointerException if {@code privateKey}, {@code chain}
+ * @throws NullPointerException if {@code privateKey}, {@code chain}
* or {@code attributes} is {@code null}
- * @exception IllegalArgumentException if the specified chain has a
+ * @throws IllegalArgumentException if the specified chain has a
* length of 0, if the specified chain does not contain
* {@code Certificate}s of the same type,
* or if the {@code PrivateKey} algorithm
@@ -651,7 +651,7 @@
*
* @param secretKey the {@code SecretKey}
*
- * @exception NullPointerException if {@code secretKey}
+ * @throws NullPointerException if {@code secretKey}
* is {@code null}
*/
public SecretKeyEntry(SecretKey secretKey) {
@@ -672,7 +672,7 @@
* @param secretKey the {@code SecretKey}
* @param attributes the attributes
*
- * @exception NullPointerException if {@code secretKey} or
+ * @throws NullPointerException if {@code secretKey} or
* {@code attributes} is {@code null}
*
* @since 1.8
@@ -734,7 +734,7 @@
*
* @param trustedCert the trusted {@code Certificate}
*
- * @exception NullPointerException if
+ * @throws NullPointerException if
* {@code trustedCert} is {@code null}
*/
public TrustedCertificateEntry(Certificate trustedCert) {
@@ -755,7 +755,7 @@
* @param trustedCert the trusted {@code Certificate}
* @param attributes the attributes
*
- * @exception NullPointerException if {@code trustedCert} or
+ * @throws NullPointerException if {@code trustedCert} or
* {@code attributes} is {@code null}
*
* @since 1.8
@@ -1033,11 +1033,11 @@
* @return the requested key, or null if the given alias does not exist
* or does not identify a key-related entry.
*
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded).
- * @exception NoSuchAlgorithmException if the algorithm for recovering the
+ * @throws NoSuchAlgorithmException if the algorithm for recovering the
* key cannot be found
- * @exception UnrecoverableKeyException if the key cannot be recovered
+ * @throws UnrecoverableKeyException if the key cannot be recovered
* (e.g., the given password is wrong).
*/
public final Key getKey(String alias, char[] password)
@@ -1063,7 +1063,7 @@
* followed by zero or more certificate authorities), or null if the given alias
* does not exist or does not contain a certificate chain
*
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded).
*/
public final Certificate[] getCertificateChain(String alias)
@@ -1096,7 +1096,7 @@
* @return the certificate, or null if the given alias does not exist or
* does not contain a certificate.
*
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded).
*/
public final Certificate getCertificate(String alias)
@@ -1116,7 +1116,7 @@
* @return the creation date of this entry, or null if the given alias does
* not exist
*
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded).
*/
public final Date getCreationDate(String alias)
@@ -1147,7 +1147,7 @@
* key (only required if the given key is of type
* {@code java.security.PrivateKey}).
*
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded), the given key cannot be protected, or this operation fails
* for some other reason
*/
@@ -1188,7 +1188,7 @@
* key (only useful if the protected key is of type
* {@code java.security.PrivateKey}).
*
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded), or if this operation fails for some other reason.
*/
public final void setKeyEntry(String alias, byte[] key,
@@ -1214,7 +1214,7 @@
* @param alias the alias name
* @param cert the certificate
*
- * @exception KeyStoreException if the keystore has not been initialized,
+ * @throws KeyStoreException if the keystore has not been initialized,
* or the given alias already exists and does not identify an
* entry containing a trusted certificate,
* or this operation fails for some other reason.
@@ -1233,7 +1233,7 @@
*
* @param alias the alias name
*
- * @exception KeyStoreException if the keystore has not been initialized,
+ * @throws KeyStoreException if the keystore has not been initialized,
* or if the entry cannot be removed.
*/
public final void deleteEntry(String alias)
@@ -1250,7 +1250,7 @@
*
* @return enumeration of the alias names
*
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded).
*/
public final Enumeration<String> aliases()
@@ -1269,7 +1269,7 @@
*
* @return true if the alias exists, false otherwise
*
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded).
*/
public final boolean containsAlias(String alias)
@@ -1286,7 +1286,7 @@
*
* @return the number of entries in this keystore
*
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded).
*/
public final int size()
@@ -1309,7 +1309,7 @@
* @return true if the entry identified by the given alias is a
* key-related entry, false otherwise.
*
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded).
*/
public final boolean isKeyEntry(String alias)
@@ -1332,7 +1332,7 @@
* @return true if the entry identified by the given alias contains a
* trusted certificate, false otherwise.
*
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded).
*/
public final boolean isCertificateEntry(String alias)
@@ -1367,7 +1367,7 @@
* @return the alias name of the first entry with a matching certificate,
* or null if no such entry exists in this keystore.
*
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded).
*/
public final String getCertificateAlias(Certificate cert)
@@ -1386,12 +1386,12 @@
* @param stream the output stream to which this keystore is written.
* @param password the password to generate the keystore integrity check
*
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded).
- * @exception IOException if there was an I/O problem with data
- * @exception NoSuchAlgorithmException if the appropriate data integrity
+ * @throws IOException if there was an I/O problem with data
+ * @throws NoSuchAlgorithmException if the appropriate data integrity
* algorithm could not be found
- * @exception CertificateException if any of the certificates included in
+ * @throws CertificateException if any of the certificates included in
* the keystore data could not be stored
*/
public final void store(OutputStream stream, char[] password)
@@ -1411,15 +1411,15 @@
* that specifies how to store the keystore,
* which may be {@code null}
*
- * @exception IllegalArgumentException if the given
+ * @throws IllegalArgumentException if the given
* {@code LoadStoreParameter}
* input is not recognized
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded)
- * @exception IOException if there was an I/O problem with data
- * @exception NoSuchAlgorithmException if the appropriate data integrity
+ * @throws IOException if there was an I/O problem with data
+ * @throws NoSuchAlgorithmException if the appropriate data integrity
* algorithm could not be found
- * @exception CertificateException if any of the certificates included in
+ * @throws CertificateException if any of the certificates included in
* the keystore data could not be stored
*
* @since 1.5
@@ -1455,15 +1455,15 @@
* the keystore, the password used to unlock the keystore,
* or {@code null}
*
- * @exception IOException if there is an I/O or format problem with the
+ * @throws IOException if there is an I/O or format problem with the
* keystore data, if a password is required but not given,
* or if the given password was incorrect. If the error is due to a
* wrong password, the {@link Throwable#getCause cause} of the
* {@code IOException} should be an
* {@code UnrecoverableKeyException}
- * @exception NoSuchAlgorithmException if the algorithm used to check
+ * @throws NoSuchAlgorithmException if the algorithm used to check
* the integrity of the keystore cannot be found
- * @exception CertificateException if any of the certificates in the
+ * @throws CertificateException if any of the certificates in the
* keystore could not be loaded
*/
public final void load(InputStream stream, char[] password)
@@ -1483,18 +1483,18 @@
* that specifies how to load the keystore,
* which may be {@code null}
*
- * @exception IllegalArgumentException if the given
+ * @throws IllegalArgumentException if the given
* {@code LoadStoreParameter}
* input is not recognized
- * @exception IOException if there is an I/O or format problem with the
+ * @throws IOException if there is an I/O or format problem with the
* keystore data. If the error is due to an incorrect
* {@code ProtectionParameter} (e.g. wrong password)
* the {@link Throwable#getCause cause} of the
* {@code IOException} should be an
* {@code UnrecoverableKeyException}
- * @exception NoSuchAlgorithmException if the algorithm used to check
+ * @throws NoSuchAlgorithmException if the algorithm used to check
* the integrity of the keystore cannot be found
- * @exception CertificateException if any of the certificates in the
+ * @throws CertificateException if any of the certificates in the
* keystore could not be loaded
*
* @since 1.5
@@ -1519,17 +1519,17 @@
* @return the keystore {@code Entry} for the specified alias,
* or {@code null} if there is no such entry
*
- * @exception NullPointerException if
+ * @throws NullPointerException if
* {@code alias} is {@code null}
- * @exception NoSuchAlgorithmException if the algorithm for recovering the
+ * @throws NoSuchAlgorithmException if the algorithm for recovering the
* entry cannot be found
- * @exception UnrecoverableEntryException if the specified
+ * @throws UnrecoverableEntryException if the specified
* {@code protParam} were insufficient or invalid
- * @exception UnrecoverableKeyException if the entry is a
+ * @throws UnrecoverableKeyException if the entry is a
* {@code PrivateKeyEntry} or {@code SecretKeyEntry}
* and the specified {@code protParam} does not contain
* the information needed to recover the key (e.g. wrong password)
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded).
* @see #setEntry(String, KeyStore.Entry, KeyStore.ProtectionParameter)
*
@@ -1562,10 +1562,10 @@
* used to protect the {@code Entry},
* which may be {@code null}
*
- * @exception NullPointerException if
+ * @throws NullPointerException if
* {@code alias} or {@code entry}
* is {@code null}
- * @exception KeyStoreException if the keystore has not been initialized
+ * @throws KeyStoreException if the keystore has not been initialized
* (loaded), or if this operation fails for some other reason
*
* @see #getEntry(String, KeyStore.ProtectionParameter)
@@ -1596,10 +1596,10 @@
* {@code alias} is an instance or subclass of the
* specified {@code entryClass}, false otherwise
*
- * @exception NullPointerException if
+ * @throws NullPointerException if
* {@code alias} or {@code entryClass}
* is {@code null}
- * @exception KeyStoreException if the keystore has not been
+ * @throws KeyStoreException if the keystore has not been
* initialized (loaded)
*
* @since 1.5
@@ -1841,7 +1841,7 @@
* Returns the KeyStore described by this object.
*
* @return the {@code KeyStore} described by this object
- * @exception KeyStoreException if an error occurred during the
+ * @throws KeyStoreException if an error occurred during the
* operation, for example if the KeyStore could not be
* instantiated or loaded
*/
--- a/src/java.base/share/classes/java/security/KeyStoreSpi.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/KeyStoreSpi.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -66,9 +66,9 @@
* @return the requested key, or null if the given alias does not exist
* or does not identify a key-related entry.
*
- * @exception NoSuchAlgorithmException if the algorithm for recovering the
+ * @throws NoSuchAlgorithmException if the algorithm for recovering the
* key cannot be found
- * @exception UnrecoverableKeyException if the key cannot be recovered
+ * @throws UnrecoverableKeyException if the key cannot be recovered
* (e.g., the given password is wrong).
*/
public abstract Key engineGetKey(String alias, char[] password)
@@ -141,7 +141,7 @@
* key (only required if the given key is of type
* {@code java.security.PrivateKey}).
*
- * @exception KeyStoreException if the given key cannot be protected, or
+ * @throws KeyStoreException if the given key cannot be protected, or
* this operation fails for some other reason
*/
public abstract void engineSetKeyEntry(String alias, Key key,
@@ -168,7 +168,7 @@
* key (only useful if the protected key is of type
* {@code java.security.PrivateKey}).
*
- * @exception KeyStoreException if this operation fails.
+ * @throws KeyStoreException if this operation fails.
*/
public abstract void engineSetKeyEntry(String alias, byte[] key,
Certificate[] chain)
@@ -187,7 +187,7 @@
* @param alias the alias name
* @param cert the certificate
*
- * @exception KeyStoreException if the given alias already exists and does
+ * @throws KeyStoreException if the given alias already exists and does
* not identify an entry containing a trusted certificate,
* or this operation fails for some other reason.
*/
@@ -200,7 +200,7 @@
*
* @param alias the alias name
*
- * @exception KeyStoreException if the entry cannot be removed.
+ * @throws KeyStoreException if the entry cannot be removed.
*/
public abstract void engineDeleteEntry(String alias)
throws KeyStoreException;
@@ -286,10 +286,10 @@
* @param stream the output stream to which this keystore is written.
* @param password the password to generate the keystore integrity check
*
- * @exception IOException if there was an I/O problem with data
- * @exception NoSuchAlgorithmException if the appropriate data integrity
+ * @throws IOException if there was an I/O problem with data
+ * @throws NoSuchAlgorithmException if the appropriate data integrity
* algorithm could not be found
- * @exception CertificateException if any of the certificates included in
+ * @throws CertificateException if any of the certificates included in
* the keystore data could not be stored
*/
public abstract void engineStore(OutputStream stream, char[] password)
@@ -303,13 +303,13 @@
* that specifies how to store the keystore,
* which may be {@code null}
*
- * @exception IllegalArgumentException if the given
+ * @throws IllegalArgumentException if the given
* {@code KeyStore.LoadStoreParmeter}
* input is not recognized
- * @exception IOException if there was an I/O problem with data
- * @exception NoSuchAlgorithmException if the appropriate data integrity
+ * @throws IOException if there was an I/O problem with data
+ * @throws NoSuchAlgorithmException if the appropriate data integrity
* algorithm could not be found
- * @exception CertificateException if any of the certificates included in
+ * @throws CertificateException if any of the certificates included in
* the keystore data could not be stored
*
* @since 1.5
@@ -335,15 +335,15 @@
* the keystore, the password used to unlock the keystore,
* or {@code null}
*
- * @exception IOException if there is an I/O or format problem with the
+ * @throws IOException if there is an I/O or format problem with the
* keystore data, if a password is required but not given,
* or if the given password was incorrect. If the error is due to a
* wrong password, the {@link Throwable#getCause cause} of the
* {@code IOException} should be an
* {@code UnrecoverableKeyException}
- * @exception NoSuchAlgorithmException if the algorithm used to check
+ * @throws NoSuchAlgorithmException if the algorithm used to check
* the integrity of the keystore cannot be found
- * @exception CertificateException if any of the certificates in the
+ * @throws CertificateException if any of the certificates in the
* keystore could not be loaded
*/
public abstract void engineLoad(InputStream stream, char[] password)
@@ -376,18 +376,18 @@
* extracted. If the {@code KeyStore.ProtectionParameter} is neither
* of those classes then a {@code NoSuchAlgorithmException} is thrown.
*
- * @exception IllegalArgumentException if the given
+ * @throws IllegalArgumentException if the given
* {@code KeyStore.LoadStoreParameter}
* input is not recognized
- * @exception IOException if there is an I/O or format problem with the
+ * @throws IOException if there is an I/O or format problem with the
* keystore data. If the error is due to an incorrect
* {@code ProtectionParameter} (e.g. wrong password)
* the {@link Throwable#getCause cause} of the
* {@code IOException} should be an
* {@code UnrecoverableKeyException}
- * @exception NoSuchAlgorithmException if the algorithm used to check
+ * @throws NoSuchAlgorithmException if the algorithm used to check
* the integrity of the keystore cannot be found
- * @exception CertificateException if any of the certificates in the
+ * @throws CertificateException if any of the certificates in the
* keystore could not be loaded
*
* @since 1.5
@@ -447,12 +447,12 @@
* @return the {@code KeyStore.Entry} for the specified alias,
* or {@code null} if there is no such entry
*
- * @exception KeyStoreException if the operation failed
- * @exception NoSuchAlgorithmException if the algorithm for recovering the
+ * @throws KeyStoreException if the operation failed
+ * @throws NoSuchAlgorithmException if the algorithm for recovering the
* entry cannot be found
- * @exception UnrecoverableEntryException if the specified
+ * @throws UnrecoverableEntryException if the specified
* {@code protParam} were insufficient or invalid
- * @exception UnrecoverableKeyException if the entry is a
+ * @throws UnrecoverableKeyException if the entry is a
* {@code PrivateKeyEntry} or {@code SecretKeyEntry}
* and the specified {@code protParam} does not contain
* the information needed to recover the key (e.g. wrong password)
@@ -518,7 +518,7 @@
* used to protect the {@code Entry},
* which may be {@code null}
*
- * @exception KeyStoreException if this operation fails
+ * @throws KeyStoreException if this operation fails
*
* @since 1.5
*/
--- a/src/java.base/share/classes/java/security/MessageDigest.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/MessageDigest.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -399,7 +399,7 @@
*
* @return the number of bytes placed into {@code buf}
*
- * @exception DigestException if an error occurs.
+ * @throws DigestException if an error occurs.
*/
public int digest(byte[] buf, int offset, int len) throws DigestException {
if (buf == null) {
@@ -536,7 +536,7 @@
*
* @return a clone if the implementation is cloneable.
*
- * @exception CloneNotSupportedException if this is called on an
+ * @throws CloneNotSupportedException if this is called on an
* implementation that does not support {@code Cloneable}.
*/
public Object clone() throws CloneNotSupportedException {
@@ -580,7 +580,7 @@
*
* @return a clone if the delegate is cloneable.
*
- * @exception CloneNotSupportedException if this is called on a
+ * @throws CloneNotSupportedException if this is called on a
* delegate that does not support {@code Cloneable}.
*/
public Object clone() throws CloneNotSupportedException {
--- a/src/java.base/share/classes/java/security/MessageDigestSpi.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/MessageDigestSpi.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -167,7 +167,7 @@
*
* @return the length of the digest stored in the output buffer.
*
- * @exception DigestException if an error occurs.
+ * @throws DigestException if an error occurs.
*
* @since 1.2
*/
@@ -194,7 +194,7 @@
*
* @return a clone if the implementation is cloneable.
*
- * @exception CloneNotSupportedException if this is called on an
+ * @throws CloneNotSupportedException if this is called on an
* implementation that does not support {@code Cloneable}.
*/
public Object clone() throws CloneNotSupportedException {
--- a/src/java.base/share/classes/java/security/PKCS12Attribute.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/PKCS12Attribute.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -64,9 +64,9 @@
* @param name the attribute's identifier
* @param value the attribute's value
*
- * @exception NullPointerException if {@code name} or {@code value}
+ * @throws NullPointerException if {@code name} or {@code value}
* is {@code null}
- * @exception IllegalArgumentException if {@code name} or
+ * @throws IllegalArgumentException if {@code name} or
* {@code value} is incorrectly formatted
*/
public PKCS12Attribute(String name, String value) {
@@ -117,9 +117,9 @@
* @param encoded the attribute's ASN.1 DER encoding. It is cloned
* to prevent subsequent modificaion.
*
- * @exception NullPointerException if {@code encoded} is
+ * @throws NullPointerException if {@code encoded} is
* {@code null}
- * @exception IllegalArgumentException if {@code encoded} is
+ * @throws IllegalArgumentException if {@code encoded} is
* incorrectly formatted
*/
public PKCS12Attribute(byte[] encoded) {
--- a/src/java.base/share/classes/java/security/PermissionCollection.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/PermissionCollection.java Sat Sep 21 12:10:52 2019 +0200
@@ -107,9 +107,9 @@
*
* @param permission the Permission object to add.
*
- * @exception SecurityException - if this PermissionCollection object
+ * @throws SecurityException - if this PermissionCollection object
* has been marked readonly
- * @exception IllegalArgumentException - if this PermissionCollection
+ * @throws IllegalArgumentException - if this PermissionCollection
* object is a homogeneous collection and the permission
* is not of the correct type.
*/
--- a/src/java.base/share/classes/java/security/Permissions.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/Permissions.java Sat Sep 21 12:10:52 2019 +0200
@@ -116,7 +116,7 @@
*
* @param permission the Permission object to add.
*
- * @exception SecurityException if this Permissions object is
+ * @throws SecurityException if this Permissions object is
* marked as readonly.
*
* @see PermissionCollection#isReadOnly()
--- a/src/java.base/share/classes/java/security/Policy.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/Policy.java Sat Sep 21 12:10:52 2019 +0200
@@ -837,7 +837,7 @@
*
* @param permission the Permission object to add.
*
- * @exception SecurityException - if this PermissionCollection object
+ * @throws SecurityException - if this PermissionCollection object
* has been marked readonly
*/
@Override public void add(Permission permission) {
--- a/src/java.base/share/classes/java/security/Provider.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/Provider.java Sat Sep 21 12:10:52 2019 +0200
@@ -403,7 +403,7 @@
* Reads a property list (key and element pairs) from the input stream.
*
* @param inStream the input stream.
- * @exception IOException if an error occurred when reading from the
+ * @throws IOException if an error occurred when reading from the
* input stream.
* @see java.util.Properties#load
*/
--- a/src/java.base/share/classes/java/security/SecureClassLoader.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/SecureClassLoader.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -68,7 +68,7 @@
* method to ensure creation of a class loader is allowed.
*
* @param parent the parent ClassLoader
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkCreateClassLoader} method doesn't allow
* creation of a class loader.
* @see SecurityManager#checkCreateClassLoader
@@ -85,7 +85,7 @@
* calls the security manager's {@code checkCreateClassLoader}
* method to ensure creation of a class loader is allowed.
*
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkCreateClassLoader} method doesn't allow
* creation of a class loader.
* @see SecurityManager#checkCreateClassLoader
@@ -134,12 +134,12 @@
* @param cs the associated CodeSource, or {@code null} if none
* @return the {@code Class} object created from the data,
* and optional CodeSource.
- * @exception ClassFormatError if the data did not contain a valid class
- * @exception IndexOutOfBoundsException if either {@code off} or
+ * @throws ClassFormatError if the data did not contain a valid class
+ * @throws IndexOutOfBoundsException if either {@code off} or
* {@code len} is negative, or if
* {@code off+len} is greater than {@code b.length}.
*
- * @exception SecurityException if an attempt is made to add this class
+ * @throws SecurityException if an attempt is made to add this class
* to a package that contains classes that were signed by
* a different set of certificates than this class, or if
* the class name begins with "java.".
@@ -169,8 +169,8 @@
* @param cs the associated CodeSource, or {@code null} if none
* @return the {@code Class} object created from the data,
* and optional CodeSource.
- * @exception ClassFormatError if the data did not contain a valid class
- * @exception SecurityException if an attempt is made to add this class
+ * @throws ClassFormatError if the data did not contain a valid class
+ * @throws SecurityException if an attempt is made to add this class
* to a package that contains classes that were signed by
* a different set of certificates than this class, or if
* the class name begins with "java.".
--- a/src/java.base/share/classes/java/security/Signature.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/Signature.java Sat Sep 21 12:10:52 2019 +0200
@@ -498,7 +498,7 @@
* @param publicKey the public key of the identity whose signature is
* going to be verified.
*
- * @exception InvalidKeyException if the key is invalid.
+ * @throws InvalidKeyException if the key is invalid.
*/
public final void initVerify(PublicKey publicKey)
throws InvalidKeyException {
@@ -520,8 +520,8 @@
* going to be verified.
* @param params the parameters used for verifying this signature.
*
- * @exception InvalidKeyException if the key is invalid.
- * @exception InvalidAlgorithmParameterException if the params is invalid.
+ * @throws InvalidKeyException if the key is invalid.
+ * @throws InvalidAlgorithmParameterException if the params is invalid.
*/
final void initVerify(PublicKey publicKey, AlgorithmParameterSpec params)
throws InvalidKeyException, InvalidAlgorithmParameterException {
@@ -571,7 +571,7 @@
* @param certificate the certificate of the identity whose signature is
* going to be verified.
*
- * @exception InvalidKeyException if the public key in the certificate
+ * @throws InvalidKeyException if the public key in the certificate
* is not encoded properly or does not include required parameter
* information or cannot be used for digital signature purposes.
* @since 1.3
@@ -601,10 +601,10 @@
* going to be verified.
* @param params the parameters used for verifying this signature.
*
- * @exception InvalidKeyException if the public key in the certificate
+ * @throws InvalidKeyException if the public key in the certificate
* is not encoded properly or does not include required parameter
* information or cannot be used for digital signature purposes.
- * @exception InvalidAlgorithmParameterException if the params is invalid.
+ * @throws InvalidAlgorithmParameterException if the params is invalid.
*
* @since 13
*/
@@ -628,7 +628,7 @@
* @param privateKey the private key of the identity whose signature
* is going to be generated.
*
- * @exception InvalidKeyException if the key is invalid.
+ * @throws InvalidKeyException if the key is invalid.
*/
public final void initSign(PrivateKey privateKey)
throws InvalidKeyException {
@@ -651,7 +651,7 @@
*
* @param random the source of randomness for this signature.
*
- * @exception InvalidKeyException if the key is invalid.
+ * @throws InvalidKeyException if the key is invalid.
*/
public final void initSign(PrivateKey privateKey, SecureRandom random)
throws InvalidKeyException {
@@ -674,8 +674,8 @@
* @param params the parameters used for generating signature.
* @param random the source of randomness for this signature.
*
- * @exception InvalidKeyException if the key is invalid.
- * @exception InvalidAlgorithmParameterException if the params is invalid
+ * @throws InvalidKeyException if the key is invalid.
+ * @throws InvalidAlgorithmParameterException if the params is invalid
*/
final void initSign(PrivateKey privateKey,
AlgorithmParameterSpec params, SecureRandom random)
@@ -703,7 +703,7 @@
*
* @return the signature bytes of the signing operation's result.
*
- * @exception SignatureException if this signature object is not
+ * @throws SignatureException if this signature object is not
* initialized properly or if this signature algorithm is unable to
* process the input data provided.
*/
@@ -736,11 +736,11 @@
*
* @return the number of bytes placed into {@code outbuf}.
*
- * @exception SignatureException if this signature object is not
+ * @throws SignatureException if this signature object is not
* initialized properly, if this signature algorithm is unable to
* process the input data provided, or if {@code len} is less
* than the actual signature length.
- * @exception IllegalArgumentException if {@code outbuf} is {@code null},
+ * @throws IllegalArgumentException if {@code outbuf} is {@code null},
* or {@code offset} or {@code len} is less than 0, or the sum of
* {@code offset} and {@code len} is greater than the length of
* {@code outbuf}.
@@ -779,7 +779,7 @@
*
* @return true if the signature was verified, false if not.
*
- * @exception SignatureException if this signature object is not
+ * @throws SignatureException if this signature object is not
* initialized properly, the passed-in signature is improperly
* encoded or of the wrong type, if this signature algorithm is unable to
* process the input data provided, etc.
@@ -809,11 +809,11 @@
*
* @return true if the signature was verified, false if not.
*
- * @exception SignatureException if this signature object is not
+ * @throws SignatureException if this signature object is not
* initialized properly, the passed-in signature is improperly
* encoded or of the wrong type, if this signature algorithm is unable to
* process the input data provided, etc.
- * @exception IllegalArgumentException if the {@code signature}
+ * @throws IllegalArgumentException if the {@code signature}
* byte array is {@code null}, or the {@code offset} or {@code length}
* is less than 0, or the sum of the {@code offset} and
* {@code length} is greater than the length of the
@@ -846,7 +846,7 @@
*
* @param b the byte to use for the update.
*
- * @exception SignatureException if this signature object is not
+ * @throws SignatureException if this signature object is not
* initialized properly.
*/
public final void update(byte b) throws SignatureException {
@@ -864,7 +864,7 @@
*
* @param data the byte array to use for the update.
*
- * @exception SignatureException if this signature object is not
+ * @throws SignatureException if this signature object is not
* initialized properly.
*/
public final void update(byte[] data) throws SignatureException {
@@ -879,9 +879,9 @@
* @param off the offset to start from in the array of bytes.
* @param len the number of bytes to use, starting at offset.
*
- * @exception SignatureException if this signature object is not
+ * @throws SignatureException if this signature object is not
* initialized properly.
- * @exception IllegalArgumentException if {@code data} is {@code null},
+ * @throws IllegalArgumentException if {@code data} is {@code null},
* or {@code off} or {@code len} is less than 0, or the sum of
* {@code off} and {@code len} is greater than the length of
* {@code data}.
@@ -915,7 +915,7 @@
*
* @param data the ByteBuffer
*
- * @exception SignatureException if this signature object is not
+ * @throws SignatureException if this signature object is not
* initialized properly.
* @since 1.5
*/
@@ -976,7 +976,7 @@
* @param param the string identifier of the parameter.
* @param value the parameter value.
*
- * @exception InvalidParameterException if {@code param} is an
+ * @throws InvalidParameterException if {@code param} is an
* invalid parameter for this signature algorithm engine,
* the parameter is already set
* and cannot be set again, a security exception occurs, and so on.
@@ -998,7 +998,7 @@
*
* @param params the parameters
*
- * @exception InvalidAlgorithmParameterException if the given parameters
+ * @throws InvalidAlgorithmParameterException if the given parameters
* are inappropriate for this signature engine
*
* @see #getParameters
@@ -1043,7 +1043,7 @@
* @return the object that represents the parameter value, or {@code null} if
* there is none.
*
- * @exception InvalidParameterException if {@code param} is an invalid
+ * @throws InvalidParameterException if {@code param} is an invalid
* parameter for this engine, or another exception occurs while
* trying to get this parameter.
*
@@ -1062,7 +1062,7 @@
*
* @return a clone if the implementation is cloneable.
*
- * @exception CloneNotSupportedException if this is called
+ * @throws CloneNotSupportedException if this is called
* on an implementation that does not support {@code Cloneable}.
*/
public Object clone() throws CloneNotSupportedException {
@@ -1126,7 +1126,7 @@
*
* @return a clone if the delegate is cloneable.
*
- * @exception CloneNotSupportedException if this is called on a
+ * @throws CloneNotSupportedException if this is called on a
* delegate that does not support {@code Cloneable}.
*/
public Object clone() throws CloneNotSupportedException {
--- a/src/java.base/share/classes/java/security/SignatureSpi.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/SignatureSpi.java Sat Sep 21 12:10:52 2019 +0200
@@ -64,7 +64,7 @@
* @param publicKey the public key of the identity whose signature is
* going to be verified.
*
- * @exception InvalidKeyException if the key is improperly
+ * @throws InvalidKeyException if the key is improperly
* encoded, parameters are missing, and so on.
*/
protected abstract void engineInitVerify(PublicKey publicKey)
@@ -78,9 +78,9 @@
* going to be verified.
* @param params the parameters for generating this signature
*
- * @exception InvalidKeyException if the key is improperly
+ * @throws InvalidKeyException if the key is improperly
* encoded, does not work with the given parameters, and so on.
- * @exception InvalidAlgorithmParameterException if the given parameters
+ * @throws InvalidAlgorithmParameterException if the given parameters
* is invalid.
*/
void engineInitVerify(PublicKey publicKey,
@@ -104,7 +104,7 @@
* @param privateKey the private key of the identity whose signature
* will be generated.
*
- * @exception InvalidKeyException if the key is improperly
+ * @throws InvalidKeyException if the key is improperly
* encoded, parameters are missing, and so on.
*/
protected abstract void engineInitSign(PrivateKey privateKey)
@@ -121,7 +121,7 @@
* will be generated.
* @param random the source of randomness
*
- * @exception InvalidKeyException if the key is improperly
+ * @throws InvalidKeyException if the key is improperly
* encoded, parameters are missing, and so on.
*/
protected void engineInitSign(PrivateKey privateKey,
@@ -143,9 +143,9 @@
* @param params the parameters for generating this signature
* @param random the source of randomness
*
- * @exception InvalidKeyException if the key is improperly
+ * @throws InvalidKeyException if the key is improperly
* encoded, parameters are missing, and so on.
- * @exception InvalidAlgorithmParameterException if the parameters is
+ * @throws InvalidAlgorithmParameterException if the parameters is
* invalid.
*/
void engineInitSign(PrivateKey privateKey,
@@ -168,7 +168,7 @@
*
* @param b the byte to use for the update.
*
- * @exception SignatureException if the engine is not initialized
+ * @throws SignatureException if the engine is not initialized
* properly.
*/
protected abstract void engineUpdate(byte b) throws SignatureException;
@@ -181,7 +181,7 @@
* @param off the offset to start from in the array of bytes
* @param len the number of bytes to use, starting at offset
*
- * @exception SignatureException if the engine is not initialized
+ * @throws SignatureException if the engine is not initialized
* properly
*/
protected abstract void engineUpdate(byte[] b, int off, int len)
@@ -234,7 +234,7 @@
*
* @return the signature bytes of the signing operation's result.
*
- * @exception SignatureException if the engine is not
+ * @throws SignatureException if the engine is not
* initialized properly or if this signature algorithm is unable to
* process the input data provided.
*/
@@ -273,7 +273,7 @@
*
* @return the number of bytes placed into {@code outbuf}
*
- * @exception SignatureException if the engine is not
+ * @throws SignatureException if the engine is not
* initialized properly, if this signature algorithm is unable to
* process the input data provided, or if {@code len} is less
* than the actual signature length.
@@ -303,7 +303,7 @@
*
* @return true if the signature was verified, false if not.
*
- * @exception SignatureException if the engine is not
+ * @throws SignatureException if the engine is not
* initialized properly, the passed-in signature is improperly
* encoded or of the wrong type, if this signature algorithm is unable to
* process the input data provided, etc.
@@ -324,7 +324,7 @@
*
* @return true if the signature was verified, false if not.
*
- * @exception SignatureException if the engine is not
+ * @throws SignatureException if the engine is not
* initialized properly, the passed-in signature is improperly
* encoded or of the wrong type, if this signature algorithm is unable to
* process the input data provided, etc.
@@ -352,7 +352,7 @@
*
* @param value the parameter value.
*
- * @exception InvalidParameterException if {@code param} is an
+ * @throws InvalidParameterException if {@code param} is an
* invalid parameter for this signature algorithm engine,
* the parameter is already set
* and cannot be set again, a security exception occurs, and so on.
@@ -371,10 +371,10 @@
*
* @param params the parameters
*
- * @exception UnsupportedOperationException if this method is not
+ * @throws UnsupportedOperationException if this method is not
* overridden by a provider
*
- * @exception InvalidAlgorithmParameterException if this method is
+ * @throws InvalidAlgorithmParameterException if this method is
* overridden by a provider and the given parameters
* are inappropriate for this signature engine
*/
@@ -397,7 +397,7 @@
*
* @return the parameters used with this signature engine, or {@code null}
*
- * @exception UnsupportedOperationException if this method is
+ * @throws UnsupportedOperationException if this method is
* not overridden by a provider
* @since 1.4
*/
@@ -421,7 +421,7 @@
* @return the object that represents the parameter value, or {@code null} if
* there is none.
*
- * @exception InvalidParameterException if {@code param} is an
+ * @throws InvalidParameterException if {@code param} is an
* invalid parameter for this engine, or another exception occurs while
* trying to get this parameter.
*
@@ -436,7 +436,7 @@
*
* @return a clone if the implementation is cloneable.
*
- * @exception CloneNotSupportedException if this is called
+ * @throws CloneNotSupportedException if this is called
* on an implementation that does not support {@code Cloneable}.
*/
public Object clone() throws CloneNotSupportedException {
--- a/src/java.base/share/classes/java/security/SignedObject.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/SignedObject.java Sat Sep 21 12:10:52 2019 +0200
@@ -140,9 +140,9 @@
* @param signingKey the private key for signing.
* @param signingEngine the signature signing engine.
*
- * @exception IOException if an error occurs during serialization
- * @exception InvalidKeyException if the key is invalid.
- * @exception SignatureException if signing fails.
+ * @throws IOException if an error occurs during serialization
+ * @throws InvalidKeyException if the key is invalid.
+ * @throws SignatureException if signing fails.
*/
public SignedObject(Serializable object, PrivateKey signingKey,
Signature signingEngine)
@@ -168,8 +168,8 @@
*
* @return the encapsulated object.
*
- * @exception IOException if an error occurs during de-serialization
- * @exception ClassNotFoundException if an error occurs during
+ * @throws IOException if an error occurs during de-serialization
+ * @throws ClassNotFoundException if an error occurs during
* de-serialization
*/
public Object getObject()
@@ -212,10 +212,10 @@
* @param verificationKey the public key for verification.
* @param verificationEngine the signature verification engine.
*
- * @exception SignatureException if signature verification failed (an
+ * @throws SignatureException if signature verification failed (an
* exception prevented the signature verification engine from completing
* normally).
- * @exception InvalidKeyException if the verification key is invalid.
+ * @throws InvalidKeyException if the verification key is invalid.
*
* @return {@code true} if the signature
* is valid, {@code false} otherwise
@@ -235,8 +235,8 @@
* @param signingKey the private key for signing.
* @param signingEngine the signature signing engine.
*
- * @exception InvalidKeyException if the key is invalid.
- * @exception SignatureException if signing fails.
+ * @throws InvalidKeyException if the key is invalid.
+ * @throws SignatureException if signing fails.
*/
private void sign(PrivateKey signingKey, Signature signingEngine)
throws InvalidKeyException, SignatureException {
--- a/src/java.base/share/classes/java/security/Signer.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/Signer.java Sat Sep 21 12:10:52 2019 +0200
@@ -84,7 +84,7 @@
*
* @param scope the scope of the identity.
*
- * @exception KeyManagementException if there is already an identity
+ * @throws KeyManagementException if there is already an identity
* with the same name in the scope.
*/
public Signer(String name, IdentityScope scope)
@@ -102,7 +102,7 @@
* @return this signer's private key, or null if the private key has
* not yet been set.
*
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkSecurityAccess} method doesn't allow
* returning the private key.
*
@@ -122,11 +122,11 @@
*
* @param pair an initialized key pair.
*
- * @exception InvalidParameterException if the key pair is not
+ * @throws InvalidParameterException if the key pair is not
* properly initialized.
- * @exception KeyException if the key pair cannot be set for any
+ * @throws KeyException if the key pair cannot be set for any
* other reason.
- * @exception SecurityException if a security manager exists and its
+ * @throws SecurityException if a security manager exists and its
* {@code checkSecurityAccess} method doesn't allow
* setting the key pair.
*
--- a/src/java.base/share/classes/java/security/URIParameter.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/URIParameter.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -43,7 +43,7 @@
*
* @param uri the URI pointing to the data.
*
- * @exception NullPointerException if the specified URI is null.
+ * @throws NullPointerException if the specified URI is null.
*/
public URIParameter(java.net.URI uri) {
if (uri == null) {
--- a/src/java.base/share/classes/java/security/cert/CertPath.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/CertPath.java Sat Sep 21 12:10:52 2019 +0200
@@ -248,7 +248,7 @@
* encoding.
*
* @return the encoded bytes
- * @exception CertificateEncodingException if an encoding error occurs
+ * @throws CertificateEncodingException if an encoding error occurs
*/
public abstract byte[] getEncoded()
throws CertificateEncodingException;
@@ -259,7 +259,7 @@
*
* @param encoding the name of the encoding to use
* @return the encoded bytes
- * @exception CertificateEncodingException if an encoding error occurs or
+ * @throws CertificateEncodingException if an encoding error occurs or
* the encoding requested is not supported
*/
public abstract byte[] getEncoded(String encoding)
--- a/src/java.base/share/classes/java/security/cert/CertPathValidator.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/CertPathValidator.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -296,9 +296,9 @@
* @param certPath the {@code CertPath} to be validated
* @param params the algorithm parameters
* @return the result of the validation algorithm
- * @exception CertPathValidatorException if the {@code CertPath}
+ * @throws CertPathValidatorException if the {@code CertPath}
* does not validate
- * @exception InvalidAlgorithmParameterException if the specified
+ * @throws InvalidAlgorithmParameterException if the specified
* parameters or the type of the specified {@code CertPath} are
* inappropriate for this {@code CertPathValidator}
*/
--- a/src/java.base/share/classes/java/security/cert/CertPathValidatorSpi.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/CertPathValidatorSpi.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -73,9 +73,9 @@
* @param certPath the {@code CertPath} to be validated
* @param params the algorithm parameters
* @return the result of the validation algorithm
- * @exception CertPathValidatorException if the {@code CertPath}
+ * @throws CertPathValidatorException if the {@code CertPath}
* does not validate
- * @exception InvalidAlgorithmParameterException if the specified
+ * @throws InvalidAlgorithmParameterException if the specified
* parameters or the type of the specified {@code CertPath} are
* inappropriate for this {@code CertPathValidator}
*/
--- a/src/java.base/share/classes/java/security/cert/Certificate.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/Certificate.java Sat Sep 21 12:10:52 2019 +0200
@@ -148,7 +148,7 @@
*
* @return the encoded form of this certificate
*
- * @exception CertificateEncodingException if an encoding error occurs.
+ * @throws CertificateEncodingException if an encoding error occurs.
*/
public abstract byte[] getEncoded()
throws CertificateEncodingException;
@@ -159,12 +159,12 @@
*
* @param key the PublicKey used to carry out the verification.
*
- * @exception NoSuchAlgorithmException on unsupported signature
+ * @throws NoSuchAlgorithmException on unsupported signature
* algorithms.
- * @exception InvalidKeyException on incorrect key.
- * @exception NoSuchProviderException if there's no default provider.
- * @exception SignatureException on signature errors.
- * @exception CertificateException on encoding errors.
+ * @throws InvalidKeyException on incorrect key.
+ * @throws NoSuchProviderException if there's no default provider.
+ * @throws SignatureException on signature errors.
+ * @throws CertificateException on encoding errors.
*/
public abstract void verify(PublicKey key)
throws CertificateException, NoSuchAlgorithmException,
@@ -180,12 +180,12 @@
* @param key the PublicKey used to carry out the verification.
* @param sigProvider the name of the signature provider.
*
- * @exception NoSuchAlgorithmException on unsupported signature
+ * @throws NoSuchAlgorithmException on unsupported signature
* algorithms.
- * @exception InvalidKeyException on incorrect key.
- * @exception NoSuchProviderException on incorrect provider.
- * @exception SignatureException on signature errors.
- * @exception CertificateException on encoding errors.
+ * @throws InvalidKeyException on incorrect key.
+ * @throws NoSuchProviderException on incorrect provider.
+ * @throws SignatureException on signature errors.
+ * @throws CertificateException on encoding errors.
*/
public abstract void verify(PublicKey key, String sigProvider)
throws CertificateException, NoSuchAlgorithmException,
@@ -207,12 +207,12 @@
* @param key the PublicKey used to carry out the verification.
* @param sigProvider the signature provider.
*
- * @exception NoSuchAlgorithmException on unsupported signature
+ * @throws NoSuchAlgorithmException on unsupported signature
* algorithms.
- * @exception InvalidKeyException on incorrect key.
- * @exception SignatureException on signature errors.
- * @exception CertificateException on encoding errors.
- * @exception UnsupportedOperationException if the method is not supported
+ * @throws InvalidKeyException on incorrect key.
+ * @throws SignatureException on signature errors.
+ * @throws CertificateException on encoding errors.
+ * @throws UnsupportedOperationException if the method is not supported
* @since 1.8
*/
public void verify(PublicKey key, Provider sigProvider)
--- a/src/java.base/share/classes/java/security/cert/CertificateFactory.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/CertificateFactory.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -347,7 +347,7 @@
* @return a certificate object initialized with the data
* from the input stream.
*
- * @exception CertificateException on parsing errors.
+ * @throws CertificateException on parsing errors.
*/
public final Certificate generateCertificate(InputStream inStream)
throws CertificateException
@@ -385,7 +385,7 @@
* @param inStream an {@code InputStream} containing the data
* @return a {@code CertPath} initialized with the data from the
* {@code InputStream}
- * @exception CertificateException if an exception occurs while decoding
+ * @throws CertificateException if an exception occurs while decoding
* @since 1.4
*/
public final CertPath generateCertPath(InputStream inStream)
@@ -407,7 +407,7 @@
* @param encoding the encoding used for the data
* @return a {@code CertPath} initialized with the data from the
* {@code InputStream}
- * @exception CertificateException if an exception occurs while decoding or
+ * @throws CertificateException if an exception occurs while decoding or
* the encoding requested is not supported
* @since 1.4
*/
@@ -428,7 +428,7 @@
* @param certificates a {@code List} of {@code Certificate}s
* @return a {@code CertPath} initialized with the supplied list of
* certificates
- * @exception CertificateException if an exception occurs
+ * @throws CertificateException if an exception occurs
* @since 1.4
*/
public final CertPath
@@ -471,7 +471,7 @@
* java.security.cert.Certificate objects
* initialized with the data from the input stream.
*
- * @exception CertificateException on parsing errors.
+ * @throws CertificateException on parsing errors.
*/
public final Collection<? extends Certificate> generateCertificates
(InputStream inStream) throws CertificateException {
@@ -505,7 +505,7 @@
* @return a CRL object initialized with the data
* from the input stream.
*
- * @exception CRLException on parsing errors.
+ * @throws CRLException on parsing errors.
*/
public final CRL generateCRL(InputStream inStream)
throws CRLException
@@ -544,7 +544,7 @@
* java.security.cert.CRL objects initialized with the data from the input
* stream.
*
- * @exception CRLException on parsing errors.
+ * @throws CRLException on parsing errors.
*/
public final Collection<? extends CRL> generateCRLs(InputStream inStream)
throws CRLException {
--- a/src/java.base/share/classes/java/security/cert/CertificateFactorySpi.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/CertificateFactorySpi.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -99,7 +99,7 @@
* @return a certificate object initialized with the data
* from the input stream.
*
- * @exception CertificateException on parsing errors.
+ * @throws CertificateException on parsing errors.
*/
public abstract Certificate engineGenerateCertificate(InputStream inStream)
throws CertificateException;
@@ -117,8 +117,8 @@
* @param inStream an {@code InputStream} containing the data
* @return a {@code CertPath} initialized with the data from the
* {@code InputStream}
- * @exception CertificateException if an exception occurs while decoding
- * @exception UnsupportedOperationException if the method is not supported
+ * @throws CertificateException if an exception occurs while decoding
+ * @throws UnsupportedOperationException if the method is not supported
* @since 1.4
*/
public CertPath engineGenerateCertPath(InputStream inStream)
@@ -141,9 +141,9 @@
* @param encoding the encoding used for the data
* @return a {@code CertPath} initialized with the data from the
* {@code InputStream}
- * @exception CertificateException if an exception occurs while decoding or
+ * @throws CertificateException if an exception occurs while decoding or
* the encoding requested is not supported
- * @exception UnsupportedOperationException if the method is not supported
+ * @throws UnsupportedOperationException if the method is not supported
* @since 1.4
*/
public CertPath engineGenerateCertPath(InputStream inStream,
@@ -168,8 +168,8 @@
* @param certificates a {@code List} of {@code Certificate}s
* @return a {@code CertPath} initialized with the supplied list of
* certificates
- * @exception CertificateException if an exception occurs
- * @exception UnsupportedOperationException if the method is not supported
+ * @throws CertificateException if an exception occurs
+ * @throws UnsupportedOperationException if the method is not supported
* @since 1.4
*/
public CertPath
@@ -198,7 +198,7 @@
*
* @return an {@code Iterator} over the names of the supported
* {@code CertPath} encodings (as {@code String}s)
- * @exception UnsupportedOperationException if the method is not supported
+ * @throws UnsupportedOperationException if the method is not supported
* @since 1.4
*/
public Iterator<String> engineGetCertPathEncodings() {
@@ -239,7 +239,7 @@
* java.security.cert.Certificate objects
* initialized with the data from the input stream.
*
- * @exception CertificateException on parsing errors.
+ * @throws CertificateException on parsing errors.
*/
public abstract Collection<? extends Certificate>
engineGenerateCertificates(InputStream inStream)
@@ -272,7 +272,7 @@
* @return a CRL object initialized with the data
* from the input stream.
*
- * @exception CRLException on parsing errors.
+ * @throws CRLException on parsing errors.
*/
public abstract CRL engineGenerateCRL(InputStream inStream)
throws CRLException;
@@ -308,7 +308,7 @@
* java.security.cert.CRL objects initialized with the data from the input
* stream.
*
- * @exception CRLException on parsing errors.
+ * @throws CRLException on parsing errors.
*/
public abstract Collection<? extends CRL> engineGenerateCRLs
(InputStream inStream) throws CRLException;
--- a/src/java.base/share/classes/java/security/cert/CollectionCertStoreParameters.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/CollectionCertStoreParameters.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -80,7 +80,7 @@
*
* @param collection a {@code Collection} of
* {@code Certificate}s and {@code CRL}s
- * @exception NullPointerException if {@code collection} is
+ * @throws NullPointerException if {@code collection} is
* {@code null}
*/
public CollectionCertStoreParameters(Collection<?> collection) {
--- a/src/java.base/share/classes/java/security/cert/Extension.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/Extension.java Sat Sep 21 12:10:52 2019 +0200
@@ -94,8 +94,8 @@
* stream.
*
* @param out the output stream
- * @exception IOException on encoding or output error.
- * @exception NullPointerException if {@code out} is {@code null}.
+ * @throws IOException on encoding or output error.
+ * @throws NullPointerException if {@code out} is {@code null}.
*/
void encode(OutputStream out) throws IOException;
}
--- a/src/java.base/share/classes/java/security/cert/LDAPCertStoreParameters.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/LDAPCertStoreParameters.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -69,7 +69,7 @@
*
* @param serverName the DNS name of the LDAP server
* @param port the port number of the LDAP server
- * @exception NullPointerException if {@code serverName} is
+ * @throws NullPointerException if {@code serverName} is
* {@code null}
*/
public LDAPCertStoreParameters(String serverName, int port) {
@@ -84,7 +84,7 @@
* specified server name and a default port of 389.
*
* @param serverName the DNS name of the LDAP server
- * @exception NullPointerException if {@code serverName} is
+ * @throws NullPointerException if {@code serverName} is
* {@code null}
*/
public LDAPCertStoreParameters(String serverName) {
--- a/src/java.base/share/classes/java/security/cert/PKIXCertPathChecker.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/PKIXCertPathChecker.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -158,7 +158,7 @@
* @param cert the {@code Certificate} to be checked
* @param unresolvedCritExts a {@code Collection} of OID strings
* representing the current set of unresolved critical extensions
- * @exception CertPathValidatorException if the specified certificate does
+ * @throws CertPathValidatorException if the specified certificate does
* not pass the check
*/
public abstract void check(Certificate cert,
--- a/src/java.base/share/classes/java/security/cert/PolicyQualifierInfo.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/PolicyQualifierInfo.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -94,7 +94,7 @@
* encoded bytes. The encoded byte array is copied on construction.
*
* @param encoded a byte array containing the qualifier in DER encoding
- * @exception IOException thrown if the byte array does not represent a
+ * @throws IOException thrown if the byte array does not represent a
* valid and parsable policy qualifier
*/
public PolicyQualifierInfo(byte[] encoded) throws IOException {
--- a/src/java.base/share/classes/java/security/cert/X509CRL.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/X509CRL.java Sat Sep 21 12:10:52 2019 +0200
@@ -170,7 +170,7 @@
* Returns the ASN.1 DER-encoded form of this CRL.
*
* @return the encoded form of this certificate
- * @exception CRLException if an encoding error occurs.
+ * @throws CRLException if an encoding error occurs.
*/
public abstract byte[] getEncoded()
throws CRLException;
@@ -181,12 +181,12 @@
*
* @param key the PublicKey used to carry out the verification.
*
- * @exception NoSuchAlgorithmException on unsupported signature
+ * @throws NoSuchAlgorithmException on unsupported signature
* algorithms.
- * @exception InvalidKeyException on incorrect key.
- * @exception NoSuchProviderException if there's no default provider.
- * @exception SignatureException on signature errors.
- * @exception CRLException on encoding errors.
+ * @throws InvalidKeyException on incorrect key.
+ * @throws NoSuchProviderException if there's no default provider.
+ * @throws SignatureException on signature errors.
+ * @throws CRLException on encoding errors.
*/
public abstract void verify(PublicKey key)
throws CRLException, NoSuchAlgorithmException,
@@ -202,12 +202,12 @@
* @param key the PublicKey used to carry out the verification.
* @param sigProvider the name of the signature provider.
*
- * @exception NoSuchAlgorithmException on unsupported signature
+ * @throws NoSuchAlgorithmException on unsupported signature
* algorithms.
- * @exception InvalidKeyException on incorrect key.
- * @exception NoSuchProviderException on incorrect provider.
- * @exception SignatureException on signature errors.
- * @exception CRLException on encoding errors.
+ * @throws InvalidKeyException on incorrect key.
+ * @throws NoSuchProviderException on incorrect provider.
+ * @throws SignatureException on signature errors.
+ * @throws CRLException on encoding errors.
*/
public abstract void verify(PublicKey key, String sigProvider)
throws CRLException, NoSuchAlgorithmException,
@@ -229,11 +229,11 @@
* @param key the PublicKey used to carry out the verification.
* @param sigProvider the signature provider.
*
- * @exception NoSuchAlgorithmException on unsupported signature
+ * @throws NoSuchAlgorithmException on unsupported signature
* algorithms.
- * @exception InvalidKeyException on incorrect key.
- * @exception SignatureException on signature errors.
- * @exception CRLException on encoding errors.
+ * @throws InvalidKeyException on incorrect key.
+ * @throws SignatureException on signature errors.
+ * @throws CRLException on encoding errors.
* @since 1.8
*/
public void verify(PublicKey key, Provider sigProvider)
@@ -383,7 +383,7 @@
* up
* @return the entry for the given certificate, or null if no such entry
* exists in this CRL.
- * @exception NullPointerException if certificate is null
+ * @throws NullPointerException if certificate is null
*
* @since 1.5
*/
@@ -411,7 +411,7 @@
* This can be used to verify the signature independently.
*
* @return the DER-encoded CRL information.
- * @exception CRLException if an encoding error occurs.
+ * @throws CRLException if an encoding error occurs.
*/
public abstract byte[] getTBSCertList() throws CRLException;
--- a/src/java.base/share/classes/java/security/cert/X509CRLEntry.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/X509CRLEntry.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -122,7 +122,7 @@
* that is the inner SEQUENCE.
*
* @return the encoded form of this certificate
- * @exception CRLException if an encoding error occurs.
+ * @throws CRLException if an encoding error occurs.
*/
public abstract byte[] getEncoded() throws CRLException;
--- a/src/java.base/share/classes/java/security/cert/X509Certificate.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/cert/X509Certificate.java Sat Sep 21 12:10:52 2019 +0200
@@ -141,8 +141,8 @@
* generalTime GeneralizedTime }
* </pre>
*
- * @exception CertificateExpiredException if the certificate has expired.
- * @exception CertificateNotYetValidException if the certificate is not
+ * @throws CertificateExpiredException if the certificate has expired.
+ * @throws CertificateNotYetValidException if the certificate is not
* yet valid.
*/
public abstract void checkValidity()
@@ -156,9 +156,9 @@
* @param date the Date to check against to see if this certificate
* is valid at that date/time.
*
- * @exception CertificateExpiredException if the certificate has expired
+ * @throws CertificateExpiredException if the certificate has expired
* with respect to the {@code date} supplied.
- * @exception CertificateNotYetValidException if the certificate is not
+ * @throws CertificateNotYetValidException if the certificate is not
* yet valid with respect to the {@code date} supplied.
*
* @see #checkValidity()
@@ -334,7 +334,7 @@
* This can be used to verify the signature independently.
*
* @return the DER-encoded certificate information.
- * @exception CertificateEncodingException if an encoding error occurs.
+ * @throws CertificateEncodingException if an encoding error occurs.
*/
public abstract byte[] getTBSCertificate()
throws CertificateEncodingException;
@@ -666,12 +666,12 @@
* @param key the PublicKey used to carry out the verification.
* @param sigProvider the signature provider.
*
- * @exception NoSuchAlgorithmException on unsupported signature
+ * @throws NoSuchAlgorithmException on unsupported signature
* algorithms.
- * @exception InvalidKeyException on incorrect key.
- * @exception SignatureException on signature errors.
- * @exception CertificateException on encoding errors.
- * @exception UnsupportedOperationException if the method is not supported
+ * @throws InvalidKeyException on incorrect key.
+ * @throws SignatureException on signature errors.
+ * @throws CertificateException on encoding errors.
+ * @throws UnsupportedOperationException if the method is not supported
* @since 1.8
*/
public void verify(PublicKey key, Provider sigProvider)
--- a/src/java.base/share/classes/java/security/interfaces/DSAKeyPairGenerator.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/interfaces/DSAKeyPairGenerator.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -85,7 +85,7 @@
* @param random the random bit source to use to generate key bits;
* can be null.
*
- * @exception InvalidParameterException if the {@code params}
+ * @throws InvalidParameterException if the {@code params}
* value is invalid, null, or unsupported.
*/
public void initialize(DSAParams params, SecureRandom random)
@@ -112,7 +112,7 @@
* @param genParams whether or not to generate new parameters for
* the modulus length requested.
*
- * @exception InvalidParameterException if {@code modlen} is
+ * @throws InvalidParameterException if {@code modlen} is
* invalid, or unsupported, or if {@code genParams} is false and there
* are no precomputed parameters for the requested modulus length.
*/
--- a/src/java.base/share/classes/java/security/spec/DSAGenParameterSpec.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/spec/DSAGenParameterSpec.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -46,7 +46,7 @@
* length of the domain parameter seed in bits.
* @param primePLen the desired length of the prime P in bits.
* @param subprimeQLen the desired length of the sub-prime Q in bits.
- * @exception IllegalArgumentException if {@code primePLen}
+ * @throws IllegalArgumentException if {@code primePLen}
* or {@code subprimeQLen} is illegal per the specification of
* FIPS 186-3.
*/
@@ -62,7 +62,7 @@
* @param subprimeQLen the desired length of the sub-prime Q in bits.
* @param seedLen the desired length of the domain parameter seed in bits,
* shall be equal to or greater than {@code subprimeQLen}.
- * @exception IllegalArgumentException if {@code primePLenLen},
+ * @throws IllegalArgumentException if {@code primePLenLen},
* {@code subprimeQLen}, or {@code seedLen} is illegal per the
* specification of FIPS 186-3.
*/
--- a/src/java.base/share/classes/java/security/spec/ECFieldF2m.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/spec/ECFieldF2m.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,7 +47,7 @@
* Creates an elliptic curve characteristic 2 finite
* field which has 2^{@code m} elements with normal basis.
* @param m with 2^{@code m} being the number of elements.
- * @exception IllegalArgumentException if {@code m}
+ * @throws IllegalArgumentException if {@code m}
* is not positive.
*/
public ECFieldF2m(int m) {
@@ -76,8 +76,8 @@
* @param m with 2^{@code m} being the number of elements.
* @param rp the BigInteger whose i-th bit corresponds to
* the i-th coefficient of the reduction polynomial.
- * @exception NullPointerException if {@code rp} is null.
- * @exception IllegalArgumentException if {@code m}
+ * @throws NullPointerException if {@code rp} is null.
+ * @throws IllegalArgumentException if {@code m}
* is not positive, or {@code rp} does not represent
* a valid reduction polynomial.
*/
@@ -123,8 +123,8 @@
* @param ks the order of the middle term(s) of the
* reduction polynomial. Contents of this array are copied
* to protect against subsequent modification.
- * @exception NullPointerException if {@code ks} is null.
- * @exception IllegalArgumentException if{@code m}
+ * @throws NullPointerException if {@code ks} is null.
+ * @throws IllegalArgumentException if{@code m}
* is not positive, or the length of {@code ks}
* is neither 1 nor 3, or values in {@code ks}
* are not between {@code m}-1 and 1 (inclusive)
--- a/src/java.base/share/classes/java/security/spec/ECFieldFp.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/spec/ECFieldFp.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -45,8 +45,8 @@
* Creates an elliptic curve prime finite field
* with the specified prime {@code p}.
* @param p the prime.
- * @exception NullPointerException if {@code p} is null.
- * @exception IllegalArgumentException if {@code p}
+ * @throws NullPointerException if {@code p} is null.
+ * @throws IllegalArgumentException if {@code p}
* is not positive.
*/
public ECFieldFp(BigInteger p) {
--- a/src/java.base/share/classes/java/security/spec/ECParameterSpec.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/spec/ECParameterSpec.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -51,9 +51,9 @@
* @param g the generator which is also known as the base point.
* @param n the order of the generator {@code g}.
* @param h the cofactor.
- * @exception NullPointerException if {@code curve},
+ * @throws NullPointerException if {@code curve},
* {@code g}, or {@code n} is null.
- * @exception IllegalArgumentException if {@code n}
+ * @throws IllegalArgumentException if {@code n}
* or {@code h} is not positive.
*/
public ECParameterSpec(EllipticCurve curve, ECPoint g,
--- a/src/java.base/share/classes/java/security/spec/ECPoint.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/spec/ECPoint.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -57,7 +57,7 @@
* {@code x} and affine y-coordinate {@code y}.
* @param x the affine x-coordinate.
* @param y the affine y-coordinate.
- * @exception NullPointerException if {@code x} or
+ * @throws NullPointerException if {@code x} or
* {@code y} is null.
*/
public ECPoint(BigInteger x, BigInteger y) {
--- a/src/java.base/share/classes/java/security/spec/ECPrivateKeySpec.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/spec/ECPrivateKeySpec.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -48,7 +48,7 @@
* @param s the private value.
* @param params the associated elliptic curve domain
* parameters.
- * @exception NullPointerException if {@code s}
+ * @throws NullPointerException if {@code s}
* or {@code params} is null.
*/
public ECPrivateKeySpec(BigInteger s, ECParameterSpec params) {
--- a/src/java.base/share/classes/java/security/spec/ECPublicKeySpec.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/spec/ECPublicKeySpec.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,9 +47,9 @@
* @param w the public point.
* @param params the associated elliptic curve domain
* parameters.
- * @exception NullPointerException if {@code w}
+ * @throws NullPointerException if {@code w}
* or {@code params} is null.
- * @exception IllegalArgumentException if {@code w}
+ * @throws IllegalArgumentException if {@code w}
* is point at infinity, i.e. ECPoint.POINT_INFINITY
*/
public ECPublicKeySpec(ECPoint w, ECParameterSpec params) {
--- a/src/java.base/share/classes/java/security/spec/EllipticCurve.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/spec/EllipticCurve.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -73,9 +73,9 @@
* @param field the finite field that this elliptic curve is over.
* @param a the first coefficient of this elliptic curve.
* @param b the second coefficient of this elliptic curve.
- * @exception NullPointerException if {@code field},
+ * @throws NullPointerException if {@code field},
* {@code a}, or {@code b} is null.
- * @exception IllegalArgumentException if {@code a}
+ * @throws IllegalArgumentException if {@code a}
* or {@code b} is not null and not in {@code field}.
*/
public EllipticCurve(ECField field, BigInteger a,
@@ -93,9 +93,9 @@
* @param seed the bytes used during curve generation for later
* validation. Contents of this array are copied to protect against
* subsequent modification.
- * @exception NullPointerException if {@code field},
+ * @throws NullPointerException if {@code field},
* {@code a}, or {@code b} is null.
- * @exception IllegalArgumentException if {@code a}
+ * @throws IllegalArgumentException if {@code a}
* or {@code b} is not null and not in {@code field}.
*/
public EllipticCurve(ECField field, BigInteger a,
--- a/src/java.base/share/classes/java/security/spec/MGF1ParameterSpec.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/spec/MGF1ParameterSpec.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -116,7 +116,7 @@
*
* @param mdName the algorithm name for the message digest
* used in this mask generation function MGF1.
- * @exception NullPointerException if {@code mdName} is null.
+ * @throws NullPointerException if {@code mdName} is null.
*/
public MGF1ParameterSpec(String mdName) {
if (mdName == null) {
--- a/src/java.base/share/classes/java/security/spec/PSSParameterSpec.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/spec/PSSParameterSpec.java Sat Sep 21 12:10:52 2019 +0200
@@ -128,9 +128,9 @@
* getMGFParameters().
* @param saltLen the length of salt
* @param trailerField the value of the trailer field
- * @exception NullPointerException if {@code mdName}, or {@code mgfName}
+ * @throws NullPointerException if {@code mdName}, or {@code mgfName}
* is null
- * @exception IllegalArgumentException if {@code saltLen} or
+ * @throws IllegalArgumentException if {@code saltLen} or
* {@code trailerField} is less than 0
* @since 1.5
*/
@@ -161,7 +161,7 @@
*
* @param saltLen the length of salt in bytes to be used in PKCS#1
* PSS encoding
- * @exception IllegalArgumentException if {@code saltLen} is
+ * @throws IllegalArgumentException if {@code saltLen} is
* less than 0
*/
public PSSParameterSpec(int saltLen) {
--- a/src/java.base/share/classes/java/security/spec/RSAOtherPrimeInfo.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/security/spec/RSAOtherPrimeInfo.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -67,7 +67,7 @@
* @param primeExponent the exponent.
* @param crtCoefficient the Chinese Remainder Theorem
* coefficient.
- * @exception NullPointerException if any of the parameters, i.e.
+ * @throws NullPointerException if any of the parameters, i.e.
* {@code prime}, {@code primeExponent},
* {@code crtCoefficient}, is null.
*
--- a/src/java.base/share/classes/java/text/AttributedString.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/AttributedString.java Sat Sep 21 12:10:52 2019 +0200
@@ -117,7 +117,7 @@
/**
* Constructs an AttributedString instance with the given text.
* @param text The text for this attributed string.
- * @exception NullPointerException if <code>text</code> is null.
+ * @throws NullPointerException if <code>text</code> is null.
*/
public AttributedString(String text) {
if (text == null) {
@@ -130,9 +130,9 @@
* Constructs an AttributedString instance with the given text and attributes.
* @param text The text for this attributed string.
* @param attributes The attributes that apply to the entire string.
- * @exception NullPointerException if <code>text</code> or
+ * @throws NullPointerException if <code>text</code> or
* <code>attributes</code> is null.
- * @exception IllegalArgumentException if the text has length 0
+ * @throws IllegalArgumentException if the text has length 0
* and the attributes parameter is not an empty Map (attributes
* cannot be applied to a 0-length range).
*/
@@ -171,7 +171,7 @@
* Constructs an AttributedString instance with the given attributed
* text represented by AttributedCharacterIterator.
* @param text The text for this attributed string.
- * @exception NullPointerException if <code>text</code> is null.
+ * @throws NullPointerException if <code>text</code> is null.
*/
public AttributedString(AttributedCharacterIterator text) {
// If performance is critical, this constructor should be
@@ -192,8 +192,8 @@
* @param beginIndex Index of the first character of the range.
* @param endIndex Index of the character following the last character
* of the range.
- * @exception NullPointerException if <code>text</code> is null.
- * @exception IllegalArgumentException if the subrange given by
+ * @throws NullPointerException if <code>text</code> is null.
+ * @throws IllegalArgumentException if the subrange given by
* beginIndex and endIndex is out of the text range.
* @see java.text.Annotation
*/
@@ -220,8 +220,8 @@
* @param attributes Specifies attributes to be extracted
* from the text. If null is specified, all available attributes will
* be used.
- * @exception NullPointerException if <code>text</code> is null.
- * @exception IllegalArgumentException if the subrange given by
+ * @throws NullPointerException if <code>text</code> is null.
+ * @throws IllegalArgumentException if the subrange given by
* beginIndex and endIndex is out of the text range.
* @see java.text.Annotation
*/
@@ -307,8 +307,8 @@
* Adds an attribute to the entire string.
* @param attribute the attribute key
* @param value the value of the attribute; may be null
- * @exception NullPointerException if <code>attribute</code> is null.
- * @exception IllegalArgumentException if the AttributedString has length 0
+ * @throws NullPointerException if <code>attribute</code> is null.
+ * @throws IllegalArgumentException if the AttributedString has length 0
* (attributes cannot be applied to a 0-length range).
*/
public void addAttribute(Attribute attribute, Object value) {
@@ -331,8 +331,8 @@
* @param value The value of the attribute. May be null.
* @param beginIndex Index of the first character of the range.
* @param endIndex Index of the character following the last character of the range.
- * @exception NullPointerException if <code>attribute</code> is null.
- * @exception IllegalArgumentException if beginIndex is less than 0, endIndex is
+ * @throws NullPointerException if <code>attribute</code> is null.
+ * @throws IllegalArgumentException if beginIndex is less than 0, endIndex is
* greater than the length of the string, or beginIndex and endIndex together don't
* define a non-empty subrange of the string.
*/
@@ -356,8 +356,8 @@
* @param beginIndex Index of the first character of the range.
* @param endIndex Index of the character following the last
* character of the range.
- * @exception NullPointerException if <code>attributes</code> is null.
- * @exception IllegalArgumentException if beginIndex is less than
+ * @throws NullPointerException if <code>attributes</code> is null.
+ * @throws IllegalArgumentException if beginIndex is less than
* 0, endIndex is greater than the length of the string, or
* beginIndex and endIndex together don't define a non-empty
* subrange of the string and the attributes parameter is not an
@@ -580,7 +580,7 @@
* @param beginIndex the index of the first character
* @param endIndex the index of the character following the last character
* @return an iterator providing access to the text and its attributes
- * @exception IllegalArgumentException if beginIndex is less than 0,
+ * @throws IllegalArgumentException if beginIndex is less than 0,
* endIndex is greater than the length of the string, or beginIndex is
* greater than endIndex.
*/
--- a/src/java.base/share/classes/java/text/BreakIterator.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/BreakIterator.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -327,7 +327,7 @@
* @return The first boundary after the specified offset or
* <code>BreakIterator.DONE</code> if the last text boundary is passed in
* as the offset.
- * @exception IllegalArgumentException if the specified offset is less than
+ * @throws IllegalArgumentException if the specified offset is less than
* the first text boundary or greater than the last text boundary.
*/
public abstract int following(int offset);
@@ -343,7 +343,7 @@
* @return The last boundary before the specified offset or
* <code>BreakIterator.DONE</code> if the first text boundary is passed in
* as the offset.
- * @exception IllegalArgumentException if the specified offset is less than
+ * @throws IllegalArgumentException if the specified offset is less than
* the first text boundary or greater than the last text boundary.
* @since 1.2
*/
@@ -363,7 +363,7 @@
* @param offset the character offset to check.
* @return <code>true</code> if "offset" is a boundary position,
* <code>false</code> otherwise.
- * @exception IllegalArgumentException if the specified offset is less than
+ * @throws IllegalArgumentException if the specified offset is less than
* the first text boundary or greater than the last text boundary.
* @since 1.2
*/
@@ -453,7 +453,7 @@
* for the given locale.
* @param locale the desired locale
* @return A break iterator for word breaks
- * @exception NullPointerException if <code>locale</code> is null
+ * @throws NullPointerException if <code>locale</code> is null
*/
public static BreakIterator getWordInstance(Locale locale)
{
@@ -477,7 +477,7 @@
* for the given locale.
* @param locale the desired locale
* @return A break iterator for line breaks
- * @exception NullPointerException if <code>locale</code> is null
+ * @throws NullPointerException if <code>locale</code> is null
*/
public static BreakIterator getLineInstance(Locale locale)
{
@@ -501,7 +501,7 @@
* for the given locale.
* @param locale the desired locale
* @return A break iterator for character breaks
- * @exception NullPointerException if <code>locale</code> is null
+ * @throws NullPointerException if <code>locale</code> is null
*/
public static BreakIterator getCharacterInstance(Locale locale)
{
@@ -525,7 +525,7 @@
* for the given locale.
* @param locale the desired locale
* @return A break iterator for sentence breaks
- * @exception NullPointerException if <code>locale</code> is null
+ * @throws NullPointerException if <code>locale</code> is null
*/
public static BreakIterator getSentenceInstance(Locale locale)
{
--- a/src/java.base/share/classes/java/text/ChoiceFormat.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/ChoiceFormat.java Sat Sep 21 12:10:52 2019 +0200
@@ -174,7 +174,7 @@
/**
* Sets the pattern.
* @param newPattern See the class description.
- * @exception NullPointerException if {@code newPattern}
+ * @throws NullPointerException if {@code newPattern}
* is {@code null}
*/
public void applyPattern(String newPattern) {
@@ -313,7 +313,7 @@
* Constructs with limits and corresponding formats based on the pattern.
*
* @param newPattern the new pattern string
- * @exception NullPointerException if {@code newPattern} is
+ * @throws NullPointerException if {@code newPattern} is
* {@code null}
* @see #applyPattern
*/
@@ -326,7 +326,7 @@
*
* @param limits limits in ascending order
* @param formats corresponding format strings
- * @exception NullPointerException if {@code limits} or {@code formats}
+ * @throws NullPointerException if {@code limits} or {@code formats}
* is {@code null}
* @see #setChoices
*/
@@ -347,7 +347,7 @@
* When formatting with object Y,
* if the object is a NumberFormat, then ((NumberFormat) Y).format(X)
* is called. Otherwise Y.toString() is called.
- * @exception NullPointerException if {@code limits} or
+ * @throws NullPointerException if {@code limits} or
* {@code formats} is {@code null}
*/
public void setChoices(double[] limits, String formats[]) {
@@ -396,7 +396,7 @@
* @param number number to be formatted and substituted.
* @param toAppendTo where text is appended.
* @param status ignore no useful status is returned.
- * @exception NullPointerException if {@code toAppendTo}
+ * @throws NullPointerException if {@code toAppendTo}
* is {@code null}
*/
public StringBuffer format(double number, StringBuffer toAppendTo,
@@ -426,7 +426,7 @@
* status.index is unchanged and status.errorIndex is set to the
* first index of the character that caused the parse to fail.
* @return A Number representing the value of the number parsed.
- * @exception NullPointerException if {@code status} is {@code null}
+ * @throws NullPointerException if {@code status} is {@code null}
* or if {@code text} is {@code null} and the list of
* choice strings is not empty.
*/
--- a/src/java.base/share/classes/java/text/CollationKey.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/CollationKey.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -136,7 +136,7 @@
* CollationKey constructor.
*
* @param source the source string
- * @exception NullPointerException if {@code source} is null
+ * @throws NullPointerException if {@code source} is null
* @since 1.6
*/
protected CollationKey(String source) {
--- a/src/java.base/share/classes/java/text/Collator.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/Collator.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -296,7 +296,7 @@
* @return a negative integer, zero, or a positive integer as the
* first argument is less than, equal to, or greater than the
* second.
- * @exception ClassCastException the arguments cannot be cast to Strings.
+ * @throws ClassCastException the arguments cannot be cast to Strings.
* @see java.util.Comparator
* @since 1.2
*/
@@ -358,7 +358,7 @@
* @see java.text.Collator#SECONDARY
* @see java.text.Collator#TERTIARY
* @see java.text.Collator#IDENTICAL
- * @exception IllegalArgumentException If the new strength value is not one of
+ * @throws IllegalArgumentException If the new strength value is not one of
* PRIMARY, SECONDARY, TERTIARY or IDENTICAL.
*/
public synchronized void setStrength(int newStrength) {
@@ -402,7 +402,7 @@
* @see java.text.Collator#NO_DECOMPOSITION
* @see java.text.Collator#CANONICAL_DECOMPOSITION
* @see java.text.Collator#FULL_DECOMPOSITION
- * @exception IllegalArgumentException If the given value is not a valid decomposition
+ * @throws IllegalArgumentException If the given value is not a valid decomposition
* mode.
*/
public synchronized void setDecomposition(int decompositionMode) {
--- a/src/java.base/share/classes/java/text/CompactNumberFormat.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/CompactNumberFormat.java Sat Sep 21 12:10:52 2019 +0200
@@ -1342,7 +1342,7 @@
* @param pos a {@code ParsePosition} object with index and error
* index information as described above
* @return the parsed value, or {@code null} if the parse fails
- * @exception NullPointerException if {@code text} or
+ * @throws NullPointerException if {@code text} or
* {@code pos} is null
*
*/
@@ -2143,4 +2143,3 @@
}
}
-
--- a/src/java.base/share/classes/java/text/DateFormat.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/DateFormat.java Sat Sep 21 12:10:52 2019 +0200
@@ -323,7 +323,7 @@
* first occurrence of the timezone pattern character {@code 'z'}.
* @return the string buffer passed in as {@code toAppendTo},
* with formatted text appended.
- * @exception IllegalArgumentException if the {@code Format} cannot format
+ * @throws IllegalArgumentException if the {@code Format} cannot format
* the given {@code obj}.
* @see java.text.Format
*/
@@ -385,7 +385,7 @@
*
* @param source A <code>String</code> whose beginning should be parsed.
* @return A <code>Date</code> parsed from the string.
- * @exception ParseException if the beginning of the specified string
+ * @throws ParseException if the beginning of the specified string
* cannot be parsed.
*/
public Date parse(String source) throws ParseException
--- a/src/java.base/share/classes/java/text/DateFormatSymbols.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/DateFormatSymbols.java Sat Sep 21 12:10:52 2019 +0200
@@ -122,7 +122,7 @@
* @see #getInstance()
* @see java.util.Locale#getDefault(java.util.Locale.Category)
* @see java.util.Locale.Category#FORMAT
- * @exception java.util.MissingResourceException
+ * @throws java.util.MissingResourceException
* if the resources for the default locale cannot be
* found or cannot be loaded.
*/
@@ -142,7 +142,7 @@
*
* @param locale the desired locale
* @see #getInstance(Locale)
- * @exception java.util.MissingResourceException
+ * @throws java.util.MissingResourceException
* if the resources for the specified locale cannot be
* found or cannot be loaded.
*/
@@ -340,7 +340,7 @@
* implementations.
* @param locale the given locale.
* @return a <code>DateFormatSymbols</code> instance.
- * @exception NullPointerException if <code>locale</code> is null
+ * @throws NullPointerException if <code>locale</code> is null
* @since 1.6
*/
public static final DateFormatSymbols getInstance(Locale locale) {
@@ -596,9 +596,9 @@
* All other entries are localized names.
*
* @param newZoneStrings the new time zone strings.
- * @exception IllegalArgumentException if the length of any row in
+ * @throws IllegalArgumentException if the length of any row in
* <code>newZoneStrings</code> is less than 5
- * @exception NullPointerException if <code>newZoneStrings</code> is null
+ * @throws NullPointerException if <code>newZoneStrings</code> is null
* @see #getZoneStrings()
*/
public void setZoneStrings(String[][] newZoneStrings) {
--- a/src/java.base/share/classes/java/text/DecimalFormat.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/DecimalFormat.java Sat Sep 21 12:10:52 2019 +0200
@@ -425,8 +425,8 @@
* locale.
*
* @param pattern a non-localized pattern string.
- * @exception NullPointerException if {@code pattern} is null
- * @exception IllegalArgumentException if the given pattern is invalid.
+ * @throws NullPointerException if {@code pattern} is null
+ * @throws IllegalArgumentException if the given pattern is invalid.
* @see java.text.NumberFormat#getInstance
* @see java.text.NumberFormat#getNumberInstance
* @see java.text.NumberFormat#getCurrencyInstance
@@ -452,8 +452,8 @@
*
* @param pattern a non-localized pattern string
* @param symbols the set of symbols to be used
- * @exception NullPointerException if any of the given arguments is null
- * @exception IllegalArgumentException if the given pattern is invalid
+ * @throws NullPointerException if any of the given arguments is null
+ * @throws IllegalArgumentException if the given pattern is invalid
* @see java.text.NumberFormat#getInstance
* @see java.text.NumberFormat#getNumberInstance
* @see java.text.NumberFormat#getCurrencyInstance
@@ -486,11 +486,11 @@
* to 0 and 9, respectively for the output string
* {@code 1,234,567.89}.
* @return the value passed in as {@code toAppendTo}
- * @exception IllegalArgumentException if {@code number} is
+ * @throws IllegalArgumentException if {@code number} is
* null or not an instance of {@code Number}.
- * @exception NullPointerException if {@code toAppendTo} or
+ * @throws NullPointerException if {@code toAppendTo} or
* {@code pos} is null
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @see java.text.FieldPosition
*/
@@ -528,9 +528,9 @@
* and end index of {@code fieldPosition} will be set
* to 0 and 9, respectively for the output string
* {@code 1,234,567.89}.
- * @exception NullPointerException if {@code result} or
+ * @throws NullPointerException if {@code result} or
* {@code fieldPosition} is {@code null}
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @return The formatted number string
* @see java.text.FieldPosition
@@ -565,7 +565,7 @@
* @param number The double to format
* @param result where the text is to be appended
* @param delegate notified of locations of sub fields
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @return The formatted number string
*/
@@ -698,9 +698,9 @@
* and end index of {@code fieldPosition} will be set
* to 0 and 11, respectively for the output string
* {@code 123,456,789}.
- * @exception NullPointerException if {@code result} or
+ * @throws NullPointerException if {@code result} or
* {@code fieldPosition} is {@code null}
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @return The formatted number string
* @see java.text.FieldPosition
@@ -720,7 +720,7 @@
* @param result where the text is to be appended
* @param delegate notified of locations of sub fields
* @return The formatted number string
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @see java.text.FieldPosition
*/
@@ -795,7 +795,7 @@
* to 0 and 9, respectively for the output string
* {@code 1,234,567.89}.
* @return The formatted number string
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @see java.text.FieldPosition
*/
@@ -811,7 +811,7 @@
* @param number The BigDecimal to format
* @param result where the text is to be appended
* @param delegate notified of locations of sub fields
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @return The formatted number string
*/
@@ -854,7 +854,7 @@
* to 0 and 11, respectively for the output string
* {@code 123,456,789}.
* @return The formatted number string
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @see java.text.FieldPosition
*/
@@ -872,7 +872,7 @@
* @param result where the text is to be appended
* @param delegate notified of locations of sub fields
* @return The formatted number string
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @see java.text.FieldPosition
*/
@@ -923,10 +923,10 @@
* {@code NumberFormat.Field}, with the attribute value being the
* same as the attribute key.
*
- * @exception NullPointerException if obj is null.
- * @exception IllegalArgumentException when the Format cannot format the
+ * @throws NullPointerException if obj is null.
+ * @throws IllegalArgumentException when the Format cannot format the
* given object.
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @param obj The object to format
* @return AttributedCharacterIterator describing the formatted value.
@@ -2130,7 +2130,7 @@
* @param pos A {@code ParsePosition} object with index and error
* index information as described above.
* @return the parsed value, or {@code null} if the parse fails
- * @exception NullPointerException if {@code text} or
+ * @throws NullPointerException if {@code text} or
* {@code pos} is null.
*/
@Override
@@ -3254,8 +3254,8 @@
* these are presumed to be set in the positive pattern.
*
* @param pattern a new pattern
- * @exception NullPointerException if {@code pattern} is null
- * @exception IllegalArgumentException if the given pattern is invalid.
+ * @throws NullPointerException if {@code pattern} is null
+ * @throws IllegalArgumentException if the given pattern is invalid.
*/
public void applyPattern(String pattern) {
applyPattern(pattern, false);
@@ -3281,8 +3281,8 @@
* these are presumed to be set in the positive pattern.
*
* @param pattern a new pattern
- * @exception NullPointerException if {@code pattern} is null
- * @exception IllegalArgumentException if the given pattern is invalid.
+ * @throws NullPointerException if {@code pattern} is null
+ * @throws IllegalArgumentException if the given pattern is invalid.
*/
public void applyLocalizedPattern(String pattern) {
applyPattern(pattern, true);
@@ -3782,7 +3782,7 @@
* on this number format's symbols.
*
* @param currency the new currency to be used by this decimal format
- * @exception NullPointerException if {@code currency} is null
+ * @throws NullPointerException if {@code currency} is null
* @since 1.4
*/
@Override
@@ -3813,7 +3813,7 @@
*
* @param roundingMode The {@code RoundingMode} to be used
* @see #getRoundingMode()
- * @exception NullPointerException if {@code roundingMode} is null.
+ * @throws NullPointerException if {@code roundingMode} is null.
* @since 1.6
*/
@Override
--- a/src/java.base/share/classes/java/text/DecimalFormatSymbols.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/DecimalFormatSymbols.java Sat Sep 21 12:10:52 2019 +0200
@@ -109,7 +109,7 @@
* instead of the Latin numbering system.
*
* @param locale the desired locale
- * @exception NullPointerException if {@code locale} is null
+ * @throws NullPointerException if {@code locale} is null
*/
public DecimalFormatSymbols( Locale locale ) {
initialize( locale );
@@ -172,7 +172,7 @@
*
* @param locale the desired locale.
* @return a {@code DecimalFormatSymbols} instance.
- * @exception NullPointerException if {@code locale} is null
+ * @throws NullPointerException if {@code locale} is null
* @since 1.6
*/
public static final DecimalFormatSymbols getInstance(Locale locale) {
@@ -576,7 +576,7 @@
* symbol attribute to the currency's ISO 4217 currency code.
*
* @param currency the new currency to be used
- * @exception NullPointerException if {@code currency} is null
+ * @throws NullPointerException if {@code currency} is null
* @since 1.4
* @see #setCurrencySymbol
* @see #setInternationalCurrencySymbol
@@ -652,7 +652,7 @@
* Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
*
* @param exp the exponent separator string
- * @exception NullPointerException if {@code exp} is null
+ * @throws NullPointerException if {@code exp} is null
* @see #getExponentSeparator()
* @since 1.6
*/
--- a/src/java.base/share/classes/java/text/DigitList.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/DigitList.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -445,7 +445,7 @@
* @param alreadyRounded whether or not rounding up has already happened.
* @param valueExactAsDecimal whether or not collected digits provide
* an exact decimal representation of the value.
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @return true if digit <code>maximumDigits-1</code> should be
* incremented
--- a/src/java.base/share/classes/java/text/Format.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/Format.java Sat Sep 21 12:10:52 2019 +0200
@@ -152,7 +152,7 @@
*
* @param obj The object to format
* @return Formatted string.
- * @exception IllegalArgumentException if the Format cannot format the given
+ * @throws IllegalArgumentException if the Format cannot format the given
* object
*/
public final String format (Object obj) {
@@ -172,9 +172,9 @@
* in the formatted text
* @return the string buffer passed in as <code>toAppendTo</code>,
* with formatted text appended
- * @exception NullPointerException if <code>toAppendTo</code> or
+ * @throws NullPointerException if <code>toAppendTo</code> or
* <code>pos</code> is null
- * @exception IllegalArgumentException if the Format cannot format the given
+ * @throws IllegalArgumentException if the Format cannot format the given
* object
*/
public abstract StringBuffer format(Object obj,
@@ -197,8 +197,8 @@
* that support fields should override this and create an
* <code>AttributedCharacterIterator</code> with meaningful attributes.
*
- * @exception NullPointerException if obj is null.
- * @exception IllegalArgumentException when the Format cannot format the
+ * @throws NullPointerException if obj is null.
+ * @throws IllegalArgumentException when the Format cannot format the
* given object.
* @param obj The object to format
* @return AttributedCharacterIterator describing the formatted value.
@@ -237,7 +237,7 @@
*
* @param source A <code>String</code> whose beginning should be parsed.
* @return An <code>Object</code> parsed from the string.
- * @exception ParseException if the beginning of the specified string
+ * @throws ParseException if the beginning of the specified string
* cannot be parsed.
* @throws NullPointerException if {@code source} is null.
*/
--- a/src/java.base/share/classes/java/text/MergeCollation.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/MergeCollation.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -64,7 +64,7 @@
/**
* Creates from a pattern
- * @exception ParseException If the input pattern is incorrect.
+ * @throws ParseException If the input pattern is incorrect.
*/
public MergeCollation(String pattern) throws ParseException
{
--- a/src/java.base/share/classes/java/text/MessageFormat.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/MessageFormat.java Sat Sep 21 12:10:52 2019 +0200
@@ -362,8 +362,8 @@
* <a href="#patterns">class description</a>.
*
* @param pattern the pattern for this message format
- * @exception IllegalArgumentException if the pattern is invalid
- * @exception NullPointerException if {@code pattern} is
+ * @throws IllegalArgumentException if the pattern is invalid
+ * @throws NullPointerException if {@code pattern} is
* {@code null}
*/
public MessageFormat(String pattern) {
@@ -381,8 +381,8 @@
*
* @param pattern the pattern for this message format
* @param locale the locale for this message format
- * @exception IllegalArgumentException if the pattern is invalid
- * @exception NullPointerException if {@code pattern} is
+ * @throws IllegalArgumentException if the pattern is invalid
+ * @throws NullPointerException if {@code pattern} is
* {@code null}
* @since 1.4
*/
@@ -430,8 +430,8 @@
* <a href="#patterns">class description</a>.
*
* @param pattern the pattern for this message format
- * @exception IllegalArgumentException if the pattern is invalid
- * @exception NullPointerException if {@code pattern} is
+ * @throws IllegalArgumentException if the pattern is invalid
+ * @throws NullPointerException if {@code pattern} is
* {@code null}
*/
@SuppressWarnings("fallthrough") // fallthrough in switch is expected, suppress it
@@ -614,7 +614,7 @@
* than <code>newFormats.length</code> are replaced.
*
* @param newFormats the new formats to use
- * @exception NullPointerException if <code>newFormats</code> is null
+ * @throws NullPointerException if <code>newFormats</code> is null
* @since 1.4
*/
public void setFormatsByArgumentIndex(Format[] newFormats) {
@@ -646,7 +646,7 @@
* the <code>parse</code> methods.
*
* @param newFormats the new formats to use
- * @exception NullPointerException if <code>newFormats</code> is null
+ * @throws NullPointerException if <code>newFormats</code> is null
*/
public void setFormats(Format[] newFormats) {
int runsToCopy = newFormats.length;
@@ -698,7 +698,7 @@
*
* @param formatElementIndex the index of a format element within the pattern
* @param newFormat the format to use for the specified format element
- * @exception ArrayIndexOutOfBoundsException if {@code formatElementIndex} is equal to or
+ * @throws ArrayIndexOutOfBoundsException if {@code formatElementIndex} is equal to or
* larger than the number of format elements in the pattern string
*/
public void setFormat(int formatElementIndex, Format newFormat) {
@@ -829,10 +829,10 @@
in the output string.
* @return the string buffer passed in as {@code result}, with formatted
* text appended
- * @exception IllegalArgumentException if an argument in the
+ * @throws IllegalArgumentException if an argument in the
* <code>arguments</code> array is not of the type
* expected by the format element(s) that use it.
- * @exception NullPointerException if {@code result} is {@code null}
+ * @throws NullPointerException if {@code result} is {@code null}
*/
public final StringBuffer format(Object[] arguments, StringBuffer result,
FieldPosition pos)
@@ -850,11 +850,11 @@
* @param pattern the pattern string
* @param arguments object(s) to format
* @return the formatted string
- * @exception IllegalArgumentException if the pattern is invalid,
+ * @throws IllegalArgumentException if the pattern is invalid,
* or if an argument in the <code>arguments</code> array
* is not of the type expected by the format element(s)
* that use it.
- * @exception NullPointerException if {@code pattern} is {@code null}
+ * @throws NullPointerException if {@code pattern} is {@code null}
*/
public static String format(String pattern, Object ... arguments) {
MessageFormat temp = new MessageFormat(pattern);
@@ -875,10 +875,10 @@
* @param result where text is appended.
* @param pos keeps track on the position of the first replaced argument
* in the output string.
- * @exception IllegalArgumentException if an argument in the
+ * @throws IllegalArgumentException if an argument in the
* <code>arguments</code> array is not of the type
* expected by the format element(s) that use it.
- * @exception NullPointerException if {@code result} is {@code null}
+ * @throws NullPointerException if {@code result} is {@code null}
*/
public final StringBuffer format(Object arguments, StringBuffer result,
FieldPosition pos)
@@ -915,8 +915,8 @@
*
* @param arguments an array of objects to be formatted and substituted.
* @return AttributedCharacterIterator describing the formatted value.
- * @exception NullPointerException if <code>arguments</code> is null.
- * @exception IllegalArgumentException if an argument in the
+ * @throws NullPointerException if <code>arguments</code> is null.
+ * @throws IllegalArgumentException if an argument in the
* <code>arguments</code> array is not of the type
* expected by the format element(s) that use it.
* @since 1.4
@@ -968,7 +968,7 @@
* @param source the string to parse
* @param pos the parse position
* @return an array of parsed objects
- * @exception NullPointerException if {@code pos} is {@code null}
+ * @throws NullPointerException if {@code pos} is {@code null}
* for a non-null {@code source} string.
*/
public Object[] parse(String source, ParsePosition pos) {
@@ -1057,7 +1057,7 @@
*
* @param source A <code>String</code> whose beginning should be parsed.
* @return An <code>Object</code> array parsed from the string.
- * @exception ParseException if the beginning of the specified string
+ * @throws ParseException if the beginning of the specified string
* cannot be parsed.
*/
public Object[] parse(String source) throws ParseException {
@@ -1253,7 +1253,7 @@
* {@code Field.ARGUMENT} as the field attribute, the location of
* the first replaced argument will be set in it.
*
- * @exception IllegalArgumentException if an argument in the
+ * @throws IllegalArgumentException if an argument in the
* <code>arguments</code> array is not of the type
* expected by the format element(s) that use it.
*/
--- a/src/java.base/share/classes/java/text/NumberFormat.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/NumberFormat.java Sat Sep 21 12:10:52 2019 +0200
@@ -259,11 +259,11 @@
* to 0 and 9, respectively for the output string
* {@code 1,234,567.89}.
* @return the value passed in as <code>toAppendTo</code>
- * @exception IllegalArgumentException if <code>number</code> is
+ * @throws IllegalArgumentException if <code>number</code> is
* null or not an instance of <code>Number</code>.
- * @exception NullPointerException if <code>toAppendTo</code> or
+ * @throws NullPointerException if <code>toAppendTo</code> or
* <code>pos</code> is null
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @see java.text.FieldPosition
*/
@@ -318,7 +318,7 @@
*
* @param number the double number to format
* @return the formatted String
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @see java.text.Format#format
*/
@@ -343,7 +343,7 @@
*
* @param number the long number to format
* @return the formatted String
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @see java.text.Format#format
*/
@@ -367,7 +367,7 @@
* to 0 and 9, respectively for the output string
* {@code 1,234,567.89}.
* @return the formatted StringBuffer
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @see java.text.Format#format
*/
@@ -390,7 +390,7 @@
* to 0 and 11, respectively for the output string
* {@code 123,456,789}.
* @return the formatted StringBuffer
- * @exception ArithmeticException if rounding is needed with rounding
+ * @throws ArithmeticException if rounding is needed with rounding
* mode being set to RoundingMode.UNNECESSARY
* @see java.text.Format#format
*/
@@ -424,7 +424,7 @@
*
* @param source A <code>String</code> whose beginning should be parsed.
* @return A <code>Number</code> parsed from the string.
- * @exception ParseException if the beginning of the specified string
+ * @throws ParseException if the beginning of the specified string
* cannot be parsed.
*/
public Number parse(String source) throws ParseException {
@@ -891,7 +891,7 @@
* <code>UnsupportedOperationException</code>.
*
* @return the currency used by this number format, or <code>null</code>
- * @exception UnsupportedOperationException if the number format class
+ * @throws UnsupportedOperationException if the number format class
* doesn't implement currency formatting
* @since 1.4
*/
@@ -908,9 +908,9 @@
* <code>UnsupportedOperationException</code>.
*
* @param currency the new currency to be used by this number format
- * @exception UnsupportedOperationException if the number format class
+ * @throws UnsupportedOperationException if the number format class
* doesn't implement currency formatting
- * @exception NullPointerException if <code>currency</code> is null
+ * @throws NullPointerException if <code>currency</code> is null
* @since 1.4
*/
public void setCurrency(Currency currency) {
@@ -924,7 +924,7 @@
* Subclasses which handle different rounding modes should override
* this method.
*
- * @exception UnsupportedOperationException The default implementation
+ * @throws UnsupportedOperationException The default implementation
* always throws this exception
* @return The <code>RoundingMode</code> used for this NumberFormat.
* @see #setRoundingMode(RoundingMode)
@@ -941,9 +941,9 @@
* Subclasses which handle different rounding modes should override
* this method.
*
- * @exception UnsupportedOperationException The default implementation
+ * @throws UnsupportedOperationException The default implementation
* always throws this exception
- * @exception NullPointerException if <code>roundingMode</code> is null
+ * @throws NullPointerException if <code>roundingMode</code> is null
* @param roundingMode The <code>RoundingMode</code> to be used
* @see #getRoundingMode()
* @since 1.6
--- a/src/java.base/share/classes/java/text/RBTableBuilder.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/RBTableBuilder.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -72,7 +72,7 @@
* stores them back in the RBCollationTables object. It is called
* ONLY by the RBCollationTables constructor.
* @see RuleBasedCollator#RuleBasedCollator
- * @exception ParseException If the rules format is incorrect.
+ * @throws ParseException If the rules format is incorrect.
*/
public void build(String pattern, int decmp) throws ParseException {
--- a/src/java.base/share/classes/java/text/RuleBasedCollator.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/RuleBasedCollator.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -273,7 +273,7 @@
* description for more details on the collation rule syntax.
* @see java.util.Locale
* @param rules the collation rules to build the collation table from.
- * @exception ParseException A format exception
+ * @throws ParseException A format exception
* will be thrown if the build process of the rules fails. For
* example, build rule "a < ? < d" will cause the constructor to
* throw the ParseException because the '?' is not quoted.
@@ -290,7 +290,7 @@
* @param rules the collation rules to build the collation table from.
* @param decomp the decomposition strength used to build the
* collation table and to perform comparisons.
- * @exception ParseException A format exception
+ * @throws ParseException A format exception
* will be thrown if the build process of the rules fails. For
* example, build rule "a < ? < d" will cause the constructor to
* throw the ParseException because the '?' is not quoted.
@@ -350,7 +350,7 @@
* than, greater than or equal to another string in a language.
* This can be overridden in a subclass.
*
- * @exception NullPointerException if <code>source</code> or <code>target</code> is null.
+ * @throws NullPointerException if <code>source</code> or <code>target</code> is null.
*/
public synchronized int compare(String source, String target)
{
--- a/src/java.base/share/classes/java/text/SimpleDateFormat.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/SimpleDateFormat.java Sat Sep 21 12:10:52 2019 +0200
@@ -592,8 +592,8 @@
* @see java.util.Locale#getDefault(java.util.Locale.Category)
* @see java.util.Locale.Category#FORMAT
* @param pattern the pattern describing the date and time format
- * @exception NullPointerException if the given pattern is null
- * @exception IllegalArgumentException if the given pattern is invalid
+ * @throws NullPointerException if the given pattern is null
+ * @throws IllegalArgumentException if the given pattern is invalid
*/
public SimpleDateFormat(String pattern)
{
@@ -609,8 +609,8 @@
*
* @param pattern the pattern describing the date and time format
* @param locale the locale whose date format symbols should be used
- * @exception NullPointerException if the given pattern or locale is null
- * @exception IllegalArgumentException if the given pattern is invalid
+ * @throws NullPointerException if the given pattern or locale is null
+ * @throws IllegalArgumentException if the given pattern is invalid
*/
public SimpleDateFormat(String pattern, Locale locale)
{
@@ -631,8 +631,8 @@
*
* @param pattern the pattern describing the date and time format
* @param formatSymbols the date format symbols to be used for formatting
- * @exception NullPointerException if the given pattern or formatSymbols is null
- * @exception IllegalArgumentException if the given pattern is invalid
+ * @throws NullPointerException if the given pattern or formatSymbols is null
+ * @throws IllegalArgumentException if the given pattern is invalid
*/
public SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)
{
@@ -739,8 +739,8 @@
* is "'o'", the TaggedData entry is
* <code>((TAG_QUOTE_ASCII_CHAR&nbs;<<&nbs;8)&nbs;|&nbs;'o')</code>.
*
- * @exception NullPointerException if the given pattern is null
- * @exception IllegalArgumentException if the given pattern is invalid
+ * @throws NullPointerException if the given pattern is null
+ * @throws IllegalArgumentException if the given pattern is invalid
*/
private char[] compile(String pattern) {
int length = pattern.length();
@@ -958,7 +958,7 @@
* {@code fieldPosition} will be set to 5 and 8, respectively, for the
* first occurrence of the timezone pattern character {@code 'z'}.
* @return the formatted date-time string.
- * @exception NullPointerException if any of the parameters is {@code null}.
+ * @throws NullPointerException if any of the parameters is {@code null}.
*/
@Override
public StringBuffer format(Date date, StringBuffer toAppendTo,
@@ -1012,8 +1012,8 @@
* <code>DateFormat.Field</code>, with the corresponding attribute value
* being the same as the attribute key.
*
- * @exception NullPointerException if obj is null.
- * @exception IllegalArgumentException if the Format cannot format the
+ * @throws NullPointerException if obj is null.
+ * @throws IllegalArgumentException if the Format cannot format the
* given object, or if the Format's pattern string is invalid.
* @param obj The object to format
* @return AttributedCharacterIterator describing the formatted value.
@@ -1459,7 +1459,7 @@
* index information as described above.
* @return A <code>Date</code> parsed from the string. In case of
* error, returns null.
- * @exception NullPointerException if <code>text</code> or <code>pos</code> is null.
+ * @throws NullPointerException if <code>text</code> or <code>pos</code> is null.
*/
@Override
public Date parse(String text, ParsePosition pos)
@@ -2276,7 +2276,7 @@
* Translates a pattern, mapping each character in the from string to the
* corresponding character in the to string.
*
- * @exception IllegalArgumentException if the given pattern is invalid
+ * @throws IllegalArgumentException if the given pattern is invalid
*/
private String translatePattern(String pattern, String from, String to) {
StringBuilder result = new StringBuilder();
@@ -2339,8 +2339,8 @@
* Applies the given pattern string to this date format.
*
* @param pattern the new date and time pattern for this date format
- * @exception NullPointerException if the given pattern is null
- * @exception IllegalArgumentException if the given pattern is invalid
+ * @throws NullPointerException if the given pattern is null
+ * @throws IllegalArgumentException if the given pattern is invalid
*/
public void applyPattern(String pattern)
{
@@ -2357,8 +2357,8 @@
*
* @param pattern a String to be mapped to the new date and time format
* pattern for this format
- * @exception NullPointerException if the given pattern is null
- * @exception IllegalArgumentException if the given pattern is invalid
+ * @throws NullPointerException if the given pattern is null
+ * @throws IllegalArgumentException if the given pattern is invalid
*/
public void applyLocalizedPattern(String pattern) {
String p = translatePattern(pattern,
@@ -2383,7 +2383,7 @@
* Sets the date and time format symbols of this date format.
*
* @param newFormatSymbols the new date and time format symbols
- * @exception NullPointerException if the given newFormatSymbols is null
+ * @throws NullPointerException if the given newFormatSymbols is null
* @see #getDateFormatSymbols
*/
public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)
@@ -2470,7 +2470,7 @@
* After reading an object from the input stream, the format
* pattern in the object is verified.
*
- * @exception InvalidObjectException if the pattern is invalid
+ * @throws InvalidObjectException if the pattern is invalid
*/
@java.io.Serial
private void readObject(ObjectInputStream stream)
--- a/src/java.base/share/classes/java/text/spi/BreakIteratorProvider.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/spi/BreakIteratorProvider.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -51,8 +51,8 @@
* for the given locale.
* @param locale the desired locale
* @return A break iterator for word breaks
- * @exception NullPointerException if <code>locale</code> is null
- * @exception IllegalArgumentException if <code>locale</code> isn't
+ * @throws NullPointerException if <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
@@ -66,8 +66,8 @@
* for the given locale.
* @param locale the desired locale
* @return A break iterator for line breaks
- * @exception NullPointerException if <code>locale</code> is null
- * @exception IllegalArgumentException if <code>locale</code> isn't
+ * @throws NullPointerException if <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
@@ -81,8 +81,8 @@
* for the given locale.
* @param locale the desired locale
* @return A break iterator for character breaks
- * @exception NullPointerException if <code>locale</code> is null
- * @exception IllegalArgumentException if <code>locale</code> isn't
+ * @throws NullPointerException if <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
@@ -96,8 +96,8 @@
* for the given locale.
* @param locale the desired locale
* @return A break iterator for sentence breaks
- * @exception NullPointerException if <code>locale</code> is null
- * @exception IllegalArgumentException if <code>locale</code> isn't
+ * @throws NullPointerException if <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
--- a/src/java.base/share/classes/java/text/spi/CollatorProvider.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/spi/CollatorProvider.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -49,9 +49,9 @@
* Returns a new <code>Collator</code> instance for the specified locale.
* @param locale the desired locale.
* @return the <code>Collator</code> for the desired locale.
- * @exception NullPointerException if
+ * @throws NullPointerException if
* <code>locale</code> is null
- * @exception IllegalArgumentException if <code>locale</code> isn't
+ * @throws IllegalArgumentException if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
--- a/src/java.base/share/classes/java/text/spi/DateFormatProvider.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/spi/DateFormatProvider.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -54,12 +54,12 @@
* {@link java.text.DateFormat#LONG DateFormat.LONG}, or
* {@link java.text.DateFormat#FULL DateFormat.FULL}.
* @param locale the desired locale.
- * @exception IllegalArgumentException if <code>style</code> is invalid,
+ * @throws IllegalArgumentException if <code>style</code> is invalid,
* or if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
- * @exception NullPointerException if <code>locale</code> is null
+ * @throws NullPointerException if <code>locale</code> is null
* @return a time formatter.
* @see java.text.DateFormat#getTimeInstance(int, java.util.Locale)
*/
@@ -74,12 +74,12 @@
* {@link java.text.DateFormat#LONG DateFormat.LONG}, or
* {@link java.text.DateFormat#FULL DateFormat.FULL}.
* @param locale the desired locale.
- * @exception IllegalArgumentException if <code>style</code> is invalid,
+ * @throws IllegalArgumentException if <code>style</code> is invalid,
* or if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
- * @exception NullPointerException if <code>locale</code> is null
+ * @throws NullPointerException if <code>locale</code> is null
* @return a date formatter.
* @see java.text.DateFormat#getDateInstance(int, java.util.Locale)
*/
@@ -99,13 +99,13 @@
* {@link java.text.DateFormat#LONG DateFormat.LONG}, or
* {@link java.text.DateFormat#FULL DateFormat.FULL}.
* @param locale the desired locale.
- * @exception IllegalArgumentException if <code>dateStyle</code> or
+ * @throws IllegalArgumentException if <code>dateStyle</code> or
* <code>timeStyle</code> is invalid,
* or if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
- * @exception NullPointerException if <code>locale</code> is null
+ * @throws NullPointerException if <code>locale</code> is null
* @return a date/time formatter.
* @see java.text.DateFormat#getDateTimeInstance(int, int, java.util.Locale)
*/
--- a/src/java.base/share/classes/java/text/spi/DateFormatSymbolsProvider.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/spi/DateFormatSymbolsProvider.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -50,8 +50,8 @@
* specified locale.
*
* @param locale the desired locale
- * @exception NullPointerException if <code>locale</code> is null
- * @exception IllegalArgumentException if <code>locale</code> isn't
+ * @throws NullPointerException if <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
--- a/src/java.base/share/classes/java/text/spi/DecimalFormatSymbolsProvider.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/spi/DecimalFormatSymbolsProvider.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -60,8 +60,8 @@
* specified locale.
*
* @param locale the desired locale
- * @exception NullPointerException if <code>locale</code> is null
- * @exception IllegalArgumentException if <code>locale</code> isn't
+ * @throws NullPointerException if <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
--- a/src/java.base/share/classes/java/text/spi/NumberFormatProvider.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/text/spi/NumberFormatProvider.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -50,8 +50,8 @@
* monetary values for the specified locale.
*
* @param locale the desired locale.
- * @exception NullPointerException if <code>locale</code> is null
- * @exception IllegalArgumentException if <code>locale</code> isn't
+ * @throws NullPointerException if <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
@@ -71,8 +71,8 @@
* java.text.NumberFormat#isParseIntegerOnly isParseIntegerOnly}).
*
* @param locale the desired locale
- * @exception NullPointerException if <code>locale</code> is null
- * @exception IllegalArgumentException if <code>locale</code> isn't
+ * @throws NullPointerException if <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
@@ -86,8 +86,8 @@
* the specified locale.
*
* @param locale the desired locale
- * @exception NullPointerException if <code>locale</code> is null
- * @exception IllegalArgumentException if <code>locale</code> isn't
+ * @throws NullPointerException if <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
@@ -101,8 +101,8 @@
* percentage values for the specified locale.
*
* @param locale the desired locale
- * @exception NullPointerException if <code>locale</code> is null
- * @exception IllegalArgumentException if <code>locale</code> isn't
+ * @throws NullPointerException if <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
--- a/src/java.base/share/classes/java/util/Calendar.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/Calendar.java Sat Sep 21 12:10:52 2019 +0200
@@ -2100,11 +2100,11 @@
* {@code field} in the given {@code style}, or
* {@code null} if no string representation is
* applicable.
- * @exception IllegalArgumentException
+ * @throws IllegalArgumentException
* if {@code field} or {@code style} is invalid,
* or if this {@code Calendar} is non-lenient and any
* of the calendar fields have invalid values
- * @exception NullPointerException
+ * @throws NullPointerException
* if {@code locale} is null
* @since 1.6
*/
@@ -2191,11 +2191,11 @@
* {@code style} and {@code locale} and their
* field values, or {@code null} if no display names
* are defined for {@code field}
- * @exception IllegalArgumentException
+ * @throws IllegalArgumentException
* if {@code field} or {@code style} is invalid,
* or if this {@code Calendar} is non-lenient and any
* of the calendar fields have invalid values
- * @exception NullPointerException
+ * @throws NullPointerException
* if {@code locale} is null
* @since 1.6
*/
@@ -2311,7 +2311,7 @@
*
* @return <code>true</code> if the field has been set externally,
* <code>false</code> otherwise.
- * @exception IndexOutOfBoundsException if the specified
+ * @throws IndexOutOfBoundsException if the specified
* <code>field</code> is out of range
* (<code>field < 0 || field >= FIELD_COUNT</code>).
* @see #selectFields()
@@ -2344,7 +2344,7 @@
* rather than by calling one of the setter methods.
*
* @param fieldMask the field to be marked as computed.
- * @exception IndexOutOfBoundsException if the specified
+ * @throws IndexOutOfBoundsException if the specified
* <code>field</code> is out of range
* (<code>field < 0 || field >= FIELD_COUNT</code>).
* @see #isExternallySet(int)
@@ -2381,7 +2381,7 @@
*
* @param fieldMask the field mask indicating which calendar fields are in
* sync with the time value.
- * @exception IndexOutOfBoundsException if the specified
+ * @throws IndexOutOfBoundsException if the specified
* <code>field</code> is out of range
* (<code>field < 0 || field >= FIELD_COUNT</code>).
* @see #isExternallySet(int)
@@ -2806,9 +2806,9 @@
* before the time represented by the argument; and a value greater than
* <code>0</code> if the time of this <code>Calendar</code> is after the
* time represented by the argument.
- * @exception NullPointerException if the specified <code>Calendar</code> is
+ * @throws NullPointerException if the specified <code>Calendar</code> is
* <code>null</code>.
- * @exception IllegalArgumentException if the time value of the
+ * @throws IllegalArgumentException if the time value of the
* specified <code>Calendar</code> object can't be obtained due to
* any invalid calendar values.
* @since 1.5
@@ -3054,7 +3054,7 @@
* {@link UnsupportedOperationException}.
*
* @return the week year of this {@code Calendar}
- * @exception UnsupportedOperationException
+ * @throws UnsupportedOperationException
* if any week year numbering isn't supported
* in this {@code Calendar}.
* @see #isWeekDateSupported()
@@ -3086,11 +3086,11 @@
* @param dayOfWeek the day of week value: one of the constants
* for the {@link #DAY_OF_WEEK} field: {@link
* #SUNDAY}, ..., {@link #SATURDAY}.
- * @exception IllegalArgumentException
+ * @throws IllegalArgumentException
* if any of the given date specifiers is invalid
* or any of the calendar fields are inconsistent
* with the given date specifiers in non-lenient mode
- * @exception UnsupportedOperationException
+ * @throws UnsupportedOperationException
* if any week year numbering isn't supported in this
* {@code Calendar}.
* @see #isWeekDateSupported()
@@ -3110,7 +3110,7 @@
* {@code UnsupportedOperationException}.
*
* @return the number of weeks in the week year.
- * @exception UnsupportedOperationException
+ * @throws UnsupportedOperationException
* if any week year numbering isn't supported in this
* {@code Calendar}.
* @see #WEEK_OF_YEAR
@@ -3351,7 +3351,7 @@
*
* @param field the calendar field
* @return the calendar field name
- * @exception IndexOutOfBoundsException if <code>field</code> is negative,
+ * @throws IndexOutOfBoundsException if <code>field</code> is negative,
* equal to or greater than {@code FIELD_COUNT}.
*/
static String getFieldName(int field) {
--- a/src/java.base/share/classes/java/util/Currency.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/Currency.java Sat Sep 21 12:10:52 2019 +0200
@@ -289,8 +289,8 @@
*
* @param currencyCode the ISO 4217 code of the currency
* @return the <code>Currency</code> instance for the given currency code
- * @exception NullPointerException if <code>currencyCode</code> is null
- * @exception IllegalArgumentException if <code>currencyCode</code> is not
+ * @throws NullPointerException if <code>currencyCode</code> is null
+ * @throws IllegalArgumentException if <code>currencyCode</code> is not
* a supported ISO 4217 code.
*/
public static Currency getInstance(String currencyCode) {
@@ -372,9 +372,9 @@
* instance is needed
* @return the <code>Currency</code> instance for the country of the given
* locale, or {@code null}
- * @exception NullPointerException if <code>locale</code>
+ * @throws NullPointerException if <code>locale</code>
* is {@code null}
- * @exception IllegalArgumentException if the country of the given {@code locale}
+ * @throws IllegalArgumentException if the country of the given {@code locale}
* is not a supported ISO 3166 country code.
*/
public static Currency getInstance(Locale locale) {
@@ -537,7 +537,7 @@
* @param locale the locale for which a display name for this currency is
* needed
* @return the symbol of this currency for the specified locale
- * @exception NullPointerException if <code>locale</code> is null
+ * @throws NullPointerException if <code>locale</code> is null
*/
public String getSymbol(Locale locale) {
LocaleServiceProviderPool pool =
@@ -632,7 +632,7 @@
* @param locale the locale for which a display name for this currency is
* needed
* @return the display name of this currency for the specified locale
- * @exception NullPointerException if <code>locale</code> is null
+ * @throws NullPointerException if <code>locale</code> is null
* @since 1.7
*/
public String getDisplayName(Locale locale) {
@@ -1197,5 +1197,3 @@
}
}
-
-
--- a/src/java.base/share/classes/java/util/Date.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/Date.java Sat Sep 21 12:10:52 2019 +0200
@@ -910,7 +910,7 @@
* represented by this {@code Date} object is strictly
* earlier than the instant represented by {@code when};
* {@code false} otherwise.
- * @exception NullPointerException if {@code when} is null.
+ * @throws NullPointerException if {@code when} is null.
*/
public boolean before(Date when) {
return getMillisOf(this) < getMillisOf(when);
@@ -924,7 +924,7 @@
* by this {@code Date} object is strictly later than the
* instant represented by {@code when};
* {@code false} otherwise.
- * @exception NullPointerException if {@code when} is null.
+ * @throws NullPointerException if {@code when} is null.
*/
public boolean after(Date when) {
return getMillisOf(this) > getMillisOf(when);
@@ -973,7 +973,7 @@
* is before the Date argument; and a value greater than
* {@code 0} if this Date is after the Date argument.
* @since 1.2
- * @exception NullPointerException if {@code anotherDate} is null.
+ * @throws NullPointerException if {@code anotherDate} is null.
*/
public int compareTo(Date anotherDate) {
long thisTime = getMillisOf(this);
@@ -1353,8 +1353,8 @@
* @param instant the instant to convert
* @return a {@code Date} representing the same point on the time-line as
* the provided instant
- * @exception NullPointerException if {@code instant} is null.
- * @exception IllegalArgumentException if the instant is too large to
+ * @throws NullPointerException if {@code instant} is null.
+ * @throws IllegalArgumentException if the instant is too large to
* represent as a {@code Date}
* @since 1.8
*/
--- a/src/java.base/share/classes/java/util/Dictionary.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/Dictionary.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -106,7 +106,7 @@
* @param key a key in this dictionary.
* {@code null} if the key is not mapped to any value in
* this dictionary.
- * @exception NullPointerException if the {@code key} is {@code null}.
+ * @throws NullPointerException if the {@code key} is {@code null}.
* @see java.util.Dictionary#put(java.lang.Object, java.lang.Object)
*/
public abstract V get(Object key);
@@ -133,7 +133,7 @@
* @return the previous value to which the {@code key} was mapped
* in this dictionary, or {@code null} if the key did not
* have a previous mapping.
- * @exception NullPointerException if the {@code key} or
+ * @throws NullPointerException if the {@code key} or
* {@code value} is {@code null}.
* @see java.lang.Object#equals(java.lang.Object)
* @see java.util.Dictionary#get(java.lang.Object)
@@ -149,7 +149,7 @@
* @return the value to which the {@code key} had been mapped in this
* dictionary, or {@code null} if the key did not have a
* mapping.
- * @exception NullPointerException if {@code key} is {@code null}.
+ * @throws NullPointerException if {@code key} is {@code null}.
*/
public abstract V remove(Object key);
}
--- a/src/java.base/share/classes/java/util/Enumeration.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/Enumeration.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -76,7 +76,7 @@
* object has at least one more element to provide.
*
* @return the next element of this enumeration.
- * @exception NoSuchElementException if no more elements exist.
+ * @throws NoSuchElementException if no more elements exist.
*/
E nextElement();
--- a/src/java.base/share/classes/java/util/GregorianCalendar.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/GregorianCalendar.java Sat Sep 21 12:10:52 2019 +0200
@@ -904,7 +904,7 @@
*
* @param field the calendar field.
* @param amount the amount of date or time to be added to the field.
- * @exception IllegalArgumentException if <code>field</code> is
+ * @throws IllegalArgumentException if <code>field</code> is
* <code>ZONE_OFFSET</code>, <code>DST_OFFSET</code>, or unknown,
* or if any calendar fields have out-of-range values in
* non-lenient mode.
@@ -1101,7 +1101,7 @@
*
* @param up indicates if the value of the specified calendar field is to be
* rolled up or rolled down. Use <code>true</code> if rolling up, <code>false</code> otherwise.
- * @exception IllegalArgumentException if <code>field</code> is
+ * @throws IllegalArgumentException if <code>field</code> is
* <code>ZONE_OFFSET</code>, <code>DST_OFFSET</code>, or unknown,
* or if any calendar fields have out-of-range values in
* non-lenient mode.
@@ -1148,7 +1148,7 @@
*
* @param field the calendar field.
* @param amount the signed amount to add to <code>field</code>.
- * @exception IllegalArgumentException if <code>field</code> is
+ * @throws IllegalArgumentException if <code>field</code> is
* <code>ZONE_OFFSET</code>, <code>DST_OFFSET</code>, or unknown,
* or if any calendar fields have out-of-range values in
* non-lenient mode.
@@ -2183,7 +2183,7 @@
* for the {@link #DAY_OF_WEEK DAY_OF_WEEK} field:
* {@link Calendar#SUNDAY SUNDAY}, ...,
* {@link Calendar#SATURDAY SATURDAY}.
- * @exception IllegalArgumentException
+ * @throws IllegalArgumentException
* if any of the given date specifiers is invalid,
* or if any of the calendar fields are inconsistent
* with the given date specifiers in non-lenient mode
@@ -2626,7 +2626,7 @@
* Converts calendar field values to the time value (millisecond
* offset from the <a href="Calendar.html#Epoch">Epoch</a>).
*
- * @exception IllegalArgumentException if any calendar fields are invalid.
+ * @throws IllegalArgumentException if any calendar fields are invalid.
*/
@Override
protected void computeTime() {
@@ -3279,8 +3279,8 @@
* @param zdt the zoned date-time object to convert
* @return the gregorian calendar representing the same point on the
* time-line as the zoned date-time provided
- * @exception NullPointerException if {@code zdt} is null
- * @exception IllegalArgumentException if the zoned date-time is too
+ * @throws NullPointerException if {@code zdt} is null
+ * @throws IllegalArgumentException if the zoned date-time is too
* large to represent as a {@code GregorianCalendar}
* @since 1.8
*/
--- a/src/java.base/share/classes/java/util/Hashtable.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/Hashtable.java Sat Sep 21 12:10:52 2019 +0200
@@ -180,7 +180,7 @@
*
* @param initialCapacity the initial capacity of the hashtable.
* @param loadFactor the load factor of the hashtable.
- * @exception IllegalArgumentException if the initial capacity is less
+ * @throws IllegalArgumentException if the initial capacity is less
* than zero, or if the load factor is nonpositive.
*/
public Hashtable(int initialCapacity, float loadFactor) {
@@ -202,7 +202,7 @@
* and default load factor (0.75).
*
* @param initialCapacity the initial capacity of the hashtable.
- * @exception IllegalArgumentException if the initial capacity is less
+ * @throws IllegalArgumentException if the initial capacity is less
* than zero.
*/
public Hashtable(int initialCapacity) {
@@ -304,7 +304,7 @@
* {@code value} argument in this hashtable as
* determined by the {@code equals} method;
* {@code false} otherwise.
- * @exception NullPointerException if the value is {@code null}
+ * @throws NullPointerException if the value is {@code null}
*/
public synchronized boolean contains(Object value) {
if (value == null) {
@@ -465,7 +465,7 @@
* @param value the value
* @return the previous value of the specified key in this hashtable,
* or {@code null} if it did not have one
- * @exception NullPointerException if the key or value is
+ * @throws NullPointerException if the key or value is
* {@code null}
* @see Object#equals(Object)
* @see #get(Object)
--- a/src/java.base/share/classes/java/util/JapaneseImperialCalendar.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/JapaneseImperialCalendar.java Sat Sep 21 12:10:52 2019 +0200
@@ -418,7 +418,7 @@
*
* @param field the calendar field.
* @param amount the amount of date or time to be added to the field.
- * @exception IllegalArgumentException if {@code field} is
+ * @throws IllegalArgumentException if {@code field} is
* {@code ZONE_OFFSET}, {@code DST_OFFSET}, or unknown,
* or if any calendar fields have out-of-range values in
* non-lenient mode.
@@ -569,7 +569,7 @@
*
* @param field the calendar field.
* @param amount the signed amount to add to {@code field}.
- * @exception IllegalArgumentException if {@code field} is
+ * @throws IllegalArgumentException if {@code field} is
* {@code ZONE_OFFSET}, {@code DST_OFFSET}, or unknown,
* or if any calendar fields have out-of-range values in
* non-lenient mode.
@@ -1867,7 +1867,7 @@
* Converts calendar field values to the time value (millisecond
* offset from the <a href="Calendar.html#Epoch">Epoch</a>).
*
- * @exception IllegalArgumentException if any calendar fields are invalid.
+ * @throws IllegalArgumentException if any calendar fields are invalid.
*/
protected void computeTime() {
// In non-lenient mode, perform brief checking of calendar
--- a/src/java.base/share/classes/java/util/Locale.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/Locale.java Sat Sep 21 12:10:52 2019 +0200
@@ -740,7 +740,7 @@
* See the <code>Locale</code> class description about valid country values.
* @param variant Any arbitrary value used to indicate a variation of a <code>Locale</code>.
* See the <code>Locale</code> class description for the details.
- * @exception NullPointerException thrown if any argument is null.
+ * @throws NullPointerException thrown if any argument is null.
*/
public Locale(String language, String country, String variant) {
if (language == null || country == null || variant == null) {
@@ -770,7 +770,7 @@
* valid language values.
* @param country An ISO 3166 alpha-2 country code or a UN M.49 numeric-3 area code.
* See the <code>Locale</code> class description about valid country values.
- * @exception NullPointerException thrown if either argument is null.
+ * @throws NullPointerException thrown if either argument is null.
*/
public Locale(String language, String country) {
this(language, country, "");
@@ -793,7 +793,7 @@
* @param language An ISO 639 alpha-2 or alpha-3 language code, or a language subtag
* up to 8 characters in length. See the <code>Locale</code> class description about
* valid language values.
- * @exception NullPointerException thrown if argument is null.
+ * @throws NullPointerException thrown if argument is null.
* @since 1.4
*/
public Locale(String language) {
@@ -812,7 +812,7 @@
* @param country uppercase two-letter ISO-3166 code and numeric-3 UN M.49 area code.
* @param variant vendor and browser specific code. See class description.
* @return the <code>Locale</code> instance requested
- * @exception NullPointerException if any argument is null.
+ * @throws NullPointerException if any argument is null.
*/
static Locale getInstance(String language, String country, String variant) {
return getInstance(language, "", country, variant, null);
@@ -1737,7 +1737,7 @@
* not specify a language the empty string is returned.
*
* @return A three-letter abbreviation of this locale's language.
- * @exception MissingResourceException Throws MissingResourceException if
+ * @throws MissingResourceException Throws MissingResourceException if
* three-letter language abbreviation is not available for this locale.
*/
public String getISO3Language() throws MissingResourceException {
@@ -1764,7 +1764,7 @@
* <p>The ISO 3166-1 codes can be found on-line.
*
* @return A three-letter abbreviation of this locale's country.
- * @exception MissingResourceException Throws MissingResourceException if the
+ * @throws MissingResourceException Throws MissingResourceException if the
* three-letter country abbreviation is not available for this locale.
*/
public String getISO3Country() throws MissingResourceException {
@@ -1834,7 +1834,7 @@
*
* @param inLocale The locale for which to retrieve the display language.
* @return The name of the display language appropriate to the given locale.
- * @exception NullPointerException if <code>inLocale</code> is <code>null</code>
+ * @throws NullPointerException if <code>inLocale</code> is <code>null</code>
*/
public String getDisplayLanguage(Locale inLocale) {
return getDisplayString(baseLocale.getLanguage(), null, inLocale, DISPLAY_LANGUAGE);
@@ -1907,7 +1907,7 @@
*
* @param inLocale The locale for which to retrieve the display country.
* @return The name of the country appropriate to the given locale.
- * @exception NullPointerException if <code>inLocale</code> is <code>null</code>
+ * @throws NullPointerException if <code>inLocale</code> is <code>null</code>
*/
public String getDisplayCountry(Locale inLocale) {
return getDisplayString(baseLocale.getRegion(), null, inLocale, DISPLAY_COUNTRY);
@@ -1949,7 +1949,7 @@
*
* @param inLocale The locale for which to retrieve the display variant code.
* @return The name of the display variant code appropriate to the given locale.
- * @exception NullPointerException if <code>inLocale</code> is <code>null</code>
+ * @throws NullPointerException if <code>inLocale</code> is <code>null</code>
*/
public String getDisplayVariant(Locale inLocale) {
if (baseLocale.getVariant().isEmpty())
--- a/src/java.base/share/classes/java/util/Properties.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/Properties.java Sat Sep 21 12:10:52 2019 +0200
@@ -394,7 +394,7 @@
* The specified stream remains open after this method returns.
*
* @param inStream the input stream.
- * @exception IOException if an error occurred when reading from the
+ * @throws IOException if an error occurred when reading from the
* input stream.
* @throws IllegalArgumentException if the input stream contains a
* malformed Unicode escape sequence.
@@ -801,7 +801,7 @@
*
* @param out an output stream.
* @param comments a description of the property list.
- * @exception ClassCastException if this {@code Properties} object
+ * @throws ClassCastException if this {@code Properties} object
* contains any keys or values that are not
* {@code Strings}.
*/
@@ -853,11 +853,11 @@
*
* @param writer an output character stream writer.
* @param comments a description of the property list.
- * @exception IOException if writing this property list to the specified
+ * @throws IOException if writing this property list to the specified
* output stream throws an {@code IOException}.
- * @exception ClassCastException if this {@code Properties} object
+ * @throws ClassCastException if this {@code Properties} object
* contains any keys or values that are not {@code Strings}.
- * @exception NullPointerException if {@code writer} is null.
+ * @throws NullPointerException if {@code writer} is null.
* @since 1.6
*/
public void store(Writer writer, String comments)
@@ -900,11 +900,11 @@
*
* @param out an output stream.
* @param comments a description of the property list.
- * @exception IOException if writing this property list to the specified
+ * @throws IOException if writing this property list to the specified
* output stream throws an {@code IOException}.
- * @exception ClassCastException if this {@code Properties} object
+ * @throws ClassCastException if this {@code Properties} object
* contains any keys or values that are not {@code Strings}.
- * @exception NullPointerException if {@code out} is null.
+ * @throws NullPointerException if {@code out} is null.
* @since 1.2
*/
public void store(OutputStream out, String comments)
--- a/src/java.base/share/classes/java/util/PropertyPermission.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/PropertyPermission.java Sat Sep 21 12:10:52 2019 +0200
@@ -463,10 +463,10 @@
*
* @param permission the Permission object to add.
*
- * @exception IllegalArgumentException - if the permission is not a
+ * @throws IllegalArgumentException - if the permission is not a
* PropertyPermission
*
- * @exception SecurityException - if this PropertyPermissionCollection
+ * @throws SecurityException - if this PropertyPermissionCollection
* object has been marked readonly
*/
@Override
--- a/src/java.base/share/classes/java/util/ResourceBundle.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/ResourceBundle.java Sat Sep 21 12:10:52 2019 +0200
@@ -512,9 +512,9 @@
* </blockquote>
*
* @param key the key for the desired string
- * @exception NullPointerException if <code>key</code> is <code>null</code>
- * @exception MissingResourceException if no object for the given key can be found
- * @exception ClassCastException if the object found for the given key is not a string
+ * @throws NullPointerException if <code>key</code> is <code>null</code>
+ * @throws MissingResourceException if no object for the given key can be found
+ * @throws ClassCastException if the object found for the given key is not a string
* @return the string for the given key
*/
public final String getString(String key) {
@@ -529,9 +529,9 @@
* </blockquote>
*
* @param key the key for the desired string array
- * @exception NullPointerException if <code>key</code> is <code>null</code>
- * @exception MissingResourceException if no object for the given key can be found
- * @exception ClassCastException if the object found for the given key is not a string array
+ * @throws NullPointerException if <code>key</code> is <code>null</code>
+ * @throws MissingResourceException if no object for the given key can be found
+ * @throws ClassCastException if the object found for the given key is not a string array
* @return the string array for the given key
*/
public final String[] getStringArray(String key) {
@@ -547,8 +547,8 @@
* If still not successful, it throws a MissingResourceException.
*
* @param key the key for the desired object
- * @exception NullPointerException if <code>key</code> is <code>null</code>
- * @exception MissingResourceException if no object for the given key can be found
+ * @throws NullPointerException if <code>key</code> is <code>null</code>
+ * @throws MissingResourceException if no object for the given key can be found
* @return the object for the given key
*/
public final Object getObject(String key) {
@@ -841,9 +841,9 @@
* </blockquote>
*
* @param baseName the base name of the resource bundle, a fully qualified class name
- * @exception java.lang.NullPointerException
+ * @throws java.lang.NullPointerException
* if <code>baseName</code> is <code>null</code>
- * @exception MissingResourceException
+ * @throws MissingResourceException
* if no resource bundle for the specified base name can be found
* @return a resource bundle for the given base name and the default locale
*
@@ -915,9 +915,9 @@
* the base name of the resource bundle, a fully qualified class name
* @param locale
* the locale for which a resource bundle is desired
- * @exception NullPointerException
+ * @throws NullPointerException
* if <code>baseName</code> or <code>locale</code> is <code>null</code>
- * @exception MissingResourceException
+ * @throws MissingResourceException
* if no resource bundle for the specified base name can be found
* @return a resource bundle for the given base name and locale
*
@@ -1264,9 +1264,9 @@
* @param locale the locale for which a resource bundle is desired
* @param loader the class loader from which to load the resource bundle
* @return a resource bundle for the given base name and locale
- * @exception java.lang.NullPointerException
+ * @throws java.lang.NullPointerException
* if <code>baseName</code>, <code>locale</code>, or <code>loader</code> is <code>null</code>
- * @exception MissingResourceException
+ * @throws MissingResourceException
* if no resource bundle for the specified base name can be found
* @since 1.2
* @revised 9
@@ -2250,7 +2250,7 @@
* by the given class loader.
*
* @param loader the class loader
- * @exception NullPointerException if <code>loader</code> is null
+ * @throws NullPointerException if <code>loader</code> is null
* @since 1.6
* @see ResourceBundle.Control#getTimeToLive(String,Locale)
*/
@@ -2271,7 +2271,7 @@
* object for the given key.
*
* @param key the key for the desired object
- * @exception NullPointerException if <code>key</code> is <code>null</code>
+ * @throws NullPointerException if <code>key</code> is <code>null</code>
* @return the object for the given key, or null
*/
protected abstract Object handleGetObject(String key);
@@ -2293,7 +2293,7 @@
* @return <code>true</code> if the given <code>key</code> is
* contained in this <code>ResourceBundle</code> or its
* parent bundles; <code>false</code> otherwise.
- * @exception NullPointerException
+ * @throws NullPointerException
* if <code>key</code> is <code>null</code>
* @since 1.6
*/
@@ -2598,9 +2598,9 @@
* <code>ResourceBundle.Control.getFormats</code> method
* @return a <code>ResourceBundle.Control</code> supporting the
* specified <code>formats</code>
- * @exception NullPointerException
+ * @throws NullPointerException
* if <code>formats</code> is <code>null</code>
- * @exception IllegalArgumentException
+ * @throws IllegalArgumentException
* if <code>formats</code> is unknown
*/
public static final Control getControl(List<String> formats) {
@@ -2633,9 +2633,9 @@
* @return a <code>ResourceBundle.Control</code> supporting the
* specified <code>formats</code> with no fallback
* <code>Locale</code> support
- * @exception NullPointerException
+ * @throws NullPointerException
* if <code>formats</code> is <code>null</code>
- * @exception IllegalArgumentException
+ * @throws IllegalArgumentException
* if <code>formats</code> is unknown
*/
public static final Control getNoFallbackControl(List<String> formats) {
@@ -2679,7 +2679,7 @@
* name
* @return a <code>List</code> of <code>String</code>s containing
* formats for loading resource bundles.
- * @exception NullPointerException
+ * @throws NullPointerException
* if <code>baseName</code> is null
* @see #FORMAT_DEFAULT
* @see #FORMAT_CLASS
@@ -2866,7 +2866,7 @@
* the locale for which a resource bundle is desired
* @return a <code>List</code> of candidate
* <code>Locale</code>s for the given <code>locale</code>
- * @exception NullPointerException
+ * @throws NullPointerException
* if <code>baseName</code> or <code>locale</code> is
* <code>null</code>
*/
@@ -3034,7 +3034,7 @@
* @return a <code>Locale</code> for the fallback search,
* or <code>null</code> if no further fallback search
* is desired.
- * @exception NullPointerException
+ * @throws NullPointerException
* if <code>baseName</code> or <code>locale</code>
* is <code>null</code>
*/
@@ -3127,29 +3127,29 @@
* <code>false</code> otherwise
* @return the resource bundle instance,
* or <code>null</code> if none could be found.
- * @exception NullPointerException
+ * @throws NullPointerException
* if <code>bundleName</code>, <code>locale</code>,
* <code>format</code>, or <code>loader</code> is
* <code>null</code>, or if <code>null</code> is returned by
* {@link #toBundleName(String, Locale) toBundleName}
- * @exception IllegalArgumentException
+ * @throws IllegalArgumentException
* if <code>format</code> is unknown, or if the resource
* found for the given parameters contains malformed data.
- * @exception ClassCastException
+ * @throws ClassCastException
* if the loaded class cannot be cast to <code>ResourceBundle</code>
- * @exception IllegalAccessException
+ * @throws IllegalAccessException
* if the class or its nullary constructor is not
* accessible.
- * @exception InstantiationException
+ * @throws InstantiationException
* if the instantiation of a class fails for some other
* reason.
- * @exception ExceptionInInitializerError
+ * @throws ExceptionInInitializerError
* if the initialization provoked by this method fails.
- * @exception SecurityException
+ * @throws SecurityException
* If a security manager is present and creation of new
* instances is denied. See {@link Class#newInstance()}
* for details.
- * @exception IOException
+ * @throws IOException
* if an error occurred when reading resources using
* any I/O operations
* @see java.util.spi.ResourceBundleProvider#getBundle(String, Locale)
@@ -3295,7 +3295,7 @@
* {@link #TTL_NO_EXPIRATION_CONTROL} to disable the
* expiration control, or {@link #TTL_DONT_CACHE} to disable
* caching.
- * @exception NullPointerException
+ * @throws NullPointerException
* if <code>baseName</code> or <code>locale</code> is
* <code>null</code>
*/
@@ -3350,7 +3350,7 @@
* in the cache
* @return <code>true</code> if the expired bundle needs to be
* reloaded; <code>false</code> otherwise.
- * @exception NullPointerException
+ * @throws NullPointerException
* if <code>baseName</code>, <code>locale</code>,
* <code>format</code>, <code>loader</code>, or
* <code>bundle</code> is <code>null</code>
@@ -3437,7 +3437,7 @@
* the locale for which a resource bundle should be
* loaded
* @return the bundle name for the resource bundle
- * @exception NullPointerException
+ * @throws NullPointerException
* if <code>baseName</code> or <code>locale</code>
* is <code>null</code>
* @see java.util.spi.AbstractResourceBundleProvider#toBundleName(String, Locale)
@@ -3495,7 +3495,7 @@
* @param suffix
* the file type suffix
* @return the converted resource name
- * @exception NullPointerException
+ * @throws NullPointerException
* if {@code bundleName} or {@code suffix}
* is {@code null}
*/
--- a/src/java.base/share/classes/java/util/SimpleTimeZone.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/SimpleTimeZone.java Sat Sep 21 12:10:52 2019 +0200
@@ -209,7 +209,7 @@
* @param endTime The daylight saving ending time in local wall clock time,
* (in milliseconds within the day) which is local daylight
* time in this case.
- * @exception IllegalArgumentException if the month, day, dayOfWeek, or time
+ * @throws IllegalArgumentException if the month, day, dayOfWeek, or time
* parameters are out of range for the start or end rule
*/
public SimpleTimeZone(int rawOffset, String ID,
@@ -266,7 +266,7 @@
* which is local daylight time in this case.
* @param dstSavings The amount of time in milliseconds saved during
* daylight saving time.
- * @exception IllegalArgumentException if the month, day, dayOfWeek, or time
+ * @throws IllegalArgumentException if the month, day, dayOfWeek, or time
* parameters are out of range for the start or end rule
* @since 1.2
*/
@@ -316,7 +316,7 @@
* @param dstSavings The amount of time in milliseconds saved during
* daylight saving time.
*
- * @exception IllegalArgumentException if the month, day, dayOfWeek, time more, or
+ * @throws IllegalArgumentException if the month, day, dayOfWeek, time more, or
* time parameters are out of range for the start or end rule, or if a time mode
* value is invalid.
*
@@ -380,7 +380,7 @@
* See the class description for the special cases of this parameter.
* @param startTime The daylight saving time starting time in local wall clock
* time, which is local standard time in this case.
- * @exception IllegalArgumentException if the <code>startMonth</code>, <code>startDay</code>,
+ * @throws IllegalArgumentException if the <code>startMonth</code>, <code>startDay</code>,
* <code>startDayOfWeek</code>, or <code>startTime</code> parameters are out of range
*/
public void setStartRule(int startMonth, int startDay, int startDayOfWeek, int startTime)
@@ -406,7 +406,7 @@
* @param startTime The daylight saving time starting time in local wall clock
* time, which is local standard time in this case.
* See the class description for the special cases of this parameter.
- * @exception IllegalArgumentException if the <code>startMonth</code>,
+ * @throws IllegalArgumentException if the <code>startMonth</code>,
* <code>startDayOfMonth</code>, or <code>startTime</code> parameters are out of range
* @since 1.2
*/
@@ -429,7 +429,7 @@
* <em>after</em> <code>dayOfMonth</code>. If false, this rule
* selects the last <code>dayOfWeek</code> on or <em>before</em>
* <code>dayOfMonth</code>.
- * @exception IllegalArgumentException if the <code>startMonth</code>, <code>startDay</code>,
+ * @throws IllegalArgumentException if the <code>startMonth</code>, <code>startDay</code>,
* <code>startDayOfWeek</code>, or <code>startTime</code> parameters are out of range
* @since 1.2
*/
@@ -460,7 +460,7 @@
* @param endTime The daylight saving ending time in local wall clock time,
* (in milliseconds within the day) which is local daylight
* time in this case.
- * @exception IllegalArgumentException if the <code>endMonth</code>, <code>endDay</code>,
+ * @throws IllegalArgumentException if the <code>endMonth</code>, <code>endDay</code>,
* <code>endDayOfWeek</code>, or <code>endTime</code> parameters are out of range
*/
public void setEndRule(int endMonth, int endDay, int endDayOfWeek,
@@ -487,7 +487,7 @@
* @param endTime The daylight saving ending time in local wall clock time,
* (in milliseconds within the day) which is local daylight
* time in this case.
- * @exception IllegalArgumentException the <code>endMonth</code>, <code>endDay</code>,
+ * @throws IllegalArgumentException the <code>endMonth</code>, <code>endDay</code>,
* or <code>endTime</code> parameters are out of range
* @since 1.2
*/
@@ -512,7 +512,7 @@
* or <em>after</em> <code>endDay</code>. If false, this rule
* selects the last <code>endDayOfWeek</code> on or before
* <code>endDay</code> of the month.
- * @exception IllegalArgumentException the <code>endMonth</code>, <code>endDay</code>,
+ * @throws IllegalArgumentException the <code>endMonth</code>, <code>endDay</code>,
* <code>endDayOfWeek</code>, or <code>endTime</code> parameters are out of range
* @since 1.2
*/
@@ -597,7 +597,7 @@
* @param dayOfWeek The day-of-week of the given date.
* @param millis The milliseconds in day in <em>standard</em> local time.
* @return The milliseconds to add to UTC to get local time.
- * @exception IllegalArgumentException the <code>era</code>,
+ * @throws IllegalArgumentException the <code>era</code>,
* <code>month</code>, <code>day</code>, <code>dayOfWeek</code>,
* or <code>millis</code> parameters are out of range
*/
--- a/src/java.base/share/classes/java/util/StringTokenizer.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/StringTokenizer.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -189,7 +189,7 @@
* @param delim the delimiters.
* @param returnDelims flag indicating whether to return the delimiters
* as tokens.
- * @exception NullPointerException if str is {@code null}
+ * @throws NullPointerException if str is {@code null}
*/
public StringTokenizer(String str, String delim, boolean returnDelims) {
currentPosition = 0;
@@ -215,7 +215,7 @@
*
* @param str a string to be parsed.
* @param delim the delimiters.
- * @exception NullPointerException if str is {@code null}
+ * @throws NullPointerException if str is {@code null}
*/
public StringTokenizer(String str, String delim) {
this(str, delim, false);
@@ -230,7 +230,7 @@
* not be treated as tokens.
*
* @param str a string to be parsed.
- * @exception NullPointerException if str is {@code null}
+ * @throws NullPointerException if str is {@code null}
*/
public StringTokenizer(String str) {
this(str, " \t\n\r\f", false);
@@ -328,7 +328,7 @@
* Returns the next token from this string tokenizer.
*
* @return the next token from this string tokenizer.
- * @exception NoSuchElementException if there are no more tokens in this
+ * @throws NoSuchElementException if there are no more tokens in this
* tokenizer's string.
*/
public String nextToken() {
@@ -363,9 +363,9 @@
*
* @param delim the new delimiters.
* @return the next token, after switching to the new delimiter set.
- * @exception NoSuchElementException if there are no more tokens in this
+ * @throws NoSuchElementException if there are no more tokens in this
* tokenizer's string.
- * @exception NullPointerException if delim is {@code null}
+ * @throws NullPointerException if delim is {@code null}
*/
public String nextToken(String delim) {
delimiters = delim;
@@ -398,7 +398,7 @@
* {@code Enumeration} interface.
*
* @return the next token in the string.
- * @exception NoSuchElementException if there are no more tokens in this
+ * @throws NoSuchElementException if there are no more tokens in this
* tokenizer's string.
* @see java.util.Enumeration
* @see java.util.StringTokenizer#nextToken()
--- a/src/java.base/share/classes/java/util/TimeZone.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/TimeZone.java Sat Sep 21 12:10:52 2019 +0200
@@ -329,7 +329,7 @@
*
* @param locale the locale in which to supply the display name.
* @return the human-readable name of this time zone in the given locale.
- * @exception NullPointerException if {@code locale} is {@code null}.
+ * @throws NullPointerException if {@code locale} is {@code null}.
* @since 1.2
* @see #getDisplayName(boolean, int, Locale)
*/
@@ -354,7 +354,7 @@
* {@code false} specifying a Standard Time name
* @param style either {@link #LONG} or {@link #SHORT}
* @return the human-readable name of this time zone in the default locale.
- * @exception IllegalArgumentException if {@code style} is invalid.
+ * @throws IllegalArgumentException if {@code style} is invalid.
* @since 1.2
* @see #getDisplayName(boolean, int, Locale)
* @see Locale#getDefault(Locale.Category)
@@ -389,8 +389,8 @@
* @param style either {@link #LONG} or {@link #SHORT}
* @param locale the locale in which to supply the display name.
* @return the human-readable name of this time zone in the given locale.
- * @exception IllegalArgumentException if {@code style} is invalid.
- * @exception NullPointerException if {@code locale} is {@code null}.
+ * @throws IllegalArgumentException if {@code style} is invalid.
+ * @throws NullPointerException if {@code locale} is {@code null}.
* @since 1.2
* @see java.text.DateFormatSymbols#getZoneStrings()
*/
--- a/src/java.base/share/classes/java/util/jar/Attributes.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/jar/Attributes.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -148,7 +148,7 @@
* @param name the attribute name
* @param value the attribute value
* @return the previous value of the attribute, or null if none
- * @exception ClassCastException if the name is not a Attributes.Name
+ * @throws ClassCastException if the name is not a Attributes.Name
* or the value is not a String
*/
public Object put(Object name, Object value) {
@@ -169,7 +169,7 @@
* @param name the attribute name as a string
* @param value the attribute value
* @return the previous value of the attribute, or null if none
- * @exception IllegalArgumentException if the attribute name is invalid
+ * @throws IllegalArgumentException if the attribute name is invalid
*/
public String putValue(String name, String value) {
return (String)put(Name.of(name), value);
@@ -213,7 +213,7 @@
* Attributes to this Map. Duplicate mappings will be replaced.
*
* @param attr the Attributes to be stored in this map
- * @exception ClassCastException if attr is not an Attributes
+ * @throws ClassCastException if attr is not an Attributes
*/
public void putAll(Map<?,?> attr) {
// ## javac bug?
@@ -470,9 +470,9 @@
* Constructs a new attribute name using the given string name.
*
* @param name the attribute string name
- * @exception IllegalArgumentException if the attribute name was
+ * @throws IllegalArgumentException if the attribute name was
* invalid
- * @exception NullPointerException if the attribute name was null
+ * @throws NullPointerException if the attribute name was null
*/
public Name(String name) {
this.hashCode = hash(name);
--- a/src/java.base/share/classes/java/util/jar/JarEntry.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/jar/JarEntry.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -46,8 +46,8 @@
* entry name.
*
* @param name the JAR file entry name
- * @exception NullPointerException if the entry name is <code>null</code>
- * @exception IllegalArgumentException if the entry name is longer than
+ * @throws NullPointerException if the entry name is <code>null</code>
+ * @throws IllegalArgumentException if the entry name is longer than
* 0xFFFF bytes.
*/
public JarEntry(String name) {
--- a/src/java.base/share/classes/java/util/jar/JarInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/jar/JarInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -56,7 +56,7 @@
* manifest. If a manifest is present, also attempts to verify
* the signatures if the JarInputStream is signed.
* @param in the actual input stream
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public JarInputStream(InputStream in) throws IOException {
this(in, true);
@@ -70,7 +70,7 @@
* @param in the actual input stream
* @param verify whether or not to verify the JarInputStream if
* it is signed.
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public JarInputStream(InputStream in, boolean verify) throws IOException {
super(in);
@@ -131,9 +131,9 @@
* beginning of the entry data. If verification has been enabled,
* any invalid signature detected while positioning the stream for
* the next entry will result in an exception.
- * @exception ZipException if a ZIP file error has occurred
- * @exception IOException if an I/O error has occurred
- * @exception SecurityException if any of the jar file entries
+ * @throws ZipException if a ZIP file error has occurred
+ * @throws IOException if an I/O error has occurred
+ * @throws SecurityException if any of the jar file entries
* are incorrectly signed.
*/
public ZipEntry getNextEntry() throws IOException {
@@ -170,9 +170,9 @@
* any invalid signature detected while positioning the stream for
* the next entry will result in an exception.
* @return the next JAR file entry, or null if there are no more entries
- * @exception ZipException if a ZIP file error has occurred
- * @exception IOException if an I/O error has occurred
- * @exception SecurityException if any of the jar file entries
+ * @throws ZipException if a ZIP file error has occurred
+ * @throws IOException if an I/O error has occurred
+ * @throws SecurityException if any of the jar file entries
* are incorrectly signed.
*/
public JarEntry getNextJarEntry() throws IOException {
@@ -192,13 +192,13 @@
* @param len the maximum number of bytes to read
* @return the actual number of bytes read, or -1 if the end of the
* entry is reached
- * @exception NullPointerException If <code>b</code> is <code>null</code>.
- * @exception IndexOutOfBoundsException If <code>off</code> is negative,
+ * @throws NullPointerException If <code>b</code> is <code>null</code>.
+ * @throws IndexOutOfBoundsException If <code>off</code> is negative,
* <code>len</code> is negative, or <code>len</code> is greater than
* <code>b.length - off</code>
- * @exception ZipException if a ZIP file error has occurred
- * @exception IOException if an I/O error has occurred
- * @exception SecurityException if any of the jar file entries
+ * @throws ZipException if a ZIP file error has occurred
+ * @throws IOException if an I/O error has occurred
+ * @throws SecurityException if any of the jar file entries
* are incorrectly signed.
*/
public int read(byte[] b, int off, int len) throws IOException {
--- a/src/java.base/share/classes/java/util/jar/JarOutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/jar/JarOutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -52,7 +52,7 @@
*
* @param out the actual output stream
* @param man the optional <code>Manifest</code>
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public JarOutputStream(OutputStream out, Manifest man) throws IOException {
super(out);
@@ -68,7 +68,7 @@
/**
* Creates a new <code>JarOutputStream</code> with no manifest.
* @param out the actual output stream
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public JarOutputStream(OutputStream out) throws IOException {
super(out);
@@ -83,8 +83,8 @@
* time.
*
* @param ze the ZIP/JAR entry to be written
- * @exception ZipException if a ZIP error has occurred
- * @exception IOException if an I/O error has occurred
+ * @throws ZipException if a ZIP error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void putNextEntry(ZipEntry ze) throws IOException {
if (firstEntry) {
--- a/src/java.base/share/classes/java/util/jar/Manifest.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/jar/Manifest.java Sat Sep 21 12:10:52 2019 +0200
@@ -195,7 +195,7 @@
* MainAttributes prior to invoking this method.
*
* @param out the output stream
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
* @see #getMainAttributes
*/
public void write(OutputStream out) throws IOException {
@@ -276,7 +276,7 @@
* manifest entries.
*
* @param is the input stream
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void read(InputStream is) throws IOException {
read(is, null);
--- a/src/java.base/share/classes/java/util/jar/Pack200.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/jar/Pack200.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -554,7 +554,7 @@
* Closes its input but not its output. (Pack200 archives are appendable.)
* @param in a JarFile
* @param out an OutputStream
- * @exception IOException if an error is encountered.
+ * @throws IOException if an error is encountered.
*/
void pack(JarFile in, OutputStream out) throws IOException ;
@@ -570,7 +570,7 @@
* @see #DEFLATE_HINT
* @param in a JarInputStream
* @param out an OutputStream
- * @exception IOException if an error is encountered.
+ * @throws IOException if an error is encountered.
*/
void pack(JarInputStream in, OutputStream out) throws IOException ;
}
@@ -673,7 +673,7 @@
* Closes its input but not its output. (The output can accumulate more elements.)
* @param in an InputStream.
* @param out a JarOutputStream.
- * @exception IOException if an error is encountered.
+ * @throws IOException if an error is encountered.
*/
void unpack(InputStream in, JarOutputStream out) throws IOException;
@@ -684,7 +684,7 @@
* Does not close its output. (The output can accumulate more elements.)
* @param in a File.
* @param out a JarOutputStream.
- * @exception IOException if an error is encountered.
+ * @throws IOException if an error is encountered.
*/
void unpack(File in, JarOutputStream out) throws IOException;
}
--- a/src/java.base/share/classes/java/util/regex/Matcher.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/regex/Matcher.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1803,4 +1803,4 @@
throw new IllegalArgumentException("No group with name <" + name + ">");
return parentPattern.namedGroups().get(name);
}
-}
\ No newline at end of file
+}
--- a/src/java.base/share/classes/java/util/spi/CurrencyNameProvider.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/spi/CurrencyNameProvider.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -63,9 +63,9 @@
* @param locale the desired locale
* @return the symbol of the given currency code for the specified locale, or null if
* the symbol is not available for the locale
- * @exception NullPointerException if <code>currencyCode</code> or
+ * @throws NullPointerException if <code>currencyCode</code> or
* <code>locale</code> is null
- * @exception IllegalArgumentException if <code>currencyCode</code> is not in
+ * @throws IllegalArgumentException if <code>currencyCode</code> is not in
* the form of three upper-case letters, or <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
@@ -84,12 +84,12 @@
* @param locale the desired locale
* @return the name for the currency that is appropriate for display to the
* user, or null if the name is not available for the locale
- * @exception IllegalArgumentException if <code>currencyCode</code> is not in
+ * @throws IllegalArgumentException if <code>currencyCode</code> is not in
* the form of three upper-case letters, or <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
- * @exception NullPointerException if <code>currencyCode</code> or
+ * @throws NullPointerException if <code>currencyCode</code> or
* <code>locale</code> is <code>null</code>
* @since 1.7
*/
--- a/src/java.base/share/classes/java/util/spi/LocaleNameProvider.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/spi/LocaleNameProvider.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -59,8 +59,8 @@
* @param locale the desired locale
* @return the name of the given language code for the specified locale, or null if it's not
* available.
- * @exception NullPointerException if <code>languageCode</code> or <code>locale</code> is null
- * @exception IllegalArgumentException if <code>languageCode</code> is not in the form of
+ * @throws NullPointerException if <code>languageCode</code> or <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>languageCode</code> is not in the form of
* two or three lower-case letters, or <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
@@ -86,8 +86,8 @@
* @param locale the desired locale
* @return the name of the given script code for the specified locale, or null if it's not
* available.
- * @exception NullPointerException if <code>scriptCode</code> or <code>locale</code> is null
- * @exception IllegalArgumentException if <code>scriptCode</code> is not in the form of
+ * @throws NullPointerException if <code>scriptCode</code> or <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>scriptCode</code> is not in the form of
* four title case letters, or <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
@@ -115,8 +115,8 @@
* @param locale the desired locale
* @return the name of the given country code for the specified locale, or null if it's not
* available.
- * @exception NullPointerException if <code>countryCode</code> or <code>locale</code> is null
- * @exception IllegalArgumentException if <code>countryCode</code> is not in the form of
+ * @throws NullPointerException if <code>countryCode</code> or <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>countryCode</code> is not in the form of
* two upper-case letters or three digit letters, or <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
@@ -134,8 +134,8 @@
* @param locale the desired locale
* @return the name of the given variant string for the specified locale, or null if it's not
* available.
- * @exception NullPointerException if <code>variant</code> or <code>locale</code> is null
- * @exception IllegalArgumentException if <code>locale</code> isn't
+ * @throws NullPointerException if <code>variant</code> or <code>locale</code> is null
+ * @throws IllegalArgumentException if <code>locale</code> isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
@@ -154,8 +154,8 @@
* @param locale the desired locale, not null.
* @return the name of the given key string for the specified locale,
* or null if it's not available.
- * @exception NullPointerException if {@code key} or {@code locale} is null
- * @exception IllegalArgumentException if {@code locale} isn't
+ * @throws NullPointerException if {@code key} or {@code locale} is null
+ * @throws IllegalArgumentException if {@code locale} isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
@@ -179,8 +179,8 @@
* @param locale the desired locale, not null.
* @return the name of the given type string for the specified locale,
* or null if it's not available.
- * @exception NullPointerException if {@code key}, {@code type} or {@code locale} is null
- * @exception IllegalArgumentException if {@code locale} isn't
+ * @throws NullPointerException if {@code key}, {@code type} or {@code locale} is null
+ * @throws IllegalArgumentException if {@code locale} isn't
* one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
--- a/src/java.base/share/classes/java/util/spi/TimeZoneNameProvider.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/spi/TimeZoneNameProvider.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -68,11 +68,11 @@
* @param locale the desired locale
* @return the human-readable name of the given time zone in the
* given locale, or null if it's not available.
- * @exception IllegalArgumentException if <code>style</code> is invalid,
+ * @throws IllegalArgumentException if <code>style</code> is invalid,
* or <code>locale</code> isn't one of the locales returned from
* {@link java.util.spi.LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
- * @exception NullPointerException if <code>ID</code> or <code>locale</code>
+ * @throws NullPointerException if <code>ID</code> or <code>locale</code>
* is null
* @see java.util.TimeZone#getDisplayName(boolean, int, java.util.Locale)
*/
@@ -96,11 +96,11 @@
* @param locale the desired locale
* @return the human-readable generic name of the given time zone in the
* given locale, or {@code null} if it's not available.
- * @exception IllegalArgumentException if <code>style</code> is invalid,
+ * @throws IllegalArgumentException if <code>style</code> is invalid,
* or <code>locale</code> isn't one of the locales returned from
* {@link LocaleServiceProvider#getAvailableLocales()
* getAvailableLocales()}.
- * @exception NullPointerException if <code>ID</code> or <code>locale</code>
+ * @throws NullPointerException if <code>ID</code> or <code>locale</code>
* is {@code null}
* @since 1.8
*/
--- a/src/java.base/share/classes/java/util/zip/CheckedInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/zip/CheckedInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -54,7 +54,7 @@
/**
* Reads a byte. Will block if no input is available.
* @return the byte read, or -1 if the end of the stream is reached.
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public int read() throws IOException {
int b = in.read();
@@ -73,11 +73,11 @@
* @param len the maximum number of bytes read
* @return the actual number of bytes read, or -1 if the end
* of the stream is reached.
- * @exception NullPointerException If <code>buf</code> is <code>null</code>.
- * @exception IndexOutOfBoundsException If <code>off</code> is negative,
+ * @throws NullPointerException If <code>buf</code> is <code>null</code>.
+ * @throws IndexOutOfBoundsException If <code>off</code> is negative,
* <code>len</code> is negative, or <code>len</code> is greater than
* <code>buf.length - off</code>
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public int read(byte[] buf, int off, int len) throws IOException {
len = in.read(buf, off, len);
@@ -91,7 +91,7 @@
* Skips specified number of bytes of input.
* @param n the number of bytes to skip
* @return the actual number of bytes skipped
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public long skip(long n) throws IOException {
byte[] buf = new byte[512];
--- a/src/java.base/share/classes/java/util/zip/CheckedOutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/zip/CheckedOutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -55,7 +55,7 @@
/**
* Writes a byte. Will block until the byte is actually written.
* @param b the byte to be written
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void write(int b) throws IOException {
out.write(b);
@@ -68,7 +68,7 @@
* @param b the data to be written
* @param off the start offset of the data
* @param len the number of bytes to be written
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void write(byte[] b, int off, int len) throws IOException {
out.write(b, off, len);
--- a/src/java.base/share/classes/java/util/zip/Deflater.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/zip/Deflater.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -364,7 +364,7 @@
* effect only after that invocation.
*
* @param strategy the new compression strategy
- * @exception IllegalArgumentException if the compression strategy is
+ * @throws IllegalArgumentException if the compression strategy is
* invalid
*/
public void setStrategy(int strategy) {
@@ -393,7 +393,7 @@
* take effect only after that invocation.
*
* @param level the new compression level (0-9)
- * @exception IllegalArgumentException if the compression level is invalid
+ * @throws IllegalArgumentException if the compression level is invalid
*/
public void setLevel(int level) {
if ((level < 0 || level > 9) && level != DEFAULT_COMPRESSION) {
--- a/src/java.base/share/classes/java/util/zip/DeflaterOutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/zip/DeflaterOutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -101,7 +101,7 @@
* @param out the output stream
* @param def the compressor ("deflater")
* @param size the output buffer size
- * @exception IllegalArgumentException if {@code size <= 0}
+ * @throws IllegalArgumentException if {@code size <= 0}
*/
public DeflaterOutputStream(OutputStream out, Deflater def, int size) {
this(out, def, size, false);
@@ -180,7 +180,7 @@
* Writes a byte to the compressed output stream. This method will
* block until the byte can be written.
* @param b the byte to be written
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void write(int b) throws IOException {
byte[] buf = new byte[1];
@@ -194,7 +194,7 @@
* @param b the data to be written
* @param off the start offset of the data
* @param len the length of the data
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void write(byte[] b, int off, int len) throws IOException {
if (def.finished()) {
@@ -217,7 +217,7 @@
* Finishes writing compressed data to the output stream without closing
* the underlying stream. Use this method when applying multiple filters
* in succession to the same output stream.
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void finish() throws IOException {
if (!def.finished()) {
@@ -231,7 +231,7 @@
/**
* Writes remaining compressed data to the output stream and closes the
* underlying stream.
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void close() throws IOException {
if (!closed) {
--- a/src/java.base/share/classes/java/util/zip/GZIPInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/zip/GZIPInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -69,10 +69,10 @@
* @param in the input stream
* @param size the input buffer size
*
- * @exception ZipException if a GZIP format error has occurred or the
+ * @throws ZipException if a GZIP format error has occurred or the
* compression method used is unsupported
- * @exception IOException if an I/O error has occurred
- * @exception IllegalArgumentException if {@code size <= 0}
+ * @throws IOException if an I/O error has occurred
+ * @throws IllegalArgumentException if {@code size <= 0}
*/
public GZIPInputStream(InputStream in, int size) throws IOException {
super(in, new Inflater(true), size);
@@ -84,9 +84,9 @@
* Creates a new input stream with a default buffer size.
* @param in the input stream
*
- * @exception ZipException if a GZIP format error has occurred or the
+ * @throws ZipException if a GZIP format error has occurred or the
* compression method used is unsupported
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public GZIPInputStream(InputStream in) throws IOException {
this(in, 512);
@@ -102,12 +102,12 @@
* @return the actual number of bytes read, or -1 if the end of the
* compressed input stream is reached
*
- * @exception NullPointerException If <code>buf</code> is <code>null</code>.
- * @exception IndexOutOfBoundsException If <code>off</code> is negative,
+ * @throws NullPointerException If <code>buf</code> is <code>null</code>.
+ * @throws IndexOutOfBoundsException If <code>off</code> is negative,
* <code>len</code> is negative, or <code>len</code> is greater than
* <code>buf.length - off</code>
- * @exception ZipException if the compressed input data is corrupt.
- * @exception IOException if an I/O error has occurred.
+ * @throws ZipException if the compressed input data is corrupt.
+ * @throws IOException if an I/O error has occurred.
*
*/
public int read(byte[] buf, int off, int len) throws IOException {
@@ -130,7 +130,7 @@
/**
* Closes this input stream and releases any system resources associated
* with the stream.
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void close() throws IOException {
if (!closed) {
--- a/src/java.base/share/classes/java/util/zip/GZIPOutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/zip/GZIPOutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -61,8 +61,8 @@
*
* @param out the output stream
* @param size the output buffer size
- * @exception IOException If an I/O error has occurred.
- * @exception IllegalArgumentException if {@code size <= 0}
+ * @throws IOException If an I/O error has occurred.
+ * @throws IllegalArgumentException if {@code size <= 0}
*/
public GZIPOutputStream(OutputStream out, int size) throws IOException {
this(out, size, false);
@@ -80,8 +80,8 @@
* this instance flushes the compressor with flush mode
* {@link Deflater#SYNC_FLUSH} before flushing the output
* stream, otherwise only flushes the output stream
- * @exception IOException If an I/O error has occurred.
- * @exception IllegalArgumentException if {@code size <= 0}
+ * @throws IOException If an I/O error has occurred.
+ * @throws IllegalArgumentException if {@code size <= 0}
*
* @since 1.7
*/
@@ -104,7 +104,7 @@
* the 2-argument constructor GZIPOutputStream(out, false).
*
* @param out the output stream
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
public GZIPOutputStream(OutputStream out) throws IOException {
this(out, 512, false);
@@ -122,7 +122,7 @@
* {@link Deflater#SYNC_FLUSH} before flushing the output
* stream, otherwise only flushes the output stream
*
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*
* @since 1.7
*/
@@ -138,7 +138,7 @@
* @param buf the data to be written
* @param off the start offset of the data
* @param len the length of the data
- * @exception IOException If an I/O error has occurred.
+ * @throws IOException If an I/O error has occurred.
*/
public synchronized void write(byte[] buf, int off, int len)
throws IOException
@@ -151,7 +151,7 @@
* Finishes writing compressed data to the output stream without closing
* the underlying stream. Use this method when applying multiple filters
* in succession to the same output stream.
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void finish() throws IOException {
if (!def.finished()) {
--- a/src/java.base/share/classes/java/util/zip/InflaterInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/zip/InflaterInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -76,7 +76,7 @@
* @param in the input stream
* @param inf the decompressor ("inflater")
* @param size the input buffer size
- * @exception IllegalArgumentException if {@code size <= 0}
+ * @throws IllegalArgumentException if {@code size <= 0}
*/
public InflaterInputStream(InputStream in, Inflater inf, int size) {
super(in);
@@ -116,7 +116,7 @@
* Reads a byte of uncompressed data. This method will block until
* enough input is available for decompression.
* @return the byte read, or -1 if end of compressed input is reached
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public int read() throws IOException {
ensureOpen();
@@ -132,12 +132,12 @@
* @param len the maximum number of bytes read
* @return the actual number of bytes read, or -1 if the end of the
* compressed input is reached or a preset dictionary is needed
- * @exception NullPointerException If <code>b</code> is <code>null</code>.
- * @exception IndexOutOfBoundsException If <code>off</code> is negative,
+ * @throws NullPointerException If <code>b</code> is <code>null</code>.
+ * @throws IndexOutOfBoundsException If <code>off</code> is negative,
* <code>len</code> is negative, or <code>len</code> is greater than
* <code>b.length - off</code>
- * @exception ZipException if a ZIP format error has occurred
- * @exception IOException if an I/O error has occurred
+ * @throws ZipException if a ZIP format error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public int read(byte[] b, int off, int len) throws IOException {
ensureOpen();
@@ -173,7 +173,7 @@
* of bytes that could be read without blocking.
*
* @return 1 before EOF and 0 after EOF.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*
*/
public int available() throws IOException {
@@ -195,8 +195,8 @@
* Skips specified number of bytes of uncompressed data.
* @param n the number of bytes to skip
* @return the actual number of bytes skipped.
- * @exception IOException if an I/O error has occurred
- * @exception IllegalArgumentException if {@code n < 0}
+ * @throws IOException if an I/O error has occurred
+ * @throws IllegalArgumentException if {@code n < 0}
*/
public long skip(long n) throws IOException {
if (n < 0) {
@@ -223,7 +223,7 @@
/**
* Closes this input stream and releases any system resources associated
* with the stream.
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void close() throws IOException {
if (!closed) {
@@ -236,7 +236,7 @@
/**
* Fills input buffer with more data to decompress.
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
protected void fill() throws IOException {
ensureOpen();
@@ -283,7 +283,7 @@
* <code>InflaterInputStream</code> does nothing except throw an
* <code>IOException</code>.
*
- * @exception IOException if this method is invoked.
+ * @throws IOException if this method is invoked.
* @see java.io.InputStream#mark(int)
* @see java.io.IOException
*/
--- a/src/java.base/share/classes/java/util/zip/ZipInputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/zip/ZipInputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -110,8 +110,8 @@
* Reads the next ZIP file entry and positions the stream at the
* beginning of the entry data.
* @return the next ZIP file entry, or null if there are no more entries
- * @exception ZipException if a ZIP file error has occurred
- * @exception IOException if an I/O error has occurred
+ * @throws ZipException if a ZIP file error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public ZipEntry getNextEntry() throws IOException {
ensureOpen();
@@ -133,8 +133,8 @@
/**
* Closes the current ZIP entry and positions the stream for reading the
* next entry.
- * @exception ZipException if a ZIP file error has occurred
- * @exception IOException if an I/O error has occurred
+ * @throws ZipException if a ZIP file error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void closeEntry() throws IOException {
ensureOpen();
@@ -150,7 +150,7 @@
* of bytes that could be read without blocking.
*
* @return 1 before EOF and 0 after EOF has reached for current entry.
- * @exception IOException if an I/O error occurs.
+ * @throws IOException if an I/O error occurs.
*
*/
public int available() throws IOException {
@@ -172,12 +172,12 @@
* @param len the maximum number of bytes read
* @return the actual number of bytes read, or -1 if the end of the
* entry is reached
- * @exception NullPointerException if <code>b</code> is <code>null</code>.
- * @exception IndexOutOfBoundsException if <code>off</code> is negative,
+ * @throws NullPointerException if <code>b</code> is <code>null</code>.
+ * @throws IndexOutOfBoundsException if <code>off</code> is negative,
* <code>len</code> is negative, or <code>len</code> is greater than
* <code>b.length - off</code>
- * @exception ZipException if a ZIP file error has occurred
- * @exception IOException if an I/O error has occurred
+ * @throws ZipException if a ZIP file error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public int read(byte[] b, int off, int len) throws IOException {
ensureOpen();
@@ -231,9 +231,9 @@
* Skips specified number of bytes in the current ZIP entry.
* @param n the number of bytes to skip
* @return the actual number of bytes skipped
- * @exception ZipException if a ZIP file error has occurred
- * @exception IOException if an I/O error has occurred
- * @exception IllegalArgumentException if {@code n < 0}
+ * @throws ZipException if a ZIP file error has occurred
+ * @throws IOException if an I/O error has occurred
+ * @throws IllegalArgumentException if {@code n < 0}
*/
public long skip(long n) throws IOException {
if (n < 0) {
@@ -260,7 +260,7 @@
/**
* Closes this input stream and releases any system resources associated
* with the stream.
- * @exception IOException if an I/O error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void close() throws IOException {
if (!closed) {
--- a/src/java.base/share/classes/java/util/zip/ZipOutputStream.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.base/share/classes/java/util/zip/ZipOutputStream.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -140,8 +140,8 @@
/**
* Sets the ZIP file comment.
- * @param comment the comment string
- * @exception IllegalArgumentException if the length of the specified
+ * @param comment the comment string
+ * @throws IllegalArgumentException if the length of the specified
* ZIP file comment is greater than 0xFFFF bytes
*/
public void setComment(String comment) {
@@ -156,8 +156,8 @@
* Sets the default compression method for subsequent entries. This
* default will be used whenever the compression method is not specified
* for an individual ZIP file entry, and is initially set to DEFLATED.
- * @param method the default compression method
- * @exception IllegalArgumentException if the specified compression method
+ * @param method the default compression method
+ * @throws IllegalArgumentException if the specified compression method
* is invalid
*/
public void setMethod(int method) {
@@ -170,8 +170,8 @@
/**
* Sets the compression level for subsequent entries which are DEFLATED.
* The default setting is DEFAULT_COMPRESSION.
- * @param level the compression level (0-9)
- * @exception IllegalArgumentException if the compression level is invalid
+ * @param level the compression level (0-9)
+ * @throws IllegalArgumentException if the compression level is invalid
*/
public void setLevel(int level) {
def.setLevel(level);
@@ -183,9 +183,9 @@
* The default compression method will be used if no compression method
* was specified for the entry, and the current time will be used if
* the entry has no set modification time.
- * @param e the ZIP entry to be written
- * @exception ZipException if a ZIP format error has occurred
- * @exception IOException if an I/O error has occurred
+ * @param e the ZIP entry to be written
+ * @throws ZipException if a ZIP format error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void putNextEntry(ZipEntry e) throws IOException {
ensureOpen();
@@ -242,8 +242,8 @@
/**
* Closes the current ZIP entry and positions the stream for writing
* the next entry.
- * @exception ZipException if a ZIP format error has occurred
- * @exception IOException if an I/O error has occurred
+ * @throws ZipException if a ZIP format error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void closeEntry() throws IOException {
ensureOpen();
@@ -307,11 +307,11 @@
/**
* Writes an array of bytes to the current ZIP entry data. This method
* will block until all the bytes are written.
- * @param b the data to be written
- * @param off the start offset in the data
- * @param len the number of bytes that are written
- * @exception ZipException if a ZIP file error has occurred
- * @exception IOException if an I/O error has occurred
+ * @param b the data to be written
+ * @param off the start offset in the data
+ * @param len the number of bytes that are written
+ * @throws ZipException if a ZIP file error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public synchronized void write(byte[] b, int off, int len)
throws IOException
@@ -349,8 +349,8 @@
* Finishes writing the contents of the ZIP output stream without closing
* the underlying stream. Use this method when applying multiple filters
* in succession to the same output stream.
- * @exception ZipException if a ZIP file error has occurred
- * @exception IOException if an I/O exception has occurred
+ * @throws ZipException if a ZIP file error has occurred
+ * @throws IOException if an I/O exception has occurred
*/
public void finish() throws IOException {
ensureOpen();
@@ -370,8 +370,8 @@
/**
* Closes the ZIP output stream as well as the stream being filtered.
- * @exception ZipException if a ZIP file error has occurred
- * @exception IOException if an I/O error has occurred
+ * @throws ZipException if a ZIP file error has occurred
+ * @throws IOException if an I/O error has occurred
*/
public void close() throws IOException {
if (!closed) {
--- a/src/java.base/share/native/libjava/ObjectInputStream.c Thu Sep 19 17:33:18 2019 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,175 +0,0 @@
-/*
- * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include "jni.h"
-#include "jvm.h"
-#include "jni_util.h"
-#include "jlong.h"
-
-#include "java_lang_Float.h"
-#include "java_lang_Double.h"
-#include "java_io_ObjectInputStream.h"
-
-
-/*
- * Class: java_io_ObjectInputStream
- * Method: bytesToFloats
- * Signature: ([BI[FII)V
- *
- * Reconstitutes nfloats float values from their byte representations. Byte
- * values are read from array src starting at offset srcpos; the resulting
- * float values are written to array dst starting at dstpos.
- */
-JNIEXPORT void JNICALL
-Java_java_io_ObjectInputStream_bytesToFloats(JNIEnv *env,
- jclass this,
- jbyteArray src,
- jint srcpos,
- jfloatArray dst,
- jint dstpos,
- jint nfloats)
-{
- union {
- int i;
- float f;
- } u;
- jfloat *floats;
- jbyte *bytes;
- jsize dstend;
- jint ival;
-
- if (nfloats == 0)
- return;
-
- /* fetch source array */
- if (src == NULL) {
- JNU_ThrowNullPointerException(env, NULL);
- return;
- }
- bytes = (*env)->GetPrimitiveArrayCritical(env, src, NULL);
- if (bytes == NULL) /* exception thrown */
- return;
-
- /* fetch dest array */
- if (dst == NULL) {
- (*env)->ReleasePrimitiveArrayCritical(env, src, bytes, JNI_ABORT);
- JNU_ThrowNullPointerException(env, NULL);
- return;
- }
- floats = (*env)->GetPrimitiveArrayCritical(env, dst, NULL);
- if (floats == NULL) { /* exception thrown */
- (*env)->ReleasePrimitiveArrayCritical(env, src, bytes, JNI_ABORT);
- return;
- }
-
- /* do conversion */
- dstend = dstpos + nfloats;
- for ( ; dstpos < dstend; dstpos++) {
- ival = ((bytes[srcpos + 0] & 0xFF) << 24) +
- ((bytes[srcpos + 1] & 0xFF) << 16) +
- ((bytes[srcpos + 2] & 0xFF) << 8) +
- ((bytes[srcpos + 3] & 0xFF) << 0);
- u.i = (long) ival;
- floats[dstpos] = (jfloat) u.f;
- srcpos += 4;
- }
-
- (*env)->ReleasePrimitiveArrayCritical(env, src, bytes, JNI_ABORT);
- (*env)->ReleasePrimitiveArrayCritical(env, dst, floats, 0);
-}
-
-/*
- * Class: java_io_ObjectInputStream
- * Method: bytesToDoubles
- * Signature: ([BI[DII)V
- *
- * Reconstitutes ndoubles double values from their byte representations.
- * Byte values are read from array src starting at offset srcpos; the
- * resulting double values are written to array dst starting at dstpos.
- */
-JNIEXPORT void JNICALL
-Java_java_io_ObjectInputStream_bytesToDoubles(JNIEnv *env,
- jclass this,
- jbyteArray src,
- jint srcpos,
- jdoubleArray dst,
- jint dstpos,
- jint ndoubles)
-
-{
- union {
- jlong l;
- double d;
- } u;
- jdouble *doubles;
- jbyte *bytes;
- jsize dstend;
- jlong lval;
-
- if (ndoubles == 0)
- return;
-
- /* fetch source array */
- if (src == NULL) {
- JNU_ThrowNullPointerException(env, NULL);
- return;
- }
- bytes = (*env)->GetPrimitiveArrayCritical(env, src, NULL);
- if (bytes == NULL) /* exception thrown */
- return;
-
- /* fetch dest array */
- if (dst == NULL) {
- (*env)->ReleasePrimitiveArrayCritical(env, src, bytes, JNI_ABORT);
- JNU_ThrowNullPointerException(env, NULL);
- return;
- }
- doubles = (*env)->GetPrimitiveArrayCritical(env, dst, NULL);
- if (doubles == NULL) { /* exception thrown */
- (*env)->ReleasePrimitiveArrayCritical(env, src, bytes, JNI_ABORT);
- return;
- }
-
- /* do conversion */
- dstend = dstpos + ndoubles;
- for ( ; dstpos < dstend; dstpos++) {
- lval = (((jlong) bytes[srcpos + 0] & 0xFF) << 56) +
- (((jlong) bytes[srcpos + 1] & 0xFF) << 48) +
- (((jlong) bytes[srcpos + 2] & 0xFF) << 40) +
- (((jlong) bytes[srcpos + 3] & 0xFF) << 32) +
- (((jlong) bytes[srcpos + 4] & 0xFF) << 24) +
- (((jlong) bytes[srcpos + 5] & 0xFF) << 16) +
- (((jlong) bytes[srcpos + 6] & 0xFF) << 8) +
- (((jlong) bytes[srcpos + 7] & 0xFF) << 0);
- jlong_to_jdouble_bits(&lval);
- u.l = lval;
- doubles[dstpos] = (jdouble) u.d;
- srcpos += 8;
- }
-
- (*env)->ReleasePrimitiveArrayCritical(env, src, bytes, JNI_ABORT);
- (*env)->ReleasePrimitiveArrayCritical(env, dst, doubles, 0);
-}
-
--- a/src/java.base/share/native/libjava/ObjectOutputStream.c Thu Sep 19 17:33:18 2019 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-/*
- * Copyright (c) 1999, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include "jni_util.h"
-#include "jdk_util.h"
-
-#include "java_lang_Float.h"
-#include "java_lang_Double.h"
-#include "java_io_ObjectOutputStream.h"
-
-/*
- * Class: java_io_ObjectOutputStream
- * Method: floatsToBytes
- * Signature: ([FI[BII)V
- *
- * Convert nfloats float values to their byte representations. Float values
- * are read from array src starting at offset srcpos and written to array
- * dst starting at offset dstpos.
- */
-JNIEXPORT void JNICALL
-Java_java_io_ObjectOutputStream_floatsToBytes(JNIEnv *env,
- jclass this,
- jfloatArray src,
- jint srcpos,
- jbyteArray dst,
- jint dstpos,
- jint nfloats)
-{
- union {
- int i;
- float f;
- } u;
- jfloat *floats;
- jbyte *bytes;
- jsize srcend;
- jint ival;
- float fval;
-
- if (nfloats == 0)
- return;
-
- /* fetch source array */
- if (src == NULL) {
- JNU_ThrowNullPointerException(env, NULL);
- return;
- }
- floats = (*env)->GetPrimitiveArrayCritical(env, src, NULL);
- if (floats == NULL) /* exception thrown */
- return;
-
- /* fetch dest array */
- if (dst == NULL) {
- (*env)->ReleasePrimitiveArrayCritical(env, src, floats, JNI_ABORT);
- JNU_ThrowNullPointerException(env, NULL);
- return;
- }
- bytes = (*env)->GetPrimitiveArrayCritical(env, dst, NULL);
- if (bytes == NULL) { /* exception thrown */
- (*env)->ReleasePrimitiveArrayCritical(env, src, floats, JNI_ABORT);
- return;
- }
-
- /* do conversion */
- srcend = srcpos + nfloats;
- for ( ; srcpos < srcend; srcpos++) {
- fval = (float) floats[srcpos];
- if (ISNANF(fval)) { /* collapse NaNs */
- ival = 0x7fc00000;
- } else {
- u.f = fval;
- ival = (jint) u.i;
- }
- bytes[dstpos++] = (ival >> 24) & 0xFF;
- bytes[dstpos++] = (ival >> 16) & 0xFF;
- bytes[dstpos++] = (ival >> 8) & 0xFF;
- bytes[dstpos++] = (ival >> 0) & 0xFF;
- }
-
- (*env)->ReleasePrimitiveArrayCritical(env, src, floats, JNI_ABORT);
- (*env)->ReleasePrimitiveArrayCritical(env, dst, bytes, 0);
-}
-
-/*
- * Class: java_io_ObjectOutputStream
- * Method: doublesToBytes
- * Signature: ([DI[BII)V
- *
- * Convert ndoubles double values to their byte representations. Double
- * values are read from array src starting at offset srcpos and written to
- * array dst starting at offset dstpos.
- */
-JNIEXPORT void JNICALL
-Java_java_io_ObjectOutputStream_doublesToBytes(JNIEnv *env,
- jclass this,
- jdoubleArray src,
- jint srcpos,
- jbyteArray dst,
- jint dstpos,
- jint ndoubles)
-{
- union {
- jlong l;
- double d;
- } u;
- jdouble *doubles;
- jbyte *bytes;
- jsize srcend;
- jdouble dval;
- jlong lval;
-
- if (ndoubles == 0)
- return;
-
- /* fetch source array */
- if (src == NULL) {
- JNU_ThrowNullPointerException(env, NULL);
- return;
- }
- doubles = (*env)->GetPrimitiveArrayCritical(env, src, NULL);
- if (doubles == NULL) /* exception thrown */
- return;
-
- /* fetch dest array */
- if (dst == NULL) {
- (*env)->ReleasePrimitiveArrayCritical(env, src, doubles, JNI_ABORT);
- JNU_ThrowNullPointerException(env, NULL);
- return;
- }
- bytes = (*env)->GetPrimitiveArrayCritical(env, dst, NULL);
- if (bytes == NULL) { /* exception thrown */
- (*env)->ReleasePrimitiveArrayCritical(env, src, doubles, JNI_ABORT);
- return;
- }
-
- /* do conversion */
- srcend = srcpos + ndoubles;
- for ( ; srcpos < srcend; srcpos++) {
- dval = doubles[srcpos];
- if (ISNAND((double) dval)) { /* collapse NaNs */
- lval = jint_to_jlong(0x7ff80000);
- lval = jlong_shl(lval, 32);
- } else {
- jdouble_to_jlong_bits(&dval);
- u.d = (double) dval;
- lval = u.l;
- }
- bytes[dstpos++] = (lval >> 56) & 0xFF;
- bytes[dstpos++] = (lval >> 48) & 0xFF;
- bytes[dstpos++] = (lval >> 40) & 0xFF;
- bytes[dstpos++] = (lval >> 32) & 0xFF;
- bytes[dstpos++] = (lval >> 24) & 0xFF;
- bytes[dstpos++] = (lval >> 16) & 0xFF;
- bytes[dstpos++] = (lval >> 8) & 0xFF;
- bytes[dstpos++] = (lval >> 0) & 0xFF;
- }
-
- (*env)->ReleasePrimitiveArrayCritical(env, src, doubles, JNI_ABORT);
- (*env)->ReleasePrimitiveArrayCritical(env, dst, bytes, 0);
-}
--- a/src/java.management/share/classes/java/lang/management/ThreadMXBean.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.management/share/classes/java/lang/management/ThreadMXBean.java Sat Sep 21 12:10:52 2019 +0200
@@ -160,7 +160,7 @@
*
* @return an array of {@code long}, each is a thread ID.
*
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("monitor").
*/
@@ -199,7 +199,7 @@
* it does not exist.
*
* @throws IllegalArgumentException if {@code id <= 0}.
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("monitor").
*/
@@ -237,7 +237,7 @@
*
* @throws IllegalArgumentException if any element in the input array
* {@code ids} is {@code <= 0}.
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("monitor").
*/
@@ -284,7 +284,7 @@
*
* @throws IllegalArgumentException if {@code id <= 0}.
* @throws IllegalArgumentException if {@code maxDepth is negative}.
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("monitor").
*
@@ -337,7 +337,7 @@
* @throws IllegalArgumentException if {@code maxDepth is negative}.
* @throws IllegalArgumentException if any element in the input array
* {@code ids} is {@code <= 0}.
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("monitor").
*
@@ -360,7 +360,7 @@
* @return {@code true} if thread contention monitoring is enabled;
* {@code false} otherwise.
*
- * @throws UnsupportedOperationException if the Java virtual
+ * @throws java.lang.UnsupportedOperationException if the Java virtual
* machine does not support thread contention monitoring.
*
* @see #isThreadContentionMonitoringSupported
@@ -374,10 +374,10 @@
* @param enable {@code true} to enable;
* {@code false} to disable.
*
- * @throws UnsupportedOperationException if the Java
+ * @throws java.lang.UnsupportedOperationException if the Java
* virtual machine does not support thread contention monitoring.
*
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("control").
*
@@ -394,7 +394,7 @@
* the current thread has executed in user mode or system mode.
*
* <p>
- * This is a convenience method for local management use and is
+ * This is a convenient method for local management use and is
* equivalent to calling:
* <blockquote><pre>
* {@link #getThreadCpuTime getThreadCpuTime}(Thread.currentThread().getId());
@@ -403,7 +403,7 @@
* @return the total CPU time for the current thread if CPU time
* measurement is enabled; {@code -1} otherwise.
*
- * @throws UnsupportedOperationException if the Java
+ * @throws java.lang.UnsupportedOperationException if the Java
* virtual machine does not support CPU time measurement for
* the current thread.
*
@@ -421,7 +421,7 @@
* not necessarily nanoseconds accuracy.
*
* <p>
- * This is a convenience method for local management use and is
+ * This is a convenient method for local management use and is
* equivalent to calling:
* <blockquote><pre>
* {@link #getThreadUserTime getThreadUserTime}(Thread.currentThread().getId());
@@ -430,7 +430,7 @@
* @return the user-level CPU time for the current thread if CPU time
* measurement is enabled; {@code -1} otherwise.
*
- * @throws UnsupportedOperationException if the Java
+ * @throws java.lang.UnsupportedOperationException if the Java
* virtual machine does not support CPU time measurement for
* the current thread.
*
@@ -467,7 +467,7 @@
* {@code -1} otherwise.
*
* @throws IllegalArgumentException if {@code id <= 0}.
- * @throws UnsupportedOperationException if the Java
+ * @throws java.lang.UnsupportedOperationException if the Java
* virtual machine does not support CPU time measurement for
* other threads.
*
@@ -502,7 +502,7 @@
* {@code -1} otherwise.
*
* @throws IllegalArgumentException if {@code id <= 0}.
- * @throws UnsupportedOperationException if the Java
+ * @throws java.lang.UnsupportedOperationException if the Java
* virtual machine does not support CPU time measurement for
* other threads.
*
@@ -548,7 +548,7 @@
* @return {@code true} if thread CPU time measurement is enabled;
* {@code false} otherwise.
*
- * @throws UnsupportedOperationException if the Java virtual
+ * @throws java.lang.UnsupportedOperationException if the Java virtual
* machine does not support CPU time measurement for other threads
* nor for the current thread.
*
@@ -564,11 +564,11 @@
* @param enable {@code true} to enable;
* {@code false} to disable.
*
- * @throws UnsupportedOperationException if the Java
+ * @throws java.lang.UnsupportedOperationException if the Java
* virtual machine does not support CPU time measurement for
* any threads nor for the current thread.
*
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("control").
*
@@ -604,7 +604,7 @@
* @return an array of IDs of the threads that are monitor
* deadlocked, if any; {@code null} otherwise.
*
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("monitor").
*
@@ -616,7 +616,7 @@
* Resets the peak thread count to the current number of
* live threads.
*
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("control").
*
@@ -642,10 +642,10 @@
* deadlocked waiting for object monitors or ownable synchronizers, if any;
* {@code null} otherwise.
*
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("monitor").
- * @throws UnsupportedOperationException if the Java virtual
+ * @throws java.lang.UnsupportedOperationException if the Java virtual
* machine does not support monitoring of ownable synchronizer usage.
*
* @see #isSynchronizerUsageSupported
@@ -704,10 +704,10 @@
* information about a thread whose ID is in the corresponding
* element of the input array of IDs.
*
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("monitor").
- * @throws UnsupportedOperationException
+ * @throws java.lang.UnsupportedOperationException
* <ul>
* <li>if {@code lockedMonitors} is {@code true} but
* the Java virtual machine does not support monitoring
@@ -794,10 +794,10 @@
* element of the input array of IDs.
*
* @throws IllegalArgumentException if {@code maxDepth} is negative.
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("monitor").
- * @throws UnsupportedOperationException
+ * @throws java.lang.UnsupportedOperationException
* <ul>
* <li>if {@code lockedMonitors} is {@code true} but
* the Java virtual machine does not support monitoring
@@ -835,10 +835,10 @@
*
* @return an array of {@link ThreadInfo} for all live threads.
*
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("monitor").
- * @throws UnsupportedOperationException
+ * @throws java.lang.UnsupportedOperationException
* <ul>
* <li>if {@code lockedMonitors} is {@code true} but
* the Java virtual machine does not support monitoring
@@ -884,10 +884,10 @@
* @return an array of {@link ThreadInfo} for all live threads.
*
* @throws IllegalArgumentException if {@code maxDepth} is negative.
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("monitor").
- * @throws UnsupportedOperationException
+ * @throws java.lang.UnsupportedOperationException
* <ul>
* <li>if {@code lockedMonitors} is {@code true} but
* the Java virtual machine does not support monitoring
--- a/src/java.management/share/classes/sun/management/ThreadImpl.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.management/share/classes/sun/management/ThreadImpl.java Sat Sep 21 12:10:52 2019 +0200
@@ -29,7 +29,6 @@
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
import javax.management.ObjectName;
-import java.util.Objects;
/**
* Implementation for java.lang.management.ThreadMXBean as well as providing the
@@ -113,15 +112,11 @@
return cpuTimeEnabled;
}
- private void ensureThreadAllocatedMemorySupported() {
+ protected boolean isThreadAllocatedMemoryEnabled() {
if (!isThreadAllocatedMemorySupported()) {
throw new UnsupportedOperationException(
- "Thread allocated memory measurement is not supported.");
+ "Thread allocated memory measurement is not supported");
}
- }
-
- protected boolean isThreadAllocatedMemoryEnabled() {
- ensureThreadAllocatedMemorySupported();
return allocatedMemoryEnabled;
}
@@ -160,18 +155,16 @@
return getThreadInfo(ids, 0);
}
- private void verifyThreadId(long id) {
- if (id <= 0) {
- throw new IllegalArgumentException(
- "Invalid thread ID parameter: " + id);
+ private void verifyThreadIds(long[] ids) {
+ if (ids == null) {
+ throw new NullPointerException("Null ids parameter.");
}
- }
-
- private void verifyThreadIds(long[] ids) {
- Objects.requireNonNull(ids);
for (int i = 0; i < ids.length; i++) {
- verifyThreadId(ids[i]);
+ if (ids[i] <= 0) {
+ throw new IllegalArgumentException(
+ "Invalid thread ID parameter: " + ids[i]);
+ }
}
}
@@ -349,41 +342,26 @@
}
}
- protected long getCurrentThreadAllocatedBytes() {
- if (isThreadAllocatedMemoryEnabled()) {
- return getThreadAllocatedMemory0(0);
- }
- return -1;
- }
-
- private boolean verifyThreadAllocatedMemory(long id) {
- verifyThreadId(id);
- return isThreadAllocatedMemoryEnabled();
- }
-
protected long getThreadAllocatedBytes(long id) {
- boolean verified = verifyThreadAllocatedMemory(id);
-
- if (verified) {
- return getThreadAllocatedMemory0(
- Thread.currentThread().getId() == id ? 0 : id);
- }
- return -1;
+ long[] ids = new long[1];
+ ids[0] = id;
+ final long[] sizes = getThreadAllocatedBytes(ids);
+ return sizes[0];
}
private boolean verifyThreadAllocatedMemory(long[] ids) {
verifyThreadIds(ids);
+
+ // check if Thread allocated memory measurement is supported.
+ if (!isThreadAllocatedMemorySupported()) {
+ throw new UnsupportedOperationException(
+ "Thread allocated memory measurement is not supported.");
+ }
+
return isThreadAllocatedMemoryEnabled();
}
protected long[] getThreadAllocatedBytes(long[] ids) {
- Objects.requireNonNull(ids);
-
- if (ids.length == 1) {
- long size = getThreadAllocatedBytes(ids[0]);
- return new long[] { size };
- }
-
boolean verified = verifyThreadAllocatedMemory(ids);
long[] sizes = new long[ids.length];
@@ -396,7 +374,10 @@
}
protected void setThreadAllocatedMemoryEnabled(boolean enable) {
- ensureThreadAllocatedMemorySupported();
+ if (!isThreadAllocatedMemorySupported()) {
+ throw new UnsupportedOperationException(
+ "Thread allocated memory measurement is not supported.");
+ }
Util.checkControlAccess();
synchronized (this) {
@@ -530,7 +511,6 @@
private static native void getThreadTotalCpuTime1(long[] ids, long[] result);
private static native long getThreadUserCpuTime0(long id);
private static native void getThreadUserCpuTime1(long[] ids, long[] result);
- private static native long getThreadAllocatedMemory0(long id);
private static native void getThreadAllocatedMemory1(long[] ids, long[] result);
private static native void setThreadCpuTimeEnabled0(boolean enable);
private static native void setThreadAllocatedMemoryEnabled0(boolean enable);
--- a/src/java.management/share/native/libmanagement/ThreadImpl.c Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.management/share/native/libmanagement/ThreadImpl.c Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, 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
@@ -94,13 +94,6 @@
JNI_FALSE /* user */);
}
-JNIEXPORT jlong JNICALL
-Java_sun_management_ThreadImpl_getThreadAllocatedMemory0
- (JNIEnv *env, jclass cls, jlong tid)
-{
- return jmm_interface->GetOneThreadAllocatedMemory(env, tid);
-}
-
JNIEXPORT void JNICALL
Java_sun_management_ThreadImpl_getThreadAllocatedMemory1
(JNIEnv *env, jclass cls, jlongArray ids, jlongArray sizeArray)
--- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/parsers/AbstractSAXParser.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/parsers/AbstractSAXParser.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -78,6 +78,7 @@
* @author Arnaud Le Hors, IBM
* @author Andy Clark, IBM
*
+ * @LastModified: Sep 2019
*/
@SuppressWarnings("deprecation")
public abstract class AbstractSAXParser
@@ -318,6 +319,13 @@
// document's XML 1.0|1.1, that's how it'll stay
fVersion = version;
fStandalone = "yes".equals(standalone);
+ if (fContentHandler != null) {
+ try {
+ fContentHandler.declaration(version, encoding, standalone);
+ } catch (SAXException e) {
+ throw new XNIException(e);
+ }
+ }
} // xmlDecl(String,String,String)
/**
--- a/src/java.xml/share/classes/org/xml/sax/AttributeList.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/AttributeList.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,23 +23,11 @@
* questions.
*/
-// SAX Attribute List Interface.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: AttributeList.java,v 1.3 2004/11/03 22:44:51 jsuttor Exp $
-
package org.xml.sax;
/**
* Interface for an element's attribute specifications.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This is the original SAX1 interface for reporting an element's
* attributes. Unlike the new {@link org.xml.sax.Attributes Attributes}
* interface, it does not support Namespace-related information.
--- a/src/java.xml/share/classes/org/xml/sax/Attributes.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/Attributes.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,25 +23,12 @@
* questions.
*/
-// Attributes.java - attribute list with Namespace support
-// http://www.saxproject.org
-// Written by David Megginson
-// NO WARRANTY! This class is in the public domain.
-// $Id: Attributes.java,v 1.2 2004/11/03 22:44:51 jsuttor Exp $
-
package org.xml.sax;
/**
* Interface for a list of XML attributes.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This interface allows access to a list of attributes in
* three different ways:</p>
*
--- a/src/java.xml/share/classes/org/xml/sax/ContentHandler.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/ContentHandler.java Sat Sep 21 12:10:52 2019 +0200
@@ -23,25 +23,12 @@
* questions.
*/
-// ContentHandler.java - handle main document content.
-// http://www.saxproject.org
-// Written by David Megginson
-// NO WARRANTY! This class is in the public domain.
-// $Id: ContentHandler.java,v 1.2 2004/11/03 22:44:51 jsuttor Exp $
-
package org.xml.sax;
/**
* Receive notification of the logical content of a document.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This is the main interface that most SAX applications
* implement: if the application needs to be informed of basic parsing
* events, it implements this interface and registers an instance with
@@ -126,6 +113,29 @@
public void startDocument ()
throws SAXException;
+ /**
+ * Receives notification of the XML declaration.
+ *
+ * @implSpec
+ * The default implementation in the SAX API is to do nothing.
+ *
+ * @param version the version string as in the input document, null if not
+ * specified
+ * @param encoding the encoding string as in the input document, null if not
+ * specified
+ * @param standalone the standalone string as in the input document, null if
+ * not specified
+ *
+ * @throws SAXException if the application wants to report an error or
+ * interrupt the parsing process
+ *
+ * @since 14
+ */
+ default void declaration(String version, String encoding, String standalone)
+ throws SAXException
+ {
+ //no op
+ }
/**
* Receive notification of the end of a document.
--- a/src/java.xml/share/classes/org/xml/sax/DTDHandler.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/DTDHandler.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,23 +23,11 @@
* questions.
*/
-// SAX DTD handler.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: DTDHandler.java,v 1.2 2004/11/03 22:44:51 jsuttor Exp $
-
package org.xml.sax;
/**
* Receive notification of basic DTD-related events.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>If a SAX application needs information about notations and
* unparsed entities, then the application implements this
* interface and registers an instance with the SAX parser using
--- a/src/java.xml/share/classes/org/xml/sax/DocumentHandler.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/DocumentHandler.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,23 +23,11 @@
* questions.
*/
-// SAX document handler.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: DocumentHandler.java,v 1.2 2004/11/03 22:44:51 jsuttor Exp $
-
package org.xml.sax;
/**
* Receive notification of general document events.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This was the main event-handling interface for SAX1; in
* SAX2, it has been replaced by {@link org.xml.sax.ContentHandler
* ContentHandler}, which provides Namespace support and reporting
--- a/src/java.xml/share/classes/org/xml/sax/EntityResolver.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/EntityResolver.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// SAX entity resolver.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: EntityResolver.java,v 1.2 2004/11/03 22:44:52 jsuttor Exp $
-
package org.xml.sax;
import java.io.IOException;
@@ -36,13 +31,6 @@
/**
* Basic interface for resolving entities.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>If a SAX application needs to implement customized handling
* for external entities, it must implement this interface and
* register an instance with the SAX driver using the
--- a/src/java.xml/share/classes/org/xml/sax/ErrorHandler.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/ErrorHandler.java Sat Sep 21 12:10:52 2019 +0200
@@ -23,24 +23,12 @@
* questions.
*/
-// SAX error handler.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: ErrorHandler.java,v 1.2 2004/11/03 22:44:52 jsuttor Exp $
-
package org.xml.sax;
/**
* Basic interface for SAX error handlers.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>If a SAX application needs to implement customized error
* handling, it must implement this interface and then register an
* instance with the XML reader using the
--- a/src/java.xml/share/classes/org/xml/sax/HandlerBase.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/HandlerBase.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,24 +23,12 @@
* questions.
*/
-// SAX default handler base class.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: HandlerBase.java,v 1.2 2005/06/10 03:50:47 jeffsuttor Exp $
-
package org.xml.sax;
/**
* Default base class for handlers.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
- * <p>This class implements the default behaviour for four SAX1
+ * <p>This class implements the default behavior for four SAX1
* interfaces: EntityResolver, DTDHandler, DocumentHandler,
* and ErrorHandler. It is now obsolete, but is included in SAX2 to
* support legacy SAX1 applications. SAX2 applications should use
--- a/src/java.xml/share/classes/org/xml/sax/InputSource.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/InputSource.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// SAX input source.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: InputSource.java,v 1.2 2004/11/03 22:55:32 jsuttor Exp $
-
package org.xml.sax;
import java.io.IOException;
@@ -37,13 +32,6 @@
/**
* A single input source for an XML entity.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This class allows a SAX application to encapsulate information
* about an input source in a single object, which may include
* a public identifier, a system identifier, a byte stream (possibly
--- a/src/java.xml/share/classes/org/xml/sax/Locator.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/Locator.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,24 +23,12 @@
* questions.
*/
-// SAX locator interface for document events.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: Locator.java,v 1.2 2004/11/03 22:55:32 jsuttor Exp $
-
package org.xml.sax;
/**
* Interface for associating a SAX event with a document location.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>If a SAX parser provides location information to the SAX
* application, it does so by implementing this interface and then
* passing an instance to the application using the content
--- a/src/java.xml/share/classes/org/xml/sax/Parser.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/Parser.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// SAX parser interface.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: Parser.java,v 1.2 2004/11/03 22:55:32 jsuttor Exp $
-
package org.xml.sax;
import java.io.IOException;
@@ -37,13 +32,6 @@
/**
* Basic interface for SAX (Simple API for XML) parsers.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This was the main event supplier interface for SAX1; it has
* been replaced in SAX2 by {@link org.xml.sax.XMLReader XMLReader},
* which includes Namespace support and sophisticated configurability
--- a/src/java.xml/share/classes/org/xml/sax/SAXException.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/SAXException.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// SAX exception class.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: SAXException.java,v 1.3 2004/11/03 22:55:32 jsuttor Exp $
-
package org.xml.sax;
import java.io.IOException;
@@ -39,13 +34,6 @@
/**
* Encapsulate a general SAX error or warning.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This class can contain basic error or warning information from
* either the XML parser or the application: a parser writer or
* application writer can subclass it to provide additional
--- a/src/java.xml/share/classes/org/xml/sax/SAXNotRecognizedException.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/SAXNotRecognizedException.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,25 +23,12 @@
* questions.
*/
-// SAXNotRecognizedException.java - unrecognized feature or value.
-// http://www.saxproject.org
-// Written by David Megginson
-// NO WARRANTY! This class is in the Public Domain.
-// $Id: SAXNotRecognizedException.java,v 1.3 2004/11/03 22:55:32 jsuttor Exp $
-
package org.xml.sax;
/**
* Exception class for an unrecognized identifier.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>An XMLReader will throw this exception when it finds an
* unrecognized feature or property identifier; SAX applications and
* extensions may use this class for other, similar purposes.</p>
--- a/src/java.xml/share/classes/org/xml/sax/SAXNotSupportedException.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/SAXNotSupportedException.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,24 +23,11 @@
* questions.
*/
-// SAXNotSupportedException.java - unsupported feature or value.
-// http://www.saxproject.org
-// Written by David Megginson
-// NO WARRANTY! This class is in the Public Domain.
-// $Id: SAXNotSupportedException.java,v 1.4 2004/11/03 22:55:32 jsuttor Exp $
-
package org.xml.sax;
/**
* Exception class for an unsupported operation.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>An XMLReader will throw this exception when it recognizes a
* feature or property identifier, but cannot perform the requested
* operation (setting a state or value). Other SAX2 applications and
--- a/src/java.xml/share/classes/org/xml/sax/SAXParseException.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/SAXParseException.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,23 +23,11 @@
* questions.
*/
-// SAX exception class.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: SAXParseException.java,v 1.2 2004/11/03 22:55:32 jsuttor Exp $
-
package org.xml.sax;
/**
* Encapsulate an XML parse error or warning.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This exception may include information for locating the error
* in the original XML document, as if it came from a {@link Locator}
* object. Note that although the application
--- a/src/java.xml/share/classes/org/xml/sax/XMLFilter.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/XMLFilter.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,25 +23,12 @@
* questions.
*/
-// XMLFilter.java - filter SAX2 events.
-// http://www.saxproject.org
-// Written by David Megginson
-// NO WARRANTY! This class is in the Public Domain.
-// $Id: XMLFilter.java,v 1.2 2004/11/03 22:55:32 jsuttor Exp $
-
package org.xml.sax;
/**
* Interface for an XML filter.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>An XML filter is like an XML reader, except that it obtains its
* events from another XML reader rather than a primary source like
* an XML document or database. Filters can modify a stream of
--- a/src/java.xml/share/classes/org/xml/sax/XMLReader.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/XMLReader.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,12 +23,6 @@
* questions.
*/
-// XMLReader.java - read an XML document.
-// http://www.saxproject.org
-// Written by David Megginson
-// NO WARRANTY! This class is in the Public Domain.
-// $Id: XMLReader.java,v 1.3 2004/11/03 22:55:32 jsuttor Exp $
-
package org.xml.sax;
import java.io.IOException;
@@ -37,17 +31,6 @@
/**
* Interface for reading an XML document using callbacks.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
- * <p><strong>Note:</strong> despite its name, this interface does
- * <em>not</em> extend the standard Java {@link java.io.Reader Reader}
- * interface, because reading XML is a fundamentally different activity
- * than reading character data.</p>
*
* <p>XMLReader is the interface that an XML parser's SAX2 driver must
* implement. This interface allows an application to set and
@@ -75,6 +58,11 @@
* <p>There are adapters available to convert a SAX1 Parser to
* a SAX2 XMLReader and vice-versa.</p>
*
+ * @apiNote Despite its name, this interface does
+ * <em>not</em> extend the standard Java {@link java.io.Reader Reader}
+ * interface, because reading XML is a fundamentally different activity
+ * than reading character data.
+ *
* @since 1.4, SAX 2.0
* @author David Megginson
* @see org.xml.sax.XMLFilter
--- a/src/java.xml/share/classes/org/xml/sax/ext/Attributes2.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/ext/Attributes2.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// Attributes2.java - extended Attributes
-// http://www.saxproject.org
-// Public Domain: no warranty.
-// $Id: Attributes2.java,v 1.2 2004/11/03 22:49:07 jsuttor Exp $
-
package org.xml.sax.ext;
import org.xml.sax.Attributes;
@@ -35,18 +30,13 @@
/**
* SAX2 extension to augment the per-attribute information
- * provided though {@link Attributes}.
+ * provided through {@link Attributes}.
* If an implementation supports this extension, the attributes
* provided in {@link org.xml.sax.ContentHandler#startElement
* ContentHandler.startElement() } will implement this interface,
* and the <em>http://xml.org/sax/features/use-attributes2</em>
* feature flag will have the value <em>true</em>.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
* <p> XMLReader implementations are not required to support this
* information, and it is not part of core-only SAX2 distributions.</p>
*
--- a/src/java.xml/share/classes/org/xml/sax/ext/Attributes2Impl.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/ext/Attributes2Impl.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// Attributes2Impl.java - extended AttributesImpl
-// http://www.saxproject.org
-// Public Domain: no warranty.
-// $Id: Attributes2Impl.java,v 1.3 2005/02/24 11:20:18 gg156739 Exp $
-
package org.xml.sax.ext;
import org.xml.sax.Attributes;
@@ -38,11 +33,6 @@
* SAX2 extension helper for additional Attributes information,
* implementing the {@link Attributes2} interface.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
* <p>This is not part of core-only SAX2 distributions.</p>
*
* <p>The <em>specified</em> flag for each attribute will always
--- a/src/java.xml/share/classes/org/xml/sax/ext/DeclHandler.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/ext/DeclHandler.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// DeclHandler.java - Optional handler for DTD declaration events.
-// http://www.saxproject.org
-// Public Domain: no warranty.
-// $Id: DeclHandler.java,v 1.2 2004/11/03 22:49:08 jsuttor Exp $
-
package org.xml.sax.ext;
import org.xml.sax.SAXException;
@@ -36,13 +31,6 @@
/**
* SAX2 extension handler for DTD declaration events.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This is an optional extension handler for SAX2 to provide more
* complete information about DTD declarations in an XML document.
* XML readers are not required to recognize this handler, and it
--- a/src/java.xml/share/classes/org/xml/sax/ext/DefaultHandler2.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/ext/DefaultHandler2.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// DefaultHandler2.java - extended DefaultHandler
-// http://www.saxproject.org
-// Public Domain: no warranty.
-// $Id: DefaultHandler2.java,v 1.2 2004/11/03 22:49:08 jsuttor Exp $
-
package org.xml.sax.ext;
import java.io.IOException;
@@ -44,11 +39,6 @@
* method the added handler methods just return. Subclassers may
* override everything on a method-by-method basis.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
* <p> <em>Note:</em> this class might yet learn that the
* <em>ContentHandler.setDocumentLocator()</em> call might be passed a
* {@link Locator2} object, and that the
--- a/src/java.xml/share/classes/org/xml/sax/ext/EntityResolver2.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/ext/EntityResolver2.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// EntityResolver2.java - Extended SAX entity resolver.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: EntityResolver2.java,v 1.2 2004/11/03 22:49:08 jsuttor Exp $
-
package org.xml.sax.ext;
import java.io.IOException;
@@ -48,11 +43,6 @@
* method (in this interface) is used <em>instead of</em> the older (SAX 1.0)
* {@link EntityResolver#resolveEntity EntityResolver.resolveEntity()} method.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
* <p>If a SAX application requires the customized handling which this
* interface defines for external entities, it must ensure that it uses
* an XMLReader with the
--- a/src/java.xml/share/classes/org/xml/sax/ext/LexicalHandler.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/ext/LexicalHandler.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// LexicalHandler.java - optional handler for lexical parse events.
-// http://www.saxproject.org
-// Public Domain: no warranty.
-// $Id: LexicalHandler.java,v 1.2 2004/11/03 22:49:08 jsuttor Exp $
-
package org.xml.sax.ext;
import org.xml.sax.SAXException;
@@ -35,13 +30,6 @@
/**
* SAX2 extension handler for lexical events.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This is an optional extension handler for SAX2 to provide
* lexical information about an XML document, such as comments
* and CDATA section boundaries.
--- a/src/java.xml/share/classes/org/xml/sax/ext/Locator2.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/ext/Locator2.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// Locator2.java - extended Locator
-// http://www.saxproject.org
-// Public Domain: no warranty.
-// $Id: Locator2.java,v 1.2 2004/11/03 22:49:08 jsuttor Exp $
-
package org.xml.sax.ext;
import org.xml.sax.Locator;
@@ -35,7 +30,7 @@
/**
* SAX2 extension to augment the entity information provided
- * though a {@link Locator}.
+ * through a {@link Locator}.
* If an implementation supports this extension, the Locator
* provided in {@link org.xml.sax.ContentHandler#setDocumentLocator
* ContentHandler.setDocumentLocator() } will implement this
@@ -43,11 +38,6 @@
* <em>http://xml.org/sax/features/use-locator2</em> feature
* flag will have the value <em>true</em>.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
* <p> XMLReader implementations are not required to support this
* information, and it is not part of core-only SAX2 distributions.</p>
*
--- a/src/java.xml/share/classes/org/xml/sax/ext/Locator2Impl.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/ext/Locator2Impl.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// Locator2Impl.java - extended LocatorImpl
-// http://www.saxproject.org
-// Public Domain: no warranty.
-// $Id: Locator2Impl.java,v 1.2 2004/11/03 22:49:08 jsuttor Exp $
-
package org.xml.sax.ext;
import org.xml.sax.Locator;
@@ -38,11 +33,6 @@
* SAX2 extension helper for holding additional Entity information,
* implementing the {@link Locator2} interface.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * </blockquote>
- *
* <p> This is not part of core-only SAX2 distributions.</p>
*
* @since 1.5, SAX 2.0.2
--- a/src/java.xml/share/classes/org/xml/sax/ext/package-info.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/ext/package-info.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,9 +27,6 @@
* Provides interfaces to SAX2 facilities that
* conformant SAX drivers won't necessarily support.
*
- * <p>
- * See <a target='_top' href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for more information about SAX.
*
* <p>
* This package is independent of the SAX2 core, though the functionality
@@ -66,6 +63,10 @@
* As an example, most validation systems can be cleanly layered on top
* of parsers supporting the standardized SAX2 interfaces.
*
+ * @apiNote The SAX API, originally developed at
+ * <a href="http://www.saxproject.org">the SAX Project</a>,
+ * has been defined by Java SE since 1.4.
+ *
* @since 1.4
*/
--- a/src/java.xml/share/classes/org/xml/sax/helpers/AttributeListImpl.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/helpers/AttributeListImpl.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// SAX default implementation for AttributeList.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: AttributeListImpl.java,v 1.2 2004/11/03 22:53:08 jsuttor Exp $
-
package org.xml.sax.helpers;
import java.util.ArrayList;
@@ -38,13 +33,6 @@
/**
* Default implementation for AttributeList.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>AttributeList implements the deprecated SAX1 {@link
* org.xml.sax.AttributeList AttributeList} interface, and has been
* replaced by the new SAX2 {@link org.xml.sax.helpers.AttributesImpl
--- a/src/java.xml/share/classes/org/xml/sax/helpers/AttributesImpl.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/helpers/AttributesImpl.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,12 +23,6 @@
* questions.
*/
-// AttributesImpl.java - default implementation of Attributes.
-// http://www.saxproject.org
-// Written by David Megginson
-// NO WARRANTY! This class is in the public domain.
-// $Id: AttributesImpl.java,v 1.2 2004/11/03 22:53:08 jsuttor Exp $
-
package org.xml.sax.helpers;
import org.xml.sax.Attributes;
@@ -37,13 +31,6 @@
/**
* Default implementation of the Attributes interface.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This class provides a default implementation of the SAX2
* {@link org.xml.sax.Attributes Attributes} interface, with the
* addition of manipulators so that the list can be modified or
--- a/src/java.xml/share/classes/org/xml/sax/helpers/DefaultHandler.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/helpers/DefaultHandler.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,12 +23,6 @@
* questions.
*/
-// DefaultHandler.java - default implementation of the core handlers.
-// http://www.saxproject.org
-// Written by David Megginson
-// NO WARRANTY! This class is in the public domain.
-// $Id: DefaultHandler.java,v 1.3 2006/04/13 02:06:32 jeffsuttor Exp $
-
package org.xml.sax.helpers;
import java.io.IOException;
@@ -47,13 +41,6 @@
/**
* Default base class for SAX2 event handlers.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This class is available as a convenience base class for SAX2
* applications: it provides default implementations for all of the
* callbacks in the four core SAX2 handler classes:</p>
--- a/src/java.xml/share/classes/org/xml/sax/helpers/LocatorImpl.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/helpers/LocatorImpl.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// SAX default implementation for Locator.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: LocatorImpl.java,v 1.2 2004/11/03 22:53:09 jsuttor Exp $
-
package org.xml.sax.helpers;
import org.xml.sax.Locator;
@@ -36,13 +31,6 @@
/**
* Provide an optional convenience implementation of Locator.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This class is available mainly for application writers, who
* can use it to make a persistent snapshot of a locator at any
* point during a document parse:</p>
--- a/src/java.xml/share/classes/org/xml/sax/helpers/NamespaceSupport.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/helpers/NamespaceSupport.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,12 +23,6 @@
* questions.
*/
-// NamespaceSupport.java - generic Namespace support for SAX.
-// http://www.saxproject.org
-// Written by David Megginson
-// This class is in the Public Domain. NO WARRANTY!
-// $Id: NamespaceSupport.java,v 1.5 2004/11/03 22:53:09 jsuttor Exp $
-
package org.xml.sax.helpers;
import java.util.ArrayList;
@@ -44,13 +38,6 @@
* Encapsulate Namespace logic for use by applications using SAX,
* or internally by SAX drivers.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This class encapsulates the logic of Namespace processing: it
* tracks the declarations currently in force for each context and
* automatically processes qualified XML names into their Namespace
--- a/src/java.xml/share/classes/org/xml/sax/helpers/NewInstance.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/helpers/NewInstance.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,13 +23,6 @@
* questions.
*/
-// NewInstance.java - create a new instance of a class by name.
-// http://www.saxproject.org
-// Written by Edwin Goei, edwingo@apache.org
-// and by David Brownell, dbrownell@users.sourceforge.net
-// NO WARRANTY! This class is in the Public Domain.
-// $Id: NewInstance.java,v 1.2 2005/06/10 03:50:50 jeffsuttor Exp $
-
package org.xml.sax.helpers;
import java.lang.reflect.InvocationTargetException;
@@ -38,12 +31,6 @@
/**
* Create a new instance of a class by name.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
*
* <p>This class contains a static method for creating an instance of a
* class from an explicit class name. It tries to use the thread's context
--- a/src/java.xml/share/classes/org/xml/sax/helpers/ParserAdapter.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/helpers/ParserAdapter.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,12 +23,6 @@
* questions.
*/
-// ParserAdapter.java - adapt a SAX1 Parser to a SAX2 XMLReader.
-// http://www.saxproject.org
-// Written by David Megginson
-// NO WARRANTY! This class is in the public domain.
-// $Id: ParserAdapter.java,v 1.3 2004/11/03 22:53:09 jsuttor Exp $
-
package org.xml.sax.helpers;
import java.io.IOException;
@@ -56,13 +50,6 @@
/**
* Adapt a SAX1 Parser as a SAX2 XMLReader.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This class wraps a SAX1 {@link org.xml.sax.Parser Parser}
* and makes it act as a SAX2 {@link org.xml.sax.XMLReader XMLReader},
* with feature, property, and Namespace support. Note
--- a/src/java.xml/share/classes/org/xml/sax/helpers/ParserFactory.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/helpers/ParserFactory.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,11 +23,6 @@
* questions.
*/
-// SAX parser factory.
-// http://www.saxproject.org
-// No warranty; no copyright -- use this as you will.
-// $Id: ParserFactory.java,v 1.2 2004/11/03 22:53:09 jsuttor Exp $
-
package org.xml.sax.helpers;
import jdk.xml.internal.SecuritySupport;
@@ -35,13 +30,6 @@
/**
* Java-specific class for dynamically loading SAX parsers.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p><strong>Note:</strong> This class is designed to work with the now-deprecated
* SAX1 {@link org.xml.sax.Parser Parser} class. SAX2 applications should use
* {@link org.xml.sax.helpers.XMLReaderFactory XMLReaderFactory} instead.</p>
--- a/src/java.xml/share/classes/org/xml/sax/helpers/XMLFilterImpl.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/helpers/XMLFilterImpl.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,12 +23,6 @@
* questions.
*/
-// XMLFilterImpl.java - base SAX2 filter implementation.
-// http://www.saxproject.org
-// Written by David Megginson
-// NO WARRANTY! This class is in the Public Domain.
-// $Id: XMLFilterImpl.java,v 1.3 2004/11/03 22:53:09 jsuttor Exp $
-
package org.xml.sax.helpers;
import java.io.IOException;
@@ -51,13 +45,6 @@
/**
* Base class for deriving an XML filter.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This class is designed to sit between an {@link org.xml.sax.XMLReader
* XMLReader} and the client application's event handlers. By default, it
* does nothing but pass requests up to the reader and events
--- a/src/java.xml/share/classes/org/xml/sax/helpers/XMLReaderAdapter.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/helpers/XMLReaderAdapter.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,12 +23,6 @@
* questions.
*/
-// XMLReaderAdapter.java - adapt an SAX2 XMLReader to a SAX1 Parser
-// http://www.saxproject.org
-// Written by David Megginson
-// NO WARRANTY! This class is in the public domain.
-// $Id: XMLReaderAdapter.java,v 1.3 2004/11/03 22:53:09 jsuttor Exp $
-
package org.xml.sax.helpers;
import java.io.IOException;
@@ -53,13 +47,6 @@
/**
* Adapt a SAX2 XMLReader as a SAX1 Parser.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This class wraps a SAX2 {@link org.xml.sax.XMLReader XMLReader}
* and makes it act as a SAX1 {@link org.xml.sax.Parser Parser}. The XMLReader
* must support a true value for the
--- a/src/java.xml/share/classes/org/xml/sax/helpers/XMLReaderFactory.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/helpers/XMLReaderFactory.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,13 +23,6 @@
* questions.
*/
-// XMLReaderFactory.java - factory for creating a new reader.
-// http://www.saxproject.org
-// Written by David Megginson
-// and by David Brownell
-// NO WARRANTY! This class is in the Public Domain.
-// $Id: XMLReaderFactory.java,v 1.2.2.1 2005/07/31 22:48:08 jeffsuttor Exp $
-
package org.xml.sax.helpers;
import java.io.BufferedReader;
@@ -50,13 +43,6 @@
/**
* Factory for creating an XML reader.
*
- * <blockquote>
- * <em>This module, both source code and documentation, is in the
- * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
- * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for further information.
- * </blockquote>
- *
* <p>This class contains static methods for creating an XML reader
* from an explicit class name, or based on runtime defaults:
*
--- a/src/java.xml/share/classes/org/xml/sax/helpers/package-info.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/helpers/package-info.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -28,9 +28,9 @@
* Provides helper classes, including
* support for bootstrapping SAX-based applications.
*
- * <p>
- * See <a target='_top' href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for more information about SAX.
+ * @apiNote The SAX API, originally developed at
+ * <a href="http://www.saxproject.org">the SAX Project</a>,
+ * has been defined by Java SE since 1.4.
*
* @since 1.4
*/
--- a/src/java.xml/share/classes/org/xml/sax/package-info.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/java.xml/share/classes/org/xml/sax/package-info.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,16 +24,10 @@
*/
/**
- * Provides the core SAX APIs.
- * Some SAX1 APIs are deprecated to encourage integration of
- * namespace-awareness into designs of new applications
- * and into maintenance of existing infrastructure.
+ * Provides the interfaces for the Simple API for XML (SAX). Supports both
+ * the SAX1 and SAX2 APIs.
*
* <p>
- * See <a target='_top' href='http://www.saxproject.org'>http://www.saxproject.org</a>
- * for more information about SAX.
- *
- *
* <h2> SAX2 Standard Feature Flags </h2>
*
* <p>
@@ -330,6 +324,9 @@
* All of these standard properties are optional.
* XMLReader implementations are not required to support them.
*
+ * @apiNote The SAX API, originally developed at
+ * <a href="http://www.saxproject.org">the SAX Project</a>,
+ * has been defined by Java SE since 1.4.
*
* @since 1.4
*/
--- a/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java Sat Sep 21 12:10:52 2019 +0200
@@ -62,7 +62,6 @@
private static final long serialVersionUID = -1354835039035306505L;
static final Debug debug = Debug.getInstance("sunpkcs11");
-
// the PKCS11 object through which we make the native calls
final PKCS11 p11;
@@ -913,6 +912,25 @@
createPoller();
}
+ private static boolean isLegacy(CK_MECHANISM_INFO mechInfo)
+ throws PKCS11Exception {
+ // assume full support if no mech info available
+ // For vendor-specific mechanisms, often no mech info is provided
+ boolean partialSupport = false;
+
+ if (mechInfo != null) {
+ if ((mechInfo.flags & CKF_DECRYPT) != 0) {
+ // non-legacy cipher mechs should support encryption
+ partialSupport |= ((mechInfo.flags & CKF_ENCRYPT) == 0);
+ }
+ if ((mechInfo.flags & CKF_VERIFY) != 0) {
+ // non-legacy signature mechs should support signing
+ partialSupport |= ((mechInfo.flags & CKF_SIGN) == 0);
+ }
+ }
+ return partialSupport;
+ }
+
// test if a token is present and initialize this provider for it if so.
// does nothing if no token is found
// called from constructor and by poller
@@ -946,24 +964,35 @@
// return a CKM_DES_CBC_PAD.
final Map<Descriptor,Integer> supportedAlgs =
new HashMap<Descriptor,Integer>();
+
for (int i = 0; i < supportedMechanisms.length; i++) {
long longMech = supportedMechanisms[i];
- boolean isEnabled = config.isEnabled(longMech);
+ CK_MECHANISM_INFO mechInfo = token.getMechanismInfo(longMech);
if (showInfo) {
- CK_MECHANISM_INFO mechInfo =
- p11.C_GetMechanismInfo(slotID, longMech);
System.out.println("Mechanism " +
- Functions.getMechanismName(longMech) + ":");
- if (isEnabled == false) {
+ Functions.getMechanismName(longMech) + ":");
+ System.out.println(mechInfo == null?
+ (Constants.INDENT + "info n/a") :
+ mechInfo);
+ }
+ if (!config.isEnabled(longMech)) {
+ if (showInfo) {
System.out.println("DISABLED in configuration");
}
- System.out.println(mechInfo);
- }
- if (isEnabled == false) {
continue;
}
+ if (isLegacy(mechInfo)) {
+ if (showInfo) {
+ System.out.println("DISABLED due to legacy");
+ }
+ continue;
+ }
+
// we do not know of mechs with the upper 32 bits set
if (longMech >>> 32 != 0) {
+ if (showInfo) {
+ System.out.println("DISABLED due to unknown mech value");
+ }
continue;
}
int mech = (int)longMech;
--- a/src/jdk.jdwp.agent/share/native/libjdwp/transport.c Thu Sep 19 17:33:18 2019 -0700
+++ b/src/jdk.jdwp.agent/share/native/libjdwp/transport.c Sat Sep 21 12:10:52 2019 +0200
@@ -49,6 +49,15 @@
static struct jdwpTransportCallback callback = {jvmtiAllocate, jvmtiDeallocate};
+static void freeTransportInfo(TransportInfo *info) {
+ if (info) {
+ jvmtiDeallocate(info->name);
+ jvmtiDeallocate(info->address);
+ jvmtiDeallocate(info->allowed_peers);
+ jvmtiDeallocate(info);
+ }
+}
+
/*
* Print the last transport error
*/
@@ -345,12 +354,14 @@
LOG_MISC(("Begin accept thread"));
- info = (TransportInfo*)(void*)arg;
+ info = (TransportInfo*)arg;
t = info->transport;
rc = (*t)->Accept(t, info->timeout, 0);
/* System property no longer needed */
setTransportProperty(jni_env, NULL);
+ /* TransportInfo data no longer needed */
+ freeTransportInfo(info);
if (rc != JDWPTRANSPORT_ERROR_NONE) {
/*
@@ -371,10 +382,14 @@
static void JNICALL
attachThread(jvmtiEnv* jvmti_env, JNIEnv* jni_env, void* arg)
{
- TransportInfo *info = (TransportInfo*)(void*)arg;
+ TransportInfo *info = (TransportInfo*)arg;
+ jdwpTransportEnv *t = info->transport;
+
+ /* TransportInfo data no longer needed */
+ freeTransportInfo(info);
LOG_MISC(("Begin attach thread"));
- connectionInitiated(info->transport);
+ connectionInitiated(t);
LOG_MISC(("End attach thread"));
}
@@ -484,7 +499,7 @@
if (info->transport == NULL) {
serror = loadTransport(name, info);
if (serror != JDWP_ERROR(NONE)) {
- jvmtiDeallocate(info);
+ freeTransportInfo(info);
return serror;
}
}
@@ -577,6 +592,9 @@
goto handleError;
}
+ /* reset info - it will be deallocated by acceptThread */
+ info = NULL;
+
launchCommand = debugInit_launchOnInit();
if (launchCommand != NULL) {
serror = launch(launchCommand, name, retAddress);
@@ -592,10 +610,7 @@
return JDWP_ERROR(NONE);
handleError:
- jvmtiDeallocate(info->name);
- jvmtiDeallocate(info->address);
- jvmtiDeallocate(info->allowed_peers);
- jvmtiDeallocate(info);
+ freeTransportInfo(info);
} else {
/*
* Note that we don't attempt to do a launch here. Launching
@@ -614,7 +629,7 @@
/* The name, address and allowed_peers fields in 'info'
* are not allocated in the non-server case so
* they do not need to be freed. */
- jvmtiDeallocate(info);
+ freeTransportInfo(info);
return serror;
}
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/Repository.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/Repository.java Sat Sep 21 12:10:52 2019 +0200
@@ -56,7 +56,12 @@
return instance;
}
- public synchronized void setBasePath(SafePath baseLocation) throws IOException {
+ public synchronized void setBasePath(SafePath baseLocation) throws Exception {
+
+ if(baseLocation.equals(this.baseLocation)) {
+ Logger.log(LogTag.JFR, LogLevel.INFO, "Same base repository path " + baseLocation.toString() + " is set");
+ return;
+ }
// Probe to see if repository can be created, needed for fail fast
// during JVM startup or JFR.configure
this.repository = createRepository(baseLocation);
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/SecuritySupport.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/SecuritySupport.java Sat Sep 21 12:10:52 2019 +0200
@@ -182,6 +182,19 @@
public int compareTo(SafePath that) {
return that.text.compareTo(this.text);
}
+
+ @Override
+ public boolean equals(Object other) {
+ if(other != null && other instanceof SafePath){
+ return this.toPath().equals(((SafePath) other).toPath());
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return this.toPath().hashCode();
+ }
}
private interface RunnableWithCheckedException {
--- a/src/jdk.management/share/classes/com/sun/management/ThreadMXBean.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/jdk.management/share/classes/com/sun/management/ThreadMXBean.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -61,7 +61,7 @@
* @throws NullPointerException if {@code ids} is {@code null}
* @throws IllegalArgumentException if any element in the input array
* {@code ids} is {@code <=} {@code 0}.
- * @throws UnsupportedOperationException if the Java
+ * @throws java.lang.UnsupportedOperationException if the Java
* virtual machine implementation does not support CPU time
* measurement.
*
@@ -95,7 +95,7 @@
* @throws NullPointerException if {@code ids} is {@code null}
* @throws IllegalArgumentException if any element in the input array
* {@code ids} is {@code <=} {@code 0}.
- * @throws UnsupportedOperationException if the Java
+ * @throws java.lang.UnsupportedOperationException if the Java
* virtual machine implementation does not support CPU time
* measurement.
*
@@ -109,44 +109,13 @@
/**
* Returns an approximation of the total amount of memory, in bytes,
- * allocated in heap memory for the current thread.
- * The returned value is an approximation because some Java virtual machine
- * implementations may use object allocation mechanisms that result in a
- * delay between the time an object is allocated and the time its size is
- * recorded.
- *
- * <p>
- * This is a convenience method for local management use and is
- * equivalent to calling:
- * <blockquote><pre>
- * {@link #getThreadAllocatedBytes getThreadAllocatedBytes}(Thread.currentThread().getId());
- * </pre></blockquote>
- *
- * @return an approximation of the total memory allocated, in bytes, in
- * heap memory for the current thread
- * if thread memory allocation measurement is enabled;
- * {@code -1} otherwise.
- *
- * @throws UnsupportedOperationException if the Java virtual
- * machine implementation does not support thread memory allocation
- * measurement.
- *
- * @see #isThreadAllocatedMemorySupported
- * @see #isThreadAllocatedMemoryEnabled
- * @see #setThreadAllocatedMemoryEnabled
- * @since 14
- */
- public long getCurrentThreadAllocatedBytes();
-
- /**
- * Returns an approximation of the total amount of memory, in bytes,
- * allocated in heap memory for the thread with the specified ID.
+ * allocated in heap memory for the thread of the specified ID.
* The returned value is an approximation because some Java virtual machine
* implementations may use object allocation mechanisms that result in a
* delay between the time an object is allocated and the time its size is
* recorded.
* <p>
- * If the thread with the specified ID is not alive or does not exist,
+ * If the thread of the specified ID is not alive or does not exist,
* this method returns {@code -1}. If thread memory allocation measurement
* is disabled, this method returns {@code -1}.
* A thread is alive if it has been started and has not yet died.
@@ -158,13 +127,13 @@
*
* @param id the thread ID of a thread
* @return an approximation of the total memory allocated, in bytes, in
- * heap memory for the thread with the specified ID
- * if the thread with the specified ID exists, the thread is alive,
+ * heap memory for a thread of the specified ID
+ * if the thread of the specified ID exists, the thread is alive,
* and thread memory allocation measurement is enabled;
* {@code -1} otherwise.
*
* @throws IllegalArgumentException if {@code id} {@code <=} {@code 0}.
- * @throws UnsupportedOperationException if the Java virtual
+ * @throws java.lang.UnsupportedOperationException if the Java virtual
* machine implementation does not support thread memory allocation
* measurement.
*
@@ -196,7 +165,7 @@
* @throws NullPointerException if {@code ids} is {@code null}
* @throws IllegalArgumentException if any element in the input array
* {@code ids} is {@code <=} {@code 0}.
- * @throws UnsupportedOperationException if the Java virtual
+ * @throws java.lang.UnsupportedOperationException if the Java virtual
* machine implementation does not support thread memory allocation
* measurement.
*
@@ -225,7 +194,7 @@
* @return {@code true} if thread memory allocation measurement is enabled;
* {@code false} otherwise.
*
- * @throws UnsupportedOperationException if the Java virtual
+ * @throws java.lang.UnsupportedOperationException if the Java virtual
* machine does not support thread memory allocation measurement.
*
* @see #isThreadAllocatedMemorySupported
@@ -239,10 +208,10 @@
* @param enable {@code true} to enable;
* {@code false} to disable.
*
- * @throws UnsupportedOperationException if the Java virtual
+ * @throws java.lang.UnsupportedOperationException if the Java virtual
* machine does not support thread memory allocation measurement.
*
- * @throws SecurityException if a security manager
+ * @throws java.lang.SecurityException if a security manager
* exists and the caller does not have
* ManagementPermission("control").
*
--- a/src/jdk.management/share/classes/com/sun/management/internal/HotSpotThreadImpl.java Thu Sep 19 17:33:18 2019 -0700
+++ b/src/jdk.management/share/classes/com/sun/management/internal/HotSpotThreadImpl.java Sat Sep 21 12:10:52 2019 +0200
@@ -58,11 +58,6 @@
}
@Override
- public long getCurrentThreadAllocatedBytes() {
- return super.getCurrentThreadAllocatedBytes();
- }
-
- @Override
public long getThreadAllocatedBytes(long id) {
return super.getThreadAllocatedBytes(id);
}
--- a/test/hotspot/gtest/gc/z/test_zForwarding.cpp Thu Sep 19 17:33:18 2019 -0700
+++ b/test/hotspot/gtest/gc/z/test_zForwarding.cpp Sat Sep 21 12:10:52 2019 +0200
@@ -40,19 +40,19 @@
public:
// Helper functions
- static bool is_power_of_2(uint32_t value) {
+ static bool is_power_of_2(size_t value) {
return ::is_power_of_2((intptr_t)value);
}
class SequenceToFromIndex : AllStatic {
public:
- static uintptr_t even(uint32_t sequence_number) {
+ static uintptr_t even(size_t sequence_number) {
return sequence_number * 2;
}
- static uintptr_t odd(uint32_t sequence_number) {
+ static uintptr_t odd(size_t sequence_number) {
return even(sequence_number) + 1;
}
- static uintptr_t one_to_one(uint32_t sequence_number) {
+ static uintptr_t one_to_one(size_t sequence_number) {
return sequence_number;
}
};
@@ -64,10 +64,10 @@
}
static void find_empty(ZForwarding* forwarding) {
- uint32_t size = forwarding->_entries.length();
- uint32_t entries_to_check = size * 2;
+ size_t size = forwarding->_entries.length();
+ size_t entries_to_check = size * 2;
- for (uint32_t i = 0; i < entries_to_check; i++) {
+ for (size_t i = 0; i < entries_to_check; i++) {
uintptr_t from_index = SequenceToFromIndex::one_to_one(i);
EXPECT_FALSE(forwarding->find(from_index).populated()) << CAPTURE2(from_index, size);
@@ -75,11 +75,11 @@
}
static void find_full(ZForwarding* forwarding) {
- uint32_t size = forwarding->_entries.length();
- uint32_t entries_to_populate = size;
+ size_t size = forwarding->_entries.length();
+ size_t entries_to_populate = size;
// Populate
- for (uint32_t i = 0; i < entries_to_populate; i++) {
+ for (size_t i = 0; i < entries_to_populate; i++) {
uintptr_t from_index = SequenceToFromIndex::one_to_one(i);
ZForwardingCursor cursor;
@@ -90,7 +90,7 @@
}
// Verify
- for (uint32_t i = 0; i < entries_to_populate; i++) {
+ for (size_t i = 0; i < entries_to_populate; i++) {
uintptr_t from_index = SequenceToFromIndex::one_to_one(i);
ZForwardingEntry entry = forwarding->find(from_index);
@@ -102,11 +102,11 @@
}
static void find_every_other(ZForwarding* forwarding) {
- uint32_t size = forwarding->_entries.length();
- uint32_t entries_to_populate = size / 2;
+ size_t size = forwarding->_entries.length();
+ size_t entries_to_populate = size / 2;
// Populate even from indices
- for (uint32_t i = 0; i < entries_to_populate; i++) {
+ for (size_t i = 0; i < entries_to_populate; i++) {
uintptr_t from_index = SequenceToFromIndex::even(i);
ZForwardingCursor cursor;
@@ -117,7 +117,7 @@
}
// Verify populated even indices
- for (uint32_t i = 0; i < entries_to_populate; i++) {
+ for (size_t i = 0; i < entries_to_populate; i++) {
uintptr_t from_index = SequenceToFromIndex::even(i);
ZForwardingCursor cursor;
@@ -132,7 +132,7 @@
//
// This check could be done on a larger range of sequence numbers,
// but currently entries_to_populate is used.
- for (uint32_t i = 0; i < entries_to_populate; i++) {
+ for (size_t i = 0; i < entries_to_populate; i++) {
uintptr_t from_index = SequenceToFromIndex::odd(i);
ZForwardingEntry entry = forwarding->find(from_index);
@@ -158,7 +158,7 @@
page.mark_object(ZAddress::marked(object), dummy, dummy);
const uint32_t live_objects = size;
- const uint32_t live_bytes = live_objects * object_size;
+ const size_t live_bytes = live_objects * object_size;
page.inc_live_atomic(live_objects, live_bytes);
// Setup forwarding
--- a/test/hotspot/jtreg/ProblemList-graal.txt Thu Sep 19 17:33:18 2019 -0700
+++ b/test/hotspot/jtreg/ProblemList-graal.txt Sat Sep 21 12:10:52 2019 +0200
@@ -242,7 +242,6 @@
org.graalvm.compiler.core.test.OptionsVerifierTest 8205081
org.graalvm.compiler.hotspot.test.CompilationWrapperTest 8205081
org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest 8205081
-org.graalvm.compiler.debug.test.DebugContextTest 8205081
org.graalvm.compiler.core.test.deopt.CompiledMethodTest 8202955
--- a/test/hotspot/jtreg/ProblemList.txt Thu Sep 19 17:33:18 2019 -0700
+++ b/test/hotspot/jtreg/ProblemList.txt Sat Sep 21 12:10:52 2019 +0200
@@ -41,6 +41,7 @@
# :hotspot_compiler
compiler/ciReplay/TestSAServer.java 8029528 generic-all
+compiler/codecache/jmx/PoolsIndependenceTest.java 8167015 generic-all
compiler/codecache/stress/OverloadCompileQueueTest.java 8166554 generic-all
compiler/codegen/Test6896617.java 8193479 generic-all
compiler/compilercontrol/jcmd/ClearDirectivesFileStackTest.java 8225370 generic-all
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/codecache/stress/UnexpectedDeoptimizationAllTest.java Sat Sep 21 12:10:52 2019 +0200
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test UnexpectedDeoptimizationAllTest
+ * @key stress
+ * @summary stressing code cache by forcing unexpected deoptimizations of all methods
+ * @library /test/lib /
+ * @modules java.base/jdk.internal.misc
+ * java.management
+ *
+ * @build sun.hotspot.WhiteBox compiler.codecache.stress.Helper compiler.codecache.stress.TestCaseImpl
+ * @run driver ClassFileInstaller sun.hotspot.WhiteBox
+ * sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
+ * -XX:+WhiteBoxAPI -XX:-DeoptimizeRandom
+ * -XX:CompileCommand=dontinline,compiler.codecache.stress.Helper$TestCase::method
+ * -XX:-SegmentedCodeCache
+ * compiler.codecache.stress.UnexpectedDeoptimizationAllTest
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
+ * -XX:+WhiteBoxAPI -XX:-DeoptimizeRandom
+ * -XX:CompileCommand=dontinline,compiler.codecache.stress.Helper$TestCase::method
+ * -XX:+SegmentedCodeCache
+ * compiler.codecache.stress.UnexpectedDeoptimizationAllTest
+ */
+
+package compiler.codecache.stress;
+
+public class UnexpectedDeoptimizationAllTest implements Runnable {
+
+ public static void main(String[] args) {
+ new CodeCacheStressRunner(new UnexpectedDeoptimizationAllTest()).runTest();
+ }
+
+ @Override
+ public void run() {
+ Helper.WHITE_BOX.deoptimizeAll();
+ try {
+ Thread.sleep(10);
+ } catch (Exception e) {
+ }
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/sax/DeclarationTest.java Sat Sep 21 12:10:52 2019 +0200
@@ -0,0 +1,222 @@
+/*
+ * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sax;
+
+import java.io.File;
+import java.io.StringReader;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import org.testng.Assert;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Listeners;
+import org.testng.annotations.Test;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.DefaultHandler;
+
+
+/*
+ * @test
+ * @bug 8230814
+ * @run testng sax.DeclarationTest
+ * @summary Test SAX Parser's handling of XML Declarations.
+ */
+public class DeclarationTest {
+ static String SRC_DIR = System.getProperty("test.src");
+ final static String XML_NO_DECLARATION = "<a>abc</a>";
+ final static String XML_NO_STANDALONE = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?><a>abc</a>";
+ final static String XML_STANDALONE_N = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\" ?><a>abc</a>";
+ final static String XML_STANDALONE_Y = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\" ?><a>abc</a>";
+
+ /**
+ * Provides XML strings for testing XML declaration.
+ *
+ * Fields:
+ * XML string, expected version, encoding and standalone strings
+ *
+ * @return data array for the test
+ * @throws Exception
+ */
+ @DataProvider(name = "default")
+ public Object[][] forDefaultHandler() throws Exception {
+ return new Object[][] {
+ { XML_NO_DECLARATION, null, null, null},
+ { XML_NO_STANDALONE, null, null, null},
+ { XML_STANDALONE_Y, null, null, null},
+ { XML_STANDALONE_N, null, null, null},
+ };
+ }
+
+ /**
+ * Provides XML strings for testing XML declaration.
+ *
+ * Fields:
+ * XML string, expected version, encoding and standalone strings
+ *
+ * @return data array for the test
+ * @throws Exception
+ */
+ @DataProvider(name = "sax-data")
+ public Object[][] xmlSAXData() throws Exception {
+ return new Object[][] {
+ { XML_NO_DECLARATION, null, null, null},
+ { XML_NO_STANDALONE, "1.0", "ISO-8859-1", null},
+ { XML_STANDALONE_Y, "1.0", "ISO-8859-1", "yes"},
+ { XML_STANDALONE_N, "1.0", "ISO-8859-1", "no"},
+ };
+ }
+
+
+ /**
+ * Provides XML files for testing XML declaration.
+ *
+ * Fields:
+ * Source files, expected version, encoding and standalone strings
+ *
+ * @return data array for the test
+ * @throws Exception
+ */
+ @DataProvider(name = "sax-data-files")
+ public Object[][] xmlSAXDataFiles() throws Exception {
+ return new Object[][] {
+ //the source contains no declaration
+ { new File(SRC_DIR + "/../transform/SourceTest.xml"), null, null, null},
+ //<?xml version="1.0" encoding="UTF-8"?>
+ { new File(SRC_DIR + "/toys.xml"), "1.0", "UTF-8", null},
+ //<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+ { new File(SRC_DIR + "/../dom/ElementTraversal.xml"), "1.0", "UTF-8", "no"},
+ // <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+ { new File(SRC_DIR + "/../validation/Bug6449797.xsd"), "1.0", "UTF-8", "yes"},
+ //<?xml version="1.0" standalone="no" ?>
+ { new File(SRC_DIR + "/../transform/5368141.xml"), "1.0", null, "no"},
+
+ //<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+ { new File(SRC_DIR + "/../transform/Bug6206491.xml"), "1.0", "ISO-8859-1", "no"},
+ //<?xml version="1.0" encoding="ISO-8859-1"?>
+ { new File(SRC_DIR + "/../transform/Bug6206491.xsl"), "1.0", "ISO-8859-1", null},
+
+ };
+ }
+
+ /**
+ * Verifies that the default handler does nothing.
+ * @param xml xml string
+ * @param version expected version string
+ * @param encoding expected encoding string
+ * @param standalone expected standalone string
+ * @throws Exception if the test fails
+ */
+ @Test(dataProvider = "default")
+ public void testDefault(String xml, String version, String encoding, String standalone)
+ throws Exception {
+ DefaultImpl h = new DefaultImpl();
+ parseAndVerify(xml, h, version, encoding, standalone);
+ }
+
+ /**
+ * Verifies that the SAX Parser returns the information of XML declaration
+ * through the ContentHandler interface.
+ * @param xml xml string
+ * @param version expected version string
+ * @param encoding expected encoding string
+ * @param standalone expected standalone string
+ * @throws Exception if the test fails
+ */
+ @Test(dataProvider = "sax-data")
+ public void test(String xml, String version, String encoding, String standalone)
+ throws Exception {
+ NewMethodImpl h = new NewMethodImpl();
+ parseAndVerify(xml, h, version, encoding, standalone);
+ }
+
+ /**
+ * Verifies that the SAX Parser returns the information of XML declaration
+ * through the ContentHandler interface.
+ * @param xml xml files
+ * @param version expected version string
+ * @param encoding expected encoding string
+ * @param standalone expected standalone string
+ * @throws Exception if the test fails
+ */
+ @Test(dataProvider = "sax-data-files")
+ public void testFiles(File xml, String version, String encoding, String standalone)
+ throws Exception {
+ SAXParser parser = SAXParserFactory.newDefaultInstance().newSAXParser();
+ NewMethodImpl h = new NewMethodImpl();
+ parser.parse(xml, h);
+ Assert.assertEquals(h.version, version);
+ Assert.assertEquals(h.encoding, encoding);
+ Assert.assertEquals(h.standalone, standalone);
+ }
+
+ /**
+ * Verifies the ContentHandler's XML Declaration feature by parsing an XML
+ * string content.
+ * @param xml xml string
+ * @param version expected version string
+ * @param encoding expected encoding string
+ * @param standalone expected standalone string
+ * @throws Exception if the test fails
+ */
+ private void parseAndVerify(String xml, DefaultImpl h,
+ String version, String encoding, String standalone)
+ throws Exception {
+ XMLReader r = SAXParserFactory.newDefaultInstance().newSAXParser().getXMLReader();
+ r.setContentHandler(h);
+ r.parse(new InputSource(new StringReader(xml)));
+ Assert.assertEquals(h.version, version);
+ Assert.assertEquals(h.encoding, encoding);
+ Assert.assertEquals(h.standalone, standalone);
+ }
+
+ class DefaultImpl extends DefaultHandler{
+ boolean startDocumentInvoked = false;
+ String version, encoding, standalone;
+
+ public void startDocument() throws SAXException {
+ super.startDocument();
+ startDocumentInvoked = true;
+ }
+ }
+
+ class NewMethodImpl extends DefaultImpl {
+
+ public void startDocument() throws SAXException {
+ super.startDocument();
+ }
+
+ @Override
+ public void declaration(String version, String encoding, String standalone)
+ throws SAXException
+ {
+ super.declaration(version, encoding, standalone);
+ Assert.assertTrue(startDocumentInvoked, "declaration follows startDocument");
+ this.version = version;
+ this.encoding = encoding;
+ this.standalone = standalone;
+ }
+ }
+}
--- a/test/jdk/ProblemList.txt Thu Sep 19 17:33:18 2019 -0700
+++ b/test/jdk/ProblemList.txt Sat Sep 21 12:10:52 2019 +0200
@@ -652,8 +652,6 @@
# jdk_security
sun/security/pkcs11/ec/TestKeyFactory.java 8026976 generic-all
-sun/security/pkcs11/Secmod/AddTrustedCert.java 8180837 generic-all
-sun/security/pkcs11/tls/TestKeyMaterial.java 8180837 generic-all
sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java 8161536 generic-all
sun/security/tools/keytool/ListKeychainStore.sh 8156889 macosx-all
--- a/test/jdk/com/sun/management/ThreadMXBean/ThreadAllocatedMemory.java Thu Sep 19 17:33:18 2019 -0700
+++ b/test/jdk/com/sun/management/ThreadMXBean/ThreadAllocatedMemory.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 6173675 8207266
+ * @bug 6173675
* @summary Basic test of ThreadMXBean.getThreadAllocatedBytes
* @author Paul Hohensee
*/
@@ -33,8 +33,9 @@
public class ThreadAllocatedMemory {
private static com.sun.management.ThreadMXBean mbean =
(com.sun.management.ThreadMXBean)ManagementFactory.getThreadMXBean();
- private static volatile boolean done = false;
- private static volatile boolean done1 = false;
+ private static boolean testFailed = false;
+ private static boolean done = false;
+ private static boolean done1 = false;
private static Object obj = new Object();
private static final int NUM_THREADS = 10;
private static Thread[] threads = new Thread[NUM_THREADS];
@@ -43,22 +44,6 @@
public static void main(String[] argv)
throws Exception {
- testSupportEnableDisable();
-
- // Test current thread two ways
- testGetCurrentThreadAllocatedBytes();
- testCurrentThreadGetThreadAllocatedBytes();
-
- // Test a single thread that is not this one
- testGetThreadAllocatedBytes();
-
- // Test many threads that are not this one
- testGetThreadsAllocatedBytes();
-
- System.out.println("Test passed");
- }
-
- private static void testSupportEnableDisable() {
if (!mbean.isThreadAllocatedMemorySupported()) {
return;
}
@@ -73,7 +58,10 @@
"ThreadAllocatedMemory is expected to be disabled");
}
- long s = mbean.getCurrentThreadAllocatedBytes();
+ Thread curThread = Thread.currentThread();
+ long id = curThread.getId();
+
+ long s = mbean.getThreadAllocatedBytes(id);
if (s != -1) {
throw new RuntimeException(
"Invalid ThreadAllocatedBytes returned = " +
@@ -89,106 +77,63 @@
throw new RuntimeException(
"ThreadAllocatedMemory is expected to be enabled");
}
- }
-
- private static void testGetCurrentThreadAllocatedBytes() {
- long size = mbean.getCurrentThreadAllocatedBytes();
- ensureValidSize(size);
-
- // do some more allocation
- doit();
-
- checkResult(Thread.currentThread(), size,
- mbean.getCurrentThreadAllocatedBytes());
- }
-
- private static void testCurrentThreadGetThreadAllocatedBytes() {
- Thread curThread = Thread.currentThread();
- long id = curThread.getId();
long size = mbean.getThreadAllocatedBytes(id);
- ensureValidSize(size);
+ // implementation could have started measurement when
+ // measurement was enabled, in which case size can be 0
+ if (size < 0) {
+ throw new RuntimeException(
+ "Invalid allocated bytes returned = " + size);
+ }
- // do some more allocation
doit();
- checkResult(curThread, size, mbean.getThreadAllocatedBytes(id));
- }
+ // Expected to be size1 >= size
+ long size1 = mbean.getThreadAllocatedBytes(id);
+ if (size1 < size) {
+ throw new RuntimeException("Allocated bytes " + size1 +
+ " expected >= " + size);
+ }
+ System.out.println(curThread.getName() +
+ " Current thread allocated bytes = " + size +
+ " allocated bytes = " + size1);
- private static void testGetThreadAllocatedBytes()
- throws Exception {
- // start a thread
- done = false; done1 = false;
- Thread curThread = new MyThread("MyThread");
- curThread.start();
- long id = curThread.getId();
+ // start threads, wait for them to block
+ for (int i = 0; i < NUM_THREADS; i++) {
+ threads[i] = new MyThread("MyThread-" + i);
+ threads[i].start();
+ }
- // wait for thread to block after doing some allocation
- waitUntilThreadBlocked(curThread);
+ // threads block after doing some allocation
+ waitUntilThreadBlocked();
- long size = mbean.getThreadAllocatedBytes(id);
- ensureValidSize(size);
+ for (int i = 0; i < NUM_THREADS; i++) {
+ sizes[i] = mbean.getThreadAllocatedBytes(threads[i].getId());
+ }
- // let thread go to do some more allocation
+ // let threads go and do some more allocation
synchronized (obj) {
done = true;
obj.notifyAll();
}
- // wait for thread to get going again. we don't care if we
- // catch it in mid-execution or if it hasn't
- // restarted after we're done sleeping.
- goSleep(400);
-
- checkResult(curThread, size, mbean.getThreadAllocatedBytes(id));
-
- // let thread exit
- synchronized (obj) {
- done1 = true;
- obj.notifyAll();
- }
-
- try {
- curThread.join();
- } catch (InterruptedException e) {
- System.out.println("Unexpected exception is thrown.");
- e.printStackTrace(System.out);
- }
- }
-
- private static void testGetThreadsAllocatedBytes()
- throws Exception {
-
- // start threads
- done = false; done1 = false;
- for (int i = 0; i < NUM_THREADS; i++) {
- threads[i] = new MyThread("MyThread-" + i);
- threads[i].start();
- }
-
- // wait for threads to block after doing some allocation
- waitUntilThreadsBlocked();
-
- for (int i = 0; i < NUM_THREADS; i++) {
- sizes[i] = mbean.getThreadAllocatedBytes(threads[i].getId());
- ensureValidSize(sizes[i]);
- }
-
- // let threads go to do some more allocation
- synchronized (obj) {
- done = true;
- obj.notifyAll();
- }
-
- // wait for threads to get going again. we don't care if we
+ // wait for threads to get going again. we don't care if we
// catch them in mid-execution or if some of them haven't
// restarted after we're done sleeping.
goSleep(400);
for (int i = 0; i < NUM_THREADS; i++) {
- checkResult(threads[i], sizes[i],
- mbean.getThreadAllocatedBytes(threads[i].getId()));
+ long newSize = mbean.getThreadAllocatedBytes(threads[i].getId());
+ if (sizes[i] > newSize) {
+ throw new RuntimeException("TEST FAILED: " +
+ threads[i].getName() +
+ " previous allocated bytes = " + sizes[i] +
+ " > current allocated bytes = " + newSize);
+ }
+ System.out.println(threads[i].getName() +
+ " Previous allocated bytes = " + sizes[i] +
+ " Current allocated bytes = " + newSize);
}
// let threads exit
@@ -203,30 +148,17 @@
} catch (InterruptedException e) {
System.out.println("Unexpected exception is thrown.");
e.printStackTrace(System.out);
+ testFailed = true;
break;
}
}
- }
+ if (testFailed) {
+ throw new RuntimeException("TEST FAILED");
+ }
- private static void ensureValidSize(long size) {
- // implementation could have started measurement when
- // measurement was enabled, in which case size can be 0
- if (size < 0) {
- throw new RuntimeException(
- "Invalid allocated bytes returned = " + size);
- }
+ System.out.println("Test passed");
}
- private static void checkResult(Thread curThread,
- long prev_size, long curr_size) {
- if (curr_size < prev_size) {
- throw new RuntimeException("Allocated bytes " + curr_size +
- " expected >= " + prev_size);
- }
- System.out.println(curThread.getName() +
- " Previous allocated bytes = " + prev_size +
- " Current allocated bytes = " + curr_size);
- }
private static void goSleep(long ms) throws Exception {
try {
@@ -237,18 +169,7 @@
}
}
- private static void waitUntilThreadBlocked(Thread thread)
- throws Exception {
- while (true) {
- goSleep(100);
- ThreadInfo info = mbean.getThreadInfo(thread.getId());
- if (info.getThreadState() == Thread.State.WAITING) {
- break;
- }
- }
- }
-
- private static void waitUntilThreadsBlocked()
+ private static void waitUntilThreadBlocked()
throws Exception {
int count = 0;
while (count != NUM_THREADS) {
@@ -289,6 +210,7 @@
} catch (InterruptedException e) {
System.out.println("Unexpected exception is thrown.");
e.printStackTrace(System.out);
+ testFailed = true;
break;
}
}
@@ -303,7 +225,7 @@
" ThreadAllocatedBytes = " + size2);
if (size1 > size2) {
- throw new RuntimeException(getName() +
+ throw new RuntimeException("TEST FAILED: " + getName() +
" ThreadAllocatedBytes = " + size1 +
" > ThreadAllocatedBytes = " + size2);
}
@@ -315,6 +237,7 @@
} catch (InterruptedException e) {
System.out.println("Unexpected exception is thrown.");
e.printStackTrace(System.out);
+ testFailed = true;
break;
}
}
--- a/test/jdk/jdk/jfr/jcmd/TestJcmdConfigure.java Thu Sep 19 17:33:18 2019 -0700
+++ b/test/jdk/jdk/jfr/jcmd/TestJcmdConfigure.java Sat Sep 21 12:10:52 2019 +0200
@@ -26,9 +26,12 @@
package jdk.jfr.jcmd;
import java.nio.file.Files;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
+import jdk.jfr.internal.Repository;
+import jdk.jfr.internal.SecuritySupport.SafePath;
import jdk.jfr.internal.Options;
import jdk.test.lib.Asserts;
import jdk.test.lib.Utils;
@@ -40,7 +43,7 @@
* @requires vm.hasJFR
* @library /test/lib /test/jdk
* @modules jdk.jfr/jdk.jfr.internal
- * @run main/othervm jdk.jfr.jcmd.TestJcmdConfigure
+ * @run main/othervm -Xlog:jfr=info:file=jfr_info.txt jdk.jfr.jcmd.TestJcmdConfigure
*/
public class TestJcmdConfigure {
@@ -53,6 +56,13 @@
private static final String SAMPLE_THREADS = "samplethreads";
private static final String UNSUPPORTED_OPTION = "unsupportedoption";
+ private static final String REPOSITORYPATH_1 = "./repo1";
+ private static final String REPOSITORYPATH_2 = "./repo2";
+
+ private static final String REPOSITORYPATH_SETTING_1 = "repositorypath="+REPOSITORYPATH_1;
+ private static final String REPOSITORYPATH_SETTING_2 = "repositorypath="+REPOSITORYPATH_2;
+ private static final String JFR_UNIFIED_LOG_FILE = "jfr_info.txt";
+
public static void main(String[] args) throws Exception {
//
// Simple sanity tests against what is available in Java,
@@ -76,6 +86,8 @@
testNegative(UNSUPPORTED_OPTION, 100000);
testNegative(MAX_CHUNK_SIZE, -500);
+ testRepository();
+
if (!testExceptions.isEmpty()) {
for (Exception e : testExceptions) {
System.out.println("Error: " + e.getMessage());
@@ -118,4 +130,28 @@
default: throw new RuntimeException("Unknown option " + name);
}
}
+
+ private static void testRepository(){
+ final String findWhat = "[info][jfr] Same base repository path " + REPOSITORYPATH_1 + " is set";
+
+ try {
+ JcmdHelper.jcmd("JFR.configure", REPOSITORYPATH_SETTING_1);
+ SafePath initialPath = Repository.getRepository().getRepositoryPath();
+
+ JcmdHelper.jcmd("JFR.configure", REPOSITORYPATH_SETTING_1);
+ SafePath samePath = Repository.getRepository().getRepositoryPath();
+ Asserts.assertTrue(samePath.equals(initialPath));
+
+ List<String> lines = Files.readAllLines(Paths.get(JFR_UNIFIED_LOG_FILE));
+ Asserts.assertTrue(lines.stream().anyMatch(l->l.contains(findWhat)));
+
+ JcmdHelper.jcmd("JFR.configure", REPOSITORYPATH_SETTING_2);
+ SafePath changedPath = Repository.getRepository().getRepositoryPath();
+
+ Asserts.assertFalse(changedPath.equals(initialPath));
+
+ } catch(Exception e) {
+ testExceptions.add(e);
+ }
+ }
}
--- a/test/jdk/sun/security/pkcs11/PKCS11Test.java Thu Sep 19 17:33:18 2019 -0700
+++ b/test/jdk/sun/security/pkcs11/PKCS11Test.java Sat Sep 21 12:10:52 2019 +0200
@@ -39,6 +39,7 @@
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyPairGenerator;
import java.security.NoSuchProviderException;
+import java.security.Policy;
import java.security.Provider;
import java.security.ProviderException;
import java.security.Security;
@@ -879,6 +880,9 @@
case "MacOSX-x86_64-64":
return fetchNssLib(MACOSX_X64.class);
+ case "Linux-amd64-64":
+ return fetchNssLib(LINUX_X64.class);
+
default:
return null;
}
@@ -900,6 +904,7 @@
+ "\nPlease make sure the artifact is available.");
}
}
+ Policy.setPolicy(null); // Clear the policy created by JIB if any
return path;
}
@@ -923,4 +928,11 @@
revision = "3.46",
extension = "zip")
private static class MACOSX_X64 { }
+
+ @Artifact(
+ organization = "jpg.tests.jdk.nsslib",
+ name = "nsslib-linux_x64",
+ revision = "3.46",
+ extension = "zip")
+ private static class LINUX_X64 { }
}
--- a/test/jdk/sun/security/pkcs11/Secmod/AddTrustedCert.java Thu Sep 19 17:33:18 2019 -0700
+++ b/test/jdk/sun/security/pkcs11/Secmod/AddTrustedCert.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -67,6 +67,13 @@
String configName = BASE + SEP + "nss.cfg";
Provider p = getSunPKCS11(configName);
+ if (improperNSSVersion(p)) {
+ System.out.println(
+ "Skip test due to improper NSS version in [3.28, 3.35). "
+ + "See JDK-8180837 for more detatils.");
+ return;
+ }
+
System.out.println(p);
Security.addProvider(p);
@@ -125,4 +132,13 @@
System.out.println("OK");
}
+ private static boolean improperNSSVersion(Provider p) {
+ double nssVersion = getNSSVersion();
+ if (p.getName().equalsIgnoreCase("SunPKCS11-NSSKeyStore")
+ && nssVersion >= 3.28 && nssVersion < 3.35) {
+ return true;
+ }
+
+ return false;
+ }
}
--- a/test/jdk/sun/security/pkcs11/tls/TestKeyMaterial.java Thu Sep 19 17:33:18 2019 -0700
+++ b/test/jdk/sun/security/pkcs11/tls/TestKeyMaterial.java Sat Sep 21 12:10:52 2019 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -36,13 +36,16 @@
import java.io.BufferedReader;
import java.nio.file.Files;
import java.nio.file.Paths;
+import java.security.InvalidAlgorithmParameterException;
import java.security.Provider;
-import java.security.InvalidAlgorithmParameterException;
+import java.security.ProviderException;
import java.util.Arrays;
+
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
+
import sun.security.internal.spec.TlsKeyMaterialParameterSpec;
import sun.security.internal.spec.TlsKeyMaterialSpec;
@@ -51,6 +54,7 @@
private static final int PREFIX_LENGTH = "km-master: ".length();
public static void main(String[] args) throws Exception {
+ System.out.println("NSS Version: " + getNSSVersion());
main(new TestKeyMaterial(), args);
}
@@ -154,10 +158,26 @@
match(lineNumber, serverMacBytes, result.getServerMacKey(), "");
} catch (InvalidAlgorithmParameterException iape) {
// SSLv3 support is removed in S12
- if (major == 3 && minor == 0) {
- System.out.println("Skip testing SSLv3");
- continue;
+ if (provider.getName().indexOf("Solaris") != -1) {
+ if (major == 3 && minor == 0) {
+ System.out.println("Skip testing SSLv3 on Solaris");
+ continue;
+ }
}
+ throw iape;
+ } catch (ProviderException pe) {
+ if (provider.getName().indexOf("NSS") != -1) {
+ Throwable t = pe.getCause();
+ if (expandedKeyLength != 0
+ && t.getMessage().indexOf(
+ "CKR_MECHANISM_PARAM_INVALID") != -1) {
+ // NSS removed support for export-grade cipher suites in 3.28,
+ // see https://bugzilla.mozilla.org/show_bug.cgi?id=1252849
+ System.out.println("Ignore known NSS failure on CKR_MECHANISM_PARAM_INVALID");
+ continue;
+ }
+ }
+ throw pe;
}
} else {
throw new Exception("Unknown line: " + line);