--- a/.hgtags Tue Jan 16 15:52:01 2018 +0000
+++ b/.hgtags Wed Jan 17 12:19:06 2018 +0000
@@ -463,3 +463,5 @@
0ee20aad71c4f33c426372b4c8bcc1235ce2ec08 jdk-11+0
959f2f7cbaa6d2ee45d50029744efb219721576c jdk-10+36
4f830b447edf04fb4a52151a5ad44d9bb60723cd jdk-10+37
+e569e83139fdfbecfeb3cd9014d560917787f158 jdk-10+38
+5b834ec962366e00d4445352a999a3ac14e26f64 jdk-10+39
--- a/make/data/currency/CurrencyData.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/make/data/currency/CurrencyData.properties Wed Jan 17 12:19:06 2018 +0000
@@ -32,7 +32,7 @@
# Version of the currency code information in this class.
# It is a serial number that accompanies with each amendment.
-dataVersion=162
+dataVersion=164
# List of all valid ISO 4217 currency codes.
# To ensure compatibility, do not remove codes.
@@ -52,7 +52,7 @@
NIO558-NLG528-NOK578-NPR524-NZD554-OMR512-PAB590-PEN604-PGK598-PHP608-\
PKR586-PLN985-PTE620-PYG600-QAR634-ROL946-RON946-RSD941-RUB643-RUR810-RWF646-SAR682-\
SBD090-SCR690-SDD736-SDG938-SEK752-SGD702-SHP654-SIT705-SKK703-SLL694-SOS706-\
- SRD968-SRG740-SSP728-STD678-SVC222-SYP760-SZL748-THB764-TJS972-TMM795-TMT934-TND788-TOP776-\
+ SRD968-SRG740-SSP728-STD678-STN930-SVC222-SYP760-SZL748-THB764-TJS972-TMM795-TMT934-TND788-TOP776-\
TPE626-TRL792-TRY949-TTD780-TWD901-TZS834-UAH980-UGX800-USD840-USN997-USS998-UYI940-\
UYU858-UZS860-VEB862-VEF937-VND704-VUV548-WST882-XAF950-XAG961-XAU959-XBA955-\
XBB956-XBC957-XBD958-XCD951-XDR960-XFO000-XFU000-XOF952-XPD964-XPF953-\
@@ -196,7 +196,7 @@
CW=ANG
# CYPRUS
CY=EUR
-# CZECH REPUBLIC (THE)
+# CZECHIA
CZ=CZK
# DENMARK
DK=DKK
@@ -470,7 +470,7 @@
# SOUTH SUDAN
SS=SSP
# SAO TOME AND PRINCIPE
-ST=STD
+ST=STN
# SAUDI ARABIA
SA=SAR
# SENEGAL
--- a/make/gensrc/Gensrc-java.desktop.gmk Tue Jan 16 15:52:01 2018 +0000
+++ b/make/gensrc/Gensrc-java.desktop.gmk Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -46,7 +46,6 @@
$(TOPDIR)/src/java.desktop/share/classes/sun/awt/resources \
$(TOPDIR)/src/java.desktop/share/classes/com/sun/accessibility/internal/resources \
$(TOPDIR)/src/java.desktop/share/classes/com/sun/java/swing/plaf/motif/resources \
- $(TOPDIR)/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources \
$(TOPDIR)/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources \
$(TOPDIR)/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources \
$(TOPDIR)/src/java.desktop/share/classes/com/sun/swing/internal/plaf/synth/resources \
@@ -61,7 +60,10 @@
endif
ifeq ($(OPENJDK_TARGET_OS), windows)
- PROP_SRC_DIRS += $(TOPDIR)/src/java.desktop/windows/classes/sun/awt/windows
+ PROP_SRC_DIRS += \
+ $(TOPDIR)/src/java.desktop/windows/classes/com/sun/java/swing/plaf/windows/resources \
+ $(TOPDIR)/src/java.desktop/windows/classes/sun/awt/windows \
+ #
endif
ifeq ($(filter $(OPENJDK_TARGET_OS), windows macosx), )
--- a/make/mapfiles/libjava/mapfile-vers Tue Jan 16 15:52:01 2018 +0000
+++ b/make/mapfiles/libjava/mapfile-vers Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -74,6 +74,7 @@
JNU_ThrowStringIndexOutOfBoundsException;
JNU_ToString;
+ Java_java_io_FileDescriptor_cleanupClose0;
Java_java_io_FileDescriptor_close0;
Java_java_io_FileDescriptor_initIDs;
Java_java_io_FileDescriptor_sync;
@@ -257,7 +258,6 @@
Java_jdk_internal_reflect_NativeConstructorAccessorImpl_newInstance0;
Java_jdk_internal_reflect_NativeMethodAccessorImpl_invoke0;
Java_jdk_internal_reflect_Reflection_getCallerClass__;
- Java_jdk_internal_reflect_Reflection_getCallerClass__I;
Java_jdk_internal_reflect_Reflection_getClassAccessFlags;
Java_jdk_internal_misc_VM_latestUserDefinedLoader0;
Java_jdk_internal_misc_VM_getuid;
--- a/make/mapfiles/libjava/reorder-sparc Tue Jan 16 15:52:01 2018 +0000
+++ b/make/mapfiles/libjava/reorder-sparc Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,6 @@
text: .text%Java_java_io_FileOutputStream_initIDs;
text: .text%Java_java_lang_System_setIn0;
text: .text%Java_sun_reflect_Reflection_getCallerClass__;
-text: .text%Java_sun_reflect_Reflection_getCallerClass__I;
text: .text%Java_java_lang_Class_forName0;
text: .text%Java_java_lang_Object_getClass;
text: .text%Java_sun_reflect_Reflection_getClassAccessFlags;
--- a/make/mapfiles/libjava/reorder-sparcv9 Tue Jan 16 15:52:01 2018 +0000
+++ b/make/mapfiles/libjava/reorder-sparcv9 Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,6 @@
text: .text%Java_java_io_FileOutputStream_initIDs;
text: .text%Java_java_lang_System_setIn0;
text: .text%Java_sun_reflect_Reflection_getCallerClass__;
-text: .text%Java_sun_reflect_Reflection_getCallerClass__I;
text: .text%Java_java_lang_Class_forName0;
text: .text%Java_java_lang_String_intern;
text: .text%Java_java_lang_StringUTF16_isBigEndian;
--- a/make/mapfiles/libjava/reorder-x86 Tue Jan 16 15:52:01 2018 +0000
+++ b/make/mapfiles/libjava/reorder-x86 Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,6 @@
text: .text%Java_java_io_FileOutputStream_initIDs;
text: .text%Java_java_lang_System_setIn0;
text: .text%Java_sun_reflect_Reflection_getCallerClass__;
-text: .text%Java_sun_reflect_Reflection_getCallerClass__I;
text: .text%Java_java_lang_Class_forName0;
text: .text%Java_java_lang_String_intern;
text: .text%Java_java_lang_StringUTF16_isBigEndian;
--- a/src/hotspot/cpu/aarch64/aarch64.ad Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/aarch64/aarch64.ad Wed Jan 17 12:19:06 2018 +0000
@@ -5844,8 +5844,8 @@
operand immByteMapBase()
%{
// Get base of card map
- predicate((jbyte*)n->get_ptr() ==
- ((CardTableModRefBS*)(Universe::heap()->barrier_set()))->byte_map_base);
+ predicate(Universe::heap()->barrier_set()->is_a(BarrierSet::CardTableModRef) &&
+ (jbyte*)n->get_ptr() == ((CardTableModRefBS*)(Universe::heap()->barrier_set()))->byte_map_base);
match(ConP);
op_cost(0);
--- a/src/hotspot/cpu/aarch64/assembler_aarch64.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/aarch64/assembler_aarch64.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -848,7 +848,7 @@
// architecture. In debug mode we shrink it in order to test
// trampolines, but not so small that branches in the interpreter
// are out of range.
- static const unsigned long branch_range = INCLUDE_JVMCI ? 128 * M : NOT_DEBUG(128 * M) DEBUG_ONLY(2 * M);
+ static const unsigned long branch_range = NOT_DEBUG(128 * M) DEBUG_ONLY(2 * M);
static bool reachable_from_branch_at(address branch, address target) {
return uabs(target - branch) < branch_range;
--- a/src/hotspot/cpu/aarch64/compiledIC_aarch64.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/aarch64/compiledIC_aarch64.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -71,6 +71,13 @@
return 7 * NativeInstruction::instruction_size;
}
+int CompiledStaticCall::to_trampoline_stub_size() {
+ // Somewhat pessimistically, we count 3 instructions here (although
+ // there are only two) because we sometimes emit an alignment nop.
+ // Trampoline stubs are always word aligned.
+ return 3 * NativeInstruction::instruction_size + wordSize;
+}
+
// Relocation entries for call stub, compiled java to interpreter.
int CompiledStaticCall::reloc_to_interp_stub() {
return 4; // 3 in emit_to_interp_stub + 1 in emit_call
--- a/src/hotspot/cpu/aarch64/jvmciCodeInstaller_aarch64.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/aarch64/jvmciCodeInstaller_aarch64.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -109,7 +109,7 @@
TRACE_jvmci_3("relocating (foreign call) at " PTR_FORMAT, p2i(inst));
}
-void CodeInstaller::pd_relocate_JavaMethod(Handle hotspot_method, jint pc_offset, TRAPS) {
+void CodeInstaller::pd_relocate_JavaMethod(CodeBuffer &cbuf, Handle hotspot_method, jint pc_offset, TRAPS) {
#ifdef ASSERT
Method* method = NULL;
// we need to check, this might also be an unresolved method
@@ -124,22 +124,22 @@
case INVOKEINTERFACE: {
assert(method == NULL || !method->is_static(), "cannot call static method with invokeinterface");
NativeCall* call = nativeCall_at(_instructions->start() + pc_offset);
- call->set_destination(SharedRuntime::get_resolve_virtual_call_stub());
_instructions->relocate(call->instruction_address(), virtual_call_Relocation::spec(_invoke_mark_pc));
+ call->trampoline_jump(cbuf, SharedRuntime::get_resolve_virtual_call_stub());
break;
}
case INVOKESTATIC: {
assert(method == NULL || method->is_static(), "cannot call non-static method with invokestatic");
NativeCall* call = nativeCall_at(_instructions->start() + pc_offset);
- call->set_destination(SharedRuntime::get_resolve_static_call_stub());
_instructions->relocate(call->instruction_address(), relocInfo::static_call_type);
+ call->trampoline_jump(cbuf, SharedRuntime::get_resolve_static_call_stub());
break;
}
case INVOKESPECIAL: {
assert(method == NULL || !method->is_static(), "cannot call static method with invokespecial");
NativeCall* call = nativeCall_at(_instructions->start() + pc_offset);
- call->set_destination(SharedRuntime::get_resolve_opt_virtual_call_stub());
_instructions->relocate(call->instruction_address(), relocInfo::opt_virtual_call_type);
+ call->trampoline_jump(cbuf, SharedRuntime::get_resolve_opt_virtual_call_stub());
break;
}
default:
--- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -801,7 +801,7 @@
assert(is_NativeCallTrampolineStub_at(stub_start_addr), "doesn't look like a trampoline");
end_a_stub();
- return stub;
+ return stub_start_addr;
}
address MacroAssembler::ic_call(address entry, jint method_index) {
--- a/src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/aarch64/nativeInst_aarch64.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -367,3 +367,24 @@
set_ptr_at(data_offset, new_destination);
OrderAccess::release();
}
+
+// Generate a trampoline for a branch to dest. If there's no need for a
+// trampoline, simply patch the call directly to dest.
+address NativeCall::trampoline_jump(CodeBuffer &cbuf, address dest) {
+ MacroAssembler a(&cbuf);
+ address stub = NULL;
+
+ if (a.far_branches()
+ && ! is_NativeCallTrampolineStub_at(instruction_address() + displacement())) {
+ stub = a.emit_trampoline_stub(instruction_address() - cbuf.insts()->start(), dest);
+ }
+
+ if (stub == NULL) {
+ // If we generated no stub, patch this call directly to dest.
+ // This will happen if we don't need far branches or if there
+ // already was a trampoline.
+ set_destination(dest);
+ }
+
+ return stub;
+}
--- a/src/hotspot/cpu/aarch64/nativeInst_aarch64.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/aarch64/nativeInst_aarch64.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -61,7 +61,7 @@
return uint_at(0);
}
- bool is_blr() const { return (encoding() & 0xfffffc1f) == 0xd63f0000; }
+ bool is_blr() const { return (encoding() & 0xff9ffc1f) == 0xd61f0000; } // blr(register) or br(register)
bool is_adr_aligned() const { return (encoding() & 0xff000000) == 0x10000000; } // adr Xn, <label>, where label is aligned to 4 bytes (address of instruction).
inline bool is_nop();
@@ -143,8 +143,9 @@
}
inline NativeCall* nativeCall_at(address address);
-// The NativeCall is an abstraction for accessing/manipulating native call imm32/rel32off
-// instructions (used to manipulate inline caches, primitive & dll calls, etc.).
+// The NativeCall is an abstraction for accessing/manipulating native
+// call instructions (used to manipulate inline caches, primitive &
+// DSO calls, etc.).
class NativeCall: public NativeInstruction {
public:
@@ -155,7 +156,6 @@
return_address_offset = 4
};
- enum { cache_line_size = BytesPerWord }; // conservative estimate!
address instruction_address() const { return addr_at(instruction_offset); }
address next_instruction_address() const { return addr_at(return_address_offset); }
int displacement() const { return (int_at(displacement_offset) << 6) >> 4; }
@@ -206,6 +206,7 @@
void set_destination_mt_safe(address dest, bool assert_lock = true);
address get_trampoline();
+ address trampoline_jump(CodeBuffer &cbuf, address dest);
};
inline NativeCall* nativeCall_at(address address) {
--- a/src/hotspot/cpu/aarch64/relocInfo_aarch64.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/aarch64/relocInfo_aarch64.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, Red Hat Inc. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -35,4 +35,10 @@
format_width = 0
};
+ public:
+
+ // This platform has no oops in the code that are not also
+ // listed in the oop section.
+ static bool mustIterateImmediateOopsInCode() { return false; }
+
#endif // CPU_AARCH64_VM_RELOCINFO_AARCH64_HPP
--- a/src/hotspot/cpu/aarch64/templateTable_aarch64.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/aarch64/templateTable_aarch64.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -3404,7 +3404,6 @@
Label done;
Label initialize_header;
Label initialize_object; // including clearing the fields
- Label allocate_shared;
__ get_cpool_and_tags(r4, r0);
// Make sure the class we're about to instantiate has been resolved.
@@ -3433,18 +3432,24 @@
// test to see if it has a finalizer or is malformed in some way
__ tbnz(r3, exact_log2(Klass::_lh_instance_slow_path_bit), slow_case);
- // Allocate the instance
- // 1) Try to allocate in the TLAB
- // 2) if fail and the object is large allocate in the shared Eden
- // 3) if the above fails (or is not applicable), go to a slow case
- // (creates a new TLAB, etc.)
-
+ // Allocate the instance:
+ // If TLAB is enabled:
+ // Try to allocate in the TLAB.
+ // If fails, go to the slow path.
+ // Else If inline contiguous allocations are enabled:
+ // Try to allocate in eden.
+ // If fails due to heap end, go to slow path.
+ //
+ // If TLAB is enabled OR inline contiguous is enabled:
+ // Initialize the allocation.
+ // Exit.
+ //
+ // Go to slow path.
const bool allow_shared_alloc =
Universe::heap()->supports_inline_contig_alloc();
if (UseTLAB) {
- __ tlab_allocate(r0, r3, 0, noreg, r1,
- allow_shared_alloc ? allocate_shared : slow_case);
+ __ tlab_allocate(r0, r3, 0, noreg, r1, slow_case);
if (ZeroTLAB) {
// the fields have been already cleared
@@ -3453,19 +3458,19 @@
// initialize both the header and fields
__ b(initialize_object);
}
+ } else {
+ // Allocation in the shared Eden, if allowed.
+ //
+ // r3: instance size in bytes
+ if (allow_shared_alloc) {
+ __ eden_allocate(r0, r3, 0, r10, slow_case);
+ __ incr_allocated_bytes(rthread, r3, 0, rscratch1);
+ }
}
- // Allocation in the shared Eden, if allowed.
- //
- // r3: instance size in bytes
- if (allow_shared_alloc) {
- __ bind(allocate_shared);
-
- __ eden_allocate(r0, r3, 0, r10, slow_case);
- __ incr_allocated_bytes(rthread, r3, 0, rscratch1);
- }
-
- if (UseTLAB || Universe::heap()->supports_inline_contig_alloc()) {
+ // If UseTLAB or allow_shared_alloc are true, the object is created above and
+ // there is an initialize need. Otherwise, skip and go to the slow path.
+ if (UseTLAB || allow_shared_alloc) {
// The object is initialized before the header. If the object size is
// zero, go directly to the header initialization.
__ bind(initialize_object);
--- a/src/hotspot/cpu/arm/relocInfo_arm.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/arm/relocInfo_arm.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -32,4 +32,10 @@
format_width = 0
};
+ public:
+
+ // This platform has no oops in the code that are not also
+ // listed in the oop section.
+ static bool mustIterateImmediateOopsInCode() { return false; }
+
#endif // CPU_ARM_VM_RELOCINFO_ARM_HPP
--- a/src/hotspot/cpu/ppc/globalDefinitions_ppc.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/ppc/globalDefinitions_ppc.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -55,5 +55,9 @@
#define SUPPORT_RESERVED_STACK_AREA
#define THREAD_LOCAL_POLL
+// If UseSIGTRAP is active, we only use the poll bit and no polling page.
+// Otherwise, we fall back to usage of the polling page in nmethods.
+// Define the condition to use this -XX flag.
+#define USE_POLL_BIT_ONLY UseSIGTRAP
#endif // CPU_PPC_VM_GLOBALDEFINITIONS_PPC_HPP
--- a/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -5601,12 +5601,17 @@
#endif // !PRODUCT
-SkipIfEqualZero::SkipIfEqualZero(MacroAssembler* masm, Register temp, const bool* flag_addr) : _masm(masm), _label() {
+void SkipIfEqualZero::skip_to_label_if_equal_zero(MacroAssembler* masm, Register temp,
+ const bool* flag_addr, Label& label) {
int simm16_offset = masm->load_const_optimized(temp, (address)flag_addr, R0, true);
assert(sizeof(bool) == 1, "PowerPC ABI");
masm->lbz(temp, simm16_offset, temp);
masm->cmpwi(CCR0, temp, 0);
- masm->beq(CCR0, _label);
+ masm->beq(CCR0, label);
+}
+
+SkipIfEqualZero::SkipIfEqualZero(MacroAssembler* masm, Register temp, const bool* flag_addr) : _masm(masm), _label() {
+ skip_to_label_if_equal_zero(masm, temp, flag_addr, _label);
}
SkipIfEqualZero::~SkipIfEqualZero() {
--- a/src/hotspot/cpu/ppc/macroAssembler_ppc.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/ppc/macroAssembler_ppc.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -979,6 +979,8 @@
public:
// 'Temp' is a temp register that this object can use (and trash).
explicit SkipIfEqualZero(MacroAssembler*, Register temp, const bool* flag_addr);
+ static void skip_to_label_if_equal_zero(MacroAssembler*, Register temp,
+ const bool* flag_addr, Label& label);
~SkipIfEqualZero();
};
--- a/src/hotspot/cpu/ppc/macroAssembler_ppc.inline.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/ppc/macroAssembler_ppc.inline.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -30,6 +30,7 @@
#include "asm/macroAssembler.hpp"
#include "asm/codeBuffer.hpp"
#include "code/codeCache.hpp"
+#include "runtime/safepointMechanism.hpp"
inline bool MacroAssembler::is_ld_largeoffset(address a) {
const int inst1 = *(int *)a;
@@ -261,7 +262,12 @@
// Read from the polling page, its address is already in a register.
inline void MacroAssembler::load_from_polling_page(Register polling_page_address, int offset) {
- ld(R0, offset, polling_page_address);
+ if (SafepointMechanism::uses_thread_local_poll() && USE_POLL_BIT_ONLY) {
+ int encoding = SafepointMechanism::poll_bit();
+ tdi(traptoGreaterThanUnsigned | traptoEqual, polling_page_address, encoding);
+ } else {
+ ld(R0, offset, polling_page_address);
+ }
}
// Trap-instruction-based checks.
--- a/src/hotspot/cpu/ppc/nativeInst_ppc.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/ppc/nativeInst_ppc.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -31,6 +31,7 @@
#include "memory/allocation.hpp"
#include "runtime/icache.hpp"
#include "runtime/os.hpp"
+#include "runtime/safepointMechanism.hpp"
// We have interfaces for the following instructions:
//
@@ -93,6 +94,11 @@
bool is_safepoint_poll() {
// Is the current instruction a POTENTIAL read access to the polling page?
// The current arguments of the instruction are not checked!
+ if (SafepointMechanism::uses_thread_local_poll() && USE_POLL_BIT_ONLY) {
+ int encoding = SafepointMechanism::poll_bit();
+ return MacroAssembler::is_tdi(long_at(0), Assembler::traptoGreaterThanUnsigned | Assembler::traptoEqual,
+ -1, encoding);
+ }
return MacroAssembler::is_load_from_polling_page(long_at(0), NULL);
}
--- a/src/hotspot/cpu/ppc/relocInfo_ppc.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/ppc/relocInfo_ppc.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2013 SAP SE. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018 SAP SE. 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,4 +43,10 @@
#endif
};
+ public:
+
+ // This platform has no oops in the code that are not also
+ // listed in the oop section.
+ static bool mustIterateImmediateOopsInCode() { return false; }
+
#endif // CPU_PPC_VM_RELOCINFO_PPC_HPP
--- a/src/hotspot/cpu/ppc/templateTable_ppc_64.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/ppc/templateTable_ppc_64.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -3634,10 +3634,7 @@
transition(vtos, atos);
Label Lslow_case,
- Ldone,
- Linitialize_header,
- Lallocate_shared,
- Linitialize_object; // Including clearing the fields.
+ Ldone;
const Register RallocatedObject = R17_tos,
RinstanceKlass = R9_ARG7,
@@ -3648,8 +3645,6 @@
Rtags = R3_ARG1,
Rindex = R5_ARG3;
- const bool allow_shared_alloc = Universe::heap()->supports_inline_contig_alloc();
-
// --------------------------------------------------------------------------
// Check if fast case is possible.
@@ -3658,6 +3653,8 @@
// Load index of constant pool entry.
__ get_2_byte_integer_at_bcp(1, Rindex, InterpreterMacroAssembler::Unsigned);
+ // Note: compared to other architectures, PPC's implementation always goes
+ // to the slow path if TLAB is used and fails.
if (UseTLAB) {
// Make sure the class we're about to instantiate has been resolved
// This is done before loading instanceKlass to be consistent with the order
@@ -3687,8 +3684,7 @@
// Fast case:
// Allocate the instance.
// 1) Try to allocate in the TLAB.
- // 2) If fail, and the TLAB is not full enough to discard, allocate in the shared Eden.
- // 3) If the above fails (or is not applicable), go to a slow case (creates a new TLAB, etc.).
+ // 2) If the above fails (or is not applicable), go to a slow case (creates a new TLAB, etc.).
Register RoldTopValue = RallocatedObject; // Object will be allocated here if it fits.
Register RnewTopValue = R6_ARG4;
@@ -3702,53 +3698,13 @@
// If there is enough space, we do not CAS and do not clear.
__ cmpld(CCR0, RnewTopValue, RendValue);
- __ bgt(CCR0, allow_shared_alloc ? Lallocate_shared : Lslow_case);
+ __ bgt(CCR0, Lslow_case);
__ std(RnewTopValue, in_bytes(JavaThread::tlab_top_offset()), R16_thread);
- if (ZeroTLAB) {
- // The fields have already been cleared.
- __ b(Linitialize_header);
- } else {
- // Initialize both the header and fields.
- __ b(Linitialize_object);
- }
-
- // Fall through: TLAB was too small.
- if (allow_shared_alloc) {
- Register RtlabWasteLimitValue = R10_ARG8;
- Register RfreeValue = RnewTopValue;
-
- __ bind(Lallocate_shared);
- // Check if tlab should be discarded (refill_waste_limit >= free).
- __ ld(RtlabWasteLimitValue, in_bytes(JavaThread::tlab_refill_waste_limit_offset()), R16_thread);
- __ subf(RfreeValue, RoldTopValue, RendValue);
- __ srdi(RfreeValue, RfreeValue, LogHeapWordSize); // in dwords
- __ cmpld(CCR0, RtlabWasteLimitValue, RfreeValue);
- __ bge(CCR0, Lslow_case);
-
- // Increment waste limit to prevent getting stuck on this slow path.
- __ add_const_optimized(RtlabWasteLimitValue, RtlabWasteLimitValue, ThreadLocalAllocBuffer::refill_waste_limit_increment());
- __ std(RtlabWasteLimitValue, in_bytes(JavaThread::tlab_refill_waste_limit_offset()), R16_thread);
- }
- // else: No allocation in the shared eden. // fallthru: __ b(Lslow_case);
- }
- // else: Always go the slow path.
-
- // --------------------------------------------------------------------------
- // slow case
- __ bind(Lslow_case);
- call_VM(R17_tos, CAST_FROM_FN_PTR(address, InterpreterRuntime::_new), Rcpool, Rindex);
-
- if (UseTLAB) {
- __ b(Ldone);
- // --------------------------------------------------------------------------
- // Init1: Zero out newly allocated memory.
-
- if (!ZeroTLAB || allow_shared_alloc) {
- // Clear object fields.
- __ bind(Linitialize_object);
-
+ if (!ZeroTLAB) {
+ // --------------------------------------------------------------------------
+ // Init1: Zero out newly allocated memory.
// Initialize remaining object fields.
Register Rbase = Rtags;
__ addi(Rinstance_size, Rinstance_size, 7 - (int)sizeof(oopDesc));
@@ -3757,13 +3713,10 @@
// Clear out object skipping header. Takes also care of the zero length case.
__ clear_memory_doubleword(Rbase, Rinstance_size);
- // fallthru: __ b(Linitialize_header);
}
// --------------------------------------------------------------------------
// Init2: Initialize the header: mark, klass
- __ bind(Linitialize_header);
-
// Init mark.
if (UseBiasedLocking) {
__ ld(Rscratch, in_bytes(Klass::prototype_header_offset()), RinstanceKlass);
@@ -3777,14 +3730,19 @@
__ store_klass(RallocatedObject, RinstanceKlass, Rscratch); // klass (last for cms)
// Check and trigger dtrace event.
- {
- SkipIfEqualZero skip_if(_masm, Rscratch, &DTraceAllocProbes);
- __ push(atos);
- __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc));
- __ pop(atos);
- }
+ SkipIfEqualZero::skip_to_label_if_equal_zero(_masm, Rscratch, &DTraceAllocProbes, Ldone);
+ __ push(atos);
+ __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc));
+ __ pop(atos);
+
+ __ b(Ldone);
}
+ // --------------------------------------------------------------------------
+ // slow case
+ __ bind(Lslow_case);
+ call_VM(R17_tos, CAST_FROM_FN_PTR(address, InterpreterRuntime::_new), Rcpool, Rindex);
+
// continue
__ bind(Ldone);
--- a/src/hotspot/cpu/s390/relocInfo_s390.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/s390/relocInfo_s390.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,6 +1,6 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2016 SAP SE. All rights reserved.
+ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018 SAP SE. 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
@@ -110,6 +110,10 @@
pcrel_data_format = 3 // Relocation is for the target data of a pc-relative instruction.
};
+ // This platform has no oops in the code that are not also
+ // listed in the oop section.
+ static bool mustIterateImmediateOopsInCode() { return false; }
+
// Store the new target address into an oop_Relocation cell, if any.
// Return indication if update happened.
static bool update_oop_pool(address begin, address end, address newTarget, CodeBlob* cb);
--- a/src/hotspot/cpu/sparc/compiledIC_sparc.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/sparc/compiledIC_sparc.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -73,6 +73,11 @@
}
#undef __
+int CompiledStaticCall::to_trampoline_stub_size() {
+ // SPARC doesn't use trampolines.
+ return 0;
+}
+
int CompiledStaticCall::to_interp_stub_size() {
// This doesn't need to be accurate but it must be larger or equal to
// the real size of the stub.
--- a/src/hotspot/cpu/sparc/jvmciCodeInstaller_sparc.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/sparc/jvmciCodeInstaller_sparc.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -115,7 +115,7 @@
TRACE_jvmci_3("relocating (foreign call) at " PTR_FORMAT, p2i(inst));
}
-void CodeInstaller::pd_relocate_JavaMethod(Handle hotspot_method, jint pc_offset, TRAPS) {
+void CodeInstaller::pd_relocate_JavaMethod(CodeBuffer &, Handle hotspot_method, jint pc_offset, TRAPS) {
#ifdef ASSERT
Method* method = NULL;
// we need to check, this might also be an unresolved method
--- a/src/hotspot/cpu/sparc/relocInfo_sparc.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/sparc/relocInfo_sparc.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -38,6 +38,11 @@
format_width = 1
};
+ public:
+
+ // This platform has no oops in the code that are not also
+ // listed in the oop section.
+ static bool mustIterateImmediateOopsInCode() { return false; }
//Reconciliation History
// 1.3 97/10/15 15:38:36 relocInfo_i486.hpp
--- a/src/hotspot/cpu/sparc/templateTable_sparc.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/sparc/templateTable_sparc.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -3270,11 +3270,19 @@
__ br(Assembler::notZero, false, Assembler::pn, slow_case);
__ delayed()->nop();
- // allocate the instance
- // 1) Try to allocate in the TLAB
- // 2) if fail, and the TLAB is not full enough to discard, allocate in the shared Eden
- // 3) if the above fails (or is not applicable), go to a slow case
- // (creates a new TLAB, etc.)
+ // Allocate the instance:
+ // If TLAB is enabled:
+ // Try to allocate in the TLAB.
+ // If fails, go to the slow path.
+ // Else If inline contiguous allocations are enabled:
+ // Try to allocate in eden.
+ // If fails due to heap end, go to slow path.
+ //
+ // If TLAB is enabled OR inline contiguous is enabled:
+ // Initialize the allocation.
+ // Exit.
+ //
+ // Go to slow path.
const bool allow_shared_alloc =
Universe::heap()->supports_inline_contig_alloc();
@@ -3302,61 +3310,43 @@
}
__ delayed()->st_ptr(RnewTopValue, G2_thread, in_bytes(JavaThread::tlab_top_offset()));
+ // Allocation does not fit in the TLAB.
+ __ ba_short(slow_case);
+ } else {
+ // Allocation in the shared Eden
if (allow_shared_alloc) {
- // Check if tlab should be discarded (refill_waste_limit >= free)
- __ ld_ptr(G2_thread, in_bytes(JavaThread::tlab_refill_waste_limit_offset()), RtlabWasteLimitValue);
- __ sub(RendValue, RoldTopValue, RfreeValue);
- __ srlx(RfreeValue, LogHeapWordSize, RfreeValue);
- __ cmp_and_brx_short(RtlabWasteLimitValue, RfreeValue, Assembler::greaterEqualUnsigned, Assembler::pt, slow_case); // tlab waste is small
-
- // increment waste limit to prevent getting stuck on this slow path
- if (Assembler::is_simm13(ThreadLocalAllocBuffer::refill_waste_limit_increment())) {
- __ add(RtlabWasteLimitValue, ThreadLocalAllocBuffer::refill_waste_limit_increment(), RtlabWasteLimitValue);
- } else {
- // set64 does not use the temp register if the given constant is 32 bit. So
- // we can just use any register; using G0 results in ignoring of the upper 32 bit
- // of that value.
- __ set64(ThreadLocalAllocBuffer::refill_waste_limit_increment(), G4_scratch, G0);
- __ add(RtlabWasteLimitValue, G4_scratch, RtlabWasteLimitValue);
- }
- __ st_ptr(RtlabWasteLimitValue, G2_thread, in_bytes(JavaThread::tlab_refill_waste_limit_offset()));
- } else {
- // No allocation in the shared eden.
- __ ba_short(slow_case);
+ Register RoldTopValue = G1_scratch;
+ Register RtopAddr = G3_scratch;
+ Register RnewTopValue = RallocatedObject;
+ Register RendValue = Rscratch;
+
+ __ set((intptr_t)Universe::heap()->top_addr(), RtopAddr);
+
+ Label retry;
+ __ bind(retry);
+ __ set((intptr_t)Universe::heap()->end_addr(), RendValue);
+ __ ld_ptr(RendValue, 0, RendValue);
+ __ ld_ptr(RtopAddr, 0, RoldTopValue);
+ __ add(RoldTopValue, Roffset, RnewTopValue);
+
+ // RnewTopValue contains the top address after the new object
+ // has been allocated.
+ __ cmp_and_brx_short(RnewTopValue, RendValue, Assembler::greaterUnsigned, Assembler::pn, slow_case);
+
+ __ cas_ptr(RtopAddr, RoldTopValue, RnewTopValue);
+
+ // if someone beat us on the allocation, try again, otherwise continue
+ __ cmp_and_brx_short(RoldTopValue, RnewTopValue, Assembler::notEqual, Assembler::pn, retry);
+
+ // bump total bytes allocated by this thread
+ // RoldTopValue and RtopAddr are dead, so can use G1 and G3
+ __ incr_allocated_bytes(Roffset, G1_scratch, G3_scratch);
}
}
- // Allocation in the shared Eden
- if (allow_shared_alloc) {
- Register RoldTopValue = G1_scratch;
- Register RtopAddr = G3_scratch;
- Register RnewTopValue = RallocatedObject;
- Register RendValue = Rscratch;
-
- __ set((intptr_t)Universe::heap()->top_addr(), RtopAddr);
-
- Label retry;
- __ bind(retry);
- __ set((intptr_t)Universe::heap()->end_addr(), RendValue);
- __ ld_ptr(RendValue, 0, RendValue);
- __ ld_ptr(RtopAddr, 0, RoldTopValue);
- __ add(RoldTopValue, Roffset, RnewTopValue);
-
- // RnewTopValue contains the top address after the new object
- // has been allocated.
- __ cmp_and_brx_short(RnewTopValue, RendValue, Assembler::greaterUnsigned, Assembler::pn, slow_case);
-
- __ cas_ptr(RtopAddr, RoldTopValue, RnewTopValue);
-
- // if someone beat us on the allocation, try again, otherwise continue
- __ cmp_and_brx_short(RoldTopValue, RnewTopValue, Assembler::notEqual, Assembler::pn, retry);
-
- // bump total bytes allocated by this thread
- // RoldTopValue and RtopAddr are dead, so can use G1 and G3
- __ incr_allocated_bytes(Roffset, G1_scratch, G3_scratch);
- }
-
- if (UseTLAB || Universe::heap()->supports_inline_contig_alloc()) {
+ // If UseTLAB or allow_shared_alloc are true, the object is created above and
+ // there is an initialize need. Otherwise, skip and go to the slow path.
+ if (UseTLAB || allow_shared_alloc) {
// clear object fields
__ bind(initialize_object);
__ deccc(Roffset, sizeof(oopDesc));
--- a/src/hotspot/cpu/x86/assembler_x86.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/x86/assembler_x86.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -3167,6 +3167,89 @@
return;
}
+ if (UseAddressNop && VM_Version::is_zx()) {
+ //
+ // Using multi-bytes nops "0x0F 0x1F [address]" for ZX
+ // 1: 0x90
+ // 2: 0x66 0x90
+ // 3: 0x66 0x66 0x90 (don't use "0x0F 0x1F 0x00" - need patching safe padding)
+ // 4: 0x0F 0x1F 0x40 0x00
+ // 5: 0x0F 0x1F 0x44 0x00 0x00
+ // 6: 0x66 0x0F 0x1F 0x44 0x00 0x00
+ // 7: 0x0F 0x1F 0x80 0x00 0x00 0x00 0x00
+ // 8: 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00
+ // 9: 0x66 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00
+ // 10: 0x66 0x66 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00
+ // 11: 0x66 0x66 0x66 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00
+
+ // The rest coding is ZX specific - don't use consecutive address nops
+
+ // 12: 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00 0x66 0x66 0x66 0x90
+ // 13: 0x66 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00 0x66 0x66 0x66 0x90
+ // 14: 0x66 0x66 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00 0x66 0x66 0x66 0x90
+ // 15: 0x66 0x66 0x66 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00 0x66 0x66 0x66 0x90
+
+ while (i >= 15) {
+ // For ZX don't generate consecutive addess nops (mix with regular nops)
+ i -= 15;
+ emit_int8(0x66); // size prefix
+ emit_int8(0x66); // size prefix
+ emit_int8(0x66); // size prefix
+ addr_nop_8();
+ emit_int8(0x66); // size prefix
+ emit_int8(0x66); // size prefix
+ emit_int8(0x66); // size prefix
+ emit_int8((unsigned char)0x90);
+ // nop
+ }
+ switch (i) {
+ case 14:
+ emit_int8(0x66); // size prefix
+ case 13:
+ emit_int8(0x66); // size prefix
+ case 12:
+ addr_nop_8();
+ emit_int8(0x66); // size prefix
+ emit_int8(0x66); // size prefix
+ emit_int8(0x66); // size prefix
+ emit_int8((unsigned char)0x90);
+ // nop
+ break;
+ case 11:
+ emit_int8(0x66); // size prefix
+ case 10:
+ emit_int8(0x66); // size prefix
+ case 9:
+ emit_int8(0x66); // size prefix
+ case 8:
+ addr_nop_8();
+ break;
+ case 7:
+ addr_nop_7();
+ break;
+ case 6:
+ emit_int8(0x66); // size prefix
+ case 5:
+ addr_nop_5();
+ break;
+ case 4:
+ addr_nop_4();
+ break;
+ case 3:
+ // Don't use "0x0F 0x1F 0x00" - need patching safe padding
+ emit_int8(0x66); // size prefix
+ case 2:
+ emit_int8(0x66); // size prefix
+ case 1:
+ emit_int8((unsigned char)0x90);
+ // nop
+ break;
+ default:
+ assert(i == 0, " ");
+ }
+ return;
+ }
+
// Using nops with size prefixes "0x66 0x90".
// From AMD Optimization Guide:
// 1: 0x90
--- a/src/hotspot/cpu/x86/compiledIC_x86.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/x86/compiledIC_x86.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -73,6 +73,11 @@
LP64_ONLY(15); // movq (1+1+8); jmp (1+4)
}
+int CompiledStaticCall::to_trampoline_stub_size() {
+ // x86 doesn't use trampolines.
+ return 0;
+}
+
// Relocation entries for call stub, compiled java to interpreter.
int CompiledStaticCall::reloc_to_interp_stub() {
return 4; // 3 in emit_to_interp_stub + 1 in emit_call
--- a/src/hotspot/cpu/x86/jvmciCodeInstaller_x86.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/x86/jvmciCodeInstaller_x86.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -144,7 +144,7 @@
TRACE_jvmci_3("relocating (foreign call) at " PTR_FORMAT, p2i(inst));
}
-void CodeInstaller::pd_relocate_JavaMethod(Handle hotspot_method, jint pc_offset, TRAPS) {
+void CodeInstaller::pd_relocate_JavaMethod(CodeBuffer &, Handle hotspot_method, jint pc_offset, TRAPS) {
#ifdef ASSERT
Method* method = NULL;
// we need to check, this might also be an unresolved method
--- a/src/hotspot/cpu/x86/relocInfo_x86.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/x86/relocInfo_x86.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -40,4 +40,10 @@
#endif
};
+ public:
+
+ // Instruct loadConP of x86_64.ad places oops in code that are not also
+ // listed in the oop section.
+ static bool mustIterateImmediateOopsInCode() { return true; }
+
#endif // CPU_X86_VM_RELOCINFO_X86_HPP
--- a/src/hotspot/cpu/x86/stubGenerator_x86_32.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/x86/stubGenerator_x86_32.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -433,7 +433,7 @@
//----------------------------------------------------------------------------------------------------
- // Support for jint Atomic::xchg(jint exchange_value, volatile jint* dest)
+ // Support for int32_t Atomic::xchg(int32_t exchange_value, volatile int32_t* dest)
//
// xchg exists as far back as 8086, lock needed for MP only
// Stack layout immediately after call:
--- a/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -611,8 +611,8 @@
return start;
}
- // Support for jbyte atomic::atomic_cmpxchg(jbyte exchange_value, volatile jbyte* dest,
- // jbyte compare_value)
+ // Support for int8_t atomic::atomic_cmpxchg(int8_t exchange_value, volatile int8_t* dest,
+ // int8_t compare_value)
//
// Arguments :
// c_rarg0: exchange_value
@@ -637,9 +637,9 @@
return start;
}
- // Support for jlong atomic::atomic_cmpxchg(jlong exchange_value,
- // volatile jlong* dest,
- // jlong compare_value)
+ // Support for int64_t atomic::atomic_cmpxchg(int64_t exchange_value,
+ // volatile int64_t* dest,
+ // int64_t compare_value)
// Arguments :
// c_rarg0: exchange_value
// c_rarg1: dest
@@ -694,8 +694,8 @@
// Result:
// *dest += add_value
// return *dest;
- address generate_atomic_add_ptr() {
- StubCodeMark mark(this, "StubRoutines", "atomic_add_ptr");
+ address generate_atomic_add_long() {
+ StubCodeMark mark(this, "StubRoutines", "atomic_add_long");
address start = __ pc();
__ movptr(rax, c_rarg0); // Copy to eax we need a return value anyhow
@@ -5015,14 +5015,14 @@
StubRoutines::_catch_exception_entry = generate_catch_exception();
// atomic calls
- StubRoutines::_atomic_xchg_entry = generate_atomic_xchg();
- StubRoutines::_atomic_xchg_long_entry = generate_atomic_xchg_long();
- StubRoutines::_atomic_cmpxchg_entry = generate_atomic_cmpxchg();
- StubRoutines::_atomic_cmpxchg_byte_entry = generate_atomic_cmpxchg_byte();
- StubRoutines::_atomic_cmpxchg_long_entry = generate_atomic_cmpxchg_long();
- StubRoutines::_atomic_add_entry = generate_atomic_add();
- StubRoutines::_atomic_add_ptr_entry = generate_atomic_add_ptr();
- StubRoutines::_fence_entry = generate_orderaccess_fence();
+ StubRoutines::_atomic_xchg_entry = generate_atomic_xchg();
+ StubRoutines::_atomic_xchg_long_entry = generate_atomic_xchg_long();
+ StubRoutines::_atomic_cmpxchg_entry = generate_atomic_cmpxchg();
+ StubRoutines::_atomic_cmpxchg_byte_entry = generate_atomic_cmpxchg_byte();
+ StubRoutines::_atomic_cmpxchg_long_entry = generate_atomic_cmpxchg_long();
+ StubRoutines::_atomic_add_entry = generate_atomic_add();
+ StubRoutines::_atomic_add_long_entry = generate_atomic_add_long();
+ StubRoutines::_fence_entry = generate_orderaccess_fence();
// platform dependent
StubRoutines::x86::_get_previous_fp_entry = generate_get_previous_fp();
--- a/src/hotspot/cpu/x86/templateTable_x86.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/x86/templateTable_x86.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -3851,7 +3851,6 @@
Label done;
Label initialize_header;
Label initialize_object; // including clearing the fields
- Label allocate_shared;
__ get_cpool_and_tags(rcx, rax);
@@ -3877,12 +3876,19 @@
__ testl(rdx, Klass::_lh_instance_slow_path_bit);
__ jcc(Assembler::notZero, slow_case);
+ // Allocate the instance:
+ // If TLAB is enabled:
+ // Try to allocate in the TLAB.
+ // If fails, go to the slow path.
+ // Else If inline contiguous allocations are enabled:
+ // Try to allocate in eden.
+ // If fails due to heap end, go to slow path.
//
- // Allocate the instance
- // 1) Try to allocate in the TLAB
- // 2) if fail and the object is large allocate in the shared Eden
- // 3) if the above fails (or is not applicable), go to a slow case
- // (creates a new TLAB, etc.)
+ // If TLAB is enabled OR inline contiguous is enabled:
+ // Initialize the allocation.
+ // Exit.
+ //
+ // Go to slow path.
const bool allow_shared_alloc =
Universe::heap()->supports_inline_contig_alloc();
@@ -3898,7 +3904,7 @@
__ movptr(rax, Address(thread, in_bytes(JavaThread::tlab_top_offset())));
__ lea(rbx, Address(rax, rdx, Address::times_1));
__ cmpptr(rbx, Address(thread, in_bytes(JavaThread::tlab_end_offset())));
- __ jcc(Assembler::above, allow_shared_alloc ? allocate_shared : slow_case);
+ __ jcc(Assembler::above, slow_case);
__ movptr(Address(thread, in_bytes(JavaThread::tlab_top_offset())), rbx);
if (ZeroTLAB) {
// the fields have been already cleared
@@ -3907,40 +3913,40 @@
// initialize both the header and fields
__ jmp(initialize_object);
}
+ } else {
+ // Allocation in the shared Eden, if allowed.
+ //
+ // rdx: instance size in bytes
+ if (allow_shared_alloc) {
+ ExternalAddress heap_top((address)Universe::heap()->top_addr());
+ ExternalAddress heap_end((address)Universe::heap()->end_addr());
+
+ Label retry;
+ __ bind(retry);
+ __ movptr(rax, heap_top);
+ __ lea(rbx, Address(rax, rdx, Address::times_1));
+ __ cmpptr(rbx, heap_end);
+ __ jcc(Assembler::above, slow_case);
+
+ // Compare rax, with the top addr, and if still equal, store the new
+ // top addr in rbx, at the address of the top addr pointer. Sets ZF if was
+ // equal, and clears it otherwise. Use lock prefix for atomicity on MPs.
+ //
+ // rax,: object begin
+ // rbx,: object end
+ // rdx: instance size in bytes
+ __ locked_cmpxchgptr(rbx, heap_top);
+
+ // if someone beat us on the allocation, try again, otherwise continue
+ __ jcc(Assembler::notEqual, retry);
+
+ __ incr_allocated_bytes(thread, rdx, 0);
+ }
}
- // Allocation in the shared Eden, if allowed.
- //
- // rdx: instance size in bytes
- if (allow_shared_alloc) {
- __ bind(allocate_shared);
-
- ExternalAddress heap_top((address)Universe::heap()->top_addr());
- ExternalAddress heap_end((address)Universe::heap()->end_addr());
-
- Label retry;
- __ bind(retry);
- __ movptr(rax, heap_top);
- __ lea(rbx, Address(rax, rdx, Address::times_1));
- __ cmpptr(rbx, heap_end);
- __ jcc(Assembler::above, slow_case);
-
- // Compare rax, with the top addr, and if still equal, store the new
- // top addr in rbx, at the address of the top addr pointer. Sets ZF if was
- // equal, and clears it otherwise. Use lock prefix for atomicity on MPs.
- //
- // rax,: object begin
- // rbx,: object end
- // rdx: instance size in bytes
- __ locked_cmpxchgptr(rbx, heap_top);
-
- // if someone beat us on the allocation, try again, otherwise continue
- __ jcc(Assembler::notEqual, retry);
-
- __ incr_allocated_bytes(thread, rdx, 0);
- }
-
- if (UseTLAB || Universe::heap()->supports_inline_contig_alloc()) {
+ // If UseTLAB or allow_shared_alloc are true, the object is created above and
+ // there is an initialize need. Otherwise, skip and go to the slow path.
+ if (UseTLAB || allow_shared_alloc) {
// The object is initialized before the header. If the object size is
// zero, go directly to the header initialization.
__ bind(initialize_object);
--- a/src/hotspot/cpu/x86/vm_version_x86.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/x86/vm_version_x86.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -628,6 +628,11 @@
if (UseSSE < 1)
_features &= ~CPU_SSE;
+ //since AVX instructions is slower than SSE in some ZX cpus, force USEAVX=0.
+ if (is_zx() && ((cpu_family() == 6) || (cpu_family() == 7))) {
+ UseAVX = 0;
+ }
+
// first try initial setting and detect what we can support
int use_avx_limit = 0;
if (UseAVX > 0) {
@@ -882,7 +887,7 @@
FLAG_SET_DEFAULT(UseSHA256Intrinsics, false);
}
- if (UseSHA) {
+ if (UseSHA && supports_avx2() && supports_bmi2()) {
if (FLAG_IS_DEFAULT(UseSHA512Intrinsics)) {
FLAG_SET_DEFAULT(UseSHA512Intrinsics, true);
}
@@ -1078,6 +1083,66 @@
// UseXmmRegToRegMoveAll == true --> movaps(xmm, xmm), movapd(xmm, xmm).
// UseXmmRegToRegMoveAll == false --> movss(xmm, xmm), movsd(xmm, xmm).
+
+ if (is_zx()) { // ZX cpus specific settings
+ if (FLAG_IS_DEFAULT(UseStoreImmI16)) {
+ UseStoreImmI16 = false; // don't use it on ZX cpus
+ }
+ if ((cpu_family() == 6) || (cpu_family() == 7)) {
+ if (FLAG_IS_DEFAULT(UseAddressNop)) {
+ // Use it on all ZX cpus
+ UseAddressNop = true;
+ }
+ }
+ if (FLAG_IS_DEFAULT(UseXmmLoadAndClearUpper)) {
+ UseXmmLoadAndClearUpper = true; // use movsd on all ZX cpus
+ }
+ if (FLAG_IS_DEFAULT(UseXmmRegToRegMoveAll)) {
+ if (supports_sse3()) {
+ UseXmmRegToRegMoveAll = true; // use movaps, movapd on new ZX cpus
+ } else {
+ UseXmmRegToRegMoveAll = false;
+ }
+ }
+ if (((cpu_family() == 6) || (cpu_family() == 7)) && supports_sse3()) { // new ZX cpus
+#ifdef COMPILER2
+ if (FLAG_IS_DEFAULT(MaxLoopPad)) {
+ // For new ZX cpus do the next optimization:
+ // don't align the beginning of a loop if there are enough instructions
+ // left (NumberOfLoopInstrToAlign defined in c2_globals.hpp)
+ // in current fetch line (OptoLoopAlignment) or the padding
+ // is big (> MaxLoopPad).
+ // Set MaxLoopPad to 11 for new ZX cpus to reduce number of
+ // generated NOP instructions. 11 is the largest size of one
+ // address NOP instruction '0F 1F' (see Assembler::nop(i)).
+ MaxLoopPad = 11;
+ }
+#endif // COMPILER2
+ if (FLAG_IS_DEFAULT(UseXMMForArrayCopy)) {
+ UseXMMForArrayCopy = true; // use SSE2 movq on new ZX cpus
+ }
+ if (supports_sse4_2()) { // new ZX cpus
+ if (FLAG_IS_DEFAULT(UseUnalignedLoadStores)) {
+ UseUnalignedLoadStores = true; // use movdqu on newest ZX cpus
+ }
+ }
+ if (supports_sse4_2()) {
+ if (FLAG_IS_DEFAULT(UseSSE42Intrinsics)) {
+ FLAG_SET_DEFAULT(UseSSE42Intrinsics, true);
+ }
+ } else {
+ if (UseSSE42Intrinsics && !FLAG_IS_DEFAULT(UseAESIntrinsics)) {
+ warning("SSE4.2 intrinsics require SSE4.2 instructions or higher. Intrinsics will be disabled.");
+ }
+ FLAG_SET_DEFAULT(UseSSE42Intrinsics, false);
+ }
+ }
+
+ if (FLAG_IS_DEFAULT(AllocatePrefetchInstr) && supports_3dnow_prefetch()) {
+ FLAG_SET_DEFAULT(AllocatePrefetchInstr, 3);
+ }
+ }
+
if( is_amd() ) { // AMD cpus specific settings
if( supports_sse2() && FLAG_IS_DEFAULT(UseAddressNop) ) {
// Use it on new AMD cpus starting from Opteron.
@@ -1374,6 +1439,14 @@
#endif
}
+ if (is_zx() && ((cpu_family() == 6) || (cpu_family() == 7)) && supports_sse4_2()) {
+#ifdef COMPILER2
+ if (FLAG_IS_DEFAULT(UseFPUForSpilling)) {
+ FLAG_SET_DEFAULT(UseFPUForSpilling, true);
+ }
+#endif
+ }
+
#ifdef _LP64
// Prefetch settings
--- a/src/hotspot/cpu/x86/vm_version_x86.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/x86/vm_version_x86.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -305,6 +305,9 @@
enum Extended_Family {
// AMD
CPU_FAMILY_AMD_11H = 0x11,
+ // ZX
+ CPU_FAMILY_ZX_CORE_F6 = 6,
+ CPU_FAMILY_ZX_CORE_F7 = 7,
// Intel
CPU_FAMILY_INTEL_CORE = 6,
CPU_MODEL_NEHALEM = 0x1e,
@@ -549,6 +552,16 @@
}
}
+ // ZX features.
+ if (is_zx()) {
+ if (_cpuid_info.ext_cpuid1_ecx.bits.lzcnt_intel != 0)
+ result |= CPU_LZCNT;
+ // for ZX, ecx.bits.misalignsse bit (bit 8) indicates support for prefetchw
+ if (_cpuid_info.ext_cpuid1_ecx.bits.misalignsse != 0) {
+ result |= CPU_3DNOW_PREFETCH;
+ }
+ }
+
return result;
}
@@ -657,6 +670,7 @@
static bool is_P6() { return cpu_family() >= 6; }
static bool is_amd() { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x68747541; } // 'htuA'
static bool is_intel() { assert_is_initialized(); return _cpuid_info.std_vendor_name_0 == 0x756e6547; } // 'uneG'
+ static bool is_zx() { assert_is_initialized(); return (_cpuid_info.std_vendor_name_0 == 0x746e6543) || (_cpuid_info.std_vendor_name_0 == 0x68532020); } // 'tneC'||'hS '
static bool is_atom_family() { return ((cpu_family() == 0x06) && ((extended_cpu_model() == 0x36) || (extended_cpu_model() == 0x37) || (extended_cpu_model() == 0x4D))); } //Silvermont and Centerton
static bool is_knights_family() { return ((cpu_family() == 0x06) && ((extended_cpu_model() == 0x57) || (extended_cpu_model() == 0x85))); } // Xeon Phi 3200/5200/7200 and Future Xeon Phi
@@ -680,6 +694,15 @@
}
} else if (is_amd()) {
result = (_cpuid_info.ext_cpuid8_ecx.bits.cores_per_cpu + 1);
+ } else if (is_zx()) {
+ bool supports_topology = supports_processor_topology();
+ if (supports_topology) {
+ result = _cpuid_info.tpl_cpuidB1_ebx.bits.logical_cpus /
+ _cpuid_info.tpl_cpuidB0_ebx.bits.logical_cpus;
+ }
+ if (!supports_topology || result == 0) {
+ result = (_cpuid_info.dcp_cpuid4_eax.bits.cores_per_cpu + 1);
+ }
}
return result;
}
@@ -688,6 +711,8 @@
uint result = 1;
if (is_intel() && supports_processor_topology()) {
result = _cpuid_info.tpl_cpuidB0_ebx.bits.logical_cpus;
+ } else if (is_zx() && supports_processor_topology()) {
+ result = _cpuid_info.tpl_cpuidB0_ebx.bits.logical_cpus;
} else if (_cpuid_info.std_cpuid1_edx.bits.ht != 0) {
if (cpu_family() >= 0x17) {
result = _cpuid_info.ext_cpuid1E_ebx.bits.threads_per_core + 1;
@@ -705,6 +730,8 @@
result = (_cpuid_info.dcp_cpuid4_ebx.bits.L1_line_size + 1);
} else if (is_amd()) {
result = _cpuid_info.ext_cpuid5_ecx.bits.L1_line_size;
+ } else if (is_zx()) {
+ result = (_cpuid_info.dcp_cpuid4_ebx.bits.L1_line_size + 1);
}
if (result < 32) // not defined ?
result = 32; // 32 bytes by default on x86 and other x64
--- a/src/hotspot/cpu/zero/relocInfo_zero.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/zero/relocInfo_zero.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright 2007 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -34,4 +34,8 @@
format_width = 1
};
+ public:
+
+ static bool mustIterateImmediateOopsInCode() { return true; }
+
#endif // CPU_ZERO_VM_RELOCINFO_ZERO_HPP
--- a/src/hotspot/cpu/zero/stubGenerator_zero.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/cpu/zero/stubGenerator_zero.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -258,7 +258,7 @@
StubRoutines::_atomic_cmpxchg_byte_entry = ShouldNotCallThisStub();
StubRoutines::_atomic_cmpxchg_long_entry = ShouldNotCallThisStub();
StubRoutines::_atomic_add_entry = ShouldNotCallThisStub();
- StubRoutines::_atomic_add_ptr_entry = ShouldNotCallThisStub();
+ StubRoutines::_atomic_add_long_entry = ShouldNotCallThisStub();
StubRoutines::_fence_entry = ShouldNotCallThisStub();
}
--- a/src/hotspot/os/aix/safepointMechanism_aix.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os/aix/safepointMechanism_aix.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -30,8 +30,18 @@
#include <sys/mman.h>
void SafepointMechanism::pd_initialize() {
+ // No special code needed if we can use SIGTRAP
+ if (ThreadLocalHandshakes && USE_POLL_BIT_ONLY) {
+ default_initialize();
+ return;
+ }
+
+ // Allocate one protected page
char* map_address = (char*)MAP_FAILED;
const size_t page_size = os::vm_page_size();
+ const int prot = PROT_READ;
+ const int flags = MAP_PRIVATE | MAP_ANONYMOUS;
+
// Use optimized addresses for the polling page,
// e.g. map it to a special 32-bit address.
if (OptimizePollingPageLocation) {
@@ -57,14 +67,14 @@
// Try to map with current address wish.
// AIX: AIX needs MAP_FIXED if we provide an address and mmap will
// fail if the address is already mapped.
- map_address = (char*) ::mmap(address_wishes[i] - (ssize_t)page_size,
- page_size, PROT_READ,
- MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED,
+ map_address = (char*) ::mmap(address_wishes[i],
+ page_size, prot,
+ flags | MAP_FIXED,
-1, 0);
- log_debug(os)("SafePoint Polling Page address: %p (wish) => %p",
- address_wishes[i], map_address + (ssize_t)page_size);
+ log_debug(os)("SafePoint Polling Page address: %p (wish) => %p",
+ address_wishes[i], map_address);
- if (map_address + (ssize_t)page_size == address_wishes[i]) {
+ if (map_address == address_wishes[i]) {
// Map succeeded and map_address is at wished address, exit loop.
break;
}
@@ -78,8 +88,17 @@
}
}
if (map_address == (char*)MAP_FAILED) {
- map_address = os::reserve_memory(page_size, NULL, page_size);
+ map_address = (char*) ::mmap(NULL, page_size, prot, flags, -1, 0);
}
guarantee(map_address != (char*)MAP_FAILED, "SafepointMechanism::pd_initialize: failed to allocate polling page");
+ log_info(os)("SafePoint Polling address: " INTPTR_FORMAT, p2i(map_address));
os::set_polling_page((address)(map_address));
+
+ // Use same page for ThreadLocalHandshakes without SIGTRAP
+ if (ThreadLocalHandshakes) {
+ set_uses_thread_local_poll();
+ intptr_t bad_page_val = reinterpret_cast<intptr_t>(map_address);
+ _poll_armed_value = reinterpret_cast<void*>(bad_page_val | poll_bit());
+ _poll_disarmed_value = NULL; // Readable on AIX
+ }
}
--- a/src/hotspot/os/linux/osContainer_linux.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os/linux/osContainer_linux.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -31,16 +31,11 @@
#include "logging/log.hpp"
#include "osContainer_linux.hpp"
-/*
- * Warning: Some linux distros use 0x7FFFFFFFFFFFF000
- * and others use 0x7FFFFFFFFFFFFFFF for unlimited.
- */
-#define UNLIMITED_MEM CONST64(0x7FFFFFFFFFFFF000)
-
#define PER_CPU_SHARES 1024
bool OSContainer::_is_initialized = false;
bool OSContainer::_is_containerized = false;
+julong _unlimited_memory;
class CgroupSubsystem: CHeapObj<mtInternal> {
friend class OSContainer;
@@ -217,6 +212,8 @@
_is_initialized = true;
_is_containerized = false;
+ _unlimited_memory = (LONG_MAX / os::vm_page_size()) * os::vm_page_size();
+
log_trace(os, container)("OSContainer::init: Initializing Container Support");
if (!UseContainerSupport) {
log_trace(os, container)("Container Support not enabled");
@@ -419,37 +416,37 @@
* OSCONTAINER_ERROR for not supported
*/
jlong OSContainer::memory_limit_in_bytes() {
- GET_CONTAINER_INFO(jlong, memory, "/memory.limit_in_bytes",
- "Memory Limit is: " JLONG_FORMAT, JLONG_FORMAT, memlimit);
+ GET_CONTAINER_INFO(julong, memory, "/memory.limit_in_bytes",
+ "Memory Limit is: " JULONG_FORMAT, JULONG_FORMAT, memlimit);
- if (memlimit >= UNLIMITED_MEM) {
+ if (memlimit >= _unlimited_memory) {
log_trace(os, container)("Memory Limit is: Unlimited");
return (jlong)-1;
}
else {
- return memlimit;
+ return (jlong)memlimit;
}
}
jlong OSContainer::memory_and_swap_limit_in_bytes() {
- GET_CONTAINER_INFO(jlong, memory, "/memory.memsw.limit_in_bytes",
- "Memory and Swap Limit is: " JLONG_FORMAT, JLONG_FORMAT, memswlimit);
- if (memswlimit >= UNLIMITED_MEM) {
+ GET_CONTAINER_INFO(julong, memory, "/memory.memsw.limit_in_bytes",
+ "Memory and Swap Limit is: " JULONG_FORMAT, JULONG_FORMAT, memswlimit);
+ if (memswlimit >= _unlimited_memory) {
log_trace(os, container)("Memory and Swap Limit is: Unlimited");
return (jlong)-1;
} else {
- return memswlimit;
+ return (jlong)memswlimit;
}
}
jlong OSContainer::memory_soft_limit_in_bytes() {
- GET_CONTAINER_INFO(jlong, memory, "/memory.soft_limit_in_bytes",
- "Memory Soft Limit is: " JLONG_FORMAT, JLONG_FORMAT, memsoftlimit);
- if (memsoftlimit >= UNLIMITED_MEM) {
+ GET_CONTAINER_INFO(julong, memory, "/memory.soft_limit_in_bytes",
+ "Memory Soft Limit is: " JULONG_FORMAT, JULONG_FORMAT, memsoftlimit);
+ if (memsoftlimit >= _unlimited_memory) {
log_trace(os, container)("Memory Soft Limit is: Unlimited");
return (jlong)-1;
} else {
- return memsoftlimit;
+ return (jlong)memsoftlimit;
}
}
--- a/src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -47,6 +47,7 @@
#include "runtime/javaCalls.hpp"
#include "runtime/mutexLocker.hpp"
#include "runtime/osThread.hpp"
+#include "runtime/safepointMechanism.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/stubRoutines.hpp"
#include "runtime/thread.inline.hpp"
@@ -374,9 +375,12 @@
goto run_stub;
}
- else if (sig == SIGSEGV && os::is_poll_address(addr)) {
+ else if ((SafepointMechanism::uses_thread_local_poll() && USE_POLL_BIT_ONLY)
+ ? (sig == SIGTRAP && ((NativeInstruction*)pc)->is_safepoint_poll())
+ : (sig == SIGSEGV && os::is_poll_address(addr))) {
if (TraceTraps) {
- tty->print_cr("trap: safepoint_poll at " INTPTR_FORMAT " (SIGSEGV)", pc);
+ tty->print_cr("trap: safepoint_poll at " INTPTR_FORMAT " (%s)", p2i(pc),
+ (SafepointMechanism::uses_thread_local_poll() && USE_POLL_BIT_ONLY) ? "SIGTRAP" : "SIGSEGV");
}
stub = SharedRuntime::get_poll_stub(pc);
goto run_stub;
--- a/src/hotspot/os_cpu/bsd_x86/atomic_bsd_x86.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/bsd_x86/atomic_bsd_x86.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -132,8 +132,8 @@
extern "C" {
// defined in bsd_x86.s
- jlong _Atomic_cmpxchg_long(jlong, volatile jlong*, jlong, bool);
- void _Atomic_move_long(const volatile jlong* src, volatile jlong* dst);
+ int64_t _Atomic_cmpxchg_long(int64_t, volatile int64_t*, int64_t, bool);
+ void _Atomic_move_long(const volatile int64_t* src, volatile int64_t* dst);
}
template<>
@@ -143,15 +143,15 @@
T compare_value,
cmpxchg_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
- return cmpxchg_using_helper<jlong>(_Atomic_cmpxchg_long, exchange_value, dest, compare_value);
+ return cmpxchg_using_helper<int64_t>(_Atomic_cmpxchg_long, exchange_value, dest, compare_value);
}
template<>
template<typename T>
inline T Atomic::PlatformLoad<8>::operator()(T const volatile* src) const {
STATIC_ASSERT(8 == sizeof(T));
- volatile jlong dest;
- _Atomic_move_long(reinterpret_cast<const volatile jlong*>(src), reinterpret_cast<volatile jlong*>(&dest));
+ volatile int64_t dest;
+ _Atomic_move_long(reinterpret_cast<const volatile int64_t*>(src), reinterpret_cast<volatile int64_t*>(&dest));
return PrimitiveConversions::cast<T>(dest);
}
@@ -160,7 +160,7 @@
inline void Atomic::PlatformStore<8>::operator()(T store_value,
T volatile* dest) const {
STATIC_ASSERT(8 == sizeof(T));
- _Atomic_move_long(reinterpret_cast<const volatile jlong*>(&store_value), reinterpret_cast<volatile jlong*>(dest));
+ _Atomic_move_long(reinterpret_cast<const volatile int64_t*>(&store_value), reinterpret_cast<volatile int64_t*>(dest));
}
#endif // AMD64
--- a/src/hotspot/os_cpu/bsd_x86/bsd_x86_32.s Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/bsd_x86/bsd_x86_32.s Wed Jan 17 12:19:06 2018 +0000
@@ -633,10 +633,10 @@
ret
- # Support for jlong Atomic::cmpxchg(jlong exchange_value,
- # volatile jlong* dest,
- # jlong compare_value,
- # bool is_MP)
+ # Support for int64_t Atomic::cmpxchg(int64_t exchange_value,
+ # volatile int64_t* dest,
+ # int64_t compare_value,
+ # bool is_MP)
#
.p2align 4,,15
ELF_TYPE(_Atomic_cmpxchg_long,@function)
@@ -658,8 +658,8 @@
ret
- # Support for jlong Atomic::load and Atomic::store.
- # void _Atomic_move_long(const volatile jlong* src, volatile jlong* dst)
+ # Support for int64_t Atomic::load and Atomic::store.
+ # void _Atomic_move_long(const volatile int64_t* src, volatile int64_t* dst)
.p2align 4,,15
ELF_TYPE(_Atomic_move_long,@function)
SYMBOL(_Atomic_move_long):
--- a/src/hotspot/os_cpu/bsd_zero/atomic_bsd_zero.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/bsd_zero/atomic_bsd_zero.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -265,8 +265,8 @@
template<typename T>
inline T Atomic::PlatformLoad<8>::operator()(T const volatile* src) const {
STATIC_ASSERT(8 == sizeof(T));
- volatile jlong dest;
- os::atomic_copy64(reinterpret_cast<const volatile jlong*>(src), reinterpret_cast<volatile jlong*>(&dest));
+ volatile int64_t dest;
+ os::atomic_copy64(reinterpret_cast<const volatile int64_t*>(src), reinterpret_cast<volatile int64_t*>(&dest));
return PrimitiveConversions::cast<T>(dest);
}
@@ -275,7 +275,7 @@
inline void Atomic::PlatformStore<8>::operator()(T store_value,
T volatile* dest) const {
STATIC_ASSERT(8 == sizeof(T));
- os::atomic_copy64(reinterpret_cast<const volatile jlong*>(&store_value), reinterpret_cast<volatile jlong*>(dest));
+ os::atomic_copy64(reinterpret_cast<const volatile int64_t*>(&store_value), reinterpret_cast<volatile int64_t*>(dest));
}
#endif // OS_CPU_BSD_ZERO_VM_ATOMIC_BSD_ZERO_HPP
--- a/src/hotspot/os_cpu/linux_arm/atomic_linux_arm.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/linux_arm/atomic_linux_arm.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -50,7 +50,7 @@
inline T Atomic::PlatformLoad<8>::operator()(T const volatile* src) const {
STATIC_ASSERT(8 == sizeof(T));
return PrimitiveConversions::cast<T>(
- (*os::atomic_load_long_func)(reinterpret_cast<const volatile jlong*>(src)));
+ (*os::atomic_load_long_func)(reinterpret_cast<const volatile int64_t*>(src)));
}
template<>
@@ -59,7 +59,7 @@
T volatile* dest) const {
STATIC_ASSERT(8 == sizeof(T));
(*os::atomic_store_long_func)(
- PrimitiveConversions::cast<jlong>(store_value), reinterpret_cast<volatile jlong*>(dest));
+ PrimitiveConversions::cast<int64_t>(store_value), reinterpret_cast<volatile int64_t*>(dest));
}
#endif
@@ -103,7 +103,7 @@
: "memory");
return val;
#else
- return add_using_helper<jint>(os::atomic_add_func, add_value, dest);
+ return add_using_helper<int32_t>(os::atomic_add_func, add_value, dest);
#endif
}
@@ -146,7 +146,7 @@
: "memory");
return old_val;
#else
- return xchg_using_helper<jint>(os::atomic_xchg_func, exchange_value, dest);
+ return xchg_using_helper<int32_t>(os::atomic_xchg_func, exchange_value, dest);
#endif
}
@@ -178,17 +178,17 @@
#ifndef AARCH64
-inline jint reorder_cmpxchg_func(jint exchange_value,
- jint volatile* dest,
- jint compare_value) {
+inline int32_t reorder_cmpxchg_func(int32_t exchange_value,
+ int32_t volatile* dest,
+ int32_t compare_value) {
// Warning: Arguments are swapped to avoid moving them for kernel call
return (*os::atomic_cmpxchg_func)(compare_value, exchange_value, dest);
}
-inline jlong reorder_cmpxchg_long_func(jlong exchange_value,
- jlong volatile* dest,
- jlong compare_value) {
- assert(VM_Version::supports_cx8(), "Atomic compare and exchange jlong not supported on this architecture!");
+inline int64_t reorder_cmpxchg_long_func(int64_t exchange_value,
+ int64_t volatile* dest,
+ int64_t compare_value) {
+ assert(VM_Version::supports_cx8(), "Atomic compare and exchange int64_t not supported on this architecture!");
// Warning: Arguments are swapped to avoid moving them for kernel call
return (*os::atomic_cmpxchg_long_func)(compare_value, exchange_value, dest);
}
@@ -221,7 +221,7 @@
: "memory");
return rv;
#else
- return cmpxchg_using_helper<jint>(reorder_cmpxchg_func, exchange_value, dest, compare_value);
+ return cmpxchg_using_helper<int32_t>(reorder_cmpxchg_func, exchange_value, dest, compare_value);
#endif
}
@@ -251,7 +251,7 @@
: "memory");
return rv;
#else
- return cmpxchg_using_helper<jlong>(reorder_cmpxchg_long_func, exchange_value, dest, compare_value);
+ return cmpxchg_using_helper<int64_t>(reorder_cmpxchg_long_func, exchange_value, dest, compare_value);
#endif
}
--- a/src/hotspot/os_cpu/linux_arm/os_linux_arm.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/linux_arm/os_linux_arm.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -598,11 +598,11 @@
#ifndef AARCH64
-typedef jlong cmpxchg_long_func_t(jlong, jlong, volatile jlong*);
+typedef int64_t cmpxchg_long_func_t(int64_t, int64_t, volatile int64_t*);
cmpxchg_long_func_t* os::atomic_cmpxchg_long_func = os::atomic_cmpxchg_long_bootstrap;
-jlong os::atomic_cmpxchg_long_bootstrap(jlong compare_value, jlong exchange_value, volatile jlong* dest) {
+int64_t os::atomic_cmpxchg_long_bootstrap(int64_t compare_value, int64_t exchange_value, volatile int64_t* dest) {
// try to use the stub:
cmpxchg_long_func_t* func = CAST_TO_FN_PTR(cmpxchg_long_func_t*, StubRoutines::atomic_cmpxchg_long_entry());
@@ -612,16 +612,16 @@
}
assert(Threads::number_of_threads() == 0, "for bootstrap only");
- jlong old_value = *dest;
+ int64_t old_value = *dest;
if (old_value == compare_value)
*dest = exchange_value;
return old_value;
}
-typedef jlong load_long_func_t(const volatile jlong*);
+typedef int64_t load_long_func_t(const volatile int64_t*);
load_long_func_t* os::atomic_load_long_func = os::atomic_load_long_bootstrap;
-jlong os::atomic_load_long_bootstrap(const volatile jlong* src) {
+int64_t os::atomic_load_long_bootstrap(const volatile int64_t* src) {
// try to use the stub:
load_long_func_t* func = CAST_TO_FN_PTR(load_long_func_t*, StubRoutines::atomic_load_long_entry());
@@ -631,15 +631,15 @@
}
assert(Threads::number_of_threads() == 0, "for bootstrap only");
- jlong old_value = *src;
+ int64_t old_value = *src;
return old_value;
}
-typedef void store_long_func_t(jlong, volatile jlong*);
+typedef void store_long_func_t(int64_t, volatile int64_t*);
store_long_func_t* os::atomic_store_long_func = os::atomic_store_long_bootstrap;
-void os::atomic_store_long_bootstrap(jlong val, volatile jlong* dest) {
+void os::atomic_store_long_bootstrap(int64_t val, volatile int64_t* dest) {
// try to use the stub:
store_long_func_t* func = CAST_TO_FN_PTR(store_long_func_t*, StubRoutines::atomic_store_long_entry());
@@ -652,11 +652,11 @@
*dest = val;
}
-typedef jint atomic_add_func_t(jint add_value, volatile jint *dest);
+typedef int32_t atomic_add_func_t(int32_t add_value, volatile int32_t *dest);
atomic_add_func_t * os::atomic_add_func = os::atomic_add_bootstrap;
-jint os::atomic_add_bootstrap(jint add_value, volatile jint *dest) {
+int32_t os::atomic_add_bootstrap(int32_t add_value, volatile int32_t *dest) {
atomic_add_func_t * func = CAST_TO_FN_PTR(atomic_add_func_t*,
StubRoutines::atomic_add_entry());
if (func != NULL) {
@@ -664,16 +664,16 @@
return (*func)(add_value, dest);
}
- jint old_value = *dest;
+ int32_t old_value = *dest;
*dest = old_value + add_value;
return (old_value + add_value);
}
-typedef jint atomic_xchg_func_t(jint exchange_value, volatile jint *dest);
+typedef int32_t atomic_xchg_func_t(int32_t exchange_value, volatile int32_t *dest);
atomic_xchg_func_t * os::atomic_xchg_func = os::atomic_xchg_bootstrap;
-jint os::atomic_xchg_bootstrap(jint exchange_value, volatile jint *dest) {
+int32_t os::atomic_xchg_bootstrap(int32_t exchange_value, volatile int32_t *dest) {
atomic_xchg_func_t * func = CAST_TO_FN_PTR(atomic_xchg_func_t*,
StubRoutines::atomic_xchg_entry());
if (func != NULL) {
@@ -681,16 +681,16 @@
return (*func)(exchange_value, dest);
}
- jint old_value = *dest;
+ int32_t old_value = *dest;
*dest = exchange_value;
return (old_value);
}
-typedef jint cmpxchg_func_t(jint, jint, volatile jint*);
+typedef int32_t cmpxchg_func_t(int32_t, int32_t, volatile int32_t*);
cmpxchg_func_t* os::atomic_cmpxchg_func = os::atomic_cmpxchg_bootstrap;
-jint os::atomic_cmpxchg_bootstrap(jint compare_value, jint exchange_value, volatile jint* dest) {
+int32_t os::atomic_cmpxchg_bootstrap(int32_t compare_value, int32_t exchange_value, volatile int32_t* dest) {
// try to use the stub:
cmpxchg_func_t* func = CAST_TO_FN_PTR(cmpxchg_func_t*, StubRoutines::atomic_cmpxchg_entry());
@@ -700,7 +700,7 @@
}
assert(Threads::number_of_threads() == 0, "for bootstrap only");
- jint old_value = *dest;
+ int32_t old_value = *dest;
if (old_value == compare_value)
*dest = exchange_value;
return old_value;
--- a/src/hotspot/os_cpu/linux_arm/os_linux_arm.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/linux_arm/os_linux_arm.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -45,35 +45,35 @@
static bool register_code_area(char *low, char *high) { return true; }
#ifndef AARCH64
- static jlong (*atomic_cmpxchg_long_func)(jlong compare_value,
- jlong exchange_value,
- volatile jlong *dest);
+ static int64_t (*atomic_cmpxchg_long_func)(int64_t compare_value,
+ int64_t exchange_value,
+ volatile int64_t *dest);
- static jlong (*atomic_load_long_func)(const volatile jlong*);
+ static int64_t (*atomic_load_long_func)(const volatile int64_t*);
- static void (*atomic_store_long_func)(jlong, volatile jlong*);
+ static void (*atomic_store_long_func)(int64_t, volatile int64_t*);
- static jint (*atomic_add_func)(jint add_value, volatile jint *dest);
+ static int32_t (*atomic_add_func)(int32_t add_value, volatile int32_t *dest);
- static jint (*atomic_xchg_func)(jint exchange_value, volatile jint *dest);
+ static int32_t (*atomic_xchg_func)(int32_t exchange_value, volatile int32_t *dest);
- static jint (*atomic_cmpxchg_func)(jint compare_value,
- jint exchange_value,
- volatile jint *dest);
+ static int32_t (*atomic_cmpxchg_func)(int32_t compare_value,
+ int32_t exchange_value,
+ volatile int32_t *dest);
- static jlong atomic_cmpxchg_long_bootstrap(jlong, jlong, volatile jlong*);
+ static int64_t atomic_cmpxchg_long_bootstrap(int64_t, int64_t, volatile int64_t*);
- static jlong atomic_load_long_bootstrap(const volatile jlong*);
+ static int64_t atomic_load_long_bootstrap(const volatile int64_t*);
- static void atomic_store_long_bootstrap(jlong, volatile jlong*);
+ static void atomic_store_long_bootstrap(int64_t, volatile int64_t*);
- static jint atomic_add_bootstrap(jint add_value, volatile jint *dest);
+ static int32_t atomic_add_bootstrap(int32_t add_value, volatile int32_t *dest);
- static jint atomic_xchg_bootstrap(jint exchange_value, volatile jint *dest);
+ static int32_t atomic_xchg_bootstrap(int32_t exchange_value, volatile int32_t *dest);
- static jint atomic_cmpxchg_bootstrap(jint compare_value,
- jint exchange_value,
- volatile jint *dest);
+ static int32_t atomic_cmpxchg_bootstrap(int32_t compare_value,
+ int32_t exchange_value,
+ volatile int32_t *dest);
#endif // !AARCH64
#endif // OS_CPU_LINUX_ARM_VM_OS_LINUX_ARM_HPP
--- a/src/hotspot/os_cpu/linux_ppc/os_linux_ppc.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/linux_ppc/os_linux_ppc.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -46,6 +46,7 @@
#include "runtime/javaCalls.hpp"
#include "runtime/mutexLocker.hpp"
#include "runtime/osThread.hpp"
+#include "runtime/safepointMechanism.hpp"
#include "runtime/sharedRuntime.hpp"
#include "runtime/stubRoutines.hpp"
#include "runtime/thread.inline.hpp"
@@ -382,7 +383,7 @@
stub = SharedRuntime::get_handle_wrong_method_stub();
}
- else if (sig == SIGSEGV &&
+ else if (sig == ((SafepointMechanism::uses_thread_local_poll() && USE_POLL_BIT_ONLY) ? SIGTRAP : SIGSEGV) &&
// A linux-ppc64 kernel before 2.6.6 doesn't set si_addr on some segfaults
// in 64bit mode (cf. http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.6),
// especially when we try to read from the safepoint polling page. So the check
@@ -393,7 +394,8 @@
((cb = CodeCache::find_blob(pc)) != NULL) &&
cb->is_compiled()) {
if (TraceTraps) {
- tty->print_cr("trap: safepoint_poll at " INTPTR_FORMAT " (SIGSEGV)", p2i(pc));
+ tty->print_cr("trap: safepoint_poll at " INTPTR_FORMAT " (%s)", p2i(pc),
+ (SafepointMechanism::uses_thread_local_poll() && USE_POLL_BIT_ONLY) ? "SIGTRAP" : "SIGSEGV");
}
stub = SharedRuntime::get_poll_stub(pc);
}
--- a/src/hotspot/os_cpu/linux_sparc/os_linux_sparc.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/linux_sparc/os_linux_sparc.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -28,15 +28,15 @@
//
// NOTE: we are back in class os here, not Linux
//
- static jint (*atomic_xchg_func) (jint, volatile jint*);
- static jint (*atomic_cmpxchg_func) (jint, volatile jint*, jint);
- static jlong (*atomic_cmpxchg_long_func)(jlong, volatile jlong*, jlong);
- static jint (*atomic_add_func) (jint, volatile jint*);
+ static int32_t (*atomic_xchg_func) (int32_t, volatile int32_t*);
+ static int32_t (*atomic_cmpxchg_func) (int32_t, volatile int32_t*, int32_t);
+ static int64_t (*atomic_cmpxchg_long_func)(int64_t, volatile int64_t*, int64_t);
+ static int32_t (*atomic_add_func) (int32_t, volatile int32_t*);
- static jint atomic_xchg_bootstrap (jint, volatile jint*);
- static jint atomic_cmpxchg_bootstrap (jint, volatile jint*, jint);
- static jlong atomic_cmpxchg_long_bootstrap(jlong, volatile jlong*, jlong);
- static jint atomic_add_bootstrap (jint, volatile jint*);
+ static int32_t atomic_xchg_bootstrap (int32_t, volatile int32_t*);
+ static int32_t atomic_cmpxchg_bootstrap (int32_t, volatile int32_t*, int32_t);
+ static int64_t atomic_cmpxchg_long_bootstrap(int64_t, volatile int64_t*, int64_t);
+ static int32_t atomic_add_bootstrap (int32_t, volatile int32_t*);
static void setup_fpu() {}
--- a/src/hotspot/os_cpu/linux_x86/atomic_linux_x86.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/linux_x86/atomic_linux_x86.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -133,8 +133,8 @@
extern "C" {
// defined in linux_x86.s
- jlong _Atomic_cmpxchg_long(jlong, volatile jlong*, jlong);
- void _Atomic_move_long(const volatile jlong* src, volatile jlong* dst);
+ int64_t _Atomic_cmpxchg_long(int64_t, volatile int64_t*, int64_t);
+ void _Atomic_move_long(const volatile int64_t* src, volatile int64_t* dst);
}
template<>
@@ -144,15 +144,15 @@
T compare_value,
cmpxchg_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
- return cmpxchg_using_helper<jlong>(_Atomic_cmpxchg_long, exchange_value, dest, compare_value);
+ return cmpxchg_using_helper<int64_t>(_Atomic_cmpxchg_long, exchange_value, dest, compare_value);
}
template<>
template<typename T>
inline T Atomic::PlatformLoad<8>::operator()(T const volatile* src) const {
STATIC_ASSERT(8 == sizeof(T));
- volatile jlong dest;
- _Atomic_move_long(reinterpret_cast<const volatile jlong*>(src), reinterpret_cast<volatile jlong*>(&dest));
+ volatile int64_t dest;
+ _Atomic_move_long(reinterpret_cast<const volatile int64_t*>(src), reinterpret_cast<volatile int64_t*>(&dest));
return PrimitiveConversions::cast<T>(dest);
}
@@ -161,7 +161,7 @@
inline void Atomic::PlatformStore<8>::operator()(T store_value,
T volatile* dest) const {
STATIC_ASSERT(8 == sizeof(T));
- _Atomic_move_long(reinterpret_cast<const volatile jlong*>(&store_value), reinterpret_cast<volatile jlong*>(dest));
+ _Atomic_move_long(reinterpret_cast<const volatile int64_t*>(&store_value), reinterpret_cast<volatile int64_t*>(dest));
}
#endif // AMD64
--- a/src/hotspot/os_cpu/linux_zero/atomic_linux_zero.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/linux_zero/atomic_linux_zero.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -30,67 +30,6 @@
// Implementation of class atomic
-#ifdef ARM
-
-/*
- * __kernel_cmpxchg
- *
- * Atomically store newval in *ptr if *ptr is equal to oldval for user space.
- * Return zero if *ptr was changed or non-zero if no exchange happened.
- * The C flag is also set if *ptr was changed to allow for assembly
- * optimization in the calling code.
- *
- */
-
-typedef int (__kernel_cmpxchg_t)(int oldval, int newval, volatile int *ptr);
-#define __kernel_cmpxchg (*(__kernel_cmpxchg_t *) 0xffff0fc0)
-
-
-
-/* Perform an atomic compare and swap: if the current value of `*PTR'
- is OLDVAL, then write NEWVAL into `*PTR'. Return the contents of
- `*PTR' before the operation.*/
-static inline int arm_compare_and_swap(int newval,
- volatile int *ptr,
- int oldval) {
- for (;;) {
- int prev = *ptr;
- if (prev != oldval)
- return prev;
-
- if (__kernel_cmpxchg (prev, newval, ptr) == 0)
- // Success.
- return prev;
-
- // We failed even though prev == oldval. Try again.
- }
-}
-
-/* Atomically add an int to memory. */
-static inline int arm_add_and_fetch(int add_value, volatile int *ptr) {
- for (;;) {
- // Loop until a __kernel_cmpxchg succeeds.
-
- int prev = *ptr;
-
- if (__kernel_cmpxchg (prev, prev + add_value, ptr) == 0)
- return prev + add_value;
- }
-}
-
-/* Atomically write VALUE into `*PTR' and returns the previous
- contents of `*PTR'. */
-static inline int arm_lock_test_and_set(int newval, volatile int *ptr) {
- for (;;) {
- // Loop until a __kernel_cmpxchg succeeds.
- int prev = *ptr;
-
- if (__kernel_cmpxchg (prev, newval, ptr) == 0)
- return prev;
- }
-}
-#endif // ARM
-
template<size_t byte_size>
struct Atomic::PlatformAdd
: Atomic::AddAndFetch<Atomic::PlatformAdd<byte_size> >
@@ -105,11 +44,7 @@
STATIC_ASSERT(4 == sizeof(I));
STATIC_ASSERT(4 == sizeof(D));
-#ifdef ARM
- return add_using_helper<int>(arm_add_and_fetch, add_value, dest);
-#else
return __sync_add_and_fetch(dest, add_value);
-#endif // ARM
}
template<>
@@ -117,7 +52,6 @@
inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest) const {
STATIC_ASSERT(8 == sizeof(I));
STATIC_ASSERT(8 == sizeof(D));
-
return __sync_add_and_fetch(dest, add_value);
}
@@ -126,9 +60,6 @@
inline T Atomic::PlatformXchg<4>::operator()(T exchange_value,
T volatile* dest) const {
STATIC_ASSERT(4 == sizeof(T));
-#ifdef ARM
- return xchg_using_helper<int>(arm_lock_test_and_set, exchange_value, dest);
-#else
// __sync_lock_test_and_set is a bizarrely named atomic exchange
// operation. Note that some platforms only support this with the
// limitation that the only valid value to store is the immediate
@@ -140,7 +71,6 @@
// barrier.
__sync_synchronize();
return result;
-#endif // ARM
}
template<>
@@ -164,11 +94,7 @@
T compare_value,
cmpxchg_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
-#ifdef ARM
- return cmpxchg_using_helper<int>(arm_compare_and_swap, exchange_value, dest, compare_value);
-#else
return __sync_val_compare_and_swap(dest, compare_value, exchange_value);
-#endif // ARM
}
template<>
@@ -185,8 +111,8 @@
template<typename T>
inline T Atomic::PlatformLoad<8>::operator()(T const volatile* src) const {
STATIC_ASSERT(8 == sizeof(T));
- volatile jlong dest;
- os::atomic_copy64(reinterpret_cast<const volatile jlong*>(src), reinterpret_cast<volatile jlong*>(&dest));
+ volatile int64_t dest;
+ os::atomic_copy64(reinterpret_cast<const volatile int64_t*>(src), reinterpret_cast<volatile int64_t*>(&dest));
return PrimitiveConversions::cast<T>(dest);
}
@@ -195,7 +121,7 @@
inline void Atomic::PlatformStore<8>::operator()(T store_value,
T volatile* dest) const {
STATIC_ASSERT(8 == sizeof(T));
- os::atomic_copy64(reinterpret_cast<const volatile jlong*>(&store_value), reinterpret_cast<volatile jlong*>(dest));
+ os::atomic_copy64(reinterpret_cast<const volatile int64_t*>(&store_value), reinterpret_cast<volatile int64_t*>(dest));
}
#endif // OS_CPU_LINUX_ZERO_VM_ATOMIC_LINUX_ZERO_HPP
--- a/src/hotspot/os_cpu/solaris_sparc/os_solaris_sparc.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/solaris_sparc/os_solaris_sparc.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -28,15 +28,15 @@
//
// NOTE: we are back in class os here, not Solaris
//
- static jint (*atomic_xchg_func) (jint, volatile jint*);
- static jint (*atomic_cmpxchg_func) (jint, volatile jint*, jint);
- static jlong (*atomic_cmpxchg_long_func)(jlong, volatile jlong*, jlong);
- static jint (*atomic_add_func) (jint, volatile jint*);
+ static int32_t (*atomic_xchg_func) (int32_t, volatile int32_t*);
+ static int32_t (*atomic_cmpxchg_func) (int32_t, volatile int32_t*, int32_t);
+ static int64_t (*atomic_cmpxchg_long_func)(int64_t, volatile int64_t*, int64_t);
+ static int32_t (*atomic_add_func) (int32_t, volatile int32_t*);
- static jint atomic_xchg_bootstrap (jint, volatile jint*);
- static jint atomic_cmpxchg_bootstrap (jint, volatile jint*, jint);
- static jlong atomic_cmpxchg_long_bootstrap(jlong, volatile jlong*, jlong);
- static jint atomic_add_bootstrap (jint, volatile jint*);
+ static int32_t atomic_xchg_bootstrap (int32_t, volatile int32_t*);
+ static int32_t atomic_cmpxchg_bootstrap (int32_t, volatile int32_t*, int32_t);
+ static int64_t atomic_cmpxchg_long_bootstrap(int64_t, volatile int64_t*, int64_t);
+ static int32_t atomic_add_bootstrap (int32_t, volatile int32_t*);
static void setup_fpu() {}
--- a/src/hotspot/os_cpu/solaris_x86/atomic_solaris_x86.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/solaris_x86/atomic_solaris_x86.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -28,16 +28,16 @@
// For Sun Studio - implementation is in solaris_x86_64.il.
extern "C" {
- jint _Atomic_add(jint add_value, volatile jint* dest);
- jlong _Atomic_add_long(jlong add_value, volatile jlong* dest);
+ int32_t _Atomic_add(int32_t add_value, volatile int32_t* dest);
+ int64_t _Atomic_add_long(int64_t add_value, volatile int64_t* dest);
- jint _Atomic_xchg(jint exchange_value, volatile jint* dest);
- jbyte _Atomic_cmpxchg_byte(jbyte exchange_value, volatile jbyte* dest,
- jbyte compare_value);
- jint _Atomic_cmpxchg(jint exchange_value, volatile jint* dest,
- jint compare_value);
- jlong _Atomic_cmpxchg_long(jlong exchange_value, volatile jlong* dest,
- jlong compare_value);
+ int32_t _Atomic_xchg(int32_t exchange_value, volatile int32_t* dest);
+ int8_t _Atomic_cmpxchg_byte(int8_t exchange_value, volatile int8_t* dest,
+ int8_t compare_value);
+ int32_t _Atomic_cmpxchg(int32_t exchange_value, volatile int32_t* dest,
+ int32_t compare_value);
+ int64_t _Atomic_cmpxchg_long(int64_t exchange_value, volatile int64_t* dest,
+ int64_t compare_value);
}
template<size_t byte_size>
@@ -55,8 +55,8 @@
STATIC_ASSERT(4 == sizeof(I));
STATIC_ASSERT(4 == sizeof(D));
return PrimitiveConversions::cast<D>(
- _Atomic_add(PrimitiveConversions::cast<jint>(add_value),
- reinterpret_cast<jint volatile*>(dest)));
+ _Atomic_add(PrimitiveConversions::cast<int32_t>(add_value),
+ reinterpret_cast<int32_t volatile*>(dest)));
}
// Not using add_using_helper; see comment for cmpxchg.
@@ -66,8 +66,8 @@
STATIC_ASSERT(8 == sizeof(I));
STATIC_ASSERT(8 == sizeof(D));
return PrimitiveConversions::cast<D>(
- _Atomic_add_long(PrimitiveConversions::cast<jlong>(add_value),
- reinterpret_cast<jlong volatile*>(dest)));
+ _Atomic_add_long(PrimitiveConversions::cast<int64_t>(add_value),
+ reinterpret_cast<int64_t volatile*>(dest)));
}
template<>
@@ -76,11 +76,11 @@
T volatile* dest) const {
STATIC_ASSERT(4 == sizeof(T));
return PrimitiveConversions::cast<T>(
- _Atomic_xchg(PrimitiveConversions::cast<jint>(exchange_value),
- reinterpret_cast<jint volatile*>(dest)));
+ _Atomic_xchg(PrimitiveConversions::cast<int32_t>(exchange_value),
+ reinterpret_cast<int32_t volatile*>(dest)));
}
-extern "C" jlong _Atomic_xchg_long(jlong exchange_value, volatile jlong* dest);
+extern "C" int64_t _Atomic_xchg_long(int64_t exchange_value, volatile int64_t* dest);
template<>
template<typename T>
@@ -88,8 +88,8 @@
T volatile* dest) const {
STATIC_ASSERT(8 == sizeof(T));
return PrimitiveConversions::cast<T>(
- _Atomic_xchg_long(PrimitiveConversions::cast<jlong>(exchange_value),
- reinterpret_cast<jlong volatile*>(dest)));
+ _Atomic_xchg_long(PrimitiveConversions::cast<int64_t>(exchange_value),
+ reinterpret_cast<int64_t volatile*>(dest)));
}
// Not using cmpxchg_using_helper here, because some configurations of
@@ -106,9 +106,9 @@
cmpxchg_memory_order order) const {
STATIC_ASSERT(1 == sizeof(T));
return PrimitiveConversions::cast<T>(
- _Atomic_cmpxchg_byte(PrimitiveConversions::cast<jbyte>(exchange_value),
- reinterpret_cast<jbyte volatile*>(dest),
- PrimitiveConversions::cast<jbyte>(compare_value)));
+ _Atomic_cmpxchg_byte(PrimitiveConversions::cast<int8_t>(exchange_value),
+ reinterpret_cast<int8_t volatile*>(dest),
+ PrimitiveConversions::cast<int8_t>(compare_value)));
}
template<>
@@ -119,9 +119,9 @@
cmpxchg_memory_order order) const {
STATIC_ASSERT(4 == sizeof(T));
return PrimitiveConversions::cast<T>(
- _Atomic_cmpxchg(PrimitiveConversions::cast<jint>(exchange_value),
- reinterpret_cast<jint volatile*>(dest),
- PrimitiveConversions::cast<jint>(compare_value)));
+ _Atomic_cmpxchg(PrimitiveConversions::cast<int32_t>(exchange_value),
+ reinterpret_cast<int32_t volatile*>(dest),
+ PrimitiveConversions::cast<int32_t>(compare_value)));
}
template<>
@@ -132,9 +132,9 @@
cmpxchg_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
return PrimitiveConversions::cast<T>(
- _Atomic_cmpxchg_long(PrimitiveConversions::cast<jlong>(exchange_value),
- reinterpret_cast<jlong volatile*>(dest),
- PrimitiveConversions::cast<jlong>(compare_value)));
+ _Atomic_cmpxchg_long(PrimitiveConversions::cast<int64_t>(exchange_value),
+ reinterpret_cast<int64_t volatile*>(dest),
+ PrimitiveConversions::cast<int64_t>(compare_value)));
}
#endif // OS_CPU_SOLARIS_X86_VM_ATOMIC_SOLARIS_X86_HPP
--- a/src/hotspot/os_cpu/solaris_x86/os_solaris_x86.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/solaris_x86/os_solaris_x86.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -904,12 +904,12 @@
// until initialization is complete.
// TODO - replace with .il implementation when compiler supports it.
-typedef jint xchg_func_t (jint, volatile jint*);
-typedef jint cmpxchg_func_t (jint, volatile jint*, jint);
-typedef jlong cmpxchg_long_func_t(jlong, volatile jlong*, jlong);
-typedef jint add_func_t (jint, volatile jint*);
+typedef int32_t xchg_func_t (int32_t, volatile int32_t*);
+typedef int32_t cmpxchg_func_t (int32_t, volatile int32_t*, int32_t);
+typedef int64_t cmpxchg_long_func_t(int64_t, volatile int64_t*, int64_t);
+typedef int32_t add_func_t (int32_t, volatile int32_t*);
-jint os::atomic_xchg_bootstrap(jint exchange_value, volatile jint* dest) {
+int32_t os::atomic_xchg_bootstrap(int32_t exchange_value, volatile int32_t* dest) {
// try to use the stub:
xchg_func_t* func = CAST_TO_FN_PTR(xchg_func_t*, StubRoutines::atomic_xchg_entry());
@@ -919,12 +919,12 @@
}
assert(Threads::number_of_threads() == 0, "for bootstrap only");
- jint old_value = *dest;
+ int32_t old_value = *dest;
*dest = exchange_value;
return old_value;
}
-jint os::atomic_cmpxchg_bootstrap(jint exchange_value, volatile jint* dest, jint compare_value) {
+int32_t os::atomic_cmpxchg_bootstrap(int32_t exchange_value, volatile int32_t* dest, int32_t compare_value) {
// try to use the stub:
cmpxchg_func_t* func = CAST_TO_FN_PTR(cmpxchg_func_t*, StubRoutines::atomic_cmpxchg_entry());
@@ -934,13 +934,13 @@
}
assert(Threads::number_of_threads() == 0, "for bootstrap only");
- jint old_value = *dest;
+ int32_t old_value = *dest;
if (old_value == compare_value)
*dest = exchange_value;
return old_value;
}
-jlong os::atomic_cmpxchg_long_bootstrap(jlong exchange_value, volatile jlong* dest, jlong compare_value) {
+int64_t os::atomic_cmpxchg_long_bootstrap(int64_t exchange_value, volatile int64_t* dest, int64_t compare_value) {
// try to use the stub:
cmpxchg_long_func_t* func = CAST_TO_FN_PTR(cmpxchg_long_func_t*, StubRoutines::atomic_cmpxchg_long_entry());
@@ -950,13 +950,13 @@
}
assert(Threads::number_of_threads() == 0, "for bootstrap only");
- jlong old_value = *dest;
+ int64_t old_value = *dest;
if (old_value == compare_value)
*dest = exchange_value;
return old_value;
}
-jint os::atomic_add_bootstrap(jint add_value, volatile jint* dest) {
+int32_t os::atomic_add_bootstrap(int32_t add_value, volatile int32_t* dest) {
// try to use the stub:
add_func_t* func = CAST_TO_FN_PTR(add_func_t*, StubRoutines::atomic_add_entry());
--- a/src/hotspot/os_cpu/solaris_x86/os_solaris_x86.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/solaris_x86/os_solaris_x86.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -31,15 +31,15 @@
#ifdef AMD64
static void setup_fpu() {}
#else
- static jint (*atomic_xchg_func) (jint, volatile jint*);
- static jint (*atomic_cmpxchg_func) (jint, volatile jint*, jint);
- static jlong (*atomic_cmpxchg_long_func)(jlong, volatile jlong*, jlong);
- static jint (*atomic_add_func) (jint, volatile jint*);
+ static int32_t (*atomic_xchg_func) (int32_t, volatile int32_t*);
+ static int32_t (*atomic_cmpxchg_func) (int32_t, volatile int32_t*, int32_t);
+ static int64_t (*atomic_cmpxchg_long_func)(int64_t, volatile int64_t*, int64_t);
+ static int32_t (*atomic_add_func) (int32_t, volatile int32_t*);
- static jint atomic_xchg_bootstrap (jint, volatile jint*);
- static jint atomic_cmpxchg_bootstrap (jint, volatile jint*, jint);
- static jlong atomic_cmpxchg_long_bootstrap(jlong, volatile jlong*, jlong);
- static jint atomic_add_bootstrap (jint, volatile jint*);
+ static int32_t atomic_xchg_bootstrap (int32_t, volatile int32_t*);
+ static int32_t atomic_cmpxchg_bootstrap (int32_t, volatile int32_t*, int32_t);
+ static int64_t atomic_cmpxchg_long_bootstrap(int64_t, volatile int64_t*, int64_t);
+ static int32_t atomic_add_bootstrap (int32_t, volatile int32_t*);
static void setup_fpu();
#endif // AMD64
--- a/src/hotspot/os_cpu/windows_x86/atomic_windows_x86.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/windows_x86/atomic_windows_x86.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -54,13 +54,13 @@
template<>
template<typename I, typename D>
inline D Atomic::PlatformAdd<4>::add_and_fetch(I add_value, D volatile* dest) const {
- return add_using_helper<jint>(os::atomic_add_func, add_value, dest);
+ return add_using_helper<int32_t>(os::atomic_add_func, add_value, dest);
}
template<>
template<typename I, typename D>
inline D Atomic::PlatformAdd<8>::add_and_fetch(I add_value, D volatile* dest) const {
- return add_using_helper<intptr_t>(os::atomic_add_ptr_func, add_value, dest);
+ return add_using_helper<int64_t>(os::atomic_add_long_func, add_value, dest);
}
#define DEFINE_STUB_XCHG(ByteSize, StubType, StubName) \
@@ -72,8 +72,8 @@
return xchg_using_helper<StubType>(StubName, exchange_value, dest); \
}
-DEFINE_STUB_XCHG(4, jint, os::atomic_xchg_func)
-DEFINE_STUB_XCHG(8, jlong, os::atomic_xchg_long_func)
+DEFINE_STUB_XCHG(4, int32_t, os::atomic_xchg_func)
+DEFINE_STUB_XCHG(8, int64_t, os::atomic_xchg_long_func)
#undef DEFINE_STUB_XCHG
@@ -88,9 +88,9 @@
return cmpxchg_using_helper<StubType>(StubName, exchange_value, dest, compare_value); \
}
-DEFINE_STUB_CMPXCHG(1, jbyte, os::atomic_cmpxchg_byte_func)
-DEFINE_STUB_CMPXCHG(4, jint, os::atomic_cmpxchg_func)
-DEFINE_STUB_CMPXCHG(8, jlong, os::atomic_cmpxchg_long_func)
+DEFINE_STUB_CMPXCHG(1, int8_t, os::atomic_cmpxchg_byte_func)
+DEFINE_STUB_CMPXCHG(4, int32_t, os::atomic_cmpxchg_func)
+DEFINE_STUB_CMPXCHG(8, int64_t, os::atomic_cmpxchg_long_func)
#undef DEFINE_STUB_CMPXCHG
@@ -162,10 +162,10 @@
T compare_value,
cmpxchg_memory_order order) const {
STATIC_ASSERT(8 == sizeof(T));
- jint ex_lo = (jint)exchange_value;
- jint ex_hi = *( ((jint*)&exchange_value) + 1 );
- jint cmp_lo = (jint)compare_value;
- jint cmp_hi = *( ((jint*)&compare_value) + 1 );
+ int32_t ex_lo = (int32_t)exchange_value;
+ int32_t ex_hi = *( ((int32_t*)&exchange_value) + 1 );
+ int32_t cmp_lo = (int32_t)compare_value;
+ int32_t cmp_hi = *( ((int32_t*)&compare_value) + 1 );
__asm {
push ebx
push edi
--- a/src/hotspot/os_cpu/windows_x86/os_windows_x86.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/windows_x86/os_windows_x86.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -218,17 +218,17 @@
// Atomics and Stub Functions
-typedef jint xchg_func_t (jint, volatile jint*);
-typedef intptr_t xchg_long_func_t (jlong, volatile jlong*);
-typedef jint cmpxchg_func_t (jint, volatile jint*, jint);
-typedef jbyte cmpxchg_byte_func_t (jbyte, volatile jbyte*, jbyte);
-typedef jlong cmpxchg_long_func_t (jlong, volatile jlong*, jlong);
-typedef jint add_func_t (jint, volatile jint*);
-typedef intptr_t add_ptr_func_t (intptr_t, volatile intptr_t*);
+typedef int32_t xchg_func_t (int32_t, volatile int32_t*);
+typedef int64_t xchg_long_func_t (int64_t, volatile int64_t*);
+typedef int32_t cmpxchg_func_t (int32_t, volatile int32_t*, int32_t);
+typedef int8_t cmpxchg_byte_func_t (int8_t, volatile int8_t*, int8_t);
+typedef int64_t cmpxchg_long_func_t (int64_t, volatile int64_t*, int64_t);
+typedef int32_t add_func_t (int32_t, volatile int32_t*);
+typedef int64_t add_long_func_t (int64_t, volatile int64_t*);
#ifdef AMD64
-jint os::atomic_xchg_bootstrap(jint exchange_value, volatile jint* dest) {
+int32_t os::atomic_xchg_bootstrap(int32_t exchange_value, volatile int32_t* dest) {
// try to use the stub:
xchg_func_t* func = CAST_TO_FN_PTR(xchg_func_t*, StubRoutines::atomic_xchg_entry());
@@ -238,12 +238,12 @@
}
assert(Threads::number_of_threads() == 0, "for bootstrap only");
- jint old_value = *dest;
+ int32_t old_value = *dest;
*dest = exchange_value;
return old_value;
}
-intptr_t os::atomic_xchg_long_bootstrap(jlong exchange_value, volatile jlong* dest) {
+int64_t os::atomic_xchg_long_bootstrap(int64_t exchange_value, volatile int64_t* dest) {
// try to use the stub:
xchg_long_func_t* func = CAST_TO_FN_PTR(xchg_long_func_t*, StubRoutines::atomic_xchg_long_entry());
@@ -253,13 +253,13 @@
}
assert(Threads::number_of_threads() == 0, "for bootstrap only");
- intptr_t old_value = *dest;
+ int64_t old_value = *dest;
*dest = exchange_value;
return old_value;
}
-jint os::atomic_cmpxchg_bootstrap(jint exchange_value, volatile jint* dest, jint compare_value) {
+int32_t os::atomic_cmpxchg_bootstrap(int32_t exchange_value, volatile int32_t* dest, int32_t compare_value) {
// try to use the stub:
cmpxchg_func_t* func = CAST_TO_FN_PTR(cmpxchg_func_t*, StubRoutines::atomic_cmpxchg_entry());
@@ -269,13 +269,13 @@
}
assert(Threads::number_of_threads() == 0, "for bootstrap only");
- jint old_value = *dest;
+ int32_t old_value = *dest;
if (old_value == compare_value)
*dest = exchange_value;
return old_value;
}
-jbyte os::atomic_cmpxchg_byte_bootstrap(jbyte exchange_value, volatile jbyte* dest, jbyte compare_value) {
+int8_t os::atomic_cmpxchg_byte_bootstrap(int8_t exchange_value, volatile int8_t* dest, int8_t compare_value) {
// try to use the stub:
cmpxchg_byte_func_t* func = CAST_TO_FN_PTR(cmpxchg_byte_func_t*, StubRoutines::atomic_cmpxchg_byte_entry());
@@ -285,7 +285,7 @@
}
assert(Threads::number_of_threads() == 0, "for bootstrap only");
- jbyte old_value = *dest;
+ int8_t old_value = *dest;
if (old_value == compare_value)
*dest = exchange_value;
return old_value;
@@ -293,7 +293,7 @@
#endif // AMD64
-jlong os::atomic_cmpxchg_long_bootstrap(jlong exchange_value, volatile jlong* dest, jlong compare_value) {
+int64_t os::atomic_cmpxchg_long_bootstrap(int64_t exchange_value, volatile int64_t* dest, int64_t compare_value) {
// try to use the stub:
cmpxchg_long_func_t* func = CAST_TO_FN_PTR(cmpxchg_long_func_t*, StubRoutines::atomic_cmpxchg_long_entry());
@@ -303,7 +303,7 @@
}
assert(Threads::number_of_threads() == 0, "for bootstrap only");
- jlong old_value = *dest;
+ int64_t old_value = *dest;
if (old_value == compare_value)
*dest = exchange_value;
return old_value;
@@ -311,7 +311,7 @@
#ifdef AMD64
-jint os::atomic_add_bootstrap(jint add_value, volatile jint* dest) {
+int32_t os::atomic_add_bootstrap(int32_t add_value, volatile int32_t* dest) {
// try to use the stub:
add_func_t* func = CAST_TO_FN_PTR(add_func_t*, StubRoutines::atomic_add_entry());
@@ -324,12 +324,12 @@
return (*dest) += add_value;
}
-intptr_t os::atomic_add_ptr_bootstrap(intptr_t add_value, volatile intptr_t* dest) {
+int64_t os::atomic_add_long_bootstrap(int64_t add_value, volatile int64_t* dest) {
// try to use the stub:
- add_ptr_func_t* func = CAST_TO_FN_PTR(add_ptr_func_t*, StubRoutines::atomic_add_ptr_entry());
+ add_long_func_t* func = CAST_TO_FN_PTR(add_long_func_t*, StubRoutines::atomic_add_long_entry());
if (func != NULL) {
- os::atomic_add_ptr_func = func;
+ os::atomic_add_long_func = func;
return (*func)(add_value, dest);
}
assert(Threads::number_of_threads() == 0, "for bootstrap only");
@@ -342,7 +342,7 @@
cmpxchg_func_t* os::atomic_cmpxchg_func = os::atomic_cmpxchg_bootstrap;
cmpxchg_byte_func_t* os::atomic_cmpxchg_byte_func = os::atomic_cmpxchg_byte_bootstrap;
add_func_t* os::atomic_add_func = os::atomic_add_bootstrap;
-add_ptr_func_t* os::atomic_add_ptr_func = os::atomic_add_ptr_bootstrap;
+add_long_func_t* os::atomic_add_long_func = os::atomic_add_long_bootstrap;
#endif // AMD64
--- a/src/hotspot/os_cpu/windows_x86/os_windows_x86.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/os_cpu/windows_x86/os_windows_x86.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -29,32 +29,32 @@
// NOTE: we are back in class os here, not win32
//
#ifdef AMD64
- static jint (*atomic_xchg_func) (jint, volatile jint*);
- static intptr_t (*atomic_xchg_long_func) (jlong, volatile jlong*);
+ static int32_t (*atomic_xchg_func) (int32_t, volatile int32_t*);
+ static int64_t (*atomic_xchg_long_func) (int64_t, volatile int64_t*);
- static jint (*atomic_cmpxchg_func) (jint, volatile jint*, jint);
- static jbyte (*atomic_cmpxchg_byte_func) (jbyte, volatile jbyte*, jbyte);
- static jlong (*atomic_cmpxchg_long_func) (jlong, volatile jlong*, jlong);
+ static int32_t (*atomic_cmpxchg_func) (int32_t, volatile int32_t*, int32_t);
+ static int8_t (*atomic_cmpxchg_byte_func) (int8_t, volatile int8_t*, int8_t);
+ static int64_t (*atomic_cmpxchg_long_func) (int64_t, volatile int64_t*, int64_t);
- static jint (*atomic_add_func) (jint, volatile jint*);
- static intptr_t (*atomic_add_ptr_func) (intptr_t, volatile intptr_t*);
+ static int32_t (*atomic_add_func) (int32_t, volatile int32_t*);
+ static int64_t (*atomic_add_long_func) (int64_t, volatile int64_t*);
- static jint atomic_xchg_bootstrap (jint, volatile jint*);
- static intptr_t atomic_xchg_long_bootstrap (jlong, volatile jlong*);
+ static int32_t atomic_xchg_bootstrap (int32_t, volatile int32_t*);
+ static int64_t atomic_xchg_long_bootstrap (int64_t, volatile int64_t*);
- static jint atomic_cmpxchg_bootstrap (jint, volatile jint*, jint);
- static jbyte atomic_cmpxchg_byte_bootstrap(jbyte, volatile jbyte*, jbyte);
+ static int32_t atomic_cmpxchg_bootstrap (int32_t, volatile int32_t*, int32_t);
+ static int8_t atomic_cmpxchg_byte_bootstrap(int8_t, volatile int8_t*, int8_t);
#else
- static jlong (*atomic_cmpxchg_long_func) (jlong, volatile jlong*, jlong);
+ static int64_t (*atomic_cmpxchg_long_func) (int64_t, volatile int64_t*, int64_t);
#endif // AMD64
- static jlong atomic_cmpxchg_long_bootstrap(jlong, volatile jlong*, jlong);
+ static int64_t atomic_cmpxchg_long_bootstrap(int64_t, volatile int64_t*, int64_t);
#ifdef AMD64
- static jint atomic_add_bootstrap (jint, volatile jint*);
- static intptr_t atomic_add_ptr_bootstrap (intptr_t, volatile intptr_t*);
+ static int32_t atomic_add_bootstrap (int32_t, volatile int32_t*);
+ static int64_t atomic_add_long_bootstrap (int64_t, volatile int64_t*);
#endif // AMD64
static void setup_fpu();
--- a/src/hotspot/share/ci/ciEnv.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/ci/ciEnv.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -1164,28 +1164,30 @@
void ciEnv::dump_compile_data(outputStream* out) {
CompileTask* task = this->task();
- Method* method = task->method();
- int entry_bci = task->osr_bci();
- int comp_level = task->comp_level();
- out->print("compile %s %s %s %d %d",
- method->klass_name()->as_quoted_ascii(),
- method->name()->as_quoted_ascii(),
- method->signature()->as_quoted_ascii(),
- entry_bci, comp_level);
- if (compiler_data() != NULL) {
- if (is_c2_compile(comp_level)) {
+ if (task) {
+ Method* method = task->method();
+ int entry_bci = task->osr_bci();
+ int comp_level = task->comp_level();
+ out->print("compile %s %s %s %d %d",
+ method->klass_name()->as_quoted_ascii(),
+ method->name()->as_quoted_ascii(),
+ method->signature()->as_quoted_ascii(),
+ entry_bci, comp_level);
+ if (compiler_data() != NULL) {
+ if (is_c2_compile(comp_level)) {
#ifdef COMPILER2
- // Dump C2 inlining data.
- ((Compile*)compiler_data())->dump_inline_data(out);
+ // Dump C2 inlining data.
+ ((Compile*)compiler_data())->dump_inline_data(out);
#endif
- } else if (is_c1_compile(comp_level)) {
+ } else if (is_c1_compile(comp_level)) {
#ifdef COMPILER1
- // Dump C1 inlining data.
- ((Compilation*)compiler_data())->dump_inline_data(out);
+ // Dump C1 inlining data.
+ ((Compilation*)compiler_data())->dump_inline_data(out);
#endif
+ }
}
+ out->cr();
}
- out->cr();
}
void ciEnv::dump_replay_data_unsafe(outputStream* out) {
--- a/src/hotspot/share/classfile/classLoader.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/classfile/classLoader.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -802,6 +802,14 @@
int end = 0;
bool set_base_piece = true;
+#if INCLUDE_CDS
+ if (DumpSharedSpaces) {
+ if (!Arguments::has_jimage()) {
+ vm_exit_during_initialization("CDS is not supported in exploded JDK build", NULL);
+ }
+ }
+#endif
+
// Iterate over class path entries
for (int start = 0; start < len; start = end) {
while (class_path[end] && class_path[end] != os::path_separator()[0]) {
--- a/src/hotspot/share/classfile/classLoaderData.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/classfile/classLoaderData.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -279,11 +279,6 @@
ClassLoaderData(Handle h_class_loader, bool is_anonymous, Dependencies dependencies);
~ClassLoaderData();
- // GC interface.
- void clear_claimed() { _claimed = 0; }
- bool claimed() const { return _claimed == 1; }
- bool claim();
-
// The CLD are not placed in the Heap, so the Card Table or
// the Mod Union Table can't be used to mark when CLD have modified oops.
// The CT and MUT bits saves this information for the whole class loader data.
@@ -315,6 +310,10 @@
Dictionary* create_dictionary();
public:
+ // GC interface.
+ void clear_claimed() { _claimed = 0; }
+ bool claimed() const { return _claimed == 1; }
+ bool claim();
bool is_alive(BoolObjectClosure* is_alive_closure) const;
--- a/src/hotspot/share/classfile/defaultMethods.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/classfile/defaultMethods.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -26,6 +26,7 @@
#include "classfile/bytecodeAssembler.hpp"
#include "classfile/defaultMethods.hpp"
#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
#include "logging/log.hpp"
#include "logging/logStream.hpp"
#include "memory/allocation.hpp"
@@ -683,10 +684,11 @@
Symbol* _method_name;
Symbol* _method_signature;
StatefulMethodFamily* _family;
+ bool _cur_class_is_interface;
public:
- FindMethodsByErasedSig(Symbol* name, Symbol* signature) :
- _method_name(name), _method_signature(signature),
+ FindMethodsByErasedSig(Symbol* name, Symbol* signature, bool is_interf) :
+ _method_name(name), _method_signature(signature), _cur_class_is_interface(is_interf),
_family(NULL) {}
void get_discovered_family(MethodFamily** family) {
@@ -709,14 +711,17 @@
InstanceKlass* iklass = current_class();
Method* m = iklass->find_method(_method_name, _method_signature);
- // private interface methods are not candidates for default methods
- // invokespecial to private interface methods doesn't use default method logic
- // private class methods are not candidates for default methods,
- // private methods do not override default methods, so need to perform
- // default method inheritance without including private methods
- // The overpasses are your supertypes' errors, we do not include them
- // future: take access controls into account for superclass methods
- if (m != NULL && !m->is_static() && !m->is_overpass() && !m->is_private()) {
+ // Private interface methods are not candidates for default methods.
+ // invokespecial to private interface methods doesn't use default method logic.
+ // Private class methods are not candidates for default methods.
+ // Private methods do not override default methods, so need to perform
+ // default method inheritance without including private methods.
+ // The overpasses are your supertypes' errors, we do not include them.
+ // Non-public methods in java.lang.Object are not candidates for default
+ // methods.
+ // Future: take access controls into account for superclass methods
+ if (m != NULL && !m->is_static() && !m->is_overpass() && !m->is_private() &&
+ (!_cur_class_is_interface || !SystemDictionary::is_nonpublic_Object_method(m))) {
if (_family == NULL) {
_family = new StatefulMethodFamily();
}
@@ -726,8 +731,8 @@
scope->add_mark(restorer);
} else {
// This is the rule that methods in classes "win" (bad word) over
- // methods in interfaces. This works because of single inheritance
- // private methods in classes do not "win", they will be found
+ // methods in interfaces. This works because of single inheritance.
+ // Private methods in classes do not "win", they will be found
// first on searching, but overriding for invokevirtual needs
// to find default method candidates for the same signature
_family->set_target_if_empty(m);
@@ -745,10 +750,10 @@
static void generate_erased_defaults(
InstanceKlass* klass, GrowableArray<EmptyVtableSlot*>* empty_slots,
- EmptyVtableSlot* slot, TRAPS) {
+ EmptyVtableSlot* slot, bool is_intf, TRAPS) {
// sets up a set of methods with the same exact erased signature
- FindMethodsByErasedSig visitor(slot->name(), slot->signature());
+ FindMethodsByErasedSig visitor(slot->name(), slot->signature(), is_intf);
visitor.run(klass);
MethodFamily* family;
@@ -817,7 +822,7 @@
slot->print_on(&ls);
ls.cr();
}
- generate_erased_defaults(klass, empty_slots, slot, CHECK);
+ generate_erased_defaults(klass, empty_slots, slot, klass->is_interface(), CHECK);
}
log_debug(defaultmethods)("Creating defaults and overpasses...");
create_defaults_and_exceptions(empty_slots, klass, CHECK);
--- a/src/hotspot/share/classfile/systemDictionary.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/classfile/systemDictionary.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -2734,43 +2734,58 @@
return method_type;
}
+Handle SystemDictionary::find_field_handle_type(Symbol* signature,
+ Klass* accessing_klass,
+ TRAPS) {
+ Handle empty;
+ ResourceMark rm(THREAD);
+ SignatureStream ss(signature, /*is_method=*/ false);
+ if (!ss.is_done()) {
+ Handle class_loader, protection_domain;
+ if (accessing_klass != NULL) {
+ class_loader = Handle(THREAD, accessing_klass->class_loader());
+ protection_domain = Handle(THREAD, accessing_klass->protection_domain());
+ }
+ oop mirror = ss.as_java_mirror(class_loader, protection_domain, SignatureStream::NCDFError, CHECK_(empty));
+ ss.next();
+ if (ss.is_done()) {
+ return Handle(THREAD, mirror);
+ }
+ }
+ return empty;
+}
+
// Ask Java code to find or construct a method handle constant.
Handle SystemDictionary::link_method_handle_constant(Klass* caller,
int ref_kind, //e.g., JVM_REF_invokeVirtual
Klass* callee,
- Symbol* name_sym,
+ Symbol* name,
Symbol* signature,
TRAPS) {
Handle empty;
- Handle name = java_lang_String::create_from_symbol(name_sym, CHECK_(empty));
- Handle type;
- if (signature->utf8_length() > 0 && signature->byte_at(0) == '(') {
- type = find_method_handle_type(signature, caller, CHECK_(empty));
- } else if (caller == NULL) {
- // This should not happen. JDK code should take care of that.
+ if (caller == NULL) {
THROW_MSG_(vmSymbols::java_lang_InternalError(), "bad MH constant", empty);
- } else {
- ResourceMark rm(THREAD);
- SignatureStream ss(signature, false);
- if (!ss.is_done()) {
- oop mirror = ss.as_java_mirror(Handle(THREAD, caller->class_loader()),
- Handle(THREAD, caller->protection_domain()),
- SignatureStream::NCDFError, CHECK_(empty));
- type = Handle(THREAD, mirror);
- ss.next();
- if (!ss.is_done()) type = Handle(); // error!
- }
}
- if (type.is_null()) {
- THROW_MSG_(vmSymbols::java_lang_LinkageError(), "bad signature", empty);
- }
+ Handle name_str = java_lang_String::create_from_symbol(name, CHECK_(empty));
+ Handle signature_str = java_lang_String::create_from_symbol(signature, CHECK_(empty));
+
+ // Put symbolic info from the MH constant into freshly created MemberName and resolve it.
+ Handle mname = MemberName_klass()->allocate_instance_handle(CHECK_(empty));
+ java_lang_invoke_MemberName::set_clazz(mname(), callee->java_mirror());
+ java_lang_invoke_MemberName::set_name (mname(), name_str());
+ java_lang_invoke_MemberName::set_type (mname(), signature_str());
+ java_lang_invoke_MemberName::set_flags(mname(), MethodHandles::ref_kind_to_flags(ref_kind));
+ MethodHandles::resolve_MemberName(mname, caller, CHECK_(empty));
+
+ // After method/field resolution succeeded, it's safe to resolve MH signature as well.
+ Handle type = MethodHandles::resolve_MemberName_type(mname, caller, CHECK_(empty));
// call java.lang.invoke.MethodHandleNatives::linkMethodHandleConstant(Class caller, int refKind, Class callee, String name, Object type) -> MethodHandle
JavaCallArguments args;
args.push_oop(Handle(THREAD, caller->java_mirror())); // the referring class
args.push_int(ref_kind);
args.push_oop(Handle(THREAD, callee->java_mirror())); // the target class
- args.push_oop(name);
+ args.push_oop(name_str);
args.push_oop(type);
JavaValue result(T_OBJECT);
JavaCalls::call_static(&result,
--- a/src/hotspot/share/classfile/systemDictionary.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/classfile/systemDictionary.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -532,6 +532,11 @@
Klass* accessing_klass,
TRAPS);
+ // find a java.lang.Class object for a given signature
+ static Handle find_field_handle_type(Symbol* signature,
+ Klass* accessing_klass,
+ TRAPS);
+
// ask Java to compute a java.lang.invoke.MethodHandle object for a given CP entry
static Handle link_method_handle_constant(Klass* caller,
int ref_kind, //e.g., JVM_REF_invokeVirtual
@@ -649,6 +654,12 @@
static bool is_platform_class_loader(oop class_loader);
static void clear_invoke_method_table();
+ // Returns TRUE if the method is a non-public member of class java.lang.Object.
+ static bool is_nonpublic_Object_method(Method* m) {
+ assert(m != NULL, "Unexpected NULL Method*");
+ return !m->is_public() && m->method_holder() == SystemDictionary::Object_klass();
+ }
+
protected:
static InstanceKlass* find_shared_class(Symbol* class_name);
--- a/src/hotspot/share/code/compiledIC.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/code/compiledIC.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -344,6 +344,7 @@
// Code
static address emit_to_interp_stub(CodeBuffer &cbuf, address mark = NULL);
static int to_interp_stub_size();
+ static int to_trampoline_stub_size();
static int reloc_to_interp_stub();
static void emit_to_aot_stub(CodeBuffer &cbuf, address mark = NULL);
static int to_aot_stub_size();
--- a/src/hotspot/share/code/nmethod.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/code/nmethod.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1485,16 +1485,18 @@
bool nmethod::do_unloading_oops(address low_boundary, BoolObjectClosure* is_alive, bool unloading_occurred) {
// Compiled code
- {
- RelocIterator iter(this, low_boundary);
- while (iter.next()) {
- if (iter.type() == relocInfo::oop_type) {
- if (unload_if_dead_at(&iter, is_alive, unloading_occurred)) {
- return true;
+
+ // Prevent extra code cache walk for platforms that don't have immediate oops.
+ if (relocInfo::mustIterateImmediateOopsInCode()) {
+ RelocIterator iter(this, low_boundary);
+ while (iter.next()) {
+ if (iter.type() == relocInfo::oop_type) {
+ if (unload_if_dead_at(&iter, is_alive, unloading_occurred)) {
+ return true;
+ }
}
}
}
- }
return do_unloading_scopes(is_alive, unloading_occurred);
}
@@ -1584,18 +1586,21 @@
// (See comment above.)
}
- RelocIterator iter(this, low_boundary);
+ // Prevent extra code cache walk for platforms that don't have immediate oops.
+ if (relocInfo::mustIterateImmediateOopsInCode()) {
+ RelocIterator iter(this, low_boundary);
- while (iter.next()) {
- if (iter.type() == relocInfo::oop_type ) {
- oop_Relocation* r = iter.oop_reloc();
- // In this loop, we must only follow those oops directly embedded in
- // the code. Other oops (oop_index>0) are seen as part of scopes_oops.
- assert(1 == (r->oop_is_immediate()) +
- (r->oop_addr() >= oops_begin() && r->oop_addr() < oops_end()),
- "oop must be found in exactly one place");
- if (r->oop_is_immediate() && r->oop_value() != NULL) {
- f->do_oop(r->oop_addr());
+ while (iter.next()) {
+ if (iter.type() == relocInfo::oop_type ) {
+ oop_Relocation* r = iter.oop_reloc();
+ // In this loop, we must only follow those oops directly embedded in
+ // the code. Other oops (oop_index>0) are seen as part of scopes_oops.
+ assert(1 == (r->oop_is_immediate()) +
+ (r->oop_addr() >= oops_begin() && r->oop_addr() < oops_end()),
+ "oop must be found in exactly one place");
+ if (r->oop_is_immediate() && r->oop_value() != NULL) {
+ f->do_oop(r->oop_addr());
+ }
}
}
}
@@ -1620,7 +1625,7 @@
assert(nmethod::oops_do_marking_is_active(), "oops_do_marking_prologue must be called");
if (_oops_do_mark_link == NULL) {
// Claim this nmethod for this thread to mark.
- if (Atomic::cmpxchg(NMETHOD_SENTINEL, &_oops_do_mark_link, (nmethod*)NULL) == NULL) {
+ if (Atomic::replace_if_null(NMETHOD_SENTINEL, &_oops_do_mark_link)) {
// Atomically append this nmethod (now claimed) to the head of the list:
nmethod* observed_mark_nmethods = _oops_do_mark_nmethods;
for (;;) {
--- a/src/hotspot/share/code/relocInfo.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/code/relocInfo.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -910,6 +910,10 @@
}
// an oop in the instruction stream
static RelocationHolder spec_for_immediate() {
+ // If no immediate oops are generated, we can skip some walks over nmethods.
+ // Assert that they don't get generated accidently!
+ assert(relocInfo::mustIterateImmediateOopsInCode(),
+ "Must return true so we will search for oops as roots etc. in the code.");
const int oop_index = 0;
const int offset = 0; // if you want an offset, use the oop pool
RelocationHolder rh = newHolder();
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -4786,7 +4786,7 @@
timer->record_time_secs(G1GCPhaseTimes::YoungFreeCSet, worker_id, young_time);
}
if (has_non_young_time) {
- timer->record_time_secs(G1GCPhaseTimes::NonYoungFreeCSet, worker_id, young_time);
+ timer->record_time_secs(G1GCPhaseTimes::NonYoungFreeCSet, worker_id, non_young_time);
}
}
};
--- a/src/hotspot/share/gc/parallel/gcTaskThread.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/gc/parallel/gcTaskThread.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -77,7 +77,7 @@
if (_time_stamps == NULL) {
// We allocate the _time_stamps array lazily since logging can be enabled dynamically
GCTaskTimeStamp* time_stamps = NEW_C_HEAP_ARRAY(GCTaskTimeStamp, GCTaskTimeStampEntries, mtGC);
- if (Atomic::cmpxchg(time_stamps, &_time_stamps, (GCTaskTimeStamp*)NULL) != NULL) {
+ if (!Atomic::replace_if_null(time_stamps, &_time_stamps)) {
// Someone already setup the time stamps
FREE_C_HEAP_ARRAY(GCTaskTimeStamp, time_stamps);
}
--- a/src/hotspot/share/include/jvm.h Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/include/jvm.h Wed Jan 17 12:19:06 2018 +0000
@@ -317,23 +317,18 @@
JNIEXPORT jobject JNICALL
JVM_NewMultiArray(JNIEnv *env, jclass eltClass, jintArray dim);
-/*
- * java.lang.Class and java.lang.ClassLoader
- */
-
-#define JVM_CALLER_DEPTH -1
/*
* Returns the immediate caller class of the native method invoking
* JVM_GetCallerClass. The Method.invoke and other frames due to
* reflection machinery are skipped.
*
- * The depth parameter must be -1 (JVM_DEPTH). The caller is expected
- * to be marked with sun.reflect.CallerSensitive. The JVM will throw
- * an error if it is not marked propertly.
+ * The caller is expected to be marked with
+ * jdk.internal.reflect.CallerSensitive. The JVM will throw an
+ * error if it is not marked properly.
*/
JNIEXPORT jclass JNICALL
-JVM_GetCallerClass(JNIEnv *env, int depth);
+JVM_GetCallerClass(JNIEnv *env);
/*
--- a/src/hotspot/share/jvmci/jvmciCodeInstaller.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/jvmci/jvmciCodeInstaller.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -600,6 +600,9 @@
if (!compiled_code->is_a(HotSpotCompiledNmethod::klass())) {
oop stubName = HotSpotCompiledCode::name(compiled_code_obj);
+ if (oopDesc::is_null(stubName)) {
+ JVMCI_ERROR_OK("stub should have a name");
+ }
char* name = strdup(java_lang_String::as_utf8_string(stubName));
cb = RuntimeStub::new_runtime_stub(name,
&buffer,
@@ -696,6 +699,7 @@
// Estimate the number of static and aot call stubs that might be emitted.
int static_call_stubs = 0;
int aot_call_stubs = 0;
+ int trampoline_stubs = 0;
objArrayOop sites = this->sites();
for (int i = 0; i < sites->length(); i++) {
oop site = sites->obj_at(i);
@@ -707,8 +711,18 @@
JVMCI_ERROR_0("expected Integer id, got %s", id_obj->klass()->signature_name());
}
jint id = id_obj->int_field(java_lang_boxing_object::value_offset_in_bytes(T_INT));
- if (id == INVOKESTATIC || id == INVOKESPECIAL) {
+ switch (id) {
+ case INVOKEINTERFACE:
+ case INVOKEVIRTUAL:
+ trampoline_stubs++;
+ break;
+ case INVOKESTATIC:
+ case INVOKESPECIAL:
static_call_stubs++;
+ trampoline_stubs++;
+ break;
+ default:
+ break;
}
}
}
@@ -723,6 +737,7 @@
}
}
int size = static_call_stubs * CompiledStaticCall::to_interp_stub_size();
+ size += trampoline_stubs * CompiledStaticCall::to_trampoline_stub_size();
#if INCLUDE_AOT
size += aot_call_stubs * CompiledStaticCall::to_aot_stub_size();
#endif
@@ -1168,7 +1183,7 @@
}
TRACE_jvmci_3("method call");
- CodeInstaller::pd_relocate_JavaMethod(hotspot_method, pc_offset, CHECK);
+ CodeInstaller::pd_relocate_JavaMethod(buffer, hotspot_method, pc_offset, CHECK);
if (_next_call_type == INVOKESTATIC || _next_call_type == INVOKESPECIAL) {
// Need a static call stub for transitions from compiled to interpreted.
CompiledStaticCall::emit_to_interp_stub(buffer, _instructions->start() + pc_offset);
@@ -1279,4 +1294,3 @@
}
}
}
-
--- a/src/hotspot/share/jvmci/jvmciCodeInstaller.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/jvmci/jvmciCodeInstaller.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -185,7 +185,7 @@
void pd_patch_MetaspaceConstant(int pc_offset, Handle constant, TRAPS);
void pd_patch_DataSectionReference(int pc_offset, int data_offset, TRAPS);
void pd_relocate_ForeignCall(NativeInstruction* inst, jlong foreign_call_destination, TRAPS);
- void pd_relocate_JavaMethod(Handle method, jint pc_offset, TRAPS);
+ void pd_relocate_JavaMethod(CodeBuffer &cbuf, Handle method, jint pc_offset, TRAPS);
void pd_relocate_poll(address pc, jint mark, TRAPS);
objArrayOop sites() { return (objArrayOop) JNIHandles::resolve(_sites_handle); }
--- a/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -749,8 +749,13 @@
C2V_END
C2V_VMENTRY(jobject, getImplementor, (JNIEnv *, jobject, jobject jvmci_type))
- InstanceKlass* klass = (InstanceKlass*) CompilerToVM::asKlass(jvmci_type);
- oop implementor = CompilerToVM::get_jvmci_type(klass->implementor(), CHECK_NULL);
+ Klass* klass = CompilerToVM::asKlass(jvmci_type);
+ if (!klass->is_interface()) {
+ THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
+ err_msg("Expected interface type, got %s", klass->external_name()));
+ }
+ InstanceKlass* iklass = InstanceKlass::cast(klass);
+ oop implementor = CompilerToVM::get_jvmci_type(iklass->implementor(), CHECK_NULL);
return JNIHandles::make_local(THREAD, implementor);
C2V_END
@@ -989,8 +994,12 @@
C2V_END
C2V_VMENTRY(jobject, getClassInitializer, (JNIEnv *, jobject, jobject jvmci_type))
- InstanceKlass* klass = (InstanceKlass*) CompilerToVM::asKlass(jvmci_type);
- oop result = CompilerToVM::get_jvmci_method(klass->class_initializer(), CHECK_NULL);
+ Klass* klass = CompilerToVM::asKlass(jvmci_type);
+ if (!klass->is_instance_klass()) {
+ return NULL;
+ }
+ InstanceKlass* iklass = InstanceKlass::cast(klass);
+ oop result = CompilerToVM::get_jvmci_method(iklass->class_initializer(), CHECK_NULL);
return JNIHandles::make_local(THREAD, result);
C2V_END
--- a/src/hotspot/share/memory/allocation.inline.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/memory/allocation.inline.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -163,7 +163,7 @@
return NULL;
}
- if (os::commit_memory(addr, size, !ExecMem, "Allocator (commit)")) {
+ if (os::commit_memory(addr, size, !ExecMem)) {
return (E*)addr;
} else {
os::release_memory(addr, size);
--- a/src/hotspot/share/oops/cpCache.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/oops/cpCache.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -177,6 +177,7 @@
// instruction somehow links to a non-interface method (in Object).
// In that case, the method has no itable index and must be invoked as a virtual.
// Set a flag to keep track of this corner case.
+ assert(method->is_public(), "Calling non-public method in Object with invokeinterface");
change_to_virtual = true;
// ...and fall through as if we were handling invokevirtual:
--- a/src/hotspot/share/oops/klassVtable.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/oops/klassVtable.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -86,13 +86,14 @@
GrowableArray<Method*> new_mirandas(20);
// compute the number of mirandas methods that must be added to the end
- get_mirandas(&new_mirandas, all_mirandas, super, methods, NULL, local_interfaces);
+ get_mirandas(&new_mirandas, all_mirandas, super, methods, NULL, local_interfaces,
+ class_flags.is_interface());
*num_new_mirandas = new_mirandas.length();
// Interfaces do not need interface methods in their vtables
// This includes miranda methods and during later processing, default methods
if (!class_flags.is_interface()) {
- vtable_length += *num_new_mirandas * vtableEntry::size();
+ vtable_length += *num_new_mirandas * vtableEntry::size();
}
if (Universe::is_bootstrapping() && vtable_length == 0) {
@@ -454,8 +455,13 @@
} else {
super_method = method_at(i);
}
- // Check if method name matches
- if (super_method->name() == name && super_method->signature() == signature) {
+ // Check if method name matches. Ignore match if klass is an interface and the
+ // matching method is a non-public java.lang.Object method. (See JVMS 5.4.3.4)
+ // This is safe because the method at this slot should never get invoked.
+ // (TBD: put in a method to throw NoSuchMethodError if this slot is ever used.)
+ if (super_method->name() == name && super_method->signature() == signature &&
+ (!_klass->is_interface() ||
+ !SystemDictionary::is_nonpublic_Object_method(super_method))) {
// get super_klass for method_holder for the found method
InstanceKlass* super_klass = super_method->method_holder();
@@ -713,7 +719,7 @@
if (mhk->is_interface()) {
assert(m->is_public(), "should be public");
assert(ik()->implements_interface(method_holder) , "this class should implement the interface");
- if (is_miranda(m, ik()->methods(), ik()->default_methods(), ik()->super())) {
+ if (is_miranda(m, ik()->methods(), ik()->default_methods(), ik()->super(), klass()->is_interface())) {
return true;
}
}
@@ -738,7 +744,10 @@
// During the first run, the current instanceKlass has not yet been
// created, the superclasses and superinterfaces do have instanceKlasses
// but may not have vtables, the default_methods list is empty, no overpasses.
-// This is seen by default method creation.
+// Default method generation uses the all_mirandas array as the starter set for
+// maximally-specific default method calculation. So, for both classes and
+// interfaces, it is necessary that the first pass will find all non-private
+// interface instance methods, whether or not they are concrete.
//
// Pass 2: recalculated during vtable initialization: only include abstract methods.
// The goal of pass 2 is to walk through the superinterfaces to see if any of
@@ -772,7 +781,8 @@
// Part of the Miranda Rights in the US mean that if you do not have
// an attorney one will be appointed for you.
bool klassVtable::is_miranda(Method* m, Array<Method*>* class_methods,
- Array<Method*>* default_methods, const Klass* super) {
+ Array<Method*>* default_methods, const Klass* super,
+ bool is_interface) {
if (m->is_static() || m->is_private() || m->is_overpass()) {
return false;
}
@@ -800,8 +810,11 @@
for (const Klass* cursuper = super; cursuper != NULL; cursuper = cursuper->super())
{
- if (InstanceKlass::cast(cursuper)->find_local_method(name, signature,
- Klass::find_overpass, Klass::skip_static, Klass::skip_private) != NULL) {
+ Method* found_mth = InstanceKlass::cast(cursuper)->find_local_method(name, signature,
+ Klass::find_overpass, Klass::skip_static, Klass::skip_private);
+ // Ignore non-public methods in java.lang.Object if klass is an interface.
+ if (found_mth != NULL && (!is_interface ||
+ !SystemDictionary::is_nonpublic_Object_method(found_mth))) {
return false;
}
}
@@ -820,7 +833,7 @@
void klassVtable::add_new_mirandas_to_lists(
GrowableArray<Method*>* new_mirandas, GrowableArray<Method*>* all_mirandas,
Array<Method*>* current_interface_methods, Array<Method*>* class_methods,
- Array<Method*>* default_methods, const Klass* super) {
+ Array<Method*>* default_methods, const Klass* super, bool is_interface) {
// iterate thru the current interface's method to see if it a miranda
int num_methods = current_interface_methods->length();
@@ -839,7 +852,7 @@
}
if (!is_duplicate) { // we don't want duplicate miranda entries in the vtable
- if (is_miranda(im, class_methods, default_methods, super)) { // is it a miranda at all?
+ if (is_miranda(im, class_methods, default_methods, super, is_interface)) { // is it a miranda at all?
const InstanceKlass *sk = InstanceKlass::cast(super);
// check if it is a duplicate of a super's miranda
if (sk->lookup_method_in_all_interfaces(im->name(), im->signature(), Klass::find_defaults) == NULL) {
@@ -858,7 +871,8 @@
const Klass* super,
Array<Method*>* class_methods,
Array<Method*>* default_methods,
- Array<Klass*>* local_interfaces) {
+ Array<Klass*>* local_interfaces,
+ bool is_interface) {
assert((new_mirandas->length() == 0) , "current mirandas must be 0");
// iterate thru the local interfaces looking for a miranda
@@ -867,7 +881,7 @@
InstanceKlass *ik = InstanceKlass::cast(local_interfaces->at(i));
add_new_mirandas_to_lists(new_mirandas, all_mirandas,
ik->methods(), class_methods,
- default_methods, super);
+ default_methods, super, is_interface);
// iterate thru each local's super interfaces
Array<Klass*>* super_ifs = ik->transitive_interfaces();
int num_super_ifs = super_ifs->length();
@@ -875,7 +889,7 @@
InstanceKlass *sik = InstanceKlass::cast(super_ifs->at(j));
add_new_mirandas_to_lists(new_mirandas, all_mirandas,
sik->methods(), class_methods,
- default_methods, super);
+ default_methods, super, is_interface);
}
}
}
@@ -888,7 +902,8 @@
int klassVtable::fill_in_mirandas(int initialized) {
GrowableArray<Method*> mirandas(20);
get_mirandas(&mirandas, NULL, ik()->super(), ik()->methods(),
- ik()->default_methods(), ik()->local_interfaces());
+ ik()->default_methods(), ik()->local_interfaces(),
+ klass()->is_interface());
for (int i = 0; i < mirandas.length(); i++) {
if (log_develop_is_enabled(Trace, vtables)) {
Method* meth = mirandas.at(i);
--- a/src/hotspot/share/oops/klassVtable.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/oops/klassVtable.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -144,21 +144,24 @@
bool is_miranda_entry_at(int i);
int fill_in_mirandas(int initialized);
static bool is_miranda(Method* m, Array<Method*>* class_methods,
- Array<Method*>* default_methods, const Klass* super);
+ Array<Method*>* default_methods, const Klass* super,
+ bool is_interface);
static void add_new_mirandas_to_lists(
GrowableArray<Method*>* new_mirandas,
GrowableArray<Method*>* all_mirandas,
Array<Method*>* current_interface_methods,
Array<Method*>* class_methods,
Array<Method*>* default_methods,
- const Klass* super);
+ const Klass* super,
+ bool is_interface);
static void get_mirandas(
GrowableArray<Method*>* new_mirandas,
GrowableArray<Method*>* all_mirandas,
const Klass* super,
Array<Method*>* class_methods,
Array<Method*>* default_methods,
- Array<Klass*>* local_interfaces);
+ Array<Klass*>* local_interfaces,
+ bool is_interface);
void verify_against(outputStream* st, klassVtable* vt, int index);
inline InstanceKlass* ik() const;
// When loading a class from CDS archive at run time, and no class redefintion
--- a/src/hotspot/share/oops/method.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/oops/method.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -446,7 +446,7 @@
bool Method::init_method_counters(MethodCounters* counters) {
// Try to install a pointer to MethodCounters, return true on success.
- return Atomic::cmpxchg(counters, &_method_counters, (MethodCounters*)NULL) == NULL;
+ return Atomic::replace_if_null(counters, &_method_counters);
}
void Method::cleanup_inline_caches() {
--- a/src/hotspot/share/opto/loopnode.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/opto/loopnode.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -1331,8 +1331,7 @@
n->set_req(i, old_new[n->in(i)->_idx]);
}
}
- if (n->in(0) != NULL) {
- assert(n->in(0) == cle_tail, "node not on backedge?");
+ if (n->in(0) != NULL && n->in(0) == cle_tail) {
n->set_req(0, le_tail);
}
igvn->register_new_node_with_optimizer(n);
@@ -1394,9 +1393,14 @@
Node* uu = fast_out(j);
if (uu->is_Phi()) {
Node* be = uu->in(LoopNode::LoopBackControl);
- while (be->is_Store() && old_new[be->_idx] != NULL) {
- ShouldNotReachHere();
- be = be->in(MemNode::Memory);
+ if (be->is_Store() && old_new[be->_idx] != NULL) {
+ assert(false, "store on the backedge + sunk stores: unsupported");
+ // drop outer loop
+ IfNode* outer_le = outer_loop_end();
+ Node* iff = igvn->transform(new IfNode(outer_le->in(0), outer_le->in(1), outer_le->_prob, outer_le->_fcnt));
+ igvn->replace_node(outer_le, iff);
+ inner_cl->clear_strip_mined();
+ return;
}
if (be == last || be == first->in(MemNode::Memory)) {
assert(phi == NULL, "only one phi");
@@ -1449,10 +1453,7 @@
// Or fix the outer loop fix to include
// that chain of stores.
Node* be = phi->in(LoopNode::LoopBackControl);
- while (be->is_Store() && old_new[be->_idx] != NULL) {
- ShouldNotReachHere();
- be = be->in(MemNode::Memory);
- }
+ assert(!(be->is_Store() && old_new[be->_idx] != NULL), "store on the backedge + sunk stores: unsupported");
if (be == first->in(MemNode::Memory)) {
if (be == phi->in(LoopNode::LoopBackControl)) {
igvn->replace_input_of(phi, LoopNode::LoopBackControl, last);
@@ -1489,8 +1490,8 @@
} else {
new_limit = igvn->transform(new SubINode(iv_phi, min));
}
- igvn->replace_input_of(inner_cle->cmp_node(), 2, new_limit);
Node* cmp = inner_cle->cmp_node()->clone();
+ igvn->replace_input_of(cmp, 2, new_limit);
Node* bol = inner_cle->in(CountedLoopEndNode::TestValue)->clone();
cmp->set_req(2, limit);
bol->set_req(1, igvn->transform(cmp));
--- a/src/hotspot/share/prims/jvm.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/prims/jvm.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -678,17 +678,9 @@
// Misc. class handling ///////////////////////////////////////////////////////////
-JVM_ENTRY(jclass, JVM_GetCallerClass(JNIEnv* env, int depth))
+JVM_ENTRY(jclass, JVM_GetCallerClass(JNIEnv* env))
JVMWrapper("JVM_GetCallerClass");
- // Pre-JDK 8 and early builds of JDK 8 don't have a CallerSensitive annotation; or
- // sun.reflect.Reflection.getCallerClass with a depth parameter is provided
- // temporarily for existing code to use until a replacement API is defined.
- if (SystemDictionary::reflect_CallerSensitive_klass() == NULL || depth != JVM_CALLER_DEPTH) {
- Klass* k = thread->security_get_caller_class(depth);
- return (k == NULL) ? NULL : (jclass) JNIHandles::make_local(env, k->java_mirror());
- }
-
// Getting the class of the caller frame.
//
// The call stack at this point looks something like this:
--- a/src/hotspot/share/prims/jvmtiRawMonitor.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/prims/jvmtiRawMonitor.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -127,7 +127,7 @@
int JvmtiRawMonitor::SimpleEnter (Thread * Self) {
for (;;) {
- if (Atomic::cmpxchg(Self, &_owner, (void*)NULL) == NULL) {
+ if (Atomic::replace_if_null(Self, &_owner)) {
return OS_OK ;
}
@@ -139,7 +139,7 @@
Node._next = _EntryList ;
_EntryList = &Node ;
OrderAccess::fence() ;
- if (_owner == NULL && Atomic::cmpxchg(Self, &_owner, (void*)NULL) == NULL) {
+ if (_owner == NULL && Atomic::replace_if_null(Self, &_owner)) {
_EntryList = Node._next ;
RawMonitor_lock->unlock() ;
return OS_OK ;
--- a/src/hotspot/share/prims/methodHandles.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/prims/methodHandles.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -122,6 +122,48 @@
ALL_KINDS = IS_METHOD | IS_CONSTRUCTOR | IS_FIELD | IS_TYPE
};
+int MethodHandles::ref_kind_to_flags(int ref_kind) {
+ assert(ref_kind_is_valid(ref_kind), "%d", ref_kind);
+ int flags = (ref_kind << REFERENCE_KIND_SHIFT);
+ if (ref_kind_is_field(ref_kind)) {
+ flags |= IS_FIELD;
+ } else if (ref_kind_is_method(ref_kind)) {
+ flags |= IS_METHOD;
+ } else if (ref_kind == JVM_REF_newInvokeSpecial) {
+ flags |= IS_CONSTRUCTOR;
+ }
+ return flags;
+}
+
+Handle MethodHandles::resolve_MemberName_type(Handle mname, Klass* caller, TRAPS) {
+ Handle empty;
+ Handle type(THREAD, java_lang_invoke_MemberName::type(mname()));
+ if (!java_lang_String::is_instance_inlined(type())) {
+ return type; // already resolved
+ }
+ Symbol* signature = java_lang_String::as_symbol_or_null(type());
+ if (signature == NULL) {
+ return empty; // no such signature exists in the VM
+ }
+ Handle resolved;
+ int flags = java_lang_invoke_MemberName::flags(mname());
+ switch (flags & ALL_KINDS) {
+ case IS_METHOD:
+ case IS_CONSTRUCTOR:
+ resolved = SystemDictionary::find_method_handle_type(signature, caller, CHECK_(empty));
+ break;
+ case IS_FIELD:
+ resolved = SystemDictionary::find_field_handle_type(signature, caller, CHECK_(empty));
+ break;
+ default:
+ THROW_MSG_(vmSymbols::java_lang_InternalError(), "unrecognized MemberName format", empty);
+ }
+ if (resolved.is_null()) {
+ THROW_MSG_(vmSymbols::java_lang_InternalError(), "bad MemberName type", empty);
+ }
+ return resolved;
+}
+
oop MethodHandles::init_MemberName(Handle mname, Handle target, TRAPS) {
// This method is used from java.lang.invoke.MemberName constructors.
// It fills in the new MemberName from a java.lang.reflect.Member.
--- a/src/hotspot/share/prims/methodHandles.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/prims/methodHandles.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -70,6 +70,8 @@
static int find_MemberNames(Klass* k, Symbol* name, Symbol* sig,
int mflags, Klass* caller,
int skip, objArrayHandle results, TRAPS);
+ static Handle resolve_MemberName_type(Handle mname, Klass* caller, TRAPS);
+
// bit values for suppress argument to expand_MemberName:
enum { _suppress_defc = 1, _suppress_name = 2, _suppress_type = 4 };
@@ -191,6 +193,8 @@
ref_kind == JVM_REF_invokeInterface);
}
+ static int ref_kind_to_flags(int ref_kind);
+
#include CPU_HEADER(methodHandles)
// Tracing
--- a/src/hotspot/share/prims/whitebox.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/prims/whitebox.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -1727,10 +1727,16 @@
WB_ENTRY(jboolean, WB_IsCDSIncludedInVmBuild(JNIEnv* env))
#if INCLUDE_CDS
+# ifdef _LP64
+ if (!UseCompressedOops || !UseCompressedClassPointers) {
+ // On 64-bit VMs, CDS is supported only with compressed oops/pointers
+ return false;
+ }
+# endif // _LP64
return true;
#else
return false;
-#endif
+#endif // INCLUDE_CDS
WB_END
--- a/src/hotspot/share/runtime/arguments.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/runtime/arguments.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -200,7 +200,9 @@
_writeable = writeable;
}
-AgentLibrary::AgentLibrary(const char* name, const char* options, bool is_absolute_path, void* os_lib) {
+AgentLibrary::AgentLibrary(const char* name, const char* options,
+ bool is_absolute_path, void* os_lib,
+ bool instrument_lib) {
_name = AllocateHeap(strlen(name)+1, mtArguments);
strcpy(_name, name);
if (options == NULL) {
@@ -214,6 +216,7 @@
_next = NULL;
_state = agent_invalid;
_is_static_lib = false;
+ _is_instrument_lib = instrument_lib;
}
// Check if head of 'option' matches 'name', and sets 'tail' to the remaining
@@ -290,6 +293,10 @@
_agentList.add(new AgentLibrary(name, options, absolute_path, NULL));
}
+void Arguments::add_instrument_agent(const char* name, char* options, bool absolute_path) {
+ _agentList.add(new AgentLibrary(name, options, absolute_path, NULL, true));
+}
+
// Late-binding agents not started via arguments
void Arguments::add_loaded_agent(AgentLibrary *agentLib) {
_agentList.add(agentLib);
@@ -2797,7 +2804,7 @@
size_t length = strlen(tail) + 1;
char *options = NEW_C_HEAP_ARRAY(char, length, mtArguments);
jio_snprintf(options, length, "%s", tail);
- add_init_agent("instrument", options, false);
+ add_instrument_agent("instrument", options, false);
// java agents need module java.instrument
if (!create_numbered_property("jdk.module.addmods", "java.instrument", addmods_count++)) {
return JNI_ENOMEM;
--- a/src/hotspot/share/runtime/arguments.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/runtime/arguments.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -142,6 +142,7 @@
void* _os_lib;
bool _is_absolute_path;
bool _is_static_lib;
+ bool _is_instrument_lib;
AgentState _state;
AgentLibrary* _next;
@@ -154,13 +155,15 @@
void set_os_lib(void* os_lib) { _os_lib = os_lib; }
AgentLibrary* next() const { return _next; }
bool is_static_lib() const { return _is_static_lib; }
+ bool is_instrument_lib() const { return _is_instrument_lib; }
void set_static_lib(bool is_static_lib) { _is_static_lib = is_static_lib; }
bool valid() { return (_state == agent_valid); }
void set_valid() { _state = agent_valid; }
void set_invalid() { _state = agent_invalid; }
// Constructor
- AgentLibrary(const char* name, const char* options, bool is_absolute_path, void* os_lib);
+ AgentLibrary(const char* name, const char* options, bool is_absolute_path,
+ void* os_lib, bool instrument_lib=false);
};
// maintain an order of entry list of AgentLibrary
@@ -337,6 +340,7 @@
// -agentlib and -agentpath arguments
static AgentLibraryList _agentList;
static void add_init_agent(const char* name, char* options, bool absolute_path);
+ static void add_instrument_agent(const char* name, char* options, bool absolute_path);
// Late-binding agents not started via arguments
static void add_loaded_agent(AgentLibrary *agentLib);
--- a/src/hotspot/share/runtime/atomic.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/runtime/atomic.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -45,8 +45,8 @@
class Atomic : AllStatic {
public:
- // Atomic operations on jlong types are not available on all 32-bit
- // platforms. If atomic ops on jlongs are defined here they must only
+ // Atomic operations on int64 types are not available on all 32-bit
+ // platforms. If atomic ops on int64 are defined here they must only
// be used from code that verifies they are available at runtime and
// can provide an alternative action if not - see supports_cx8() for
// a means to test availability.
@@ -639,16 +639,16 @@
//
// Use the ATOMIC_SHORT_PAIR macro (see macros.hpp) to get the desired alignment.
template<>
-struct Atomic::AddImpl<jshort, jshort> VALUE_OBJ_CLASS_SPEC {
- jshort operator()(jshort add_value, jshort volatile* dest) const {
+struct Atomic::AddImpl<short, short> VALUE_OBJ_CLASS_SPEC {
+ short operator()(short add_value, short volatile* dest) const {
#ifdef VM_LITTLE_ENDIAN
assert((intx(dest) & 0x03) == 0x02, "wrong alignment");
- jint new_value = Atomic::add(add_value << 16, (volatile jint*)(dest-1));
+ int new_value = Atomic::add(add_value << 16, (volatile int*)(dest-1));
#else
assert((intx(dest) & 0x03) == 0x00, "wrong alignment");
- jint new_value = Atomic::add(add_value << 16, (volatile jint*)(dest));
+ int new_value = Atomic::add(add_value << 16, (volatile int*)(dest));
#endif
- return (jshort)(new_value >> 16); // preserves sign
+ return (short)(new_value >> 16); // preserves sign
}
};
@@ -807,7 +807,7 @@
do {
// value to swap in matches current value ...
uint32_t new_value = cur;
- // ... except for the one jbyte we want to update
+ // ... except for the one byte we want to update
reinterpret_cast<uint8_t*>(&new_value)[offset] = canon_exchange_value;
uint32_t res = cmpxchg(new_value, aligned_dest, cur, order);
--- a/src/hotspot/share/runtime/jniHandles.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/runtime/jniHandles.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -47,6 +47,7 @@
} else {
Thread* thread = Thread::current();
assert(Universe::heap()->is_in_reserved(obj), "sanity check");
+ assert(!current_thread_in_native(), "must not be in native");
return thread->active_handles()->allocate_handle(obj);
}
}
@@ -59,6 +60,8 @@
return NULL; // ignore null handles
} else {
assert(Universe::heap()->is_in_reserved(obj), "sanity check");
+ assert(thread->is_Java_thread(), "not a Java thread");
+ assert(!current_thread_in_native(), "must not be in native");
return thread->active_handles()->allocate_handle(obj);
}
}
@@ -70,6 +73,7 @@
} else {
JavaThread* thread = JavaThread::thread_from_jni_environment(env);
assert(Universe::heap()->is_in_reserved(obj), "sanity check");
+ assert(!current_thread_in_native(), "must not be in native");
return thread->active_handles()->allocate_handle(obj);
}
}
@@ -77,6 +81,7 @@
jobject JNIHandles::make_global(Handle obj) {
assert(!Universe::heap()->is_gc_active(), "can't extend the root set during GC");
+ assert(!current_thread_in_native(), "must not be in native");
jobject res = NULL;
if (!obj.is_null()) {
// ignore null handles
@@ -93,6 +98,7 @@
jobject JNIHandles::make_weak_global(Handle obj) {
assert(!Universe::heap()->is_gc_active(), "can't extend the root set during GC");
+ assert(!current_thread_in_native(), "must not be in native");
jobject res = NULL;
if (!obj.is_null()) {
// ignore null handles
@@ -265,6 +271,13 @@
weak_oops_do(&verify_handle);
}
+// This method is implemented here to avoid circular includes between
+// jniHandles.hpp and thread.hpp.
+bool JNIHandles::current_thread_in_native() {
+ Thread* thread = Thread::current();
+ return (thread->is_Java_thread() &&
+ JavaThread::current()->thread_state() == _thread_in_native);
+}
void jni_handles_init() {
--- a/src/hotspot/share/runtime/jniHandles.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/runtime/jniHandles.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -48,6 +48,10 @@
template<bool external_guard> inline static oop resolve_impl(jobject handle);
template<bool external_guard> static oop resolve_jweak(jweak handle);
+ // This method is not inlined in order to avoid circular includes between
+ // this header file and thread.hpp.
+ static bool current_thread_in_native();
+
public:
// Low tag bit in jobject used to distinguish a jweak. jweak is
// type equivalent to jobject, but there are places where we need to
@@ -230,6 +234,7 @@
template<bool external_guard>
inline oop JNIHandles::resolve_impl(jobject handle) {
assert(handle != NULL, "precondition");
+ assert(!current_thread_in_native(), "must not be in native");
oop result;
if (is_jweak(handle)) { // Unlikely
result = resolve_jweak<external_guard>(handle);
--- a/src/hotspot/share/runtime/mutex.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/runtime/mutex.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -467,7 +467,7 @@
OrderAccess::fence();
// Optional optimization ... try barging on the inner lock
- if ((NativeMonitorFlags & 32) && Atomic::cmpxchg(ESelf, &_OnDeck, (ParkEvent*)NULL) == NULL) {
+ if ((NativeMonitorFlags & 32) && Atomic::replace_if_null(ESelf, &_OnDeck)) {
goto OnDeck_LOOP;
}
@@ -574,7 +574,7 @@
// Unlike a normal lock, however, the exiting thread "locks" OnDeck,
// picks a successor and marks that thread as OnDeck. That successor
// thread will then clear OnDeck once it eventually acquires the outer lock.
- if (Atomic::cmpxchg((ParkEvent*)_LBIT, &_OnDeck, (ParkEvent*)NULL) != NULL) {
+ if (!Atomic::replace_if_null((ParkEvent*)_LBIT, &_OnDeck)) {
return;
}
--- a/src/hotspot/share/runtime/objectMonitor.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/runtime/objectMonitor.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -421,7 +421,7 @@
int ObjectMonitor::TryLock(Thread * Self) {
void * own = _owner;
if (own != NULL) return 0;
- if (Atomic::cmpxchg(Self, &_owner, (void*)NULL) == NULL) {
+ if (Atomic::replace_if_null(Self, &_owner)) {
// Either guarantee _recursions == 0 or set _recursions = 0.
assert(_recursions == 0, "invariant");
assert(_owner == Self, "invariant");
@@ -529,7 +529,7 @@
if ((SyncFlags & 16) == 0 && nxt == NULL && _EntryList == NULL) {
// Try to assume the role of responsible thread for the monitor.
// CONSIDER: ST vs CAS vs { if (Responsible==null) Responsible=Self }
- Atomic::cmpxchg(Self, &_Responsible, (Thread*)NULL);
+ Atomic::replace_if_null(Self, &_Responsible);
}
// The lock might have been released while this thread was occupied queueing
@@ -553,7 +553,7 @@
assert(_owner != Self, "invariant");
if ((SyncFlags & 2) && _Responsible == NULL) {
- Atomic::cmpxchg(Self, &_Responsible, (Thread*)NULL);
+ Atomic::replace_if_null(Self, &_Responsible);
}
// park self
@@ -1007,7 +1007,7 @@
// to reacquire the lock the responsibility for ensuring succession
// falls to the new owner.
//
- if (Atomic::cmpxchg(THREAD, &_owner, (void*)NULL) != NULL) {
+ if (!Atomic::replace_if_null(THREAD, &_owner)) {
return;
}
TEVENT(Exit - Reacquired);
@@ -1032,7 +1032,7 @@
// B. If the elements forming the EntryList|cxq are TSM
// we could simply unpark() the lead thread and return
// without having set _succ.
- if (Atomic::cmpxchg(THREAD, &_owner, (void*)NULL) != NULL) {
+ if (!Atomic::replace_if_null(THREAD, &_owner)) {
TEVENT(Inflated exit - reacquired succeeded);
return;
}
@@ -1714,7 +1714,7 @@
ObjectWaiter * tail = _cxq;
if (tail == NULL) {
iterator->_next = NULL;
- if (Atomic::cmpxchg(iterator, &_cxq, (ObjectWaiter*)NULL) == NULL) {
+ if (Atomic::replace_if_null(iterator, &_cxq)) {
break;
}
} else {
--- a/src/hotspot/share/runtime/safepoint.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/runtime/safepoint.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -103,7 +103,7 @@
int nof_threads = Threads::number_of_threads();
- log_debug(safepoint)("Safepoint synchronization initiated. (%d)", nof_threads);
+ log_debug(safepoint)("Safepoint synchronization initiated. (%d threads)", nof_threads);
RuntimeService::record_safepoint_begin();
@@ -407,9 +407,7 @@
// Update the count of active JNI critical regions
GCLocker::set_jni_lock_count(_current_jni_active_count);
- if (log_is_enabled(Debug, safepoint)) {
- log_debug(safepoint)("Entering safepoint region: %s", VMThread::vm_safepoint_description());
- }
+ log_info(safepoint)("Entering safepoint region: %s", VMThread::vm_safepoint_description());
RuntimeService::record_safepoint_synchronized();
if (PrintSafepointStatistics) {
@@ -496,14 +494,14 @@
cur_state->restart(); // TSS _running
SafepointMechanism::disarm_local_poll(current); // release store, local state -> polling page
}
- log_debug(safepoint)("Leaving safepoint region");
+ log_info(safepoint)("Leaving safepoint region");
} else {
// Set to not synchronized, so the threads will not go into the signal_thread_blocked method
// when they get restarted.
_state = _not_synchronized;
OrderAccess::fence();
- log_debug(safepoint)("Leaving safepoint region");
+ log_info(safepoint)("Leaving safepoint region");
// Start suspended threads
jtiwh.rewind();
--- a/src/hotspot/share/runtime/safepointMechanism.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/runtime/safepointMechanism.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -36,23 +36,39 @@
void SafepointMechanism::default_initialize() {
if (ThreadLocalHandshakes) {
set_uses_thread_local_poll();
- const size_t page_size = os::vm_page_size();
- const size_t allocation_size = 2 * page_size;
- char* polling_page = os::reserve_memory(allocation_size, NULL, page_size);
- os::commit_memory_or_exit(polling_page, allocation_size, false, "Unable to commit Safepoint polling page");
+
+ // Poll bit values
+ intptr_t poll_armed_value = poll_bit();
+ intptr_t poll_disarmed_value = 0;
- char* bad_page = polling_page;
- char* good_page = polling_page + page_size;
+#ifdef USE_POLL_BIT_ONLY
+ if (!USE_POLL_BIT_ONLY)
+#endif
+ {
+ // Polling page
+ const size_t page_size = os::vm_page_size();
+ const size_t allocation_size = 2 * page_size;
+ char* polling_page = os::reserve_memory(allocation_size, NULL, page_size);
+ os::commit_memory_or_exit(polling_page, allocation_size, false, "Unable to commit Safepoint polling page");
- os::protect_memory(bad_page, page_size, os::MEM_PROT_NONE);
- os::protect_memory(good_page, page_size, os::MEM_PROT_READ);
+ char* bad_page = polling_page;
+ char* good_page = polling_page + page_size;
+
+ os::protect_memory(bad_page, page_size, os::MEM_PROT_NONE);
+ os::protect_memory(good_page, page_size, os::MEM_PROT_READ);
+
+ log_info(os)("SafePoint Polling address, bad (protected) page:" INTPTR_FORMAT ", good (unprotected) page:" INTPTR_FORMAT, p2i(bad_page), p2i(good_page));
+ os::set_polling_page((address)(bad_page));
- log_info(os)("SafePoint Polling address, bad (protected) page:" INTPTR_FORMAT ", good (unprotected) page:" INTPTR_FORMAT, p2i(bad_page), p2i(good_page));
- os::set_polling_page((address)(bad_page));
+ // Poll address values
+ intptr_t bad_page_val = reinterpret_cast<intptr_t>(bad_page),
+ good_page_val = reinterpret_cast<intptr_t>(good_page);
+ poll_armed_value |= bad_page_val;
+ poll_disarmed_value |= good_page_val;
+ }
- intptr_t poll_page_val = reinterpret_cast<intptr_t>(bad_page);
- _poll_armed_value = reinterpret_cast<void*>(poll_page_val | poll_bit());
- _poll_disarmed_value = good_page;
+ _poll_armed_value = reinterpret_cast<void*>(poll_armed_value);
+ _poll_disarmed_value = reinterpret_cast<void*>(poll_disarmed_value);
} else {
const size_t page_size = os::vm_page_size();
char* polling_page = os::reserve_memory(page_size, NULL, page_size);
--- a/src/hotspot/share/runtime/stubRoutines.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/runtime/stubRoutines.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -62,12 +62,11 @@
address StubRoutines::_atomic_xchg_entry = NULL;
address StubRoutines::_atomic_xchg_long_entry = NULL;
address StubRoutines::_atomic_store_entry = NULL;
-address StubRoutines::_atomic_store_ptr_entry = NULL;
address StubRoutines::_atomic_cmpxchg_entry = NULL;
address StubRoutines::_atomic_cmpxchg_byte_entry = NULL;
address StubRoutines::_atomic_cmpxchg_long_entry = NULL;
address StubRoutines::_atomic_add_entry = NULL;
-address StubRoutines::_atomic_add_ptr_entry = NULL;
+address StubRoutines::_atomic_add_long_entry = NULL;
address StubRoutines::_fence_entry = NULL;
address StubRoutines::_d2i_wrapper = NULL;
address StubRoutines::_d2l_wrapper = NULL;
--- a/src/hotspot/share/runtime/stubRoutines.hpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/runtime/stubRoutines.hpp Wed Jan 17 12:19:06 2018 +0000
@@ -103,12 +103,11 @@
static address _atomic_xchg_entry;
static address _atomic_xchg_long_entry;
static address _atomic_store_entry;
- static address _atomic_store_ptr_entry;
static address _atomic_cmpxchg_entry;
static address _atomic_cmpxchg_byte_entry;
static address _atomic_cmpxchg_long_entry;
static address _atomic_add_entry;
- static address _atomic_add_ptr_entry;
+ static address _atomic_add_long_entry;
static address _fence_entry;
static address _d2i_wrapper;
static address _d2l_wrapper;
@@ -277,12 +276,11 @@
static address atomic_xchg_entry() { return _atomic_xchg_entry; }
static address atomic_xchg_long_entry() { return _atomic_xchg_long_entry; }
static address atomic_store_entry() { return _atomic_store_entry; }
- static address atomic_store_ptr_entry() { return _atomic_store_ptr_entry; }
static address atomic_cmpxchg_entry() { return _atomic_cmpxchg_entry; }
static address atomic_cmpxchg_byte_entry() { return _atomic_cmpxchg_byte_entry; }
static address atomic_cmpxchg_long_entry() { return _atomic_cmpxchg_long_entry; }
static address atomic_add_entry() { return _atomic_add_entry; }
- static address atomic_add_ptr_entry() { return _atomic_add_ptr_entry; }
+ static address atomic_add_long_entry() { return _atomic_add_long_entry; }
static address fence_entry() { return _fence_entry; }
static address d2i_wrapper() { return _d2i_wrapper; }
--- a/src/hotspot/share/runtime/synchronizer.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/runtime/synchronizer.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -238,8 +238,7 @@
// and last are the inflated Java Monitor (ObjectMonitor) checks.
lock->set_displaced_header(markOopDesc::unused_mark());
- if (owner == NULL &&
- Atomic::cmpxchg(Self, &(m->_owner), (void*)NULL) == NULL) {
+ if (owner == NULL && Atomic::replace_if_null(Self, &(m->_owner))) {
assert(m->_recursions == 0, "invariant");
assert(m->_owner == Self, "invariant");
return true;
--- a/src/hotspot/share/runtime/thread.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/runtime/thread.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -4039,9 +4039,16 @@
}
if (library == NULL) {
const char *sub_msg = " on the library path, with error: ";
- size_t len = strlen(msg) + strlen(name) + strlen(sub_msg) + strlen(ebuf) + 1;
+ const char *sub_msg2 = "\nModule java.instrument may be missing from runtime image.";
+
+ size_t len = strlen(msg) + strlen(name) + strlen(sub_msg) +
+ strlen(ebuf) + strlen(sub_msg2) + 1;
char *buf = NEW_C_HEAP_ARRAY(char, len, mtThread);
- jio_snprintf(buf, len, "%s%s%s%s", msg, name, sub_msg, ebuf);
+ if (!agent->is_instrument_lib()) {
+ jio_snprintf(buf, len, "%s%s%s%s", msg, name, sub_msg, ebuf);
+ } else {
+ jio_snprintf(buf, len, "%s%s%s%s%s", msg, name, sub_msg, ebuf, sub_msg2);
+ }
// If we can't find the agent, exit.
vm_exit_during_initialization(buf, NULL);
FREE_C_HEAP_ARRAY(char, buf);
--- a/src/hotspot/share/services/mallocSiteTable.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/services/mallocSiteTable.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -147,7 +147,7 @@
if (entry == NULL) return NULL;
// swap in the head
- if (Atomic::cmpxchg(entry, &_table[index], (MallocSiteHashtableEntry*)NULL) == NULL) {
+ if (Atomic::replace_if_null(entry, &_table[index])) {
return entry->data();
}
@@ -259,5 +259,5 @@
}
bool MallocSiteHashtableEntry::atomic_insert(MallocSiteHashtableEntry* entry) {
- return Atomic::cmpxchg(entry, &_next, (MallocSiteHashtableEntry*)NULL) == NULL;
+ return Atomic::replace_if_null(entry, &_next);
}
--- a/src/hotspot/share/utilities/bitMap.cpp Tue Jan 16 15:52:01 2018 +0000
+++ b/src/hotspot/share/utilities/bitMap.cpp Wed Jan 17 12:19:06 2018 +0000
@@ -628,7 +628,7 @@
table[i] = num_set_bits(i);
}
- if (Atomic::cmpxchg(table, &_pop_count_table, (BitMap::idx_t*)NULL) != NULL) {
+ if (!Atomic::replace_if_null(table, &_pop_count_table)) {
guarantee(_pop_count_table != NULL, "invariant");
FREE_C_HEAP_ARRAY(idx_t, table);
}
--- a/src/java.base/linux/classes/sun/nio/fs/LinuxFileStore.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/linux/classes/sun/nio/fs/LinuxFileStore.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -66,6 +66,8 @@
}
// step 2: find mount point
+ List<UnixMountEntry> procMountsEntries =
+ fs.getMountEntries("/proc/mounts");
UnixPath parent = path.getParent();
while (parent != null) {
UnixFileAttributes attrs = null;
@@ -74,16 +76,23 @@
} catch (UnixException x) {
x.rethrowAsIOException(parent);
}
- if (attrs.dev() != dev())
- break;
+ if (attrs.dev() != dev()) {
+ // step 3: lookup mounted file systems (use /proc/mounts to
+ // ensure we find the file system even when not in /etc/mtab)
+ byte[] dir = path.asByteArray();
+ for (UnixMountEntry entry : procMountsEntries) {
+ if (Arrays.equals(dir, entry.dir()))
+ return entry;
+ }
+ }
path = parent;
parent = parent.getParent();
}
- // step 3: lookup mounted file systems (use /proc/mounts to ensure we
- // find the file system even when not in /etc/mtab)
+ // step 3: lookup mounted file systems (use /proc/mounts to
+ // ensure we find the file system even when not in /etc/mtab)
byte[] dir = path.asByteArray();
- for (UnixMountEntry entry: fs.getMountEntries("/proc/mounts")) {
+ for (UnixMountEntry entry : procMountsEntries) {
if (Arrays.equals(dir, entry.dir()))
return entry;
}
--- a/src/java.base/linux/classes/sun/nio/fs/LinuxFileSystem.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/linux/classes/sun/nio/fs/LinuxFileSystem.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -75,7 +75,7 @@
/**
* Returns object to iterate over the mount entries in the given fstab file.
*/
- Iterable<UnixMountEntry> getMountEntries(String fstab) {
+ List<UnixMountEntry> getMountEntries(String fstab) {
ArrayList<UnixMountEntry> entries = new ArrayList<>();
try {
long fp = setmntent(Util.toBytes(fstab), Util.toBytes("r"));
@@ -101,7 +101,7 @@
* Returns object to iterate over the mount entries in /etc/mtab
*/
@Override
- Iterable<UnixMountEntry> getMountEntries() {
+ List<UnixMountEntry> getMountEntries() {
return getMountEntries("/etc/mtab");
}
--- a/src/java.base/share/classes/java/io/ByteArrayOutputStream.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/io/ByteArrayOutputStream.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,6 +27,7 @@
import java.nio.charset.Charset;
import java.util.Arrays;
+import java.util.Objects;
/**
* This class implements an output stream in which the data is
@@ -147,10 +148,7 @@
* @param len the number of bytes to write.
*/
public synchronized void write(byte b[], int off, int len) {
- if ((off < 0) || (off > b.length) || (len < 0) ||
- ((off + len) - b.length > 0)) {
- throw new IndexOutOfBoundsException();
- }
+ Objects.checkFromIndexSize(off, len, b.length);
ensureCapacity(count + len);
System.arraycopy(b, off, buf, count, len);
count += len;
--- a/src/java.base/share/classes/java/io/File.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/io/File.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -2256,7 +2256,7 @@
private transient volatile Path filePath;
/**
- * Returns a {@link Path java.nio.file.Path} object constructed from the
+ * Returns a {@link Path java.nio.file.Path} object constructed from
* this abstract path. The resulting {@code Path} is associated with the
* {@link java.nio.file.FileSystems#getDefault default-filesystem}.
*
--- a/src/java.base/share/classes/java/io/InputStream.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/io/InputStream.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -56,6 +56,93 @@
private static final int DEFAULT_BUFFER_SIZE = 8192;
/**
+ * Returns a new {@code InputStream} that reads no bytes. The returned
+ * stream is initially open. The stream is closed by calling the
+ * {@code close()} method. Subsequent calls to {@code close()} have no
+ * effect.
+ *
+ * <p> While the stream is open, the {@code available()}, {@code read()},
+ * {@code read(byte[])}, {@code read(byte[], int, int)},
+ * {@code readAllBytes()}, {@code readNBytes()}, {@code skip()}, and
+ * {@code transferTo()} methods all behave as if end of stream has been
+ * reached. After the stream has been closed, these methods all throw
+ * {@code IOException}.
+ *
+ * <p> The {@code markSupported()} method returns {@code false}. The
+ * {@code mark()} method does nothing, and the {@code reset()} method
+ * throws {@code IOException}.
+ *
+ * @return an {@code InputStream} which contains no bytes
+ *
+ * @since 11
+ */
+ public static InputStream nullInputStream() {
+ return new InputStream() {
+ private volatile boolean closed;
+
+ private void ensureOpen() throws IOException {
+ if (closed) {
+ throw new IOException("Stream closed");
+ }
+ }
+
+ @Override
+ public int available () throws IOException {
+ ensureOpen();
+ return 0;
+ }
+
+ @Override
+ public int read() throws IOException {
+ ensureOpen();
+ return -1;
+ }
+
+ @Override
+ public int read(byte[] b, int off, int len) throws IOException {
+ Objects.checkFromIndexSize(off, len, b.length);
+ if (len == 0) {
+ return 0;
+ }
+ ensureOpen();
+ return -1;
+ }
+
+ @Override
+ public byte[] readAllBytes() throws IOException {
+ ensureOpen();
+ return new byte[0];
+ }
+
+ @Override
+ public int readNBytes(byte[] b, int off, int len)
+ throws IOException {
+ Objects.checkFromIndexSize(off, len, b.length);
+ ensureOpen();
+ return 0;
+ }
+
+ @Override
+ public long skip(long n) throws IOException {
+ ensureOpen();
+ return 0L;
+ }
+
+ @Override
+ public long transferTo(OutputStream out) throws IOException {
+ Objects.requireNonNull(out);
+ ensureOpen();
+ return 0L;
+ }
+
+ @Override
+ public void close() throws IOException {
+ closed = true;
+ }
+ };
+ }
+
+ /**
* Reads the next byte of data from the input stream. The value byte is
* returned as an <code>int</code> in the range <code>0</code> to
* <code>255</code>. If no byte is available because the end of the stream
@@ -166,7 +253,6 @@
* @see java.io.InputStream#read()
*/
public int read(byte b[], int off, int len) throws IOException {
- Objects.requireNonNull(b);
Objects.checkFromIndexSize(off, len, b.length);
if (len == 0) {
return 0;
@@ -326,7 +412,6 @@
* @since 9
*/
public int readNBytes(byte[] b, int off, int len) throws IOException {
- Objects.requireNonNull(b);
Objects.checkFromIndexSize(off, len, b.length);
int n = 0;
--- a/src/java.base/share/classes/java/io/ObjectInputStream.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/io/ObjectInputStream.java Wed Jan 17 12:19:06 2018 +0000
@@ -1296,7 +1296,6 @@
* @throws InvalidClassException if the filter rejects creation
*/
private void checkArray(Class<?> arrayType, int arrayLength) throws InvalidClassException {
- Objects.requireNonNull(arrayType);
if (! arrayType.isArray()) {
throw new IllegalArgumentException("not an array type");
}
--- a/src/java.base/share/classes/java/io/OutputStream.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/io/OutputStream.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,6 +47,51 @@
*/
public abstract class OutputStream implements Closeable, Flushable {
/**
+ * Returns a new {@code OutputStream} which discards all bytes. The
+ * returned stream is initially open. The stream is closed by calling
+ * the {@code close()} method. Subsequent calls to {@code close()} have
+ * no effect.
+ *
+ * <p> While the stream is open, the {@code write(int)}, {@code
+ * write(byte[])}, and {@code write(byte[], int, int)} methods do nothing.
+ * After the stream has been closed, these methods all throw {@code
+ * IOException}.
+ *
+ * <p> The {@code flush()} method does nothing.
+ *
+ * @return an {@code OutputStream} which discards all bytes
+ *
+ * @since 11
+ */
+ public static OutputStream nullOutputStream() {
+ return new OutputStream() {
+ private volatile boolean closed;
+
+ private void ensureOpen() throws IOException {
+ if (closed) {
+ throw new IOException("Stream closed");
+ }
+ }
+
+ @Override
+ public void write(int b) throws IOException {
+ ensureOpen();
+ }
+
+ @Override
+ public void write(byte b[], int off, int len) throws IOException {
+ Objects.checkFromIndexSize(off, len, b.length);
+ ensureOpen();
+ }
+
+ @Override
+ public void close() {
+ closed = true;
+ }
+ };
+ }
+
+ /**
* Writes the specified byte to this output stream. The general
* contract for <code>write</code> is that one byte is written
* to the output stream. The byte to be written is the eight
@@ -106,7 +151,6 @@
* stream is closed.
*/
public void write(byte b[], int off, int len) throws IOException {
- Objects.requireNonNull(b);
Objects.checkFromIndexSize(off, len, b.length);
// len == 0 condition implicitly handled by loop bounds
for (int i = 0 ; i < len ; i++) {
--- a/src/java.base/share/classes/java/lang/invoke/MemberName.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/lang/invoke/MemberName.java Wed Jan 17 12:19:06 2018 +0000
@@ -900,9 +900,9 @@
buf.append(getName(clazz));
buf.append('.');
}
- String name = getName();
+ String name = this.name; // avoid expanding from VM
buf.append(name == null ? "*" : name);
- Object type = getType();
+ Object type = this.type; // avoid expanding from VM
if (!isInvocable()) {
buf.append('/');
buf.append(type == null ? "*" : getName(type));
--- a/src/java.base/share/classes/java/lang/invoke/MethodHandle.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/lang/invoke/MethodHandle.java Wed Jan 17 12:19:06 2018 +0000
@@ -1667,6 +1667,7 @@
/** Craft a LambdaForm customized for this particular MethodHandle */
/*non-public*/
void customize() {
+ final LambdaForm form = this.form;
if (form.customized == null) {
LambdaForm newForm = form.customize(this);
updateForm(newForm);
--- a/src/java.base/share/classes/java/net/InetSocketAddress.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/net/InetSocketAddress.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -317,10 +317,9 @@
}
/**
- *
* Gets the {@code InetAddress}.
*
- * @return the InetAdress or {@code null} if it is unresolved.
+ * @return the InetAddress or {@code null} if it is unresolved.
*/
public final InetAddress getAddress() {
return holder.getAddress();
--- a/src/java.base/share/classes/java/util/ArrayList.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/ArrayList.java Wed Jan 17 12:19:06 2018 +0000
@@ -1550,7 +1550,6 @@
setBit(deathRow, i - beg);
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
- expectedModCount++;
modCount++;
int w = beg;
for (i = beg; i < end; i++)
--- a/src/java.base/share/classes/java/util/Vector.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/Vector.java Wed Jan 17 12:19:06 2018 +0000
@@ -1023,7 +1023,6 @@
setBit(deathRow, i - beg);
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
- expectedModCount++;
modCount++;
int w = beg;
for (i = beg; i < end; i++)
--- a/src/java.base/share/classes/java/util/concurrent/AbstractExecutorService.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/AbstractExecutorService.java Wed Jan 17 12:19:06 2018 +0000
@@ -245,8 +245,7 @@
Future<T> f = futures.get(i);
if (!f.isDone()) {
try { f.get(); }
- catch (CancellationException ignore) {}
- catch (ExecutionException ignore) {}
+ catch (CancellationException | ExecutionException ignore) {}
}
}
return futures;
@@ -283,8 +282,7 @@
Future<T> f = futures.get(j);
if (!f.isDone()) {
try { f.get(deadline - System.nanoTime(), NANOSECONDS); }
- catch (CancellationException ignore) {}
- catch (ExecutionException ignore) {}
+ catch (CancellationException | ExecutionException ignore) {}
catch (TimeoutException timedOut) {
break timedOut;
}
--- a/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/ConcurrentHashMap.java Wed Jan 17 12:19:06 2018 +0000
@@ -717,12 +717,12 @@
*/
static Class<?> comparableClassFor(Object x) {
if (x instanceof Comparable) {
- Class<?> c; Type[] ts, as; Type t; ParameterizedType p;
+ Class<?> c; Type[] ts, as; ParameterizedType p;
if ((c = x.getClass()) == String.class) // bypass checks
return c;
if ((ts = c.getGenericInterfaces()) != null) {
- for (int i = 0; i < ts.length; ++i) {
- if (((t = ts[i]) instanceof ParameterizedType) &&
+ for (Type t : ts) {
+ if ((t instanceof ParameterizedType) &&
((p = (ParameterizedType)t).getRawType() ==
Comparable.class) &&
(as = p.getActualTypeArguments()) != null &&
@@ -2328,15 +2328,15 @@
* @param check if <0, don't check resize, if <= 1 only check if uncontended
*/
private final void addCount(long x, int check) {
- CounterCell[] as; long b, s;
- if ((as = counterCells) != null ||
+ CounterCell[] cs; long b, s;
+ if ((cs = counterCells) != null ||
!U.compareAndSetLong(this, BASECOUNT, b = baseCount, s = b + x)) {
- CounterCell a; long v; int m;
+ CounterCell c; long v; int m;
boolean uncontended = true;
- if (as == null || (m = as.length - 1) < 0 ||
- (a = as[ThreadLocalRandom.getProbe() & m]) == null ||
+ if (cs == null || (m = cs.length - 1) < 0 ||
+ (c = cs[ThreadLocalRandom.getProbe() & m]) == null ||
!(uncontended =
- U.compareAndSetLong(a, CELLVALUE, v = a.value, v + x))) {
+ U.compareAndSetLong(c, CELLVALUE, v = c.value, v + x))) {
fullAddCount(x, uncontended);
return;
}
@@ -2574,13 +2574,12 @@
}
final long sumCount() {
- CounterCell[] as = counterCells; CounterCell a;
+ CounterCell[] cs = counterCells;
long sum = baseCount;
- if (as != null) {
- for (int i = 0; i < as.length; ++i) {
- if ((a = as[i]) != null)
- sum += a.value;
- }
+ if (cs != null) {
+ for (CounterCell c : cs)
+ if (c != null)
+ sum += c.value;
}
return sum;
}
@@ -2595,9 +2594,9 @@
}
boolean collide = false; // True if last slot nonempty
for (;;) {
- CounterCell[] as; CounterCell a; int n; long v;
- if ((as = counterCells) != null && (n = as.length) > 0) {
- if ((a = as[(n - 1) & h]) == null) {
+ CounterCell[] cs; CounterCell c; int n; long v;
+ if ((cs = counterCells) != null && (n = cs.length) > 0) {
+ if ((c = cs[(n - 1) & h]) == null) {
if (cellsBusy == 0) { // Try to attach new Cell
CounterCell r = new CounterCell(x); // Optimistic create
if (cellsBusy == 0 &&
@@ -2623,21 +2622,17 @@
}
else if (!wasUncontended) // CAS already known to fail
wasUncontended = true; // Continue after rehash
- else if (U.compareAndSetLong(a, CELLVALUE, v = a.value, v + x))
+ else if (U.compareAndSetLong(c, CELLVALUE, v = c.value, v + x))
break;
- else if (counterCells != as || n >= NCPU)
+ else if (counterCells != cs || n >= NCPU)
collide = false; // At max size or stale
else if (!collide)
collide = true;
else if (cellsBusy == 0 &&
U.compareAndSetInt(this, CELLSBUSY, 0, 1)) {
try {
- if (counterCells == as) {// Expand table unless stale
- CounterCell[] rs = new CounterCell[n << 1];
- for (int i = 0; i < n; ++i)
- rs[i] = as[i];
- counterCells = rs;
- }
+ if (counterCells == cs) // Expand table unless stale
+ counterCells = Arrays.copyOf(cs, n << 1);
} finally {
cellsBusy = 0;
}
@@ -2646,11 +2641,11 @@
}
h = ThreadLocalRandom.advanceProbe(h);
}
- else if (cellsBusy == 0 && counterCells == as &&
+ else if (cellsBusy == 0 && counterCells == cs &&
U.compareAndSetInt(this, CELLSBUSY, 0, 1)) {
boolean init = false;
try { // Initialize table
- if (counterCells == as) {
+ if (counterCells == cs) {
CounterCell[] rs = new CounterCell[2];
rs[h & 1] = new CounterCell(x);
counterCells = rs;
--- a/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListMap.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListMap.java Wed Jan 17 12:19:06 2018 +0000
@@ -2204,9 +2204,7 @@
Collection<?> c = (Collection<?>) o;
try {
return containsAll(c) && c.containsAll(this);
- } catch (ClassCastException unused) {
- return false;
- } catch (NullPointerException unused) {
+ } catch (ClassCastException | NullPointerException unused) {
return false;
}
}
@@ -2331,9 +2329,7 @@
Collection<?> c = (Collection<?>) o;
try {
return containsAll(c) && c.containsAll(this);
- } catch (ClassCastException unused) {
- return false;
- } catch (NullPointerException unused) {
+ } catch (ClassCastException | NullPointerException unused) {
return false;
}
}
@@ -2453,9 +2449,7 @@
if (k == null) // pass by markers and headers
return true;
int c = cpr(cmp, k, hi);
- if (c > 0 || (c == 0 && !hiInclusive))
- return false;
- return true;
+ return c < 0 || (c == 0 && hiInclusive);
}
/**
--- a/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListSet.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListSet.java Wed Jan 17 12:19:06 2018 +0000
@@ -309,9 +309,7 @@
Collection<?> c = (Collection<?>) o;
try {
return containsAll(c) && c.containsAll(this);
- } catch (ClassCastException unused) {
- return false;
- } catch (NullPointerException unused) {
+ } catch (ClassCastException | NullPointerException unused) {
return false;
}
}
--- a/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArrayList.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/CopyOnWriteArrayList.java Wed Jan 17 12:19:06 2018 +0000
@@ -508,7 +508,7 @@
public boolean remove(Object o) {
Object[] snapshot = getArray();
int index = indexOf(o, snapshot, 0, snapshot.length);
- return (index < 0) ? false : remove(o, snapshot, index);
+ return index >= 0 && remove(o, snapshot, index);
}
/**
@@ -587,8 +587,8 @@
*/
public boolean addIfAbsent(E e) {
Object[] snapshot = getArray();
- return indexOf(e, snapshot, 0, snapshot.length) >= 0 ? false :
- addIfAbsent(e, snapshot);
+ return indexOf(e, snapshot, 0, snapshot.length) < 0
+ && addIfAbsent(e, snapshot);
}
/**
@@ -980,13 +980,10 @@
List<?> list = (List<?>)o;
Iterator<?> it = list.iterator();
- Object[] elements = getArray();
- for (int i = 0, len = elements.length; i < len; i++)
- if (!it.hasNext() || !Objects.equals(elements[i], it.next()))
+ for (Object element : getArray())
+ if (!it.hasNext() || !Objects.equals(element, it.next()))
return false;
- if (it.hasNext())
- return false;
- return true;
+ return !it.hasNext();
}
/**
--- a/src/java.base/share/classes/java/util/concurrent/LinkedBlockingDeque.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/LinkedBlockingDeque.java Wed Jan 17 12:19:06 2018 +0000
@@ -1353,17 +1353,16 @@
@SuppressWarnings("unchecked")
private boolean bulkRemove(Predicate<? super E> filter) {
boolean removed = false;
+ final ReentrantLock lock = this.lock;
Node<E> p = null;
- final ReentrantLock lock = this.lock;
Node<E>[] nodes = null;
int n, len = 0;
do {
// 1. Extract batch of up to 64 elements while holding the lock.
- long deathRow = 0; // "bitset" of size 64
lock.lock();
try {
- if (nodes == null) {
- if (p == null) p = first;
+ if (nodes == null) { // first batch; initialize
+ p = first;
for (Node<E> q = p; q != null; q = succ(q))
if (q.item != null && ++len == 64)
break;
@@ -1376,6 +1375,7 @@
}
// 2. Run the filter on the elements while lock is free.
+ long deathRow = 0L; // "bitset" of size 64
for (int i = 0; i < n; i++) {
final E e;
if ((e = nodes[i].item) != null && filter.test(e))
@@ -1393,6 +1393,7 @@
unlink(q);
removed = true;
}
+ nodes[i] = null; // help GC
}
} finally {
lock.unlock();
--- a/src/java.base/share/classes/java/util/concurrent/LinkedBlockingQueue.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/LinkedBlockingQueue.java Wed Jan 17 12:19:06 2018 +0000
@@ -1060,11 +1060,10 @@
int n, len = 0;
do {
// 1. Extract batch of up to 64 elements while holding the lock.
- long deathRow = 0; // "bitset" of size 64
fullyLock();
try {
- if (nodes == null) {
- if (p == null) p = head.next;
+ if (nodes == null) { // first batch; initialize
+ p = head.next;
for (Node<E> q = p; q != null; q = succ(q))
if (q.item != null && ++len == 64)
break;
@@ -1077,6 +1076,7 @@
}
// 2. Run the filter on the elements while lock is free.
+ long deathRow = 0L; // "bitset" of size 64
for (int i = 0; i < n; i++) {
final E e;
if ((e = nodes[i].item) != null && filter.test(e))
@@ -1095,6 +1095,7 @@
unlink(q, ancestor);
removed = true;
}
+ nodes[i] = null; // help GC
}
} finally {
fullyUnlock();
--- a/src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java Wed Jan 17 12:19:06 2018 +0000
@@ -772,9 +772,8 @@
Node first = null;
restartFromHead: for (;;) {
Node h = head, p = h;
- for (; p != null;) {
- final Object item;
- if ((item = p.item) != null) {
+ while (p != null) {
+ if (p.item != null) {
if (p.isData) {
first = p;
break;
@@ -1602,8 +1601,7 @@
// Read in elements until trailing null sentinel found
Node h = null, t = null;
for (Object item; (item = s.readObject()) != null; ) {
- @SuppressWarnings("unchecked")
- Node newNode = new Node((E) item);
+ Node newNode = new Node(item);
if (h == null)
h = t = newNode;
else
--- a/src/java.base/share/classes/java/util/concurrent/PriorityBlockingQueue.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/PriorityBlockingQueue.java Wed Jan 17 12:19:06 2018 +0000
@@ -269,8 +269,8 @@
if (a.getClass() != Object[].class)
a = Arrays.copyOf(a, n, Object[].class);
if (screen && (n == 1 || this.comparator != null)) {
- for (int i = 0; i < n; ++i)
- if (a[i] == null)
+ for (Object elt : a)
+ if (elt == null)
throw new NullPointerException();
}
this.queue = a;
--- a/src/java.base/share/classes/java/util/concurrent/SubmissionPublisher.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/SubmissionPublisher.java Wed Jan 17 12:19:06 2018 +0000
@@ -753,8 +753,10 @@
else
pred.next = next;
}
- else
+ else {
subs.add(b.subscriber);
+ pred = b;
+ }
}
}
return subs;
--- a/src/java.base/share/classes/java/util/concurrent/ThreadLocalRandom.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/ThreadLocalRandom.java Wed Jan 17 12:19:06 2018 +0000
@@ -67,7 +67,7 @@
* {@code ThreadLocalRandom.current().nextX(...)} (where
* {@code X} is {@code Int}, {@code Long}, etc).
* When all usages are of this form, it is never possible to
- * accidently share a {@code ThreadLocalRandom} across multiple threads.
+ * accidentally share a {@code ThreadLocalRandom} across multiple threads.
*
* <p>This class also provides additional commonly used bounded random
* generation methods.
--- a/src/java.base/share/classes/java/util/concurrent/ThreadPoolExecutor.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/ThreadPoolExecutor.java Wed Jan 17 12:19:06 2018 +0000
@@ -264,13 +264,12 @@
* assist in storage reclamation when large numbers of queued tasks
* become cancelled.</dd>
*
- * <dt>Finalization</dt>
+ * <dt>Reclamation</dt>
*
* <dd>A pool that is no longer referenced in a program <em>AND</em>
- * has no remaining threads will be {@code shutdown} automatically. If
- * you would like to ensure that unreferenced pools are reclaimed even
- * if users forget to call {@link #shutdown}, then you must arrange
- * that unused threads eventually die, by setting appropriate
+ * has no remaining threads may be reclaimed (garbage collected)
+ * without being explicity shutdown. You can configure a pool to allow
+ * all unused threads to eventually die by setting appropriate
* keep-alive times, using a lower bound of zero core threads and/or
* setting {@link #allowCoreThreadTimeOut(boolean)}. </dd>
*
@@ -361,7 +360,7 @@
* time, but need not hit each state. The transitions are:
*
* RUNNING -> SHUTDOWN
- * On invocation of shutdown(), perhaps implicitly in finalize()
+ * On invocation of shutdown()
* (RUNNING or SHUTDOWN) -> STOP
* On invocation of shutdownNow()
* SHUTDOWN -> TIDYING
@@ -581,9 +580,6 @@
private static final RuntimePermission shutdownPerm =
new RuntimePermission("modifyThread");
- /** The context to be used when executing the finalizer, or null. */
- private final AccessControlContext acc;
-
/**
* Class Worker mainly maintains interrupt control state for
* threads running tasks, along with other minor bookkeeping.
@@ -1300,9 +1296,6 @@
throw new IllegalArgumentException();
if (workQueue == null || threadFactory == null || handler == null)
throw new NullPointerException();
- this.acc = (System.getSecurityManager() == null)
- ? null
- : AccessController.getContext();
this.corePoolSize = corePoolSize;
this.maximumPoolSize = maximumPoolSize;
this.workQueue = workQueue;
@@ -1470,33 +1463,6 @@
}
/**
- * Invokes {@code shutdown} when this executor is no longer
- * referenced and it has no threads.
- *
- * <p>This method is invoked with privileges that are restricted by
- * the security context of the caller that invokes the constructor.
- *
- * @deprecated The {@code finalize} method has been deprecated.
- * Subclasses that override {@code finalize} in order to perform cleanup
- * should be modified to use alternative cleanup mechanisms and
- * to remove the overriding {@code finalize} method.
- * When overriding the {@code finalize} method, its implementation must explicitly
- * ensure that {@code super.finalize()} is invoked as described in {@link Object#finalize}.
- * See the specification for {@link Object#finalize()} for further
- * information about migration options.
- */
- @Deprecated(since="9")
- protected void finalize() {
- SecurityManager sm = System.getSecurityManager();
- if (sm == null || acc == null) {
- shutdown();
- } else {
- PrivilegedAction<Void> pa = () -> { shutdown(); return null; };
- AccessController.doPrivileged(pa, acc);
- }
- }
-
- /**
* Sets the thread factory used to create new threads.
*
* @param threadFactory the new thread factory
--- a/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java Wed Jan 17 12:19:06 2018 +0000
@@ -320,7 +320,9 @@
// predNext is the apparent node to unsplice. CASes below will
// fail if not, in which case, we lost race vs another cancel
- // or signal, so no further action is necessary.
+ // or signal, so no further action is necessary, although with
+ // a possibility that a cancelled node may transiently remain
+ // reachable.
Node predNext = pred.next;
// Can use unconditional write instead of CAS here.
@@ -912,13 +914,13 @@
* at any time, a {@code true} return does not guarantee that any
* other thread will ever acquire.
*
- * <p>In this implementation, this operation returns in
- * constant time.
- *
* @return {@code true} if there may be other threads waiting to acquire
*/
public final boolean hasQueuedThreads() {
- return head != tail;
+ for (Node p = tail, h = head; p != h && p != null; p = p.prev)
+ if (p.waitStatus <= 0)
+ return true;
+ return false;
}
/**
@@ -1067,17 +1069,21 @@
* @since 1.7
*/
public final boolean hasQueuedPredecessors() {
- // The correctness of this depends on head being initialized
- // before tail and on head.next being accurate if the current
- // thread is first in queue.
- Node t = tail; // Read fields in reverse initialization order
- Node h = head;
- Node s;
- return h != t &&
- ((s = h.next) == null || s.thread != Thread.currentThread());
+ Node h, s;
+ if ((h = head) != null) {
+ if ((s = h.next) == null || s.waitStatus > 0) {
+ s = null; // traverse in case of concurrent cancellation
+ for (Node p = tail; p != h && p != null; p = p.prev) {
+ if (p.waitStatus <= 0)
+ s = p;
+ }
+ }
+ if (s != null && s.thread != Thread.currentThread())
+ return true;
+ }
+ return false;
}
-
// Instrumentation and monitoring methods
/**
--- a/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java Wed Jan 17 12:19:06 2018 +0000
@@ -800,7 +800,9 @@
// predNext is the apparent node to unsplice. CASes below will
// fail if not, in which case, we lost race vs another cancel
- // or signal, so no further action is necessary.
+ // or signal, so no further action is necessary, although with
+ // a possibility that a cancelled node may transiently remain
+ // reachable.
Node predNext = pred.next;
// Can use unconditional write instead of CAS here.
@@ -1392,13 +1394,13 @@
* at any time, a {@code true} return does not guarantee that any
* other thread will ever acquire.
*
- * <p>In this implementation, this operation returns in
- * constant time.
- *
* @return {@code true} if there may be other threads waiting to acquire
*/
public final boolean hasQueuedThreads() {
- return head != tail;
+ for (Node p = tail, h = head; p != h && p != null; p = p.prev)
+ if (p.waitStatus <= 0)
+ return true;
+ return false;
}
/**
@@ -1547,17 +1549,21 @@
* @since 1.7
*/
public final boolean hasQueuedPredecessors() {
- // The correctness of this depends on head being initialized
- // before tail and on head.next being accurate if the current
- // thread is first in queue.
- Node t = tail; // Read fields in reverse initialization order
- Node h = head;
- Node s;
- return h != t &&
- ((s = h.next) == null || s.thread != Thread.currentThread());
+ Node h, s;
+ if ((h = head) != null) {
+ if ((s = h.next) == null || s.waitStatus > 0) {
+ s = null; // traverse in case of concurrent cancellation
+ for (Node p = tail; p != h && p != null; p = p.prev) {
+ if (p.waitStatus <= 0)
+ s = p;
+ }
+ }
+ if (s != null && s.thread != Thread.currentThread())
+ return true;
+ }
+ return false;
}
-
// Instrumentation and monitoring methods
/**
--- a/src/java.base/share/classes/java/util/regex/Pattern.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/java/util/regex/Pattern.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -954,6 +954,12 @@
private int flags;
/**
+ * The temporary pattern flags used during compiling. The flags might be turn
+ * on and off by embedded flag.
+ */
+ private transient int flags0;
+
+ /**
* Boolean indicating this Pattern is compiled; this is necessary in order
* to lazily compile deserialized Patterns.
*/
@@ -1137,7 +1143,7 @@
* @return The match flags specified when this pattern was compiled
*/
public int flags() {
- return flags;
+ return flags0;
}
/**
@@ -1369,6 +1375,9 @@
// Read in all fields
s.defaultReadObject();
+ // reset the flags
+ flags0 = flags;
+
// Initialize counts
capturingGroupCount = 1;
localCount = 0;
@@ -1400,6 +1409,9 @@
if ((flags & UNICODE_CHARACTER_CLASS) != 0)
flags |= UNICODE_CASE;
+ // 'flags' for compiling
+ flags0 = flags;
+
// Reset group index count
capturingGroupCount = 1;
localCount = 0;
@@ -1841,7 +1853,7 @@
* Indicates whether a particular flag is set or not.
*/
private boolean has(int f) {
- return (flags & f) != 0;
+ return (flags0 & f) != 0;
}
/**
@@ -2718,7 +2730,7 @@
ch == 0x53 || ch == 0x73 || //S and s
ch == 0x4b || ch == 0x6b || //K and k
ch == 0xc5 || ch == 0xe5))) { //A+ring
- bits.add(ch, flags());
+ bits.add(ch, flags0);
return null;
}
return single(ch);
@@ -2931,7 +2943,7 @@
boolean capturingGroup = false;
Node head = null;
Node tail = null;
- int save = flags;
+ int save = flags0;
int saveTCNCount = topClosureNodes.size();
root = null;
int ch = next();
@@ -3032,7 +3044,7 @@
}
accept(')', "Unclosed group");
- flags = save;
+ flags0 = save;
// Check for quantifiers
Node node = closure(head);
@@ -3135,28 +3147,28 @@
for (;;) {
switch (ch) {
case 'i':
- flags |= CASE_INSENSITIVE;
+ flags0 |= CASE_INSENSITIVE;
break;
case 'm':
- flags |= MULTILINE;
+ flags0 |= MULTILINE;
break;
case 's':
- flags |= DOTALL;
+ flags0 |= DOTALL;
break;
case 'd':
- flags |= UNIX_LINES;
+ flags0 |= UNIX_LINES;
break;
case 'u':
- flags |= UNICODE_CASE;
+ flags0 |= UNICODE_CASE;
break;
case 'c':
- flags |= CANON_EQ;
+ flags0 |= CANON_EQ;
break;
case 'x':
- flags |= COMMENTS;
+ flags0 |= COMMENTS;
break;
case 'U':
- flags |= (UNICODE_CHARACTER_CLASS | UNICODE_CASE);
+ flags0 |= (UNICODE_CHARACTER_CLASS | UNICODE_CASE);
break;
case '-': // subFlag then fall through
ch = next();
@@ -3178,28 +3190,28 @@
for (;;) {
switch (ch) {
case 'i':
- flags &= ~CASE_INSENSITIVE;
+ flags0 &= ~CASE_INSENSITIVE;
break;
case 'm':
- flags &= ~MULTILINE;
+ flags0 &= ~MULTILINE;
break;
case 's':
- flags &= ~DOTALL;
+ flags0 &= ~DOTALL;
break;
case 'd':
- flags &= ~UNIX_LINES;
+ flags0 &= ~UNIX_LINES;
break;
case 'u':
- flags &= ~UNICODE_CASE;
+ flags0 &= ~UNICODE_CASE;
break;
case 'c':
- flags &= ~CANON_EQ;
+ flags0 &= ~CANON_EQ;
break;
case 'x':
- flags &= ~COMMENTS;
+ flags0 &= ~COMMENTS;
break;
case 'U':
- flags &= ~(UNICODE_CHARACTER_CLASS | UNICODE_CASE);
+ flags0 &= ~(UNICODE_CHARACTER_CLASS | UNICODE_CASE);
break;
default:
return;
--- a/src/java.base/share/classes/jdk/internal/reflect/Reflection.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/jdk/internal/reflect/Reflection.java Wed Jan 17 12:19:06 2018 +0000
@@ -64,14 +64,6 @@
@HotSpotIntrinsicCandidate
public static native Class<?> getCallerClass();
- /**
- * @deprecated This method will be removed.
- * This method is a private JDK API and retained temporarily to
- * simplify the implementation of sun.misc.Reflection.getCallerClass.
- */
- @Deprecated(forRemoval=true)
- public static native Class<?> getCallerClass(int depth);
-
/** Retrieves the access flags written to the class file. For
inner classes these flags may differ from those returned by
Class.getModifiers(), which searches the InnerClasses
--- a/src/java.base/share/classes/sun/launcher/resources/launcher_de.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/launcher/resources/launcher_de.properties Wed Jan 17 12:19:06 2018 +0000
@@ -26,17 +26,16 @@
# Translators please note do not translate the options themselves
java.launcher.opt.header = Verwendung: {0} [Optionen] <mainclass> [args...]\n (zur Ausf\u00FChrung einer Klasse)\n oder {0} [Optionen] -jar <jarfile> [args...]\n (zur Ausf\u00FChrung einer JAR-Datei)\n oder {0} [Optionen] -m <module>[/<mainclass>] [args...]\n {0} [Optionen] --module <module>[/<mainclass>] [args...]\n (zur Ausf\u00FChrung der Hauptklasse in einem Modul)\n\n Argumente, die auf die Hauptklasse folgen, -jar <jarfile>, -m oder --module\n <module>/<mainclass> werden als Argumente f\u00FCr die Hauptklasse \u00FCbergeben.\n\n wobei "Optionen" Folgendes umfasst:\n\n
-java.launcher.opt.datamodel =\ -d{0}\t Veraltet, wird in einem zuk\u00FCnftigen Release entfernt\n
java.launcher.opt.vmselect =\ {0}\t zur Auswahl der "{1}" VM\n
java.launcher.opt.hotspot =\ {0}\t ist ein Synonym f\u00FCr die "{1}" VM [verworfen]\n
# Translators please note do not translate the options themselves
-java.launcher.opt.footer = \ -cp <Klassensuchpfad mit Verzeichnissen und ZIP-/JAR-Dateien>\n -classpath <Klassensuchpfad mit Verzeichnissen und ZIP-/JAR-Dateien>\n --class-path <Klassensuchpfad mit Verzeichnissen und ZIP-/JAR-Dateien>\n Eine durch {0} getrennte Liste mit Verzeichnissen, JAR-Archiven\n und ZIP-Archiven, in denen nach Klassendateien gesucht wird.\n -p <Modulpfad>\n --module-path <Modulpfad>...\n Eine durch {0} getrennte Liste mit Verzeichnissen, von denen jedes Verzeichnis\n ein Verzeichnis mit Modulen ist.\n --upgrade-module-path <Modulpfad>...\n Eine durch {0} getrennte Liste mit Verzeichnissen, von denen jedes Verzeichnis\n ein Verzeichnis mit Modulen ist, die upgradef\u00E4hige\n Module im Laufzeitimage ersetzen\n --add-modules <Modulname>[,<Modulname>...]\n Root-Module, die zus\u00E4tzlich zum anf\u00E4nglichen Modul aufgel\u00F6st werden sollen.\n <Modulname> kann auch wie folgt lauten: ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n Listet beobachtbare Module auf und beendet den Vorgang\n --d <Modulname>\n --describe-module <Modulname>\n Beschreibt ein Modul und beendet den Vorgang\n --dry-run Erstellt eine VM und l\u00E4dt die Hauptklasse, f\u00FChrt aber nicht die Hauptmethode aus.\n Die Option "--dry-run" kann n\u00FCtzlich sein, um die\n Befehlszeilenoptionen, wie die Modulsystemkonfiguration, zu validieren.\n --validate-modules\n Validiert alle Module und beendet den Vorgang\n Die Option "--validate-modules" kann n\u00FCtzlich sein, um\n Konflikte und andere Fehler mit Modulen auf dem Modulpfad zu ermitteln.\n -D<Name>=<Wert>\n Legt eine Systemeigenschaft fest\n -verbose:[class|module|gc|jni]\n Ausgabe im Verbose-Modus aktivieren\n -version Gibt die Produktversion an den Fehlerstream aus und beendet den Vorgang\n --version Gibt die Produktversion an den Outputstream aus und beendet den Vorgang\n -showversion Gibt die Produktversion an den Fehlerstream aus und setzt den Vorgang fort\n --show-version\n Gibt die Produktversion an den Outputstream aus und setzt den Vorgang fort\n --show-module-resolution\n Zeigt die Modulaufl\u00F6sungsausgabe beim Start an\n -? -h -help\n Gibt diese Hilfemeldung an den Fehlerstream aus\n --help Gibt diese Hilfemeldung an den Outputstream aus\n -X Gibt Hilfe zu zus\u00E4tzlichen Optionen an den Fehlerstream aus\n --help-extra Gibt Hilfe zu zus\u00E4tzlichen Optionen an den Outputstream aus\n -ea[:<packagename>...|:<classname>]\n -enableassertions[:<packagename>...|:<classname>]\n Aktiviert Assertions mit angegebener Granularit\u00E4t\n -da[:<packagename>...|:<classname>]\n -disableassertions[:<packagename>...|:<classname>]\n Deaktiviert Assertions mit angegebener Granularit\u00E4t\n -esa | -enablesystemassertions\n Aktiviert System-Assertions\n -dsa | -disablesystemassertions\n Deaktiviert System-Assertions\n -agentlib:<libname>[=<options>]\n L\u00E4dt die native Agent Library <libname>. Beispiel: -agentlib:jdwp\n siehe auch -agentlib:jdwp=help\n -agentpath:<pathname>[=<options>]\n L\u00E4dt die native Agent Library mit dem vollst\u00E4ndigen Pfadnamen\n -javaagent:<jarpath>[=<options>]\n L\u00E4dt den Java-Programmiersprachen-Agent, siehe java.lang.instrument\n -splash:<imagepath>\n Zeigt den Startbildschirm mit einem angegebenen Bild an\n Skalierte HiDPI-Bilder werden automatisch \
+java.launcher.opt.footer = \ -cp <Klassensuchpfad mit Verzeichnissen und ZIP-/JAR-Dateien>\n -classpath <Klassensuchpfad mit Verzeichnissen und ZIP-/JAR-Dateien>\n --class-path <Klassensuchpfad mit Verzeichnissen und ZIP-/JAR-Dateien>\n Eine durch {0} getrennte Liste mit Verzeichnissen, JAR-Archiven\n und ZIP-Archiven, in denen nach Klassendateien gesucht wird.\n -p <Modulpfad>\n --module-path <Modulpfad>...\n Eine durch {0} getrennte Liste mit Verzeichnissen, von denen jedes Verzeichnis\n ein Verzeichnis mit Modulen ist.\n --upgrade-module-path <Modulpfad>...\n Eine durch {0} getrennte Liste mit Verzeichnissen, von denen jedes Verzeichnis\n ein Verzeichnis mit Modulen ist, die upgradef\u00E4hige\n Module im Laufzeitimage ersetzen\n --add-modules <Modulname>[,<Modulname>...]\n Root-Module, die zus\u00E4tzlich zum anf\u00E4nglichen Modul aufgel\u00F6st werden sollen.\n <Modulname> kann auch wie folgt lauten: ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n Listet beobachtbare Module auf und beendet den Vorgang\n -d <Modulname>\n --describe-module <Modulname>\n Beschreibt ein Modul und beendet den Vorgang\n --dry-run Erstellt eine VM und l\u00E4dt die Hauptklasse, f\u00FChrt aber nicht die Hauptmethode aus.\n Die Option "--dry-run" kann n\u00FCtzlich sein, um die\n Befehlszeilenoptionen, wie die Modulsystemkonfiguration, zu validieren.\n --validate-modules\n Validiert alle Module und beendet den Vorgang\n Die Option "--validate-modules" kann n\u00FCtzlich sein, um\n Konflikte und andere Fehler mit Modulen auf dem Modulpfad zu ermitteln.\n -D<Name>=<Wert>\n Legt eine Systemeigenschaft fest\n -verbose:[class|module|gc|jni]\n Ausgabe im Verbose-Modus aktivieren\n -version Gibt die Produktversion an den Fehlerstream aus und beendet den Vorgang\n --version Gibt die Produktversion an den Outputstream aus und beendet den Vorgang\n -showversion Gibt die Produktversion an den Fehlerstream aus und setzt den Vorgang fort\n --show-version\n Gibt die Produktversion an den Outputstream aus und setzt den Vorgang fort\n --show-module-resolution\n Zeigt die Modulaufl\u00F6sungsausgabe beim Start an\n -? -h -help\n Gibt diese Hilfemeldung an den Fehlerstream aus\n --help Gibt diese Hilfemeldung an den Outputstream aus\n -X Gibt Hilfe zu zus\u00E4tzlichen Optionen an den Fehlerstream aus\n --help-extra Gibt Hilfe zu zus\u00E4tzlichen Optionen an den Outputstream aus\n -ea[:<packagename>...|:<classname>]\n -enableassertions[:<packagename>...|:<classname>]\n Aktiviert Assertions mit angegebener Granularit\u00E4t\n -da[:<packagename>...|:<classname>]\n -disableassertions[:<packagename>...|:<classname>]\n Deaktiviert Assertions mit angegebener Granularit\u00E4t\n -esa | -enablesystemassertions\n Aktiviert System-Assertions\n -dsa | -disablesystemassertions\n Deaktiviert System-Assertions\n -agentlib:<libname>[=<options>]\n L\u00E4dt die native Agent Library <libname>. Beispiel: -agentlib:jdwp\n siehe auch -agentlib:jdwp=help\n -agentpath:<pathname>[=<options>]\n L\u00E4dt die native Agent Library mit dem vollst\u00E4ndigen Pfadnamen\n -javaagent:<jarpath>[=<options>]\n L\u00E4dt den Java-Programmiersprachen-Agent, siehe java.lang.instrument\n -splash:<imagepath>\n Zeigt den Startbildschirm mit einem angegebenen Bild an\n Skalierte HiDPI-Bilder werden automatisch \
unterst\u00FCtzt und verwendet,\n falls verf\u00FCgbar. Der nicht skalierte Bilddateiname (Beispiel: image.ext)\n muss immer als Argument an die Option "-splash" \u00FCbergeben werden.\n Das am besten geeignete angegebene skalierte Bild wird\n automatisch ausgew\u00E4hlt.\n Weitere Informationen finden Sie in der Dokumentation zur SplashScreen-API\n @argument files\n Eine oder mehrere Argumentdateien mit Optionen\n -disable-@files\n Verhindert die weitere Erweiterung von Argumentdateien\nUm ein Argument f\u00FCr eine lange Option anzugeben, k\u00F6nnen Sie --<Name>=<Wert> oder\n--<Name> <Wert> verwenden.\n
# Translators please note do not translate the options themselves
-java.launcher.X.usage=\n -Xbatch Deaktiviert Hintergrundkompilierung\n -Xbootclasspath/a: <Durch {0} getrennte Verzeichnisse und ZIP-/JAR-Dateien>\n an Ende von Bootstrap Classpath anh\u00E4ngen\n -Xcheck:jni F\u00FChrt zus\u00E4tzliche Pr\u00FCfungen f\u00FCr JNI-Funktionen aus\n -Xcomp Erzwingt Kompilierung von Methoden beim ersten Aufruf\n -Xdebug Wird zur Abw\u00E4rtskompatiblit\u00E4t bereitgestellt\n -Xdiag Zeigt zus\u00E4tzliche Diagnosemeldungen an\n -Xfuture Aktiviert strengste Pr\u00FCfungen, wird als m\u00F6glicher zuk\u00FCnftiger Standardwert erwartet\n -Xint Nur Ausf\u00FChrung im interpretierten Modus\n -Xinternalversion\n Zeigt detailliertere JVM-Versionsinformationen an als die\n Option "-version"\n -Xloggc:<Datei> Protokolliert GC-Status in einer Datei mit Zeitstempeln\n -Xmixed Ausf\u00FChrung im gemischten Modus (Standard)\n -Xmn<Gr\u00F6\u00DFe> Legt die anf\u00E4ngliche und die maximale Gr\u00F6\u00DFe (in Byte) des Heaps\n f\u00FCr die junge Generation (Nursery) fest\n -Xms<Gr\u00F6\u00DFe> Legt die anf\u00E4ngliche Java-Heap-Gr\u00F6\u00DFe fest\n -Xmx<Gr\u00F6\u00DFe> Legt die maximale Java-Heap-Gr\u00F6\u00DFe fest\n -Xnoclassgc Deaktiviert die Klassen-Garbage Collection\n -Xprof Gibt CPU-Profilierungsdaten aus (veraltet)\n -Xrs Reduziert die Verwendung von BS-Signalen durch Java/VM (siehe Dokumentation)\n -Xshare:auto Verwendet, wenn m\u00F6glich, freigegebene Klassendaten (Standard)\n -Xshare:off Versucht nicht, freigegebene Klassendaten zu verwenden\n -Xshare:on Erfordert die Verwendung von freigegebenen Klassendaten, verl\u00E4uft sonst nicht erfolgreich.\n -XshowSettings Zeigt alle Einstellungen an und f\u00E4hrt fort\n -XshowSettings:all\n Zeigt alle Einstellungen an und f\u00E4hrt fort\n -XshowSettings:locale\n Zeigt alle gebietsschemabezogenen Einstellungen an und f\u00E4hrt fort\n -XshowSettings:properties\n Zeigt alle Eigenschaftseinstellungen an und f\u00E4hrt fort\n -XshowSettings:vm Zeigt alle VM-bezogenen Einstellungen an und f\u00E4hrt fort\n -Xss<Gr\u00F6\u00DFe> Legt Stack-Gr\u00F6\u00DFe des Java-Threads fest\n -Xverify Legt den Modus der Bytecodeverifizierung fest\n --add-reads <Modul>=<Zielmodul>(,<Zielmodul>)*\n Aktualisiert <Modul>, damit <Zielmodul> ungeachtet der\n Moduldeklaration gelesen wird. \n <Zielmodul> kann ALL-UNNAMED sein, um alle unbenannten\n Module zu lesen.\n --add-exports <Modul>/<Package>=<Zielmodul>(,<Zielmodul>)*\n Aktualisiert <Modul>, um <Package> ungeachtet der Moduldeklaration\n in <Zielmodul> zu exportieren.\n <Zielmodul> kann ALL-UNNAMED sein, um in alle \n unbenannten Module zu exportieren.\n --add-opens <Modul>/<Package>=<Zielmodul>(,<Zielmodul>)*\n Aktualisiert <Modul>, um <Package> ungeachtet der Moduldeklaration\n in <Zielmodul> zu \u00F6ffnen.\n --limit-modules <Modulname>[,<Modulname>...]\n Grenzt die Gesamtmenge der beobachtbaren Module ein\n --patch-module <Modul>=<Datei>({0}<Datei>)*\n \u00DCberschreibt oder erweitert ein Modul in JAR-Dateien\n oder -Verzeichnissen mit \
-Klassen und Ressourcen.\n --disable-@files Deaktiviert die weitere Erweiterung von Argumentdateien\n\nDiese zus\u00E4tzlichen Optionen k\u00F6nnen ohne Vorank\u00FCndigung ge\u00E4ndert werden.
+java.launcher.X.usage=\n -Xbatch Deaktiviert Hintergrundkompilierung\n -Xbootclasspath/a:<Durch {0} getrennte Verzeichnisse und ZIP-/JAR-Dateien>\n an Ende von Bootstrap Classpath anh\u00E4ngen\n -Xcheck:jni F\u00FChrt zus\u00E4tzliche Pr\u00FCfungen f\u00FCr JNI-Funktionen aus\n -Xcomp Erzwingt Kompilierung von Methoden beim ersten Aufruf\n -Xdebug Wird zur Abw\u00E4rtskompatibilit\u00E4t bereitgestellt\n -Xdiag Zeigt zus\u00E4tzliche Diagnosemeldungen an\n -Xfuture Aktiviert strengste Pr\u00FCfungen, wird als m\u00F6glicher zuk\u00FCnftiger Standardwert erwartet\n -Xint Nur Ausf\u00FChrung im interpretierten Modus\n -Xinternalversion\n Zeigt detailliertere JVM-Versionsinformationen an als die\n Option "-version"\n -Xloggc:<Datei> Protokolliert GC-Status in einer Datei mit Zeitstempeln\n -Xmixed Ausf\u00FChrung im gemischten Modus (Standard)\n -Xmn<Gr\u00F6\u00DFe> Legt die anf\u00E4ngliche und die maximale Gr\u00F6\u00DFe (in Byte) des Heaps\n f\u00FCr die Young Generation (Nursery) fest\n -Xms<Gr\u00F6\u00DFe> Legt die anf\u00E4ngliche Java-Heap-Gr\u00F6\u00DFe fest\n -Xmx<Gr\u00F6\u00DFe> Legt die maximale Java-Heap-Gr\u00F6\u00DFe fest\n -Xnoclassgc Deaktiviert die Klassen-Garbage Collection\n -Xrs Reduziert die Verwendung von BS-Signalen durch Java/VM (siehe Dokumentation)\n -Xshare:auto Verwendet, wenn m\u00F6glich, freigegebene Klassendaten (Standard)\n -Xshare:off Versucht nicht freigegebene Klassendaten zu verwenden\n -Xshare:on Erfordert die Verwendung von freigegebenen Klassendaten, verl\u00E4uft sonst nicht erfolgreich.\n -XshowSettings Zeigt alle Einstellungen an und f\u00E4hrt fort\n -XshowSettings:all\n Zeigt alle Einstellungen an und f\u00E4hrt fort\n -XshowSettings:locale\n Zeigt alle gebietsschemabezogenen Einstellungen an und f\u00E4hrt fort\n -XshowSettings:properties\n Zeigt alle Eigenschaftseinstellungen an und f\u00E4hrt fort\n -XshowSettings:vm Zeigt alle VM-bezogenen Einstellungen an und f\u00E4hrt fort\n -Xss<Gr\u00F6\u00DFe> Legt Stackgr\u00F6\u00DFe des Java-Threads fest\n -Xverify Legt den Modus der Bytecodeverifizierung fest\n --add-reads <Modul>=<Zielmodul>(,<Zielmodul>)*\n Aktualisiert <Modul>, damit <Zielmodul> ungeachtet der\n Moduldeklaration gelesen wird.\n <Zielmodul> kann ALL-UNNAMED sein, um alle unbenannten\n Module zu lesen.\n --add-exports <Modul>/<Package>=<Zielmodul>(,<Zielmodul>)*\n Aktualisiert <Modul>, um <Package> ungeachtet der Moduldeklaration in <Zielmodul>\n zu exportieren.\n <Zielmodul> kann ALL-UNNAMED sein, um in alle\n unbenannten Module zu exportieren.\n --add-opens <Modul>/<Package>=<Zielmodul>(,<Zielmodul>)*\n Aktualisiert <Modul>, um <Package> ungeachtet der Moduldeklaration in\n <Zielmodul> zu \u00F6ffnen.\n --illegal-access=<Wert>\n L\u00E4sst Zugriff f\u00FCr Mitglieder mit den Typen in den benannten Modulen\n nach Code in unbenannten Modulen zu oder lehnt ihn ab.\n <Wert> ist entweder "deny", "permit", "warn" oder "debug"\n Diese Option wird in einem zuk\u00FCnftigen Release entfernt.\n --limit-modules <Modulname>[,<Modulname>...]\n Grenzt die Gesamtmenge der beobachtbaren Module ein\n --patch-module <Modul>=<Datei>({0}<Datei>)*\n \u00DCberschreibt oder erweitert ein Modul in JAR-Dateien\n oder -Verzeichnissen mit \
+Klassen und Ressourcen.\n --disable-@files Deaktiviert die weitere Erweiterung von Argumentdateien\n\nDiese zus\u00E4tzlichen Optionen k\u00F6nnen ohne Vorank\u00FCndigung ge\u00E4ndert werden.\n
# Translators please note do not translate the options themselves
java.launcher.X.macosx.usage=\nDie folgenden Optionen sind f\u00FCr Mac OS X spezifisch:\n -XstartOnFirstThread\n main()-Methode f\u00FCr den ersten (AppKit) Thread ausf\u00FChren\n -Xdock:name=<application name>\n Den im Dock angezeigten Standardanwendungsnamen \u00FCberschreiben\n -Xdock:icon=<Pfad zu Symboldatei>\n Das im Dock angezeigte Standardsymbol \u00FCberschreiben\n\n
@@ -47,6 +46,7 @@
java.launcher.cls.error4=Fehler: Hauptmethode in Klasse {0} nicht gefunden. Definieren Sie die Hauptmethode als:\n public static void main(String[] args):\noder eine JavaFX-Anwendung muss {1} erweitern
java.launcher.cls.error5=Fehler: Zum Ausf\u00FChren dieser Anwendung ben\u00F6tigte JavaFX-Runtime-Komponenten fehlen
java.launcher.cls.error6=Fehler: Beim Laden der Klasse {0} ist ein LinkageError aufgetreten\n\t{1}
+java.launcher.cls.error7=Fehler: Hauptklasse {0} kann nicht initialisiert werden\nUrsache: {1}: {2}
java.launcher.jar.error1=Fehler: Beim Versuch, Datei {0} zu \u00F6ffnen, ist ein unerwarteter Fehler aufgetreten
java.launcher.jar.error2=Manifest in {0} nicht gefunden
java.launcher.jar.error3=kein Hauptmanifestattribut, in {0}
@@ -55,5 +55,6 @@
java.launcher.javafx.error1=Fehler: Die JavaFX-Methode launchApplication hat die falsche Signatur, sie\nmuss als statisch deklariert werden und einen Wert vom Typ VOID zur\u00FCckgeben
java.launcher.module.error1=Modul {0} weist kein MainClass-Attribut auf. Verwenden Sie -m <module>/<main-class>
java.launcher.module.error2=Fehler: Hauptklasse {0} konnte in Modul {1} nicht gefunden oder geladen werden
-java.launcher.module.error3=Fehler: Hauptklasse {0} kann nicht aus Modul {1} geladen werden\n\t{2}
+java.launcher.module.error3=Fehler: Hauptklasse {0} kann nicht in Modul {1} geladen werden\n\t{2}
java.launcher.module.error4={0} nicht gefunden
+java.launcher.module.error5=Fehler: Hauptklasse {0} kann nicht in Modul {1} initialisiert werden\nUrsache: {1}: {2}
--- a/src/java.base/share/classes/sun/launcher/resources/launcher_es.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/launcher/resources/launcher_es.properties Wed Jan 17 12:19:06 2018 +0000
@@ -26,17 +26,16 @@
# Translators please note do not translate the options themselves
java.launcher.opt.header = Sintaxis: {0} [opciones] <clase principal> [argumentos...]\n (para ejecutar una clase)\n o {0} [opciones] -jar <archivo jar> [argumentos...]\n (para ejecutar un archivo jar)\n o {0} [opciones] -m <m\u00F3dulo>[/<clase principal>] [argumentos...]\n {0} [opciones] --module <m\u00F3dulo>[/<clase principal>] [argumentos...]\n (para ejecutar la clase principal en un m\u00F3dulo)\n\n Argumentos que siguen la clase principal, -jar <archivo jar>, -m o --module\n <m\u00F3dulo>/<clase principal> se transfieren como argumentos a una clase principal.\n\n donde las opciones incluyen:\n\n
-java.launcher.opt.datamodel =\ -d{0}\t Anticuada, se eliminar\u00E1 en una versi\u00F3n futura\n
java.launcher.opt.vmselect =\ {0}\t para seleccionar la VM "{1}"\n
-java.launcher.opt.hotspot =\ {0}\t es un sin\u00F3nimo de la VM "{1}" [anticuada]\n
+java.launcher.opt.hotspot =\ {0}\t es un sin\u00F3nimo de la VM "{1}" [en desuso]\n
# Translators please note do not translate the options themselves
-java.launcher.opt.footer = \ -cp <ruta de b\u00FAsqueda de clase de directorios y archivos zip/jar>\n -classpath <ruta de b\u00FAsqueda de clase de directorios y archivos zip/jar>\n --class-path <ruta de b\u00FAsqueda de clase de directorios y archivos zip/jar>\n Una lista separada por el car\u00E1cter {0}, archivos JAR\n y archivos ZIP para buscar archivos de clases.\n -p <ruta m\u00F3dulo>\n --module-path <ruta m\u00F3dulo>...\n Una lista de directorios separada por el car\u00E1cter {0}, cada directorio\n es un directorio de m\u00F3dulos.\n --upgrade-module-path <ruta m\u00F3dulo>...\n Una lista de directorios separada por el car\u00E1cter {0}, cada directorio\n es un directorio de m\u00F3dulos que sustituye a\n los m\u00F3dulos actualizables en la imagen de tiempo de ejecuci\u00F3n\n --add-modules <nombre m\u00F3dulo>[,<nombre m\u00F3dulo>...]\n m\u00F3dulos de ra\u00EDz que resolver, adem\u00E1s del m\u00F3dulo inicial.\n <nombre m\u00F3dulo> tambi\u00E9n puede ser ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n mostrar m\u00F3dulos observables y salir\n --d <nombre m\u00F3dulo>\n --describe-module <nombre m\u00F3dulo>\n describir un m\u00F3dulo y salir\n --dry-run crear VM y cargar la clase principal pero sin ejecutar el m\u00E9todo principal.\n La opci\u00F3n --dry-run puede ser \u00FAtil para validar\n las opciones de l\u00EDnea de comandos, como la configuraci\u00F3n del sistema de m\u00F3dulos.\n --validate-modules\n validar todos los m\u00F3dulos y salir\n La opci\u00F3n --validate-modules puede ser \u00FAtil para encontrar\n conflictos y otros errores con m\u00F3dulos en la ruta de m\u00F3dulos.\n -D<nombre>=<valor>\n definir una propiedad de sistema\n -verbose:[class|module|gc|jni]\n activar la salida en modo verbose\n -version imprimir versi\u00F3n de producto en el flujo de errores y salir\n --version imprimir versi\u00F3n de producto en el flujo de salida y salir\n -showversion imprimir versi\u00F3n de producto en el flujo de errores y continuar\n --show-version\n -showversion imprimir versi\u00F3n de producto en el flujo de salida y continuar\n --show-module-resolution\n mostrar la salida de resoluci\u00F3n de m\u00F3dulo durante el inicio\n -? -h -help\n imprimir este mensaje de ayuda en el flujo de errores\n --help imprimir este mensaje de ayuda en el flujo de salida\n -X imprimir ayuda de opciones adicionales en el flujo de errores\n --help-extra imprimir ayuda de opciones adicionales en el flujo de salida\n -ea[:<nombre paquete>...|:<nombre clase>]\n -enableassertions[:<nombre paquete>...|:<nombre clase>]\n activar afirmaciones con una granularidad especificada\n -da[:<nombre paquete>...|:<nombre clase>]\n -disableassertions[:<nombre paquete>...|:<nombre clase>]\n desactivar afirmaciones con una granularidad especificada\n -esa | -enablesystemassertions\n activar afirmaciones del sistema\n -dsa | -disablesystemassertions\n desactivar afirmaciones del sistema\n -agentlib:<nombre bib>[=<opciones>]\n cargar biblioteca de agente nativo <nombre bib>, por ejemplo, -agentlib:jdwp\n ver tambi\u00E9n -agentlib:jdwp=help\n -agentpath:<nombre ruta>[=<opciones>]\n cargar biblioteca de agente nativo por nombre completo de ruta\n -javaagent:<ruta jar>[=<opciones>]\n cargar agente de lenguaje de programaci\u00F3n Java, ver java.lang.instrument\n -splash:<ruta imagen>\n \
- mostrar pantalla de presentaci\u00F3n con imagen especificada\n Las im\u00E1genes a escala HiDPI est\u00E1n soportadas y se usan autom\u00E1ticamente\n si est\u00E1n disponibles. El nombre de archivo de la imagen sin escala, por ejemplo, image.ext,\n siempre debe transmitirse como el argumento para la opci\u00F3n -splash.\n La imagen a escala m\u00E1s adecuada que se haya proporcionado se escoger\u00E1\n autom\u00E1ticamente.\n Consulte la documentaci\u00F3n de la API de la pantalla de presentaci\u00F3n para obtener m\u00E1s informaci\u00F3n.\n @argument files\n uno o m\u00E1s archivos de argumentos que contienen opciones\n -disable-@files\n evitar una mayor expansi\u00F3n del archivo de argumentos\nPara especificar un argumento para una opci\u00F3n larga, puede usar --<nombre>=<valor> o\n--<nombre> <valor>.\n
+java.launcher.opt.footer = \ -cp <ruta de b\u00FAsqueda de clase de directorios y archivos zip/jar>\n -classpath <ruta de b\u00FAsqueda de clase de directorios y archivos zip/jar>\n --class-path <ruta de b\u00FAsqueda de clase de directorios y archivos zip/jar>\n Una lista separada por el car\u00E1cter {0}, archivos JAR\n y archivos ZIP para buscar archivos de clases.\n -p <ruta m\u00F3dulo>\n --module-path <ruta m\u00F3dulo>...\n Una lista de directorios separada por el car\u00E1cter {0}, cada directorio\n es un directorio de m\u00F3dulos.\n --upgrade-module-path <ruta m\u00F3dulo>...\n Una lista de directorios separada por el car\u00E1cter {0}, cada directorio\n es un directorio de m\u00F3dulos que sustituye a\n los m\u00F3dulos actualizables en la imagen de tiempo de ejecuci\u00F3n\n --add-modules <nombre m\u00F3dulo>[,<nombre m\u00F3dulo>...]\n m\u00F3dulos de ra\u00EDz que resolver, adem\u00E1s del m\u00F3dulo inicial.\n <nombre m\u00F3dulo> tambi\u00E9n puede ser ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n mostrar m\u00F3dulos observables y salir\n -d <nombre de m\u00F3dulo>\n --describe-module <nombre m\u00F3dulo>\n describir un m\u00F3dulo y salir\n --dry-run crear VM y cargar la clase principal pero sin ejecutar el m\u00E9todo principal.\n La opci\u00F3n --dry-run puede ser \u00FAtil para validar\n las opciones de l\u00EDnea de comandos, como la configuraci\u00F3n del sistema de m\u00F3dulos.\n --validate-modules\n validar todos los m\u00F3dulos y salir\n La opci\u00F3n --validate-modules puede ser \u00FAtil para encontrar\n conflictos y otros errores con m\u00F3dulos en la ruta de m\u00F3dulos.\n -D<nombre>=<valor>\n definir una propiedad de sistema\n -verbose:[class|module|gc|jni]\n activar la salida en modo verbose\n -version imprimir versi\u00F3n de producto en el flujo de errores y salir\n --version imprimir versi\u00F3n de producto en el flujo de salida y salir\n -showversion imprimir versi\u00F3n de producto en el flujo de errores y continuar\n --show-version\n -showversion imprimir versi\u00F3n de producto en el flujo de salida y continuar\n --show-module-resolution\n mostrar la salida de resoluci\u00F3n de m\u00F3dulo durante el inicio\n -? -h -help\n imprimir este mensaje de ayuda en el flujo de errores\n --help imprimir este mensaje de ayuda en el flujo de salida\n -X imprimir ayuda de opciones adicionales en el flujo de errores\n --help-extra imprimir ayuda de opciones adicionales en el flujo de salida\n -ea[:<nombre paquete>...|:<nombre clase>]\n -enableassertions[:<nombre paquete>...|:<nombre clase>]\n activar afirmaciones con una granularidad especificada\n -da[:<nombre paquete>...|:<nombre clase>]\n -disableassertions[:<nombre paquete>...|:<nombre clase>]\n desactivar afirmaciones con una granularidad especificada\n -esa | -enablesystemassertions\n activar afirmaciones del sistema\n -dsa | -disablesystemassertions\n desactivar afirmaciones del sistema\n -agentlib:<nombre bib>[=<opciones>]\n cargar biblioteca de agente nativo <nombre bib>, por ejemplo, -agentlib:jdwp\n ver tambi\u00E9n -agentlib:jdwp=help\n -agentpath:<nombre ruta>[=<opciones>]\n cargar biblioteca de agente nativo por nombre completo de ruta\n -javaagent:<ruta jar>[=<opciones>]\n cargar agente de lenguaje de programaci\u00F3n Java, ver java.lang.instrument\n -splash:<ruta imagen>\n \
+ mostrar pantalla de presentaci\u00F3n con imagen especificada\n Las im\u00E1genes a escala HiDPI est\u00E1n soportadas y se usan autom\u00E1ticamente\n si est\u00E1n disponibles. El nombre de archivo de la imagen sin escala, por ejemplo, image.ext,\n siempre debe transmitirse como el argumento para la opci\u00F3n -splash.\n La imagen a escala m\u00E1s adecuada que se haya proporcionado se escoger\u00E1\n autom\u00E1ticamente.\n Consulte la documentaci\u00F3n de la API de la pantalla de presentaci\u00F3n para obtener m\u00E1s informaci\u00F3n.\n @argument files\n uno o m\u00E1s archivos de argumentos que contienen opciones\n -disable-@files\n evitar una mayor expansi\u00F3n del archivo de argumentos\nPara especificar un argumento para una opci\u00F3n larga, puede usar --<nombre>=<valor> o\n--<nombre> <valor>.\n
# Translators please note do not translate the options themselves
-java.launcher.X.usage=\ -Xbatch desactivar compilaci\u00F3n de fondo\n -Xbootclasspath/a:<directorios y archivos zip/jar separados por {0}>\n agregar al final de la ruta de la clase de inicializaci\u00F3n de datos\n -Xcheck:jni realizar comprobaciones adicionales para las funciones de JNI\n -Xcomp fuerza la compilaci\u00F3n de m\u00E9todos en la primera llamada\n -Xdebug se proporciona para ofrecer compatibilidad con versiones anteriores\n -Xdiag mostrar mensajes de diagn\u00F3stico adicionales\n -Xfuture activar las comprobaciones m\u00E1s estrictas, anticip\u00E1ndose al futuro valor por defecto\n -Xint solo ejecuci\u00F3n de modo interpretado\n -Xinternalversion\n muestra una informaci\u00F3n de la versi\u00F3n de JVM m\u00E1s detallada que la\n opci\u00F3n -version\n -Xloggc:<archivo> registrar el estado de GC en un archivo con registros de hora\n -Xmixed ejecuci\u00F3n de modo mixto (por defecto)\n -Xmn<size> define el tama\u00F1o inicial y m\u00E1ximo (en bytes) de la pila\n para la generaci\u00F3n m\u00E1s joven (espacio infantil)\n -Xms<size> define el tama\u00F1o inicial de la pila de Java\n -Xmx<size> define el tama\u00F1o m\u00E1ximo de la pila de Java\n -Xnoclassgc desactivar la recolecci\u00F3n de basura de clases\n -Xprof datos de creaci\u00F3n de perfiles de CPU de salida (anticuados)\n -Xrs reducir el uso de se\u00F1ales de sistema operativo por parte de Java/VM (consulte la documentaci\u00F3n)\n -Xshare:auto usar datos de clase compartidos si es posible (valor por defecto)\n -Xshare:off no intentar usar datos de clase compartidos\n -Xshare:on es obligatorio el uso de datos de clase compartidos, de lo contrario se producir\u00E1 un fallo.\n -XshowSettings mostrar toda la configuraci\u00F3n y continuar\n -XshowSettings:all\n mostrar todos los valores y continuar\n -XshowSettings:locale\n mostrar todos los valores relacionados con la configuraci\u00F3n regional y continuar\n -XshowSettings:properties\n mostrar todos los valores de propiedad y continuar\n -XshowSettings:vm mostrar todos los valores relacionados con vm y continuar\n -Xss<size> definir tama\u00F1o de la pila del thread de Java\n -Xverify define el modo del verificador de c\u00F3digo de bytes\n --add-reads <m\u00F3dulo>=<m\u00F3dulo-destino>(,<m\u00F3dulo-destino>)*\n actualiza <m\u00F3dulo> para leer <m\u00F3dulo-destino>, independientement\n de la declaraci\u00F3n del m\u00F3dulo. \n <m\u00F3dulo-destino> puede ser ALL-UNNAMED para leer todos los\n m\u00F3dulos sin nombre.\n --add-exports <m\u00F3dulo>/<paquete>=<modulo-destino>(,<m\u00F3dulo-destino>)*\n actualiza <m\u00F3dulo> para exportar <paquete> en <m\u00F3dulo-destino>,\n independientemente de la declaraci\u00F3n del m\u00F3dulo.\n <m\u00F3dulo-destino> puede ser ALL-UNNAMED para exportar a todos los\n m\u00F3dulos sin nombre.\n --add-opens <m\u00F3dulo>/<paquete>=<m\u00F3dulo-destino>(,<m\u00F3dulo-destino>)*\n actualiza <m\u00F3dulo> para abrir <paquete> en\n <m\u00F3dulo-destino>, independientemente de la declaraci\u00F3n del m\u00F3dulo.\n --limit-modules <nombre \
-m\u00F3dulo>[,<nombre m\u00F3dulo>...]\n limitar el universo de m\u00F3dulos observables\n --patch-module <m\u00F3dulo>=<archivo>({0}<archivo>)*\n anular o aumentar un m\u00F3dulo con clases y recursos\n en directorios o archivos JAR.\n --disable-@files desactivar una mayor expansi\u00F3n del archivo de argumentos\n\nEstas opciones adicionales est\u00E1n sujetas a cambios sin previo aviso.\n
+java.launcher.X.usage=-Xbatch desactivar compilaci\u00F3n de fondo\n -Xbootclasspath/a:<directorios y archivos zip/jar separados por {0}>\n agregar al final de la ruta de clase de inicializaci\u00F3n de datos\n -Xcheck:jni realizar comprobaciones adicionales para las funciones de JNI\n -Xcomp fuerza la compilaci\u00F3n de m\u00E9todos en la primera llamada\n -Xdebug se proporciona para ofrecer compatibilidad con versiones anteriores\n -Xdiag mostrar mensajes de diagn\u00F3stico adicionales\n -Xfuture activar las comprobaciones m\u00E1s estrictas, anticip\u00E1ndose al futuro valor por defecto\n -Xint solo ejecuci\u00F3n de modo interpretado\n -Xinternalversionn\n muestra informaci\u00F3n de la versi\u00F3n de JVM m\u00E1s detallada que la\n opci\u00F3n -version\n -Xloggc: registrar el estado de GC en un archivo con registros de hora\n -Xmixed ejecuci\u00F3n de modo mixto (por defecto)\n -Xmn<tama\u00F1o> define el tama\u00F1o inicial y m\u00E1ximo (en bytes) de la pila\n para la generaci\u00F3n m\u00E1s joven (incubadora)\n -Xms<size> define el tama\u00F1o inicial de la pila de Java\n -Xmx<size> define el tama\u00F1o m\u00E1ximo de la pila de Java\n -Xnoclassgc desactivar la recolecci\u00F3n de basura de clases\n -Xrs reducir el uso de se\u00F1ales de sistema operativo por parte de Java/VM (consulte la documentaci\u00F3n)\n -Xshare:auto usar datos de clase compartidos si es posible (valor por defecto)\n -Xshare:off no intentar usar datos de clase compartidos\n -Xshare:on es obligatorio el uso de datos de clase compartidos, de lo contrario se producir\u00E1 un fallo.\n -XshowSettings mostrar toda la configuraci\u00F3n y continuar\n -XshowSettings:all\n mostrar todos los valores y continuar\n -XshowSettings:locale\n mostrar todos los valores relacionados con la configuraci\u00F3n regional y continuar\n -XshowSettings:properties\n mostrar todos los valores de propiedad y continuar\n -XshowSettings:vm mostrar todos los valores relacionados con vm y continuar\n -Xss<tama\u00F1o> definir tama\u00F1o de la pila del thread de Java\n -Xverify define el modo del verificador de c\u00F3digo de bytes\n --add-reads <m\u00F3dulo>=<m\u00F3dulo-destino>(,<m\u00F3dulo-destino>)*\n actualiza <m\u00F3dulo> para leer <m\u00F3dulo-destino>, independientemente\n de la declaraci\u00F3n del m\u00F3dulo. \n <m\u00F3dulo-destino> puede ser ALL-UNNAMED para leer todos los\n m\u00F3dulos sin nombre.\n --add-exports <m\u00F3dulo>/<paquete>=<m\u00F3dulo-destino>(,<m\u00F3dulo-destino>)*\n actualiza <m\u00F3dulo> para exportar <paquete> en <m\u00F3dulo-destino>,\n independientemente de la declaraci\u00F3n del m\u00F3dulo.\n <m\u00F3dulo-destino> puede ser ALL-UNNAMED para exportar a todos los\n m\u00F3dulos sin nombre.\n --add-opens <m\u00F3dulo>/<paquete>=<m\u00F3dulo-destino>(,<m\u00F3dulo-destino>)*\n actualiza <m\u00F3dulo> para abrir <paquete> en\n <m\u00F3dulo-destino>, independientemente de la declaraci\u00F3n del m\u00F3dulo.\n --illegal-access=<valor>\n permitir or denegar el acceso a miembros de tipos en m\u00F3dulos con nombre.\n por c\u00F3digo en m\u00F3dulos sin nombre.\n <value> es "denegar", "permitir", "advertir" o "depurar"\n Esta opci\u00F3n se eliminar\u00E1 en la pr\u00F3xima versi\u00F3n.\n --limit-modules <nombre m\u00F3dulo>[,<nombre m\u00F3dulo>...]\n \
+ limitar el universo de m\u00F3dulos observables\n --patch-module <m\u00F3dulo>=({0})*\n\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0 aumentar o anular un m\u00F3dulo con clases y recursos\n en directorios o archivos JAR\n\nEstas opciones est\u00E1n sujetas a cambio sin previo aviso.
# Translators please note do not translate the options themselves
java.launcher.X.macosx.usage=\nLas siguientes opciones son espec\u00EDficas para Mac OS X:\n -XstartOnFirstThread\n ejecutar el m\u00E9todo main() del primer thread (AppKit)\n -Xdock:name=<application name>\n sustituir al nombre por defecto de la aplicaci\u00F3n que se muestra en el Dock\n -Xdock:icon=<ruta de acceso a archivo de icono>\n sustituir al icono por defecto que se muestra en el Dock\n\n
@@ -47,6 +46,7 @@
java.launcher.cls.error4=Error: no se ha encontrado el m\u00E9todo principal en la clase {0}, defina el m\u00E9todo principal del siguiente modo:\\n public static void main(String[] args)\\nde lo contrario, se deber\u00E1 ampliar una clase de aplicaci\u00F3n JavaFX {1}
java.launcher.cls.error5=Error: faltan los componentes de JavaFX runtime y son necesarios para ejecutar esta aplicaci\u00F3n
java.launcher.cls.error6=Error: Se ha producido un error de enlace al cargar la clase principal {0}\n\t{1}
+java.launcher.cls.error7=Error: no se ha podido inicializar la clase principal {0}\nCausado por: {1}: {2}
java.launcher.jar.error1=Error: se ha producido un error inesperado al intentar abrir el archivo {0}
java.launcher.jar.error2=no se ha encontrado el manifiesto en {0}
java.launcher.jar.error3=no hay ning\u00FAn atributo de manifiesto principal en {0}
@@ -55,5 +55,6 @@
java.launcher.javafx.error1=Error: el m\u00E9todo launchApplication de JavaFX tiene una firma que no es correcta.\\nSe debe declarar est\u00E1tico y devolver un valor de tipo nulo
java.launcher.module.error1=el m\u00F3dulo {0} no tiene ning\u00FAn atributo MainClass, utilice -m <m\u00F3dulo>/<clase-principal>
java.launcher.module.error2=Error: no se ha encontrado o cargado la clase principal {0} en el m\u00F3dulo {1}
-java.launcher.module.error3=Error: No se ha podido cargar la clase principal {0} del m\u00F3dulo {1}\n\t{2}
+java.launcher.module.error3=Error: no se ha podido cargar la clase principal {0} del m\u00F3dulo {1}\n\t{2}
java.launcher.module.error4=No se ha encontrado {0}
+java.launcher.module.error5=Error: no se ha podido inicializar la clase principal {0} del m\u00F3dulo {1}\nCausado por: {1}: {2}
--- a/src/java.base/share/classes/sun/launcher/resources/launcher_fr.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/launcher/resources/launcher_fr.properties Wed Jan 17 12:19:06 2018 +0000
@@ -26,16 +26,16 @@
# Translators please note do not translate the options themselves
java.launcher.opt.header = Syntaxe : {0} [options] <mainclass> [args...]\n (pour ex\u00E9cuter une classe)\n ou {0} [options] -jar <jarfile> [args...]\n (pour ex\u00E9cuter un fichier JAR)\n ou {0} [options] -m <module>[/<mainclass>] [args...]\n {0} [options] --module <module>[/<mainclass>] [args...]\n (pour ex\u00E9cuter la classe principale dans un module)\n\n Les arguments suivant la classe principale -jar <jarfile>, -m ou --module\n <module>/<mainclass> sont transmis en tant qu''arguments \u00E0 la classe principale.\n\n o\u00F9 options comprend les \u00E9l\u00E9ments suivants :\n\n
-java.launcher.opt.datamodel =\ -d{0}\t En phase d''abandon, sera enlev\u00E9 dans une version future\n
java.launcher.opt.vmselect =\ {0}\t pour s\u00E9lectionner la machine virtuelle "{1}"\n
java.launcher.opt.hotspot =\ {0}\t est un synonyme pour la machine virtuelle "{1}" [en phase d''abandon]\n
# Translators please note do not translate the options themselves
-java.launcher.opt.footer = \ -cp <chemin de recherche de classe de r\u00E9pertoires et de fichiers ZIP/JAR>\n -classpath <chemin de recherche de classe de r\u00E9pertoires et de fichiers ZIP/JAR>\n --class-path <chemin de recherche de classe de r\u00E9pertoires et de fichiers ZIP/JAR>\n Liste distincte {0} de r\u00E9pertoires, d''archives JAR\n et d'archives ZIP pour rechercher des fichiers de classe.\n -p <chemin de module>\n --module-path <chemin de module>...\n Liste distincte {0} de r\u00E9pertoires, chaque r\u00E9pertoire\n est un r\u00E9pertoire de modules.\n --upgrade-module-path <chemin de module>...\n Liste distincte {0} de r\u00E9pertoires, chaque r\u00E9pertoire\n est un r\u00E9pertoire de module qui remplace les modules\n pouvant \u00EAtre mis \u00E0 niveau dans l'image d'ex\u00E9cution\n --add-modules <nom de module>[,<nom de module>...]\n modules racine \u00E0 r\u00E9soudre en plus du module initial.\n <nom de module> peut \u00E9galement \u00EAtre ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n r\u00E9pertorier les modules observables et quitter\n --d <nom de module>\n --describe-module <nom de module>\n d\u00E9crire un module et quitter\n --dry-run cr\u00E9er une machine virtuelle et charger la classe principale mais ne pas ex\u00E9cuter la m\u00E9thode principale.\n L'option--dry-run peut \u00EAtre utile pour la validation des\n options de ligne de commande telles que la configuration syst\u00E8me de module.\n --validate-modules\n valider tous les modules et quitter\n L'option --validate-modules peut \u00EAtre utile pour la recherche de\n conflits et d'autres erreurs avec des modules dans le chemin de module.\n -D<name>=<value>\n d\u00E9finir une propri\u00E9t\u00E9 syst\u00E8me\n -verbose:[class|module|gc|jni]\n activer la sortie en mode verbose\n -version afficher la version de produit dans le flux d'erreur et quitter\n --version afficher la version de produit dans le flux de sortie et quitter\n -showversion afficher la version de produit dans le flux d'erreur et continuer\n --show-version\n afficher la version de produit dans le flux de sortie et continuer\n --show-module-resolution\n afficher la sortie de r\u00E9solution de module lors du d\u00E9marrage\n -? -h -help\n afficher ce message d'aide dans le flux d'erreur\n --help afficher ce message d'erreur dans le flux de sortie\n -X afficher l'aide sur des options suppl\u00E9mentaires dans le flux d'erreur\n --help-extra afficher l'aide sur des options suppl\u00E9mentaires dans le flux de sortie\n -ea[:<packagename>...|:<classname>]\n -enableassertions[:<packagename>...|:<classname>]\n activer des assertions avec la granularit\u00E9 sp\u00E9cifi\u00E9e\n -da[:<packagename>...|:<classname>]\n -disableassertions[:<packagename>...|:<classname>]\n d\u00E9sactiver des assertions avec la granularit\u00E9 sp\u00E9cifi\u00E9e\n -esa | -enablesystemassertions\n activer des assertions syst\u00E8me\n -dsa | -disablesystemassertions\n d\u00E9sactiver des assertions syst\u00E8me\n -agentlib:<libname>[=<options>]\n charger la biblioth\u00E8que d'agent natif <libname>, par ex. -agentlib:jdwp\n voir \u00E9galement -agentlib:jdwp=help\n -agentpath:<pathname>[=<options>]\n charger la biblioth\u00E8que d'agent natif par nom de chemin complet\n -javaagent:<jarpath>[=<options>]\n charger l'agent de langage de programmation, voir \
+java.launcher.opt.footer = \ -cp <chemin de recherche de classe de r\u00E9pertoires et de fichiers ZIP/JAR>\n -classpath <chemin de recherche de classe de r\u00E9pertoires et de fichiers ZIP/JAR>\n --class-path <chemin de recherche de classe de r\u00E9pertoires et de fichiers ZIP/JAR>\n Liste distincte {0} de r\u00E9pertoires, d''archives JAR\n et d'archives ZIP pour rechercher des fichiers de classe.\n -p <chemin de module>\n --module-path <chemin de module>...\n Liste distincte {0} de r\u00E9pertoires, chaque r\u00E9pertoire\n est un r\u00E9pertoire de modules.\n --upgrade-module-path <chemin de module>...\n Liste distincte {0} de r\u00E9pertoires, chaque r\u00E9pertoire\n est un r\u00E9pertoire de module qui remplace les modules\n pouvant \u00EAtre mis \u00E0 niveau dans l'image d'ex\u00E9cution\n --add-modules <nom de module>[,<nom de module>...]\n modules racine \u00E0 r\u00E9soudre en plus du module initial.\n <nom de module> peut \u00E9galement \u00EAtre ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n r\u00E9pertorier les modules observables et quitter\n -d <nom de module>\n --describe-module <nom de module>\n d\u00E9crire un module et quitter\n --dry-run cr\u00E9er une machine virtuelle et charger la classe principale mais ne pas ex\u00E9cuter la m\u00E9thode principale.\n L'option--dry-run peut \u00EAtre utile pour la validation des\n options de ligne de commande telles que la configuration syst\u00E8me de module.\n --validate-modules\n valider tous les modules et quitter\n L'option --validate-modules peut \u00EAtre utile pour la recherche de\n conflits et d'autres erreurs avec des modules dans le chemin de module.\n -D<name>=<value>\n d\u00E9finir une propri\u00E9t\u00E9 syst\u00E8me\n -verbose:[class|module|gc|jni]\n activer la sortie en mode verbose\n -version afficher la version de produit dans le flux d'erreur et quitter\n --version afficher la version de produit dans le flux de sortie et quitter\n -showversion afficher la version de produit dans le flux d'erreur et continuer\n --show-version\n afficher la version de produit dans le flux de sortie et continuer\n --show-module-resolution\n afficher la sortie de r\u00E9solution de module lors du d\u00E9marrage\n -? -h -help\n afficher ce message d'aide dans le flux d'erreur\n --help afficher ce message d'erreur dans le flux de sortie\n -X afficher l'aide sur des options suppl\u00E9mentaires dans le flux d'erreur\n --help-extra afficher l'aide sur des options suppl\u00E9mentaires dans le flux de sortie\n -ea[:<packagename>...|:<classname>]\n -enableassertions[:<packagename>...|:<classname>]\n activer des assertions avec la granularit\u00E9 sp\u00E9cifi\u00E9e\n -da[:<packagename>...|:<classname>]\n -disableassertions[:<packagename>...|:<classname>]\n d\u00E9sactiver des assertions avec la granularit\u00E9 sp\u00E9cifi\u00E9e\n -esa | -enablesystemassertions\n activer des assertions syst\u00E8me\n -dsa | -disablesystemassertions\n d\u00E9sactiver des assertions syst\u00E8me\n -agentlib:<libname>[=<options>]\n charger la biblioth\u00E8que d'agent natif <libname>, par ex. -agentlib:jdwp\n voir \u00E9galement -agentlib:jdwp=help\n -agentpath:<pathname>[=<options>]\n charger la biblioth\u00E8que d'agent natif par nom de chemin complet\n -javaagent:<jarpath>[=<options>]\n charger l'agent de langage de programmation, voir \
java.lang.instrument\n -splash:<imagepath>\n afficher l'\u00E9cran d'accueil avec l'image indiqu\u00E9e\n Les images redimensionn\u00E9es HiDPI sont automatiquement prises en charge et utilis\u00E9es\n si elles sont disponibles. Le nom de fichier d'une image non redimensionn\u00E9e, par ex. image.ext,\n doit toujours \u00EAtre transmis comme argument \u00E0 l'option -splash.\n L'image redimensionn\u00E9e fournie la plus appropri\u00E9e sera automatiquement\n s\u00E9lectionn\u00E9e.\n Pour plus d'informations, reportez-vous \u00E0 la documentation relative \u00E0 l'API SplashScreen\n fichiers @argument\n fichiers d'arguments contenant des options\n -disable-@files\n emp\u00EAcher le d\u00E9veloppement suppl\u00E9mentaire de fichiers d'arguments\nAfin d'indiquer un argument pour une option longue, vous pouvez utiliser --<name>=<value> ou\n--<name> <value>.\n
# Translators please note do not translate the options themselves
-java.launcher.X.usage=\n -Xbatch d\u00E9sactivation de la compilation en arri\u00E8re-plan\n -Xbootclasspath/a:<r\u00E9pertoires et fichiers ZIP/JAR s\u00E9par\u00E9s par des {0}>\n ajout \u00E0 la fin du chemin de classe bootstrap\n -Xcheck:jni ex\u00E9cution de contr\u00F4les suppl\u00E9mentaires pour les fonctions JNI\n -Xcomp force la compilation de m\u00E9thodes au premier appel\n -Xdebug fourni pour la compatibilit\u00E9 amont\n -Xdiag affichage de messages de diagnostic suppl\u00E9mentaires\n -Xfuture activation des contr\u00F4les les plus stricts en vue d''anticiper la future valeur par d\u00E9faut\n -Xint ex\u00E9cution en mode interpr\u00E9t\u00E9 uniquement\n -Xinternalversion\n affiche des informations de version JVM plus d\u00E9taill\u00E9es que\n l''option -version\n -Xloggc:<file> journalisation du statut de l''op\u00E9ration de ramasse-miette dans un fichier avec horodatage\n -Xmixed ex\u00E9cution en mode mixte (valeur par d\u00E9faut)\n -Xmn<size> d\u00E9finit les tailles initiale et maximale (en octets) de la portion de m\u00E9moire\n pour la jeune g\u00E9n\u00E9ration (nursery)\n -Xms<size> d\u00E9finition de la taille initiale des portions de m\u00E9moire Java\n -Xmx<size> d\u00E9finition de la taille maximale des portions de m\u00E9moire Java\n -Xnoclassgc d\u00E9sactivation de l''op\u00E9ration de ramasse-miette de la classe\n -Xprof sortie des donn\u00E9es de profilage d''UC (en phase d''abandon)\n -Xrs r\u00E9duction de l''utilisation des signaux OS par Java/la machine virtuelle (voir documentation)\n -Xshare:auto utilisation des donn\u00E9es de classe partag\u00E9es si possible (valeur par d\u00E9faut)\n -Xshare:off aucune tentative d''utilisation des donn\u00E9es de classe partag\u00E9es\n -Xshare:on utilisation des donn\u00E9es de classe partag\u00E9es obligatoire ou \u00E9chec de l''op\u00E9ration.\n -XshowSettings affichage de tous les param\u00E8tres et poursuite de l''op\u00E9ration\n -XshowSettings:all\n affichage de tous les param\u00E8tres et poursuite de l''op\u00E9ration\n -XshowSettings:locale\n affichage de tous les param\u00E8tres d''environnement local et poursuite de l''op\u00E9ration\n -XshowSettings:properties\n affichage de tous les param\u00E8tres de propri\u00E9t\u00E9 et poursuite de l''op\u00E9ration\n -XshowSettings:vm affichage de tous les param\u00E8tres de machine virtuelle et poursuite de l''op\u00E9ration\n -Xss<size> d\u00E9finition de la taille de pile de threads Java\n -Xverify d\u00E9finit le mode du v\u00E9rificateur de code ex\u00E9cutable\n --add-reads <module>=<target-module>(,<target-module>)*\n met \u00E0 jour <module> pour lire <target-module>, sans tenir compte\n de la d\u00E9claration de module. \n <target-module> peut \u00EAtre ALL-UNNAMED pour lire tous les modules\n sans nom.\n --add-exports <module>/<package>=<target-module>(,<target-module>)*\n met \u00E0 jour <module> pour exporter <package> vers <target-module>,\n sans tenir compte de la d\u00E9claration de module.\n <target-module> peut \u00EAtre ALL-UNNAMED pour exporter tous les\n modules sans nom.\n --add-opens <module>/<package>=<target-module>(,<target-module>)*\n met \u00E0 jour <module> pour ouvrir <package> dans\n <target-module>, sans tenir compte de la d\u00E9claration de module.\n --limit-modules <nom de module>[,<nom de module>...]\n limiter l''univers de modules observables\n --patch-module <module>=<file>({0}<file>)*\n Remplacement ou augmentation d''un module avec des classes et des ressources\n dans des fichiers ou des r\u00E9pertoires JAR.\n --disable-@files d\u00E9sactivation d''autres d\u00E9veloppements de fichier d''argument\n\nCes options suppl\u00E9mentaires peuvent \u00EAtre modifi\u00E9es sans pr\u00E9avis.\n
+java.launcher.X.usage=\n -Xbatch d\u00E9sactivation de la compilation en arri\u00E8re-plan\n -Xbootclasspath/a :<r\u00E9pertoires et fichiers ZIP/JAR s\u00E9par\u00E9s par des {0}>\n ajout \u00E0 la fin du chemin de classe bootstrap\n -Xcheck:jni ex\u00E9cution de contr\u00F4les suppl\u00E9mentaires pour les fonctions JNI\n -Xcomp force la compilation de m\u00E9thodes au premier appel\n -Xdebug fourni pour la compatibilit\u00E9 amont\n -Xdiag affichage de messages de diagnostic suppl\u00E9mentaires\n -Xfuture activation des contr\u00F4les les plus stricts en vue d''anticiper la future valeur par d\u00E9faut\n -Xint ex\u00E9cution en mode interpr\u00E9t\u00E9 uniquement\n -Xinternalversion\n affiche des informations de version JVM plus d\u00E9taill\u00E9es que\n l''option -version\n -Xloggc:<file> journalisation du statut de l''op\u00E9ration de ramasse-miette dans un fichier avec horodatages\n -Xmixed ex\u00E9cution en mode mixte (valeur par d\u00E9faut)\n -Xmn<size> d\u00E9finit les tailles initiale et maximale (en octets) de la portion de m\u00E9moire\n pour la jeune g\u00E9n\u00E9ration (nursery)\n -Xms<size> d\u00E9finition de la taille initiale des portions de m\u00E9moire Java\n -Xmx<size> d\u00E9finition de la taille maximale des portions de m\u00E9moire Java\n -Xnoclassgc d\u00E9sactivation de l''op\u00E9ration de ramasse-miette de la classe\n -Xrs r\u00E9duction de l''utilisation des signaux OS par Java/la machine virtuelle (voir documentation)\n -Xshare:auto utilisation des donn\u00E9es de classe partag\u00E9es si possible (valeur par d\u00E9faut)\n -Xshare:off aucune tentative d''utilisation des donn\u00E9es de classe partag\u00E9es\n -Xshare:on utilisation des donn\u00E9es de classe partag\u00E9es obligatoire ou \u00E9chec de l''op\u00E9ration.\n -XshowSettings affichage de tous les param\u00E8tres et poursuite de l''op\u00E9ration\n -XshowSettings:all\n affichage de tous les param\u00E8tres et poursuite de l''op\u00E9ration\n -XshowSettings:locale\n affichage de tous les param\u00E8tres d''environnement local et poursuite de l''op\u00E9ration\n -XshowSettings:properties\n affichage de tous les param\u00E8tres de propri\u00E9t\u00E9 et poursuite de l''op\u00E9ration\n -XshowSettings:vm affichage de tous les param\u00E8tres de machine virtuelle et poursuite de l''op\u00E9ration\n -Xss<size> d\u00E9finition de la taille de pile de thread Java\n -Xverify d\u00E9finit le mode du v\u00E9rificateur de code ex\u00E9cutable\n --add-reads <module>=<target-module>(,<target-module>)*\n met \u00E0 jour <module> pour lire <target-module>, sans tenir compte\n de la d\u00E9claration de module. \n <target-module> peut \u00EAtre ALL-UNNAMED pour lire tous les\n modules sans nom.\n --add-exports <module>/<package>=<target-module>(,<target-module>)*\n met \u00E0 jour <module> pour exporter <package> vers <target-module>,\n sans tenir compte de la d\u00E9claration de module.\n <target-module> peut \u00EAtre ALL-UNNAMED pour effectuer un export vers tous\n les modules sans nom.\n --add-opens <module>/<package>=<target-module>(,<target-module>)*\n met \u00E0 jour <module> pour ouvrir <package> vers\n <target-module>, sans tenir compte de la d\u00E9claration de module.\n --illegal-access=<value>\n autorise ou refuse l''acc\u00E8s \u00E0 des membres de types dans des modules nomm\u00E9s\n par code \
+dans des modules sans nom.\n <value> est l''une des valeurs suivantes : "deny", "permit", "warn" ou "debug"\n Cette option sera enlev\u00E9e dans une version ult\u00E9rieure.\n --limit-modules <module name>[,<module name>...]\n limite l''univers des modules observables\n --patch-module <module>=<file>({0}<file>)*\n remplace ou augmente un module avec des classes et des ressources\n dans des fichiers ou r\u00E9pertoires JAR.\n --disable-@files d\u00E9sactive d''autres d\u00E9veloppements de fichier d''argument\n\nCes options suppl\u00E9mentaires peuvent \u00EAtre modifi\u00E9es sans pr\u00E9avis.\n
# Translators please note do not translate the options themselves
java.launcher.X.macosx.usage=\nLes options suivantes sont propres \u00E0 Mac OS X :\n -XstartOnFirstThread\n ex\u00E9cute la m\u00E9thode main() sur le premier thread (AppKit)\n -Xdock:name=<nom d'application>\n remplace le nom d'application par d\u00E9faut affich\u00E9 dans l'ancrage\n -Xdock:icon=<chemin vers le fichier d'ic\u00F4ne>\n remplace l'ic\u00F4ne par d\u00E9faut affich\u00E9e dans l'ancrage\n\n
@@ -46,6 +46,7 @@
java.launcher.cls.error4=Erreur : la m\u00E9thode principale est introuvable dans la classe {0}, d\u00E9finissez la m\u00E9thode principale comme suit :\n public static void main(String[] args)\nou une classe d''applications JavaFX doit \u00E9tendre {1}
java.launcher.cls.error5=Erreur : des composants d'ex\u00E9cution JavaFX obligatoires pour ex\u00E9cuter cette application sont manquants.
java.launcher.cls.error6=Erreur : LinkageError lors du chargement de la classe principale {0}\n\t{1}
+java.launcher.cls.error7=Erreur : impossible d''initialiser la classe principale {0}\nCaus\u00E9 par : {1}: {2}
java.launcher.jar.error1=Erreur : une erreur inattendue est survenue lors de la tentative d''ouverture du fichier {0}
java.launcher.jar.error2=fichier manifeste introuvable dans {0}
java.launcher.jar.error3=aucun attribut manifest principal dans {0}
@@ -54,5 +55,6 @@
java.launcher.javafx.error1=Erreur : la signature de la m\u00E9thode launchApplication JavaFX est incorrecte, la\nm\u00E9thode doit \u00EAtre d\u00E9clar\u00E9e statique et renvoyer une valeur de type void
java.launcher.module.error1=le module {0} n''a pas d''attribut MainClass, utilisez -m <module>/<main-class>
java.launcher.module.error2=Erreur : impossible de trouver ou charger la classe principale {0} dans le module {1}
-java.launcher.module.error3=Erreur : impossible de charger la classe principale {0} \u00E0 partir du module {1}\n\t{2}
+java.launcher.module.error3=Erreur : impossible de charger la classe principale {0} dans le module {1}\n\t{2}
java.launcher.module.error4={0} introuvable
+java.launcher.module.error5=Erreur : impossible d''initialiser la classe principale {0} dans le module {1}\nCaus\u00E9 par : {1}: {2}
--- a/src/java.base/share/classes/sun/launcher/resources/launcher_it.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/launcher/resources/launcher_it.properties Wed Jan 17 12:19:06 2018 +0000
@@ -26,17 +26,16 @@
# Translators please note do not translate the options themselves
java.launcher.opt.header = Uso: {0} [opzioni] <classe principale> [argomenti...]\n (per eseguire una classe)\n oppure {0} [opzioni] -jar <file jar> [argomenti...]\n (per eseguire un file jar)\n oppure {0} [opzioni] -m <modulo>[/<classe principale>] [argomenti...]\n {0} [opzioni] --module <modulo>[/<classe principale>] [argomenti...]\n (per eseguire la classe principale in un modulo)\n\n Gli argomenti specificati dopo la classe principale, dopo -jar <file jar>, -m o --module\n <modulo>/<classe principale> vengono passati come argomenti alla classe principale.\n\n dove opzioni include:\n\n
-java.launcher.opt.datamodel =\ -d{0}\t opzione non pi\u00F9 valida; verr\u00E0 rimossa in una release futura\n
java.launcher.opt.vmselect =\ {0}\t per selezionare la VM "{1}"\n
java.launcher.opt.hotspot =\ {0}\t \u00E8 un sinonimo per la VM "{1}" [non valido]\n
# Translators please note do not translate the options themselves
-java.launcher.opt.footer = \ -cp <classpath di ricerca di directory e file zip/jar>\n -classpath <classpath di ricerca di directory e file zip/jar>\n -class-path <classpath di ricerca di directory e file zip/jar>\n Una lista separata da {0} di directory, archivi JAR\n e archivi ZIP in cui cercare i file di classe.\n -p <percorso modulo>\n --module-path <percorso modulo>...\n Una lista separata da {0} di directory. Ogni directory\n \u00E8 una directory di moduli.\n --upgrade-module-path <percorso modulo>...\n Una lista separata da {0} di directory. Ogni directory\n \u00E8 una directory di moduli che sostituiscono i moduli\n aggiornabili nell'immagine in fase di esecuzione\n --add-modules <nome modulo>[,<nome modulo>...]\n I moduli radice da risolvere in aggiunta al modulo iniziale.\n <nome modulo> pu\u00F2 essere anche ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n Elenca i moduli osservabili ed esce\n --d <nome modulo>\n --describe-module <nome modulo>\n Descrive un modulo ed esce\n --dry-run Crea la VM e carica la classe principale ma non esegue il metodo principale.\n L'opzione --dry-run pu\u00F2 essere utile per la convalida delle\n opzioni della riga di comando, ad esempio quelle utilizzate per la configurazione del sistema di moduli.\n --validate-modules\n Convalida tutti i moduli ed esce\n L'opzione --validate-modules pu\u00F2 essere utile per rilevare\n conflitti e altri errori con i moduli nel percorso dei moduli.\n -D<nome>=<valore>\n Imposta una propriet\u00E0 di sistema\n -verbose:[class|module|gc|jni]\n abilitare output descrittivo\n -version Visualizza la versione del prodotto nel flusso di errori ed esce\n -version Visualizza la versione del prodotto nel flusso di output ed esce\n -showversion Visualizza la versione del prodotto nel flusso di errori e continua\n --show-version\n Visualizza la versione del prodotto nel flusso di output e continua\n --show-module-resolution\n Mostra l'output della risoluzione del modulo durante l'avvio\n -? -h -help\n Visualizza questo messaggio della Guida nel flusso di errori\n --help Visualizza questo messaggio della Guida nel flusso di output\n -X Visualizza la Guida relativa alle opzioni non standard nel flusso di errori\n --help-extra Visualizza la Guida relativa alle opzioni non standard nel flusso di output\n -ea[:<nome package>...|:<nome classe>]\n -enableassertions[:<nome package>...|:<nome classe>]\n Abilita le asserzioni con la granularit\u00E0 specificata\n -da[:<nome package>...|:<nome classe>]\n -disableassertions[:<nome package>...|:<nome classe>]\n Disabilita le asserzioni con la granularit\u00E0 specificata\n -esa | -enablesystemassertions\n Abilita le asserzioni di sistema\n -dsa | -disablesystemassertions\n Disabilita le asserzioni di sistema\n -agentlib:<nome libreria>[=<opzioni>]\n Carica la libreria agenti nativa <nome libreria>, ad esempio -agentlib:jdwp\n Vedere anche -agentlib:jdwp=help\n -agentpath:<nome percorso>[=<opzioni>]\n Carica la libreria agenti nativa con il percorso completo\n -javaagent:<percorso jar>[=<opzioni>]\n Carica l'agente del linguaggio di programmazione Java, vedere java.lang.instrument\n -splash:<percorso immagine>\n Mostra la schermata iniziale con l'immagine specificata\n Le immagini ridimensionate HiDPI sono supportate e utilizzate \
+java.launcher.opt.footer = \ -cp <classpath di ricerca di directory e file zip/jar>\n -classpath <classpath di ricerca di directory e file zip/jar>\n -class-path <classpath di ricerca di directory e file zip/jar>\n Una lista separata da {0} di directory, archivi JAR\n e archivi ZIP in cui cercare i file di classe.\n -p <percorso modulo>\n --module-path <percorso modulo>...\n Una lista separata da {0} di directory. Ogni directory\n \u00E8 una directory di moduli.\n --upgrade-module-path <percorso modulo>...\n Una lista separata da {0} di directory. Ogni directory\n \u00E8 una directory di moduli che sostituiscono i moduli\n aggiornabili nell'immagine in fase di esecuzione\n --add-modules <nome modulo>[,<nome modulo>...]\n I moduli radice da risolvere in aggiunta al modulo iniziale.\n <nome modulo> pu\u00F2 essere anche ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n Elenca i moduli osservabili ed esce\n -d <nome modulo>\n --describe-module <nome modulo>\n Descrive un modulo ed esce\n --dry-run Crea la VM e carica la classe principale ma non esegue il metodo principale.\n L'opzione --dry-run pu\u00F2 essere utile per la convalida delle\n opzioni della riga di comando, ad esempio quelle utilizzate per la configurazione del sistema di moduli.\n --validate-modules\n Convalida tutti i moduli ed esce\n L'opzione --validate-modules pu\u00F2 essere utile per rilevare\n conflitti e altri errori con i moduli nel percorso dei moduli.\n -D<nome>=<valore>\n Imposta una propriet\u00E0 di sistema\n -verbose:[class|module|gc|jni]\n abilitare output descrittivo\n -version Visualizza la versione del prodotto nel flusso di errori ed esce\n -version Visualizza la versione del prodotto nel flusso di output ed esce\n -showversion Visualizza la versione del prodotto nel flusso di errori e continua\n --show-version\n Visualizza la versione del prodotto nel flusso di output e continua\n --show-module-resolution\n Mostra l'output della risoluzione del modulo durante l'avvio\n -? -h -help\n Visualizza questo messaggio della Guida nel flusso di errori\n --help Visualizza questo messaggio della Guida nel flusso di output\n -X Visualizza la Guida relativa alle opzioni non standard nel flusso di errori\n --help-extra Visualizza la Guida relativa alle opzioni non standard nel flusso di output\n -ea[:<nome package>...|:<nome classe>]\n -enableassertions[:<nome package>...|:<nome classe>]\n Abilita le asserzioni con la granularit\u00E0 specificata\n -da[:<nome package>...|:<nome classe>]\n -disableassertions[:<nome package>...|:<nome classe>]\n Disabilita le asserzioni con la granularit\u00E0 specificata\n -esa | -enablesystemassertions\n Abilita le asserzioni di sistema\n -dsa | -disablesystemassertions\n Disabilita le asserzioni di sistema\n -agentlib:<nome libreria>[=<opzioni>]\n Carica la libreria agenti nativa <nome libreria>, ad esempio -agentlib:jdwp\n Vedere anche -agentlib:jdwp=help\n -agentpath:<nome percorso>[=<opzioni>]\n Carica la libreria agenti nativa con il percorso completo\n -javaagent:<percorso jar>[=<opzioni>]\n Carica l'agente del linguaggio di programmazione Java, vedere java.lang.instrument\n -splash:<percorso immagine>\n Mostra la schermata iniziale con l'immagine specificata\n Le immagini ridimensionate HiDPI sono supportate e utilizzate \
automaticamente\n se disponibili. I nomi file delle immagini non ridimensionate, ad esempio image.ext,\n devono essere sempre passati come argomenti all'opzione -splash.\n Verr\u00E0 scelta automaticamente l'immagine ridimensionata pi\u00F9 appropriata\n fornita.\n Per ulteriori informazioni, vedere la documentazione relativa all'API SplashScreen\n @file argomenti\n Uno o pi\u00F9 file argomenti contenenti opzioni\n -disable-@files\n Impedisce l'ulteriore espansione di file argomenti\nPer specificare un argomento per un'opzione lunga, \u00E8 possibile usare --<nome>=<valore> oppure\n--<nome> <valore>.\n
# Translators please note do not translate the options themselves
-java.launcher.X.usage=\n -Xbatch Disabilita la compilazione in background.\n -Xbootclasspath/a:<directory e file zip/jar separati da {0}>\n Aggiunge alla fine del classpath di bootstrap.\n -Xcheck:jni Esegue controlli aggiuntivi per le funzioni JNI.\n -Xcomp Forza la compilazione dei metodi al primo richiamo.\n -Xdebug Fornito per la compatibilit\u00E0 con le versioni precedenti.\n -Xdiag Mostra ulteriori messaggi diagnostici.\n -Xfuture Abilita i controlli pi\u00F9 limitativi anticipando le impostazioni predefinite future.\n -Xint Esecuzione solo in modalit\u00E0 convertita.\n -Xinternalversion\n Visualizza informazioni pi\u00F9 dettagliate sulla versione JVM rispetto\n all''opzione -version.\n -Xloggc:<file> Registra lo stato GC in un file con indicatori orari.\n -Xmixed Esecuzione in modalit\u00E0 mista (impostazione predefinita).\n -Xmn<dimensione> Imposta le dimensioni iniziale e massima (in byte) dell''heap\n per la young generation (nursery).\n -Xms<dimensione> Imposta la dimensione heap Java iniziale.\n -Xmx<dimensione> Imposta la dimensione heap Java massima.\n -Xnoclassgc Disabilta la garbage collection della classe.\n -Xprof Visualizza i dati di profilo della CPU (non pi\u00F9 valida).\n -Xrs Riduce l''uso di segnali del sistema operativo da Java/VM (vedere la documentazione).\n -Xshare:auto Utilizza i dati di classe condivisi se possibile (impostazione predefinita).\n -Xshare:off Non tenta di utilizzare i dati di classe condivisi.\n -Xshare:on Richiede l''uso dei dati di classe condivisi, altrimenti l''esecuzione non riesce.\n -XshowSettings Mostra tutte le impostazioni e continua.\n -XshowSettings:all\n Mostra tutte le impostazioni e continua.\n -XshowSettings:locale\n Mostra tutte le impostazioni correlate alle impostazioni nazionali e continua.\n -XshowSettings:properties\n Mostra tutte le impostazioni delle propriet\u00E0 e continua.\n -XshowSettings:vm Mostra tutte le impostazioni correlate alla VM e continua.\n -Xss<dimensione> Imposta la dimensione dello stack di thread Java.\n -Xverify Imposta la modalit\u00E0 del verificatore bytecode.\n --add-reads:<modulo>=<modulo destinazione>(,<modulo destinazione>)*\n Aggiorna <modulo> per leggere <modulo destinazione>, indipendentemente\n dalla dichiarazione del modulo.\n <modulo destinazione> pu\u00F2 essere ALL-UNNAMED per leggere tutti i\n moduli senza nome.\n -add-exports:<modulo>/<package>=<modulo destinazione>(,<modulo destinazione>)*\n Aggiorna <modulo> per esportare <package> in <modulo destinazione>,\n indipendentemente dalla dichiarazione del modulo.\n <modulo destinazione> pu\u00F2 essere ALL-UNNAMED per esportare tutti i\n moduli senza nome.\n --add-opens <modulo>/<package>=<modulo destinazione>(,<modulo destinazione>)*\n Aggiorna <modulo> per aprire <package> in\n <modulo destinazione>, indipendentemente dalla dichiarazione del modulo.\n --limit-modules <nome modulo>[,<nome modulo>...]\n Limita l''universo di moduli osservabili\n -patch-module <modulo>=<file>({0}<file>)*\n Sostituisce o migliora un modulo con \
-classi e risorse\n in file JAR o directory.\n --disable-@files Disabilita l''ulteriore espansione di file argomenti.\n\nQueste opzioni non standard sono soggette a modifiche senza preavviso.\n
+java.launcher.X.usage=\n -Xbatch Disabilita la compilazione in background.\n -Xbootclasspath/a:<directory e file zip/jar separati da {0}>\n Aggiunge alla fine del classpath di bootstrap.\n -Xcheck:jni Esegue controlli aggiuntivi per le funzioni JNI.\n -Xcomp Forza la compilazione dei metodi al primo richiamo.\n -Xdebug Fornito per la compatibilit\u00E0 con le versioni precedenti.\n -Xdiag Mostra ulteriori messaggi diagnostici.\n -Xfuture Abilita i controlli pi\u00F9 limitativi anticipando le impostazioni predefinite future.\n -Xint Esecuzione solo in modalit\u00E0 convertita.\n -Xinternalversion\n Visualizza informazioni pi\u00F9 dettagliate sulla versione JVM rispetto\n all''opzione -version.\n -Xloggc:<file> Registra lo stato GC in un file con indicatori orari.\n -Xmixed Esecuzione in modalit\u00E0 mista (impostazione predefinita).\n -Xmn<size> Imposta le dimensioni iniziale e massima (in byte) dell''heap\n per la young generation (nursery).\n -Xms<size> Imposta la dimensione heap Java iniziale.\n -Xmx<size> Imposta la dimensione heap Java massima.\n -Xnoclassgc Disabilta la garbage collection della classe.\n -Xrs Riduce l''uso di segnali del sistema operativo da Java/VM (vedere la documentazione).\n -Xshare:auto Utilizza i dati di classe condivisi se possibile (impostazione predefinita).\n -Xshare:off Non tenta di utilizzare i dati di classe condivisi.\n -Xshare:on Richiede l''uso dei dati di classe condivisi, altrimenti l''esecuzione non riesce.\n -XshowSettings Mostra tutte le impostazioni e continua.\n -XshowSettings:all\n Mostra tutte le impostazioni e continua.\n -XshowSettings:locale\n Mostra tutte le impostazioni correlate alle impostazioni nazionali e continua.\n -XshowSettings:properties\n Mostra tutte le impostazioni delle propriet\u00E0 e continua.\n -XshowSettings:vm Mostra tutte le impostazioni correlate alla VM e continua.\n -Xss<size> Imposta la dimensione dello stack di thread Java.\n -Xverify Imposta la modalit\u00E0 del verificatore bytecode.\n --add-reads:<module>=<target-module>(,<target-module>)*\n Aggiorna <module> per leggere <target-module>, indipendentemente\n dalla dichiarazione del modulo. \n <target-module> pu\u00F2 essere ALL-UNNAMED per leggere tutti i\n moduli senza nome.\n -add-exports:<module>/<package>=<target-module>(,<target-module>)*\n Aggiorna <module> per esportare <package> in <target-module>,\n indipendentemente dalla dichiarazione del modulo.\n <target-module> pu\u00F2 essere ALL-UNNAMED per esportare tutti i\n moduli senza nome.\n --add-opens <module>/<package>=<target-module>(,<target-module>)*\n Aggiorna <module> per aprire <package> in\n <target-module>, indipendentemente dalla dichiarazione del modulo.\n --illegal-access=<value>\n Consente o nega l''accesso ai membri dei tipi nei moduli denominati\n mediante codice nei moduli senza nome.\n <value> pu\u00F2 essere "deny", "permit", "warn" o "debug".\n Questa opzione verr\u00E0 rimossa in una release futura.\n --limit-modules <module name>[,<module name>...]\n Limita l''universo dei moduli osservabili.\n -patch-module <module>=<file>({0}<file>)*\n Sostituisce o migliora un modulo con classi e risorse\n in file JAR o directory.\n --disable-@files Disabilita l''ulteriore espansione \
+di file argomenti.\n\nQueste opzioni non sono opzioni standard e sono soggette a modifiche senza preavviso.\n
# Translators please note do not translate the options themselves
java.launcher.X.macosx.usage=\nLe opzioni riportate di seguito sono specifiche del sistema operativo Mac OS X:\n -XstartOnFirstThread\n Esegue il metodo main() sul primo thread (AppKit).\n -Xdock:name=<nome applicazione>\n Sostituisce il nome applicazione predefinito visualizzato nel dock\n -Xdock:icon=<percorso file icona>\n Sostituisce l'icona predefinita visualizzata nel dock\n\n
@@ -47,6 +46,7 @@
java.launcher.cls.error4=Errore: il metodo principale non \u00E8 stato trovato nella classe {0}. Definire il metodo principale come:\n public static void main(String[] args)\naltrimenti una classe applicazione JavaFX deve estendere {1}
java.launcher.cls.error5=Errore: non sono presenti i componenti runtime di JavaFX necessari per eseguire questa applicazione
java.launcher.cls.error6=Errore: LinkageError durante il caricamento della classe principale {0}\n\t{1}
+java.launcher.cls.error7=Errore: impossibile inizializzare la classe principale {0}\nCausato da: {1}: {2}
java.launcher.jar.error1=Errore: si \u00E8 verificato un errore imprevisto durante il tentativo di aprire il file {0}
java.launcher.jar.error2=manifest non trovato in {0}
java.launcher.jar.error3=nessun attributo manifest principale in {0}
@@ -55,5 +55,6 @@
java.launcher.javafx.error1=Errore: il metodo JavaFX launchApplication dispone di una firma errata, \nla firma deve essere dichiarata static e restituire un valore di tipo void
java.launcher.module.error1=il modulo {0} non dispone di un attributo MainClass. Utilizzare -m <module>/<mail-class>
java.launcher.module.error2=Errore: impossibile trovare o caricare la classe principale {0} nel modulo {1}
-java.launcher.module.error3=Errore: impossibile caricare la classe principale {0} dal modulo {1}\n\t{2}
+java.launcher.module.error3=Errore: impossibile caricare la classe principale {0} nel modulo {1}\n\t{2}
java.launcher.module.error4={0} non trovato
+java.launcher.module.error5=Errore: impossibile inizializzare la classe principale {0} nel modulo {1}\nCausato da: {1}: {2}
--- a/src/java.base/share/classes/sun/launcher/resources/launcher_ja.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/launcher/resources/launcher_ja.properties Wed Jan 17 12:19:06 2018 +0000
@@ -26,18 +26,17 @@
# Translators please note do not translate the options themselves
java.launcher.opt.header = \u4F7F\u7528\u65B9\u6CD5: {0} [options] <mainclass> [args...]\n (\u30AF\u30E9\u30B9\u3092\u5B9F\u884C\u3059\u308B\u5834\u5408)\n \u307E\u305F\u306F {0} [options] -jar <jarfile> [args...]\n (jar\u30D5\u30A1\u30A4\u30EB\u3092\u5B9F\u884C\u3059\u308B\u5834\u5408)\n \u307E\u305F\u306F {0} [options] -m <module>[/<mainclass>] [args...]\n {0} [options] --module <module>[/<mainclass>] [args...]\n (\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u3092\u5B9F\u884C\u3059\u308B\u5834\u5408)\n\n \u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9-jar <jarfile>\u3001-m\u307E\u305F\u306F--module\n <module>/<mainclass>\u306B\u7D9A\u304F\u5F15\u6570\u306F\u3001\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u3078\u306E\u5F15\u6570\u3068\u3057\u3066\u6E21\u3055\u308C\u307E\u3059\u3002\n\n \u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\n
-java.launcher.opt.datamodel =\ -d{0}\t \u63A8\u5968\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u4ECA\u5F8C\u306E\u30EA\u30EA\u30FC\u30B9\u3067\u524A\u9664\u3055\u308C\u308B\u4E88\u5B9A\u3067\u3059\n
java.launcher.opt.vmselect =\ {0}\t "{1}" VM\u3092\u9078\u629E\u3059\u308B\u5834\u5408\n
java.launcher.opt.hotspot =\ {0}\t \u306F"{1}" VM\u306E\u30B7\u30CE\u30CB\u30E0\u3067\u3059 [\u975E\u63A8\u5968]\n
# Translators please note do not translate the options themselves
-java.launcher.opt.footer = \ -cp <\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB\u306E\u30AF\u30E9\u30B9\u691C\u7D22\u30D1\u30B9>\n -classpath <\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB\u306E\u30AF\u30E9\u30B9\u691C\u7D22\u30D1\u30B9>\n --class-path <\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB\u306E\u30AF\u30E9\u30B9\u691C\u7D22\u30D1\u30B9>\n {0}\u533A\u5207\u308A\u30EA\u30B9\u30C8(\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001JAR\u30A2\u30FC\u30AB\u30A4\u30D6\u3001\n ZIP\u30A2\u30FC\u30AB\u30A4\u30D6)\u3067\u3001\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u691C\u7D22\u7528\u3002\n -p <module path>\n --module-path <module path>...\n \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E{0}\u533A\u5207\u308A\u30EA\u30B9\u30C8\u3001\u5404\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\n \u306F\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u3059\u3002\n --upgrade-module-path <module path>...\n \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E{0}\u533A\u5207\u308A\u30EA\u30B9\u30C8\u3001\u5404\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\n \u306F\u3001\u30E9\u30F3\u30BF\u30A4\u30E0\u30FB\u30A4\u30E1\u30FC\u30B8\u5185\u306E\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u53EF\u80FD\u306A\n \u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u7F6E\u63DB\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u3059\n --add-modules <module name>[,<module name>...]\n \u521D\u671F\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u52A0\u3048\u3066\u89E3\u6C7A\u3059\u308B\u30EB\u30FC\u30C8\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3002\n <module name>\u306B\u306F\u6B21\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059: ALL-DEFAULT\u3001ALL-SYSTEM\u3001\n ALL-MODULE-PATH.\n --list-modules\n \u53C2\u7167\u53EF\u80FD\u306A\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u30EA\u30B9\u30C8\u3057\u7D42\u4E86\u3057\u307E\u3059\n --d <module name>\n --describe-module <module name>\n \u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u8AAC\u660E\u3057\u7D42\u4E86\u3057\u307E\u3059\n --dry-run VM\u3092\u4F5C\u6210\u3057\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u3092\u30ED\u30FC\u30C9\u3057\u307E\u3059\u304C\u3001\u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u306F\u5B9F\u884C\u3057\u307E\u305B\u3093\u3002\n --dry-run\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u6B21\u306E\u691C\u8A3C\u306B\u5F79\u7ACB\u3064\u5834\u5408\u304C\u3042\u308A\u307E\u3059:\n \u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30B7\u30B9\u30C6\u30E0\u69CB\u6210\u306A\u3069\u306E\u30B3\u30DE\u30F3\u30C9\u884C\u30AA\u30D7\u30B7\u30E7\u30F3\u3002\n --validate-modules\n \u3059\u3079\u3066\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u691C\u8A3C\u3057\u7D42\u4E86\u3057\u307E\u3059\n --validate-modules\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u6B21\u306E\u691C\u7D22\u306B\u5F79\u7ACB\u3064\u5834\u5408\u304C\u3042\u308A\u307E\u3059:\n \u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9\u4E0A\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3067\u306E\u7AF6\u5408\u304A\u3088\u3073\u305D\u306E\u4ED6\u306E\u30A8\u30E9\u30FC\u3002\n -D<name>=<value>\n \u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8A2D\u5B9A\u3057\u307E\u3059\n -verbose:[class|module|gc|jni]\n \u8A73\u7D30\u51FA\u529B\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\n -version \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u30A8\u30E9\u30FC\u30FB\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3057\u307E\u3059\n --version \
+java.launcher.opt.footer = \ -cp <\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB\u306E\u30AF\u30E9\u30B9\u691C\u7D22\u30D1\u30B9>\n -classpath <\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB\u306E\u30AF\u30E9\u30B9\u691C\u7D22\u30D1\u30B9>\n --class-path <\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB\u306E\u30AF\u30E9\u30B9\u691C\u7D22\u30D1\u30B9>\n {0}\u533A\u5207\u308A\u30EA\u30B9\u30C8(\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001JAR\u30A2\u30FC\u30AB\u30A4\u30D6\u3001\n ZIP\u30A2\u30FC\u30AB\u30A4\u30D6)\u3067\u3001\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u691C\u7D22\u7528\u3002\n -p <module path>\n --module-path <module path>...\n \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E{0}\u533A\u5207\u308A\u30EA\u30B9\u30C8\u3001\u5404\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\n \u306F\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u3059\u3002\n --upgrade-module-path <module path>...\n \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E{0}\u533A\u5207\u308A\u30EA\u30B9\u30C8\u3001\u5404\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\n \u306F\u3001\u30E9\u30F3\u30BF\u30A4\u30E0\u30FB\u30A4\u30E1\u30FC\u30B8\u5185\u306E\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u53EF\u80FD\u306A\n \u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u7F6E\u63DB\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u3059\n --add-modules <module name>[,<module name>...]\n \u521D\u671F\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u52A0\u3048\u3066\u89E3\u6C7A\u3059\u308B\u30EB\u30FC\u30C8\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3002\n <module name>\u306B\u306F\u6B21\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059: ALL-DEFAULT\u3001ALL-SYSTEM\u3001\n ALL-MODULE-PATH.\n --list-modules\n \u53C2\u7167\u53EF\u80FD\u306A\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u30EA\u30B9\u30C8\u3057\u7D42\u4E86\u3057\u307E\u3059\n -d <module name>\n --describe-module <module name>\n \u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u8AAC\u660E\u3057\u7D42\u4E86\u3057\u307E\u3059\n --dry-run VM\u3092\u4F5C\u6210\u3057\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u3092\u30ED\u30FC\u30C9\u3057\u307E\u3059\u304C\u3001\u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u306F\u5B9F\u884C\u3057\u307E\u305B\u3093\u3002\n --dry-run\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u6B21\u306E\u691C\u8A3C\u306B\u5F79\u7ACB\u3064\u5834\u5408\u304C\u3042\u308A\u307E\u3059:\n \u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30B7\u30B9\u30C6\u30E0\u69CB\u6210\u306A\u3069\u306E\u30B3\u30DE\u30F3\u30C9\u884C\u30AA\u30D7\u30B7\u30E7\u30F3\u3002\n --validate-modules\n \u3059\u3079\u3066\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u691C\u8A3C\u3057\u7D42\u4E86\u3057\u307E\u3059\n --validate-modules\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u6B21\u306E\u691C\u7D22\u306B\u5F79\u7ACB\u3064\u5834\u5408\u304C\u3042\u308A\u307E\u3059:\n \u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9\u4E0A\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3067\u306E\u7AF6\u5408\u304A\u3088\u3073\u305D\u306E\u4ED6\u306E\u30A8\u30E9\u30FC\u3002\n -D<name>=<value>\n \u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8A2D\u5B9A\u3057\u307E\u3059\n -verbose:[class|module|gc|jni]\n \u8A73\u7D30\u51FA\u529B\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\n -version \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u30A8\u30E9\u30FC\u30FB\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3057\u307E\u3059\n --version \
\u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3057\u307E\u3059\n -showversion \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u30A8\u30E9\u30FC\u30FB\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u51FA\u529B\u3057\u3066\u7D9A\u884C\u3057\u307E\u3059\n --show-version\n \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u51FA\u529B\u3057\u3066\u7D9A\u884C\u3057\u307E\u3059\n --show-module-resolution\n \u8D77\u52D5\u6642\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u89E3\u6C7A\u51FA\u529B\u3092\u8868\u793A\u3057\u307E\u3059\n -? -h -help\n \u3053\u306E\u30D8\u30EB\u30D7\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u30A8\u30E9\u30FC\u30FB\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u51FA\u529B\u3057\u307E\u3059\n --help \u3053\u306E\u30D8\u30EB\u30D7\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u51FA\u529B\u3057\u307E\u3059\n -X \u8FFD\u52A0\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30D8\u30EB\u30D7\u3092\u30A8\u30E9\u30FC\u30FB\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u51FA\u529B\u3057\u307E\u3059\n --help-extra \u8FFD\u52A0\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30D8\u30EB\u30D7\u3092\u51FA\u529B\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u51FA\u529B\u3057\u307E\u3059\n -ea[:<packagename>...|:<classname>]\n -enableassertions[:<packagename>...|:<classname>]\n \u6307\u5B9A\u3057\u305F\u7C92\u5EA6\u3067\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\n -da[:<packagename>...|:<classname>]\n -disableassertions[:<packagename>...|:<classname>]\n \u6307\u5B9A\u3057\u305F\u7C92\u5EA6\u3067\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\n -esa | -enablesystemassertions\n \u30B7\u30B9\u30C6\u30E0\u30FB\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3057\u307E\u3059\n -dsa | -disablesystemassertions\n \u30B7\u30B9\u30C6\u30E0\u30FB\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\n -agentlib:<libname>[=<options>]\n \u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA<libname>\u3092\u30ED\u30FC\u30C9\u3057\u307E\u3059\u3002\u4F8B: -agentlib:jdwp\n -agentlib:jdwp=help\u3082\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\n -agentpath:<pathname>[=<options>]\n \u30D5\u30EB\u30D1\u30B9\u540D\u3092\u4F7F\u7528\u3057\u3066\u3001\u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u30ED\u30FC\u30C9\u3057\u307E\u3059\n -javaagent:<jarpath>[=<options>]\n Java\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3092\u30ED\u30FC\u30C9\u3057\u307E\u3059\u3002java.lang.instrument\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\n -splash:<imagepath>\n \u6307\u5B9A\u3055\u308C\u305F\u30A4\u30E1\u30FC\u30B8\u3092\u542B\u3080\u30B9\u30D7\u30E9\u30C3\u30B7\u30E5\u753B\u9762\u3092\u8868\u793A\u3057\u307E\u3059\n HiDPI\u30B9\u30B1\u30FC\u30EB\u306E\u30A4\u30E1\u30FC\u30B8\u304C\u81EA\u52D5\u7684\u306B\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\n (\u53EF\u80FD\u306A\u5834\u5408)\u3002\u30B9\u30B1\u30FC\u30EA\u30F3\u30B0\u3055\u308C\u306A\u3044\u30A4\u30E1\u30FC\u30B8\u306E\u30D5\u30A1\u30A4\u30EB\u540D(image.ext\u306A\u3069)\u3092\n \u5F15\u6570\u3068\u3057\u3066-splash\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u5FC5\u305A\u6E21\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n \
\u6307\u5B9A\u3055\u308C\u305F\u6700\u3082\u9069\u5207\u306A\u30B9\u30B1\u30FC\u30EA\u30F3\u30B0\u6E08\u30A4\u30E1\u30FC\u30B8\u304C\u9078\u629E\u3055\u308C\u307E\u3059\n (\u81EA\u52D5\u7684)\u3002\n \u8A73\u7D30\u306F\u3001SplashScreen API\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\n @argument\u30D5\u30A1\u30A4\u30EB\n \u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u542B\u30801\u3064\u4EE5\u4E0A\u306E\u5F15\u6570\u30D5\u30A1\u30A4\u30EB\n -disable-@files\n \u3055\u3089\u306A\u308B\u5F15\u6570\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\n\u9577\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B\u5834\u5408\u3001--<name>=<value>\u307E\u305F\u306F\n--<name> <value>\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n
# Translators please note do not translate the options themselves
-java.launcher.X.usage=\n -Xbatch \u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u3092\u7121\u52B9\u306B\u3059\u308B\n -Xbootclasspath/a:<{0}\u3067\u533A\u5207\u3089\u308C\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB>\n \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306E\u6700\u5F8C\u306B\u8FFD\u52A0\u3059\u308B\n -Xcheck:jni JNI\u95A2\u6570\u306B\u5BFE\u3059\u308B\u8FFD\u52A0\u306E\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3059\u308B\n -Xcomp \u521D\u56DE\u547C\u51FA\u3057\u6642\u306B\u30E1\u30BD\u30C3\u30C9\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u3092\u5F37\u5236\u3059\u308B\n -Xdebug \u4E0B\u4F4D\u4E92\u63DB\u6027\u306E\u305F\u3081\u306B\u63D0\u4F9B\n -Xdiag \u8FFD\u52A0\u306E\u8A3A\u65AD\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3059\u308B\n -Xfuture \u5C06\u6765\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u898B\u8D8A\u3057\u3066\u3001\u6700\u3082\u53B3\u5BC6\u306A\u30C1\u30A7\u30C3\u30AF\u3092\u6709\u52B9\u306B\u3059\u308B\n -Xint \u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u30FB\u30E2\u30FC\u30C9\u306E\u5B9F\u884C\u306E\u307F\n -Xinternalversion\n -version\u30AA\u30D7\u30B7\u30E7\u30F3\u3088\u308A\u8A73\u7D30\u306AJVM\u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\n \u8868\u793A\u3059\u308B\n -Xloggc:<file> \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u4ED8\u3044\u305F\u30D5\u30A1\u30A4\u30EB\u306BGC\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u30ED\u30B0\u3092\u8A18\u9332\u3059\u308B\n -Xmixed \u6DF7\u5408\u30E2\u30FC\u30C9\u306E\u5B9F\u884C(\u30C7\u30D5\u30A9\u30EB\u30C8)\n -Xmn<size> \u82E5\u3044\u4E16\u4EE3(\u30CA\u30FC\u30B5\u30EA)\u306E\u30D2\u30FC\u30D7\u306E\u521D\u671F\u304A\u3088\u3073\u6700\u5927\u30B5\u30A4\u30BA(\u30D0\u30A4\u30C8\u5358\u4F4D)\n \u3092\u8A2D\u5B9A\u3059\u308B\n -Xms<size> Java\u306E\u521D\u671F\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n -Xmx<size> Java\u306E\u6700\u5927\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n -Xnoclassgc \u30AF\u30E9\u30B9\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n -Xprof CPU\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u30FB\u30C7\u30FC\u30BF\u3092\u51FA\u529B\u3059\u308B\n -Xrs Java/VM\u306B\u3088\u308BOS\u30B7\u30B0\u30CA\u30EB\u306E\u4F7F\u7528\u3092\u524A\u6E1B\u3059\u308B(\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167)\n -Xshare:auto \u53EF\u80FD\u3067\u3042\u308C\u3070\u5171\u6709\u30AF\u30E9\u30B9\u306E\u30C7\u30FC\u30BF\u3092\u4F7F\u7528\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8)\n -Xshare:off \u5171\u6709\u30AF\u30E9\u30B9\u306E\u30C7\u30FC\u30BF\u3092\u4F7F\u7528\u3057\u3088\u3046\u3068\u3057\u306A\u3044\n -Xshare:on \u5171\u6709\u30AF\u30E9\u30B9\u30FB\u30C7\u30FC\u30BF\u306E\u4F7F\u7528\u3092\u5FC5\u9808\u306B\u3057\u3001\u3067\u304D\u306A\u3051\u308C\u3070\u5931\u6557\u3059\u308B\u3002\n -XshowSettings \u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n -XshowSettings:all\n \u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n -XshowSettings:locale\n \u3059\u3079\u3066\u306E\u30ED\u30B1\u30FC\u30EB\u95A2\u9023\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n -XshowSettings:properties\n \u3059\u3079\u3066\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n -XshowSettings:vm \u3059\u3079\u3066\u306EVM\u95A2\u9023\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n \
--Xss<size> Java\u306E\u30B9\u30EC\u30C3\u30C9\u30FB\u30B9\u30BF\u30C3\u30AF\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n -Xverify \u30D0\u30A4\u30C8\u30B3\u30FC\u30C9\u691C\u8A3C\u6A5F\u80FD\u306E\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3059\u308B\n --add-reads <module>=<target-module>(,<target-module>)*\n \u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u306B\u95A2\u4FC2\u306A\u304F\u3001<module>\u3092\u66F4\u65B0\u3057\u3066<target-module>\n \u3092\u8AAD\u307F\u53D6\u308A\u307E\u3059\u3002 \n <target-module>\u3092ALL-UNNAMED\u306B\u8A2D\u5B9A\u3059\u308B\u3068\u3001\u3059\u3079\u3066\u306E\u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\n \u8AAD\u307F\u53D6\u308C\u307E\u3059\u3002\n --add-exports <module>/<package>=<target-module>(,<target-module>)*\n \u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u306B\u95A2\u4FC2\u306A\u304F\u3001<module>\u3092\u66F4\u65B0\u3057\u3066<package>\u3092<target-module>\u306B\n \u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002\n <target-module>\u3092ALL-UNNAMED\u306B\u8A2D\u5B9A\u3059\u308B\u3068\u3001\u3059\u3079\u3066\u306E\u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\n \u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3067\u304D\u307E\u3059\u3002\n --add-opens <module>/<package>=<target-module>(,<target-module>)*\n \u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u306B\u95A2\u4FC2\u306A\u304F\u3001<module>\u3092\u66F4\u65B0\u3057\u3066\n <package>\u3092<target-module>\u306B\u958B\u304D\u307E\u3059\u3002\n --limit-modules <module name>[,<module name>...]\n \u53C2\u7167\u53EF\u80FD\u306A\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u9818\u57DF\u3092\u5236\u9650\u3057\u307E\u3059\n --patch-module <module>=<file>({0}<file>)*\n JAR\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30EA\u30BD\u30FC\u30B9\u3067\n \u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u307E\u305F\u306F\u62E1\u5F35\u3057\u307E\u3059\n --disable-@files \u3055\u3089\u306A\u308B\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\n\n\u3053\u308C\u3089\u306E\u8FFD\u52A0\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u4E88\u544A\u306A\u304F\u5909\u66F4\u3055\u308C\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\n
+java.launcher.X.usage=\n -Xbatch \u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u3092\u7121\u52B9\u306B\u3059\u308B\n -Xbootclasspath/a:<{0}\u3067\u533A\u5207\u3089\u308C\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB>\n \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306E\u6700\u5F8C\u306B\u8FFD\u52A0\u3059\u308B\n -Xcheck:jni JNI\u95A2\u6570\u306B\u5BFE\u3059\u308B\u8FFD\u52A0\u306E\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3059\u308B\n -Xcomp \u521D\u56DE\u547C\u51FA\u3057\u6642\u306B\u30E1\u30BD\u30C3\u30C9\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u3092\u5F37\u5236\u3059\u308B\n -Xdebug \u4E0B\u4F4D\u4E92\u63DB\u6027\u306E\u305F\u3081\u306B\u63D0\u4F9B\n -Xdiag \u8FFD\u52A0\u306E\u8A3A\u65AD\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3059\u308B\n -Xfuture \u5C06\u6765\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u898B\u8D8A\u3057\u3066\u3001\u6700\u3082\u53B3\u5BC6\u306A\u30C1\u30A7\u30C3\u30AF\u3092\u6709\u52B9\u306B\u3059\u308B\n -Xint \u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u30FB\u30E2\u30FC\u30C9\u306E\u5B9F\u884C\u306E\u307F\n -Xinternalversion\n -version\u30AA\u30D7\u30B7\u30E7\u30F3\u3088\u308A\u8A73\u7D30\u306AJVM\u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\n \u8868\u793A\u3059\u308B\n -Xloggc:<file> \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u4ED8\u3044\u305F\u30D5\u30A1\u30A4\u30EB\u306BGC\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u30ED\u30B0\u3092\u8A18\u9332\u3059\u308B\n -Xmixed \u6DF7\u5408\u30E2\u30FC\u30C9\u306E\u5B9F\u884C(\u30C7\u30D5\u30A9\u30EB\u30C8)\n -Xmn<size> \u82E5\u3044\u4E16\u4EE3(\u30CA\u30FC\u30B5\u30EA)\u306E\u30D2\u30FC\u30D7\u306E\u521D\u671F\u304A\u3088\u3073\u6700\u5927\u30B5\u30A4\u30BA(\u30D0\u30A4\u30C8\u5358\u4F4D)\n \u3092\u8A2D\u5B9A\u3059\u308B\n -Xms<size> Java\u306E\u521D\u671F\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n -Xmx<size> Java\u306E\u6700\u5927\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n -Xnoclassgc \u30AF\u30E9\u30B9\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n -Xrs Java/VM\u306B\u3088\u308BOS\u30B7\u30B0\u30CA\u30EB\u306E\u4F7F\u7528\u3092\u524A\u6E1B\u3059\u308B(\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167)\n -Xshare:auto \u53EF\u80FD\u3067\u3042\u308C\u3070\u5171\u6709\u30AF\u30E9\u30B9\u306E\u30C7\u30FC\u30BF\u3092\u4F7F\u7528\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8)\n -Xshare:off \u5171\u6709\u30AF\u30E9\u30B9\u306E\u30C7\u30FC\u30BF\u3092\u4F7F\u7528\u3057\u3088\u3046\u3068\u3057\u306A\u3044\n -Xshare:on \u5171\u6709\u30AF\u30E9\u30B9\u30FB\u30C7\u30FC\u30BF\u306E\u4F7F\u7528\u3092\u5FC5\u9808\u306B\u3057\u3001\u3067\u304D\u306A\u3051\u308C\u3070\u5931\u6557\u3059\u308B\u3002\n -XshowSettings \u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n -XshowSettings:all\n \u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n -XshowSettings:locale\n \u3059\u3079\u3066\u306E\u30ED\u30B1\u30FC\u30EB\u95A2\u9023\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n -XshowSettings:properties\n \u3059\u3079\u3066\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n -XshowSettings:vm \u3059\u3079\u3066\u306EVM\u95A2\u9023\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n -Xss<size> \
+Java\u306E\u30B9\u30EC\u30C3\u30C9\u30FB\u30B9\u30BF\u30C3\u30AF\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n -Xverify \u30D0\u30A4\u30C8\u30B3\u30FC\u30C9\u691C\u8A3C\u6A5F\u80FD\u306E\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3059\u308B\n --add-reads <module>=<target-module>(,<target-module>)*\n \u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u306B\u95A2\u4FC2\u306A\u304F\u3001<module>\u3092\u66F4\u65B0\u3057\u3066<target-module>\n \u3092\u8AAD\u307F\u53D6\u308A\u307E\u3059\u3002 \n <target-module>\u3092ALL-UNNAMED\u306B\u8A2D\u5B9A\u3059\u308B\u3068\u3001\u3059\u3079\u3066\u306E\u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\n \u8AAD\u307F\u53D6\u308C\u307E\u3059\u3002\n --add-exports <module>/<package>=<target-module>(,<target-module>)*\n \u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u306B\u95A2\u4FC2\u306A\u304F\u3001<module>\u3092\u66F4\u65B0\u3057\u3066<package>\u3092<target-module>\u306B\n \u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002\n <target-module>\u3092ALL-UNNAMED\u306B\u8A2D\u5B9A\u3059\u308B\u3068\u3001\u3059\u3079\u3066\u306E\u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\n \u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3067\u304D\u307E\u3059\u3002\n --add-opens <module>/<package>=<target-module>(,<target-module>)*\n \u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u306B\u95A2\u4FC2\u306A\u304F\u3001<module>\u3092\u66F4\u65B0\u3057\u3066<package>\u3092\n <target-module>\u306B\u958B\u304D\u307E\u3059\u3002\n --illegal-access=<value>\n \u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u5185\u306E\u30B3\u30FC\u30C9\u306B\u3088\u308B\u3001\u540D\u524D\u306E\u3042\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u5185\u306E\n \u30BF\u30A4\u30D7\u306E\u30E1\u30F3\u30D0\u30FC\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u8A31\u53EF\u307E\u305F\u306F\u62D2\u5426\u3057\u307E\u3059\u3002\n <value>\u306F"deny"\u3001"permit"\u3001"warn"\u3001"debug"\u306E\u3044\u305A\u308C\u304B\u3067\u3059\n \u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u5C06\u6765\u306E\u30EA\u30EA\u30FC\u30B9\u3067\u524A\u9664\u3055\u308C\u307E\u3059\u3002\n --limit-modules <module name>[,<module name>...]\n \u53C2\u7167\u53EF\u80FD\u306A\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u9818\u57DF\u3092\u5236\u9650\u3057\u307E\u3059\n --patch-module <module>=<file>({0}<file>)*\n JAR\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30EA\u30BD\u30FC\u30B9\u3067\n \u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u307E\u305F\u306F\u62E1\u5F35\u3057\u307E\u3059\u3002\n --disable-@files \u3055\u3089\u306A\u308B\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u3092\u7121\u52B9\u306B\u3057\u307E\u3059\n\n\u3053\u306E\u8FFD\u52A0\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n
# Translators please note do not translate the options themselves
java.launcher.X.macosx.usage=\n\u6B21\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306FMac OS X\u56FA\u6709\u3067\u3059:\n -XstartOnFirstThread\n main()\u30E1\u30BD\u30C3\u30C9\u3092\u6700\u521D(AppKit)\u306E\u30B9\u30EC\u30C3\u30C9\u3067\u5B9F\u884C\u3059\u308B\n -Xdock:name=<application name>\n Dock\u306B\u8868\u793A\u3055\u308C\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u540D\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n -Xdock:icon=<path to icon file>\n Dock\u306B\u8868\u793A\u3055\u308C\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n\n
@@ -48,6 +47,7 @@
java.launcher.cls.error4=\u30A8\u30E9\u30FC: \u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u304C\u30AF\u30E9\u30B9{0}\u3067\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u6B21\u306E\u3088\u3046\u306B\u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u5B9A\u7FA9\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n public static void main(String[] args)\n\u307E\u305F\u306FJavaFX\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9\u306F{1}\u3092\u62E1\u5F35\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
java.launcher.cls.error5=\u30A8\u30E9\u30FC: JavaFX\u30E9\u30F3\u30BF\u30A4\u30E0\u30FB\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u304C\u4E0D\u8DB3\u3057\u3066\u304A\u308A\u3001\u3053\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u5B9F\u884C\u306B\u5FC5\u8981\u3067\u3059
java.launcher.cls.error6=\u30A8\u30E9\u30FC: \u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306BLinkageError\u304C\u767A\u751F\u3057\u307E\u3057\u305F\n\t{1}
+java.launcher.cls.error7=\u30A8\u30E9\u30FC: \u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9{0}\u3092\u521D\u671F\u5316\u3067\u304D\u307E\u305B\u3093\n\u539F\u56E0: {1}: {2}
java.launcher.jar.error1=\u30A8\u30E9\u30FC: \u30D5\u30A1\u30A4\u30EB{0}\u3092\u958B\u3053\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u3001\u4E88\u671F\u3057\u306A\u3044\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
java.launcher.jar.error2={0}\u306B\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
java.launcher.jar.error3={0}\u306B\u30E1\u30A4\u30F3\u30FB\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5C5E\u6027\u304C\u3042\u308A\u307E\u305B\u3093
@@ -56,5 +56,6 @@
java.launcher.javafx.error1=\u30A8\u30E9\u30FC: JavaFX launchApplication\u30E1\u30BD\u30C3\u30C9\u306B\u8AA4\u3063\u305F\u30B7\u30B0\u30CD\u30C1\u30E3\u304C\u3042\u308A\u3001\nstatic\u3092\u5BA3\u8A00\u3057\u3066void\u578B\u306E\u5024\u3092\u8FD4\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
java.launcher.module.error1=\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u306BMainClass\u5C5E\u6027\u304C\u3042\u308A\u307E\u305B\u3093\u3002-m <module>/<main-class>\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044
java.launcher.module.error2=\u30A8\u30E9\u30FC: \u30E2\u30B8\u30E5\u30FC\u30EB{1}\u306B\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u3089\u306A\u304B\u3063\u305F\u304B\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
-java.launcher.module.error3=\u30A8\u30E9\u30FC: \u30E2\u30B8\u30E5\u30FC\u30EB{1}\u304B\u3089\u306E\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9{0}\u306E\u30ED\u30FC\u30C9\u306B\u5931\u6557\u3057\u307E\u3057\u305F\n\t{2}
+java.launcher.module.error3=\u30A8\u30E9\u30FC: \u30E2\u30B8\u30E5\u30FC\u30EB{1}\u306E\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9{0}\u3092\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093\n\t{2}
java.launcher.module.error4={0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+java.launcher.module.error5=\u30A8\u30E9\u30FC: \u30E2\u30B8\u30E5\u30FC\u30EB{1}\u306E\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9{0}\u3092\u521D\u671F\u5316\u3067\u304D\u307E\u305B\u3093\n\u539F\u56E0: {1}: {2}
--- a/src/java.base/share/classes/sun/launcher/resources/launcher_ko.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/launcher/resources/launcher_ko.properties Wed Jan 17 12:19:06 2018 +0000
@@ -26,17 +26,16 @@
# Translators please note do not translate the options themselves
java.launcher.opt.header = \uC0AC\uC6A9\uBC95: {0} [\uC635\uC158] <\uAE30\uBCF8 \uD074\uB798\uC2A4> [args...]\n (\uD074\uB798\uC2A4 \uC2E4\uD589)\n \uB610\uB294 {0} [\uC635\uC158] -jar <jar \uD30C\uC77C> [args...]\n (jar \uD30C\uC77C \uC2E4\uD589)\n \uB610\uB294 {0} [\uC635\uC158] -m <\uBAA8\uB4C8>[/<\uAE30\uBCF8 \uD074\uB798\uC2A4>] [args...]\n {0} [\uC635\uC158] --module <\uBAA8\uB4C8>[/<\uAE30\uBCF8 \uD074\uB798\uC2A4>] [args...]\n (\uBAA8\uB4C8\uC758 \uAE30\uBCF8 \uD074\uB798\uC2A4 \uC2E4\uD589)\n\n \uAE30\uBCF8 \uD074\uB798\uC2A4, -jar <jar \uD30C\uC77C>, -m \uB610\uB294 --module\n <\uBAA8\uB4C8>/<\uAE30\uBCF8 \uD074\uB798\uC2A4> \uB4A4\uC5D0 \uB098\uC624\uB294 \uC778\uC218\uB294 \uAE30\uBCF8 \uD074\uB798\uC2A4\uC5D0 \uC778\uC218\uB85C \uC804\uB2EC\uB429\uB2C8\uB2E4.\n\n \uC774 \uACBD\uC6B0 \uC635\uC158\uC5D0\uB294 \uB2E4\uC74C\uC774 \uD3EC\uD568\uB429\uB2C8\uB2E4.\n\n
-java.launcher.opt.datamodel =\ -d{0}\t \uB354 \uC774\uC0C1 \uC0AC\uC6A9\uB418\uC9C0 \uC54A\uC74C. \uC774\uD6C4 \uB9B4\uB9AC\uC2A4\uC5D0\uC11C \uC81C\uAC70\uB429\uB2C8\uB2E4.\n
java.launcher.opt.vmselect =\ {0}\t "{1}" VM\uC744 \uC120\uD0DD\uD569\uB2C8\uB2E4.\n
java.launcher.opt.hotspot =\ {0}\t "{1}" VM\uC758 \uB3D9\uC758\uC5B4\uC785\uB2C8\uB2E4[\uC0AC\uC6A9\uB418\uC9C0 \uC54A\uC74C].\n
# Translators please note do not translate the options themselves
-java.launcher.opt.footer = \ -cp <\uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C\uC758 \uD074\uB798\uC2A4 \uAC80\uC0C9 \uACBD\uB85C>\n -classpath <\uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C\uC758 \uD074\uB798\uC2A4 \uAC80\uC0C9 \uACBD\uB85C>\n --class-path <\uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C\uC758 \uD074\uB798\uC2A4 \uAC80\uC0C9 \uACBD\uB85C>\n \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uAC80\uC0C9\uD558\uAE30 \uC704\uD55C \uB514\uB809\uD1A0\uB9AC, JAR \uC544\uCE74\uC774\uBE0C \uBC0F ZIP \uC544\uCE74\uC774\uBE0C\uC758 {0}(\uC73C)\uB85C\n \uAD6C\uBD84\uB41C \uBAA9\uB85D\uC785\uB2C8\uB2E4.\n -p <\uBAA8\uB4C8 \uACBD\uB85C>\n --module-path <\uBAA8\uB4C8 \uACBD\uB85C>...\n \uB514\uB809\uD1A0\uB9AC\uC758 {0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uBAA9\uB85D\uC785\uB2C8\uB2E4. \uAC01 \uB514\uB809\uD1A0\uB9AC\uB294\n \uBAA8\uB4C8\uC758 \uB514\uB809\uD1A0\uB9AC\uC785\uB2C8\uB2E4.\n --upgrade-module-path <\uBAA8\uB4C8 \uACBD\uB85C>...\n \uB514\uB809\uD1A0\uB9AC\uC758 {0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uBAA9\uB85D\uC785\uB2C8\uB2E4. \uAC01 \uB514\uB809\uD1A0\uB9AC\uB294\n \uB7F0\uD0C0\uC784 \uC774\uBBF8\uC9C0\uC5D0\uC11C \uC5C5\uADF8\uB808\uC774\uB4DC \uAC00\uB2A5\uD55C \uBAA8\uB4C8\uC744 \uB300\uCCB4\uD558\uB294\n \uBAA8\uB4C8\uC758 \uB514\uB809\uD1A0\uB9AC\uC785\uB2C8\uB2E4.\n --add-modules <\uBAA8\uB4C8 \uC774\uB984>[,<\uBAA8\uB4C8 \uC774\uB984>...]\n \uCD08\uAE30 \uBAA8\uB4C8 \uC774\uC678\uC758 \uD574\uACB0\uD560 \uB8E8\uD2B8 \uBAA8\uB4C8\uC785\uB2C8\uB2E4.\n <\uBAA8\uB4C8 \uC774\uB984>\uC740 ALL-DEFAULT, ALL-SYSTEM\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n ALL-MODULE-PATH.\n --list-modules\n \uAD00\uCC30 \uAC00\uB2A5\uD55C \uBAA8\uB4C8\uC744 \uB098\uC5F4\uD558\uACE0 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n --d <\uBAA8\uB4C8 \uC774\uB984>\n --describe-module <\uBAA8\uB4C8 \uC774\uB984>\n \uBAA8\uB4C8\uC744 \uC124\uBA85\uD558\uACE0 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n --dry-run VM\uC744 \uC0DD\uC131\uD558\uACE0 \uAE30\uBCF8 \uD074\uB798\uC2A4\uB97C \uB85C\uB4DC\uD558\uC9C0\uB9CC \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC2E4\uD589\uD558\uC9C0\uB294 \uC54A\uC2B5\uB2C8\uB2E4.\n --dry-run \uC635\uC158\uC740 \uBAA8\uB4C8 \uC2DC\uC2A4\uD15C \uAD6C\uC131\uACFC \uAC19\uC740\n \uBA85\uB839\uC904 \uC635\uC158 \uAC80\uC99D\uC5D0 \uC720\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n --validate-modules\n \uBAA8\uB4E0 \uBAA8\uB4C8\uC744 \uAC80\uC99D\uD558\uACE0 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n --validate-modules \uC635\uC158\uC740 \uBAA8\uB4C8 \uACBD\uB85C\uC5D0\uC11C \uBAA8\uB4C8\uC5D0 \uB300\uD55C\n \uCDA9\uB3CC \uBC0F \uAE30\uD0C0 \uC624\uB958\uB97C \uCC3E\uB294 \uB370 \uC720\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n -D<\uC774\uB984>=<\uAC12>\n \uC2DC\uC2A4\uD15C \uC18D\uC131\uC744 \uC124\uC815\uD569\uB2C8\uB2E4.\n -verbose:[class|module|gc|jni]\n \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\n -version \uC624\uB958 \uC2A4\uD2B8\uB9BC\uC5D0 \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD558\uACE0 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n --version \uCD9C\uB825 \uC2A4\uD2B8\uB9BC\uC5D0 \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD558\uACE0 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n -showversion \uC624\uB958 \uC2A4\uD2B8\uB9BC\uC5D0 \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD558\uACE0 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n --show-version\n \uCD9C\uB825 \uC2A4\uD2B8\uB9BC\uC5D0 \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD558\uACE0 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n --show-module-resolution\n \uC2DC\uC791 \uC911 \uBAA8\uB4C8 \uBD84\uC11D \uCD9C\uB825\uC744 \
+java.launcher.opt.footer = \ -cp <\uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C\uC758 \uD074\uB798\uC2A4 \uAC80\uC0C9 \uACBD\uB85C>\n -classpath <\uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C\uC758 \uD074\uB798\uC2A4 \uAC80\uC0C9 \uACBD\uB85C>\n --class-path <\uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C\uC758 \uD074\uB798\uC2A4 \uAC80\uC0C9 \uACBD\uB85C>\n \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uAC80\uC0C9\uD558\uAE30 \uC704\uD55C \uB514\uB809\uD1A0\uB9AC, JAR \uC544\uCE74\uC774\uBE0C \uBC0F ZIP \uC544\uCE74\uC774\uBE0C\uC758 {0}(\uC73C)\uB85C\n \uAD6C\uBD84\uB41C \uBAA9\uB85D\uC785\uB2C8\uB2E4.\n -p <\uBAA8\uB4C8 \uACBD\uB85C>\n --module-path <\uBAA8\uB4C8 \uACBD\uB85C>...\n \uB514\uB809\uD1A0\uB9AC\uC758 {0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uBAA9\uB85D\uC785\uB2C8\uB2E4. \uAC01 \uB514\uB809\uD1A0\uB9AC\uB294\n \uBAA8\uB4C8\uC758 \uB514\uB809\uD1A0\uB9AC\uC785\uB2C8\uB2E4.\n --upgrade-module-path <\uBAA8\uB4C8 \uACBD\uB85C>...\n \uB514\uB809\uD1A0\uB9AC\uC758 {0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uBAA9\uB85D\uC785\uB2C8\uB2E4. \uAC01 \uB514\uB809\uD1A0\uB9AC\uB294\n \uB7F0\uD0C0\uC784 \uC774\uBBF8\uC9C0\uC5D0\uC11C \uC5C5\uADF8\uB808\uC774\uB4DC \uAC00\uB2A5\uD55C \uBAA8\uB4C8\uC744 \uB300\uCCB4\uD558\uB294\n \uBAA8\uB4C8\uC758 \uB514\uB809\uD1A0\uB9AC\uC785\uB2C8\uB2E4.\n --add-modules <\uBAA8\uB4C8 \uC774\uB984>[,<\uBAA8\uB4C8 \uC774\uB984>...]\n \uCD08\uAE30 \uBAA8\uB4C8 \uC774\uC678\uC758 \uD574\uACB0\uD560 \uB8E8\uD2B8 \uBAA8\uB4C8\uC785\uB2C8\uB2E4.\n <\uBAA8\uB4C8 \uC774\uB984>\uC740 ALL-DEFAULT, ALL-SYSTEM\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n ALL-MODULE-PATH.\n --list-modules\n \uAD00\uCC30 \uAC00\uB2A5\uD55C \uBAA8\uB4C8\uC744 \uB098\uC5F4\uD558\uACE0 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n -d <\uBAA8\uB4C8 \uC774\uB984>\n --describe-module <\uBAA8\uB4C8 \uC774\uB984>\n \uBAA8\uB4C8\uC744 \uC124\uBA85\uD558\uACE0 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n --dry-run VM\uC744 \uC0DD\uC131\uD558\uACE0 \uAE30\uBCF8 \uD074\uB798\uC2A4\uB97C \uB85C\uB4DC\uD558\uC9C0\uB9CC \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC2E4\uD589\uD558\uC9C0\uB294 \uC54A\uC2B5\uB2C8\uB2E4.\n --dry-run \uC635\uC158\uC740 \uBAA8\uB4C8 \uC2DC\uC2A4\uD15C \uAD6C\uC131\uACFC \uAC19\uC740\n \uBA85\uB839\uC904 \uC635\uC158 \uAC80\uC99D\uC5D0 \uC720\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n --validate-modules\n \uBAA8\uB4E0 \uBAA8\uB4C8\uC744 \uAC80\uC99D\uD558\uACE0 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n --validate-modules \uC635\uC158\uC740 \uBAA8\uB4C8 \uACBD\uB85C\uC5D0\uC11C \uBAA8\uB4C8\uC5D0 \uB300\uD55C\n \uCDA9\uB3CC \uBC0F \uAE30\uD0C0 \uC624\uB958\uB97C \uCC3E\uB294 \uB370 \uC720\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n -D<\uC774\uB984>=<\uAC12>\n \uC2DC\uC2A4\uD15C \uC18D\uC131\uC744 \uC124\uC815\uD569\uB2C8\uB2E4.\n -verbose:[class|module|gc|jni]\n \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\n -version \uC624\uB958 \uC2A4\uD2B8\uB9BC\uC5D0 \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD558\uACE0 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n --version \uCD9C\uB825 \uC2A4\uD2B8\uB9BC\uC5D0 \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD558\uACE0 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n -showversion \uC624\uB958 \uC2A4\uD2B8\uB9BC\uC5D0 \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD558\uACE0 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n --show-version\n \uCD9C\uB825 \uC2A4\uD2B8\uB9BC\uC5D0 \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD558\uACE0 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n --show-module-resolution\n \uC2DC\uC791 \uC911 \uBAA8\uB4C8 \uBD84\uC11D \uCD9C\uB825\uC744 \
\uD45C\uC2DC\uD569\uB2C8\uB2E4.\n -? -h -help\n \uC624\uB958 \uC2A4\uD2B8\uB9BC\uC5D0 \uC774 \uB3C4\uC6C0\uB9D0 \uBA54\uC2DC\uC9C0\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4.\n --help \uCD9C\uB825 \uC2A4\uD2B8\uB9BC\uC5D0 \uC774 \uB3C4\uC6C0\uB9D0 \uBA54\uC2DC\uC9C0\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4.\n -X \uC624\uB958 \uC2A4\uD2B8\uB9BC\uC5D0 \uCD94\uAC00 \uC635\uC158\uC5D0 \uB300\uD55C \uB3C4\uC6C0\uB9D0\uC744 \uC778\uC1C4\uD569\uB2C8\uB2E4.\n --help-extra \uCD9C\uB825 \uC2A4\uD2B8\uB9BC\uC5D0 \uCD94\uAC00 \uC635\uC158\uC5D0 \uB300\uD55C \uB3C4\uC6C0\uB9D0\uC744 \uC778\uC1C4\uD569\uB2C8\uB2E4.\n -ea[:<\uD328\uD0A4\uC9C0 \uC774\uB984>...|:<\uD074\uB798\uC2A4 \uC774\uB984>]\n -enableassertions[:<\uD328\uD0A4\uC9C0 \uC774\uB984>...|:<\uD074\uB798\uC2A4 \uC774\uB984>]\n \uC138\uBD84\uC131\uC774 \uC9C0\uC815\uB41C \uAC80\uC99D\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n -da[:<\uD328\uD0A4\uC9C0 \uC774\uB984>...|:<\uD074\uB798\uC2A4 \uC774\uB984>]\n -disableassertions[:<\uD328\uD0A4\uC9C0 \uC774\uB984>...|:<\uD074\uB798\uC2A4 \uC774\uB984>]\n \uC138\uBD84\uC131\uC774 \uC9C0\uC815\uB41C \uAC80\uC99D\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n -esa | -enablesystemassertions\n \uC2DC\uC2A4\uD15C \uAC80\uC99D\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n -dsa | -disablesystemassertions\n \uC2DC\uC2A4\uD15C \uAC80\uC99D\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n -agentlib:<\uB77C\uC774\uBE0C\uB7EC\uB9AC \uC774\uB984>[=<\uC635\uC158>]\n \uACE0\uC720 \uC5D0\uC774\uC804\uD2B8 \uB77C\uC774\uBE0C\uB7EC\uB9AC <\uB77C\uC774\uBE0C\uB7EC\uB9AC \uC774\uB984>\uC744 \uB85C\uB4DC\uD569\uB2C8\uB2E4(\uC608: -agentlib:jdwp).\n -agentlib:jdwp=help\uB3C4 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n -agentpath:<\uACBD\uB85C \uC774\uB984>[=<\uC635\uC158>]\n \uC804\uCCB4 \uACBD\uB85C \uC774\uB984\uC744 \uC0AC\uC6A9\uD558\uC5EC \uACE0\uC720 \uC5D0\uC774\uC804\uD2B8 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4.\n -javaagent:<jar \uACBD\uB85C>[=<\uC635\uC158>]\n Java \uD504\uB85C\uADF8\uB798\uBC0D \uC5B8\uC5B4 \uC5D0\uC774\uC804\uD2B8\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4. java.lang.instrument\uB97C \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n -splash:<\uC774\uBBF8\uC9C0 \uACBD\uB85C>\n \uC774\uBBF8\uC9C0\uAC00 \uC9C0\uC815\uB41C \uC2A4\uD50C\uB798\uC2DC \uD654\uBA74\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n HiDPI\uB85C \uC870\uC815\uB41C \uC774\uBBF8\uC9C0\uAC00 \uC790\uB3D9\uC73C\uB85C \uC9C0\uC6D0\uB418\uACE0 \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uACBD\uC6B0\n \uC0AC\uC6A9\uB429\uB2C8\uB2E4. \uBBF8\uC870\uC815 \uC774\uBBF8\uC9C0 \uD30C\uC77C \uC774\uB984(\uC608: image.ext)\uC740\n \uD56D\uC0C1 -splash \uC635\uC158\uC5D0 \uC778\uC218\uB85C \uC804\uB2EC\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.\n \uAC00\uC7A5 \uC801\uC808\uD788 \uC870\uC815\uB41C \uC774\uBBF8\uC9C0\uAC00 \uC790\uB3D9\uC73C\uB85C\n \uCC44\uD0DD\uB429\uB2C8\uB2E4.\n \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 SplashScreen API \uC124\uBA85\uC11C\uB97C \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n @\uC778\uC218 \uD30C\uC77C\n -disable-@files \uC635\uC158\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uB294 \uD558\uB098 \uC774\uC0C1\uC758\n \uC778\uC218 \uD30C\uC77C\n \uCD94\uAC00 \uC778\uC218 \uD30C\uC77C \uD655\uC7A5\uC744 \uBC29\uC9C0\uD569\uB2C8\uB2E4.\nlong \uC635\uC158\uC5D0 \uB300\uD55C \uC778\uC218\uB97C \uC9C0\uC815\uD558\uB824\uBA74 --<\uC774\uB984>=<\uAC12> \uB610\uB294\n--<\uC774\uB984> <\uAC12>\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n
# Translators please note do not translate the options themselves
-java.launcher.X.usage=\n -Xbatch \uBC31\uADF8\uB77C\uC6B4\uB4DC \uCEF4\uD30C\uC77C\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xbootclasspath/a:<{0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C>\n \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uD074\uB798\uC2A4 \uACBD\uB85C \uB05D\uC5D0 \uCD94\uAC00\uD569\uB2C8\uB2E4.\n -Xcheck:jni JNI \uD568\uC218\uC5D0 \uB300\uD55C \uCD94\uAC00 \uAC80\uC0AC\uB97C \uC218\uD589\uD569\uB2C8\uB2E4.\n -Xcomp \uCCAB\uBC88\uC9F8 \uD638\uCD9C\uC5D0\uC11C \uBA54\uC18C\uB4DC \uCEF4\uD30C\uC77C\uC744 \uAC15\uC81C\uD569\uB2C8\uB2E4.\n -Xdebug \uC5ED \uD638\uD658\uC131\uC744 \uC704\uD574 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\n -Xdiag \uCD94\uAC00 \uC9C4\uB2E8 \uBA54\uC2DC\uC9C0\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n -Xfuture \uBBF8\uB798 \uAE30\uBCF8\uAC12\uC744 \uC608\uCE21\uD558\uC5EC \uAC00\uC7A5 \uC5C4\uACA9\uD55C \uAC80\uC0AC\uB97C \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xint \uD574\uC11D\uB41C \uBAA8\uB4DC\uB9CC \uC2E4\uD589\uD569\uB2C8\uB2E4.\n -Xinternalversion\n -version \uC635\uC158\uBCF4\uB2E4 \uC0C1\uC138\uD55C JVM \uBC84\uC804 \uC815\uBCF4\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n -Xloggc:<\uD30C\uC77C> \uC2DC\uAC04 \uAE30\uB85D\uACFC \uD568\uAED8 \uD30C\uC77C\uC5D0 GC \uC0C1\uD0DC\uB97C \uAE30\uB85D\uD569\uB2C8\uB2E4.\n -Xmixed \uD63C\uD569 \uBAA8\uB4DC\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4(\uAE30\uBCF8\uAC12).\n -Xmn<\uD06C\uAE30> \uC80A\uC740 \uC138\uB300(Nursery)\uB97C \uC704\uD574 \uD799\uC758 \uCD08\uAE30 \uBC0F \uCD5C\uB300\n \uD06C\uAE30(\uBC14\uC774\uD2B8)\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xms<\uD06C\uAE30> \uCD08\uAE30 Java \uD799 \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xmx<\uD06C\uAE30> \uCD5C\uB300 Java \uD799 \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xnoclassgc \uD074\uB798\uC2A4\uC758 \uBD88\uD544\uC694\uD55C \uC815\uBCF4 \uBAA8\uC74C\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xprof CPU \uD504\uB85C\uD30C\uC77C \uC791\uC131 \uB370\uC774\uD130\uB97C \uCD9C\uB825\uD569\uB2C8\uB2E4(\uC0AC\uC6A9\uB418\uC9C0 \uC54A\uC74C).\n -Xrs Java/VM\uC5D0 \uC758\uD55C OS \uC2E0\uD638 \uC0AC\uC6A9\uC744 \uC904\uC785\uB2C8\uB2E4(\uC124\uBA85\uC11C \uCC38\uC870).\n -Xshare:auto \uAC00\uB2A5\uD55C \uACBD\uC6B0 \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4(\uAE30\uBCF8\uAC12).\n -Xshare:off \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130 \uC0AC\uC6A9\uC744 \uC2DC\uB3C4\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n -Xshare:on \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130\uB97C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4. \uADF8\uB807\uC9C0 \uC54A\uC744 \uACBD\uC6B0 \uC2E4\uD328\uD569\uB2C8\uB2E4.\n -XshowSettings \uBAA8\uB4E0 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n -XshowSettings:all\n \uBAA8\uB4E0 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n -XshowSettings:locale\n \uBAA8\uB4E0 \uB85C\uCF00\uC77C \uAD00\uB828 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n -XshowSettings:properties\n \uBAA8\uB4E0 \uC18D\uC131 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n -XshowSettings:vm \uBAA8\uB4E0 VM \uAD00\uB828 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n -Xss<\uD06C\uAE30> Java \uC2A4\uB808\uB4DC \uC2A4\uD0DD \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xverify \uBC14\uC774\uD2B8\uCF54\uB4DC \uAC80\uC99D\uC790\uC758 \uBAA8\uB4DC\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n \
- --add-reads <\uBAA8\uB4C8>=<\uB300\uC0C1-\uBAA8\uB4C8>(,<\uB300\uC0C1-\uBAA8\uB4C8>)*\n \uBAA8\uB4C8 \uC120\uC5B8\uC5D0 \uAD00\uACC4\uC5C6\uC774 <\uB300\uC0C1-\uBAA8\uB4C8>\uC744 \uC77D\uB3C4\uB85D\n <\uBAA8\uB4C8>\uC744 \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4.\n <\uB300\uC0C1-\uBAA8\uB4C8>\uC740 \uC774\uB984\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC740 \uBAA8\uB4E0 \uBAA8\uB4C8\uC744 \uC77D\uC744 \uC218 \uC788\uB294\n ALL-UNNAMED\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n --add-exports <\uBAA8\uB4C8>/<\uD328\uD0A4\uC9C0>=<\uB300\uC0C1-\uBAA8\uB4C8>(,<\uB300\uC0C1-\uBAA8\uB4C8>)*\n \uBAA8\uB4C8 \uC120\uC5B8\uC5D0 \uAD00\uACC4\uC5C6\uC774 <\uD328\uD0A4\uC9C0>\uB97C <\uB300\uC0C1-\uBAA8\uB4C8>\uB85C \uC775\uC2A4\uD3EC\uD2B8\uD558\uB3C4\uB85D\n <\uBAA8\uB4C8>\uC744 \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4.\n <\uB300\uC0C1-\uBAA8\uB4C8>\uC740 \uC774\uB984\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC740 \uBAA8\uB4E0 \uBAA8\uB4C8\uB85C \uC775\uC2A4\uD3EC\uD2B8\uD560 \uC218 \uC788\uB294\n ALL-UNNAMED\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n --add-opens <\uBAA8\uB4C8>/<\uD328\uD0A4\uC9C0>=<\uB300\uC0C1-\uBAA8\uB4C8>(,<\uB300\uC0C1-\uBAA8\uB4C8>)*\n \uBAA8\uB4C8 \uC120\uC5B8\uC5D0 \uAD00\uACC4\uC5C6\uC774 <\uD328\uD0A4\uC9C0>\uB97C <\uB300\uC0C1-\uBAA8\uB4C8>\uB85C \uC5F4\uB3C4\uB85D\n <\uBAA8\uB4C8>\uC744 \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4.\n --limit-modules <\uBAA8\uB4C8 \uC774\uB984>[,<\uBAA8\uB4C8 \uC774\uB984>...]\n \uAD00\uCC30 \uAC00\uB2A5\uD55C \uBAA8\uB4C8\uC758 \uACF5\uC6A9\uC744 \uC81C\uD55C\uD569\uB2C8\uB2E4.\n --patch-module <\uBAA8\uB4C8>=<\uD30C\uC77C>({0}<\uD30C\uC77C>)*\n JAR \uD30C\uC77C \uB610\uB294 \uB514\uB809\uD1A0\uB9AC\uC758 \uD074\uB798\uC2A4\uC640 \uB9AC\uC18C\uC2A4\uB85C\n \uBAA8\uB4C8\uC744 \uBB34\uD6A8\uD654\uD558\uAC70\uB098 \uC778\uC218\uD654\uD569\uB2C8\uB2E4.\n --disable-@files \uCD94\uAC00 \uC778\uC218 \uD30C\uC77C \uD655\uC7A5\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\n\uC774\uB7EC\uD55C \uCD94\uAC00 \uC635\uC158\uC740 \uD1B5\uC9C0 \uC5C6\uC774 \uBCC0\uACBD\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n
+java.launcher.X.usage=\n -Xbatch \uBC31\uADF8\uB77C\uC6B4\uB4DC \uCEF4\uD30C\uC77C\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xbootclasspath/a:<{0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C>\n \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uD074\uB798\uC2A4 \uACBD\uB85C \uB05D\uC5D0 \uCD94\uAC00\uD569\uB2C8\uB2E4.\n -Xcheck:jni JNI \uD568\uC218\uC5D0 \uB300\uD55C \uCD94\uAC00 \uAC80\uC0AC\uB97C \uC218\uD589\uD569\uB2C8\uB2E4.\n -Xcomp \uCCAB\uBC88\uC9F8 \uD638\uCD9C\uC5D0\uC11C \uBA54\uC18C\uB4DC \uCEF4\uD30C\uC77C\uC744 \uAC15\uC81C\uD569\uB2C8\uB2E4.\n -Xdebug \uC5ED \uD638\uD658\uC131\uC744 \uC704\uD574 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\n -Xdiag \uCD94\uAC00 \uC9C4\uB2E8 \uBA54\uC2DC\uC9C0\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n -Xfuture \uBBF8\uB798 \uAE30\uBCF8\uAC12\uC744 \uC608\uCE21\uD558\uC5EC \uAC00\uC7A5 \uC5C4\uACA9\uD55C \uAC80\uC0AC\uB97C \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xint \uD574\uC11D\uB41C \uBAA8\uB4DC\uB9CC \uC2E4\uD589\uD569\uB2C8\uB2E4.\n -Xinternalversion\n -version \uC635\uC158\uBCF4\uB2E4 \uC0C1\uC138\uD55C JVM \uBC84\uC804 \uC815\uBCF4\uB97C\n \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n -Xloggc:<file> \uC2DC\uAC04\uAE30\uB85D\uACFC \uD568\uAED8 \uD30C\uC77C\uC5D0 GC \uC0C1\uD0DC\uB97C \uAE30\uB85D\uD569\uB2C8\uB2E4.\n -Xmixed \uD63C\uD569 \uBAA8\uB4DC\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4(\uAE30\uBCF8\uAC12).\n -Xmn<size> \uC80A\uC740 \uC138\uB300(Nursery)\uB97C \uC704\uD574 \uD799\uC758 \uCD08\uAE30 \uBC0F \uCD5C\uB300\n \uD06C\uAE30(\uBC14\uC774\uD2B8)\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xms<size> \uCD08\uAE30 Java \uD799 \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xmx<size> \uCD5C\uB300 Java \uD799 \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xnoclassgc \uD074\uB798\uC2A4\uC758 \uBD88\uD544\uC694\uD55C \uC815\uBCF4 \uBAA8\uC74C\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xrs Java/VM\uC5D0 \uC758\uD55C OS \uC2E0\uD638 \uC0AC\uC6A9\uC744 \uC904\uC785\uB2C8\uB2E4(\uC124\uBA85\uC11C \uCC38\uC870).\n -Xshare:auto \uAC00\uB2A5\uD55C \uACBD\uC6B0 \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4(\uAE30\uBCF8\uAC12).\n -Xshare:off \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130 \uC0AC\uC6A9\uC744 \uC2DC\uB3C4\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n -Xshare:on \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130\uB97C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4. \uADF8\uB807\uC9C0 \uC54A\uC744 \uACBD\uC6B0 \uC2E4\uD328\uD569\uB2C8\uB2E4.\n -XshowSettings \uBAA8\uB4E0 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n -XshowSettings:all\n \uBAA8\uB4E0 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n -XshowSettings:locale\n \uBAA8\uB4E0 \uB85C\uCF00\uC77C \uAD00\uB828 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n -XshowSettings:properties\n \uBAA8\uB4E0 \uC18D\uC131 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n -XshowSettings:vm \uBAA8\uB4E0 VM \uAD00\uB828 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n -Xss<size> Java \uC2A4\uB808\uB4DC \uC2A4\uD0DD \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n -Xverify \uBC14\uC774\uD2B8\uCF54\uB4DC \uAC80\uC99D\uC790\uC758 \uBAA8\uB4DC\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n --add-reads <module>=<target-module>(,<target-module>)*\n \uBAA8\uB4C8 \uC120\uC5B8\uC5D0 \uAD00\uACC4\uC5C6\uC774 <target-module>\uC744 \
+\uC77D\uB3C4\uB85D\n <module>\uC744 \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4. \n <target-module>\uC740 \uC774\uB984\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC740 \uBAA8\uB4E0 \uBAA8\uB4C8\uC744 \uC77D\uC744 \uC218 \uC788\uB294\n ALL-UNNAMED\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n --add-exports <module>/<package>=<target-module>(,<target-module>)*\n\n \uBAA8\uB4C8 \uC120\uC5B8\uC5D0 \uAD00\uACC4\uC5C6\uC774 <package>\uB97C <target-module>\uB85C \uC775\uC2A4\uD3EC\uD2B8\uD558\uB3C4\uB85D\n <module>\uC744 \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4.\n <target-module>\uC740 \uC774\uB984\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC740 \uBAA8\uB4E0 \uBAA8\uB4C8\uB85C \uC775\uC2A4\uD3EC\uD2B8\uD560 \uC218 \uC788\uB294\n ALL-UNNAMED\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n --add-opens <module>/<package>=<target-module>(,<target-module>)*\n \uBAA8\uB4C8 \uC120\uC5B8\uC5D0 \uAD00\uACC4\uC5C6\uC774 <package>\uB97C <target-module>\uB85C \uC5F4\uB3C4\uB85D\n <module>\uC744 \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4.\n --illegal-access=<value>\n \uC774\uB984\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC740 \uBAA8\uB4C8\uC758 \uCF54\uB4DC\uB97C \uC0AC\uC6A9\uD558\uC5EC \uC774\uB984\uC774 \uC9C0\uC815\uB41C \uBAA8\uB4C8\uC758 \uC720\uD615 \uBA64\uBC84\uC5D0 \uB300\uD55C\n \uC561\uC138\uC2A4 \uAD8C\uD55C\uC744 \uD5C8\uC6A9 \uB610\uB294 \uAC70\uBD80\uD569\uB2C8\uB2E4.\n <value>\uB294 "deny", "permit", "warn" \uB610\uB294 "debug" \uC911 \uD558\uB098\uC785\uB2C8\uB2E4.\n \uC774 \uC635\uC158\uC740 \uC774\uD6C4 \uB9B4\uB9AC\uC2A4\uC5D0\uC11C \uC81C\uAC70\uB429\uB2C8\uB2E4.\n --limit-modules <module name>[,<module name>...]\n \uAD00\uCC30 \uAC00\uB2A5\uD55C \uBAA8\uB4C8\uC758 \uACF5\uC6A9\uC744 \uC81C\uD55C\uD569\uB2C8\uB2E4.\n --patch-module <module>=<file>({0}<file>)*\n JAR \uD30C\uC77C \uB610\uB294 \uB514\uB809\uD1A0\uB9AC\uC758 \uD074\uB798\uC2A4\uC640 \uB9AC\uC18C\uC2A4\uB85C \uBAA8\uB4C8\uC744\n \uBB34\uD6A8\uD654\uD558\uAC70\uB098 \uC778\uC218\uD654\uD569\uB2C8\uB2E4.\n --disable-@files \uCD94\uAC00 \uC778\uC218 \uD30C\uC77C \uD655\uC7A5\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\n\uC774\uB7EC\uD55C \uCD94\uAC00 \uC635\uC158\uC740 \uD1B5\uC9C0 \uC5C6\uC774 \uBCC0\uACBD\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n
# Translators please note do not translate the options themselves
java.launcher.X.macosx.usage=\n\uB2E4\uC74C\uC740 Mac OS X\uC5D0 \uD2B9\uC815\uB41C \uC635\uC158\uC785\uB2C8\uB2E4.\n -XstartOnFirstThread\n \uCCAB\uBC88\uC9F8 (AppKit) \uC2A4\uB808\uB4DC\uC5D0 main() \uBA54\uC18C\uB4DC\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.\n -Xdock:name=<application name>\n \uACE0\uC815\uC73C\uB85C \uD45C\uC2DC\uB41C \uAE30\uBCF8 \uC560\uD50C\uB9AC\uCF00\uC774\uC158 \uC774\uB984\uC744 \uBB34\uD6A8\uD654\uD569\uB2C8\uB2E4.\n -Xdock:icon=<path to icon file>\n \uACE0\uC815\uC73C\uB85C \uD45C\uC2DC\uB41C \uAE30\uBCF8 \uC544\uC774\uCF58\uC744 \uBB34\uD6A8\uD654\uD569\uB2C8\uB2E4.\n\n
@@ -45,8 +44,9 @@
java.launcher.cls.error2=\uC624\uB958: {1} \uD074\uB798\uC2A4\uC5D0\uC11C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uAC00 {0}\uC774(\uAC00) \uC544\uB2D9\uB2C8\uB2E4. \uB2E4\uC74C \uD615\uC2DD\uC73C\uB85C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC815\uC758\uD558\uC2ED\uC2DC\uC624.\n public static void main(String[] args)
java.launcher.cls.error3=\uC624\uB958: \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB294 {0} \uD074\uB798\uC2A4\uC5D0\uC11C void \uC720\uD615\uC758 \uAC12\uC744 \uBC18\uD658\uD574\uC57C \uD569\uB2C8\uB2E4. \n\uB2E4\uC74C \uD615\uC2DD\uC73C\uB85C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC815\uC758\uD558\uC2ED\uC2DC\uC624.\n public static void main(String[] args)
java.launcher.cls.error4=\uC624\uB958: {0} \uD074\uB798\uC2A4\uC5D0\uC11C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E4\uC74C \uD615\uC2DD\uC73C\uB85C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC815\uC758\uD558\uC2ED\uC2DC\uC624.\r\n public static void main(String[] args)\r\n\uB610\uB294 JavaFX \uC560\uD50C\uB9AC\uCF00\uC774\uC158 \uD074\uB798\uC2A4\uB294 {1}\uC744(\uB97C) \uD655\uC7A5\uD574\uC57C \uD569\uB2C8\uB2E4.
-java.launcher.cls.error5=\uC624\uB958: \uC774 \uC560\uD50C\uB9AC\uCF00\uC774\uC158\uC744 \uC2E4\uD589\uD558\uB294 \uB370 \uD544\uC694\uD55C JavaFX \uB7F0\uD0C0\uC784 \uAD6C\uC131 \uC694\uC18C\uAC00 \uB204\uB77D\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+java.launcher.cls.error5=\uC624\uB958: \uC774 \uC560\uD50C\uB9AC\uCF00\uC774\uC158\uC744 \uC2E4\uD589\uD558\uB294 \uB370 \uD544\uC694\uD55C JavaFX \uB7F0\uD0C0\uC784 \uAD6C\uC131\uC694\uC18C\uAC00 \uB204\uB77D\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
java.launcher.cls.error6=\uC624\uB958: \uAE30\uBCF8 \uD074\uB798\uC2A4 {0}\uC744(\uB97C) \uB85C\uB4DC\uD558\uB294 \uC911 LinkageError\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.\n\t{1}
+java.launcher.cls.error7=\uC624\uB958: \uAE30\uBCF8 \uD074\uB798\uC2A4 {0}\uC744(\uB97C) \uCD08\uAE30\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n\uC6D0\uC778: {1}: {2}
java.launcher.jar.error1=\uC624\uB958: {0} \uD30C\uC77C\uC744 \uC5F4\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC0C1\uCE58 \uC54A\uC740 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
java.launcher.jar.error2={0}\uC5D0\uC11C Manifest\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
java.launcher.jar.error3={0}\uC5D0 \uAE30\uBCF8 Manifest \uC18D\uC131\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
@@ -55,5 +55,6 @@
java.launcher.javafx.error1=\uC624\uB958: JavaFX launchApplication \uBA54\uC18C\uB4DC\uC5D0 \uC798\uBABB\uB41C \uC11C\uBA85\uC774 \uC788\uC2B5\uB2C8\uB2E4.\\n\uB530\uB77C\uC11C static\uC73C\uB85C \uC120\uC5B8\uD558\uACE0 void \uC720\uD615\uC758 \uAC12\uC744 \uBC18\uD658\uD574\uC57C \uD569\uB2C8\uB2E4.
java.launcher.module.error1={0} \uBAA8\uB4C8\uC5D0 MainClass \uC18D\uC131\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. -m <module>/<main-class>\uB97C \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624.
java.launcher.module.error2=\uC624\uB958: {1} \uBAA8\uB4C8\uC758 \uAE30\uBCF8 \uD074\uB798\uC2A4 {0}\uC744(\uB97C) \uCC3E\uAC70\uB098 \uB85C\uB4DC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-java.launcher.module.error3=\uC624\uB958: {1} \uBAA8\uB4C8\uC5D0\uC11C \uAE30\uBCF8 \uD074\uB798\uC2A4 {0}\uC744(\uB97C) \uB85C\uB4DC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n\t{2}
+java.launcher.module.error3=\uC624\uB958: {1} \uBAA8\uB4C8\uC758 \uAE30\uBCF8 \uD074\uB798\uC2A4 {0}\uC744(\uB97C) \uB85C\uB4DC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n\t{2}
java.launcher.module.error4={0}\uC744(\uB97C) \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+java.launcher.module.error5=\uC624\uB958: {1} \uBAA8\uB4C8\uC758 \uAE30\uBCF8 \uD074\uB798\uC2A4 {0}\uC744(\uB97C) \uCD08\uAE30\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n\uC6D0\uC778: {1}: {2}
--- a/src/java.base/share/classes/sun/launcher/resources/launcher_pt_BR.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/launcher/resources/launcher_pt_BR.properties Wed Jan 17 12:19:06 2018 +0000
@@ -26,17 +26,16 @@
# Translators please note do not translate the options themselves
java.launcher.opt.header = Uso: {0} [options] <mainclass> [args...]\n (para executar uma classe)\n ou {0} [options] -jar <jarfile> [args...]\n (para executar um arquivo jar)\n ou {0} [options] -m <module>[/<mainclass>] [args...]\n {0} [options] --module <module>[/<mainclass>] [args...]\n (para executar a classe principal em um m\u00F3dulo)\n\n Os argumentos ap\u00F3s a classe principal, -jar <jarfile>, -m ou --module\n <module>/<mainclass> s\u00E3o especificados como os argumentos para a classe principal.\n\n em que as op\u00E7\u00F5es incluem:\n\n
-java.launcher.opt.datamodel =\ -d{0}\t Obsoleto, ser\u00E1 removido em uma futura release\n
java.launcher.opt.vmselect =\ {0}\t para selecionar a VM "{1}"\n
java.launcher.opt.hotspot =\ {0}\t \u00E9 um sin\u00F4nimo da VM "{1}" [obsoleto]\n
# Translators please note do not translate the options themselves
-java.launcher.opt.footer = \ -cp <caminho de pesquisa de classe de diret\u00F3rios e arquivos zip/jar>\n -classpath <caminho de pesquisa de classe de diret\u00F3rios e arquivos zip/jar>\n --class-path <caminho de pesquisa de classe de diret\u00F3rios e arquivos zip/jar>\n Uma lista separada por {0} de diret\u00F3rios, arquivos compactados JAR\n e arquivos compactados ZIP para procurar arquivos de classe.\n -p <caminho do m\u00F3dulo>\n --module-path <caminho do m\u00F3dulo>...\n Uma lista separada por {0} de diret\u00F3rios, cada um\n sendo um diret\u00F3rio de m\u00F3dulos.\n --upgrade-module-path <caminho do m\u00F3dulo>...\n Uma lista separada por {0} de diret\u00F3rios, cada um\n sendo um diret\u00F3rio de m\u00F3dulos que substituem m\u00F3dulos\n pass\u00EDveis de upgrade na imagem de runtime\n --add-modules <nome do m\u00F3dulo>[,<nome do m\u00F3dulo>...]\n m\u00F3dulos-raiz a serem resolvidos al\u00E9m do m\u00F3dulo inicial.\n <nome do m\u00F3dulo> tamb\u00E9m pode ser ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n lista os m\u00F3dulos observ\u00E1veis e sai\n --d <nome do m\u00F3dulo>\n --describe-module <nome do m\u00F3dulo>\n descreve um m\u00F3dulo e sai\n --dry-run cria VM e carrega classe principal, mas n\u00E3o executa o m\u00E9todo principal.\n A op\u00E7\u00E3o --dry-run pode ser \u00FAtil para validar as\n op\u00E7\u00F5es de linha de comando como a configura\u00E7\u00E3o do sistema do m\u00F3dulo.\n --validate-modules\n valida todos os m\u00F3dulos e sai\n A op\u00E7\u00E3o --validate-modules pode ser \u00FAtil para localizar\n conflitos e outros erros com m\u00F3dulos no caminho do m\u00F3dulo.\n -D<name>=<value>\n define uma propriedade de sistema\n -verbose:[class|module|gc|jni]\n ativar sa\u00EDda verbosa\n -version imprime a vers\u00E3o do produto no fluxo de erros e sai\n -version imprime a vers\u00E3o do produto no fluxo de sa\u00EDda e sai\n -showversion imprime a vers\u00E3o do produto no fluxo de erros e continua\n --show-version\n imprime a vers\u00E3o do produto no fluxo de sa\u00EDda e continua\n --show-module-resolution\n mostra a sa\u00EDda da resolu\u00E7\u00E3o do m\u00F3dulo durante a inicializa\u00E7\u00E3o\n -? -h -help\n imprime esta mensagem de ajuda no fluxo de erros\n --help imprime esta mensagem de ajuda no fluxo de sa\u00EDda\n -X imprime ajuda sobre op\u00E7\u00F5es extras no fluxo de erros\n --help-extra imprime ajuda sobre op\u00E7\u00F5es extras no fluxo de sa\u00EDda\n -ea[:<packagename>...|:<classname>]\n -enableassertions[:<packagename>...|:<classname>]\n ativa asser\u00E7\u00F5es com granularidade especificada\n -da[:<packagename>...|:<classname>]\n -disableassertions[:<packagename>...|:<classname>]\n desativa asser\u00E7\u00F5es com granularidade especificada\n -esa | -enablesystemassertions\n ativa asser\u00E7\u00F5es de sistema\n -dsa | -disablesystemassertions\n desativa asser\u00E7\u00F5es de sistema\n -agentlib:<libname>[=<options>]\n carrega biblioteca de agente nativo <libname>, por exemplo, -agentlib:jdwp\n consulte tamb\u00E9m -agentlib:jdwp=help\n -agentpath:<pathname>[=<options>]\n carrega biblioteca de agente nativo por nome do caminho completo\n -javaagent:<jarpath>[=<options>]\n carrega agente de linguagem de programa\u00E7\u00E3o Java, consulte java.lang.instrument\n -splash:<imagepath>\n \
-mostra a tela inicial com a imagem especificada\n Imagens HiDPI dimensionadas s\u00E3o suportadas automaticamente e utilizadas,\n se dispon\u00EDveis. O nome do arquivo de imagem n\u00E3o dimensionada, por exemplo, image.ext,\n deve ser informado sempre como argumento para a op\u00E7\u00E3o -splash.\n A imagem dimensionada mais apropriada fornecida ser\u00E1 selecionada\n automaticamente.\n Consulte a documenta\u00E7\u00E3o da API de Tela Inicial para obter mais informa\u00E7\u00F5es\n @arquivos de argumento\n Um ou mais arquivos de argumentos que cont\u00EAm op\u00E7\u00F5es\n -disable-@files\n impede expans\u00E3o adicional de arquivo de argumentos\nnPara especificar um argumento para uma op\u00E7\u00E3o longa, voc\u00EA pode usar --<name>=<value> ou\n--<name> <value>.\n
+java.launcher.opt.footer = \ -cp <caminho de pesquisa de classe de diret\u00F3rios e arquivos zip/jar>\n -classpath <caminho de pesquisa de classe de diret\u00F3rios e arquivos zip/jar>\n --class-path <caminho de pesquisa de classe de diret\u00F3rios e arquivos zip/jar>\n Uma lista separada por {0} de diret\u00F3rios, arquivos compactados JAR\n e arquivos compactados ZIP para procurar arquivos de classe.\n -p <caminho do m\u00F3dulo>\n --module-path <caminho do m\u00F3dulo>...\n Uma lista separada por {0} de diret\u00F3rios, cada um\n sendo um diret\u00F3rio de m\u00F3dulos.\n --upgrade-module-path <caminho do m\u00F3dulo>...\n Uma lista separada por {0} de diret\u00F3rios, cada um\n sendo um diret\u00F3rio de m\u00F3dulos que substituem m\u00F3dulos\n pass\u00EDveis de upgrade na imagem de runtime\n --add-modules <nome do m\u00F3dulo>[,<nome do m\u00F3dulo>...]\n m\u00F3dulos-raiz a serem resolvidos al\u00E9m do m\u00F3dulo inicial.\n <nome do m\u00F3dulo> tamb\u00E9m pode ser ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n lista os m\u00F3dulos observ\u00E1veis e sai\n -d <nome do m\u00F3dulo>\n --describe-module <nome do m\u00F3dulo>\n descreve um m\u00F3dulo e sai\n --dry-run cria VM e carrega classe principal, mas n\u00E3o executa o m\u00E9todo principal.\n A op\u00E7\u00E3o --dry-run pode ser \u00FAtil para validar as\n op\u00E7\u00F5es de linha de comando como a configura\u00E7\u00E3o do sistema do m\u00F3dulo.\n --validate-modules\n valida todos os m\u00F3dulos e sai\n A op\u00E7\u00E3o --validate-modules pode ser \u00FAtil para localizar\n conflitos e outros erros com m\u00F3dulos no caminho do m\u00F3dulo.\n -D<name>=<value>\n define uma propriedade de sistema\n -verbose:[class|module|gc|jni]\n ativar sa\u00EDda verbosa\n -version imprime a vers\u00E3o do produto no fluxo de erros e sai\n -version imprime a vers\u00E3o do produto no fluxo de sa\u00EDda e sai\n -showversion imprime a vers\u00E3o do produto no fluxo de erros e continua\n --show-version\n imprime a vers\u00E3o do produto no fluxo de sa\u00EDda e continua\n --show-module-resolution\n mostra a sa\u00EDda da resolu\u00E7\u00E3o do m\u00F3dulo durante a inicializa\u00E7\u00E3o\n -? -h -help\n imprime esta mensagem de ajuda no fluxo de erros\n --help imprime esta mensagem de ajuda no fluxo de sa\u00EDda\n -X imprime ajuda sobre op\u00E7\u00F5es extras no fluxo de erros\n --help-extra imprime ajuda sobre op\u00E7\u00F5es extras no fluxo de sa\u00EDda\n -ea[:<packagename>...|:<classname>]\n -enableassertions[:<packagename>...|:<classname>]\n ativa asser\u00E7\u00F5es com granularidade especificada\n -da[:<packagename>...|:<classname>]\n -disableassertions[:<packagename>...|:<classname>]\n desativa asser\u00E7\u00F5es com granularidade especificada\n -esa | -enablesystemassertions\n ativa asser\u00E7\u00F5es de sistema\n -dsa | -disablesystemassertions\n desativa asser\u00E7\u00F5es de sistema\n -agentlib:<libname>[=<options>]\n carrega biblioteca de agente nativo <libname>, por exemplo, -agentlib:jdwp\n consulte tamb\u00E9m -agentlib:jdwp=help\n -agentpath:<pathname>[=<options>]\n carrega biblioteca de agente nativo por nome do caminho completo\n -javaagent:<jarpath>[=<options>]\n carrega agente de linguagem de programa\u00E7\u00E3o Java, consulte java.lang.instrument\n -splash:<imagepath>\n mostra \
+a tela inicial com a imagem especificada\n Imagens HiDPI dimensionadas s\u00E3o suportadas automaticamente e utilizadas,\n se dispon\u00EDveis. O nome do arquivo de imagem n\u00E3o dimensionada, por exemplo, image.ext,\n deve ser informado sempre como argumento para a op\u00E7\u00E3o -splash.\n A imagem dimensionada mais apropriada fornecida ser\u00E1 selecionada\n automaticamente.\n Consulte a documenta\u00E7\u00E3o da API de Tela Inicial para obter mais informa\u00E7\u00F5es\n @arquivos de argumento\n Um ou mais arquivos de argumentos que cont\u00EAm op\u00E7\u00F5es\n -disable-@files\n impede expans\u00E3o adicional de arquivo de argumentos\nnPara especificar um argumento para uma op\u00E7\u00E3o longa, voc\u00EA pode usar --<name>=<value> ou\n--<name> <value>.\n
# Translators please note do not translate the options themselves
-java.launcher.X.usage=\n -Xbatch desativa compila\u00E7\u00E3o em segundo plano\n -Xbootclasspath/a:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n anexa ao final do caminho de classe de bootstrap\n -Xcheck:jni executa verifica\u00E7\u00F5es adicionais de fun\u00E7\u00F5es JNI\n -Xcomp for\u00E7a a compila\u00E7\u00E3o de m\u00E9todos na primeira chamada\n -Xdebug fornecido para compatibilidade reversa\n -Xdiag mostra mensagens adicionais de diagn\u00F3stico\n -Xfuture ativa verifica\u00E7\u00F5es de n\u00EDvel m\u00E1ximo, antecipando padr\u00E3o futuro\n -Xint somente execu\u00E7\u00E3o de modo interpretado\n -Xinternalversion\n exibe informa\u00E7\u00F5es mais detalhadas da vers\u00E3o da JVM do que a\n op\u00E7\u00E3o -version\n -Xloggc:<file> registra status de GC em um arquivo com timestamps\n -Xmixed execu\u00E7\u00E3o em modo misto (padr\u00E3o)\n -Xmn<size> define o tamanho inicial e m\u00E1ximo (em bytes) do heap\n para a gera\u00E7\u00E3o jovem (infantil)\n -Xms<size> define tamanho inicial do heap Java\n -Xmx<size> define tamanho m\u00E1ximo do heap Java\n -Xnoclassgc desativa coleta de lixo de classe\n -Xprof gera dados de perfil de cpu (obsoleto)\n -Xrs reduz uso de sinais do SO por Java/VM (ver documenta\u00E7\u00E3o)\n -Xshare:auto usa dados de classe compartilhados se poss\u00EDvel (padr\u00E3o)\n -Xshare:off n\u00E3o tenta usar dados de classe compartilhados\n -Xshare:on exige o uso de dados de classe compartilhados; caso contr\u00E1rio, falhar\u00E1.\n -XshowSettings mostra todas as defini\u00E7\u00F5es e continua\n -XshowSettings:all\n mostra todas as defini\u00E7\u00F5es e continua\n -XshowSettings:locale\n mostra todas as defini\u00E7\u00F5es relacionadas \u00E0 configura\u00E7\u00E3o regional e continua\n -XshowSettings:properties\n mostra todas as defini\u00E7\u00F5es de propriedade e continua\n -XshowSettings:vm mostra todas as defini\u00E7\u00F5es relacionadas a vm e continua\n -Xss<size> define o tamanho da pilha de thread java\n -Xverify define o modo do verificador de c\u00F3digo de byte\n --add-reads <module>=<target-module>(,<target-module>)*\n atualiza <module> para ler <target-module>, independentemente\n da declara\u00E7\u00E3o de m\u00F3dulo. \n <target-module> pode ser ALL-UNNAMED para ler todos os m\u00F3dulos\n sem nome.\n --add-exports <module>/<package>=<target-module>(,<target-module>)*\n atualiza <module> para exportar <package> para <target-module>,\n independentemente da declara\u00E7\u00E3o de m\u00F3dulo.\n <target-module> pode ser ALL-UNNAMED para exportar todos os\n m\u00F3dulos sem nome.\n --add-opens <module>/<package>=<target-module>(,<target-module>)*\n atualiza <module> para abrir <package> para\n <target-module>, independentemente da declara\u00E7\u00E3o de m\u00F3dulo.\n --limit-modules <module name>[,<module name>...]\n limita o universo de m\u00F3dulos observ\u00E1veis\n--patch-module <module>=<file>({0}<file>)*\n substitui ou amplia um m\u00F3dulo com classes e recursos\n em arquivos ou \
-diret\u00F3rios JAR.\n\nEssas op\u00E7\u00F5es extras est\u00E3o sujeitas a altera\u00E7\u00E3o sem aviso.\n
+java.launcher.X.usage=\n -Xbatch desativa a compila\u00E7\u00E3o em segundo plano\n -Xbootclasspath/a:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n anexa ao final do caminho de classe de bootstrap\n -Xcheck:jni executa verifica\u00E7\u00F5es adicionais de fun\u00E7\u00F5es JNI\n -Xcomp for\u00E7a a compila\u00E7\u00E3o de m\u00E9todos na primeira chamada\n -Xdebug fornecido para compatibilidade reversa\n -Xdiag mostra mensagens adicionais de diagn\u00F3stico\n -Xfuture ativa verifica\u00E7\u00F5es de n\u00EDvel m\u00E1ximo, antecipando padr\u00E3o futuro\n -Xint somente execu\u00E7\u00E3o de modo interpretado\n -Xinternalversion\n exibe informa\u00E7\u00F5es mais detalhadas da vers\u00E3o da JVM do que a\n op\u00E7\u00E3o -version\n -Xloggc:<file> registra o status do GC em um arquivo com timestamps\n -Xmixed execu\u00E7\u00E3o em modo misto (padr\u00E3o)\n -Xmn<size> define o tamanho inicial e m\u00E1ximo (em bytes) do heap\n para a gera\u00E7\u00E3o jovem (infantil)\n -Xms<size> define o tamanho inicial do heap Java\n -Xmx<size> define o tamanho m\u00E1ximo do heap Java\n -Xnoclassgc desativa a coleta de lixo de classe\n -Xrs reduz o uso de sinais do SO por Java/VM (consulte a documenta\u00E7\u00E3o)\n -Xshare:auto usa dados de classe compartilhados se poss\u00EDvel (padr\u00E3o)\n -Xshare:off n\u00E3o tenta usar dados de classe compartilhados\n -Xshare:on exige o uso de dados de classe compartilhados; caso contr\u00E1rio, falhar\u00E1.\n -XshowSettings mostra todas as defini\u00E7\u00F5es e continua\n -XshowSettings:all\n mostra todas as defini\u00E7\u00F5es e continua\n -XshowSettings:locale\n mostra todas as defini\u00E7\u00F5es relacionadas \u00E0 configura\u00E7\u00E3o regional e continua\n -XshowSettings:properties\n mostra todas as defini\u00E7\u00F5es de propriedade e continua\n -XshowSettings:vm mostra todas as defini\u00E7\u00F5es relacionadas a vm e continua\n -Xss<size> define o tamanho da pilha de thread java\n -Xverify define o modo do verificador de c\u00F3digo de byte\n --add-reads <module>=<target-module>(,<target-module>)*\n atualiza <module> para ler <target-module>, independentemente\n da declara\u00E7\u00E3o de m\u00F3dulo. \n <target-module> pode ser ALL-UNNAMED para ler todos os m\u00F3dulos\n sem nome.\n --add-exports <module>/<package>=<target-module>(,<target-module>)*\n atualiza <module> para exportar <package> para <target-module>,\n independentemente da declara\u00E7\u00E3o de m\u00F3dulo.\n <target-module> pode ser ALL-UNNAMED para exportar para todos os\n m\u00F3dulos sem nome.\n --add-opens <module>/<package>=<target-module>(,<target-module>)*\n atualiza <module> para abrir <package> para\n <target-module>, independentemente da declara\u00E7\u00E3o de m\u00F3dulo.\n --illegal-access=<value>\n permite ou nega acesso aos membros dos tipos nos m\u00F3dulos com nome\n por c\u00F3digo nos m\u00F3dulos sem nomes.\n <value> \u00E9 um entre "deny", "permit", "warn" ou "debug"\n Esta op\u00E7\u00E3o ser\u00E1 removida em uma futura release.\n --limit-modules <module name>[,<module name>...]\n limita o universo de m\u00F3dulos observ\u00E1veis\n--patch-module <module>=<file>({0}<file>)*\n substitui ou amplia um m\u00F3dulo com classes e recursos\n \
+em arquivos ou diret\u00F3rios JAR.\n --disable-@files desativa uma maior expans\u00E3o do arquivo de argumento\n\nEssas op\u00E7\u00F5es extras est\u00E3o sujeitas a altera\u00E7\u00E3o sem aviso.\n
# Translators please note do not translate the options themselves
java.launcher.X.macosx.usage=\nAs op\u00E7\u00F5es a seguir s\u00E3o espec\u00EDficas para o Mac OS X:\n -XstartOnFirstThread\n executa o m\u00E9todo main() no primeiro thread (AppKit)\n -Xdock:name=<nome do aplicativo>\n substitui o nome do aplicativo padr\u00E3o exibido no encaixe\n -Xdock:icon=<caminho para o arquivo do \u00EDcone>\n substitui o \u00EDcone exibido no encaixe\n\n
@@ -47,6 +46,7 @@
java.launcher.cls.error4=Erro: o m\u00E9todo main n\u00E3o foi encontrado na classe {0}; defina o m\u00E9todo main como:\n public static void main(String[] args)\nou uma classe de aplicativo JavaFX deve expandir {1}
java.launcher.cls.error5=Erro: os componentes de runtime do JavaFX n\u00E3o foram encontrados. Eles s\u00E3o obrigat\u00F3rios para executar este aplicativo
java.launcher.cls.error6=Erro: ocorreu LinkageError ao carregar a classe principal {0}\n\t{1}
+java.launcher.cls.error7=Erro: N\u00E3o \u00E9 poss\u00EDvel inicializar a classe principal {0}\nCausado por: {1}: {2}
java.launcher.jar.error1=Erro: ocorreu um erro inesperado ao tentar abrir o arquivo {0}
java.launcher.jar.error2=manifesto n\u00E3o encontrado em {0}
java.launcher.jar.error3=nenhum atributo de manifesto principal em {0}
@@ -55,5 +55,6 @@
java.launcher.javafx.error1=Erro: O m\u00E9todo launchApplication do JavaFX tem a assinatura errada. Ele\\ndeve ser declarado como est\u00E1tico e retornar um valor do tipo void
java.launcher.module.error1=o m\u00F3dulo {0} n\u00E3o tem um atributo MainClass, use -m <module>/<main-class>
java.launcher.module.error2=Erro: N\u00E3o foi poss\u00EDvel localizar nem carregar a classe principal {0} no m\u00F3dulo {1}
-java.launcher.module.error3=Erro: N\u00E3o \u00E9 poss\u00EDvel carregar a classe principal {0} do m\u00F3dulo {1}\n\t{2}
+java.launcher.module.error3=Erro: N\u00E3o \u00E9 poss\u00EDvel carregar a classe principal {0} no m\u00F3dulo {1}\n\t{2}
java.launcher.module.error4={0} n\u00E3o encontrado.
+java.launcher.module.error5=Erro: N\u00E3o \u00E9 poss\u00EDvel inicializar a classe principal {0} no m\u00F3dulo {1}\nCausado por: {1}: {2}
--- a/src/java.base/share/classes/sun/launcher/resources/launcher_sv.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/launcher/resources/launcher_sv.properties Wed Jan 17 12:19:06 2018 +0000
@@ -26,17 +26,16 @@
# Translators please note do not translate the options themselves
java.launcher.opt.header = Syntax: {0} [options] <huvudklass>[args...]\n (f\u00F6r att k\u00F6ra en klass)\n eller {0} [options] -jar <jar-fil> [args...]\n (f\u00F6r att k\u00F6ra en jar-fil)\n eller {0} [options] -m <modul>[/<huvudklass>] [args...]\n {0} [options] --module <modul>[/<huvudklass>] [args...]\n (f\u00F6r att k\u00F6ra huvudklassen i en modul)\n\n Argument som kommer efter huvudklassen, -jar <jar-fil>, -m eller --module\n <modul>/<huvudklass> \u00F6verf\u00F6rs som argument till huvudklassen.\n\n med alternativen:\n\n
-java.launcher.opt.datamodel =\ -d{0}\t Inaktuellt, tas bort i en framtida utg\u00E5va\n
java.launcher.opt.vmselect =\ {0}\t f\u00F6r att v\u00E4lja "{1}" VM\n
java.launcher.opt.hotspot =\ {0}\t \u00E4r en synonym f\u00F6r "{1}" VM [inaktuell]\n
# Translators please note do not translate the options themselves
-java.launcher.opt.footer = \ -cp <klass\u00F6kv\u00E4g till kataloger och zip-/jar-filer>\n -classpath <klass\u00F6kv\u00E4g till kataloger och zip-/jar-filer>\n --class-path <klass\u00F6kv\u00E4g till kataloger och zip-/jar-filer>\n En {0}-avgr\u00E4nsad lista \u00F6ver kataloger, JAR-arkiv\n och ZIP-arkiv att s\u00F6ka efter klassfiler i.\n -p <moduls\u00F6kv\u00E4g>\n --module-path <moduls\u00F6kv\u00E4g>...\n En {0}-avgr\u00E4nsad lista \u00F6ver kataloger, d\u00E4r varje katalog\n \u00E4r en katalog \u00F6ver moduler.\n --upgrade-module-path <moduls\u00F6kv\u00E4g>...\n En {0}-avgr\u00E4nsad lista \u00F6ver kataloger, d\u00E4r varje katalog\n \u00E4r en katalog \u00F6ver moduler som ers\u00E4tter uppgraderingsbara\n moduler i exekveringsavbilden\n --add-modules <modulnamn>[,<modulnamn>...]\n rotmoduler att l\u00F6sa f\u00F6rutom den ursprungliga modulen.\n <modulnamn> kan \u00E4ven vara ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n visa observerbara moduler och avsluta\n --d <modulnamn>\n --describe-module <modulnamn>\n beskriv en modul och avsluta\n --dry-run skapa VM och ladda huvudklassen men k\u00F6r inte huvudmetoden.\n Alternativet --dry-run kan vara anv\u00E4ndbart f\u00F6r att validera\n kommandoradsalternativ, som modulsystemkonfigurationen.\n --validate-modules\n validera alla moduler och avsluta\n Alternativet --validate-modules kan vara anv\u00E4ndbart f\u00F6r att hitta\n konflikter och andra fel i modulerna p\u00E5 moduls\u00F6kv\u00E4gen.\n -D<namn>=<v\u00E4rde>\n ange en systemegenskap\n -verbose:[class|module|gc|jni]\n aktivera utf\u00F6rliga utdata\n -version skriv ut produktversion till felstr\u00F6mmen och avsluta\n --version skriv ut produktversion till utdatastr\u00F6mmen och avsluta\n -showversion skriv ut produktversion till felstr\u00F6mmen och forts\u00E4tt\n --show-version\n skriv ut produktversion till utdatastr\u00F6mmen och forts\u00E4tt\n --show-module-resolution\n visa modull\u00F6sningsutdata vid start\n -? -h -help\n skriv ut det h\u00E4r hj\u00E4lpmeddelandet till felstr\u00F6mmen\n --help skriv ut det h\u00E4r hj\u00E4lpmeddelandet till utdatastr\u00F6mmen\n -X skriv ut hj\u00E4lp f\u00F6r extraalternativ till felstr\u00F6mmen\n --help-extra skriv ut hj\u00E4lp f\u00F6r extraalternativ till utdatastr\u00F6mmen\n -ea[:<paketnamn>...|:<klassnamn>]\n -enableassertions[:<paketnamn>...|:<klassnamn>]\n aktivera verifieringar med den angivna detaljgraden\n -da[:<paketnamn>...|:<klassnamn>]\n -disableassertions[:<paketnamn>...|:<klassnamn>]\n avaktivera verifieringar med den angivna detaljgraden\n -esa | -enablesystemassertions\n aktivera systemverifieringar\n -dsa | -disablesystemassertions\n avaktivera systemverifieringar\n -agentlib:<biblioteksnamn>[=<alternativ>]\n ladda det ursprungliga agentbiblioteket <biblioteksnamn>, t.ex. -agentlib:jdwp\n se \u00E4ven -agentlib:jdwp=help\n -agentpath:<s\u00F6kv\u00E4gsnamn>[=<alternativ>]\n ladda det ursprungliga agentbiblioteket med fullst\u00E4ndigt s\u00F6kv\u00E4gsnamn\n -javaagent:<jar-s\u00F6kv\u00E4g>[=<alternativ>]\n ladda Java-programmeringsspr\u00E5ksagenten, se java.lang.instrument\n -splash:<bilds\u00F6kv\u00E4g>\n visa v\u00E4lkomstsk\u00E4rmen med den angivna bilden\n HiDPI-skal\u00E4ndrade bilder st\u00F6ds automatiskt och anv\u00E4nds om de \u00E4r\n \
- tillg\u00E4ngliga. Filnamnet p\u00E5 den oskal\u00E4ndrade bilden, t.ex. image.ext,\n ska alltid \u00F6verf\u00F6ras som argument till alternativet -splash.\n Den l\u00E4mpligaste skal\u00E4ndrade bilden v\u00E4ljs\n automatiskt.\n Mer information finns i dokumentationen f\u00F6r API:t SplashScreen\n @argument filer\n en eller flera argumentfiler som inneh\u00E5ller alternativ\n -disable-@files\n f\u00F6rhindra ytterligare ut\u00F6kning av argumentfiler\nOm du vill ange ett argument f\u00F6r ett l\u00E5ngt alternativ kan du anv\u00E4nda --<namn>=<v\u00E4rde> eller\n--<namn> <v\u00E4rde>.\n
+java.launcher.opt.footer = \ -cp <klass\u00F6kv\u00E4g till kataloger och zip-/jar-filer>\n -classpath <klass\u00F6kv\u00E4g till kataloger och zip-/jar-filer>\n --class-path <klass\u00F6kv\u00E4g till kataloger och zip-/jar-filer>\n En {0}-avgr\u00E4nsad lista \u00F6ver kataloger, JAR-arkiv\n och ZIP-arkiv att s\u00F6ka efter klassfiler i.\n -p <moduls\u00F6kv\u00E4g>\n --module-path <moduls\u00F6kv\u00E4g>...\n En {0}-avgr\u00E4nsad lista \u00F6ver kataloger, d\u00E4r varje katalog\n \u00E4r en katalog \u00F6ver moduler.\n --upgrade-module-path <moduls\u00F6kv\u00E4g>...\n En {0}-avgr\u00E4nsad lista \u00F6ver kataloger, d\u00E4r varje katalog\n \u00E4r en katalog \u00F6ver moduler som ers\u00E4tter uppgraderingsbara\n moduler i exekveringsavbilden\n --add-modules <modulnamn>[,<modulnamn>...]\n rotmoduler att l\u00F6sa f\u00F6rutom den ursprungliga modulen.\n <modulnamn> kan \u00E4ven vara ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n visa observerbara moduler och avsluta\n -d <modulnamn>\n --describe-module <modulnamn>\n beskriv en modul och avsluta\n --dry-run skapa VM och ladda huvudklassen men k\u00F6r inte huvudmetoden.\n Alternativet --dry-run kan vara anv\u00E4ndbart f\u00F6r att validera\n kommandoradsalternativ, som modulsystemkonfigurationen.\n --validate-modules\n validera alla moduler och avsluta\n Alternativet --validate-modules kan vara anv\u00E4ndbart f\u00F6r att hitta\n konflikter och andra fel i modulerna p\u00E5 moduls\u00F6kv\u00E4gen.\n -D<namn>=<v\u00E4rde>\n ange en systemegenskap\n -verbose:[class|module|gc|jni]\n aktivera utf\u00F6rliga utdata\n -version skriv ut produktversion till felstr\u00F6mmen och avsluta\n --version skriv ut produktversion till utdatastr\u00F6mmen och avsluta\n -showversion skriv ut produktversion till felstr\u00F6mmen och forts\u00E4tt\n --show-version\n skriv ut produktversion till utdatastr\u00F6mmen och forts\u00E4tt\n --show-module-resolution\n visa modull\u00F6sningsutdata vid start\n -? -h -help\n skriv ut det h\u00E4r hj\u00E4lpmeddelandet till felstr\u00F6mmen\n --help skriv ut det h\u00E4r hj\u00E4lpmeddelandet till utdatastr\u00F6mmen\n -X skriv ut hj\u00E4lp f\u00F6r extraalternativ till felstr\u00F6mmen\n --help-extra skriv ut hj\u00E4lp f\u00F6r extraalternativ till utdatastr\u00F6mmen\n -ea[:<paketnamn>...|:<klassnamn>]\n -enableassertions[:<paketnamn>...|:<klassnamn>]\n aktivera verifieringar med den angivna detaljgraden\n -da[:<paketnamn>...|:<klassnamn>]\n -disableassertions[:<paketnamn>...|:<klassnamn>]\n avaktivera verifieringar med den angivna detaljgraden\n -esa | -enablesystemassertions\n aktivera systemverifieringar\n -dsa | -disablesystemassertions\n avaktivera systemverifieringar\n -agentlib:<biblioteksnamn>[=<alternativ>]\n ladda det ursprungliga agentbiblioteket <biblioteksnamn>, t.ex. -agentlib:jdwp\n se \u00E4ven -agentlib:jdwp=help\n -agentpath:<s\u00F6kv\u00E4gsnamn>[=<alternativ>]\n ladda det ursprungliga agentbiblioteket med fullst\u00E4ndigt s\u00F6kv\u00E4gsnamn\n -javaagent:<jar-s\u00F6kv\u00E4g>[=<alternativ>]\n ladda Java-programmeringsspr\u00E5ksagenten, se java.lang.instrument\n -splash:<bilds\u00F6kv\u00E4g>\n visa v\u00E4lkomstsk\u00E4rmen med den angivna bilden\n HiDPI-skal\u00E4ndrade bilder st\u00F6ds automatiskt och anv\u00E4nds om de \u00E4r\n \
+ tillg\u00E4ngliga. Filnamnet p\u00E5 den oskal\u00E4ndrade bilden, t.ex. image.ext,\n ska alltid \u00F6verf\u00F6ras som argument till alternativet -splash.\n Den l\u00E4mpligaste skal\u00E4ndrade bilden v\u00E4ljs\n automatiskt.\n Mer information finns i dokumentationen f\u00F6r API:t SplashScreen\n @argument filer\n en eller flera argumentfiler som inneh\u00E5ller alternativ\n -disable-@files\n f\u00F6rhindra ytterligare ut\u00F6kning av argumentfiler\nOm du vill ange ett argument f\u00F6r ett l\u00E5ngt alternativ kan du anv\u00E4nda --<namn>=<v\u00E4rde> eller\n--<namn> <v\u00E4rde>.\n
# Translators please note do not translate the options themselves
-java.launcher.X.usage=\n -Xbatch avaktivera bakgrundskompilering\n -Xbootclasspath/a:<kataloger och zip-/jar-filer avgr\u00E4nsade med {0}>\n l\u00E4gg till sist i klass\u00F6kv\u00E4gen f\u00F6r programladdning\n -Xcheck:jni utf\u00F6r fler kontroller f\u00F6r JNI-funktioner\n -Xcomp tvingar kompilering av metoder vid det f\u00F6rsta anropet\n -Xdebug tillhandah\u00E5lls f\u00F6r bak\u00E5tkompatibilitet\n -Xdiag visa fler diagnostiska meddelanden\n -Xfuture aktivera str\u00E4ngaste kontroller, f\u00F6rv\u00E4ntad framtida standard\n -Xint endast exekvering i tolkat l\u00E4ge\n -Xinternalversion\n visar mer detaljerad information om JVM-version \u00E4n\n alternativet -version\n -Xloggc:<fil> logga GC-status till en fil med tidsst\u00E4mplar\n -Xmixed exekvering i blandat l\u00E4ge (standard)\n -Xmn<storlek> anger ursprunglig och maximal storlek (i byte) f\u00F6r h\u00F6gen f\u00F6r\n generationen med nyare objekt (h\u00F6gen f\u00F6r tilldelning av nya objekt)\n -Xms<storlek> ange ursprunglig storlek f\u00F6r Java-heap-utrymmet\n -Xmx<storlek> ange st\u00F6rsta storlek f\u00F6r Java-heap-utrymmet\n -Xnoclassgc avaktivera klasskr\u00E4pinsamling\n -Xprof utdata f\u00F6r processorprofilering (inaktuellt)\n -Xrs minska operativsystemssignalanv\u00E4ndning f\u00F6r Java/VM (se dokumentationen)\n -Xshare:auto anv\u00E4nd delade klassdata om m\u00F6jligt (standard)\n -Xshare:off f\u00F6rs\u00F6k inte anv\u00E4nda delade klassdata\n -Xshare:on kr\u00E4v anv\u00E4ndning av delade klassdata, utf\u00F6r inte i annat fall.\n -XshowSettings visa alla inst\u00E4llningar och forts\u00E4tt\n -XshowSettings:all\n visa alla inst\u00E4llningar och forts\u00E4tt\n -XshowSettings:locale\n visa alla spr\u00E5kkonventionsrelaterade inst\u00E4llningar och forts\u00E4tt\n -XshowSettings:properties\n visa alla egenskapsinst\u00E4llningar och forts\u00E4tt\n -XshowSettings:vm visa alla vm-relaterade inst\u00E4llningar och forts\u00E4tt\n -Xss<storlek> ange storlek f\u00F6r java-tr\u00E5dsstacken\n -Xverify anger l\u00E4ge f\u00F6r bytekodverifieraren\n --add-reads <modul>=<m\u00E5lmodul>(,<m\u00E5lmodul>)*\n uppdaterar <modul> f\u00F6r att l\u00E4sa <m\u00E5lmodul>, oavsett\n moduldeklarationen. \n <m\u00E5lmodul> kan vara ALL-UNNAMED f\u00F6r att l\u00E4sa alla\n ej namngivna moduler.\n --add-exports <modul>/<paket>=<m\u00E5lmodul>(,<m\u00E5lmodul>)*\n uppdaterar <modul> f\u00F6r att exportera <paket> till <m\u00E5lmodul>,\n oavsett moduldeklarationen.\n <m\u00E5lmodul> kan vara ALL-UNNAMED f\u00F6r att exportera till alla\n ej namngivna moduler.\n --add-opens <modul>/<paket>=<m\u00E5lmodul>(,<m\u00E5lmodul>)*\n uppdaterar <modul> f\u00F6r att \u00F6ppna <paket> till\n <m\u00E5lmodul>, oavsett moduldeklarationen.\n --limit-modules <modulnamn>[,<modulnamn>...]\n begr\u00E4nsar universumet med observerbara moduler\n --patch-module <modul>=<fil>({0}<fil>)*\n \u00E5sidos\u00E4tt eller ut\u00F6ka en modul med klasser och resurser\n i JAR-filer eller kataloger.\n --disable-@files avaktivera ytterligare \
-argumentfilsut\u00F6kning\n\nDe h\u00E4r extraalternativen kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande.\n
+java.launcher.X.usage=\n -Xbatch avaktivera bakgrundskompilering\n -Xbootclasspath/a:<kataloger och zip-/jar-filer avgr\u00E4nsade med {0}>\n l\u00E4gg till sist i klass\u00F6kv\u00E4gen f\u00F6r programladdning\n -Xcheck:jni utf\u00F6r fler kontroller f\u00F6r JNI-funktioner\n -Xcomp tvingar kompilering av metoder vid det f\u00F6rsta anropet\n -Xdebug tillhandah\u00E5lls f\u00F6r bak\u00E5tkompatibilitet\n -Xdiag visa fler diagnostiska meddelanden\n -Xfuture aktivera str\u00E4ngaste kontroller, f\u00F6rv\u00E4ntad framtida standard\n -Xint endast exekvering i tolkat l\u00E4ge\n -Xinternalversion\n visar mer detaljerad information om JVM-version \u00E4n\n med alternativet -version\n -Xloggc:<fil> logga GC-status till en fil med tidsst\u00E4mplar\n -Xmixed exekvering i blandat l\u00E4ge (standard)\n -Xmn<storlek> anger ursprunglig och st\u00F6rsta storlek (i byte) f\u00F6r h\u00F6gen f\u00F6r\n generationen med nyare objekt (h\u00F6gen f\u00F6r tilldelning av nya objekt)\n -Xms<storlek> ange ursprunglig storlek f\u00F6r Java-heap-utrymmet\n -Xmx<storlek> ange st\u00F6rsta storlek f\u00F6r Java-heap-utrymmet\n -Xnoclassgc avaktivera klasskr\u00E4pinsamling\n -Xrs minska operativsystemssignalanv\u00E4ndning f\u00F6r Java/VM (se dokumentationen)\n -Xshare:auto anv\u00E4nd delade klassdata om m\u00F6jligt (standard)\n -Xshare:off f\u00F6rs\u00F6k inte anv\u00E4nda delade klassdata\n -Xshare:on kr\u00E4v anv\u00E4ndning av delade klassdata, utf\u00F6r inte i annat fall.\n -XshowSettings visa alla inst\u00E4llningar och forts\u00E4tt\n -XshowSettings:all\n visa alla inst\u00E4llningar och forts\u00E4tt\n -XshowSettings:locale\n visa alla spr\u00E5kkonventionsrelaterade inst\u00E4llningar och forts\u00E4tt\n -XshowSettings:properties\n visa alla egenskapsinst\u00E4llningar och forts\u00E4tt\n -XshowSettings:vm visa alla vm-relaterade inst\u00E4llningar och forts\u00E4tt\n -Xss<storlek> ange storlek f\u00F6r java-tr\u00E5dsstacken\n -Xverify anger l\u00E4ge f\u00F6r bytekodverifieraren\n --add-reads <modul>=<m\u00E5lmodul>(,<m\u00E5lmodul>)*\n uppdaterar <modul> f\u00F6r att l\u00E4sa <m\u00E5lmodul>, oavsett\n moduldeklarationen. \n <m\u00E5lmodul> kan vara ALL-UNNAMED f\u00F6r att l\u00E4sa alla\n ej namngivna moduler.\n --add-exports <modul>/<paket>=<m\u00E5lmodul>(,<m\u00E5lmodul>)*\n uppdaterar <modul> f\u00F6r att exportera <paket> till <m\u00E5lmodul>,\n oavsett moduldeklarationen.\n <m\u00E5lmodul> kan vara ALL-UNNAMED f\u00F6r att exportera till alla\n ej namngivna moduler.\n --add-opens <modul>/<paket>=<m\u00E5lmodul>(,<m\u00E5lmodul>)*\n uppdaterar <modul> f\u00F6r att \u00F6ppna <paket> till\n <m\u00E5lmodul>, oavsett moduldeklarationen.\n --illegal-access=<v\u00E4rde>\n till\u00E5t eller neka \u00E5tkomst till medlemmar av typer i namngivna\n moduler av kod i ej namngivna moduler.\n <v\u00E4rde> \u00E4r "deny", "permit", "warn" eller "debug"\n Det h\u00E4r alternativet tas bort i en kommande utg\u00E5va.\n --limit-modules <modulnamn>[,<modulnamn>...]\n begr\u00E4nsar universumet med observerbara moduler\n --patch-module <modul>=<fil>({0}<fil>)*\n \u00E5sidos\u00E4tt eller ut\u00F6ka en modul med klasser och resurser\n i JAR-filer eller kataloger.\n --disable-@files avaktivera \
+ytterligare argumentfilsut\u00F6kning\n\nDe h\u00E4r extraalternativen kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande.\n
# Translators please note do not translate the options themselves
java.launcher.X.macosx.usage=\nF\u00F6ljande alternativ \u00E4r Mac OS X-specifika:\n -XstartOnFirstThread\n k\u00F6r main()-metoden p\u00E5 den f\u00F6rsta (AppKit)-tr\u00E5den\n -Xdock:name=<applikationsnamn>\n \u00E5sidos\u00E4tt det standardapplikationsnamn som visas i dockan\n -Xdock:icon=<s\u00F6kv\u00E4g till ikonfil>\n \u00E5sidos\u00E4tt den standardikon som visas i dockan\n\n
@@ -47,6 +46,7 @@
java.launcher.cls.error4=Fel: Huvudmetoden finns inte i klassen {0}, definiera huvudmetoden som:\n public static void main(String[] args)\neller s\u00E5 m\u00E5ste en JavaFX-applikationsklass ut\u00F6ka {1}
java.launcher.cls.error5=Fel: JavaFX-exekveringskomponenter saknas, och de kr\u00E4vs f\u00F6r att kunna k\u00F6ra den h\u00E4r applikationen
java.launcher.cls.error6=Fel: LinkageError intr\u00E4ffade vid laddning av huvudklassen {0}\n\t{1}
+java.launcher.cls.error7=Fel: Kan inte initiera huvudklassen {0}\nOrsakades av: {1}: {2}
java.launcher.jar.error1=Fel: Ett ov\u00E4ntat fel intr\u00E4ffade n\u00E4r filen {0} skulle \u00F6ppnas
java.launcher.jar.error2=manifest finns inte i {0}
java.launcher.jar.error3=inget huvudmanifestattribut i {0}
@@ -55,5 +55,6 @@
java.launcher.javafx.error1=Fel: JavaFX launchApplication-metoden har fel signatur, den \nm\u00E5ste ha deklarerats som statisk och returnera ett v\u00E4rde av typen void
java.launcher.module.error1=modulen {0} har inget MainClass-attribut, anv\u00E4nd -m <module>/<main-class>
java.launcher.module.error2=Fel: kunde inte hitta eller ladda huvudklassen {0} i modulen {1}
-java.launcher.module.error3=Fel: kan inte ladda huvudklassen {0} fr\u00E5n modulen {1}\n\t{2}
+java.launcher.module.error3=Fel: Kan inte ladda huvudklassen {0} i modulen {1}\n\t{2}
java.launcher.module.error4={0} hittades inte
+java.launcher.module.error5=Fel: Kan inte initiera huvudklassen {0} i modulen {1}\nOrsakades av: {1}: {2}
--- a/src/java.base/share/classes/sun/launcher/resources/launcher_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/launcher/resources/launcher_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -26,17 +26,16 @@
# Translators please note do not translate the options themselves
java.launcher.opt.header = \u7528\u6CD5: {0} [options] <\u4E3B\u7C7B> [args...]\n (\u6267\u884C\u7C7B)\n \u6216 {0} [options] -jar <jar \u6587\u4EF6> [args...]\n (\u6267\u884C jar \u6587\u4EF6)\n \u6216 {0} [options] -m <\u6A21\u5757>[/<\u4E3B\u7C7B>] [args...]\n {0} [options] --module <\u6A21\u5757>[/<\u4E3B\u7C7B>] [args...]\n (\u6267\u884C\u6A21\u5757\u4E2D\u7684\u4E3B\u7C7B)\n\n \u5C06\u4E3B\u7C7B, -jar <jar \u6587\u4EF6>, -m \u6216 --module\n <\u6A21\u5757>/<\u4E3B\u7C7B> \u540E\u7684\u53C2\u6570\u4F5C\u4E3A\u53C2\u6570\u4F20\u9012\u5230\u4E3B\u7C7B\u3002\n\n \u5176\u4E2D, \u9009\u9879\u5305\u62EC:\n\n
-java.launcher.opt.datamodel =\ -d{0}\t \u5DF2\u8FC7\u65F6, \u5728\u4EE5\u540E\u7684\u53D1\u884C\u7248\u4E2D\u5C06\u88AB\u5220\u9664\n
java.launcher.opt.vmselect =\ {0}\t \u9009\u62E9 "{1}" VM\n
java.launcher.opt.hotspot =\ {0}\t \u662F "{1}" VM \u7684\u540C\u4E49\u8BCD [\u5DF2\u8FC7\u65F6]\n
# Translators please note do not translate the options themselves
-java.launcher.opt.footer = \ -cp <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n -classpath <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n --class-path <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n \u4F7F\u7528 {0} \u5206\u9694\u7684, \u7528\u4E8E\u641C\u7D22\u7C7B\u6587\u4EF6\u7684\u76EE\u5F55, JAR \u6863\u6848\n \u548C ZIP \u6863\u6848\u5217\u8868\u3002\n -p <\u6A21\u5757\u8DEF\u5F84>\n --module-path <\u6A21\u5757\u8DEF\u5F84>...\n \u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u5217\u8868, \u6BCF\u4E2A\u76EE\u5F55\n \u90FD\u662F\u4E00\u4E2A\u5305\u542B\u6A21\u5757\u7684\u76EE\u5F55\u3002\n --upgrade-module-path <\u6A21\u5757\u8DEF\u5F84>...\n \u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u5217\u8868, \u6BCF\u4E2A\u76EE\u5F55\n \u90FD\u662F\u4E00\u4E2A\u5305\u542B\u6A21\u5757\u7684\u76EE\u5F55, \u8FD9\u4E9B\u6A21\u5757\n \u7528\u4E8E\u66FF\u6362\u8FD0\u884C\u65F6\u6620\u50CF\u4E2D\u7684\u53EF\u5347\u7EA7\u6A21\u5757\n --add-modules <\u6A21\u5757\u540D\u79F0>[,<\u6A21\u5757\u540D\u79F0>...]\n \u9664\u4E86\u521D\u59CB\u6A21\u5757\u4E4B\u5916\u8981\u89E3\u6790\u7684\u6839\u6A21\u5757\u3002\n <\u6A21\u5757\u540D\u79F0> \u8FD8\u53EF\u4EE5\u4E3A ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n \u5217\u51FA\u53EF\u89C2\u5BDF\u6A21\u5757\u5E76\u9000\u51FA\n --d <\u6A21\u5757\u540D\u79F0>\n --describe-module <\u6A21\u5757\u540D\u79F0>\n \u63CF\u8FF0\u6A21\u5757\u5E76\u9000\u51FA\n --dry-run \u521B\u5EFA VM \u5E76\u52A0\u8F7D\u4E3B\u7C7B, \u4F46\u4E0D\u6267\u884C main \u65B9\u6CD5\u3002\n \u6B64 --dry-run \u9009\u9879\u5BF9\u4E8E\u9A8C\u8BC1\u8BF8\u5982\n \u6A21\u5757\u7CFB\u7EDF\u914D\u7F6E\u8FD9\u6837\u7684\u547D\u4EE4\u884C\u9009\u9879\u53EF\u80FD\u975E\u5E38\u6709\u7528\u3002\n --validate-modules\n \u9A8C\u8BC1\u6240\u6709\u6A21\u5757\u5E76\u9000\u51FA\n --validate-modules \u9009\u9879\u5BF9\u4E8E\u67E5\u627E\n \u6A21\u5757\u8DEF\u5F84\u4E2D\u6A21\u5757\u7684\u51B2\u7A81\u53CA\u5176\u4ED6\u9519\u8BEF\u53EF\u80FD\u975E\u5E38\u6709\u7528\u3002\n -D<\u540D\u79F0>=<\u503C>\n \u8BBE\u7F6E\u7CFB\u7EDF\u5C5E\u6027\n -verbose:[class|module|gc|jni]\n \u542F\u7528\u8BE6\u7EC6\u8F93\u51FA\n -version \u5C06\u4EA7\u54C1\u7248\u672C\u8F93\u51FA\u5230\u9519\u8BEF\u6D41\u5E76\u9000\u51FA\n --version \u5C06\u4EA7\u54C1\u7248\u672C\u8F93\u51FA\u5230\u8F93\u51FA\u6D41\u5E76\u9000\u51FA\n -showversion \u5C06\u4EA7\u54C1\u7248\u672C\u8F93\u51FA\u5230\u9519\u8BEF\u6D41\u5E76\u7EE7\u7EED\n --show-version\n \u5C06\u4EA7\u54C1\u7248\u672C\u8F93\u51FA\u5230\u8F93\u51FA\u6D41\u5E76\u7EE7\u7EED\n --show-module-resolution\n \u5728\u542F\u52A8\u8FC7\u7A0B\u4E2D\u663E\u793A\u6A21\u5757\u89E3\u6790\u8F93\u51FA\n -? -h -help\n \u5C06\u6B64\u5E2E\u52A9\u6D88\u606F\u8F93\u51FA\u5230\u9519\u8BEF\u6D41\n --help \u5C06\u6B64\u5E2E\u52A9\u6D88\u606F\u8F93\u51FA\u5230\u8F93\u51FA\u6D41\n -X \u5C06\u989D\u5916\u9009\u9879\u7684\u5E2E\u52A9\u8F93\u51FA\u5230\u9519\u8BEF\u6D41\n --help-extra \u5C06\u989D\u5916\u9009\u9879\u7684\u5E2E\u52A9\u8F93\u51FA\u5230\u8F93\u51FA\u6D41\n -ea[:<\u7A0B\u5E8F\u5305\u540D\u79F0>...|:<\u7C7B\u540D>]\n -enableassertions[:<\u7A0B\u5E8F\u5305\u540D\u79F0>...|:<\u7C7B\u540D>]\n \u6309\u6307\u5B9A\u7684\u7C92\u5EA6\u542F\u7528\u65AD\u8A00\n -da[:<\u7A0B\u5E8F\u5305\u540D\u79F0>...|:<\u7C7B\u540D>]\n -disableassertions[:<\u7A0B\u5E8F\u5305\u540D\u79F0>...|:<\u7C7B\u540D>]\n \
-\u6309\u6307\u5B9A\u7684\u7C92\u5EA6\u7981\u7528\u65AD\u8A00\n -esa | -enablesystemassertions\n \u542F\u7528\u7CFB\u7EDF\u65AD\u8A00\n -dsa | -disablesystemassertions\n \u7981\u7528\u7CFB\u7EDF\u65AD\u8A00\n -agentlib:<\u5E93\u540D>[=<\u9009\u9879>]\n \u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93 <\u5E93\u540D>, \u4F8B\u5982 -agentlib:jdwp\n \u53E6\u8BF7\u53C2\u9605 -agentlib:jdwp=help\n -agentpath:<\u8DEF\u5F84\u540D>[=<\u9009\u9879>]\n \u6309\u5B8C\u6574\u8DEF\u5F84\u540D\u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93\n -javaagent:<jar \u8DEF\u5F84>[=<\u9009\u9879>]\n \u52A0\u8F7D Java \u7F16\u7A0B\u8BED\u8A00\u4EE3\u7406, \u8BF7\u53C2\u9605 java.lang.instrument\n -splash:<\u56FE\u50CF\u8DEF\u5F84>\n \u4F7F\u7528\u6307\u5B9A\u7684\u56FE\u50CF\u663E\u793A\u542F\u52A8\u5C4F\u5E55\n \u81EA\u52A8\u652F\u6301\u548C\u4F7F\u7528 HiDPI \u7F29\u653E\u56FE\u50CF\n (\u5982\u679C\u53EF\u7528)\u3002\u5E94\u59CB\u7EC8\u5C06\u672A\u7F29\u653E\u7684\u56FE\u50CF\u6587\u4EF6\u540D (\u4F8B\u5982, image.ext)\n \u4F5C\u4E3A\u53C2\u6570\u4F20\u9012\u7ED9 -splash \u9009\u9879\u3002\n \u5C06\u81EA\u52A8\u9009\u53D6\u63D0\u4F9B\u7684\u6700\u5408\u9002\u7684\u7F29\u653E\n \u56FE\u50CF\u3002\n \u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605 SplashScreen API \u6587\u6863\n @argument \u6587\u4EF6\n \u4E00\u4E2A\u6216\u591A\u4E2A\u5305\u542B\u9009\u9879\u7684\u53C2\u6570\u6587\u4EF6\n -disable-@files\n \u963B\u6B62\u8FDB\u4E00\u6B65\u6269\u5C55\u53C2\u6570\u6587\u4EF6\n\u8981\u4E3A\u957F\u9009\u9879\u6307\u5B9A\u53C2\u6570, \u53EF\u4EE5\u4F7F\u7528 --<\u540D\u79F0>=<\u503C> \u6216\n--<\u540D\u79F0> <\u503C>\u3002\n
+java.launcher.opt.footer = \ -cp <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n -classpath <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n --class-path <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n \u4F7F\u7528 {0} \u5206\u9694\u7684, \u7528\u4E8E\u641C\u7D22\u7C7B\u6587\u4EF6\u7684\u76EE\u5F55, JAR \u6863\u6848\n \u548C ZIP \u6863\u6848\u5217\u8868\u3002\n -p <\u6A21\u5757\u8DEF\u5F84>\n --module-path <\u6A21\u5757\u8DEF\u5F84>...\n \u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u5217\u8868, \u6BCF\u4E2A\u76EE\u5F55\n \u90FD\u662F\u4E00\u4E2A\u5305\u542B\u6A21\u5757\u7684\u76EE\u5F55\u3002\n --upgrade-module-path <\u6A21\u5757\u8DEF\u5F84>...\n \u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u5217\u8868, \u6BCF\u4E2A\u76EE\u5F55\n \u90FD\u662F\u4E00\u4E2A\u5305\u542B\u6A21\u5757\u7684\u76EE\u5F55, \u8FD9\u4E9B\u6A21\u5757\n \u7528\u4E8E\u66FF\u6362\u8FD0\u884C\u65F6\u6620\u50CF\u4E2D\u7684\u53EF\u5347\u7EA7\u6A21\u5757\n --add-modules <\u6A21\u5757\u540D\u79F0>[,<\u6A21\u5757\u540D\u79F0>...]\n \u9664\u4E86\u521D\u59CB\u6A21\u5757\u4E4B\u5916\u8981\u89E3\u6790\u7684\u6839\u6A21\u5757\u3002\n <\u6A21\u5757\u540D\u79F0> \u8FD8\u53EF\u4EE5\u4E3A ALL-DEFAULT, ALL-SYSTEM,\n ALL-MODULE-PATH.\n --list-modules\n \u5217\u51FA\u53EF\u89C2\u5BDF\u6A21\u5757\u5E76\u9000\u51FA\n -d <module name>\n --describe-module <\u6A21\u5757\u540D\u79F0>\n \u63CF\u8FF0\u6A21\u5757\u5E76\u9000\u51FA\n --dry-run \u521B\u5EFA VM \u5E76\u52A0\u8F7D\u4E3B\u7C7B, \u4F46\u4E0D\u6267\u884C main \u65B9\u6CD5\u3002\n \u6B64 --dry-run \u9009\u9879\u5BF9\u4E8E\u9A8C\u8BC1\u8BF8\u5982\n \u6A21\u5757\u7CFB\u7EDF\u914D\u7F6E\u8FD9\u6837\u7684\u547D\u4EE4\u884C\u9009\u9879\u53EF\u80FD\u975E\u5E38\u6709\u7528\u3002\n --validate-modules\n \u9A8C\u8BC1\u6240\u6709\u6A21\u5757\u5E76\u9000\u51FA\n --validate-modules \u9009\u9879\u5BF9\u4E8E\u67E5\u627E\n \u6A21\u5757\u8DEF\u5F84\u4E2D\u6A21\u5757\u7684\u51B2\u7A81\u53CA\u5176\u4ED6\u9519\u8BEF\u53EF\u80FD\u975E\u5E38\u6709\u7528\u3002\n -D<\u540D\u79F0>=<\u503C>\n \u8BBE\u7F6E\u7CFB\u7EDF\u5C5E\u6027\n -verbose:[class|module|gc|jni]\n \u542F\u7528\u8BE6\u7EC6\u8F93\u51FA\n -version \u5C06\u4EA7\u54C1\u7248\u672C\u8F93\u51FA\u5230\u9519\u8BEF\u6D41\u5E76\u9000\u51FA\n --version \u5C06\u4EA7\u54C1\u7248\u672C\u8F93\u51FA\u5230\u8F93\u51FA\u6D41\u5E76\u9000\u51FA\n -showversion \u5C06\u4EA7\u54C1\u7248\u672C\u8F93\u51FA\u5230\u9519\u8BEF\u6D41\u5E76\u7EE7\u7EED\n --show-version\n \u5C06\u4EA7\u54C1\u7248\u672C\u8F93\u51FA\u5230\u8F93\u51FA\u6D41\u5E76\u7EE7\u7EED\n --show-module-resolution\n \u5728\u542F\u52A8\u8FC7\u7A0B\u4E2D\u663E\u793A\u6A21\u5757\u89E3\u6790\u8F93\u51FA\n -? -h -help\n \u5C06\u6B64\u5E2E\u52A9\u6D88\u606F\u8F93\u51FA\u5230\u9519\u8BEF\u6D41\n --help \u5C06\u6B64\u5E2E\u52A9\u6D88\u606F\u8F93\u51FA\u5230\u8F93\u51FA\u6D41\n -X \u5C06\u989D\u5916\u9009\u9879\u7684\u5E2E\u52A9\u8F93\u51FA\u5230\u9519\u8BEF\u6D41\n --help-extra \u5C06\u989D\u5916\u9009\u9879\u7684\u5E2E\u52A9\u8F93\u51FA\u5230\u8F93\u51FA\u6D41\n -ea[:<\u7A0B\u5E8F\u5305\u540D\u79F0>...|:<\u7C7B\u540D>]\n -enableassertions[:<\u7A0B\u5E8F\u5305\u540D\u79F0>...|:<\u7C7B\u540D>]\n \u6309\u6307\u5B9A\u7684\u7C92\u5EA6\u542F\u7528\u65AD\u8A00\n -da[:<\u7A0B\u5E8F\u5305\u540D\u79F0>...|:<\u7C7B\u540D>]\n -disableassertions[:<\u7A0B\u5E8F\u5305\u540D\u79F0>...|:<\u7C7B\u540D>]\n \u6309\u6307\u5B9A\u7684\u7C92\u5EA6\u7981\u7528\u65AD\u8A00\n -esa \
+| -enablesystemassertions\n \u542F\u7528\u7CFB\u7EDF\u65AD\u8A00\n -dsa | -disablesystemassertions\n \u7981\u7528\u7CFB\u7EDF\u65AD\u8A00\n -agentlib:<\u5E93\u540D>[=<\u9009\u9879>]\n \u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93 <\u5E93\u540D>, \u4F8B\u5982 -agentlib:jdwp\n \u53E6\u8BF7\u53C2\u9605 -agentlib:jdwp=help\n -agentpath:<\u8DEF\u5F84\u540D>[=<\u9009\u9879>]\n \u6309\u5B8C\u6574\u8DEF\u5F84\u540D\u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93\n -javaagent:<jar \u8DEF\u5F84>[=<\u9009\u9879>]\n \u52A0\u8F7D Java \u7F16\u7A0B\u8BED\u8A00\u4EE3\u7406, \u8BF7\u53C2\u9605 java.lang.instrument\n -splash:<\u56FE\u50CF\u8DEF\u5F84>\n \u4F7F\u7528\u6307\u5B9A\u7684\u56FE\u50CF\u663E\u793A\u542F\u52A8\u5C4F\u5E55\n \u81EA\u52A8\u652F\u6301\u548C\u4F7F\u7528 HiDPI \u7F29\u653E\u56FE\u50CF\n (\u5982\u679C\u53EF\u7528)\u3002\u5E94\u59CB\u7EC8\u5C06\u672A\u7F29\u653E\u7684\u56FE\u50CF\u6587\u4EF6\u540D (\u4F8B\u5982, image.ext)\n \u4F5C\u4E3A\u53C2\u6570\u4F20\u9012\u7ED9 -splash \u9009\u9879\u3002\n \u5C06\u81EA\u52A8\u9009\u53D6\u63D0\u4F9B\u7684\u6700\u5408\u9002\u7684\u7F29\u653E\n \u56FE\u50CF\u3002\n \u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605 SplashScreen API \u6587\u6863\n @argument \u6587\u4EF6\n \u4E00\u4E2A\u6216\u591A\u4E2A\u5305\u542B\u9009\u9879\u7684\u53C2\u6570\u6587\u4EF6\n -disable-@files\n \u963B\u6B62\u8FDB\u4E00\u6B65\u6269\u5C55\u53C2\u6570\u6587\u4EF6\n\u8981\u4E3A\u957F\u9009\u9879\u6307\u5B9A\u53C2\u6570, \u53EF\u4EE5\u4F7F\u7528 --<\u540D\u79F0>=<\u503C> \u6216\n--<\u540D\u79F0> <\u503C>\u3002\n
# Translators please note do not translate the options themselves
-java.launcher.X.usage=\n -Xbatch \u7981\u7528\u540E\u53F0\u7F16\u8BD1\n -Xbootclasspath/a:<\u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u548C zip/jar \u6587\u4EF6>\n \u9644\u52A0\u5728\u5F15\u5BFC\u7C7B\u8DEF\u5F84\u672B\u5C3E\n -Xcheck:jni \u5BF9 JNI \u51FD\u6570\u6267\u884C\u5176\u4ED6\u68C0\u67E5\n -Xcomp \u5728\u9996\u6B21\u8C03\u7528\u65F6\u5F3A\u5236\u4F7F\u7528\u7684\u7F16\u8BD1\u65B9\u6CD5\n -Xdebug \u4E3A\u5B9E\u73B0\u5411\u540E\u517C\u5BB9\u800C\u63D0\u4F9B\n -Xdiag \u663E\u793A\u9644\u52A0\u8BCA\u65AD\u6D88\u606F\n -Xfuture \u542F\u7528\u6700\u4E25\u683C\u7684\u68C0\u67E5, \u9884\u671F\u5C06\u6765\u7684\u9ED8\u8BA4\u503C\n -Xint \u4EC5\u89E3\u91CA\u6A21\u5F0F\u6267\u884C\n -Xinternalversion\n \u663E\u793A\u6BD4 -version \u9009\u9879\u66F4\u8BE6\u7EC6\u7684 JVM\n \u7248\u672C\u4FE1\u606F\n -Xloggc:<\u6587\u4EF6> \u5C06 GC \u72B6\u6001\u8BB0\u5F55\u5728\u6587\u4EF6\u4E2D (\u5E26\u65F6\u95F4\u6233)\n -Xmixed \u6DF7\u5408\u6A21\u5F0F\u6267\u884C (\u9ED8\u8BA4\u503C)\n -Xmn<\u5927\u5C0F> \u4E3A\u5E74\u8F7B\u4EE3 (\u65B0\u751F\u4EE3) \u8BBE\u7F6E\u521D\u59CB\u548C\u6700\u5927\u5806\u5927\u5C0F\n (\u4EE5\u5B57\u8282\u4E3A\u5355\u4F4D)\n -Xms<\u5927\u5C0F> \u8BBE\u7F6E\u521D\u59CB Java \u5806\u5927\u5C0F\n -Xmx<\u5927\u5C0F> \u8BBE\u7F6E\u6700\u5927 Java \u5806\u5927\u5C0F\n -Xnoclassgc \u7981\u7528\u7C7B\u5783\u573E\u6536\u96C6\n -Xprof \u8F93\u51FA cpu \u5206\u6790\u6570\u636E (\u5DF2\u8FC7\u65F6)\n -Xrs \u51CF\u5C11 Java/VM \u5BF9\u64CD\u4F5C\u7CFB\u7EDF\u4FE1\u53F7\u7684\u4F7F\u7528 (\u8BF7\u53C2\u9605\u6587\u6863)\n -Xshare:auto \u5728\u53EF\u80FD\u7684\u60C5\u51B5\u4E0B\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E (\u9ED8\u8BA4\u503C)\n -Xshare:off \u4E0D\u5C1D\u8BD5\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E\n -Xshare:on \u8981\u6C42\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E, \u5426\u5219\u5C06\u5931\u8D25\u3002\n -XshowSettings \u663E\u793A\u6240\u6709\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n -XshowSettings:all\n \u663E\u793A\u6240\u6709\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n -XshowSettings:locale\n \u663E\u793A\u6240\u6709\u4E0E\u533A\u57DF\u8BBE\u7F6E\u76F8\u5173\u7684\u8BBE\u7F6E\u5E76\u7EE7\u7EEDe\n -XshowSettings:properties\n \u663E\u793A\u6240\u6709\u5C5E\u6027\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n -XshowSettings:vm \u663E\u793A\u6240\u6709\u4E0E vm \u76F8\u5173\u7684\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n -Xss<\u5927\u5C0F> \u8BBE\u7F6E Java \u7EBF\u7A0B\u5806\u6808\u5927\u5C0F\n -Xverify \u8BBE\u7F6E\u5B57\u8282\u7801\u9A8C\u8BC1\u5668\u7684\u6A21\u5F0F\n --add-reads <\u6A21\u5757>=<\u76EE\u6807\u6A21\u5757>(,<\u76EE\u6807\u6A21\u5757>)*\n \u66F4\u65B0 <\u6A21\u5757> \u4EE5\u8BFB\u53D6 <\u76EE\u6807\u6A21\u5757>,\n \u800C\u65E0\u8BBA\u6A21\u5757\u58F0\u660E\u5982\u4F55\u3002\n <\u76EE\u6807\u6A21\u5757> \u53EF\u4EE5\u662F ALL-UNNAMED \u4EE5\u8BFB\u53D6\u6240\u6709\u672A\u547D\u540D\n \u6A21\u5757\u3002\n --add-exports <\u6A21\u5757>/<\u7A0B\u5E8F\u5305>=<\u76EE\u6807\u6A21\u5757>(,<\u76EE\u6807\u6A21\u5757>)*\n \u66F4\u65B0 <\u6A21\u5757> \u4EE5\u5C06 <\u7A0B\u5E8F\u5305> \u5BFC\u51FA\u5230 <\u76EE\u6807\u6A21\u5757>,\n \u800C\u65E0\u8BBA\u6A21\u5757\u58F0\u660E\u5982\u4F55\u3002\n <\u76EE\u6807\u6A21\u5757> \u53EF\u4EE5\u662F ALL-UNNAMED \u4EE5\u5BFC\u51FA\u5230\u6240\u6709\n \u672A\u547D\u540D\u6A21\u5757\u3002\n --add-opens <\u6A21\u5757>/<\u7A0B\u5E8F\u5305>=<\u76EE\u6807\u6A21\u5757>(,<\u76EE\u6807\u6A21\u5757>)*\n \u66F4\u65B0 <\u6A21\u5757> \
-\u4EE5\u5728 <\u76EE\u6807\u6A21\u5757> \u4E2D\n \u6253\u5F00 <\u7A0B\u5E8F\u5305>, \u800C\u65E0\u8BBA\u6A21\u5757\u58F0\u660E\u5982\u4F55\u3002\n --limit-modules <\u6A21\u5757\u540D\u79F0>[,<\u6A21\u5757\u540D\u79F0>...]\n \u9650\u5236\u53EF\u89C2\u5BDF\u6A21\u5757\u7684\u9886\u57DF\n --patch-module <\u6A21\u5757>=<\u6587\u4EF6>({0}<\u6587\u4EF6>)*\n \u4F7F\u7528 JAR \u6587\u4EF6\u6216\u76EE\u5F55\u4E2D\u7684\u7C7B\u548C\u8D44\u6E90\n \u8986\u76D6\u6216\u589E\u5F3A\u6A21\u5757\u3002\n --disable-@files \u7981\u6B62\u8FDB\u4E00\u6B65\u6269\u5C55\u53C2\u6570\u6587\u4EF6\n\n\u8FD9\u4E9B\u989D\u5916\u9009\u9879\u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n
+java.launcher.X.usage=\n -Xbatch \u7981\u7528\u540E\u53F0\u7F16\u8BD1\n -Xbootclasspath/a:<\u4EE5 {0} \u5206\u9694\u7684\u76EE\u5F55\u548C zip/jar \u6587\u4EF6>\n \u9644\u52A0\u5728\u5F15\u5BFC\u7C7B\u8DEF\u5F84\u672B\u5C3E\n -Xcheck:jni \u5BF9 JNI \u51FD\u6570\u6267\u884C\u5176\u4ED6\u68C0\u67E5\n -Xcomp \u5728\u9996\u6B21\u8C03\u7528\u65F6\u5F3A\u5236\u7F16\u8BD1\u65B9\u6CD5\n -Xdebug \u4E3A\u5B9E\u73B0\u5411\u540E\u517C\u5BB9\u800C\u63D0\u4F9B\n -Xdiag \u663E\u793A\u9644\u52A0\u8BCA\u65AD\u6D88\u606F\n -Xfuture \u542F\u7528\u6700\u4E25\u683C\u7684\u68C0\u67E5, \u9884\u671F\u5C06\u6765\u7684\u9ED8\u8BA4\u503C\n -Xint \u4EC5\u89E3\u91CA\u6A21\u5F0F\u6267\u884C\n -Xinternalversion\n \u663E\u793A\u6BD4 -version \u9009\u9879\u66F4\u8BE6\u7EC6\u7684 JVM\n \u7248\u672C\u4FE1\u606F\n -Xloggc:<file> \u5C06 GC \u72B6\u6001\u8BB0\u5F55\u5728\u6587\u4EF6\u4E2D (\u5E26\u65F6\u95F4\u6233)\n -Xmixed \u6DF7\u5408\u6A21\u5F0F\u6267\u884C (\u9ED8\u8BA4\u503C)\n -Xmn<size> \u4E3A\u5E74\u8F7B\u4EE3 (\u65B0\u751F\u4EE3) \u8BBE\u7F6E\u521D\u59CB\u548C\u6700\u5927\u5806\u5927\u5C0F\n (\u4EE5\u5B57\u8282\u4E3A\u5355\u4F4D)\n -Xms<size> \u8BBE\u7F6E\u521D\u59CB Java \u5806\u5927\u5C0F\n -Xmx<size> \u8BBE\u7F6E\u6700\u5927 Java \u5806\u5927\u5C0F\n -Xnoclassgc \u7981\u7528\u7C7B\u5783\u573E\u6536\u96C6\n -Xrs \u51CF\u5C11 Java/VM \u5BF9\u64CD\u4F5C\u7CFB\u7EDF\u4FE1\u53F7\u7684\u4F7F\u7528 (\u8BF7\u53C2\u9605\u6587\u6863)\n -Xshare:auto \u5728\u53EF\u80FD\u7684\u60C5\u51B5\u4E0B\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E (\u9ED8\u8BA4\u503C)\n -Xshare:off \u4E0D\u5C1D\u8BD5\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E\n -Xshare:on \u8981\u6C42\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E, \u5426\u5219\u5C06\u5931\u8D25\u3002\n -XshowSettings \u663E\u793A\u6240\u6709\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n -XshowSettings:all\n \u663E\u793A\u6240\u6709\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n -XshowSettings:locale\n \u663E\u793A\u6240\u6709\u4E0E\u533A\u57DF\u8BBE\u7F6E\u76F8\u5173\u7684\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n -XshowSettings:properties\n \u663E\u793A\u6240\u6709\u5C5E\u6027\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n -XshowSettings:vm \u663E\u793A\u6240\u6709\u4E0E vm \u76F8\u5173\u7684\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n -Xss<size> \u8BBE\u7F6E Java \u7EBF\u7A0B\u5806\u6808\u5927\u5C0F\n -Xverify \u8BBE\u7F6E\u5B57\u8282\u7801\u9A8C\u8BC1\u5668\u7684\u6A21\u5F0F\n --add-reads <\u6A21\u5757>=<\u76EE\u6807\u6A21\u5757>(,<\u76EE\u6807\u6A21\u5757>)*\n \u66F4\u65B0 <\u6A21\u5757> \u4EE5\u8BFB\u53D6 <\u76EE\u6807\u6A21\u5757>, \u800C\u65E0\u8BBA\n \u6A21\u5757\u58F0\u660E\u5982\u4F55\u3002\n <\u76EE\u6807\u6A21\u5757> \u53EF\u4EE5\u662F ALL-UNNAMED \u4EE5\u8BFB\u53D6\u6240\u6709\u672A\u547D\u540D\n \u6A21\u5757\u3002\n --add-exports <\u6A21\u5757>/<\u7A0B\u5E8F\u5305>=<\u76EE\u6807\u6A21\u5757>(,<\u76EE\u6807\u6A21\u5757>)*\n \u66F4\u65B0 <\u6A21\u5757> \u4EE5\u5C06 <\u7A0B\u5E8F\u5305> \u5BFC\u51FA\u5230 <\u76EE\u6807\u6A21\u5757>,\n \u800C\u65E0\u8BBA\u6A21\u5757\u58F0\u660E\u5982\u4F55\u3002\n <\u76EE\u6807\u6A21\u5757> \u53EF\u4EE5\u662F ALL-UNNAMED \u4EE5\u5BFC\u51FA\u5230\u6240\u6709\n \u672A\u547D\u540D\u6A21\u5757\u3002\n --add-opens <\u6A21\u5757>/<\u7A0B\u5E8F\u5305>=<\u76EE\u6807\u6A21\u5757>(,<\u76EE\u6807\u6A21\u5757>)*\n \u66F4\u65B0 <\u6A21\u5757> \u4EE5\u5728 <\u76EE\u6807\u6A21\u5757> \u4E2D\u6253\u5F00\n <\u7A0B\u5E8F\u5305>, \
+\u800C\u65E0\u8BBA\u6A21\u5757\u58F0\u660E\u5982\u4F55\u3002\n --illegal-access=<\u503C>\n \u5141\u8BB8\u6216\u62D2\u7EDD\u901A\u8FC7\u672A\u547D\u540D\u6A21\u5757\u4E2D\u7684\u4EE3\u7801\u5BF9\u547D\u540D\u6A21\u5757\u4E2D\u7684\n \u7C7B\u578B\u6210\u5458\u8FDB\u884C\u8BBF\u95EE\u3002\n <\u503C> \u4E3A "deny", "permit", "warn" \u6216 "debug" \u4E4B\u4E00\n \u6B64\u9009\u9879\u5C06\u5728\u672A\u6765\u53D1\u884C\u7248\u4E2D\u5220\u9664\u3002\n --limit-modules <\u6A21\u5757\u540D>[,<\u6A21\u5757\u540D>...]\n \u9650\u5236\u53EF\u89C2\u5BDF\u6A21\u5757\u7684\u9886\u57DF\n --patch-module <\u6A21\u5757>=<\u6587\u4EF6>({0}<\u6587\u4EF6>)*\n \u4F7F\u7528 JAR \u6587\u4EF6\u6216\u76EE\u5F55\u4E2D\u7684\u7C7B\u548C\u8D44\u6E90\n \u8986\u76D6\u6216\u589E\u5F3A\u6A21\u5757\u3002\n --disable-@files \u7981\u6B62\u8FDB\u4E00\u6B65\u6269\u5C55\u53C2\u6570\u6587\u4EF6\n\n\u8FD9\u4E9B\u989D\u5916\u9009\u9879\u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n
# Translators please note do not translate the options themselves
java.launcher.X.macosx.usage=\n\u4EE5\u4E0B\u9009\u9879\u4E3A Mac OS X \u7279\u5B9A\u7684\u9009\u9879:\n -XstartOnFirstThread\n \u5728\u7B2C\u4E00\u4E2A (AppKit) \u7EBF\u7A0B\u4E0A\u8FD0\u884C main() \u65B9\u6CD5\n -Xdock:name=<\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0>\n \u8986\u76D6\u505C\u9760\u680F\u4E2D\u663E\u793A\u7684\u9ED8\u8BA4\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0\n -Xdock:icon=<\u56FE\u6807\u6587\u4EF6\u7684\u8DEF\u5F84>\n \u8986\u76D6\u505C\u9760\u680F\u4E2D\u663E\u793A\u7684\u9ED8\u8BA4\u56FE\u6807\n\n
@@ -47,6 +46,7 @@
java.launcher.cls.error4=\u9519\u8BEF: \u5728\u7C7B {0} \u4E2D\u627E\u4E0D\u5230 main \u65B9\u6CD5, \u8BF7\u5C06 main \u65B9\u6CD5\u5B9A\u4E49\u4E3A:\n public static void main(String[] args)\n\u5426\u5219 JavaFX \u5E94\u7528\u7A0B\u5E8F\u7C7B\u5FC5\u987B\u6269\u5C55{1}
java.launcher.cls.error5=\u9519\u8BEF: \u7F3A\u5C11 JavaFX \u8FD0\u884C\u65F6\u7EC4\u4EF6, \u9700\u8981\u4F7F\u7528\u8BE5\u7EC4\u4EF6\u6765\u8FD0\u884C\u6B64\u5E94\u7528\u7A0B\u5E8F
java.launcher.cls.error6=\u9519\u8BEF: \u52A0\u8F7D\u4E3B\u7C7B {0} \u65F6\u51FA\u73B0 LinkageError\n\t{1}
+java.launcher.cls.error7=\u9519\u8BEF: \u65E0\u6CD5\u521D\u59CB\u5316\u4E3B\u7C7B {0}\n\u539F\u56E0: {1}: {2}
java.launcher.jar.error1=\u9519\u8BEF: \u5C1D\u8BD5\u6253\u5F00\u6587\u4EF6{0}\u65F6\u51FA\u73B0\u610F\u5916\u9519\u8BEF
java.launcher.jar.error2=\u5728{0}\u4E2D\u627E\u4E0D\u5230\u6E05\u5355
java.launcher.jar.error3={0}\u4E2D\u6CA1\u6709\u4E3B\u6E05\u5355\u5C5E\u6027
@@ -55,5 +55,6 @@
java.launcher.javafx.error1=\u9519\u8BEF: JavaFX launchApplication \u65B9\u6CD5\u5177\u6709\u9519\u8BEF\u7684\u7B7E\u540D, \u5FC5\u987B\n\u5C06\u65B9\u6CD5\u58F0\u660E\u4E3A\u9759\u6001\u65B9\u6CD5\u5E76\u8FD4\u56DE\u7A7A\u7C7B\u578B\u7684\u503C
java.launcher.module.error1=\u6A21\u5757 {0} \u4E0D\u5177\u6709 MainClass \u5C5E\u6027, \u8BF7\u4F7F\u7528 -m <module>/<main-class>
java.launcher.module.error2=\u9519\u8BEF: \u5728\u6A21\u5757 {1} \u4E2D\u627E\u4E0D\u5230\u6216\u65E0\u6CD5\u52A0\u8F7D\u4E3B\u7C7B {0}
-java.launcher.module.error3=\u9519\u8BEF: \u65E0\u6CD5\u4ECE\u6A21\u5757 {1} \u52A0\u8F7D\u4E3B\u7C7B {0}\n\t{2}
+java.launcher.module.error3=\u9519\u8BEF: \u65E0\u6CD5\u5C06\u4E3B\u7C7B {0} \u52A0\u8F7D\u5230\u6A21\u5757 {1} \u4E2D\n\t{2}
java.launcher.module.error4=\u627E\u4E0D\u5230{0}
+java.launcher.module.error5=\u9519\u8BEF: \u65E0\u6CD5\u521D\u59CB\u5316\u6A21\u5757 {1} \u4E2D\u7684\u4E3B\u7C7B {0}\n\u539F\u56E0: {1}: {2}
--- a/src/java.base/share/classes/sun/launcher/resources/launcher_zh_TW.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/launcher/resources/launcher_zh_TW.properties Wed Jan 17 12:19:06 2018 +0000
@@ -26,17 +26,16 @@
# Translators please note do not translate the options themselves
java.launcher.opt.header = \u7528\u6CD5: {0} [options] <mainclass> [args...]\n (\u7528\u65BC\u57F7\u884C\u985E\u5225)\n \u6216\u8005 {0} [options] -jar <jarfile> [args...]\n (\u7528\u65BC\u57F7\u884C jar \u6A94\u6848)\n \u6216\u8005 {0} [options] -m <module>[/<mainclass>] [args...]\n {0} [options] --module <module>[/<mainclass>] [args...]\n (\u7528\u65BC\u57F7\u884C\u6A21\u7D44\u4E2D\u7684\u4E3B\u8981\u985E\u5225)\n\n \u4E3B\u8981\u985E\u5225\u3001-jar <jarfile>\u3001-m \u6216 --module <module>/<mainclass>\n \u4E4B\u5F8C\u7684\u5F15\u6578\u6703\u7576\u6210\u5F15\u6578\u50B3\u9001\u81F3\u4E3B\u8981\u985E\u5225\u3002\n\n \u5176\u4E2D\u9078\u9805\u5305\u62EC:\n\n
-java.launcher.opt.datamodel =\ -d{0}\t \u5DF2\u4E0D\u518D\u4F7F\u7528\uFF0C\u5C07\u65BC\u672A\u4F86\u7248\u672C\u4E2D\u79FB\u9664\n
java.launcher.opt.vmselect =\ {0}\t \u9078\u53D6 "{1}" VM\n
java.launcher.opt.hotspot =\ {0}\t \u662F "{1}" VM \u7684\u540C\u7FA9\u5B57 [\u5DF2\u4E0D\u518D\u4F7F\u7528]\n
# Translators please note do not translate the options themselves
-java.launcher.opt.footer = \ -cp <\u76EE\u9304\u548C zip/jar \u6A94\u6848\u7684\u985E\u5225\u641C\u5C0B\u8DEF\u5F91>\n -classpath <\u76EE\u9304\u548C zip/jar \u6A94\u6848\u7684\u985E\u5225\u641C\u5C0B\u8DEF\u5F91>\n --class-path <\u76EE\u9304\u548C zip/jar \u6A94\u6848\u7684\u985E\u5225\u641C\u5C0B\u8DEF\u5F91>\n \u4EE5 {0} \u5340\u9694\u7684\u76EE\u9304\u3001JAR \u5B58\u6A94\n \u4EE5\u53CA ZIP \u5B58\u6A94\u6E05\u55AE (\u5C07\u65BC\u5176\u4E2D\u641C\u5C0B\u985E\u5225\u6A94\u6848)\u3002\n -p <\u6A21\u7D44\u8DEF\u5F91>\n --module-path <\u6A21\u7D44\u8DEF\u5F91>...\n \u4EE5 {0} \u5340\u9694\u7684\u76EE\u9304\u6E05\u55AE\uFF0C\u6BCF\u500B\u76EE\u9304\n \u90FD\u662F\u4E00\u500B\u6A21\u7D44\u76EE\u9304\u3002\n --upgrade-module-path <\u6A21\u7D44\u8DEF\u5F91>...\n \u4EE5 {0} \u5340\u9694\u7684\u76EE\u9304\u6E05\u55AE\uFF0C\u6BCF\u500B\u76EE\u9304\n \u90FD\u662F\u4E00\u500B\u6A21\u7D44\u76EE\u9304\uFF0C\u7576\u4E2D\u7684\u6A21\u7D44\u53EF\u53D6\u4EE3\u53EF\u5347\u7D1A\n \u6A21\u7D44 (\u5728\u7A0B\u5F0F\u5BE6\u969B\u57F7\u884C\u5F71\u50CF\u4E2D)\n --add-modules <module name>[,<module name>...]\n \u9664\u4E86\u8D77\u59CB\u6A21\u7D44\u4E4B\u5916\uFF0C\u8981\u89E3\u6790\u7684\u6839\u6A21\u7D44\u3002\n <module name> \u4E5F\u53EF\u4EE5\u662F ALL-DEFAULT\u3001ALL-SYSTEM\u3001\n ALL-MODULE-PATH.\n --list-modules\n \u5217\u51FA\u53EF\u76E3\u6E2C\u7684\u6A21\u7D44\u4E26\u7D50\u675F\n --d <\u6A21\u7D44\u540D\u7A31>\n --describe-module <\u6A21\u7D44\u540D\u7A31>\n \u63CF\u8FF0\u6A21\u7D44\u4E26\u7D50\u675F\n --dry-run \u5EFA\u7ACB VM \u4E26\u8F09\u5165\u4E3B\u8981\u985E\u5225\uFF0C\u4F46\u4E0D\u57F7\u884C\u4E3B\u8981\u65B9\u6CD5\u3002\n --dry-run \u9078\u9805\u9069\u5408\u7528\u5728\u9A57\u8B49\n \u50CF\u6A21\u7D44\u7CFB\u7D71\u7D44\u614B\u7684\u547D\u4EE4\u884C\u9078\u9805\u3002\n --validate-modules\n \u9A57\u8B49\u6240\u6709\u6A21\u7D44\u4E26\u7D50\u675F\n --validate-modules \u9078\u9805\u9069\u5408\u7528\u5728\u5C0B\u627E\n \u6A21\u7D44\u8DEF\u5F91\u4E0A\u4E4B\u6A21\u7D44\u7684\u885D\u7A81\u548C\u5176\u4ED6\u932F\u8AA4\u3002\n -D<name>=<value>\n \u8A2D\u5B9A\u7CFB\u7D71\u7279\u6027\n -verbose:[class|module|gc|jni]\n \u555F\u7528\u8A73\u7D30\u8CC7\u8A0A\u8F38\u51FA\n -version \u5728\u932F\u8AA4\u4E32\u6D41\u5370\u51FA\u7522\u54C1\u7248\u672C\u4E26\u7D50\u675F\n --version \u5728\u8F38\u51FA\u4E32\u6D41\u5370\u51FA\u7522\u54C1\u7248\u672C\u4E26\u7D50\u675F\n -showversion \u5728\u932F\u8AA4\u4E32\u6D41\u5370\u51FA\u7522\u54C1\u7248\u672C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n --show-version\n \u5728\u8F38\u51FA\u4E32\u6D41\u5370\u51FA\u7522\u54C1\u7248\u672C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n --show-module-resolution\n \u5728\u555F\u52D5\u6642\u986F\u793A\u6A21\u7D44\u89E3\u6790\u8F38\u51FA\n -? -h -help\n \u5728\u932F\u8AA4\u4E32\u6D41\u5370\u51FA\u6B64\u8AAA\u660E\u8A0A\u606F\n --help \u5728\u8F38\u51FA\u4E32\u6D41\u5370\u51FA\u6B64\u8AAA\u660E\u8A0A\u606F\n -X \u5728\u932F\u8AA4\u4E32\u6D41\u5370\u51FA\u984D\u5916\u9078\u9805\u7684\u8AAA\u660E\n --help-extra \u5728\u8F38\u51FA\u4E32\u6D41\u5370\u51FA\u984D\u5916\u9078\u9805\u7684\u8AAA\u660E\n -ea[:<packagename>...|:<classname>]\n -enableassertions[:<packagename>...|:<classname>]\n \u555F\u7528\u6307\u5B9A\u4E4B\u8A73\u7D30\u7A0B\u5EA6\u7684\u5BA3\u544A\n -da[:<packagename>...|:<classname>]\n -disableassertions[:<packagename>...|:<classname>]\n \u505C\u7528\u6307\u5B9A\u4E4B\u8A73\u7D30\u7A0B\u5EA6\u7684\u5BA3\u544A\n -esa | -enablesystemassertions\n \
- \u555F\u7528\u7CFB\u7D71\u5BA3\u544A\n -dsa | -disablesystemassertions\n \u505C\u7528\u7CFB\u7D71\u5BA3\u544A\n -agentlib:<libname>[=<options>]\n \u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB <libname>\uFF0C\u4F8B\u5982 -agentlib:jdwp\n \u53E6\u8ACB\u53C3\u95B1 -agentlib:jdwp=help\n -agentpath:<pathname>[=<options>]\n \u4F9D\u5B8C\u6574\u8DEF\u5F91\u540D\u7A31\u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB\n -javaagent:<jarpath>[=<options>]\n \u8F09\u5165 Java \u7A0B\u5F0F\u8A9E\u8A00\u4EE3\u7406\u7A0B\u5F0F\uFF0C\u8ACB\u53C3\u95B1 java.lang.instrument\n -splash:<imagepath>\n \u986F\u793A\u542B\u6307\u5B9A\u5F71\u50CF\u7684\u8EDF\u9AD4\u8CC7\u8A0A\u756B\u9762\n \u7CFB\u7D71\u6703\u81EA\u52D5\u652F\u63F4\u4E26\u4F7F\u7528 HiDPI \u7E2E\u653E\u7684\u5F71\u50CF\n (\u82E5\u6709\u7684\u8A71)\u3002\u672A\u7E2E\u653E\u5F71\u50CF\u6A94\u6848\u540D\u7A31 (\u4F8B\u5982 image.ext)\n \u61C9\u4E00\u5F8B\u4EE5\u5F15\u6578\u7684\u5F62\u5F0F\u50B3\u9001\u7D66 -splash \u9078\u9805\u3002\n \u7CFB\u7D71\u5C07\u6703\u81EA\u52D5\u9078\u64C7\u4F7F\u7528\u6700\u9069\u5408\u7684\u7E2E\u653E\u5F71\u50CF\n \u3002\n \u8ACB\u53C3\u95B1 SplashScreen API \u6587\u4EF6\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A\u3002\n @argument files\n \u4E00\u6216\u591A\u500B\u5305\u542B\u9078\u9805\u7684\u5F15\u6578\u6A94\u6848\n -disable-@files\n \u505C\u7528\u9032\u4E00\u6B65\u7684\u5F15\u6578\u6A94\u6848\u64F4\u5145\n\u82E5\u8981\u6307\u5B9A\u9577\u9078\u9805\u7684\u5F15\u6578\uFF0C\u53EF\u4EE5\u4F7F\u7528 --<name>=<value> \u6216\n--<name> <value>\u3002\n
+java.launcher.opt.footer = \ -cp <\u76EE\u9304\u548C zip/jar \u6A94\u6848\u7684\u985E\u5225\u641C\u5C0B\u8DEF\u5F91>\n -classpath <\u76EE\u9304\u548C zip/jar \u6A94\u6848\u7684\u985E\u5225\u641C\u5C0B\u8DEF\u5F91>\n --class-path <\u76EE\u9304\u548C zip/jar \u6A94\u6848\u7684\u985E\u5225\u641C\u5C0B\u8DEF\u5F91>\n \u4EE5 {0} \u5340\u9694\u7684\u76EE\u9304\u3001JAR \u5B58\u6A94\n \u4EE5\u53CA ZIP \u5B58\u6A94\u6E05\u55AE (\u5C07\u65BC\u5176\u4E2D\u641C\u5C0B\u985E\u5225\u6A94\u6848)\u3002\n -p <\u6A21\u7D44\u8DEF\u5F91>\n --module-path <\u6A21\u7D44\u8DEF\u5F91>...\n \u4EE5 {0} \u5340\u9694\u7684\u76EE\u9304\u6E05\u55AE\uFF0C\u6BCF\u500B\u76EE\u9304\n \u90FD\u662F\u4E00\u500B\u6A21\u7D44\u76EE\u9304\u3002\n --upgrade-module-path <\u6A21\u7D44\u8DEF\u5F91>...\n \u4EE5 {0} \u5340\u9694\u7684\u76EE\u9304\u6E05\u55AE\uFF0C\u6BCF\u500B\u76EE\u9304\n \u90FD\u662F\u4E00\u500B\u6A21\u7D44\u76EE\u9304\uFF0C\u7576\u4E2D\u7684\u6A21\u7D44\u53EF\u53D6\u4EE3\u53EF\u5347\u7D1A\n \u6A21\u7D44 (\u5728\u7A0B\u5F0F\u5BE6\u969B\u57F7\u884C\u5F71\u50CF\u4E2D)\n --add-modules <module name>[,<module name>...]\n \u9664\u4E86\u8D77\u59CB\u6A21\u7D44\u4E4B\u5916\uFF0C\u8981\u89E3\u6790\u7684\u6839\u6A21\u7D44\u3002\n <module name> \u4E5F\u53EF\u4EE5\u662F ALL-DEFAULT\u3001ALL-SYSTEM\u3001\n ALL-MODULE-PATH.\n --list-modules\n \u5217\u51FA\u53EF\u76E3\u6E2C\u7684\u6A21\u7D44\u4E26\u7D50\u675F\n -d <\u6A21\u7D44\u540D\u7A31>\n --describe-module <\u6A21\u7D44\u540D\u7A31>\n \u63CF\u8FF0\u6A21\u7D44\u4E26\u7D50\u675F\n --dry-run \u5EFA\u7ACB VM \u4E26\u8F09\u5165\u4E3B\u8981\u985E\u5225\uFF0C\u4F46\u4E0D\u57F7\u884C\u4E3B\u8981\u65B9\u6CD5\u3002\n --dry-run \u9078\u9805\u9069\u5408\u7528\u5728\u9A57\u8B49\n \u50CF\u6A21\u7D44\u7CFB\u7D71\u7D44\u614B\u7684\u547D\u4EE4\u884C\u9078\u9805\u3002\n --validate-modules\n \u9A57\u8B49\u6240\u6709\u6A21\u7D44\u4E26\u7D50\u675F\n --validate-modules \u9078\u9805\u9069\u5408\u7528\u5728\u5C0B\u627E\n \u6A21\u7D44\u8DEF\u5F91\u4E0A\u4E4B\u6A21\u7D44\u7684\u885D\u7A81\u548C\u5176\u4ED6\u932F\u8AA4\u3002\n -D<name>=<value>\n \u8A2D\u5B9A\u7CFB\u7D71\u7279\u6027\n -verbose:[class|module|gc|jni]\n \u555F\u7528\u8A73\u7D30\u8CC7\u8A0A\u8F38\u51FA\n -version \u5728\u932F\u8AA4\u4E32\u6D41\u5370\u51FA\u7522\u54C1\u7248\u672C\u4E26\u7D50\u675F\n --version \u5728\u8F38\u51FA\u4E32\u6D41\u5370\u51FA\u7522\u54C1\u7248\u672C\u4E26\u7D50\u675F\n -showversion \u5728\u932F\u8AA4\u4E32\u6D41\u5370\u51FA\u7522\u54C1\u7248\u672C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n --show-version\n \u5728\u8F38\u51FA\u4E32\u6D41\u5370\u51FA\u7522\u54C1\u7248\u672C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n --show-module-resolution\n \u5728\u555F\u52D5\u6642\u986F\u793A\u6A21\u7D44\u89E3\u6790\u8F38\u51FA\n -? -h -help\n \u5728\u932F\u8AA4\u4E32\u6D41\u5370\u51FA\u6B64\u8AAA\u660E\u8A0A\u606F\n --help \u5728\u8F38\u51FA\u4E32\u6D41\u5370\u51FA\u6B64\u8AAA\u660E\u8A0A\u606F\n -X \u5728\u932F\u8AA4\u4E32\u6D41\u5370\u51FA\u984D\u5916\u9078\u9805\u7684\u8AAA\u660E\n --help-extra \u5728\u8F38\u51FA\u4E32\u6D41\u5370\u51FA\u984D\u5916\u9078\u9805\u7684\u8AAA\u660E\n -ea[:<packagename>...|:<classname>]\n -enableassertions[:<packagename>...|:<classname>]\n \u555F\u7528\u6307\u5B9A\u4E4B\u8A73\u7D30\u7A0B\u5EA6\u7684\u5BA3\u544A\n -da[:<packagename>...|:<classname>]\n -disableassertions[:<packagename>...|:<classname>]\n \u505C\u7528\u6307\u5B9A\u4E4B\u8A73\u7D30\u7A0B\u5EA6\u7684\u5BA3\u544A\n -esa | -enablesystemassertions\n \
+ \u555F\u7528\u7CFB\u7D71\u5BA3\u544A\n -dsa | -disablesystemassertions\n \u505C\u7528\u7CFB\u7D71\u5BA3\u544A\n -agentlib:<libname>[=<options>]\n \u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB <libname>\uFF0C\u4F8B\u5982 -agentlib:jdwp\n \u53E6\u8ACB\u53C3\u95B1 -agentlib:jdwp=help\n -agentpath:<pathname>[=<options>]\n \u4F9D\u5B8C\u6574\u8DEF\u5F91\u540D\u7A31\u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB\n -javaagent:<jarpath>[=<options>]\n \u8F09\u5165 Java \u7A0B\u5F0F\u8A9E\u8A00\u4EE3\u7406\u7A0B\u5F0F\uFF0C\u8ACB\u53C3\u95B1 java.lang.instrument\n -splash:<imagepath>\n \u986F\u793A\u542B\u6307\u5B9A\u5F71\u50CF\u7684\u8EDF\u9AD4\u8CC7\u8A0A\u756B\u9762\n \u7CFB\u7D71\u6703\u81EA\u52D5\u652F\u63F4\u4E26\u4F7F\u7528 HiDPI \u7E2E\u653E\u7684\u5F71\u50CF\n (\u82E5\u6709\u7684\u8A71)\u3002\u672A\u7E2E\u653E\u5F71\u50CF\u6A94\u6848\u540D\u7A31 (\u4F8B\u5982 image.ext)\n \u61C9\u4E00\u5F8B\u4EE5\u5F15\u6578\u7684\u5F62\u5F0F\u50B3\u9001\u7D66 -splash \u9078\u9805\u3002\n \u7CFB\u7D71\u5C07\u6703\u81EA\u52D5\u9078\u64C7\u4F7F\u7528\u6700\u9069\u5408\u7684\u7E2E\u653E\u5F71\u50CF\n \u3002\n \u8ACB\u53C3\u95B1 SplashScreen API \u6587\u4EF6\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A\u3002\n @argument files\n \u4E00\u6216\u591A\u500B\u5305\u542B\u9078\u9805\u7684\u5F15\u6578\u6A94\u6848\n -disable-@files\n \u505C\u7528\u9032\u4E00\u6B65\u7684\u5F15\u6578\u6A94\u6848\u64F4\u5145\n\u82E5\u8981\u6307\u5B9A\u9577\u9078\u9805\u7684\u5F15\u6578\uFF0C\u53EF\u4EE5\u4F7F\u7528 --<name>=<value> \u6216\n--<name> <value>\u3002\n
# Translators please note do not translate the options themselves
-java.launcher.X.usage=\n -Xbatch \u505C\u7528\u80CC\u666F\u7DE8\u8B6F\n -Xbootclasspath/a:<\u4EE5 {0} \u5340\u9694\u7684\u76EE\u9304\u548C zip/jar \u6A94\u6848>\n \u9644\u52A0\u81F3\u555F\u52D5\u5B89\u88DD\u985E\u5225\u8DEF\u5F91\u7684\u7D50\u5C3E\n -Xcheck:jni \u57F7\u884C\u984D\u5916\u7684 JNI \u51FD\u6578\u6AA2\u67E5\n -Xcomp \u5F37\u5236\u7DE8\u8B6F\u7B2C\u4E00\u500B\u547C\u53EB\u7684\u65B9\u6CD5\n -Xdebug \u91DD\u5C0D\u56DE\u6EAF\u76F8\u5BB9\u6027\u63D0\u4F9B\n -Xdiag \u986F\u793A\u984D\u5916\u7684\u8A3A\u65B7\u8A0A\u606F\n -Xfuture \u555F\u7528\u6700\u56B4\u683C\u7684\u6AA2\u67E5\uFF0C\u9810\u5148\u4F5C\u70BA\u5C07\u4F86\u7684\u9810\u8A2D\n -Xint \u50C5\u9650\u89E3\u8B6F\u6A21\u5F0F\u57F7\u884C\n -Xinternalversion\n \u986F\u793A\u6BD4 -version \u9078\u9805\u66F4\u70BA\u8A73\u7D30\u7684\n JVM \u7248\u672C\u8CC7\u8A0A\n -Xloggc:<file> \u5C07 GC \u72C0\u614B\u8A18\u9304\u81F3\u6A94\u6848\u4E14\u9023\u540C\u6642\u6233\n -Xmixed \u6DF7\u5408\u6A21\u5F0F\u57F7\u884C (\u9810\u8A2D)\n -Xmn<size> \u8A2D\u5B9A\u65B0\u751F\u4EE3 (\u990A\u6210\u5340) \u4E4B\u5806\u96C6\u7684\u8D77\u59CB\u5927\u5C0F\u548C\n \u5927\u5C0F\u4E0A\u9650 (\u4F4D\u5143\u7D44)\n -Xms<size> \u8A2D\u5B9A\u8D77\u59CB Java \u5806\u96C6\u5927\u5C0F\n -Xmx<size> \u8A2D\u5B9A Java \u5806\u96C6\u5927\u5C0F\u4E0A\u9650\n -Xnoclassgc \u505C\u7528\u985E\u5225\u8CC7\u6E90\u56DE\u6536\n -Xprof \u8F38\u51FA cpu \u5206\u6790\u8CC7\u6599 (\u5DF2\u4E0D\u518D\u4F7F\u7528)\n -Xrs \u6E1B\u5C11 Java/VM \u4F7F\u7528\u7684\u4F5C\u696D\u7CFB\u7D71\u4FE1\u865F (\u8ACB\u53C3\u95B1\u6587\u4EF6)\n -Xshare:auto \u5728\u53EF\u80FD\u7684\u60C5\u6CC1\u4E0B\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599 (\u9810\u8A2D)\n -Xshare:off \u4E0D\u5617\u8A66\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599\n -Xshare:on \u9700\u8981\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599\uFF0C\u5426\u5247\u6703\u5931\u6557\u3002\n -XshowSettings \u986F\u793A\u6240\u6709\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n -XshowSettings:all\n \u986F\u793A\u6240\u6709\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n -XshowSettings:locale\n \u986F\u793A\u6240\u6709\u5730\u5340\u8A2D\u5B9A\u76F8\u95DC\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n -XshowSettings:properties\n \u986F\u793A\u6240\u6709\u5C6C\u6027\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n -XshowSettings:vm \u986F\u793A\u6240\u6709 VM \u76F8\u95DC\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n -Xss<size> \u8A2D\u5B9A Java \u57F7\u884C\u7DD2\u5806\u758A\u5927\u5C0F\n -Xverify \u8A2D\u5B9A Bytecode \u9A57\u8B49\u7A0B\u5F0F\u7684\u6A21\u5F0F\n --add-reads <module>=<target-module>(,<target-module>)*\n \u66F4\u65B0 <module> \u4EE5\u8B80\u53D6 <target-module>\uFF0C\u4E0D\u8AD6\n \u6A21\u7D44\u5BA3\u544A\u70BA\u4F55\u3002\n \u53EF\u5C07 <target-module> \u8A2D\u70BA ALL-UNNAMED \u4EE5\u8B80\u53D6\u6240\u6709\u672A\u547D\u540D\u7684\n \u6A21\u7D44\u3002\n --add-exports <module>/<package>=<target-module>(,<target-module>)*\n \u66F4\u65B0 <module> \u4EE5\u4FBF\u5C07 <package> \u532F\u51FA\u81F3 <target-module>\uFF0C\n \u4E0D\u8AD6\u6A21\u7D44\u5BA3\u544A\u70BA\u4F55\u3002\n \u53EF\u5C07 <target-module> \u8A2D\u70BA ALL-UNNAMED \u4EE5\u532F\u51FA\u81F3\u6240\u6709\n \u672A\u547D\u540D\u7684\u6A21\u7D44\u3002\n --add-opens <module>/<package>=<target-module>(,<target-module>)*\n \u66F4\u65B0 <module> \
-\u4EE5\u4FBF\u5C07 <package> \u958B\u555F\u81F3\n <target-module>\uFF0C\u4E0D\u8AD6\u6A21\u7D44\u5BA3\u544A\u70BA\u4F55\u3002\n --limit-modules <module name>[,<module name>...]\n \u9650\u5236\u53EF\u76E3\u6E2C\u6A21\u7D44\u7684\u7BC4\u570D\n --patch-module <module>=<file>({0}<file>)*\n \u8986\u5BEB\u6216\u52A0\u5F37\u542B\u6709 JAR \u6A94\u6848\u6216\u76EE\u9304\u4E2D\n \u985E\u5225\u548C\u8CC7\u6E90\u7684\u6A21\u7D44\u3002\n --disable-@files \u505C\u7528\u9032\u4E00\u6B65\u7684\u5F15\u6578\u6A94\u6848\u64F4\u5145\n\n\u4E0A\u8FF0\u7684\u984D\u5916\u9078\u9805\u82E5\u6709\u8B8A\u66F4\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n
+java.launcher.X.usage=\n -Xbatch \u505C\u7528\u80CC\u666F\u7DE8\u8B6F\n -Xbootclasspath/a:<\u4EE5 {0} \u5340\u9694\u7684\u76EE\u9304\u548C zip/jar \u6A94\u6848>\n \u9644\u52A0\u81F3\u555F\u52D5\u5B89\u88DD\u985E\u5225\u8DEF\u5F91\u7684\u7D50\u5C3E\n -Xcheck:jni \u57F7\u884C\u984D\u5916\u7684 JNI \u51FD\u6578\u6AA2\u67E5\n -Xcomp \u5F37\u5236\u7DE8\u8B6F\u7B2C\u4E00\u500B\u547C\u53EB\u7684\u65B9\u6CD5\n -Xdebug \u91DD\u5C0D\u56DE\u6EAF\u76F8\u5BB9\u6027\u63D0\u4F9B\n -Xdiag \u986F\u793A\u984D\u5916\u7684\u8A3A\u65B7\u8A0A\u606F\n -Xfuture \u555F\u7528\u6700\u56B4\u683C\u7684\u6AA2\u67E5\uFF0C\u9810\u5148\u4F5C\u70BA\u5C07\u4F86\u7684\u9810\u8A2D\n -Xint \u50C5\u9650\u89E3\u8B6F\u6A21\u5F0F\u57F7\u884C\n -Xinternalversion\n \u986F\u793A\u6BD4 -version \u9078\u9805\u66F4\u70BA\u8A73\u7D30\u7684\n JVM \u7248\u672C\u8CC7\u8A0A\n -Xloggc:<file> \u9023\u540C\u6642\u6233\u5C07 GC \u72C0\u614B\u8A18\u9304\u81F3\u6A94\u6848\n -Xmixed \u6DF7\u5408\u6A21\u5F0F\u57F7\u884C (\u9810\u8A2D)\n -Xmn<size> \u8A2D\u5B9A\u65B0\u751F\u4EE3 (\u990A\u6210\u5340) \u4E4B\u5806\u96C6\u7684\u8D77\u59CB\u5927\u5C0F\u548C\n \u5927\u5C0F\u4E0A\u9650 (\u4F4D\u5143\u7D44)\n -Xms<size> \u8A2D\u5B9A\u8D77\u59CB Java \u5806\u96C6\u5927\u5C0F\n -Xmx<size> \u8A2D\u5B9A Java \u5806\u96C6\u5927\u5C0F\u4E0A\u9650\n -Xnoclassgc \u505C\u7528\u985E\u5225\u8CC7\u6E90\u56DE\u6536\n -Xrs \u6E1B\u5C11 Java/VM \u4F7F\u7528\u7684\u4F5C\u696D\u7CFB\u7D71\u4FE1\u865F (\u8ACB\u53C3\u95B1\u6587\u4EF6)\n -Xshare:auto \u5728\u53EF\u80FD\u7684\u60C5\u6CC1\u4E0B\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599 (\u9810\u8A2D)\n -Xshare:off \u4E0D\u5617\u8A66\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599\n -Xshare:on \u9700\u8981\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599\uFF0C\u5426\u5247\u6703\u5931\u6557\u3002\n -XshowSettings \u986F\u793A\u6240\u6709\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n -XshowSettings:all\n \u986F\u793A\u6240\u6709\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n -XshowSettings:locale\n \u986F\u793A\u6240\u6709\u5730\u5340\u8A2D\u5B9A\u76F8\u95DC\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n -XshowSettings:properties\n \u986F\u793A\u6240\u6709\u5C6C\u6027\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n -XshowSettings:vm \u986F\u793A\u6240\u6709 VM \u76F8\u95DC\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\u9032\u884C\u4F5C\u696D\n -Xss<size> \u8A2D\u5B9A Java \u57F7\u884C\u7DD2\u5806\u758A\u5927\u5C0F\n -Xverify \u8A2D\u5B9A Bytecode \u9A57\u8B49\u7A0B\u5F0F\u7684\u6A21\u5F0F\n --add-reads <module>=<target-module>(,<target-module>)*\n \u66F4\u65B0 <module> \u4EE5\u8B80\u53D6 <target-module>\uFF0C\u4E0D\u8AD6\n \u6A21\u7D44\u5BA3\u544A\u70BA\u4F55\u3002 \n \u53EF\u5C07 <target-module> \u8A2D\u70BA ALL-UNNAMED \u4EE5\u8B80\u53D6\u6240\u6709\u672A\u547D\u540D\u7684\n \u6A21\u7D44\u3002\n --add-exports <module>/<package>=<target-module>(,<target-module>)*\n \u66F4\u65B0 <module> \u4EE5\u4FBF\u5C07 <package> \u532F\u51FA\u81F3 <target-module>\uFF0C\n \u4E0D\u8AD6\u6A21\u7D44\u5BA3\u544A\u70BA\u4F55\u3002\n \u53EF\u5C07 <target-module> \u8A2D\u70BA ALL-UNNAMED \u4EE5\u532F\u51FA\u81F3\u6240\u6709\n \u672A\u547D\u540D\u7684\u6A21\u7D44\u3002\n --add-opens <module>/<package>=<target-module>(,<target-module>)*\n \u66F4\u65B0 <module> \u4EE5\u4FBF\u5C07 <package> \u958B\u555F\u81F3\n \
+<target-module>\uFF0C\u4E0D\u8AD6\u6A21\u7D44\u5BA3\u544A\u70BA\u4F55\u3002\n --illegal-access=<value>\n \u5141\u8A31\u6216\u62D2\u7D55\u672A\u547D\u540D\u6A21\u7D44\u4E2D\u7684\u7A0B\u5F0F\u78BC\u5C0D\u5DF2\u547D\u540D\u6A21\u7D44\u4E2D\u7684\n \u985E\u578B\u6210\u54E1\u9032\u884C\u5B58\u53D6\u3002\n <value> \u70BA "deny"\u3001"permit"\u3001"warn" \u6216 "debug" \u5176\u4E2D\u4E4B\u4E00\n \u6B64\u9078\u9805\u5C07\u5728\u672A\u4F86\u7248\u672C\u4E2D\u79FB\u9664\u3002\n --limit-modules <module name>[,<module name>...]\n \u9650\u5236\u53EF\u76E3\u6E2C\u6A21\u7D44\u7684\u7BC4\u570D\n --patch-module <module>=<file>({0}<file>)*\n \u8986\u5BEB\u6216\u52A0\u5F37\u542B\u6709 JAR \u6A94\u6848\u6216\u76EE\u9304\u4E2D\n \u985E\u5225\u548C\u8CC7\u6E90\u7684\u6A21\u7D44\u3002\n --disable-@files \u505C\u7528\u9032\u4E00\u6B65\u7684\u5F15\u6578\u6A94\u6848\u64F4\u5145\n\n\u4E0A\u8FF0\u7684\u984D\u5916\u9078\u9805\u82E5\u6709\u8B8A\u66F4\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n
# Translators please note do not translate the options themselves
java.launcher.X.macosx.usage=\n\u4E0B\u5217\u662F Mac OS X \u7279\u5B9A\u9078\u9805:\n -XstartOnFirstThread\n \u5728\u7B2C\u4E00\u500B (AppKit) \u57F7\u884C\u7DD2\u57F7\u884C main() \u65B9\u6CD5\n -Xdock:name=<application name>\n \u8986\u5BEB\u7D50\u5408\u8AAA\u660E\u756B\u9762\u4E2D\u986F\u793A\u7684\u9810\u8A2D\u61C9\u7528\u7A0B\u5F0F\u540D\u7A31\n -Xdock:icon=<path to icon file>\n \u8986\u5BEB\u7D50\u5408\u8AAA\u660E\u756B\u9762\u4E2D\u986F\u793A\u7684\u9810\u8A2D\u5716\u793A\n\n
@@ -47,6 +46,7 @@
java.launcher.cls.error4=\u932F\u8AA4: \u5728\u985E\u5225 {0} \u4E2D\u627E\u4E0D\u5230\u4E3B\u8981\u65B9\u6CD5\uFF0C\u8ACB\u5B9A\u7FA9\u4E3B\u8981\u65B9\u6CD5\u70BA:\n public static void main(String[] args)\n\u6216\u8005 JavaFX \u61C9\u7528\u7A0B\u5F0F\u985E\u5225\u5FC5\u9808\u64F4\u5145 {1}
java.launcher.cls.error5=\u932F\u8AA4: \u907A\u6F0F\u57F7\u884C\u6B64\u61C9\u7528\u7A0B\u5F0F\u6240\u9700\u7684 JavaFX \u7A0B\u5F0F\u5BE6\u969B\u57F7\u884C\u5143\u4EF6
java.launcher.cls.error6=\u932F\u8AA4: \u8F09\u5165\u4E3B\u8981\u985E\u5225 {0} \u6642\u767C\u751F LinkageError\n\t{1}
+java.launcher.cls.error7=\u932F\u8AA4: \u7121\u6CD5\u8D77\u59CB\u4E3B\u8981\u985E\u5225 {0}\n\u539F\u56E0: {1}: {2}
java.launcher.jar.error1=\u932F\u8AA4: \u5617\u8A66\u958B\u555F\u6A94\u6848 {0} \u6642\u767C\u751F\u672A\u9810\u671F\u7684\u932F\u8AA4
java.launcher.jar.error2=\u5728 {0} \u4E2D\u627E\u4E0D\u5230\u8CC7\u8A0A\u6E05\u55AE
java.launcher.jar.error3={0} \u4E2D\u6C92\u6709\u4E3B\u8981\u8CC7\u8A0A\u6E05\u55AE\u5C6C\u6027
@@ -55,5 +55,6 @@
java.launcher.javafx.error1=\u932F\u8AA4: JavaFX launchApplication \u65B9\u6CD5\u7684\u7C3D\u7AE0\u932F\u8AA4\uFF0C\u5B83\n\u5FC5\u9808\u5BA3\u544A\u70BA\u975C\u614B\u4E26\u50B3\u56DE void \u985E\u578B\u7684\u503C
java.launcher.module.error1=\u6A21\u7D44 {0} \u4E0D\u542B MainClass \u5C6C\u6027\uFF0C\u8ACB\u4F7F\u7528 -m <module>/<main-class>
java.launcher.module.error2=\u932F\u8AA4: \u627E\u4E0D\u5230\u6216\u7121\u6CD5\u8F09\u5165\u6A21\u7D44 {1} \u4E2D\u7684\u4E3B\u8981\u985E\u5225 {0}
-java.launcher.module.error3=\u932F\u8AA4: \u7121\u6CD5\u5F9E\u6A21\u7D44 {1} \u8F09\u5165\u4E3B\u8981\u985E\u5225 {0}\n\t{2}
+java.launcher.module.error3=\u932F\u8AA4: \u7121\u6CD5\u8F09\u5165\u6A21\u7D44 {1} \u4E2D\u7684\u4E3B\u8981\u985E\u5225 {0}\n\t{2}
java.launcher.module.error4=\u627E\u4E0D\u5230 {0}
+java.launcher.module.error5=\u932F\u8AA4: \u7121\u6CD5\u8D77\u59CB\u6A21\u7D44 {1} \u4E2D\u7684\u4E3B\u8981\u985E\u5225 {0}\n\u539F\u56E0: {1}: {2}
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources.java Wed Jan 17 12:19:06 2018 +0000
@@ -462,7 +462,7 @@
{"with.weak", "%s (weak)"},
{"key.bit", "%1$d-bit %2$s key"},
{"key.bit.weak", "%1$d-bit %2$s key (weak)"},
- {"unknown.size.1", "unknown size %s key"},
+ {"unknown.size.1", "%s key of unknown size"},
{".PATTERN.printX509Cert.with.weak",
"Owner: {0}\nIssuer: {1}\nSerial number: {2}\nValid from: {3} until: {4}\nCertificate fingerprints:\n\t SHA1: {5}\n\t SHA256: {6}\nSignature algorithm name: {7}\nSubject Public Key Algorithm: {8}\nVersion: {9}"},
{"PKCS.10.with.weak",
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_de.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_de.java Wed Jan 17 12:19:06 2018 +0000
@@ -42,6 +42,8 @@
// keytool: Help part
{".OPTION.", " [OPTION]..."},
{"Options.", "Optionen:"},
+ {"option.1.set.twice", "Die Option %s wurde mehrmals angegeben. Alle Angaben bis auf die letzte werden ignoriert."},
+ {"multiple.commands.1.2", "Nur ein Befehl ist zul\u00E4ssig: Sowohl %1$s als auch %2$s wurden angegeben."},
{"Use.keytool.help.for.all.available.commands",
"\"keytool -help\" f\u00FCr alle verf\u00FCgbaren Befehle verwenden"},
{"Key.and.Certificate.Management.Tool",
@@ -447,19 +449,24 @@
{"the.tsa.certificate", "Das TSA-Zertifikat"},
{"the.input", "Die Eingabe"},
{"reply", "Antwort"},
- {"one.in.many", "%s #%d von %d"},
+ {"one.in.many", "%1$s #%2$d von %3$d"},
{"alias.in.cacerts", "Aussteller <%s> in cacerts"},
{"alias.in.keystore", "Aussteller <%s>"},
{"with.weak", "%s (schwach)"},
- {"key.bit", "%d-Bit-%s-Schl\u00FCssel"},
- {"key.bit.weak", "%d-Bit-%s-Schl\u00FCssel (schwach)"},
+ {"key.bit", "%1$d-Bit-%2$s-Schl\u00FCssel"},
+ {"key.bit.weak", "%1$d-Bit-%2$s-Schl\u00FCssel (schwach)"},
+ {"unknown.size.1", "unbekannte Gr\u00F6\u00DFe: %s-Schl\u00FCssel"},
{".PATTERN.printX509Cert.with.weak",
"Eigent\u00FCmer: {0}\nAussteller: {1}\nSeriennummer: {2}\nG\u00FCltig von: {3} bis: {4}\nZertifikatsfingerprints:\n\t SHA1: {5}\n\t SHA256: {6}\nSignaturalgorithmusname: {7}\nPublic Key-Algorithmus von Subject: {8}\nVersion: {9}"},
{"PKCS.10.with.weak",
- "PKCS #10-Zertifikatsanforderung (Version 1.0)\nSubject: %s\nFormat: %s\nPublic Key: %s\nSignaturalgorithmus: %s\n"},
- {"verified.by.s.in.s.weak", "Von %s in %s mit %s verifiziert"},
- {"whose.sigalg.risk", "%s verwendet den Signaturalgorithmus %s. Dies gilt als Sicherheitsrisiko."},
- {"whose.key.risk", "%s verwendet %s. Dies gilt als Sicherheitsrisiko."},
+ "PKCS #10-Zertifikatsanforderung (Version 1.0)\nSubject: %1$s\nFormat: %2$s\nPublic Key: %3$s\nSignaturalgorithmus: %4$s\n"},
+ {"verified.by.s.in.s.weak", "Von %1$s in %2$s mit %3$s verifiziert"},
+ {"whose.sigalg.risk", "%1$s verwendet den Signaturalgorithmus %2$s. Dies gilt als Sicherheitsrisiko."},
+ {"whose.key.risk", "%1$s verwendet %2$s. Dies gilt als Sicherheitsrisiko."},
+ {"jks.storetype.warning", "Der %1$s-Keystore verwendet ein propriet\u00E4res Format. Es wird empfohlen, auf PKCS12 zu migrieren, das ein Industriestandardformat mit \"keytool -importkeystore -srckeystore %2$s -destkeystore %2$s -deststoretype pkcs12\" ist."},
+ {"migrate.keystore.warning", "\"%1$s\" zu %4$s migriert. Der %2$s-Keystore wurde als \"%3$s\" gesichert."},
+ {"backup.keystore.warning", "Der urspr\u00FCngliche Keystore \"%1$s\" wird als \"%3$s\" gesichert..."},
+ {"importing.keystore.status", "Keystore %1$s wird in %2$s importiert..."},
};
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_es.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_es.java Wed Jan 17 12:19:06 2018 +0000
@@ -42,6 +42,8 @@
// keytool: Help part
{".OPTION.", " [OPTION]..."},
{"Options.", "Opciones:"},
+ {"option.1.set.twice", "La opci\u00F3n %s se\u00A0ha especificado\u00A0varias veces. Se ignorar\u00E1n todas excepto la \u00FAltima."},
+ {"multiple.commands.1.2", "Solo se permite un comando: se ha especificado tanto %1$s como %2$s"},
{"Use.keytool.help.for.all.available.commands",
"Utilice\"keytool -help\" para todos los comandos disponibles"},
{"Key.and.Certificate.Management.Tool",
@@ -447,19 +449,24 @@
{"the.tsa.certificate", "El certificado de TSA"},
{"the.input", "La entrada"},
{"reply", "Responder"},
- {"one.in.many", "%s #%d de %d"},
+ {"one.in.many", "%1$s #%2$d de %3$d"},
{"alias.in.cacerts", "Emisor <%s> en cacerts"},
{"alias.in.keystore", "Emisor <%s>"},
{"with.weak", "%s (d\u00E9bil)"},
- {"key.bit", "Clave %s de %d bits"},
- {"key.bit.weak", "Clave %s de %d bits (d\u00E9bil)"},
+ {"key.bit", "Clave %2$s de %1$d bits"},
+ {"key.bit.weak", "Clave %2$s de %1$d bits (d\u00E9bil)"},
+ {"unknown.size.1", "clave %s de tama\u00F1o desconocido"},
{".PATTERN.printX509Cert.with.weak",
"Propietario: {0}\nEmisor: {1}\nN\u00FAmero de serie: {2}\nV\u00E1lido desde: {3} hasta: {4}\nHuellas digitales del certificado:\n\t SHA1: {5}\n\t SHA256: {6}\nNombre del algoritmo de firma: {7}\nAlgoritmo de clave p\u00FAblica de asunto: {8}\nVersi\u00F3n: {9}"},
{"PKCS.10.with.weak",
- "Solicitud de certificado PKCS #10 (Versi\u00F3n 1.0)\nAsunto: %s\nFormato: %s\nClave p\u00FAblica:%s\nAlgoritmo de firma: %s\n"},
- {"verified.by.s.in.s.weak", "Verificado por %s en %s con %s"},
- {"whose.sigalg.risk", "%s usa el algoritmo de firma %s, lo que se considera un riesgo de seguridad."},
- {"whose.key.risk", "%s usa %s, lo que se considera un riesgo de seguridad."},
+ "Solicitud de certificado PKCS #10 (Versi\u00F3n 1.0)\nAsunto: %1$s\nFormato: %2$s\nClave p\u00FAblica: %3$s\nAlgoritmo de firma: %4$s\n"},
+ {"verified.by.s.in.s.weak", "Verificado por %1$s en %2$s con %3$s"},
+ {"whose.sigalg.risk", "%1$s utiliza el algoritmo de firma %2$s, lo que se considera un riesgo de seguridad."},
+ {"whose.key.risk", "%1$s utiliza %2$s, lo que se considera riesgo de seguridad."},
+ {"jks.storetype.warning", "El almac\u00E9n de claves %1$s utiliza un formato propietario. Se recomienda migrar a PKCS12, que es un formato est\u00E1ndar del sector que utiliza \"keytool -importkeystore -srckeystore %2$s -destkeystore %2$s -deststoretype pkcs12\"."},
+ {"migrate.keystore.warning", "Se ha migrado \"%1$s\" a %4$s. Se ha realizado la copia de seguridad del almac\u00E9n de claves %2$s como \"%3$s\"."},
+ {"backup.keystore.warning", "La copia de seguridad del almac\u00E9n de claves \"%1$s\" se ha realizado como \"%3$s\"..."},
+ {"importing.keystore.status", "Importando el almac\u00E9n de claves de %1$s a %2$s..."},
};
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_fr.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_fr.java Wed Jan 17 12:19:06 2018 +0000
@@ -42,6 +42,8 @@
// keytool: Help part
{".OPTION.", " [OPTION]..."},
{"Options.", "Options :"},
+ {"option.1.set.twice", "L'option %s est sp\u00E9cifi\u00E9e plusieurs fois. Toutes les occurrences seront ignor\u00E9es, sauf la derni\u00E8re."},
+ {"multiple.commands.1.2", "Une seule commande est autoris\u00E9e : %1$s et %2$s ont \u00E9t\u00E9 sp\u00E9cifi\u00E9es."},
{"Use.keytool.help.for.all.available.commands",
"Utiliser \"keytool -help\" pour toutes les commandes disponibles"},
{"Key.and.Certificate.Management.Tool",
@@ -447,19 +449,24 @@
{"the.tsa.certificate", "Certificat TSA"},
{"the.input", "Entr\u00E9e"},
{"reply", "R\u00E9pondre"},
- {"one.in.many", "%s #%d sur %d"},
+ {"one.in.many", "%1$s #%2$d sur %3$d"},
{"alias.in.cacerts", "Emetteur <%s> dans les certificats CA"},
{"alias.in.keystore", "Emetteur <%s>"},
{"with.weak", "%s (faible)"},
- {"key.bit", "Cl\u00E9 %s %d bits"},
- {"key.bit.weak", "Cl\u00E9 %s %d bits (faible)"},
+ {"key.bit", "Cl\u00E9 %2$s %1$d bits"},
+ {"key.bit.weak", "Cl\u00E9 %2$s %1$d bits (faible)"},
+ {"unknown.size.1", "taille de cl\u00E9 %s inconnue"},
{".PATTERN.printX509Cert.with.weak",
"Propri\u00E9taire : {0}\nEmetteur : {1}\nNum\u00E9ro de s\u00E9rie : {2}\nValide du {3} au {4}\nEmpreintes du certificat :\n\t SHA 1: {5}\n\t SHA 256: {6}\nNom de l''algorithme de signature : {7}\nAlgorithme de cl\u00E9 publique du sujet : {8}\nVersion : {9}"},
{"PKCS.10.with.weak",
- "Demande de certificat PKCS #10 (version 1.0)\nSujet : %s\nFormat : %s\nCl\u00E9 publique : %s\nAlgorithme de signature : %s\n"},
- {"verified.by.s.in.s.weak", "V\u00E9rifi\u00E9 par %s dans %s avec un \u00E9l\u00E9ment %s"},
- {"whose.sigalg.risk", "%s utilise l'algorithme de signature %s, qui repr\u00E9sente un risque pour la s\u00E9curit\u00E9."},
- {"whose.key.risk", "%s utilise un \u00E9l\u00E9ment %s, qui repr\u00E9sente un risque pour la s\u00E9curit\u00E9."},
+ "Demande de certificat PKCS #10 (version 1.0)\nSujet : %1$s\nFormat : %2$s\nCl\u00E9 publique : %3$s\nAlgorithme de signature : %4$s\n"},
+ {"verified.by.s.in.s.weak", "V\u00E9rifi\u00E9 par %1$s dans %2$s avec un \u00E9l\u00E9ment %3$s"},
+ {"whose.sigalg.risk", "%1$s utilise l'algorithme de signature %2$s, qui repr\u00E9sente un risque pour la s\u00E9curit\u00E9."},
+ {"whose.key.risk", "%1$s utilise un \u00E9l\u00E9ment %2$s, qui repr\u00E9sente un risque pour la s\u00E9curit\u00E9."},
+ {"jks.storetype.warning", "Le fichier de cl\u00E9s %1$s utilise un format propri\u00E9taire. Il est recommand\u00E9 de migrer vers PKCS12, qui est un format standard de l'industrie en utilisant \"keytool -importkeystore -srckeystore %2$s -destkeystore %2$s -deststoretype pkcs12\"."},
+ {"migrate.keystore.warning", "El\u00E9ment \"%1$s\" migr\u00E9 vers %4$s. Le fichier de cl\u00E9s %2$s est sauvegard\u00E9 en tant que \"%3$s\"."},
+ {"backup.keystore.warning", "Le fichier de cl\u00E9s d'origine \"%1$s\" est sauvegard\u00E9 en tant que \"%3$s\"..."},
+ {"importing.keystore.status", "Import du fichier de cl\u00E9s %1$s vers %2$s..."},
};
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_it.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_it.java Wed Jan 17 12:19:06 2018 +0000
@@ -42,6 +42,8 @@
// keytool: Help part
{".OPTION.", " [OPTION]..."},
{"Options.", "Opzioni:"},
+ {"option.1.set.twice", "L'opzione %s \u00E8 specificata pi\u00F9 volte. Tutte le ricorrenze verranno ignorate tranne l'ultima."},
+ {"multiple.commands.1.2", "\u00C8 consentito un solo comando: \u00E8 stato specificato sia %1$s che %2$s."},
{"Use.keytool.help.for.all.available.commands",
"Utilizzare \"keytool -help\" per visualizzare tutti i comandi disponibili"},
{"Key.and.Certificate.Management.Tool",
@@ -447,19 +449,24 @@
{"the.tsa.certificate", "Il certificato TSA"},
{"the.input", "L'input"},
{"reply", "Rispondi"},
- {"one.in.many", "%s #%d di %d"},
+ {"one.in.many", "%1$s #%2$d di %3$d"},
{"alias.in.cacerts", "Emittente <%s> in cacerts"},
{"alias.in.keystore", "Emittente <%s>"},
{"with.weak", "%s (debole)"},
- {"key.bit", "Chiave %s a %d bit"},
- {"key.bit.weak", "Chiave %s a %d bit (debole)"},
+ {"key.bit", "Chiave %2$s a %1$d bit"},
+ {"key.bit.weak", "Chiave %2$s a %1$d bit (debole)"},
+ {"unknown.size.1", "chiave %s di dimensione sconosciuta"},
{".PATTERN.printX509Cert.with.weak",
"Proprietario: {0}\nEmittente: {1}\nNumero di serie: {2}\nValido da: {3} a: {4}\nImpronte digitali certificato:\n\t SHA1: {5}\n\t SHA256: {6}\nNome algoritmo firma: {7}\nAlgoritmo di chiave pubblica oggetto: {8}\nVersione: {9}"},
{"PKCS.10.with.weak",
- "Richiesta di certificato PKCS #10 (versione 1.0)\nOggetto: %s\nFormato: %s\nChiave pubblica: %s\nAlgoritmo firma: %s\n"},
- {"verified.by.s.in.s.weak", "Verificato da %s in %s con un %s"},
- {"whose.sigalg.risk", "%s utilizza l'algoritmo firma %s che \u00E8 considerato un rischio per la sicurezza."},
- {"whose.key.risk", "%s utilizza un %s che \u00E8 considerato un rischio per la sicurezza."},
+ "Richiesta di certificato PKCS #10 (versione 1.0)\nOggetto: %1$s\nFormato: %2$s\nChiave pubblica: %3$s\nAlgoritmo firma: %4$s\n"},
+ {"verified.by.s.in.s.weak", "Verificato da %1$s in %2$s con un %3$s"},
+ {"whose.sigalg.risk", "%1$s utilizza l'algoritmo firma %2$s che \u00E8 considerato un rischio per la sicurezza."},
+ {"whose.key.risk", "%1$s utilizza un %2$s che \u00E8 considerato un rischio per la sicurezza."},
+ {"jks.storetype.warning", "Il keystore %1$s utilizza un formato proprietario. Si consiglia di eseguire la migrazione a PKCS12, un formato standard di settore, utilizzando il comando \"keytool -importkeystore -srckeystore %2$s -destkeystore %2$s -deststoretype pkcs12\"."},
+ {"migrate.keystore.warning", "Migrazione di \"%1$s\" in %4$s eseguita. Backup del keystore %2$s eseguito con il nome \"%3$s\"."},
+ {"backup.keystore.warning", "Backup del keystore originale \"%1$s\" eseguito con il nome \"%3$s\"..."},
+ {"importing.keystore.status", "Importazione del keystore %1$s in %2$s in corso..."},
};
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_ja.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_ja.java Wed Jan 17 12:19:06 2018 +0000
@@ -42,6 +42,8 @@
// keytool: Help part
{".OPTION.", " [OPTION]..."},
{"Options.", "\u30AA\u30D7\u30B7\u30E7\u30F3:"},
+ {"option.1.set.twice", "%s\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u8907\u6570\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u6700\u5F8C\u306E\u3082\u306E\u4EE5\u5916\u306F\u3059\u3079\u3066\u7121\u8996\u3055\u308C\u307E\u3059\u3002"},
+ {"multiple.commands.1.2", "1\u3064\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u307F\u8A31\u53EF\u3055\u308C\u307E\u3059: %1$s\u3068%2$s\u306E\u4E21\u65B9\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F\u3002"},
{"Use.keytool.help.for.all.available.commands",
"\u4F7F\u7528\u53EF\u80FD\u306A\u3059\u3079\u3066\u306E\u30B3\u30DE\u30F3\u30C9\u306B\u3064\u3044\u3066\u306F\"keytool -help\"\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044"},
{"Key.and.Certificate.Management.Tool",
@@ -371,7 +373,7 @@
"\u3053\u306E\u5358\u4F4D\u306B\u8A72\u5F53\u3059\u308B2\u6587\u5B57\u306E\u56FD\u30B3\u30FC\u30C9\u306F\u4F55\u3067\u3059\u304B\u3002"},
{"Is.name.correct.", "{0}\u3067\u3088\u308D\u3057\u3044\u3067\u3059\u304B\u3002"},
{"no", "\u3044\u3044\u3048"},
- {"yes", "yes"},
+ {"yes", "\u306F\u3044"},
{"y", "y"},
{".defaultValue.", " [{0}]: "},
{"Alias.alias.has.no.key",
@@ -447,19 +449,24 @@
{"the.tsa.certificate", "TSA\u8A3C\u660E\u66F8"},
{"the.input", "\u5165\u529B"},
{"reply", "\u5FDC\u7B54"},
- {"one.in.many", "%s #%d / %d"},
+ {"one.in.many", "%1$s #%2$d / %3$d"},
{"alias.in.cacerts", "cacerts\u5185\u306E\u767A\u884C\u8005<%s>"},
{"alias.in.keystore", "\u767A\u884C\u8005<%s>"},
{"with.weak", "%s (\u5F31)"},
- {"key.bit", "%d\u30D3\u30C3\u30C8%s\u9375"},
- {"key.bit.weak", "%d\u30D3\u30C3\u30C8%s\u9375(\u5F31)"},
+ {"key.bit", "%1$d\u30D3\u30C3\u30C8%2$s\u9375"},
+ {"key.bit.weak", "%1$d\u30D3\u30C3\u30C8%2$s\u9375(\u5F31)"},
+ {"unknown.size.1", "\u4E0D\u660E\u30B5\u30A4\u30BA\u306E%s\u9375"},
{".PATTERN.printX509Cert.with.weak",
"\u6240\u6709\u8005: {0}\n\u767A\u884C\u8005: {1}\n\u30B7\u30EA\u30A2\u30EB\u756A\u53F7: {2}\n\u6709\u52B9\u671F\u9593\u306E\u958B\u59CB\u65E5: {3}\u7D42\u4E86\u65E5: {4}\n\u8A3C\u660E\u66F8\u306E\u30D5\u30A3\u30F3\u30AC\u30D7\u30EA\u30F3\u30C8:\n\t SHA1: {5}\n\t SHA256: {6}\n\u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u540D: {7}\n\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u516C\u958B\u9375\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0: {8}\n\u30D0\u30FC\u30B8\u30E7\u30F3: {9}"},
{"PKCS.10.with.weak",
- "PKCS #10\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8(\u30D0\u30FC\u30B8\u30E7\u30F31.0)\n\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8: %s\n\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8 %s\n\u516C\u958B\u9375: %s\n\u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0: %s\n"},
- {"verified.by.s.in.s.weak", "%s(%s\u5185)\u306B\u3088\u308A%s\u3067\u691C\u8A3C\u3055\u308C\u307E\u3057\u305F"},
- {"whose.sigalg.risk", "%s\u306F\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30FB\u30EA\u30B9\u30AF\u3068\u307F\u306A\u3055\u308C\u308B%s\u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059\u3002"},
- {"whose.key.risk", "%s\u306F\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30FB\u30EA\u30B9\u30AF\u3068\u307F\u306A\u3055\u308C\u308B%s\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059\u3002"},
+ "PKCS #10\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8(\u30D0\u30FC\u30B8\u30E7\u30F31.0)\n\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8: %1$s\n\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8: %2$s\n\u516C\u958B\u9375: %3$s\n\u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0: %4$s\n"},
+ {"verified.by.s.in.s.weak", "%2$s\u5185\u306E%1$s\u306B\u3088\u308A%3$s\u3067\u691C\u8A3C\u3055\u308C\u307E\u3057\u305F"},
+ {"whose.sigalg.risk", "%1$s\u306F%2$s\u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u3092\u4F7F\u7528\u3057\u3066\u304A\u308A\u3001\u3053\u308C\u306F\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30FB\u30EA\u30B9\u30AF\u3068\u307F\u306A\u3055\u308C\u307E\u3059\u3002"},
+ {"whose.key.risk", "%1$s\u306F%2$s\u3092\u4F7F\u7528\u3057\u3066\u304A\u308A\u3001\u3053\u308C\u306F\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30FB\u30EA\u30B9\u30AF\u3068\u307F\u306A\u3055\u308C\u307E\u3059\u3002"},
+ {"jks.storetype.warning", "%1$s\u30AD\u30FC\u30B9\u30C8\u30A2\u306F\u72EC\u81EA\u306E\u5F62\u5F0F\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059\u3002\"keytool -importkeystore -srckeystore %2$s -destkeystore %2$s -deststoretype pkcs12\"\u3092\u4F7F\u7528\u3059\u308B\u696D\u754C\u6A19\u6E96\u306E\u5F62\u5F0F\u3067\u3042\u308BPKCS12\u306B\u79FB\u884C\u3059\u308B\u3053\u3068\u3092\u304A\u85A6\u3081\u3057\u307E\u3059\u3002"},
+ {"migrate.keystore.warning", "\"%1$s\"\u304C%4$s\u306B\u79FB\u884C\u3055\u308C\u307E\u3057\u305F\u3002%2$s\u30AD\u30FC\u30B9\u30C8\u30A2\u306F\"%3$s\"\u3068\u3057\u3066\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3055\u308C\u307E\u3059\u3002"},
+ {"backup.keystore.warning", "\u5143\u306E\u30AD\u30FC\u30B9\u30C8\u30A2\"%1$s\"\u306F\"%3$s\"\u3068\u3057\u3066\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3055\u308C\u307E\u3059..."},
+ {"importing.keystore.status", "\u30AD\u30FC\u30B9\u30C8\u30A2%1$s\u3092%2$s\u306B\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059..."},
};
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_ko.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_ko.java Wed Jan 17 12:19:06 2018 +0000
@@ -42,6 +42,8 @@
// keytool: Help part
{".OPTION.", " [OPTION]..."},
{"Options.", "\uC635\uC158:"},
+ {"option.1.set.twice", "%s \uC635\uC158\uC774 \uC5EC\uB7EC \uBC88 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB9C8\uC9C0\uB9C9 \uD56D\uBAA9\uC744 \uC81C\uC678\uD55C \uBAA8\uB4E0 \uD56D\uBAA9\uC774 \uBB34\uC2DC\uB429\uB2C8\uB2E4."},
+ {"multiple.commands.1.2", "\uBA85\uB839\uC740 \uD558\uB098\uB9CC \uD5C8\uC6A9\uB429\uB2C8\uB2E4. %1$s \uBC0F %2$s\uC774(\uAC00) \uBAA8\uB450 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
{"Use.keytool.help.for.all.available.commands",
"\uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uBAA8\uB4E0 \uBA85\uB839\uC5D0 \"keytool -help\" \uC0AC\uC6A9"},
{"Key.and.Certificate.Management.Tool",
@@ -325,7 +327,7 @@
"\uD0A4 \uC800\uC7A5\uC18C\uC5D0 {0,number,integer}\uAC1C\uC758 \uD56D\uBAA9\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4."},
{"Your.keystore.contains.keyStore.size.entries",
"\uD0A4 \uC800\uC7A5\uC18C\uC5D0 {0,number,integer}\uAC1C\uC758 \uD56D\uBAA9\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4."},
- {"Failed.to.parse.input", "\uC785\uB825\uAC12\uC758 \uAD6C\uBB38\uBD84\uC11D\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4."},
+ {"Failed.to.parse.input", "\uC785\uB825\uAC12\uC758 \uAD6C\uBB38 \uBD84\uC11D\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4."},
{"Empty.input", "\uC785\uB825\uAC12\uC774 \uBE44\uC5B4 \uC788\uC2B5\uB2C8\uB2E4."},
{"Not.X.509.certificate", "X.509 \uC778\uC99D\uC11C\uAC00 \uC544\uB2D9\uB2C8\uB2E4."},
{"alias.has.no.public.key", "{0}\uC5D0 \uACF5\uC6A9 \uD0A4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},
@@ -447,19 +449,24 @@
{"the.tsa.certificate", "TSA \uC778\uC99D\uC11C"},
{"the.input", "\uC785\uB825"},
{"reply", "\uD68C\uC2E0"},
- {"one.in.many", "%s #%d/%d"},
+ {"one.in.many", "%1$s #%2$d/%3$d"},
{"alias.in.cacerts", "cacerts\uC758 <%s> \uBC1C\uD589\uC790"},
{"alias.in.keystore", "<%s> \uBC1C\uD589\uC790"},
{"with.weak", "%s(\uC57D\uD568)"},
- {"key.bit", "%d\uBE44\uD2B8 %s \uD0A4"},
- {"key.bit.weak", "%d\uBE44\uD2B8 %s \uD0A4(\uC57D\uD568)"},
+ {"key.bit", "%1$d\uBE44\uD2B8 %2$s \uD0A4"},
+ {"key.bit.weak", "%1$d\uBE44\uD2B8 %2$s \uD0A4(\uC57D\uD568)"},
+ {"unknown.size.1", "\uC54C \uC218 \uC5C6\uB294 \uD06C\uAE30 %s \uD0A4"},
{".PATTERN.printX509Cert.with.weak",
"\uC18C\uC720\uC790: {0}\n\uBC1C\uD589\uC790: {1}\n\uC77C\uB828 \uBC88\uD638: {2}\n\uC801\uD569\uD55C \uC2DC\uC791 \uB0A0\uC9DC: {3} \uC885\uB8CC \uB0A0\uC9DC: {4}\n\uC778\uC99D\uC11C \uC9C0\uBB38:\n\t SHA1: {5}\n\t SHA256: {6}\n\uC11C\uBA85 \uC54C\uACE0\uB9AC\uC998 \uC774\uB984: {7}\n\uC8FC\uCCB4 \uACF5\uC6A9 \uD0A4 \uC54C\uACE0\uB9AC\uC998: {8}\n\uBC84\uC804: {9}"},
{"PKCS.10.with.weak",
- "PKCS #10 \uC778\uC99D\uC11C \uC694\uCCAD(1.0 \uBC84\uC804)\n\uC81C\uBAA9: %s\n\uD615\uC2DD: %s\n\uACF5\uC6A9 \uD0A4: %s\n\uC11C\uBA85 \uC54C\uACE0\uB9AC\uC998: %s\n"},
- {"verified.by.s.in.s.weak", "%s\uC774(\uAC00) %s\uC5D0\uC11C %s\uC744(\uB97C) \uC0AC\uC6A9\uD558\uC5EC \uD655\uC778"},
- {"whose.sigalg.risk", "%s\uC774(\uAC00) \uBCF4\uC548 \uC704\uD5D8\uC73C\uB85C \uAC04\uC8FC\uB418\uB294 %s \uC11C\uBA85 \uC54C\uACE0\uB9AC\uC998\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4."},
- {"whose.key.risk", "%s\uC774(\uAC00) \uBCF4\uC548 \uC704\uD5D8\uC73C\uB85C \uAC04\uC8FC\uB418\uB294 %s\uC744(\uB97C) \uC0AC\uC6A9\uD569\uB2C8\uB2E4."},
+ "PKCS #10 \uC778\uC99D\uC11C \uC694\uCCAD(1.0 \uBC84\uC804)\n\uC81C\uBAA9: %1$s\n\uD615\uC2DD: %2$s\n\uACF5\uC6A9 \uD0A4: %3$s\n\uC11C\uBA85 \uC54C\uACE0\uB9AC\uC998: %4$s\n"},
+ {"verified.by.s.in.s.weak", "%3$s\uC744(\uB97C) \uD3EC\uD568\uD558\uB294 %2$s\uC758 %1$s\uC5D0 \uC758\uD574 \uD655\uC778\uB428"},
+ {"whose.sigalg.risk", "%1$s\uC774(\uAC00) \uBCF4\uC548 \uC704\uD5D8\uC73C\uB85C \uAC04\uC8FC\uB418\uB294 %2$s \uC11C\uBA85 \uC54C\uACE0\uB9AC\uC998\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4."},
+ {"whose.key.risk", "%1$s\uC774(\uAC00) \uBCF4\uC548 \uC704\uD5D8\uC73C\uB85C \uAC04\uC8FC\uB418\uB294 %2$s\uC744(\uB97C) \uC0AC\uC6A9\uD569\uB2C8\uB2E4."},
+ {"jks.storetype.warning", "%1$s \uD0A4 \uC800\uC7A5\uC18C\uB294 \uACE0\uC720 \uD615\uC2DD\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4. \"keytool -importkeystore -srckeystore %2$s -destkeystore %2$s -deststoretype pkcs12\"\uB97C \uC0AC\uC6A9\uD558\uB294 \uC0B0\uC5C5 \uD45C\uC900 \uD615\uC2DD\uC778 PKCS12\uB85C \uC774\uC804\uD558\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4."},
+ {"migrate.keystore.warning", "\"%1$s\"\uC744(\uB97C) %4$s(\uC73C)\uB85C \uC774\uC804\uD588\uC2B5\uB2C8\uB2E4. %2$s \uD0A4 \uC800\uC7A5\uC18C\uAC00 \"%3$s\"(\uC73C)\uB85C \uBC31\uC5C5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+ {"backup.keystore.warning", "\uC6D0\uBCF8 \uD0A4 \uC800\uC7A5\uC18C \"%1$s\"\uC774(\uAC00) \"%3$s\"(\uC73C)\uB85C \uBC31\uC5C5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
+ {"importing.keystore.status", "\uD0A4 \uC800\uC7A5\uC18C %1$s\uC744(\uB97C) %2$s(\uC73C)\uB85C \uC784\uD3EC\uD2B8\uD558\uB294 \uC911..."},
};
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_pt_BR.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_pt_BR.java Wed Jan 17 12:19:06 2018 +0000
@@ -42,6 +42,8 @@
// keytool: Help part
{".OPTION.", " [OPTION]..."},
{"Options.", "Op\u00E7\u00F5es:"},
+ {"option.1.set.twice", "A op\u00E7\u00E3o %s foi especificada v\u00E1rias vezes. Todas, exceto a \u00FAltima, ser\u00E3o ignoradas."},
+ {"multiple.commands.1.2", "Somente um comando \u00E9 permitido: tanto %1$s quanto %2$s foram especificados."},
{"Use.keytool.help.for.all.available.commands",
"Use \"keytool -help\" para todos os comandos dispon\u00EDveis"},
{"Key.and.Certificate.Management.Tool",
@@ -447,19 +449,24 @@
{"the.tsa.certificate", "O certificado TSA"},
{"the.input", "A entrada"},
{"reply", "Resposta"},
- {"one.in.many", "%s #%d de %d"},
+ {"one.in.many", "%1$s #%2$d de %3$d"},
{"alias.in.cacerts", "Emissor <%s> no cacerts"},
{"alias.in.keystore", "Emissor <%s>"},
{"with.weak", "%s (fraca)"},
- {"key.bit", "Chave %s de %d bits"},
- {"key.bit.weak", "Chave %s de %d bits (fraca)"},
+ {"key.bit", "Chave %2$s de %1$d bits"},
+ {"key.bit.weak", "Chave %2$s de %1$d bits (fraca)"},
+ {"unknown.size.1", "chave de tamanho desconhecido %s"},
{".PATTERN.printX509Cert.with.weak",
"Propriet\u00E1rio: {0}\nEmissor: {1}\nN\u00FAmero de s\u00E9rie: {2}\nV\u00E1lido de: {3} at\u00E9: {4}\nFingerprints do certificado:\n\t SHA1: {5}\n\t SHA256: {6}\nNome do algoritmo de assinatura: {7}\nAlgoritmo de Chave P\u00FAblica do Assunto: {8}\nVers\u00E3o: {9}"},
{"PKCS.10.with.weak",
- "Solicita\u00E7\u00E3o do Certificado PKCS #10 (Vers\u00E3o 1.0)\nAssunto: %s\nFormato: %s\nChave P\u00FAblica: %s\nAlgoritmo de assinatura: %s\n"},
- {"verified.by.s.in.s.weak", "Verificado por %s em %s com um %s"},
- {"whose.sigalg.risk", "%s usa o algoritmo de assinatura %s que \u00E9 considerado um risco \u00E0 seguran\u00E7a."},
- {"whose.key.risk", "%s usa um %s que \u00E9 considerado um risco \u00E0 seguran\u00E7a."},
+ "Solicita\u00E7\u00E3o do Certificado PKCS #10 (Vers\u00E3o 1.0)\nAssunto: %1$s\nFormato: %2$s\nChave P\u00FAblica: %3$s\nAlgoritmo de assinatura: %4$s\n"},
+ {"verified.by.s.in.s.weak", "Verificado por %1$s em %2$s com um %3$s"},
+ {"whose.sigalg.risk", "%1$s usa o algoritmo de assinatura %2$s que \u00E9 considerado um risco \u00E0 seguran\u00E7a."},
+ {"whose.key.risk", "%1$s usa um %2$s que \u00E9 considerado um risco \u00E0 seguran\u00E7a."},
+ {"jks.storetype.warning", "O armazenamento de chaves %1$s usa um formato propriet\u00E1rio. \u00C9 recomendada a migra\u00E7\u00E3o para PKCS12, que \u00E9 um formato de padr\u00E3o industrial que usa \"keytool -importkeystore -srckeystore %2$s -destkeystore %2$s -deststoretype pkcs12\"."},
+ {"migrate.keystore.warning", "\"%1$s\" foi migrado para %4$s. O backup do armazenamento de chaves %2$s \u00E9 feito como \"%3$s\"."},
+ {"backup.keystore.warning", "O backup do armazenamento de chaves original \"%1$s\" \u00E9 feito como \"%3$s\"..."},
+ {"importing.keystore.status", "Importando armazenamento de chaves %1$s to %2$s..."},
};
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_sv.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_sv.java Wed Jan 17 12:19:06 2018 +0000
@@ -42,6 +42,8 @@
// keytool: Help part
{".OPTION.", " [OPTION]..."},
{"Options.", "Alternativ:"},
+ {"option.1.set.twice", "Du har angett alternativet %s flera g\u00E5nger. Alla f\u00F6rutom det sista ignoreras."},
+ {"multiple.commands.1.2", "Endast ett kommando \u00E4r till\u00E5tet: du har angett b\u00E5de %1$s och %2$s."},
{"Use.keytool.help.for.all.available.commands",
"L\u00E4s \"Hj\u00E4lp - Nyckelverktyg\" f\u00F6r alla tillg\u00E4ngliga kommandon"},
{"Key.and.Certificate.Management.Tool",
@@ -447,19 +449,24 @@
{"the.tsa.certificate", "TSA-certifikatet"},
{"the.input", "Indata"},
{"reply", "Svar"},
- {"one.in.many", "%s %d av %d"},
+ {"one.in.many", "%1$s #%2$d av %3$d"},
{"alias.in.cacerts", "Utf\u00E4rdaren <%s> i cacerts"},
{"alias.in.keystore", "Utf\u00E4rdaren <%s>"},
{"with.weak", "%s (svag)"},
- {"key.bit", "%d-bitars %s-nyckel"},
- {"key.bit.weak", "%d-bitars %s-nyckel (svag)"},
+ {"key.bit", "%1$d-bitars %2$s-nyckel"},
+ {"key.bit.weak", "%1$d-bitars %2$s-nyckel (svag)"},
+ {"unknown.size.1", "ok\u00E4nd storlek p\u00E5 nyckeln %s"},
{".PATTERN.printX509Cert.with.weak",
"\u00C4gare: {0}\nUtf\u00E4rdare: {1}\nSerienummer: {2}\nGiltigt fr\u00E5n: {3}, till: {4}\nCertifikatfingeravtryck:\n\t SHA1: {5}\n\t SHA256: {6}\nSignaturalgoritmnamn: {7}\nAlgoritm f\u00F6r \u00F6ppen nyckel f\u00F6r \u00E4mne: {8}\nVersion: {9}"},
{"PKCS.10.with.weak",
- "PKCS #10-certifikatbeg\u00E4ran (version 1.0)\n\u00C4mne: %s\nFormat: %s\n\u00D6ppen nyckel: %s\nSignaturalgoritm: %s\n"},
- {"verified.by.s.in.s.weak", "Verifierades av %s i %s med en %s"},
- {"whose.sigalg.risk", "%s anv\u00E4nder signaturalgoritmen %s, vilket anses utg\u00F6ra en s\u00E4kerhetsrisk."},
- {"whose.key.risk", "%s anv\u00E4nder en %s, vilket anses utg\u00F6ra en s\u00E4kerhetsrisk."},
+ "PKCS #10-certifikatbeg\u00E4ran (version 1.0)\n\u00C4mne: %1$s\nFormat: %2$s\n\u00D6ppen nyckel: %3$s\nSignaturalgoritm: %4$s\n"},
+ {"verified.by.s.in.s.weak", "Verifierades av %1$s i %2$s med en %3$s"},
+ {"whose.sigalg.risk", "%1$s anv\u00E4nder signaturalgoritmen %2$s, vilket anses utg\u00F6ra en s\u00E4kerhetsrisk."},
+ {"whose.key.risk", "%1$s anv\u00E4nder en %2$s, vilket anses utg\u00F6ra en s\u00E4kerhetsrisk."},
+ {"jks.storetype.warning", "Nyckellagret %1$s anv\u00E4nder ett propriet\u00E4rt format. Du b\u00F6r migrera till PKCS12, som \u00E4r ett branschstandardformat, med \"keytool -importkeystore -srckeystore %2$s -destkeystore %2$s -deststoretype pkcs12\"."},
+ {"migrate.keystore.warning", "Migrerade \"%1$s\" till %4$s. Nyckellagret %2$s s\u00E4kerhetskopierades som \"%3$s\"."},
+ {"backup.keystore.warning", "Det ursprungliga nyckellagret, \"%1$s\", s\u00E4kerhetskopieras som \"%3$s\"..."},
+ {"importing.keystore.status", "Importerar nyckellagret %1$s till %2$s..."},
};
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_zh_CN.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_zh_CN.java Wed Jan 17 12:19:06 2018 +0000
@@ -42,6 +42,8 @@
// keytool: Help part
{".OPTION.", " [OPTION]..."},
{"Options.", "\u9009\u9879:"},
+ {"option.1.set.twice", "\u591A\u6B21\u6307\u5B9A\u4E86 %s \u9009\u9879\u3002\u9664\u6700\u540E\u4E00\u4E2A\u4E4B\u5916, \u5176\u4F59\u7684\u5C06\u5168\u90E8\u5FFD\u7565\u3002"},
+ {"multiple.commands.1.2", "\u53EA\u5141\u8BB8\u4E00\u4E2A\u547D\u4EE4: \u540C\u65F6\u6307\u5B9A\u4E86 %1$s \u548C %2$s\u3002"},
{"Use.keytool.help.for.all.available.commands",
"\u4F7F\u7528 \"keytool -help\" \u83B7\u53D6\u6240\u6709\u53EF\u7528\u547D\u4EE4"},
{"Key.and.Certificate.Management.Tool",
@@ -447,19 +449,24 @@
{"the.tsa.certificate", "TSA \u8BC1\u4E66"},
{"the.input", "\u8F93\u5165"},
{"reply", "\u56DE\u590D"},
- {"one.in.many", "%s #%d/%d"},
+ {"one.in.many", "%1$s #%2$d/%3$d"},
{"alias.in.cacerts", "cacerts \u4E2D\u7684\u53D1\u5E03\u8005 <%s>"},
{"alias.in.keystore", "\u53D1\u5E03\u8005 <%s>"},
{"with.weak", "%s (\u5F31)"},
- {"key.bit", "%d \u4F4D %s \u5BC6\u94A5"},
- {"key.bit.weak", "%d \u4F4D %s \u5BC6\u94A5 (\u5F31)"},
+ {"key.bit", "%1$d \u4F4D %2$s \u5BC6\u94A5"},
+ {"key.bit.weak", "%1$d \u4F4D %2$s \u5BC6\u94A5 (\u5F31)"},
+ {"unknown.size.1", "\u672A\u77E5\u5927\u5C0F\u7684 %s \u5BC6\u94A5"},
{".PATTERN.printX509Cert.with.weak",
"\u6240\u6709\u8005: {0}\n\u53D1\u5E03\u8005: {1}\n\u5E8F\u5217\u53F7: {2}\n\u751F\u6548\u65F6\u95F4: {3}, \u5931\u6548\u65F6\u95F4: {4}\n\u8BC1\u4E66\u6307\u7EB9:\n\t SHA1: {5}\n\t SHA256: {6}\n\u7B7E\u540D\u7B97\u6CD5\u540D\u79F0: {7}\n\u4E3B\u4F53\u516C\u5171\u5BC6\u94A5\u7B97\u6CD5: {8}\n\u7248\u672C: {9}"},
{"PKCS.10.with.weak",
- "PKCS #10 \u8BC1\u4E66\u8BF7\u6C42 (\u7248\u672C 1.0)\n\u4E3B\u4F53: %s\n\u683C\u5F0F: %s\n\u516C\u5171\u5BC6\u94A5: %s\n\u7B7E\u540D\u7B97\u6CD5: %s\n"},
+ "PKCS #10 \u8BC1\u4E66\u8BF7\u6C42 (\u7248\u672C 1.0)\n\u4E3B\u4F53: %1$s\n\u683C\u5F0F: %2$s\n\u516C\u5171\u5BC6\u94A5: %3$s\n\u7B7E\u540D\u7B97\u6CD5: %4$s\n"},
{"verified.by.s.in.s.weak", "\u7531 %2$s \u4E2D\u7684 %1$s \u4EE5 %3$s \u9A8C\u8BC1"},
- {"whose.sigalg.risk", "%s \u4F7F\u7528\u7684 %s \u7B7E\u540D\u7B97\u6CD5\u5B58\u5728\u5B89\u5168\u98CE\u9669\u3002"},
- {"whose.key.risk", "%s \u4F7F\u7528\u7684 %s \u5B58\u5728\u5B89\u5168\u98CE\u9669\u3002"},
+ {"whose.sigalg.risk", "%1$s \u4F7F\u7528\u7684 %2$s \u7B7E\u540D\u7B97\u6CD5\u5B58\u5728\u5B89\u5168\u98CE\u9669\u3002"},
+ {"whose.key.risk", "%1$s \u4F7F\u7528\u7684 %2$s \u5B58\u5728\u5B89\u5168\u98CE\u9669\u3002"},
+ {"jks.storetype.warning", "%1$s \u5BC6\u94A5\u5E93\u4F7F\u7528\u4E13\u7528\u683C\u5F0F\u3002\u5EFA\u8BAE\u4F7F\u7528 \"keytool -importkeystore -srckeystore %2$s -destkeystore %2$s -deststoretype pkcs12\" \u8FC1\u79FB\u5230\u884C\u4E1A\u6807\u51C6\u683C\u5F0F PKCS12\u3002"},
+ {"migrate.keystore.warning", "\u5DF2\u5C06 \"%1$s\" \u8FC1\u79FB\u5230 %4$s\u3002\u5C06 %2$s \u5BC6\u94A5\u5E93\u4F5C\u4E3A \"%3$s\" \u8FDB\u884C\u4E86\u5907\u4EFD\u3002"},
+ {"backup.keystore.warning", "\u5DF2\u5C06\u539F\u59CB\u5BC6\u94A5\u5E93 \"%1$s\" \u5907\u4EFD\u4E3A \"%3$s\"..."},
+ {"importing.keystore.status", "\u6B63\u5728\u5C06\u5BC6\u94A5\u5E93 %1$s \u5BFC\u5165\u5230 %2$s..."},
};
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_zh_TW.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_zh_TW.java Wed Jan 17 12:19:06 2018 +0000
@@ -42,6 +42,8 @@
// keytool: Help part
{".OPTION.", " [OPTION]..."},
{"Options.", "\u9078\u9805:"},
+ {"option.1.set.twice", "%s \u9078\u9805\u5DF2\u6307\u5B9A\u591A\u6B21\u3002\u5C07\u5FFD\u7565\u6700\u5F8C\u4E00\u500B\u9078\u9805\u4EE5\u5916\u7684\u5176\u4ED6\u6240\u6709\u9078\u9805\u3002"},
+ {"multiple.commands.1.2", "\u53EA\u5141\u8A31\u4E00\u500B\u547D\u4EE4: \u6307\u5B9A\u4E86 %1$s \u548C %2$s \u5169\u8005\u3002"},
{"Use.keytool.help.for.all.available.commands",
"\u4F7F\u7528 \"keytool -help\" \u53D6\u5F97\u6240\u6709\u53EF\u7528\u7684\u547D\u4EE4"},
{"Key.and.Certificate.Management.Tool",
@@ -393,7 +395,7 @@
{".The.integrity.of.the.information.stored.in.your.keystore.",
"* \u5C1A\u672A\u9A57\u8B49\u5132\u5B58\u65BC\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D\u8CC7\u8A0A *\n* \u7684\u5B8C\u6574\u6027\uFF01\u82E5\u8981\u9A57\u8B49\u5176\u5B8C\u6574\u6027\uFF0C *\n* \u60A8\u5FC5\u9808\u63D0\u4F9B\u60A8\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u3002 *"},
{".The.integrity.of.the.information.stored.in.the.srckeystore.",
- "* \u5C1A\u672A\u9A57\u8B49\u5132\u5B58\u65BC srckeystore \u4E2D\u8CC7\u8A0A *\n* \u7684\u5B8C\u6574\u6027\uFF01\u82E5\u8981\u9A57\u8B49\u5176\u5B8C\u6574\u6027\uFF0C\u60A8 *\n* \u5FC5\u9808\u63D0\u4F9B srckeystore \u5BC6\u78BC\u3002 *"},
+ "* \u5C1A\u672A\u9A57\u8B49\u5132\u5B58\u65BC srckeystore \u4E2D\u8CC7\u8A0A *\n* \u7684\u5B8C\u6574\u6027\uFF01\u82E5\u8981\u9A57\u8B49\u5176\u5B8C\u6574\u6027\uFF0C\u60A8\u5FC5\u9808 *\n* \u63D0\u4F9B srckeystore \u5BC6\u78BC\u3002 *"},
{"Certificate.reply.does.not.contain.public.key.for.alias.",
"\u6191\u8B49\u56DE\u8986\u4E26\u672A\u5305\u542B <{0}> \u7684\u516C\u958B\u91D1\u9470"},
@@ -447,19 +449,24 @@
{"the.tsa.certificate", "TSA \u6191\u8B49"},
{"the.input", "\u8F38\u5165"},
{"reply", "\u56DE\u8986"},
- {"one.in.many", "%s #%d / %d"},
+ {"one.in.many", "%1$s #%2$d / %3$d"},
{"alias.in.cacerts", "cacerts \u4E2D\u7684\u767C\u884C\u4EBA <%s>"},
{"alias.in.keystore", "\u767C\u884C\u4EBA <%s>"},
{"with.weak", "%s (\u4F4E\u5F37\u5EA6)"},
- {"key.bit", "%d \u4F4D\u5143\u7684 %s \u91D1\u9470"},
- {"key.bit.weak", "%d \u4F4D\u5143\u7684 %s \u91D1\u9470 (\u4F4E\u5F37\u5EA6)"},
+ {"key.bit", "%1$d \u4F4D\u5143\u7684 %2$s \u91D1\u9470"},
+ {"key.bit.weak", "%1$d \u4F4D\u5143\u7684 %2$s \u91D1\u9470 (\u4F4E\u5F37\u5EA6)"},
+ {"unknown.size.1", "%s \u91D1\u9470\u5927\u5C0F\u4E0D\u660E"},
{".PATTERN.printX509Cert.with.weak",
"\u64C1\u6709\u8005: {0}\n\u767C\u884C\u4EBA: {1}\n\u5E8F\u865F: {2}\n\u6709\u6548\u671F\u81EA: {3} \u5230: {4}\n\u6191\u8B49\u6307\u7D0B:\n\t SHA1: {5}\n\t SHA256: {6}\n\u7C3D\u7AE0\u6F14\u7B97\u6CD5\u540D\u7A31: {7}\n\u4E3B\u9AD4\u516C\u958B\u91D1\u9470\u6F14\u7B97\u6CD5: {8}\n\u7248\u672C: {9}"},
{"PKCS.10.with.weak",
- "PKCS #10 \u6191\u8B49\u8981\u6C42 (\u7248\u672C 1.0)\n\u4E3B\u9AD4: %s\n\u683C\u5F0F: %s\n\u516C\u7528\u91D1\u9470: %s\n\u7C3D\u7AE0\u6F14\u7B97\u6CD5: %s\n"},
+ "PKCS #10 \u6191\u8B49\u8981\u6C42 (\u7248\u672C 1.0)\n\u4E3B\u9AD4: %1$s\n\u683C\u5F0F: %2$s\n\u516C\u7528\u91D1\u9470: %3$s\n\u7C3D\u7AE0\u6F14\u7B97\u6CD5: %4$s\n"},
{"verified.by.s.in.s.weak", "\u7531 %2$s \u4E2D\u7684 %1$s \u4EE5 %3$s \u9A57\u8B49"},
- {"whose.sigalg.risk", "%s \u4F7F\u7528\u7684 %s \u7C3D\u7AE0\u6F14\u7B97\u6CD5\u5B58\u5728\u5B89\u5168\u98A8\u96AA\u3002"},
- {"whose.key.risk", "%s \u4F7F\u7528\u7684 %s \u5B58\u5728\u5B89\u5168\u98A8\u96AA\u3002"},
+ {"whose.sigalg.risk", "%1$s \u4F7F\u7528\u7684 %2$s \u7C3D\u7AE0\u6F14\u7B97\u6CD5\u5B58\u5728\u5B89\u5168\u98A8\u96AA\u3002"},
+ {"whose.key.risk", "%1$s \u4F7F\u7528\u7684 %2$s \u5B58\u5728\u5B89\u5168\u98A8\u96AA\u3002"},
+ {"jks.storetype.warning", "%1$s \u91D1\u9470\u5132\u5B58\u5EAB\u4F7F\u7528\u5C08\u6709\u683C\u5F0F\u3002\u5EFA\u8B70\u60A8\u4F7F\u7528 \"keytool -importkeystore -srckeystore %2$s -destkeystore %2$s -deststoretype pkcs12\" \u79FB\u8F49\u6210\u70BA\u4F7F\u7528 PKCS12 (\u696D\u754C\u6A19\u6E96\u683C\u5F0F)\u3002"},
+ {"migrate.keystore.warning", "\u5DF2\u5C07 \"%1$s\" \u79FB\u8F49\u6210\u70BA %4$s\u3002%2$s \u91D1\u9470\u5132\u5B58\u5EAB\u5DF2\u5099\u4EFD\u70BA \"%3$s\"\u3002"},
+ {"backup.keystore.warning", "\u539F\u59CB\u7684\u91D1\u9470\u5132\u5B58\u5EAB \"%1$s\" \u5DF2\u5099\u4EFD\u70BA \"%3$s\"..."},
+ {"importing.keystore.status", "\u6B63\u5728\u5C07\u91D1\u9470\u5132\u5B58\u5EAB %1$s \u532F\u5165 %2$s..."},
};
--- a/src/java.base/share/classes/sun/security/util/Resources_de.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/util/Resources_de.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -115,6 +115,7 @@
"Substitution f\u00FCr Alias {0} kann nicht ausgef\u00FChrt werden"},
{"substitution.value.prefix.unsupported",
"Substitutionswert {0} nicht unterst\u00FCtzt"},
+ {"SPACE", " "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"type.can.t.be.null","Typ kann nicht null sein"},
--- a/src/java.base/share/classes/sun/security/util/Resources_es.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/util/Resources_es.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -115,6 +115,7 @@
"no se puede realizar la sustituci\u00F3n en el alias, {0}"},
{"substitution.value.prefix.unsupported",
"valor de sustituci\u00F3n, {0}, no soportado"},
+ {"SPACE", " "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"type.can.t.be.null","el tipo no puede ser nulo"},
--- a/src/java.base/share/classes/sun/security/util/Resources_fr.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/util/Resources_fr.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -115,6 +115,7 @@
"impossible d''effectuer une substitution pour l''alias, {0}"},
{"substitution.value.prefix.unsupported",
"valeur de substitution, {0}, non prise en charge"},
+ {"SPACE", " "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"type.can.t.be.null","le type ne peut \u00EAtre NULL"},
--- a/src/java.base/share/classes/sun/security/util/Resources_it.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/util/Resources_it.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -115,6 +115,7 @@
"impossibile eseguire una sostituzione sull''alias, {0}"},
{"substitution.value.prefix.unsupported",
"valore sostituzione, {0}, non supportato"},
+ {"SPACE", " "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"type.can.t.be.null","il tipo non pu\u00F2 essere nullo"},
--- a/src/java.base/share/classes/sun/security/util/Resources_ja.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/util/Resources_ja.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -115,6 +115,7 @@
"\u5225\u540D{0}\u306B\u5BFE\u3057\u3066\u7F6E\u63DB\u64CD\u4F5C\u304C\u3067\u304D\u307E\u305B\u3093"},
{"substitution.value.prefix.unsupported",
"\u7F6E\u63DB\u5024{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
+ {"SPACE", " "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"type.can.t.be.null","\u5165\u529B\u3092null\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"},
--- a/src/java.base/share/classes/sun/security/util/Resources_ko.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/util/Resources_ko.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -115,6 +115,7 @@
"{0} \uBCC4\uCE6D\uC744 \uB300\uCCB4\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
{"substitution.value.prefix.unsupported",
"\uB300\uCCB4 \uAC12 {0}\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
+ {"SPACE", " "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"type.can.t.be.null","\uC720\uD615\uC740 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
--- a/src/java.base/share/classes/sun/security/util/Resources_pt_BR.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/util/Resources_pt_BR.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -115,6 +115,7 @@
"n\u00E3o \u00E9 poss\u00EDvel realizar a substitui\u00E7\u00E3o no alias, {0}"},
{"substitution.value.prefix.unsupported",
"valor da substitui\u00E7\u00E3o, {0}, n\u00E3o suportado"},
+ {"SPACE", " "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"type.can.t.be.null","o tipo n\u00E3o pode ser nulo"},
--- a/src/java.base/share/classes/sun/security/util/Resources_sv.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/util/Resources_sv.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -36,7 +36,7 @@
// javax.security.auth.PrivateCredentialPermission
{"invalid.null.input.s.", "ogiltiga null-indata"},
- {"actions.can.only.be.read.", "funktioner kan endast 'l\u00E4sas'"},
+ {"actions.can.only.be.read.", "\u00E5tg\u00E4rder kan endast 'l\u00E4sas'"},
{"permission.name.name.syntax.invalid.",
"syntaxen f\u00F6r beh\u00F6righetsnamnet [{0}] \u00E4r ogiltig: "},
{"Credential.Class.not.followed.by.a.Principal.Class.and.Name",
@@ -63,7 +63,7 @@
"ogiltigt null-AccessControlContext"},
{"invalid.null.action.provided", "ogiltig null-funktion"},
{"invalid.null.Class.provided", "ogiltig null-klass"},
- {"Subject.", "Subjekt:\n"},
+ {"Subject.", "Innehavare:\n"},
{".Principal.", "\tIdentitetshavare: "},
{".Public.Credential.", "\tOffentlig inloggning: "},
{".Private.Credentials.inaccessible.",
@@ -71,7 +71,7 @@
{".Private.Credential.", "\tPrivat inloggning: "},
{".Private.Credential.inaccessible.",
"\tPrivat inloggning \u00E4r inte tillg\u00E4nglig\n"},
- {"Subject.is.read.only", "Subjektet \u00E4r skrivskyddad"},
+ {"Subject.is.read.only", "Innehavare \u00E4r skrivskyddad"},
{"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set",
"f\u00F6rs\u00F6k att l\u00E4gga till ett objekt som inte \u00E4r en instans av java.security.Principal till ett subjekts upps\u00E4ttning av identitetshavare"},
{"attempting.to.add.an.object.which.is.not.an.instance.of.class",
@@ -115,6 +115,7 @@
"kan ej ers\u00E4tta alias, {0}"},
{"substitution.value.prefix.unsupported",
"ers\u00E4ttningsv\u00E4rde, {0}, st\u00F6ds ej"},
+ {"SPACE", " "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"type.can.t.be.null","typen kan inte vara null"},
--- a/src/java.base/share/classes/sun/security/util/Resources_zh_CN.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/util/Resources_zh_CN.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -63,7 +63,7 @@
"\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A AccessControlContext"},
{"invalid.null.action.provided", "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A\u64CD\u4F5C"},
{"invalid.null.Class.provided", "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A\u7C7B"},
- {"Subject.", "\u4E3B\u9898: \n"},
+ {"Subject.", "\u4E3B\u4F53: \n"},
{".Principal.", "\t\u4E3B\u7528\u6237: "},
{".Public.Credential.", "\t\u516C\u5171\u8EAB\u4EFD\u8BC1\u660E: "},
{".Private.Credentials.inaccessible.",
@@ -71,9 +71,9 @@
{".Private.Credential.", "\t\u4E13\u7528\u8EAB\u4EFD\u8BC1\u660E: "},
{".Private.Credential.inaccessible.",
"\t\u65E0\u6CD5\u8BBF\u95EE\u4E13\u7528\u8EAB\u4EFD\u8BC1\u660E\n"},
- {"Subject.is.read.only", "\u4E3B\u9898\u4E3A\u53EA\u8BFB"},
+ {"Subject.is.read.only", "\u4E3B\u4F53\u4E3A\u53EA\u8BFB"},
{"attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set",
- "\u6B63\u5728\u5C1D\u8BD5\u5C06\u4E00\u4E2A\u975E java.security.Principal \u5B9E\u4F8B\u7684\u5BF9\u8C61\u6DFB\u52A0\u5230\u4E3B\u9898\u7684\u4E3B\u7528\u6237\u96C6\u4E2D"},
+ "\u6B63\u5728\u5C1D\u8BD5\u5C06\u4E00\u4E2A\u975E java.security.Principal \u5B9E\u4F8B\u7684\u5BF9\u8C61\u6DFB\u52A0\u5230\u4E3B\u4F53\u7684\u4E3B\u7528\u6237\u96C6\u4E2D"},
{"attempting.to.add.an.object.which.is.not.an.instance.of.class",
"\u6B63\u5728\u5C1D\u8BD5\u6DFB\u52A0\u4E00\u4E2A\u975E{0}\u5B9E\u4F8B\u7684\u5BF9\u8C61"},
@@ -84,11 +84,11 @@
{"Invalid.null.input.name", "\u65E0\u6548\u7A7A\u8F93\u5165: \u540D\u79F0"},
{"No.LoginModules.configured.for.name",
"\u6CA1\u6709\u4E3A{0}\u914D\u7F6E LoginModules"},
- {"invalid.null.Subject.provided", "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A\u4E3B\u9898"},
+ {"invalid.null.Subject.provided", "\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A\u4E3B\u4F53"},
{"invalid.null.CallbackHandler.provided",
"\u63D0\u4F9B\u4E86\u65E0\u6548\u7684\u7A7A CallbackHandler"},
{"null.subject.logout.called.before.login",
- "\u7A7A\u4E3B\u9898 - \u5728\u767B\u5F55\u4E4B\u524D\u8C03\u7528\u4E86\u6CE8\u9500"},
+ "\u7A7A\u4E3B\u4F53 - \u5728\u767B\u5F55\u4E4B\u524D\u8C03\u7528\u4E86\u6CE8\u9500"},
{"unable.to.instantiate.LoginModule.module.because.it.does.not.provide.a.no.argument.constructor",
"\u65E0\u6CD5\u5B9E\u4F8B\u5316 LoginModule, {0}, \u56E0\u4E3A\u5B83\u672A\u63D0\u4F9B\u4E00\u4E2A\u65E0\u53C2\u6570\u6784\u9020\u5668"},
{"unable.to.instantiate.LoginModule",
@@ -115,6 +115,7 @@
"\u65E0\u6CD5\u5728\u522B\u540D {0} \u4E0A\u6267\u884C\u66FF\u4EE3"},
{"substitution.value.prefix.unsupported",
"\u66FF\u4EE3\u503C{0}\u4E0D\u53D7\u652F\u6301"},
+ {"SPACE", " "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"type.can.t.be.null","\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A\u503C"},
--- a/src/java.base/share/classes/sun/security/util/Resources_zh_TW.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/security/util/Resources_zh_TW.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -115,6 +115,7 @@
"\u7121\u6CD5\u5C0D\u5225\u540D\u57F7\u884C\u66FF\u63DB\uFF0C{0}"},
{"substitution.value.prefix.unsupported",
"\u4E0D\u652F\u63F4\u7684\u66FF\u63DB\u503C\uFF0C{0}"},
+ {"SPACE", " "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"type.can.t.be.null","\u8F38\u5165\u4E0D\u80FD\u70BA\u7A7A\u503C"},
--- a/src/java.base/share/classes/sun/util/resources/CurrencyNames.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/classes/sun/util/resources/CurrencyNames.properties Wed Jan 17 12:19:06 2018 +0000
@@ -226,6 +226,7 @@
SRG=SRG
SSP=SSP
STD=STD
+STN=STN
SVC=SVC
SYP=SYP
SZL=SZL
@@ -294,7 +295,7 @@
aud=Australian Dollar
awg=Aruban Florin
azm=Azerbaijani Manat (1993-2006)
-azn=Azerbaijani Manat
+azn=Azerbaijan Manat
bam=Bosnia-Herzegovina Convertible Mark
bbd=Barbadian Dollar
bdt=Bangladeshi Taka
@@ -380,7 +381,7 @@
kwd=Kuwaiti Dinar
kyd=Cayman Islands Dollar
kzt=Kazakhstani Tenge
-lak=Laotian Kip
+lak=Lao Kip
lbp=Lebanese Pound
lkr=Sri Lankan Rupee
lrd=Liberian Dollar
@@ -418,7 +419,7 @@
pab=Panamanian Balboa
pen=Peruvian Sol
pgk=Papua New Guinean Kina
-php=Philippine Peso
+php=Philippine Piso
pkr=Pakistani Rupee
pln=Polish Zloty
pte=Portuguese Escudo
@@ -446,6 +447,7 @@
srg=Surinamese Guilder
ssp=South Sudanese Pound
std=S\u00e3o Tom\u00e9 and Pr\u00edncipe Dobra
+stn=S\u00e3o Tom\u00e9 and Pr\u00edncipe Dobra
svc=Salvadoran Col\u00f3n
syp=Syrian Pound
szl=Swazi Lilangeni
--- a/src/java.base/share/legal/asm.md Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/legal/asm.md Wed Jan 17 12:19:06 2018 +0000
@@ -1,4 +1,4 @@
-## ASM Bytecode Manipulation Framework v5.1
+## ASM Bytecode Manipulation Framework v6.0
### ASM License
<pre>
--- a/src/java.base/share/native/libjava/Reflection.c Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.base/share/native/libjava/Reflection.c Wed Jan 17 12:19:06 2018 +0000
@@ -30,13 +30,7 @@
JNIEXPORT jclass JNICALL
Java_jdk_internal_reflect_Reflection_getCallerClass__(JNIEnv *env, jclass unused)
{
- return JVM_GetCallerClass(env, JVM_CALLER_DEPTH);
-}
-
-JNIEXPORT jclass JNICALL
-Java_jdk_internal_reflect_Reflection_getCallerClass__I(JNIEnv *env, jclass unused, jint depth)
-{
- return JVM_GetCallerClass(env, depth);
+ return JVM_GetCallerClass(env);
}
JNIEXPORT jint JNICALL
--- a/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -230,8 +230,9 @@
* followed only by characters for which {@link
* Character#isJavaIdentifierPart(int)} returns {@code true}.
* This pattern matches regular identifiers, keywords, restricted
- * keywords, and the literals {@code "true"}, {@code "false"}, and
- * {@code "null"}.
+ * keywords, and the literals {@code "true"}, {@code "false"},
+ * {@code "null"}, and {@code "var"}.
+ *
* The method returns {@code false} for all other strings.
*
* @param name the string to check
@@ -265,8 +266,9 @@
* qualified name in the latest source version. Unlike {@link
* #isIdentifier isIdentifier}, this method returns {@code false}
* for keywords, boolean literals, and the null literal.
+ *
* This method returns {@code true} for <i>restricted
- * keywords</i>.
+ * keywords</i> and {@code "var"}.
*
* @param name the string to check
* @return {@code true} if this string is a
@@ -283,8 +285,9 @@
* qualified name in the given source version. Unlike {@link
* #isIdentifier isIdentifier}, this method returns {@code false}
* for keywords, boolean literals, and the null literal.
+ *
* This method returns {@code true} for <i>restricted
- * keywords</i>.
+ * keywords</i> and {@code "var"}.
*
* @param name the string to check
* @param version the version to use
@@ -308,7 +311,7 @@
* Returns whether or not {@code s} is a keyword, boolean literal,
* or null literal in the latest source version.
* This method returns {@code false} for <i>restricted
- * keywords</i>.
+ * keywords</i> and {@code "var"}.
*
* @param s the string to check
* @return {@code true} if {@code s} is a keyword, or boolean
@@ -325,7 +328,7 @@
* Returns whether or not {@code s} is a keyword, boolean literal,
* or null literal in the given source version.
* This method returns {@code false} for <i>restricted
- * keywords</i>.
+ * keywords</i> and {@code "var"}.
*
* @param s the string to check
* @param version the version to use
--- a/src/java.compiler/share/classes/javax/lang/model/overview.html Tue Jan 16 15:52:01 2018 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!--
-Copyright (c) 2005, 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.
--->
-<html>
-<head>
-<title>javax.lang.model</title>
-</head>
-
-<body bgcolor="white">
-
-Packages used to model various aspects of the Java programming language.
-
-@since 1.6
-
-</body>
-</html>
--- a/src/java.compiler/share/classes/javax/tools/FileManagerUtils.java Tue Jan 16 15:52:01 2018 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2014, 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
- * 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.
- */
-
-package javax.tools;
-
-import java.io.File;
-import java.nio.file.Path;
-import java.util.Iterator;
-
-/**
- * Package-private utility methods to convert between files and paths.
- *
- * @since 9
- */
-class FileManagerUtils {
- private FileManagerUtils() { }
-
- static Iterable<Path> asPaths(final Iterable<? extends File> files) {
- return () -> new Iterator<Path>() {
- Iterator<? extends File> iter = files.iterator();
-
- @Override
- public boolean hasNext() {
- return iter.hasNext();
- }
-
- @Override
- public Path next() {
- return iter.next().toPath();
- }
- };
- }
-
- static Iterable<File> asFiles(final Iterable<? extends Path> paths) {
- return () -> new Iterator<File>() {
- Iterator<? extends Path> iter = paths.iterator();
-
- @Override
- public boolean hasNext() {
- return iter.hasNext();
- }
-
- @Override
- public File next() {
- Path p = iter.next();
- try {
- return p.toFile();
- } catch (UnsupportedOperationException e) {
- throw new IllegalArgumentException(p.toString(), e);
- }
- }
- };
- }
-}
--- a/src/java.compiler/share/classes/javax/tools/StandardJavaFileManager.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.compiler/share/classes/javax/tools/StandardJavaFileManager.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,8 +30,7 @@
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Collection;
-
-import static javax.tools.FileManagerUtils.*;
+import java.util.Iterator;
/**
* File manager based on {@linkplain File java.io.File} and {@linkplain Path java.nio.file.Path}.
@@ -447,4 +446,42 @@
* @since 9
*/
default void setPathFactory(PathFactory f) { }
+
+
+ private static Iterable<Path> asPaths(final Iterable<? extends File> files) {
+ return () -> new Iterator<Path>() {
+ Iterator<? extends File> iter = files.iterator();
+
+ @Override
+ public boolean hasNext() {
+ return iter.hasNext();
+ }
+
+ @Override
+ public Path next() {
+ return iter.next().toPath();
+ }
+ };
+ }
+
+ private static Iterable<File> asFiles(final Iterable<? extends Path> paths) {
+ return () -> new Iterator<File>() {
+ Iterator<? extends Path> iter = paths.iterator();
+
+ @Override
+ public boolean hasNext() {
+ return iter.hasNext();
+ }
+
+ @Override
+ public File next() {
+ Path p = iter.next();
+ try {
+ return p.toFile();
+ } catch (UnsupportedOperationException e) {
+ throw new IllegalArgumentException(p.toString(), e);
+ }
+ }
+ };
+ }
}
--- a/src/java.compiler/share/classes/javax/tools/ToolProvider.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.compiler/share/classes/javax/tools/ToolProvider.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,8 +25,6 @@
package javax.tools;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Iterator;
@@ -101,17 +99,6 @@
return null;
}
- private static final boolean useLegacy;
-
- static {
- Class<?> c = null;
- try {
- c = Class.forName("java.lang.Module");
- } catch (Throwable t) {
- }
- useLegacy = (c == null);
- }
-
/**
* Get an instance of a system tool using the service loader.
* @implNote By default, this returns the implementation in the specified module.
@@ -126,14 +113,6 @@
* @return the specified implementation of the tool
*/
private static <T> T getSystemTool(Class<T> clazz, String moduleName, String className) {
- if (useLegacy) {
- try {
- return Class.forName(className, true, ClassLoader.getSystemClassLoader()).
- asSubclass(clazz).getConstructor().newInstance();
- } catch (ReflectiveOperationException e) {
- throw new Error(e);
- }
- }
try {
ServiceLoader<T> sl = ServiceLoader.load(clazz, ClassLoader.getSystemClassLoader());
@@ -150,24 +129,16 @@
/**
* Determine if this is the desired tool instance.
- * @param <T> the interface of the tool
- * @param tool the instance of the tool
- * @param moduleName the name of the module containing the desired implementation
+ * @param <T> the interface of the tool
+ * @param tool the instance of the tool
+ * @param moduleName the name of the module containing the desired implementation
* @return true if and only if the tool matches the specified criteria
*/
private static <T> boolean matches(T tool, String moduleName) {
PrivilegedAction<Boolean> pa = () -> {
- // for now, use reflection to implement
- // return moduleName.equals(tool.getClass().getModule().getName());
- try {
- Method getModuleMethod = Class.class.getDeclaredMethod("getModule");
- Object toolModule = getModuleMethod.invoke(tool.getClass());
- Method getNameMethod = toolModule.getClass().getDeclaredMethod("getName");
- String toolModuleName = (String) getNameMethod.invoke(toolModule);
- return moduleName.equals(toolModuleName);
- } catch (InvocationTargetException | NoSuchMethodException | IllegalAccessException e) {
- return false;
- }
+ Module toolModule = tool.getClass().getModule();
+ String toolModuleName = toolModule.getName();
+ return toolModuleName.equals(moduleName);
};
return AccessController.doPrivileged(pa);
}
--- a/src/java.compiler/share/classes/javax/tools/overview.html Tue Jan 16 15:52:01 2018 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!--
-Copyright (c) 2005, 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.
--->
-
-<html>
-<head>
-<title>javax.tools</title>
-</head>
-<body>
-
-<p>
-The Java™ programming language compiler API is a set of interfaces that describes the
-functions provided by a compiler. This API has three
-main objectives:
-</p>
-
-<ul>
-
-<li>Allow invocation of a compiler from a program using
-standardized interfaces.</li>
-
-<li>Provide interfaces enabling the compiler to report diagnostics in a
-structured way.</li>
-
-<li>Provide interfaces enabling clients of the compiler to override
-how file objects are found. "File objects" is a file
-abstraction.</li>
-
-</ul>
-
-</body>
-</html>
--- a/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties Wed Jan 17 12:19:06 2018 +0000
@@ -66,7 +66,7 @@
FileChooser.cancelButtonToolTip.textAndMnemonic=Avbryt dialogrutan f\u00F6r filval
FileChooser.saveButtonToolTip.textAndMnemonic=Spara vald fil
FileChooser.openButtonToolTip.textAndMnemonic=\u00D6ppna vald fil
-FileChooser.updateButtonToolTip.textAndMnemonic=Uppdatera kataloglistan
+FileChooser.updateButtonToolTip.textAndMnemonic=Uppdatera kataloglista
FileChooser.helpButtonToolTip.textAndMnemonic=Hj\u00E4lp f\u00F6r val av fil
FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u00D6ppna vald katalog
--- a/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_es.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_es.java Wed Jan 17 12:19:06 2018 +0000
@@ -73,7 +73,7 @@
{"appletviewer.parse.warning.embed.requiresheight", "Advertencia: la etiqueta <embed> requiere el atributo height."},
{"appletviewer.parse.warning.embed.requireswidth", "Advertencia: la etiqueta <embed> requiere el atributo width."},
{"appletviewer.parse.warning.appnotLongersupported", "Advertencia: la etiqueta <app> ya no est\u00E1 soportada, utilice <applet> en su lugar:"},
- {"appletviewer.deprecated", "Advertencia: la API de applet y AppletViewer est\u00E1n anticuados."},
+ {"appletviewer.deprecated", "Advertencia: la API de applet y AppletViewer est\u00E1n en desuso."},
{"appletviewer.usage", "Sintaxis: appletviewer <opciones> url(s)\n\ndonde <opciones> incluye:\n -encoding <codificaci\u00F3n> Especificar la codificaci\u00F3n de caracteres utilizada por los archivos HTML\n -J<indicador de tiempo de ejecuci\u00F3n> Transferir argumento al int\u00E9rprete de Java\n\nLa opci\u00F3n -J es no est\u00E1ndar y est\u00E1 sujeta a cambios sin previo aviso."},
{"appletviewer.main.err.unsupportedopt", "Opci\u00F3n no soportada: {0}"},
{"appletviewer.main.err.unrecognizedarg", "Argumento no reconocido: {0}"},
--- a/src/java.desktop/share/classes/sun/awt/resources/awt_de.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.desktop/share/classes/sun/awt/resources/awt_de.properties Wed Jan 17 12:19:06 2018 +0000
@@ -44,7 +44,7 @@
AWT.subtract=NumPad -
AWT.decimal=NumPad .
AWT.divide=NumPad /
-AWT.delete=L\u00F6schen
+AWT.delete=Entf
AWT.numLock=Num
AWT.scrollLock=Rollen
AWT.f1=F1
--- a/src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java Wed Jan 17 12:19:06 2018 +0000
@@ -448,7 +448,7 @@
Win32ShellFolder2 sf = (Win32ShellFolder2)dir;
return (sf.isFileSystem() && sf.parent != null &&
- sf.parent.equals(Win32ShellFolder2.listRoots()));
+ sf.parent.equals(getDrives()));
}
String path = dir.getPath();
--- a/src/java.sql.rowset/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.sql.rowset/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -122,7 +122,7 @@
crsreader.caldetected = En kalender har identifierats
#CachedRowSetWriter exceptions
-crswriter.connect = Kan inte uppr\u00E4tta n\u00E5gon anslutning
+crswriter.connect = Kan inte uppr\u00E4tta anslutning
crswriter.tname = writeData kan inte fastst\u00E4lla tabellnamnet
crswriter.params1 = Parameterv\u00E4rde1: {0}
crswriter.params2 = Parameterv\u00E4rde2: {0}
@@ -159,8 +159,8 @@
xmlrch.errupdate = Ett fel intr\u00E4ffade vid konstruktion av uppdateringsrad: {0}
xmlrch.errupdrow = Ett fel intr\u00E4ffade vid uppdatering av rad: {0}
xmlrch.chars = tecken:
-xmlrch.badvalue = Felaktigt v\u00E4rde; egenskapen kan inte ha ett tomt v\u00E4rde
-xmlrch.badvalue1 = Felaktigt v\u00E4rde; metadatan kan inte ha ett tomt v\u00E4rde
+xmlrch.badvalue = Felaktigt v\u00E4rde; egenskapen f\u00E5r inte ha v\u00E4rdet null
+xmlrch.badvalue1 = Felaktigt v\u00E4rde; metadata f\u00E5r inte ha v\u00E4rdet null
xmlrch.warning = ** Varning! {0}, rad: {1}, URI: {2}
#RIOptimisticProvider Exceptions
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_de.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_de.java Wed Jan 17 12:19:06 2018 +0000
@@ -1422,4 +1422,4 @@
/** String for use when formatting of the error string failed. */
public static final String FORMAT_FAILED = "FORMAT_FAILED";
-}
+ }
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_es.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_es.java Wed Jan 17 12:19:06 2018 +0000
@@ -1421,4 +1421,5 @@
/** String for use when formatting of the error string failed. */
public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
}
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_fr.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_fr.java Wed Jan 17 12:19:06 2018 +0000
@@ -1421,4 +1421,5 @@
/** String for use when formatting of the error string failed. */
public static final String FORMAT_FAILED = "FORMAT_FAILED";
-}
+
+ }
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_it.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_it.java Wed Jan 17 12:19:06 2018 +0000
@@ -1421,4 +1421,5 @@
/** String for use when formatting of the error string failed. */
public static final String FORMAT_FAILED = "FORMAT_FAILED";
-}
+
+ }
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ja.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ja.java Wed Jan 17 12:19:06 2018 +0000
@@ -1421,4 +1421,5 @@
/** String for use when formatting of the error string failed. */
public static final String FORMAT_FAILED = "FORMAT_FAILED";
-}
+
+ }
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ko.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_ko.java Wed Jan 17 12:19:06 2018 +0000
@@ -1421,4 +1421,5 @@
/** String for use when formatting of the error string failed. */
public static final String FORMAT_FAILED = "FORMAT_FAILED";
-}
+
+ }
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_pt_BR.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_pt_BR.java Wed Jan 17 12:19:06 2018 +0000
@@ -1421,4 +1421,5 @@
/** String for use when formatting of the error string failed. */
public static final String FORMAT_FAILED = "FORMAT_FAILED";
-}
+
+ }
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_sv.java Wed Jan 17 12:19:06 2018 +0000
@@ -478,7 +478,7 @@
{"ER0000" , "{0}" },
{ ER_NO_CURLYBRACE,
- "Fel: Uttryck kan inte inneh\u00E5lla '{'"},
+ "Fel: Uttryck f\u00E5r inte inneh\u00E5lla '{'"},
{ ER_ILLEGAL_ATTRIBUTE ,
"{0} har ett otill\u00E5tet attribut: {1}"},
@@ -1422,4 +1422,4 @@
/** String for use when formatting of the error string failed. */
public static final String FORMAT_FAILED = "FORMAT_FAILED";
-}
+ }
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_CN.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_CN.java Wed Jan 17 12:19:06 2018 +0000
@@ -1421,4 +1421,5 @@
/** String for use when formatting of the error string failed. */
public static final String FORMAT_FAILED = "FORMAT_FAILED";
-}
+
+ }
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_TW.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources_zh_TW.java Wed Jan 17 12:19:06 2018 +0000
@@ -1421,4 +1421,5 @@
/** String for use when formatting of the error string failed. */
public static final String FORMAT_FAILED = "FORMAT_FAILED";
-}
+
+ }
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_ko.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_ko.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -417,7 +417,7 @@
* XSLTC to process the XML input document had a configuration problem.
*/
{ErrorMsg.SAX_PARSER_CONFIG_ERR,
- "JAXP \uAD6C\uBB38\uBD84\uC11D\uAE30\uAC00 \uC81C\uB300\uB85C \uAD6C\uC131\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
+ "JAXP \uAD6C\uBB38 \uBD84\uC11D\uAE30\uAC00 \uC81C\uB300\uB85C \uAD6C\uC131\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
/*
* Note to translators: The substitution text names the internal error
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_sv.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/compiler/util/ErrorMessages_sv.java Wed Jan 17 12:19:06 2018 +0000
@@ -409,7 +409,7 @@
* "<xsl:stylesheet>" is a keyword that should not be translated.
*/
{ErrorMsg.ILLEGAL_TEXT_NODE_ERR,
- "Textdata utanf\u00F6r det \u00F6versta elementet <xsl:stylesheet>."},
+ "Textdata utanf\u00F6r toppniv\u00E5elementet <xsl:stylesheet>."},
/*
* Note to translators: JAXP is an acronym for the Java API for XML
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/runtime/ErrorMessages_ko.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/runtime/ErrorMessages_ko.java Wed Jan 17 12:19:06 2018 +0000
@@ -210,7 +210,7 @@
* DTD.
*/
{BasisLibrary.PARSER_DTD_SUPPORT_ERR,
- "\uC0AC\uC6A9 \uC911\uC778 SAX \uAD6C\uBB38\uBD84\uC11D\uAE30\uAC00 DTD \uC120\uC5B8 \uC774\uBCA4\uD2B8\uB97C \uCC98\uB9AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
+ "\uC0AC\uC6A9 \uC911\uC778 SAX \uAD6C\uBB38 \uBD84\uC11D\uAE30\uAC00 DTD \uC120\uC5B8 \uC774\uBCA4\uD2B8\uB97C \uCC98\uB9AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
/*
* Note to translators: The following message indicates that the XML
@@ -219,7 +219,7 @@
* declarations.
*/
{BasisLibrary.NAMESPACES_SUPPORT_ERR,
- "\uC0AC\uC6A9 \uC911\uC778 SAX \uAD6C\uBB38\uBD84\uC11D\uAE30\uAC00 XML \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
+ "\uC0AC\uC6A9 \uC911\uC778 SAX \uAD6C\uBB38 \uBD84\uC11D\uAE30\uAC00 XML \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
/*
* Note to translators: The substitution text is the URI that was in
--- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/DOMMessages_ko.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/DOMMessages_ko.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -80,7 +80,7 @@
jaxp-null-input-source = \uC9C0\uC815\uB41C \uC18C\uC2A4\uB294 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
#Ranges
-BAD_BOUNDARYPOINTS_ERR = \uBC94\uC704\uC758 \uACBD\uACC4 \uC9C0\uC810\uC774 \uD2B9\uC815 \uC694\uAD6C\uC0AC\uD56D\uC744 \uCDA9\uC871\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+BAD_BOUNDARYPOINTS_ERR = \uBC94\uC704\uC758 \uACBD\uACC4 \uC9C0\uC810\uC774 \uD2B9\uC815 \uC694\uAD6C \uC0AC\uD56D\uC744 \uCDA9\uC871\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
INVALID_NODE_TYPE_ERR = \uBC94\uC704\uC758 \uACBD\uACC4 \uC9C0\uC810 \uCEE8\uD14C\uC774\uB108\uAC00 \uBD80\uC801\uD569\uD55C \uC720\uD615\uC758 \uB178\uB4DC \uB610\uB294 \uBD80\uC801\uD569\uD55C \uC720\uD615\uC758 \uC870\uC0C1\uC744 \uAC00\uC9C4 \uB178\uB4DC\uB85C \uC124\uC815\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4.
--- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/SAXMessages_ko.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/SAXMessages_ko.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -49,11 +49,11 @@
property-not-supported = ''{0}'' \uC18D\uC131\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
property-not-recognized = ''{0}'' \uC18D\uC131\uC744 \uC778\uC2DD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
property-read-only = ''{0}'' \uC18D\uC131\uC740 \uC77D\uAE30 \uC804\uC6A9\uC785\uB2C8\uB2E4.
-property-not-parsing-supported = \uAD6C\uBB38\uBD84\uC11D \uC911 ''{0}'' \uC18D\uC131\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+property-not-parsing-supported = \uAD6C\uBB38 \uBD84\uC11D \uC911 ''{0}'' \uC18D\uC131\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
dom-node-read-not-supported = DOM \uB178\uB4DC \uC18D\uC131\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. DOM \uD2B8\uB9AC\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
incompatible-class = ''{0}'' \uC18D\uC131\uC5D0 \uB300\uD574 \uC9C0\uC815\uB41C \uAC12\uC758 \uB370\uC774\uD130\uD615\uC744 {1}(\uC73C)\uB85C \uBCC0\uD658\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
start-document-not-called="{0}" \uC18D\uC131\uC740 startDocument \uC774\uBCA4\uD2B8\uAC00 \uBC1C\uC0DD\uB41C \uD6C4 \uD638\uCD9C\uD574\uC57C \uD569\uB2C8\uB2E4.
nullparameter="{0}"\uC5D0 \uB300\uD55C \uC774\uB984 \uB9E4\uAC1C\uBCC0\uC218\uAC00 \uB110\uC785\uB2C8\uB2E4.
-errorHandlerNotSet=\uACBD\uACE0: \uAC80\uC99D\uC774 \uC124\uC815\uB418\uC5C8\uC9C0\uB9CC org.xml.sax.ErrorHandler\uAC00 \uC801\uC808\uD788 \uC124\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uAD6C\uBB38\uBD84\uC11D\uAE30\uAC00 \uAE30\uBCF8 ErrorHandler\uB97C \uC0AC\uC6A9\uD558\uC5EC \uCC98\uC74C {0}\uAC1C\uC758 \uC624\uB958\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4. \uC774 \uC624\uB958\uB97C \uC218\uC815\uD558\uB824\uBA74 ''setErrorHandler'' \uBA54\uC18C\uB4DC\uB97C \uD638\uCD9C\uD558\uC2ED\uC2DC\uC624.
+errorHandlerNotSet=\uACBD\uACE0: \uAC80\uC99D\uC774 \uC124\uC815\uB418\uC5C8\uC9C0\uB9CC org.xml.sax.ErrorHandler\uAC00 \uC801\uC808\uD788 \uC124\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uAD6C\uBB38 \uBD84\uC11D\uAE30\uAC00 \uAE30\uBCF8 ErrorHandler\uB97C \uC0AC\uC6A9\uD558\uC5EC \uCC98\uC74C {0}\uAC1C\uC758 \uC624\uB958\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4. \uC774 \uC624\uB958\uB97C \uC218\uC815\uD558\uB824\uBA74 ''setErrorHandler'' \uBA54\uC18C\uB4DC\uB97C \uD638\uCD9C\uD558\uC2ED\uC2DC\uC624.
errorHandlerDebugMsg=\uC624\uB958: URI = "{0}", \uD589 = "{1}", : {2}
--- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XIncludeMessages_sv.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XIncludeMessages_sv.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -48,8 +48,8 @@
AcceptLanguageMalformed = Tecken utanf\u00F6r intervallet #x20 till #x7E till\u00E5ts inte i v\u00E4rdet f\u00F6r 'accept-language'-attributet i 'include'-element.
RootElementRequired = Ett v\u00E4lformulerat dokument kr\u00E4ver ett rotelement.
MultipleRootElements = Ett v\u00E4lformulerat dokument f\u00E5r inte inneh\u00E5lla flera rotelement.
-ContentIllegalAtTopLevel = Ers\u00E4ttningen av ett 'include'-element som f\u00F6rekommer som dokumentelement i k\u00E4llans informationsupps\u00E4ttning p\u00E5 \u00F6versta niv\u00E5n f\u00E5r inte inneh\u00E5lla tecken.
-UnexpandedEntityReferenceIllegal = Ers\u00E4ttningen av ett 'include'-element som f\u00F6rekommer som dokumentelement i k\u00E4llans informationsupps\u00E4ttning p\u00E5 \u00F6versta niv\u00E5n f\u00E5r inte inneh\u00E5lla ut\u00F6kade enhetsreferenser.
+ContentIllegalAtTopLevel = Ers\u00E4ttningen av ett 'include'-element som f\u00F6rekommer som dokumentelement i k\u00E4llans informationsupps\u00E4ttning p\u00E5 toppniv\u00E5n f\u00E5r inte inneh\u00E5lla tecken.
+UnexpandedEntityReferenceIllegal = Ers\u00E4ttningen av ett 'include'-element som f\u00F6rekommer som dokumentelement i k\u00E4llans informationsupps\u00E4ttning p\u00E5 toppniv\u00E5n f\u00E5r inte inneh\u00E5lla ut\u00F6kade enhetsreferenser.
HrefFragmentIdentifierIllegal = Fragmentidentifierare f\u00E5r inte anv\u00E4ndas. ''href''-attributv\u00E4rdet ''{0}'' \u00E4r inte till\u00E5tet.
HrefSyntacticallyInvalid = ''href''-attributv\u00E4rdet ''{0}'' \u00E4r syntaktiskt ogiltigt. Efter till\u00E4mpning av avbrottsregler har v\u00E4rdet varken syntaktiskt korrekt URI eller IRI.
XPointerStreamability = En xpointer har angetts som pekar till en plats i k\u00E4llans informationsupps\u00E4ttning. Det finns ingen \u00E5tkomst till denna plats p\u00E5 grund av processorns str\u00F6mningsmetod.
--- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ko.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ko.properties Wed Jan 17 12:19:06 2018 +0000
@@ -295,7 +295,7 @@
# Implementation limits
- EntityExpansionLimit=JAXP00010001: \uAD6C\uBB38\uBD84\uC11D\uAE30\uAC00 \uC774 \uBB38\uC11C\uC5D0\uC11C "{0}"\uAC1C\uB97C \uCD08\uACFC\uD558\uB294 \uC5D4\uD2F0\uD2F0 \uD655\uC7A5\uC744 \uBC1C\uACAC\uD588\uC2B5\uB2C8\uB2E4. \uC774\uB294 JDK\uC5D0\uC11C \uC801\uC6A9\uD558\uB294 \uC81C\uD55C\uC785\uB2C8\uB2E4.
+ EntityExpansionLimit=JAXP00010001: \uAD6C\uBB38 \uBD84\uC11D\uAE30\uAC00 \uC774 \uBB38\uC11C\uC5D0\uC11C "{0}"\uAC1C\uB97C \uCD08\uACFC\uD558\uB294 \uC5D4\uD2F0\uD2F0 \uD655\uC7A5\uC744 \uBC1C\uACAC\uD588\uC2B5\uB2C8\uB2E4. \uC774\uB294 JDK\uC5D0\uC11C \uC801\uC6A9\uD558\uB294 \uC81C\uD55C\uC785\uB2C8\uB2E4.
ElementAttributeLimit=JAXP00010002: "{0}" \uC694\uC18C\uC5D0 "{1}"\uAC1C\uB97C \uCD08\uACFC\uD558\uB294 \uC18D\uC131\uC774 \uC788\uC2B5\uB2C8\uB2E4. "{1}"\uC740(\uB294) JDK\uC5D0\uC11C \uC801\uC6A9\uD558\uB294 \uC81C\uD55C\uC785\uB2C8\uB2E4.
MaxEntitySizeLimit=JAXP00010003: "{0}" \uC5D4\uD2F0\uD2F0\uC758 \uAE38\uC774\uAC00 "{3}"\uC5D0\uC11C \uC124\uC815\uB41C "{2}" \uC81C\uD55C\uC744 \uCD08\uACFC\uD558\uB294 "{1}"\uC785\uB2C8\uB2E4.
TotalEntitySizeLimit=JAXP00010004: \uC5D4\uD2F0\uD2F0\uC758 \uB204\uC801 \uD06C\uAE30\uAC00 "{2}"\uC5D0\uC11C \uC124\uC815\uD55C "{1}" \uC81C\uD55C\uC744 \uCD08\uACFC\uD558\uB294 "{0}"\uC785\uB2C8\uB2E4.
--- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_TW.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_TW.properties Wed Jan 17 12:19:06 2018 +0000
@@ -300,7 +300,7 @@
MaxEntitySizeLimit=JAXP00010003: \u5BE6\u9AD4 "{0}" \u7684\u9577\u5EA6\u70BA "{1}"\uFF0C\u8D85\u904E "{3}" \u6240\u8A2D\u5B9A\u7684 "{2}" \u9650\u5236\u3002
TotalEntitySizeLimit=JAXP00010004: \u5BE6\u9AD4\u7684\u7D2F\u7A4D\u5927\u5C0F\u70BA "{0}"\uFF0C\u8D85\u904E "{2}" \u6240\u8A2D\u5B9A\u7684 "{1}" \u9650\u5236\u3002
MaxXMLNameLimit=JAXP00010005: \u5BE6\u9AD4 "{0}" \u7684\u9577\u5EA6\u70BA "{1}"\uFF0C\u8D85\u904E "{3}" \u6240\u8A2D\u5B9A\u7684 "{2}" \u9650\u5236\u3002
- MaxElementDepthLimit=JAXP00010006: \u5143\u7D20 "{0}" \u7684\u6DF1\u5EA6\u70BA "{1}"\uFF0C\u8D85\u904E "{3}" \u8A2D\u5B9A\u7684 "{2}" \u9650\u5236\u3002
+ MaxElementDepthLimit=JAXP00010006: \u5143\u7D20 "{0}" \u7684\u6DF1\u5EA6\u70BA "{1}"\uFF0C\u8D85\u904E "{3}" \u6240\u8A2D\u5B9A\u7684 "{2}" \u9650\u5236\u3002
EntityReplacementLimit=JAXP00010007: \u5BE6\u9AD4\u53C3\u7167\u4E2D\u7684\u7BC0\u9EDE\u7E3D\u6578\u70BA "{0}"\uFF0C\u8D85\u904E "{2}" \u6240\u8A2D\u5B9A\u7684 "{1}" \u9650\u5236\u3002
# Catalog 09
--- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLSchemaMessages_ko.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLSchemaMessages_ko.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -312,7 +312,7 @@
FacetValueFromBase = FacetValueFromBase: ''{0}'' \uC720\uD615\uC758 \uC120\uC5B8\uC5D0\uC11C ''{2}'' \uBA74\uC758 ''{1}'' \uAC12\uC740 \uAE30\uBCF8 \uC720\uD615 ''{3}''\uC758 \uAC12 \uACF5\uBC31\uC5D0\uC11C \uC640\uC57C \uD569\uB2C8\uB2E4.
FixedFacetValue = FixedFacetValue: {3}\uC758 \uC815\uC758\uC5D0\uC11C ''{0}'' \uBA74\uC5D0 \uB300\uD55C ''{1}'' \uAC12\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. ''{0}''\uC5D0 \uB300\uD55C \uAC12\uC774 \uC870\uC0C1 \uC720\uD615 \uC911 \uD558\uB098\uC5D0\uC11C ''{2}''(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC73C\uBA70 '{'fixed'}' = true\uC774\uAE30 \uB54C\uBB38\uC785\uB2C8\uB2E4.
InvalidRegex = InvalidRegex: \uD328\uD134 \uAC12 ''{0}''\uC740(\uB294) \uC801\uD569\uD55C \uC815\uADDC \uD45C\uD604\uC2DD\uC774 \uC544\uB2D9\uB2C8\uB2E4. ''{2}'' \uC5F4\uC5D0\uC11C ''{1}'' \uC624\uB958\uAC00 \uBCF4\uACE0\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
- MaxOccurLimit = \uAD6C\uBB38\uBD84\uC11D\uAE30\uC758 \uD604\uC7AC \uAD6C\uC131\uC5D0\uC11C maxOccurs \uC18D\uC131\uAC12\uC744 {0} \uAC12\uBCF4\uB2E4 \uD06C\uAC8C \uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+ MaxOccurLimit = \uAD6C\uBB38 \uBD84\uC11D\uAE30\uC758 \uD604\uC7AC \uAD6C\uC131\uC5D0\uC11C maxOccurs \uC18D\uC131\uAC12\uC744 {0} \uAC12\uBCF4\uB2E4 \uD06C\uAC8C \uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
PublicSystemOnNotation = PublicSystemOnNotation: \uD558\uB098 \uC774\uC0C1\uC758 ''public''\uACFC ''system''\uC774 ''notation'' \uC694\uC18C\uC5D0 \uB098\uD0C0\uB098\uC57C \uD569\uB2C8\uB2E4.
SchemaLocation = SchemaLocation: schemaLocation \uAC12 = ''{0}''\uC5D0\uB294 \uC9DD\uC218 \uAC1C\uC758 URI\uAC00 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.
TargetNamespace.1 = TargetNamespace.1: ''{0}'' \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uAC00 \uD544\uC694\uD558\uC9C0\uB9CC \uC2A4\uD0A4\uB9C8 \uBB38\uC11C\uC758 \uB300\uC0C1 \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uAC00 ''{1}''\uC785\uB2C8\uB2E4.
--- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLSchemaMessages_sv.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLSchemaMessages_sv.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -43,7 +43,7 @@
DuplicateUnique = cvc-identity-constraint.4.1: Duplicerat unikt v\u00E4rde [{0}] har deklarerats f\u00F6r identitetsbegr\u00E4nsningen "{2}" f\u00F6r elementet "{1}".
FieldMultipleMatch = cvc-identity-constraint.3: F\u00E4ltet "{0}" f\u00F6r identitetsbegr\u00E4nsningen "{1}" matchar flera v\u00E4rden inom omfattningen f\u00F6r v\u00E4ljaren. F\u00E4lt m\u00E5ste matcha unika v\u00E4rden.
FixedDiffersFromActual = Elementets inneh\u00E5ll motsvarar inte v\u00E4rdet av attributet som anges som "fixed" i elementdeklarationen i schemat.
- KeyMatchesNillable = cvc-identity-constraint.4.2.3: Elementet "{0}" har nyckeln "{1}" som matchar ett element d\u00E4r nillable \u00E4r angett till sant.
+ KeyMatchesNillable = cvc-identity-constraint.4.2.3: Elementet "{0}" har nyckeln "{1}" som matchar ett element d\u00E4r nullbar \u00E4r satt till sant.
KeyNotEnoughValues = cvc-identity-constraint.4.2.1.b: Inte tillr\u00E4ckligt m\u00E5nga v\u00E4rden har angetts f\u00F6r identitetsbegr\u00E4nsningen <key name="{1}"> som har angetts f\u00F6r elementet "{0}".
KeyNotFound = cvc-identity-constraint.4.3: Nyckeln ''{0}'' med v\u00E4rdet ''{1}'' hittades inte f\u00F6r identitetsbegr\u00E4nsningen f\u00F6r elementet ''{2}''.
KeyRefOutOfScope = Fel vid id-begr\u00E4nsning: id-begr\u00E4nsning "{0}" har en nyckelreferens som refererar till nyckel eller unikt v\u00E4rde utanf\u00F6r definitionsomr\u00E5det.
@@ -125,11 +125,11 @@
src-attribute.4 = src-attribute.4: Attributet ''{0}'' har b\u00E5de ett ''typ''-attribut och en anonym ''simpleType''-underordnad. Endast ett av dessa till\u00E5ts som attribut.
src-attribute_group.2 = src-attribute_group.2: Snittet mellan jokertecken kan inte uttryckas f\u00F6r attributgruppen ''{0}''.
src-attribute_group.3 = src-attribute_group.3: Cirkul\u00E4ra definitioner har identifierats f\u00F6r attributgruppen ''{0}''. Rekursivt efterf\u00F6ljande attributgruppreferenser leder s\u00E5 sm\u00E5ningom tillbaka till sig sj\u00E4lv.
- src-ct.1 = src-ct.1: Fel intr\u00E4ffade vid representationen av definition f\u00F6r typ ''{0}''. Om <complexContent> anv\u00E4nds m\u00E5ste bastyp vara complexType. ''{1}'' \u00E4r simpleType.
- src-ct.2.1 = src-ct.2.1: Fel intr\u00E4ffade vid representationen av definition f\u00F6r typ ''{0}''. Om <simpleContent> anv\u00E4nds m\u00E5ste bastyp vara complexType vars inneh\u00E5ll \u00E4r enkelt, eller, om det finns en angiven begr\u00E4nsning, komplex typ med blandat inneh\u00E5ll och t\u00F6mningsbar partikel, eller, om det finns ett angivet till\u00E4gg, enkel typ. ''{1}'' uppfyller inget av dessa villkor.
- src-ct.2.2 = src-ct.2.2: Fel intr\u00E4ffade vid representationen av definition f\u00F6r typ ''{0}''. Om complexType med simpleContent begr\u00E4nsar complexType med blandat inneh\u00E5ll och t\u00F6mningsbar partikel m\u00E5ste det finnas en <simpleType> bland underordnade i <restriction>.
- src-ct.4 = src-ct.4: Fel intr\u00E4ffade vid representationen av definition f\u00F6r typ ''{0}''. Snittet mellan jokertecken kan inte uttryckas.
- src-ct.5 = src-ct.5: Fel intr\u00E4ffade vid representationen av definition f\u00F6r typ ''{0}''. Unionen mellan jokertecken kan inte uttryckas.
+ src-ct.1 = src-ct.1: Ett fel intr\u00E4ffade vid representationen av definition f\u00F6r typ ''{0}''. Om <complexContent> anv\u00E4nds m\u00E5ste bastyp vara complexType. ''{1}'' \u00E4r simpleType.
+ src-ct.2.1 = src-ct.2.1: Ett fel intr\u00E4ffade vid representationen av definition f\u00F6r typ ''{0}''. Om <simpleContent> anv\u00E4nds m\u00E5ste bastyp vara complexType vars inneh\u00E5ll \u00E4r enkelt, eller, om det finns en angiven begr\u00E4nsning, komplex typ med blandat inneh\u00E5ll och t\u00F6mningsbar partikel, eller, om det finns ett angivet till\u00E4gg, enkel typ. ''{1}'' uppfyller inget av dessa villkor.
+ src-ct.2.2 = src-ct.2.2: Ett fel intr\u00E4ffade vid representationen av definition f\u00F6r typ ''{0}''. Om complexType med simpleContent begr\u00E4nsar complexType med blandat inneh\u00E5ll och t\u00F6mningsbar partikel m\u00E5ste det finnas en <simpleType> bland underordnade i <restriction>.
+ src-ct.4 = src-ct.4: Ett fel intr\u00E4ffade vid representationen av definition f\u00F6r typ ''{0}''. Snittet mellan jokertecken kan inte uttryckas.
+ src-ct.5 = src-ct.5: Ett fel intr\u00E4ffade vid representationen av definition f\u00F6r typ ''{0}''. Unionen mellan jokertecken kan inte uttryckas.
src-element.1 = src-element.1: B\u00E5da egenskaperna ''default'' och ''fixed'' kan inte samtidigt ing\u00E5 i elementdeklarationen ''{0}''. Anv\u00E4nd en av dem.
src-element.2.1 = src-element.2.1: Antingen 'ref' eller 'name' m\u00E5ste anges i den lokala elementdeklarationen.
src-element.2.2 = src-element.2.2: Eftersom ''{0}'' inneh\u00E5ller ett ''ref''-attribut m\u00E5ste inneh\u00E5llet matcha (annotation?). ''{1}'' hittades dock inte.
--- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLSchemaMessages_zh_TW.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLSchemaMessages_zh_TW.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -46,8 +46,8 @@
KeyMatchesNillable = cvc-identity-constraint.4.2.3: \u5143\u7D20 "{0}" \u7684\u91D1\u9470 "{1}" \u7B26\u5408 nillable \u8A2D\u70BA true \u7684\u5143\u7D20\u3002
KeyNotEnoughValues = cvc-identity-constraint.4.2.1.b: \u672A\u66FF\u91DD\u5C0D\u5143\u7D20 "{0}" \u6307\u5B9A\u7684 <key name="{1}"> \u8B58\u5225\u9650\u5236\u689D\u4EF6\u6307\u5B9A\u8DB3\u5920\u7684\u503C\u3002
KeyNotFound = cvc-identity-constraint.4.3: \u627E\u4E0D\u5230\u5143\u7D20 ''{2}'' \u8B58\u5225\u9650\u5236\u689D\u4EF6\u4E4B\u503C\u70BA ''{1}'' \u7684\u91D1\u9470 ''{0}''\u3002
- KeyRefOutOfScope = \u8B58\u5225\u9650\u5236\u689D\u4EF6\u932F\u8AA4: \u8B58\u5225\u9650\u5236\u689D\u4EF6 "{0}" \u5177\u6709\u4E00\u500B keyref\uFF0C\u5B83\u53C3\u7167\u4E86\u7BC4\u570D\u4E4B\u5916\u7684\u7D22\u5F15\u9375\u6216\u552F\u4E00\u503C\u3002
- KeyRefReferNotFound = \u7D22\u5F15\u9375\u53C3\u7167\u5BA3\u544A "{0}" \u53C3\u7167\u4E86\u540D\u7A31\u70BA "{1}" \u7684\u4E0D\u660E\u7D22\u5F15\u9375\u3002
+ KeyRefOutOfScope = \u8B58\u5225\u9650\u5236\u689D\u4EF6\u932F\u8AA4: \u8B58\u5225\u9650\u5236\u689D\u4EF6 "{0}" \u5177\u6709\u4E00\u500B keyref\uFF0C\u5B83\u53C3\u7167\u4E86\u7BC4\u570D\u4E4B\u5916\u7684\u91D1\u9470\u6216\u552F\u4E00\u503C\u3002
+ KeyRefReferNotFound = \u91D1\u9470\u53C3\u7167\u5BA3\u544A "{0}" \u53C3\u7167\u4E86\u540D\u7A31\u70BA "{1}" \u7684\u4E0D\u660E\u91D1\u9470\u3002
UnknownField = \u5167\u90E8\u8B58\u5225\u9650\u5236\u689D\u4EF6\u932F\u8AA4; \u66FF\u5143\u7D20 "{1}" \u6307\u5B9A\u4E86\u8B58\u5225\u9650\u5236\u689D\u4EF6 "{2}" \u7684\u4E0D\u660E\u6B04\u4F4D "{0}"\u3002
# Ideally, we should only use the following error keys, not the ones under
--- a/src/java.xml/share/classes/com/sun/org/apache/xml/internal/res/XMLErrorResources_es.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xml/internal/res/XMLErrorResources_es.java Wed Jan 17 12:19:06 2018 +0000
@@ -226,7 +226,7 @@
"La clonaci\u00F3n del iterador no est\u00E1 soportada"},
{ ER_UNKNOWN_AXIS_TYPE,
- "Tipo transversal de eje desconocido: {0}"},
+ "Tipo de recorrido de eje desconocido: {0}"},
{ ER_AXIS_NOT_SUPPORTED,
"Traverser de eje no soportado: {0}"},
--- a/src/java.xml/share/classes/com/sun/org/apache/xml/internal/res/XMLErrorResources_ko.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xml/internal/res/XMLErrorResources_ko.java Wed Jan 17 12:19:06 2018 +0000
@@ -211,10 +211,10 @@
"Coroutine \uB9E4\uAC1C\uBCC0\uC218 \uC624\uB958({0})"},
{ ER_PARSER_DOTERMINATE_ANSWERS,
- "\n\uC608\uC0C1\uCE58 \uC54A\uC740 \uC624\uB958: \uAD6C\uBB38\uBD84\uC11D\uAE30 doTerminate\uAC00 {0}\uC5D0 \uC751\uB2F5\uD569\uB2C8\uB2E4."},
+ "\n\uC608\uC0C1\uCE58 \uC54A\uC740 \uC624\uB958: \uAD6C\uBB38 \uBD84\uC11D\uAE30 doTerminate\uAC00 {0}\uC5D0 \uC751\uB2F5\uD569\uB2C8\uB2E4."},
{ ER_NO_PARSE_CALL_WHILE_PARSING,
- "\uAD6C\uBB38\uBD84\uC11D \uC911 parse\uB97C \uD638\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+ "\uAD6C\uBB38 \uBD84\uC11D \uC911 parse\uB97C \uD638\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
{ ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED,
"\uC624\uB958: {0} \uCD95\uC5D0 \uB300\uD574 \uC785\uB825\uB41C \uC774\uD130\uB808\uC774\uD130\uAC00 \uAD6C\uD604\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
@@ -244,13 +244,13 @@
"\uB178\uB4DC\uB97C \uD578\uB4E4\uB85C \uBD84\uC11D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
{ ER_STARTPARSE_WHILE_PARSING,
- "\uAD6C\uBB38\uBD84\uC11D \uC911 startParse\uB97C \uD638\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+ "\uAD6C\uBB38 \uBD84\uC11D \uC911 startParse\uB97C \uD638\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
{ ER_STARTPARSE_NEEDS_SAXPARSER,
"startParse\uC5D0\uB294 \uB110\uC774 \uC544\uB2CC SAXParser\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4."},
{ ER_COULD_NOT_INIT_PARSER,
- "\uAD6C\uBB38\uBD84\uC11D\uAE30\uB97C \uCD08\uAE30\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+ "\uAD6C\uBB38 \uBD84\uC11D\uAE30\uB97C \uCD08\uAE30\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
{ ER_EXCEPTION_CREATING_POOL,
"\uD480\uC5D0 \uB300\uD55C \uC0C8 \uC778\uC2A4\uD134\uC2A4\uB97C \uC0DD\uC131\uD558\uB294 \uC911 \uC608\uC678\uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4."},
@@ -295,10 +295,10 @@
"\uBD80\uBD84\uC5D0 \uBD80\uC801\uD569\uD55C \uBB38\uC790\uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4."},
{ ER_PARSER_IN_USE,
- "\uAD6C\uBB38\uBD84\uC11D\uAE30\uAC00 \uC774\uBBF8 \uC0AC\uC6A9\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4."},
+ "\uAD6C\uBB38 \uBD84\uC11D\uAE30\uAC00 \uC774\uBBF8 \uC0AC\uC6A9\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4."},
{ ER_CANNOT_CHANGE_WHILE_PARSING,
- "\uAD6C\uBB38\uBD84\uC11D \uC911 {0} {1}\uC744(\uB97C) \uBCC0\uACBD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+ "\uAD6C\uBB38 \uBD84\uC11D \uC911 {0} {1}\uC744(\uB97C) \uBCC0\uACBD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
{ ER_SELF_CAUSATION_NOT_PERMITTED,
"\uC790\uCCB4 \uC778\uACFC \uAD00\uACC4\uB294 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
--- a/src/java.xml/share/classes/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_TW.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xml/internal/res/XMLErrorResources_zh_TW.java Wed Jan 17 12:19:06 2018 +0000
@@ -259,7 +259,7 @@
"\u8DEF\u5F91\u5305\u542B\u7121\u6548\u7684\u9041\u96E2\u5E8F\u5217"},
{ ER_SCHEME_REQUIRED,
- "\u914D\u7F6E\u662F\u5FC5\u8981\u7684\uFF01"},
+ "\u914D\u7F6E\u662F\u5FC5\u8981\u9805\u76EE\uFF01"},
{ ER_NO_SCHEME_IN_URI,
"\u5728 URI \u4E2D\u627E\u4E0D\u5230\u914D\u7F6E: {0}"},
--- a/src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/utils/SerializerMessages_zh_TW.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer/utils/SerializerMessages_zh_TW.java Wed Jan 17 12:19:06 2018 +0000
@@ -186,7 +186,7 @@
"\u8B66\u544A: \u8981\u6C42\u7684\u8F38\u51FA\u6587\u4EF6\u7248\u672C\u70BA ''{0}''\u3002\u4E0D\u652F\u63F4\u6B64\u7248\u672C\u7684 XML\u3002\u8F38\u51FA\u6587\u4EF6\u7684\u7248\u672C\u5C07\u6703\u662F ''1.0''\u3002" },
{ MsgKey.ER_SCHEME_REQUIRED,
- "\u5FC5\u9808\u6709\u914D\u7F6E\uFF01" },
+ "\u914D\u7F6E\u662F\u5FC5\u8981\u9805\u76EE\uFF01" },
/*
* Note to translators: The words 'Properties' and
--- a/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ko.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/com/sun/org/apache/xpath/internal/res/XPATHErrorResources_ko.java Wed Jan 17 12:19:06 2018 +0000
@@ -858,7 +858,7 @@
"{0}\uC5D0\uC11C URL\uC744 \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
{ WG_EXPAND_ENTITIES_NOT_SUPPORTED,
- "DTM \uAD6C\uBB38\uBD84\uC11D\uAE30\uC5D0 \uB300\uD574\uC11C\uB294 -E \uC635\uC158\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
+ "DTM \uAD6C\uBB38 \uBD84\uC11D\uAE30\uC5D0 \uB300\uD574\uC11C\uB294 -E \uC635\uC158\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
{ WG_ILLEGAL_VARIABLE_REFERENCE,
"\uBCC0\uC218\uC5D0 \uB300\uD574 \uC81C\uACF5\uB41C VariableReference\uAC00 \uCEE8\uD14D\uC2A4\uD2B8\uC5D0\uC11C \uBC97\uC5B4\uB098\uAC70\uB098 \uC815\uC758\uB97C \uD3EC\uD568\uD558\uC9C0 \uC5C6\uC2B5\uB2C8\uB2E4! \uC774\uB984 = {0}"},
@@ -886,9 +886,9 @@
{ "optionMatch", " [-match \uC77C\uCE58 \uD328\uD134(\uC77C\uCE58 \uC9C4\uB2E8\uC758 \uACBD\uC6B0)]"},
{ "optionAnyExpr", "\uB610\uB294 XPath \uD45C\uD604\uC2DD\uC774 \uC9C4\uB2E8 \uB364\uD504\uB97C \uC218\uD589\uD569\uB2C8\uB2E4."},
{ "noParsermsg1", "XSL \uD504\uB85C\uC138\uC2A4\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4."},
- { "noParsermsg2", "** \uAD6C\uBB38\uBD84\uC11D\uAE30\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C **"},
+ { "noParsermsg2", "** \uAD6C\uBB38 \uBD84\uC11D\uAE30\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C **"},
{ "noParsermsg3", "\uD074\uB798\uC2A4 \uACBD\uB85C\uB97C \uD655\uC778\uD558\uC2ED\uC2DC\uC624."},
- { "noParsermsg4", "IBM\uC758 Java\uC6A9 XML \uAD6C\uBB38\uBD84\uC11D\uAE30\uAC00 \uC5C6\uC744 \uACBD\uC6B0 \uB2E4\uC74C \uC704\uCE58\uC5D0\uC11C \uB2E4\uC6B4\uB85C\uB4DC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4."},
+ { "noParsermsg4", "IBM\uC758 Java\uC6A9 XML \uAD6C\uBB38 \uBD84\uC11D\uAE30\uAC00 \uC5C6\uC744 \uACBD\uC6B0 \uB2E4\uC74C \uC704\uCE58\uC5D0\uC11C \uB2E4\uC6B4\uB85C\uB4DC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4."},
{ "noParsermsg5", "IBM AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"},
{ "gtone", ">1" },
{ "zero", "0" },
--- a/src/java.xml/share/classes/javax/xml/catalog/CatalogMessages_ja.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/javax/xml/catalog/CatalogMessages_ja.properties Wed Jan 17 12:19:06 2018 +0000
@@ -30,7 +30,7 @@
CircularReference = JAXP09010001: \u5FAA\u74B0\u53C2\u7167\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093: ''{0}''\u3002
# Input or configuration errors
-InvalidCatalog = JAXP09020001: \u30AB\u30BF\u30ED\u30B0\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u8981\u7D20\u306Fcatalog\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+InvalidCatalog = JAXP09020001: \u30AB\u30BF\u30ED\u30B0\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u8981\u7D20\u306F\u30AB\u30BF\u30ED\u30B0\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
InvalidEntryType = JAXP09020002: \u30A8\u30F3\u30C8\u30EA\u30FB\u30BF\u30A4\u30D7''{0}''\u306F\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
UriNotAbsolute = JAXP09020003: \u6307\u5B9A\u3055\u308C\u305FURI ''{0}''\u304C\u7D76\u5BFEURI\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
UriNotValidUrl = JAXP09020004: \u6307\u5B9A\u3057\u305FURI ''{0}''\u306F\u6709\u52B9\u306AURL\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
--- a/src/java.xml/share/classes/javax/xml/catalog/CatalogMessages_ko.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/javax/xml/catalog/CatalogMessages_ko.properties Wed Jan 17 12:19:06 2018 +0000
@@ -30,7 +30,7 @@
CircularReference = JAXP09010001: \uC21C\uD658 \uCC38\uC870\uAC00 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC74C: ''{0}''.
# Input or configuration errors
-InvalidCatalog = JAXP09020001: Catalog\uC758 \uBB38\uC11C \uC694\uC18C\uB294 \uCE74\uD0C8\uB85C\uADF8\uC5EC\uC57C \uD569\uB2C8\uB2E4.
+InvalidCatalog = JAXP09020001: Catalog\uC758 \uBB38\uC11C \uC694\uC18C\uB294 catalog\uC5EC\uC57C \uD569\uB2C8\uB2E4.
InvalidEntryType = JAXP09020002: \uD56D\uBAA9 \uC720\uD615 ''{0}''\uC774(\uAC00) \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
UriNotAbsolute = JAXP09020003: \uC9C0\uC815\uB41C URI ''{0}''\uC774(\uAC00) \uC808\uB300 \uACBD\uB85C\uAC00 \uC544\uB2D9\uB2C8\uB2E4.
UriNotValidUrl = JAXP09020004: \uC9C0\uC815\uB41C URI ''{0}''\uC774(\uAC00) \uBD80\uC801\uD569\uD55C URL\uC785\uB2C8\uB2E4.
--- a/src/java.xml/share/classes/javax/xml/catalog/CatalogMessages_sv.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/java.xml/share/classes/javax/xml/catalog/CatalogMessages_sv.properties Wed Jan 17 12:19:06 2018 +0000
@@ -27,10 +27,10 @@
OtherError = JAXP09000003: Ov\u00E4ntat fel.
# Implementation restriction
-CircularReference = JAXP09010001: Cirkul\u00E4r referens \u00E4r inte till\u00E5ten: ''{0}''.
+CircularReference = JAXP09010001: Cirkelreferens \u00E4r inte till\u00E5ten: ''{0}''.
# Input or configuration errors
-InvalidCatalog = JAXP09020001: Dokumentelementet f\u00F6r en katalog m\u00E5ste vara "catalog".
+InvalidCatalog = JAXP09020001: Dokumentelementet f\u00F6r en katalog m\u00E5ste vara katalog.
InvalidEntryType = JAXP09020002: Posttypen ''{0}'' \u00E4r inte giltig.
UriNotAbsolute = JAXP09020003: Den angivna URI:n, ''{0}'', \u00E4r inte absolut.
UriNotValidUrl = JAXP09020004: Den angivna URI:n, ''{0}'', \u00E4r inte en giltig URL.
--- a/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/AOTBackend.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/AOTBackend.java Wed Jan 17 12:19:06 2018 +0000
@@ -166,7 +166,7 @@
void printCompiledMethod(HotSpotResolvedJavaMethod resolvedMethod, CompilationResult compResult) {
// This is really not installing the method.
- InstalledCode installedCode = codeCache.addCode(resolvedMethod, HotSpotCompiledCodeBuilder.createCompiledCode(codeCache, null, null, compResult), null, null);
+ InstalledCode installedCode = codeCache.addCode(resolvedMethod, HotSpotCompiledCodeBuilder.createCompiledCode(codeCache, resolvedMethod, null, compResult), null, null);
String disassembly = codeCache.disassemble(installedCode);
if (disassembly != null) {
main.printer.printlnDebug(disassembly);
--- a/src/jdk.attach/aix/classes/sun/tools/attach/VirtualMachineImpl.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.attach/aix/classes/sun/tools/attach/VirtualMachineImpl.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015 SAP SE. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -46,9 +46,7 @@
// will not be able to find all Hotspot processes.
// Any changes to this needs to be synchronized with HotSpot.
private static final String tmpdir = "/tmp";
-
- // The patch to the socket file created by the target VM
- String path;
+ String socket_path;
/**
* Attaches to the target VM
@@ -69,8 +67,9 @@
// Find the socket file. If not found then we attempt to start the
// attach mechanism in the target VM by sending it a QUIT signal.
// Then we attempt to find the socket file again.
- path = findSocketFile(pid);
- if (path == null) {
+ File socket_file = new File(tmpdir, ".java_pid" + pid);
+ socket_path = socket_file.getPath();
+ if (!socket_file.exists()) {
File f = createAttachFile(pid);
try {
sendQuitTo(pid);
@@ -86,19 +85,19 @@
try {
Thread.sleep(delay);
} catch (InterruptedException x) { }
- path = findSocketFile(pid);
time_spend += delay;
- if (time_spend > timeout/2 && path == null) {
+ if (time_spend > timeout/2 && !socket_file.exists()) {
// Send QUIT again to give target VM the last chance to react
sendQuitTo(pid);
}
- } while (time_spend <= timeout && path == null);
- if (path == null) {
+ } while (time_spend <= timeout && !socket_file.exists());
+ if (!socket_file.exists()) {
throw new AttachNotSupportedException(
String.format("Unable to open socket file %s: " +
"target process %d doesn't respond within %dms " +
- "or HotSpot VM not loaded", f.getPath(), pid, time_spend));
+ "or HotSpot VM not loaded", socket_path, pid,
+ time_spend));
}
} finally {
f.delete();
@@ -107,14 +106,14 @@
// Check that the file owner/permission to avoid attaching to
// bogus process
- checkPermissions(path);
+ checkPermissions(socket_path);
// Check that we can connect to the process
// - this ensures we throw the permission denied error now rather than
// later when we attempt to enqueue a command.
int s = socket();
try {
- connect(s, path);
+ connect(s, socket_path);
} finally {
close(s);
}
@@ -125,8 +124,8 @@
*/
public void detach() throws IOException {
synchronized (this) {
- if (this.path != null) {
- this.path = null;
+ if (socket_path != null) {
+ socket_path = null;
}
}
}
@@ -144,12 +143,10 @@
assert args.length <= 3; // includes null
// did we detach?
- String p;
synchronized (this) {
- if (this.path == null) {
+ if (socket_path == null) {
throw new IOException("Detached from target VM");
}
- p = this.path;
}
// create UNIX socket
@@ -157,7 +154,7 @@
// connect to target VM
try {
- connect(s, p);
+ connect(s, socket_path);
} catch (IOException x) {
close(s);
throw x;
@@ -264,15 +261,6 @@
}
}
- // Return the socket file for the given process.
- private String findSocketFile(int pid) {
- File f = new File(tmpdir, ".java_pid" + pid);
- if (!f.exists()) {
- return null;
- }
- return f.getPath();
- }
-
// On Solaris/Linux/Aix a simple handshake is used to start the attach mechanism
// if not already started. The client creates a .attach_pid<pid> file in the
// target VM's working directory (or temp directory), and the SIGQUIT handler
--- a/src/jdk.attach/linux/classes/sun/tools/attach/VirtualMachineImpl.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.attach/linux/classes/sun/tools/attach/VirtualMachineImpl.java Wed Jan 17 12:19:06 2018 +0000
@@ -47,10 +47,7 @@
// will not be able to find all Hotspot processes.
// Any changes to this needs to be synchronized with HotSpot.
private static final String tmpdir = "/tmp";
-
- // The patch to the socket file created by the target VM
- String path;
-
+ String socket_path;
/**
* Attaches to the target VM
*/
@@ -73,8 +70,9 @@
// Find the socket file. If not found then we attempt to start the
// attach mechanism in the target VM by sending it a QUIT signal.
// Then we attempt to find the socket file again.
- path = findSocketFile(pid, ns_pid);
- if (path == null) {
+ File socket_file = findSocketFile(pid, ns_pid);
+ socket_path = socket_file.getPath();
+ if (!socket_file.exists()) {
File f = createAttachFile(pid, ns_pid);
try {
sendQuitTo(pid);
@@ -90,19 +88,19 @@
try {
Thread.sleep(delay);
} catch (InterruptedException x) { }
- path = findSocketFile(pid, ns_pid);
time_spend += delay;
- if (time_spend > timeout/2 && path == null) {
+ if (time_spend > timeout/2 && !socket_file.exists()) {
// Send QUIT again to give target VM the last chance to react
sendQuitTo(pid);
}
- } while (time_spend <= timeout && path == null);
- if (path == null) {
+ } while (time_spend <= timeout && !socket_file.exists());
+ if (!socket_file.exists()) {
throw new AttachNotSupportedException(
String.format("Unable to open socket file %s: " +
"target process %d doesn't respond within %dms " +
- "or HotSpot VM not loaded", f.getPath(), pid, time_spend));
+ "or HotSpot VM not loaded", socket_path, pid,
+ time_spend));
}
} finally {
f.delete();
@@ -111,14 +109,14 @@
// Check that the file owner/permission to avoid attaching to
// bogus process
- checkPermissions(path);
+ checkPermissions(socket_path);
// Check that we can connect to the process
// - this ensures we throw the permission denied error now rather than
// later when we attempt to enqueue a command.
int s = socket();
try {
- connect(s, path);
+ connect(s, socket_path);
} finally {
close(s);
}
@@ -129,8 +127,8 @@
*/
public void detach() throws IOException {
synchronized (this) {
- if (this.path != null) {
- this.path = null;
+ if (socket_path != null) {
+ socket_path = null;
}
}
}
@@ -148,12 +146,10 @@
assert args.length <= 3; // includes null
// did we detach?
- String p;
synchronized (this) {
- if (this.path == null) {
+ if (socket_path == null) {
throw new IOException("Detached from target VM");
}
- p = this.path;
}
// create UNIX socket
@@ -161,7 +157,7 @@
// connect to target VM
try {
- connect(s, p);
+ connect(s, socket_path);
} catch (IOException x) {
close(s);
throw x;
@@ -257,8 +253,9 @@
if ((off < 0) || (off > bs.length) || (len < 0) ||
((off + len) > bs.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
- } else if (len == 0)
+ } else if (len == 0) {
return 0;
+ }
return VirtualMachineImpl.read(s, bs, off, len);
}
@@ -269,16 +266,12 @@
}
// Return the socket file for the given process.
- private String findSocketFile(int pid, int ns_pid) {
+ private File findSocketFile(int pid, int ns_pid) {
// A process may not exist in the same mount namespace as the caller.
// Instead, attach relative to the target root filesystem as exposed by
// procfs regardless of namespaces.
String root = "/proc/" + pid + "/root/" + tmpdir;
- File f = new File(root, ".java_pid" + ns_pid);
- if (!f.exists()) {
- return null;
- }
- return f.getPath();
+ return new File(root, ".java_pid" + ns_pid);
}
// On Solaris/Linux a simple handshake is used to start the attach mechanism
--- a/src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -45,9 +45,7 @@
// the latter can be changed by the user.
// Any changes to this needs to be synchronized with HotSpot.
private static final String tmpdir;
-
- // The patch to the socket file created by the target VM
- String path;
+ String socket_path;
/**
* Attaches to the target VM
@@ -68,8 +66,9 @@
// Find the socket file. If not found then we attempt to start the
// attach mechanism in the target VM by sending it a QUIT signal.
// Then we attempt to find the socket file again.
- path = findSocketFile(pid);
- if (path == null) {
+ File socket_file = new File(tmpdir, ".java_pid" + pid);
+ socket_path = socket_file.getPath();
+ if (!socket_file.exists()) {
File f = createAttachFile(pid);
try {
sendQuitTo(pid);
@@ -85,19 +84,19 @@
try {
Thread.sleep(delay);
} catch (InterruptedException x) { }
- path = findSocketFile(pid);
time_spend += delay;
- if (time_spend > timeout/2 && path == null) {
+ if (time_spend > timeout/2 && !socket_file.exists()) {
// Send QUIT again to give target VM the last chance to react
sendQuitTo(pid);
}
- } while (time_spend <= timeout && path == null);
- if (path == null) {
+ } while (time_spend <= timeout && !socket_file.exists());
+ if (!socket_file.exists()) {
throw new AttachNotSupportedException(
String.format("Unable to open socket file %s: " +
- "target process %d doesn't respond within %dms " +
- "or HotSpot VM not loaded", f.getPath(), pid, time_spend));
+ "target process %d doesn't respond within %dms " +
+ "or HotSpot VM not loaded", socket_path,
+ pid, time_spend));
}
} finally {
f.delete();
@@ -106,14 +105,14 @@
// Check that the file owner/permission to avoid attaching to
// bogus process
- checkPermissions(path);
+ checkPermissions(socket_path);
// Check that we can connect to the process
// - this ensures we throw the permission denied error now rather than
// later when we attempt to enqueue a command.
int s = socket();
try {
- connect(s, path);
+ connect(s, socket_path);
} finally {
close(s);
}
@@ -124,8 +123,8 @@
*/
public void detach() throws IOException {
synchronized (this) {
- if (this.path != null) {
- this.path = null;
+ if (socket_path != null) {
+ socket_path = null;
}
}
}
@@ -143,12 +142,10 @@
assert args.length <= 3; // includes null
// did we detach?
- String p;
synchronized (this) {
- if (this.path == null) {
+ if (socket_path == null) {
throw new IOException("Detached from target VM");
}
- p = this.path;
}
// create UNIX socket
@@ -156,7 +153,7 @@
// connect to target VM
try {
- connect(s, p);
+ connect(s, socket_path);
} catch (IOException x) {
close(s);
throw x;
@@ -264,14 +261,6 @@
}
}
- // Return the socket file for the given process.
- // Checks temp directory for .java_pid<pid>.
- private String findSocketFile(int pid) {
- String fn = ".java_pid" + pid;
- File f = new File(tmpdir, fn);
- return f.exists() ? f.getPath() : null;
- }
-
/*
* Write/sends the given to the target VM. String is transmitted in
* UTF-8 encoding.
@@ -282,7 +271,7 @@
try {
b = s.getBytes("UTF-8");
} catch (java.io.UnsupportedEncodingException x) {
- throw new InternalError();
+ throw new InternalError(x);
}
VirtualMachineImpl.write(fd, b, 0, b.length);
}
--- a/src/jdk.attach/solaris/classes/sun/tools/attach/VirtualMachineImpl.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.attach/solaris/classes/sun/tools/attach/VirtualMachineImpl.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -47,6 +47,7 @@
// door descriptor;
private int fd = -1;
+ String socket_path;
/**
* Attaches to the target VM
@@ -60,7 +61,7 @@
try {
pid = Integer.parseInt(vmid);
} catch (NumberFormatException x) {
- throw new AttachNotSupportedException("invalid process identifier");
+ throw new AttachNotSupportedException("Invalid process identifier");
}
// Opens the door file to the target VM. If the file is not
@@ -100,7 +101,7 @@
throw new AttachNotSupportedException(
String.format("Unable to open door %s: " +
"target process %d doesn't respond within %dms " +
- "or HotSpot VM not loaded", f.getPath(), pid, time_spend));
+ "or HotSpot VM not loaded", socket_path, pid, time_spend));
}
} finally {
f.delete();
@@ -210,13 +211,13 @@
// The door is attached to .java_pid<pid> in the temporary directory.
private int openDoor(int pid) throws IOException {
- String path = tmpdir + "/.java_pid" + pid;;
- fd = open(path);
+ socket_path = tmpdir + "/.java_pid" + pid;
+ fd = open(socket_path);
// Check that the file owner/permission to avoid attaching to
// bogus process
try {
- checkPermissions(path);
+ checkPermissions(socket_path);
} catch (IOException ioe) {
close(fd);
throw ioe;
--- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/DocLint.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/DocLint.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -37,8 +37,10 @@
import javax.tools.StandardLocation;
import com.sun.source.doctree.DocCommentTree;
+import com.sun.source.tree.BlockTree;
import com.sun.source.tree.ClassTree;
import com.sun.source.tree.CompilationUnitTree;
+import com.sun.source.tree.LambdaExpressionTree;
import com.sun.source.tree.ModuleTree;
import com.sun.source.tree.PackageTree;
import com.sun.source.tree.MethodTree;
@@ -398,6 +400,7 @@
visitDecl(tree, null);
return super.visitPackage(tree, ignore);
}
+
@Override @DefinedBy(Api.COMPILER_TREE)
public Void visitClass(ClassTree tree, Void ignore) {
visitDecl(tree, tree.getSimpleName());
@@ -407,7 +410,6 @@
@Override @DefinedBy(Api.COMPILER_TREE)
public Void visitMethod(MethodTree tree, Void ignore) {
visitDecl(tree, tree.getName());
- //return super.visitMethod(tree, ignore);
return null;
}
@@ -431,6 +433,16 @@
return super.visitCompilationUnit(node, p);
}
+ @Override @DefinedBy(Api.COMPILER_TREE)
+ public Void visitBlock(BlockTree tree, Void ignore) {
+ return null;
+ }
+
+ @Override @DefinedBy(Api.COMPILER_TREE)
+ public Void visitLambdaExpression(LambdaExpressionTree tree, Void ignore) {
+ return null;
+ }
+
}
// </editor-fold>
--- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_ja.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_ja.properties Wed Jan 17 12:19:06 2018 +0000
@@ -45,6 +45,7 @@
dc.invalid.param = \u7121\u52B9\u306A@param\u306E\u4F7F\u7528
dc.invalid.provides = \u7121\u52B9\u306A@provides\u306E\u4F7F\u7528
dc.invalid.return = \u7121\u52B9\u306A@return\u306E\u4F7F\u7528
+dc.invalid.summary = \u7121\u52B9\u306A@summary\u306E\u4F7F\u7528
dc.invalid.throws = \u7121\u52B9\u306A@throws\u306E\u4F7F\u7528
dc.invalid.uses = \u7121\u52B9\u306A@uses\u306E\u4F7F\u7528
dc.invalid.uri = \u7121\u52B9\u306AURI: "{0}"
--- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -45,6 +45,7 @@
dc.invalid.param = @param \u7684\u7528\u6CD5\u65E0\u6548
dc.invalid.provides = @provides \u7684\u7528\u6CD5\u65E0\u6548
dc.invalid.return = @return \u7684\u7528\u6CD5\u65E0\u6548
+dc.invalid.summary = @summary \u7684\u7528\u6CD5\u65E0\u6548
dc.invalid.throws = @throws \u7684\u7528\u6CD5\u65E0\u6548
dc.invalid.uses = @uses \u7684\u7528\u6CD5\u65E0\u6548
dc.invalid.uri = URI \u65E0\u6548: "{0}"
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotationPosition.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotationPosition.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -312,6 +312,7 @@
Assert.check(!hasExceptionIndex(), "exception_index already set");
Assert.check(exception_index >= 0, "Expected a valid index into exception table");
this.exception_index = exception_index;
+ this.isValidOffset = true;
}
public boolean hasCatchType() {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -4743,9 +4743,8 @@
// Check for proper use of serialVersionUID
if (env.info.lint.isEnabled(LintCategory.SERIAL)
&& isSerializable(c.type)
- && (c.flags() & Flags.ENUM) == 0
- && !c.isAnonymous()
- && checkForSerial(c)) {
+ && (c.flags() & (Flags.ENUM | Flags.INTERFACE)) == 0
+ && !c.isAnonymous()) {
checkSerialVersionUID(tree, c);
}
if (allowTypeAnnos) {
@@ -4757,17 +4756,6 @@
}
}
// where
- boolean checkForSerial(ClassSymbol c) {
- if ((c.flags() & ABSTRACT) == 0) {
- return true;
- } else {
- return c.members().anyMatch(anyNonAbstractOrDefaultMethod);
- }
- }
-
- public static final Filter<Symbol> anyNonAbstractOrDefaultMethod = s ->
- s.kind == MTH && (s.flags() & (DEFAULT | ABSTRACT)) != ABSTRACT;
-
/** get a diagnostic position for an attribute of Type t, or null if attribute missing */
private DiagnosticPosition getDiagnosticPosition(JCClassDecl tree, Type t) {
for(List<JCAnnotation> al = tree.mods.annotations; !al.isEmpty(); al = al.tail) {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java Wed Jan 17 12:19:06 2018 +0000
@@ -3464,6 +3464,7 @@
types.hasSameArgs(sym.type, byName.type) ||
types.hasSameArgs(types.erasure(sym.type), types.erasure(byName.type)))) {
if ((sym.flags() & VARARGS) != (byName.flags() & VARARGS)) {
+ sym.flags_field |= CLASH;
varargsDuplicateError(pos, sym, byName);
return true;
} else if (sym.kind == MTH && !types.hasSameArgs(sym.type, byName.type, false)) {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -3226,7 +3226,7 @@
JCVariableDecl indexdef = make.VarDef(index, make.Literal(INT, 0));
indexdef.init.type = indexdef.type = syms.intType.constType(0);
- List<JCStatement> loopinit = List.of(lencachedef, indexdef);
+ List<JCStatement> loopinit = List.of(arraycachedef, lencachedef, indexdef);
JCBinary cond = makeBinary(LT, make.Ident(index), make.Ident(lencache));
JCExpressionStatement step = make.Exec(makeUnary(PREINC, make.Ident(index)));
@@ -3236,20 +3236,18 @@
make.Ident(index)).setType(elemtype);
JCVariableDecl loopvardef = (JCVariableDecl)make.VarDef(tree.var.mods,
tree.var.name,
- tree.var.vartype, loopvarinit).setType(tree.var.type);
+ tree.var.vartype,
+ loopvarinit).setType(tree.var.type);
loopvardef.sym = tree.var.sym;
-
- JCBlock body = make.Block(0, List.of(loopvardef, tree.body));
-
- arraycachedef = translate(arraycachedef);
+ JCBlock body = make.
+ Block(0, List.of(loopvardef, tree.body));
+
result = translate(make.
ForLoop(loopinit,
cond,
List.of(step),
body));
patchTargets(body, tree, result);
- JCStatement nullAssignToArr = make.Assignment(arraycache, make.Literal(BOT, null).setType(syms.botType));
- result = make.Block(0, List.of(arraycachedef, (JCStatement)result, nullAssignToArr));
}
/** Patch up break and continue targets. */
private void patchTargets(JCTree body, final JCTree src, final JCTree dest) {
@@ -3303,7 +3301,7 @@
types.erasure(types.asSuper(iterator.type.getReturnType(), syms.iteratorType.tsym)),
currentMethodSym);
- JCStatement init = make.
+ JCStatement init = make.
VarDef(itvar, make.App(make.Select(tree.expr, iterator)
.setType(types.erasure(iterator.type))));
@@ -3328,15 +3326,12 @@
indexDef.sym = tree.var.sym;
JCBlock body = make.Block(0, List.of(indexDef, tree.body));
body.endpos = TreeInfo.endPos(tree.body);
- init = translate(init);
result = translate(make.
- ForLoop(List.nil(),
+ ForLoop(List.of(init),
cond,
List.nil(),
body));
patchTargets(body, tree, result);
- JCStatement nullAssignToIterator = make.Assignment(itvar, make.Literal(BOT, null).setType(syms.botType));
- result = make.Block(0, List.of(init, (JCStatement)result, nullAssignToIterator));
}
public void visitVarDef(JCVariableDecl tree) {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java Wed Jan 17 12:19:06 2018 +0000
@@ -1618,19 +1618,30 @@
if ((m1.flags() & BRIDGE) != (m2.flags() & BRIDGE))
return ((m1.flags() & BRIDGE) != 0) ? m2 : m1;
+ if (m1.baseSymbol() == m2.baseSymbol()) {
+ // this is the same imported symbol which has been cloned twice.
+ // Return the first one (either will do).
+ return m1;
+ }
+
// if one overrides or hides the other, use it
TypeSymbol m1Owner = (TypeSymbol)m1.owner;
TypeSymbol m2Owner = (TypeSymbol)m2.owner;
- if (types.asSuper(m1Owner.type, m2Owner) != null &&
- ((m1.owner.flags_field & INTERFACE) == 0 ||
- (m2.owner.flags_field & INTERFACE) != 0) &&
- m1.overrides(m2, m1Owner, types, false))
- return m1;
- if (types.asSuper(m2Owner.type, m1Owner) != null &&
- ((m2.owner.flags_field & INTERFACE) == 0 ||
- (m1.owner.flags_field & INTERFACE) != 0) &&
- m2.overrides(m1, m2Owner, types, false))
- return m2;
+ // the two owners can never be the same if the target methods are compiled from source,
+ // but we need to protect against cases where the methods are defined in some classfile
+ // and make sure we issue an ambiguity error accordingly (by skipping the logic below).
+ if (m1Owner != m2Owner) {
+ if (types.asSuper(m1Owner.type, m2Owner) != null &&
+ ((m1.owner.flags_field & INTERFACE) == 0 ||
+ (m2.owner.flags_field & INTERFACE) != 0) &&
+ m1.overrides(m2, m1Owner, types, false))
+ return m1;
+ if (types.asSuper(m2Owner.type, m1Owner) != null &&
+ ((m2.owner.flags_field & INTERFACE) == 0 ||
+ (m1.owner.flags_field & INTERFACE) != 0) &&
+ m2.overrides(m1, m2Owner, types, false))
+ return m2;
+ }
boolean m1Abstract = (m1.flags() & ABSTRACT) != 0;
boolean m2Abstract = (m2.flags() & ABSTRACT) != 0;
if (m1Abstract && !m2Abstract) return m2;
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1678,7 +1678,7 @@
try {
writeClassFile(out, c);
if (verbose)
- log.printVerbose("wrote.file", outFile);
+ log.printVerbose("wrote.file", outFile.getName());
out.close();
out = null;
} finally {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -2100,15 +2100,19 @@
}
private void fillLocalVarPosition(LocalVar lv) {
- if (lv == null || lv.sym == null || !lv.sym.hasTypeAnnotations())
+ if (lv == null || lv.sym == null || lv.sym.isExceptionParameter()|| !lv.sym.hasTypeAnnotations())
return;
+ LocalVar.Range widestRange = lv.getWidestRange();
for (Attribute.TypeCompound ta : lv.sym.getRawTypeAttributes()) {
TypeAnnotationPosition p = ta.position;
- LocalVar.Range widestRange = lv.getWidestRange();
- p.lvarOffset = new int[] { (int)widestRange.start_pc };
- p.lvarLength = new int[] { (int)widestRange.length };
- p.lvarIndex = new int[] { (int)lv.reg };
- p.isValidOffset = true;
+ if (widestRange.closed() && widestRange.length > 0) {
+ p.lvarOffset = new int[] { (int)widestRange.start_pc };
+ p.lvarLength = new int[] { (int)widestRange.length };
+ p.lvarIndex = new int[] { (int)lv.reg };
+ p.isValidOffset = true;
+ } else {
+ p.isValidOffset = false;
+ }
}
}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties Wed Jan 17 12:19:06 2018 +0000
@@ -28,12 +28,14 @@
# values.
# The simple types currently in use are:
#
+# annotation annotation compound
# boolean true or false
# diagnostic a sub-message; see compiler.misc.*
# fragment similar to 'message segment', but with more specific type
# modifier a Java modifier; e.g. public, private, protected
# file a file URL
# file object a file URL - similar to 'file' but typically used for source/class files, hence more specific
+# flag a Flags.Flag instance
# name a name, typically a Java identifier
# number an integer
# option name the name of a command line option
@@ -49,8 +51,9 @@
#
# The following compound types are also used:
#
+# collection of X a comma-separated collection of items; e.g. collection of type
# list of X a comma-separated list of items; e.g. list of type
-# set of X a comma-separated collection of items; e.g. set of modifier
+# set of X a comma-separated set of items; e.g. set of modifier
#
# These may be composed:
#
@@ -59,7 +62,7 @@
# The following type aliases are supported:
#
# message segment --> diagnostic or fragment
-# file name --> file or file object
+# file name --> file, path or file object
#
# Custom comments are supported in parenthesis i.e.
#
@@ -83,20 +86,22 @@
compiler.err.abstract.meth.cant.have.body=abstract\u30E1\u30BD\u30C3\u30C9\u304C\u672C\u4F53\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+# 0: kind name, 1: symbol
compiler.err.already.annotated={0} {1}\u306F\u6CE8\u91C8\u304C\u4ED8\u3044\u3066\u3044\u307E\u3059
-# 0: symbol kind, 1: symbol, 2: symbol kind, 3: symbol
+# 0: kind name, 1: symbol, 2: kind name, 3: symbol
compiler.err.already.defined={0} {1}\u306F\u3059\u3067\u306B{2} {3}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
-# 0: symbol kind, 1: symbol, 2: symbol kind, 3: symbol kind, 4: symbol
+# 0: kind name, 1: symbol, 2: kind name, 3: kind name, 4: symbol
compiler.err.already.defined.in.clinit={0} {1}\u306F\u3059\u3067\u306B{3} {4}\u306E{2}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
-# 0: string
+# 0: symbol
compiler.err.already.defined.single.import=\u540C\u3058\u5358\u7D14\u540D\u306E\u578B\u304C{0}\u306E\u5358\u4E00\u578B\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u3088\u3063\u3066\u3059\u3067\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
-# 0: string
+# 0: symbol
compiler.err.already.defined.static.single.import=\u540C\u3058\u5358\u7D14\u540D\u306E\u578B\u304C{0}\u306Estatic\u5358\u4E00\u578B\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u3088\u3063\u3066\u3059\u3067\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
+# 0: symbol
compiler.err.already.defined.this.unit={0}\u306F\u30B3\u30F3\u30D1\u30A4\u30EB\u5358\u4F4D\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
# 0: type, 1: list of name
@@ -121,6 +126,8 @@
compiler.err.annotation.value.not.allowable.type=\u4F7F\u7528\u3067\u304D\u306A\u3044\u578B\u306E\u6CE8\u91C8\u306E\u5024\u3067\u3059
+compiler.err.expression.not.allowable.as.annotation.value=\u5F0F\u304C\u6CE8\u91C8\u306E\u5024\u3068\u3057\u3066\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093
+
compiler.err.anon.class.impl.intf.no.args=\u540D\u524D\u306E\u306A\u3044\u30AF\u30E9\u30B9\u304C\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u5B9F\u88C5\u3057\u3066\u3044\u307E\u3059\u3002\u5F15\u6570\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
compiler.err.anon.class.impl.intf.no.typeargs=\u540D\u524D\u306E\u306A\u3044\u30AF\u30E9\u30B9\u304C\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u5B9F\u88C5\u3057\u3066\u3044\u307E\u3059\u3002\u578B\u5F15\u6570\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
@@ -134,6 +141,8 @@
compiler.err.array.dimension.missing=\u914D\u5217\u306E\u5927\u304D\u3055\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+compiler.err.illegal.array.creation.both.dimension.and.initialization=\u6B21\u5143\u5F0F\u3068\u521D\u671F\u5316\u306E\u4E21\u65B9\u3092\u4F7F\u7528\u3057\u305F\u914D\u5217\u306E\u4F5C\u6210\u306F\u7121\u52B9\u3067\u3059
+
# 0: type
compiler.err.array.req.but.found=\u914D\u5217\u304C\u8981\u6C42\u3055\u308C\u307E\u3057\u305F\u304C\u3001{0}\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F
@@ -159,10 +168,10 @@
# 0: symbol kind, 1: name, 2: list of type
compiler.misc.cant.apply.symbols={1}\u306B\u9069\u5207\u306A{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093({2})
-# 0: symbol kind, 1: symbol
+# 0: kind name, 1: symbol
compiler.misc.no.abstracts={0} {1}\u3067\u62BD\u8C61\u30E1\u30BD\u30C3\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-# 0: symbol kind, 1: symbol
+# 0: kind name, 1: symbol
compiler.misc.incompatible.abstracts={0} {1}\u3067\u8907\u6570\u306E\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u306A\u3044\u62BD\u8C61\u30E1\u30BD\u30C3\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F
compiler.err.bad.functional.intf.anno=\u4E88\u671F\u3057\u306A\u3044@FunctionalInterface\u6CE8\u91C8
@@ -179,10 +188,10 @@
# 0: symbol, 1: message segment
compiler.misc.not.a.functional.intf.1={0}\u306F\u6A5F\u80FD\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\n{1}
-# 0: symbol, 1: symbol kind, 2: symbol
+# 0: type, 1: kind name, 2: symbol
compiler.misc.invalid.generic.lambda.target=\u30E9\u30E0\u30C0\u5F0F\u306E\u6A5F\u80FD\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u304C\u7121\u52B9\u3067\u3059\n{1} {2}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306F\u6C4E\u7528\u3067\u3059
-# 0: symbol kind, 1: symbol
+# 0: kind name, 1: symbol
compiler.misc.incompatible.descs.in.functional.intf={0} {1}\u3067\u4E0D\u9069\u5408\u306A\u6A5F\u80FD\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F
# 0: name, 1: list of type, 2: type, 3: list of type
@@ -200,7 +209,7 @@
# 0: symbol or type
compiler.misc.not.an.intf.component=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30FB\u30BF\u30A4\u30D7{0}\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093
-# 0: symbol kind, 1: message segment
+# 0: kind name, 1: message segment
compiler.err.invalid.mref={0}\u53C2\u7167\u304C\u7121\u52B9\u3067\u3059\n{1}
# 0: symbol kind, 1: message segment
@@ -231,10 +240,12 @@
compiler.err.cant.extend.intf.annotation=@interfaces\u3067\u306F''extends''\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093
+compiler.err.annotation.decl.not.allowed.here=\u3053\u3053\u3067\u306F\u6CE8\u91C8\u578B\u306E\u5BA3\u8A00\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093
+
# 0: symbol
compiler.err.cant.inherit.from.final=final {0}\u304B\u3089\u306F\u7D99\u627F\u3067\u304D\u307E\u305B\u3093
-# 0: symbol
+# 0: symbol or string
compiler.err.cant.ref.before.ctor.called=\u30B9\u30FC\u30D1\u30FC\u30BF\u30A4\u30D7\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u547C\u51FA\u3057\u524D\u306F{0}\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093
compiler.err.cant.select.static.class.from.param.type=\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3055\u308C\u305F\u578B\u304B\u3089static\u30AF\u30E9\u30B9\u3092\u9078\u629E\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
@@ -244,7 +255,7 @@
compiler.err.catch.without.try=''catch''\u3078\u306E''try''\u304C\u3042\u308A\u307E\u305B\u3093
-# 0: symbol kind, 1: symbol
+# 0: kind name, 1: symbol
compiler.err.clash.with.pkg.of.same.name={0} {1}\u306F\u540C\u540D\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u3068\u7AF6\u5408\u3057\u307E\u3059
compiler.err.class.not.allowed=\u30AF\u30E9\u30B9\u3001\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u307E\u305F\u306F\u5217\u6319\u578B\u306E\u5BA3\u8A00\u3092\u3053\u3053\u3067\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
@@ -253,19 +264,19 @@
compiler.err.cont.outside.loop=continue\u304C\u30EB\u30FC\u30D7\u306E\u5916\u306B\u3042\u308A\u307E\u3059
-# 0: symbol
+# 0: symbol or type
compiler.err.cyclic.inheritance={0}\u3092\u542B\u3080\u7D99\u627F\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059
# 0: symbol
compiler.err.cyclic.annotation.element=\u8981\u7D20{0}\u306E\u578B\u304C\u30EB\u30FC\u30D7\u3057\u3066\u3044\u307E\u3059
-# 0: unused
+# 0: symbol
compiler.err.call.to.super.not.allowed.in.enum.ctor=\u5217\u6319\u578B\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3067\u306F\u3001\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u306E\u547C\u51FA\u3057\u306F\u3067\u304D\u307E\u305B\u3093
# 0: type
compiler.err.no.superclass={0}\u306B\u306F\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u304C\u3042\u308A\u307E\u305B\u3093\u3002
-# 0: symbol, 1: type, 2: symbol, 3: type, 4: unused
+# 0: symbol, 1: type, 2: symbol, 3: type, 4: type
compiler.err.concrete.inheritance.conflict={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u3068{3}\u306E{2}\u306F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u304B\u3089\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u3059
compiler.err.default.allowed.in.intf.annotation.member=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u6CE8\u91C8\u578B\u306E\u5BA3\u8A00\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059
@@ -279,10 +290,10 @@
# 0: name, 1: type
compiler.err.duplicate.annotation.member.value=\u6CE8\u91C8@{1}\u306B\u91CD\u8907\u3057\u305F\u8981\u7D20''{0}''\u304C\u3042\u308A\u307E\u3059\u3002
-# 0: name, 1: unused
+# 0: type
compiler.err.duplicate.annotation.missing.container={0}\u306F\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u6CE8\u91C8\u578B\u3067\u306F\u3042\u308A\u307E\u305B\u3093
-# 0: type, 1: unused
+# 0: symbol
compiler.err.invalid.repeatable.annotation=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: {0}\u306F\u7121\u52B9\u306A@Repeatable\u6CE8\u91C8\u3067\u6CE8\u91C8\u4ED8\u3051\u3055\u308C\u3066\u3044\u307E\u3059
# 0: symbol or type
@@ -294,13 +305,13 @@
# 0: type
compiler.err.invalid.repeatable.annotation.invalid.value={0}\u306F\u6709\u52B9\u306A@Repeatable\u3067\u306F\u3042\u308A\u307E\u305B\u3093: \u5024\u8981\u7D20\u304C\u7121\u52B9\u3067\u3059
-# 0: symbol or type, 1: unused, 2: type
+# 0: symbol or type, 1: type, 2: type
compiler.err.invalid.repeatable.annotation.value.return=\u5305\u542B\u3059\u308B\u6CE8\u91C8\u578B({0})\u306F\u578B{2}\u306E\u8981\u7D20''value''\u3092\u5BA3\u8A00\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
# 0: symbol or type, 1: symbol
compiler.err.invalid.repeatable.annotation.elem.nondefault=\u5305\u542B\u3059\u308B\u6CE8\u91C8\u578B{0}\u306B\u306F\u8981\u7D20{1}\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-# 0: symbol, 1: unused, 2: symbol, 3: unused
+# 0: symbol, 1: string, 2: symbol, 3: string
compiler.err.invalid.repeatable.annotation.retention=\u5305\u542B\u3059\u308B\u6CE8\u91C8\u578B({0})\u306E\u4FDD\u6709\u304C\u3001\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u6CE8\u91C8\u578B({2})\u306E\u4FDD\u6709\u3088\u308A\u77ED\u304F\u306A\u3063\u3066\u3044\u307E\u3059
# 0: symbol, 1: symbol
@@ -390,7 +401,7 @@
# 0: string, 1: string
compiler.err.illegal.char.for.encoding=\u3053\u306E\u6587\u5B57(0x{0})\u306F\u3001\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0{1}\u306B\u30DE\u30C3\u30D7\u3067\u304D\u307E\u305B\u3093
-# 0: set of modifier, 1: set of modifier
+# 0: set of flag, 1: set of flag
compiler.err.illegal.combination.of.modifiers=\u4FEE\u98FE\u5B50{0}\u3068{1}\u306E\u7D44\u5408\u305B\u306F\u4E0D\u6B63\u3067\u3059
compiler.err.illegal.enum.static.ref=\u521D\u671F\u5316\u5B50\u304B\u3089static\u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u53C2\u7167\u304C\u4E0D\u6B63\u3067\u3059
@@ -399,7 +410,7 @@
compiler.err.illegal.forward.ref=\u524D\u65B9\u53C2\u7167\u304C\u4E0D\u6B63\u3067\u3059
-# 0: symbol, 1: string
+# 0: symbol, 1: object
compiler.err.not.in.profile={0}\u306F\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB''{1}''\u3067\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
# 0: symbol
@@ -432,6 +443,8 @@
compiler.err.illegal.start.of.type=\u578B\u306E\u958B\u59CB\u304C\u4E0D\u6B63\u3067\u3059
+compiler.err.illegal.parenthesized.expression=\u30AB\u30C3\u30B3\u5185\u306E\u5F0F\u304C\u4E0D\u6B63\u3067\u3059
+
compiler.err.illegal.unicode.esc=Unicode\u30A8\u30B9\u30B1\u30FC\u30D7\u304C\u4E0D\u6B63\u3067\u3059
# 0: symbol
@@ -461,8 +474,7 @@
compiler.err.intf.meth.cant.have.body=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u62BD\u8C61\u30E1\u30BD\u30C3\u30C9\u304C\u672C\u4F53\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-# 0: symbol
-compiler.err.invalid.annotation.member.type=\u6CE8\u91C8\u578B\u306E\u8981\u7D20{0}\u306E\u578B\u304C\u7121\u52B9\u3067\u3059
+compiler.err.invalid.annotation.member.type=\u6CE8\u91C8\u578B\u8981\u7D20\u306E\u578B\u304C\u7121\u52B9\u3067\u3059
compiler.err.invalid.binary.number=2\u9032\u6570\u5B57\u306F\u5C11\u306A\u304F\u3068\u30821\u6841\u306E2\u9032\u6570\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
@@ -517,22 +529,25 @@
compiler.err.limit.string=\u5B9A\u6570\u6587\u5B57\u5217\u304C\u9577\u3059\u304E\u307E\u3059
+# 0: string
compiler.err.limit.string.overflow=\u6587\u5B57\u5217"{0}..."\u306EUTF8\u8868\u73FE\u304C\u3001\u5B9A\u6570\u30D7\u30FC\u30EB\u306B\u5BFE\u3057\u3066\u9577\u3059\u304E\u307E\u3059
compiler.err.malformed.fp.lit=\u6D6E\u52D5\u5C0F\u6570\u70B9\u30EA\u30C6\u30E9\u30EB\u304C\u4E0D\u6B63\u3067\u3059
compiler.err.method.does.not.override.superclass=\u30E1\u30BD\u30C3\u30C9\u306F\u30B9\u30FC\u30D1\u30FC\u30BF\u30A4\u30D7\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u307E\u305F\u306F\u5B9F\u88C5\u3057\u307E\u305B\u3093
+compiler.err.static.methods.cannot.be.annotated.with.override=static\u30E1\u30BD\u30C3\u30C9\u306F@Override\u3067\u6CE8\u91C8\u4ED8\u3051\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
compiler.err.missing.meth.body.or.decl.abstract=\u30E1\u30BD\u30C3\u30C9\u672C\u4F53\u304C\u306A\u3044\u304B\u3001abstract\u3068\u3057\u3066\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059
compiler.err.missing.ret.stmt=return\u6587\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-# 0: unused
+# 0: type
compiler.misc.missing.ret.val=\u623B\u308A\u5024\u304C\u3042\u308A\u307E\u305B\u3093
compiler.misc.unexpected.ret.val=\u4E88\u671F\u3057\u306A\u3044\u623B\u308A\u5024
-# 0: set of modifier
+# 0: set of flag
compiler.err.mod.not.allowed.here=\u4FEE\u98FE\u5B50{0}\u3092\u3053\u3053\u3067\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
compiler.err.intf.not.allowed.here=\u3053\u3053\u3067\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093
@@ -542,11 +557,11 @@
# 0: symbol, 1: symbol
compiler.err.name.clash.same.erasure=\u540D\u524D\u304C\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002{0}\u3068{1}\u306F\u524A\u9664\u5F8C\u306E\u540D\u524D\u304C\u540C\u3058\u3067\u3059
-# 0: symbol, 1: symbol, 2: symbol, 3: symbol, 4: unused, 5: unused
-compiler.err.name.clash.same.erasure.no.override=\u540D\u524D\u304C\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002{1}\u306E{0}\u3068{3}\u306E{2}\u306F\u307E\u3060\u4ED6\u65B9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u305B\u3093\u304C\u3001\u524A\u9664\u5F8C\u306E\u540D\u524D\u304C\u540C\u3058\u3067\u3059
-
-# 0: symbol, 1: symbol, 2: symbol, 3: symbol, 4: symbol, 5: symbol
-compiler.err.name.clash.same.erasure.no.override.1=\u540D\u524D\u304C\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002{1}\u306E{0}\u306E\u3069\u3061\u3089\u3082\u3001\u4ED6\u65B9\u306E\u6700\u521D\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u307E\u3060\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u305B\u3093\u304C\u3001\u524A\u9664\u5F8C\u306E\u540D\u524D\u304C\u5225\u306E\u30E1\u30BD\u30C3\u30C9\u3068\u540C\u3058\u30E1\u30BD\u30C3\u30C9\u3092\n\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059\u3002\u6700\u521D\u306E\u30E1\u30BD\u30C3\u30C9: {3}\u306E{2}\n2\u756A\u76EE\u306E\u30E1\u30BD\u30C3\u30C9: {5}\u306E{4}
+# 0: name, 1: list of type, 2: symbol, 3: name, 4: list of type, 5: symbol
+compiler.err.name.clash.same.erasure.no.override=\u540D\u524D\u304C\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002{2}\u306E{0}({1})\u3068{5}\u306E{3}({4})\u306F\u307E\u3060\u4ED6\u65B9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u305B\u3093\u304C\u3001\u524A\u9664\u5F8C\u306E\u540D\u524D\u304C\u540C\u3058\u3067\u3059
+
+# 0: string, 1: name, 2: name, 3: list of type, 4: symbol, 5: name, 6: list of type, 7: symbol
+compiler.err.name.clash.same.erasure.no.override.1=\u540D\u524D\u304C\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002{0} {1}\u306F\u307E\u3060\u4ED6\u65B9\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u305B\u3093\u304C\u3001\u524A\u9664\u5F8C\u306E\u540D\u524D\u304C\u540C\u30582\u3064\u306E\u30E1\u30BD\u30C3\u30C9\u304C\u3042\u308A\u307E\u3059\n\u6700\u521D\u306E\u30E1\u30BD\u30C3\u30C9: {4}\u306E{2}({3})\n2\u756A\u76EE\u306E\u30E1\u30BD\u30C3\u30C9: {7}\u306E{5}({6})
# 0: symbol, 1: symbol, 2: symbol, 3: symbol
compiler.err.name.clash.same.erasure.no.hide=\u540D\u524D\u304C\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002{1}\u306E{0}\u3068{3}\u306E{2}\u306F\u307E\u3060\u4ED6\u65B9\u3092\u975E\u8868\u793A\u306B\u3057\u3066\u3044\u307E\u305B\u3093\u304C\u3001\u524A\u9664\u5F8C\u306E\u540D\u524D\u304C\u540C\u3058\u3067\u3059
@@ -564,18 +579,18 @@
compiler.misc.conditional.target.cant.be.void=\u6761\u4EF6\u5F0F\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u578B\u306Fvoid\u306B\u3067\u304D\u307E\u305B\u3093
-# 0: type
+# 0: message segment
compiler.misc.incompatible.ret.type.in.lambda=\u30E9\u30E0\u30C0\u5F0F\u306E\u623B\u308A\u578B\u304C\u4E0D\u6B63\u3067\u3059\n{0}
compiler.misc.stat.expr.expected=\u30E9\u30E0\u30C0\u30FB\u30DC\u30C7\u30A3\u304Cvoid\u6A5F\u80FD\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3068\u4E92\u63DB\u6027\u304C\u3042\u308A\u307E\u305B\u3093\n(\u30D6\u30ED\u30C3\u30AF\u306E\u30E9\u30E0\u30C0\u30FB\u30DC\u30C7\u30A3\u306E\u4F7F\u7528\u3092\u691C\u8A0E\u3059\u308B\u304B\u3001\u304B\u308F\u308A\u306B\u6587\u306E\u5F0F\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-# 0: type
+# 0: message segment
compiler.misc.incompatible.ret.type.in.mref=\u30E1\u30BD\u30C3\u30C9\u53C2\u7167\u306E\u623B\u308A\u578B\u304C\u4E0D\u6B63\u3067\u3059\n{0}
compiler.err.lambda.body.neither.value.nor.void.compatible=\u30E9\u30E0\u30C0\u30FB\u30DC\u30C7\u30A3\u306F\u5024\u4E92\u63DB\u3067\u3082void\u4E92\u63DB\u3067\u3082\u3042\u308A\u307E\u305B\u3093
# 0: list of type
-compiler.err.incompatible.thrown.types.in.mref=\u30E1\u30BD\u30C3\u30C9\u53C2\u7167\u306E\u30B9\u30ED\u30FC\u3055\u308C\u305F\u30BF\u30A4\u30D7{0}\u306F\u4E0D\u9069\u5408\u3067\u3059
+compiler.err.incompatible.thrown.types.in.mref=\u6A5F\u80FD\u5F0F\u3067\u30B9\u30ED\u30FC\u3055\u308C\u305F\u30BF\u30A4\u30D7{0}\u306F\u4E0D\u9069\u5408\u3067\u3059
compiler.misc.incompatible.arg.types.in.lambda=\u30E9\u30E0\u30C0\u5F0F\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u578B\u306F\u4E0D\u9069\u5408\u3067\u3059
@@ -583,14 +598,17 @@
compiler.err.new.not.allowed.in.annotation=''new''\u306F\u6CE8\u91C8\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+# 0: name, 1: type
compiler.err.no.annotation.member={1}\u306E\u6CE8\u91C8\u30E1\u30F3\u30D0\u30FC{0}\u304C\u3042\u308A\u307E\u305B\u3093
+# 0: symbol
compiler.err.no.encl.instance.of.type.in.scope=\u578B{0}\u306E\u5185\u90E8\u30AF\u30E9\u30B9\u3092\u56F2\u3080\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u30B9\u30B3\u30FC\u30D7\u5185\u306B\u3042\u308A\u307E\u305B\u3093
compiler.err.no.intf.expected.here=\u3053\u3053\u306B\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306F\u5FC5\u8981\u3042\u308A\u307E\u305B\u3093
compiler.err.no.match.entry={0}\u306F{1}\u306E\u30A8\u30F3\u30C8\u30EA\u306B\u9069\u5408\u3057\u307E\u305B\u3093\u3002{2}\u304C\u5FC5\u8981\u3067\u3059
+# 0: type
compiler.err.not.annotation.type={0}\u306F\u6CE8\u91C8\u578B\u3067\u306F\u3042\u308A\u307E\u305B\u3093
# 0: symbol, 1: symbol, 2: message segment
@@ -691,10 +709,10 @@
# Errors related to annotation processing
-# 0: symbol, 1: string, 2: string (stack-trace)
+# 0: symbol, 1: message segment, 2: string (stack-trace)
compiler.err.proc.cant.access={0}\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n{1}\n\u8A73\u7D30\u306F\u6B21\u306E\u30B9\u30BF\u30C3\u30AF\u30C8\u30EC\u30FC\u30B9\u3067\u8ABF\u67FB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n{2}
-# 0: symbol, 1: string
+# 0: symbol, 1: message segment
compiler.err.proc.cant.access.1={0}\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n{1}
# 0: string
@@ -704,11 +722,17 @@
# 0: string
compiler.err.proc.messager={0}
-# 0: list of string
+# 0: string
+compiler.misc.exception.message={0}
+
+compiler.misc.user.selected.completion.failure=\u30AF\u30E9\u30B9\u540D\u306B\u3088\u308B\u30E6\u30FC\u30B6\u30FC\u9078\u629E\u306E\u5B8C\u4E86\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+
+# 0: collection of string
compiler.err.proc.no.explicit.annotation.processing.requested=\u30AF\u30E9\u30B9\u540D''{0}''\u304C\u53D7\u3051\u5165\u308C\u3089\u308C\u308B\u306E\u306F\u3001\u6CE8\u91C8\u51E6\u7406\u304C\u660E\u793A\u7684\u306B\u30EA\u30AF\u30A8\u30B9\u30C8\u3055\u308C\u305F\u5834\u5408\u306E\u307F\u3067\u3059
compiler.err.proc.no.service=\u30B5\u30FC\u30D3\u30B9\u30FB\u30ED\u30FC\u30C0\u30FC\u304C\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u304C\u3001\u6CE8\u91C8\u51E6\u7406\u306B\u5FC5\u8981\u3067\u3059\u3002
+# 0: string, 1: string
compiler.err.proc.processor.bad.option.name=\u30D7\u30ED\u30BB\u30C3\u30B5''{1}''\u306B\u3088\u3063\u3066\u6307\u5B9A\u3055\u308C\u305F\u30AA\u30D7\u30B7\u30E7\u30F3\u540D''{0}''\u304C\u4E0D\u6B63\u3067\u3059
# 0: string
@@ -722,11 +746,12 @@
compiler.err.proc.service.problem=\u30D7\u30ED\u30BB\u30C3\u30B5\u3092\u30ED\u30FC\u30C9\u3059\u308B\u305F\u3081\u306E\u30B5\u30FC\u30D3\u30B9\u30FB\u30ED\u30FC\u30C0\u30FC\u3092\u4F5C\u6210\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
+# 0: string
compiler.err.proc.bad.config.file=\u30B5\u30FC\u30D3\u30B9\u69CB\u6210\u30D5\u30A1\u30A4\u30EB\u304C\u4E0D\u6B63\u3067\u3042\u308B\u304B\u3001\u30D7\u30ED\u30BB\u30C3\u30B5\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u69CB\u7BC9\u4E2D\u306B\u4F8B\u5916\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F: {0}
compiler.err.proc.cant.create.loader=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u306E\u30AF\u30E9\u30B9\u30FB\u30ED\u30FC\u30C0\u30FC\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: {0}
-# 0: unused
+# 0: symbol
compiler.err.qualified.new.of.static.class=static\u30AF\u30E9\u30B9\u306Enew\u304C\u4FEE\u98FE\u3055\u308C\u3066\u3044\u307E\u3059
compiler.err.recursive.ctor.invocation=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u547C\u51FA\u3057\u304C\u518D\u5E30\u7684\u3067\u3059
@@ -761,8 +786,10 @@
# 0: symbol, 1: symbol, 2: symbol
compiler.err.does.not.override.abstract={0}\u306Fabstract\u3067\u306A\u304F\u3001{2}\u5185\u306Eabstract\u30E1\u30BD\u30C3\u30C9{1}\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u305B\u3093
+# 0: file object
compiler.err.source.cant.overwrite.input.file=\u30BD\u30FC\u30B9\u306E\u66F8\u8FBC\u307F\u30A8\u30E9\u30FC\u3067\u3059\u3002\u5165\u529B\u30D5\u30A1\u30A4\u30EB{0}\u3092\u4E0A\u66F8\u304D\u3067\u304D\u307E\u305B\u3093
+# 0: symbol
compiler.err.stack.sim.error=\u5185\u90E8\u30A8\u30E9\u30FC: {0}\u3067\u306E\u30B9\u30BF\u30C3\u30AF\u30FB\u30B7\u30DF\u30E5\u30EC\u30FC\u30B7\u30E7\u30F3\u30FB\u30A8\u30E9\u30FC
compiler.err.static.imp.only.classes.and.interfaces=static import\u306F\u30AF\u30E9\u30B9\u3068\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u306E\u307F\u3068\u306A\u308A\u307E\u3059
@@ -804,7 +831,7 @@
# 0: type
compiler.err.illegal.static.intf.meth.call=static\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9\u30FB\u30B3\u30FC\u30EB\u304C\u4E0D\u6B63\u3067\u3059\n\u53D7\u4FE1\u5F0F\u306F\u578B\u4FEE\u98FE\u5B50''{0}''\u3067\u7F6E\u63DB\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-# 0: type, 1: message segment
+# 0: symbol or type, 1: message segment
compiler.err.illegal.default.super.call=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30B9\u30FC\u30D1\u30FC\u30FB\u30B3\u30FC\u30EB\u306E\u578B\u4FEE\u98FE\u5B50{0}\u304C\u4E0D\u6B63\u3067\u3059\n{1}
# 0: symbol, 1: type
@@ -819,7 +846,7 @@
compiler.err.unclosed.str.lit=\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093
-# 0: name
+# 0: string
compiler.err.unsupported.encoding=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3067\u3059: {0}
compiler.err.io.exception=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A8\u30E9\u30FC\u3067\u3059: {0}
@@ -827,6 +854,35 @@
# 0: name
compiler.err.undef.label=\u30E9\u30D9\u30EB{0}\u306F\u672A\u5B9A\u7FA9\u3067\u3059
+# 0: name (type)
+compiler.err.illegal.ref.to.var.type=\u5236\u9650\u3055\u308C\u305F\u578B''{0}''\u3078\u306E\u7121\u52B9\u306A\u53C2\u7167\u3067\u3059
+
+# 0: token
+compiler.err.var.not.allowed=\u3053\u3053\u3067\u306F''{0}''\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093\n\u30EA\u30EA\u30FC\u30B910\u304B\u3089''{0}''\u306F\u5236\u9650\u3055\u308C\u305F\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u578B\u3067\u3042\u308A\u3001\u578B\u306E\u5BA3\u8A00\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
+
+# 0: name (variable), 1: message segment
+compiler.err.cant.infer.local.var.type=\u30ED\u30FC\u30AB\u30EB\u5909\u6570{0}\u306E\u578B\u3092\u63A8\u8AD6\u3067\u304D\u307E\u305B\u3093\n({1})
+
+compiler.err.var.not.allowed.here=\u3053\u3053\u3067\u306F''var''\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093
+
+compiler.err.var.not.allowed.array=''var''\u306F\u914D\u5217\u306E\u8981\u7D20\u30BF\u30A4\u30D7\u3068\u3057\u3066\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093
+
+compiler.err.var.not.allowed.compound=''var''\u306F\u8907\u5408\u5BA3\u8A00\u3067\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093
+
+compiler.misc.local.cant.infer.null=\u5909\u6570\u521D\u671F\u5316\u5B50\u306F''null''\u3067\u3059
+
+compiler.misc.local.cant.infer.void=\u5909\u6570\u521D\u671F\u5316\u5B50\u306F''void''\u3067\u3059
+
+compiler.misc.local.missing.init=\u521D\u671F\u5316\u5B50\u306A\u3057\u3067\u5909\u6570\u306B''var''\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
+compiler.misc.local.lambda.missing.target=\u30E9\u30E0\u30C0\u5F0F\u306B\u306F\u660E\u793A\u7684\u306A\u30BF\u30FC\u30B2\u30C3\u30C8\u578B\u304C\u5FC5\u8981\u3067\u3059
+
+compiler.misc.local.mref.missing.target=\u30E1\u30BD\u30C3\u30C9\u53C2\u7167\u306B\u306F\u660E\u793A\u7684\u306A\u30BF\u30FC\u30B2\u30C3\u30C8\u578B\u304C\u5FC5\u8981\u3067\u3059
+
+compiler.misc.local.array.missing.target=\u914D\u5217\u521D\u671F\u5316\u5B50\u306B\u306F\u660E\u793A\u7684\u306A\u30BF\u30FC\u30B2\u30C3\u30C8\u578B\u304C\u5FC5\u8981\u3067\u3059
+
+compiler.misc.local.self.ref=\u81EA\u5DF1\u53C2\u7167\u5909\u6570\u306B''var''\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
+
# 0: message segment, 1: unused
compiler.err.cant.apply.diamond={0}\u306E\u578B\u5F15\u6570\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093
@@ -944,10 +1000,13 @@
compiler.misc.fatal.err.no.java.lang=\u81F4\u547D\u7684\u30A8\u30E9\u30FC: \u30AF\u30E9\u30B9\u30D1\u30B9\u307E\u305F\u306F\u30D6\u30FC\u30C8\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9\u3067\u30D1\u30C3\u30B1\u30FC\u30B8java.lang\u3092\u691C\u51FA\u3067\u304D\u307E\u305B\u3093
+# 0: name
compiler.misc.fatal.err.cant.locate.meth=\u81F4\u547D\u7684\u30A8\u30E9\u30FC: \u30E1\u30BD\u30C3\u30C9{0}\u3092\u691C\u51FA\u3067\u304D\u307E\u305B\u3093
+# 0: name
compiler.misc.fatal.err.cant.locate.field=\u81F4\u547D\u7684\u30A8\u30E9\u30FC: \u30D5\u30A3\u30FC\u30EB\u30C9{0}\u3092\u691C\u51FA\u3067\u304D\u307E\u305B\u3093
+# 0: type
compiler.misc.fatal.err.cant.locate.ctor=\u81F4\u547D\u7684\u30A8\u30E9\u30FC: {0}\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u691C\u51FA\u3067\u304D\u307E\u305B\u3093
compiler.misc.fatal.err.cant.close=\u81F4\u547D\u7684\u30A8\u30E9\u30FC: \u30B3\u30F3\u30D1\u30A4\u30E9\u30FB\u30EA\u30BD\u30FC\u30B9\u3092\u9589\u3058\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093
@@ -1102,7 +1161,7 @@
# 0: symbol
compiler.warn.constant.SVUID=serialVersionUID\u306F\u30AF\u30E9\u30B9{0}\u306E\u5B9A\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-# 0: file name
+# 0: path
compiler.warn.dir.path.element.not.found=\u4E0D\u6B63\u306A\u30D1\u30B9\u8981\u7D20"{0}": \u305D\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\u5B58\u5728\u3057\u307E\u305B\u3093
# 0: file name
@@ -1160,12 +1219,13 @@
# 0: message segment
compiler.warn.override.varargs.extra={0}\u3002\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u308B\u30E1\u30BD\u30C3\u30C9\u306B\u306F''...''\u304C\u3042\u308A\u307E\u305B\u3093
+# 0: message segment
compiler.warn.override.bridge={0}\u3002\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9\u306F\u30D6\u30EA\u30C3\u30B8\u30FB\u30E1\u30BD\u30C3\u30C9\u3067\u3059
# 0: symbol
compiler.warn.pkg-info.already.seen=package-info.java\u30D5\u30A1\u30A4\u30EB\u304C\u3059\u3067\u306B\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u7528\u306B\u8868\u793A\u3055\u308C\u3066\u3044\u307E\u3059
-# 0: file name
+# 0: path
compiler.warn.path.element.not.found=\u4E0D\u6B63\u306A\u30D1\u30B9\u8981\u7D20"{0}": \u305D\u306E\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\u3042\u308A\u307E\u305B\u3093
compiler.warn.possible.fall-through.into.case=case\u306Bfall-through\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059
@@ -1210,13 +1270,13 @@
# 0: string
compiler.warn.proc.package.does.not.exist=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F\u5B58\u5728\u3057\u307E\u305B\u3093
-# 0: name
+# 0: string
compiler.warn.proc.file.reopening=''{0}''\u7528\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u8907\u6570\u56DE\u4F5C\u6210\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307E\u3059
# 0: name
compiler.warn.proc.type.already.exists=\u30BF\u30A4\u30D7''{0}''\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u30BD\u30FC\u30B9\u30FB\u30D1\u30B9\u307E\u305F\u306F\u30AF\u30E9\u30B9\u30D1\u30B9\u306B\u5B58\u5728\u3057\u307E\u3059
-# 0: name
+# 0: string
compiler.warn.proc.type.recreate=\u30BF\u30A4\u30D7''{0}''\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u8907\u6570\u56DE\u4F5C\u6210\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307E\u3059
# 0: string
@@ -1225,7 +1285,7 @@
# 0: string, 1: string
compiler.warn.proc.suspicious.class.name=\u540D\u524D\u304C{1}\u3067\u7D42\u308F\u308B\u578B\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\u3057\u3066\u3044\u307E\u3059: ''{0}''
-# 0: name
+# 0: string
compiler.warn.proc.file.create.last.round=\u6700\u5F8C\u306B\u4F5C\u6210\u3055\u308C\u305F\u30BF\u30A4\u30D7''{0}''\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u6CE8\u91C8\u51E6\u7406\u306B\u6E21\u3055\u308C\u307E\u305B\u3093\u3002
# 0: string, 1: string
@@ -1247,7 +1307,7 @@
# 0: string
compiler.warn.proc.messager={0}
-# 0: set of name
+# 0: set of string
compiler.warn.proc.unclosed.type.files=\u30BF\u30A4\u30D7''{0}''\u306E\u30D5\u30A1\u30A4\u30EB\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u3053\u308C\u3089\u306E\u30BF\u30A4\u30D7\u306F\u6CE8\u91C8\u51E6\u7406\u3055\u308C\u307E\u305B\u3093
# 0: string
@@ -1285,13 +1345,16 @@
compiler.warn.missing.deprecated.annotation=\u63A8\u5968\u3055\u308C\u306A\u3044\u9805\u76EE\u306F@Deprecated\u3067\u6CE8\u91C8\u304C\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u305B\u3093
-# 0: symbol kind
+# 0: kind name
compiler.warn.deprecated.annotation.has.no.effect=@Deprecated\u6CE8\u91C8\u306F\u3001\u3053\u306E{0}\u5BA3\u8A00\u306B\u306F\u5F71\u97FF\u3057\u307E\u305B\u3093
+# 0: string
compiler.warn.invalid.path=\u30D5\u30A1\u30A4\u30EB\u540D\u304C\u7121\u52B9\u3067\u3059: {0}
+# 0: path
compiler.warn.invalid.archive.file=\u30D1\u30B9\u4E0A\u306E\u4E88\u671F\u3057\u306A\u3044\u30D5\u30A1\u30A4\u30EB: {0}
+# 0: path
compiler.warn.unexpected.archive.file=\u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u4E88\u671F\u3057\u306A\u3044\u62E1\u5F35\u5B50: {0}
# 0: path
@@ -1301,22 +1364,25 @@
compiler.warn.empty.if=if\u4EE5\u964D\u304C\u7A7A\u306E\u6587\u3067\u3059
+# 0: type, 1: name
compiler.warn.annotation.method.not.found=\u30BF\u30A4\u30D7''{0}''\u5185\u306B\u6CE8\u91C8\u30E1\u30BD\u30C3\u30C9''{1}()''\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+# 0: type, 1: name, 2: message segment
compiler.warn.annotation.method.not.found.reason=\u30BF\u30A4\u30D7''{0}''\u5185\u306B\u6CE8\u91C8\u30E1\u30BD\u30C3\u30C9''{1}()''\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {2}
-# 0: symbol, 1: name
+# 0: file object, 1: symbol, 2: name
compiler.warn.unknown.enum.constant=\u4E0D\u660E\u306A\u5217\u6319\u578B\u5B9A\u6570\u3067\u3059{1}.{2}
-# 0: symbol, 1: name, 2: message segment
+# 0: file object, 1: symbol, 2: name, 3: message segment
compiler.warn.unknown.enum.constant.reason=\u4E0D\u660E\u306A\u5217\u6319\u578B\u5B9A\u6570\u3067\u3059{1}.{2}\n\u7406\u7531: {3}
# 0: type, 1: type
compiler.warn.raw.class.use=raw\u578B\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F: {0}\n\u6C4E\u7528\u30AF\u30E9\u30B9{1}\u306E\u578B\u5F15\u6570\u304C\u3042\u308A\u307E\u305B\u3093
-# 0: unused, 1: unused
compiler.warn.diamond.redundant.args=\u65B0\u3057\u3044\u5F0F\u306E\u578B\u5F15\u6570\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059(\u304B\u308F\u308A\u306B\u30C0\u30A4\u30E4\u30E2\u30F3\u30C9\u6F14\u7B97\u5B50\u3092\u4F7F\u7528\u3057\u307E\u3059)\u3002
+compiler.warn.local.redundant.type=\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u306E\u578B\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059(\u660E\u793A\u7684\u306A\u578B\u3092''var''\u306B\u7F6E\u304D\u63DB\u3048\u307E\u3059)\u3002
+
compiler.warn.potential.lambda.found=\u3053\u306E\u533F\u540D\u5185\u90E8\u30AF\u30E9\u30B9\u3092\u30E9\u30E0\u30C0\u5F0F\u306B\u5909\u63DB\u3067\u304D\u307E\u3059\u3002
compiler.warn.method.redundant.typeargs=\u30E1\u30BD\u30C3\u30C9\u547C\u51FA\u3057\u306E\u578B\u5F15\u6570\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002
@@ -1440,6 +1506,7 @@
compiler.misc.module.info.invalid.super.class=\u7121\u52B9\u306A\u30B9\u30FC\u30D1\u30FC\u30FB\u30AF\u30E9\u30B9\u3092\u542B\u3080module-info
+# 0: name
compiler.misc.class.file.not.found={0}\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
# 0: string (constant value), 1: symbol (constant field), 2: type (field type)
@@ -1460,6 +1527,7 @@
# 0: name
compiler.misc.file.doesnt.contain.class=\u30D5\u30A1\u30A4\u30EB\u306B\u30AF\u30E9\u30B9{0}\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093
+# 0: symbol
compiler.misc.file.does.not.contain.package=\u30D5\u30A1\u30A4\u30EB\u306B\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093
compiler.misc.file.does.not.contain.module=\u30D5\u30A1\u30A4\u30EB\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093
@@ -1516,12 +1584,12 @@
# compiler.err.no.elem.type=\
# \[\*\] cannot have a type
-# 0: type
+# 0: message segment
compiler.misc.try.not.applicable.to.type=try-with-resource\u306F\u5909\u6570\u578B\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n({0})
#####
-# 0: message segment or type, 1: message segment
+# 0: object, 1: message segment
compiler.err.type.found.req=\u4E88\u671F\u3057\u306A\u3044\u578B\n\u671F\u5F85\u5024: {1}\n\u691C\u51FA\u5024: {0}
## The following are all possible strings for the first argument ({0}) of the
@@ -1597,10 +1665,9 @@
# 0: list of type, 1: message segment
compiler.misc.diamond.invalid.args={1}\u306B\u3064\u3044\u3066\u63A8\u5B9A\u3055\u308C\u305F\u578B\u5F15\u6570{0}\u306F\u3053\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3067\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093\n\u63A8\u8AD6\u5F15\u6570\u306F\u7F72\u540D\u5C5E\u6027\u306B\u8868\u73FE\u3067\u304D\u307E\u305B\u3093
-# 0: unused
+# 0: type
compiler.misc.diamond.and.explicit.params=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u660E\u793A\u7684\u306A\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u306F''<>''\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
-# 0: unused
compiler.misc.mref.infer.and.explicit.params=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u660E\u793A\u7684\u306A\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u306Fraw\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
# 0: type, 1: list of type
@@ -1623,7 +1690,7 @@
compiler.warn.auxiliary.class.accessed.from.outside.of.its.source.file={1}\u306E\u88DC\u52A9\u30AF\u30E9\u30B9{0}\u306B\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u5916\u304B\u3089\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093
## The first argument ({0}) is a "kindname".
-# 0: symbol kind, 1: symbol, 2: symbol
+# 0: kind name, 1: symbol, 2: symbol
compiler.err.abstract.cant.be.accessed.directly=\u62BD\u8C61{0}\u3067\u3042\u308B{1}({2}\u5185)\u306B\u76F4\u63A5\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
## The first argument ({0}) is a "kindname".
@@ -1641,6 +1708,7 @@
## Both arguments ({0}, {1}) are "kindname"s. {0} is a comma-separated list
## of kindnames (the list should be identical to that provided in source.
+# 0: set of kind name, 1: set of kind name
compiler.err.unexpected.type=\u4E88\u671F\u3057\u306A\u3044\u578B\n\u671F\u5F85\u5024: {0}\n\u691C\u51FA\u5024: {1}
compiler.err.unexpected.lambda=\u3053\u3053\u3067\u306F\u30E9\u30E0\u30C0\u5F0F\u306F\u4E88\u671F\u3055\u308C\u3066\u3044\u307E\u305B\u3093
@@ -1651,32 +1719,32 @@
## The second argument {1} is the non-resolved symbol
## The third argument {2} is a list of type parameters (non-empty if {1} is a method)
## The fourth argument {3} is a list of argument types (non-empty if {1} is a method)
-# 0: symbol kind, 1: name, 2: unused, 3: unused
+# 0: kind name, 1: name, 2: unused, 3: unused
compiler.err.cant.resolve=\u30B7\u30F3\u30DC\u30EB\u3092\u898B\u3064\u3051\u3089\u308C\u307E\u305B\u3093\n\u30B7\u30F3\u30DC\u30EB: {0} {1}
-# 0: symbol kind, 1: name, 2: unused, 3: list of type
+# 0: kind name, 1: name, 2: unused, 3: list of type
compiler.err.cant.resolve.args=\u30B7\u30F3\u30DC\u30EB\u3092\u898B\u3064\u3051\u3089\u308C\u307E\u305B\u3093\n\u30B7\u30F3\u30DC\u30EB: {0} {1}({3})
-# 0: symbol kind, 1: name, 2: list of type, 3: list of type
+# 0: kind name, 1: name, 2: list of type, 3: list of type
compiler.err.cant.resolve.args.params=\u30B7\u30F3\u30DC\u30EB\u3092\u898B\u3064\u3051\u3089\u308C\u307E\u305B\u3093\n\u30B7\u30F3\u30DC\u30EB: {0} <{2}>{1}({3})
## arguments from {0} to {3} have the same meaning as above
## The fifth argument {4} is a location subdiagnostic (see below)
-# 0: symbol kind, 1: name, 2: unused, 3: unused, 4: message segment
+# 0: kind name, 1: name, 2: unused, 3: unused, 4: message segment
compiler.err.cant.resolve.location=\u30B7\u30F3\u30DC\u30EB\u3092\u898B\u3064\u3051\u3089\u308C\u307E\u305B\u3093\n\u30B7\u30F3\u30DC\u30EB: {0} {1}\n\u5834\u6240: {4}
-# 0: symbol kind, 1: name, 2: unused, 3: list of type, 4: message segment
+# 0: kind name, 1: name, 2: unused, 3: list of type, 4: message segment
compiler.err.cant.resolve.location.args=\u30B7\u30F3\u30DC\u30EB\u3092\u898B\u3064\u3051\u3089\u308C\u307E\u305B\u3093\n\u30B7\u30F3\u30DC\u30EB: {0} {1}({3})\n\u5834\u6240: {4}
-# 0: symbol kind, 1: name, 2: list of type, 3: list, 4: message segment
+# 0: kind name, 1: name, 2: list of type, 3: list, 4: message segment
compiler.err.cant.resolve.location.args.params=\u30B7\u30F3\u30DC\u30EB\u3092\u898B\u3064\u3051\u3089\u308C\u307E\u305B\u3093\n\u30B7\u30F3\u30DC\u30EB: {0} <{2}>{1}({3})\n\u5834\u6240: {4}
### Following are replicated/used for method reference diagnostics
-# 0: symbol kind, 1: name, 2: unused, 3: list of type, 4: message segment
+# 0: kind name, 1: name, 2: unused, 3: list of type, 4: message segment
compiler.misc.cant.resolve.location.args=\u30B7\u30F3\u30DC\u30EB\u3092\u898B\u3064\u3051\u3089\u308C\u307E\u305B\u3093\n\u30B7\u30F3\u30DC\u30EB: {0} {1}({3})\n\u5834\u6240: {4}
-# 0: symbol kind, 1: name, 2: list of type, 3: list, 4: message segment
+# 0: kind name, 1: name, 2: list of type, 3: list, 4: message segment
compiler.misc.cant.resolve.location.args.params=\u30B7\u30F3\u30DC\u30EB\u3092\u898B\u3064\u3051\u3089\u308C\u307E\u305B\u3093\n\u30B7\u30F3\u30DC\u30EB: {0} <{2}>{1}({3})\n\u5834\u6240: {4}
##a location subdiagnostic is composed as follows:
@@ -1684,10 +1752,10 @@
## The second argument {1} is the location name
## The third argument {2} is the location type (only when {1} is a variable name)
-# 0: symbol kind, 1: type or symbol, 2: unused
+# 0: kind name, 1: type or symbol, 2: unused
compiler.misc.location={0} {1}
-# 0: symbol kind, 1: symbol, 2: type
+# 0: kind name, 1: symbol, 2: type
compiler.misc.location.1=\u30BF\u30A4\u30D7{2}\u306E{0} {1}
## The following are all possible string for "kindname".
@@ -1732,7 +1800,7 @@
# 0: message segment
compiler.err.override.static={0}\n\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\u30E1\u30BD\u30C3\u30C9\u304Cstatic\u3067\u3059
-# 0: message segment, 1: set of modifier
+# 0: message segment, 1: set of flag
compiler.err.override.meth={0}\n\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9\u306F{1}\u3067\u3059
# 0: message segment, 1: type
@@ -1740,7 +1808,7 @@
# In the following string {1} is a space separated list of Java Keywords, as
# they would have been declared in the source code
-# 0: message segment, 1: set of modifier
+# 0: message segment, 1: set of flag or string
compiler.err.override.weaker.access={0}\n({1})\u3088\u308A\u5F31\u3044\u30A2\u30AF\u30BB\u30B9\u6A29\u9650\u3092\u5272\u308A\u5F53\u3066\u3088\u3046\u3068\u3057\u307E\u3057\u305F
# 0: message segment, 1: type, 2: type
@@ -1787,30 +1855,64 @@
# 0: symbol, 1: symbol, 2: symbol, 3: symbol
compiler.misc.varargs.clash.with={1}\u306E{0}\u306F{3}\u306E{2}\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059
-# 0: symbol kind, 1: symbol, 2: symbol, 3: message segment
+# 0: kind name, 1: symbol, 2: symbol, 3: message segment
compiler.misc.inapplicable.method={0} {1}.{2}\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n({3})
########################################
-# Diagnostics for language feature changes
+# Diagnostics for language feature changes.
+# Such diagnostics have a common template which can be customized by using a feature
+# diagnostic fragment (one of those given below).
########################################
-# 0: string
-compiler.err.modules.not.supported.in.source=\u30E2\u30B8\u30E5\u30FC\u30EB\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 9\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.misc.diamond.and.anon.class.not.supported.in.source=-source {0}\u3067\u306F\u533F\u540D\u5185\u90E8\u30AF\u30E9\u30B9\u3067''<>''\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n(\u533F\u540D\u5185\u90E8\u30AF\u30E9\u30B9\u3067''<>''\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 9\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.unsupported.binary.lit=2\u9032\u6570\u30EA\u30C6\u30E9\u30EB\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(2\u9032\u6570\u30EA\u30C6\u30E9\u30EB\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F-source 7\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.unsupported.underscore.lit=\u30EA\u30C6\u30E9\u30EB\u5185\u306E\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30EA\u30C6\u30E9\u30EB\u5185\u306E\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 7\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.try.with.resources.not.supported.in.source=try-with-resource\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(try-with-resource\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 7\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.var.in.try.with.resources.not.supported.in.source=try-with-resource\u5185\u306E\u5909\u6570\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(try-with-resource\u3067\u5909\u6570\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 9\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
+# 0: message segment (feature), 1: string (found version), 2: string (expected version)
+compiler.err.feature.not.supported.in.source={0}\u306F-source {1}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n({0}\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F-source {2}\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
+
+# 0: message segment (feature), 1: string (found version), 2: string (expected version)
+compiler.err.feature.not.supported.in.source.plural={0}\u306F-source {1}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n({0}\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F-source {2}\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
+
+# 0: message segment (feature), 1: string (found version), 2: string (expected version)
+compiler.misc.feature.not.supported.in.source={0}\u306F-source {1}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n({0}\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F-source {2}\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
+
+# 0: message segment (feature), 1: string (found version), 2: string (expected version)
+compiler.misc.feature.not.supported.in.source.plural={0}\u306F-source {1}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n({0}\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F-source {2}\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
+
+compiler.misc.feature.modules=\u30E2\u30B8\u30E5\u30FC\u30EB
+
+compiler.misc.feature.diamond.and.anon.class=\u533F\u540D\u5185\u90E8\u30AF\u30E9\u30B9\u3067\u306E''<>''
+
+compiler.misc.feature.binary.lit=2\u9032\u6570\u30EA\u30C6\u30E9\u30EB
+
+compiler.misc.feature.underscore.lit=\u30EA\u30C6\u30E9\u30EB\u5185\u306E\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2
+
+compiler.misc.feature.try.with.resources=try-with-resources
+
+compiler.misc.feature.var.in.try.with.resources=try-with-resources\u5185\u306E\u5909\u6570
+
+compiler.misc.feature.type.annotations=\u30BF\u30A4\u30D7\u6CE8\u91C8
+
+compiler.misc.feature.annotations.after.type.params=\u30E1\u30BD\u30C3\u30C9\u30FB\u30BF\u30A4\u30D7\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF\u306E\u5F8C\u306E\u6CE8\u91C8
+
+compiler.misc.feature.repeatable.annotations=\u7E70\u8FD4\u3057\u6CE8\u91C8
+
+compiler.misc.feature.diamond=\u30C0\u30A4\u30E4\u30E2\u30F3\u30C9\u6F14\u7B97\u5B50
+
+compiler.misc.feature.multicatch=\u8907\u6570catch\u6587
+
+compiler.misc.feature.string.switch=switch\u5185\u306E\u6587\u5B57\u5217
+
+compiler.misc.feature.lambda=\u30E9\u30E0\u30C0\u5F0F
+
+compiler.misc.feature.method.references=\u30E1\u30BD\u30C3\u30C9\u53C2\u7167
+
+compiler.misc.feature.default.methods=\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9
+
+compiler.misc.feature.intersection.types.in.cast=intersection\u578B
+
+compiler.misc.feature.static.intf.methods=static\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9
+
+compiler.misc.feature.static.intf.method.invoke=static\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9\u547C\u51FA\u3057
+
+compiler.misc.feature.private.intf.methods=private\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9
compiler.warn.underscore.as.identifier=\u30EA\u30EA\u30FC\u30B99\u304B\u3089''_''\u306F\u30AD\u30FC\u30EF\u30FC\u30C9\u306A\u306E\u3067\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
@@ -1825,15 +1927,14 @@
# TODO 308: make a better error message
compiler.err.this.as.identifier=\u30EA\u30EA\u30FC\u30B98\u304B\u3089''this''\u306F\u53D7\u4FE1\u30BF\u30A4\u30D7\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3068\u3057\u3066\u306E\u307F\u8A31\u53EF\u3055\u308C\u3001\u6700\u521D\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-# 0: symbol
compiler.err.receiver.parameter.not.applicable.constructor.toplevel.class=\u53D7\u53D6\u308A\u5074\u30D1\u30E9\u30E1\u30FC\u30BF\u306F\u6700\u4E0A\u4F4D\u30EC\u30D9\u30EB\u30FB\u30AF\u30E9\u30B9\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306B\u9069\u7528\u3067\u304D\u307E\u305B\u3093
# TODO 308: make a better error message
-# 0: symbol
+# 0: annotation
compiler.err.cant.type.annotate.scoping.1=\u30B9\u30B3\u30FC\u30D7\u30FB\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30C8\u3092\u578B\u4F7F\u7528\u6CE8\u91C8\u3067\u6CE8\u91C8\u4ED8\u3051\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093: {0}
# TODO 308: make a better error message
-# 0: list of symbol
+# 0: list of annotation
compiler.err.cant.type.annotate.scoping=\u30B9\u30B3\u30FC\u30D7\u30FB\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30C8\u3092\u578B\u4F7F\u7528\u6CE8\u91C8\u3067\u6CE8\u91C8\u4ED8\u3051\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093: {0}
# 0: type, 1: type
@@ -1850,45 +1951,6 @@
compiler.err.no.annotations.on.dot.class=\u6CE8\u91C8\u306F\u30AF\u30E9\u30B9\u30FB\u30EA\u30C6\u30E9\u30EB\u306E\u30BF\u30A4\u30D7\u3067\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093
-# 0: string
-compiler.err.type.annotations.not.supported.in.source=\u30BF\u30A4\u30D7\u6CE8\u91C8\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30BF\u30A4\u30D7\u6CE8\u91C8\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.annotations.after.type.params.not.supported.in.source=\u30E1\u30BD\u30C3\u30C9\u30FB\u30BF\u30A4\u30D7\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF\u306E\u5F8C\u306E\u6CE8\u91C8\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30E1\u30BD\u30C3\u30C9\u30FB\u30BF\u30A4\u30D7\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF\u306E\u5F8C\u306E\u6CE8\u91C8\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.repeatable.annotations.not.supported.in.source=\u7E70\u8FD4\u3057\u6CE8\u91C8\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u7E70\u8FD4\u3057\u6CE8\u91C8\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.diamond.not.supported.in.source=\u30C0\u30A4\u30E4\u30E2\u30F3\u30C9\u6F14\u7B97\u5B50\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30C0\u30A4\u30E4\u30E2\u30F3\u30C9\u6F14\u7B97\u5B50\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 7\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.multicatch.not.supported.in.source=\u8907\u6570catch\u6587\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u8907\u6570catch\u6587\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 7\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.string.switch.not.supported.in.source=switch\u5185\u306E\u6587\u5B57\u5217\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(switch\u5185\u306E\u6587\u5B57\u5217\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 7\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.lambda.not.supported.in.source=\u30E9\u30E0\u30C0\u5F0F\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30E9\u30E0\u30C0\u5F0F\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.method.references.not.supported.in.source=\u30E1\u30BD\u30C3\u30C9\u53C2\u7167\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30E1\u30BD\u30C3\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.default.methods.not.supported.in.source=\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.intersection.types.in.cast.not.supported.in.source=\u30AD\u30E3\u30B9\u30C8\u5185\u306Eintersection\u578B\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30AD\u30E3\u30B9\u30C8\u5185\u306Eintersection\u578B\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.static.intf.methods.not.supported.in.source=static\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(static\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.static.intf.method.invoke.not.supported.in.source=static\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9\u547C\u51FA\u3057\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(static\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9\u547C\u51FA\u3057\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
-# 0: string
-compiler.err.private.intf.methods.not.supported.in.source=private\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(private\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 9\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044)
-
########################################
# Diagnostics for verbose resolution
# used by Resolve (debug only)
@@ -2120,6 +2182,9 @@
# 0: symbol, 1: name, 2: symbol, 3: symbol
compiler.err.package.clash.from.requires=\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u306F{2}\u3068{3}\u306E\u4E21\u65B9\u304B\u3089\u30D1\u30C3\u30B1\u30FC\u30B8{1}\u3092\u8AAD\u307F\u53D6\u308A\u307E\u3059
+# 0: name, 1: symbol, 2: symbol
+compiler.err.package.clash.from.requires.in.unnamed=\u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\uFF0D\u30EB\u306F{1}\u3068{2}\u306E\u4E21\u65B9\u304B\u3089\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u3092\u8AAD\u307F\u53D6\u308A\u307E\u3059
+
# 0: string
compiler.err.module.not.found.in.module.source.path=\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30BD\u30FC\u30B9\u30FB\u30D1\u30B9\u306B\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
@@ -2153,9 +2218,6 @@
# 0: symbol
compiler.err.add.reads.with.release=\u30B7\u30B9\u30C6\u30E0\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u306E\u8AAD\u53D6\u308A\u30A8\u30C3\u30B8\u306E\u8FFD\u52A0\u306F--release\u3092\u6307\u5B9A\u3057\u3066\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093
-# 0: symbol
-compiler.err.patch.module.with.release=\u30B7\u30B9\u30C6\u30E0\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u3078\u306E\u30D1\u30C3\u30C1\u9069\u7528\u306F--release\u3092\u6307\u5B9A\u3057\u3066\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093
-
compiler.warn.addopens.ignored=--add-opens\u306F\u3001\u30B3\u30F3\u30D1\u30A4\u30EB\u6642\u306B\u306F\u7121\u52B9\u3067\u3059
compiler.misc.locn.module_source_path=\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30BD\u30FC\u30B9\u30FB\u30D1\u30B9
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -28,12 +28,14 @@
# values.
# The simple types currently in use are:
#
+# annotation annotation compound
# boolean true or false
# diagnostic a sub-message; see compiler.misc.*
# fragment similar to 'message segment', but with more specific type
# modifier a Java modifier; e.g. public, private, protected
# file a file URL
# file object a file URL - similar to 'file' but typically used for source/class files, hence more specific
+# flag a Flags.Flag instance
# name a name, typically a Java identifier
# number an integer
# option name the name of a command line option
@@ -49,8 +51,9 @@
#
# The following compound types are also used:
#
+# collection of X a comma-separated collection of items; e.g. collection of type
# list of X a comma-separated list of items; e.g. list of type
-# set of X a comma-separated collection of items; e.g. set of modifier
+# set of X a comma-separated set of items; e.g. set of modifier
#
# These may be composed:
#
@@ -59,7 +62,7 @@
# The following type aliases are supported:
#
# message segment --> diagnostic or fragment
-# file name --> file or file object
+# file name --> file, path or file object
#
# Custom comments are supported in parenthesis i.e.
#
@@ -83,20 +86,22 @@
compiler.err.abstract.meth.cant.have.body=\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u6709\u4E3B\u4F53
+# 0: kind name, 1: symbol
compiler.err.already.annotated={0} {1}\u5DF2\u8FDB\u884C\u6CE8\u91CA
-# 0: symbol kind, 1: symbol, 2: symbol kind, 3: symbol
+# 0: kind name, 1: symbol, 2: kind name, 3: symbol
compiler.err.already.defined=\u5DF2\u5728{2} {3}\u4E2D\u5B9A\u4E49\u4E86{0} {1}
-# 0: symbol kind, 1: symbol, 2: symbol kind, 3: symbol kind, 4: symbol
+# 0: kind name, 1: symbol, 2: kind name, 3: kind name, 4: symbol
compiler.err.already.defined.in.clinit=\u5DF2\u5728{3} {4}\u7684{2}\u4E2D\u5B9A\u4E49\u4E86{0} {1}
-# 0: string
+# 0: symbol
compiler.err.already.defined.single.import={0}\u7684 single-type-import \u5DF2\u5B9A\u4E49\u5177\u6709\u76F8\u540C\u7B80\u540D\u7684\u7C7B\u578B
-# 0: string
+# 0: symbol
compiler.err.already.defined.static.single.import={0}\u7684\u9759\u6001 single-type-import \u5DF2\u5B9A\u4E49\u5177\u6709\u76F8\u540C\u7B80\u540D\u7684\u7C7B\u578B
+# 0: symbol
compiler.err.already.defined.this.unit=\u5DF2\u5728\u8BE5\u7F16\u8BD1\u5355\u5143\u4E2D\u5B9A\u4E49{0}
# 0: type, 1: list of name
@@ -121,6 +126,8 @@
compiler.err.annotation.value.not.allowable.type=\u6CE8\u91CA\u503C\u4E0D\u662F\u5141\u8BB8\u7684\u7C7B\u578B
+compiler.err.expression.not.allowable.as.annotation.value=\u8868\u8FBE\u5F0F\u4E0D\u5141\u8BB8\u7528\u4F5C\u6CE8\u91CA\u503C
+
compiler.err.anon.class.impl.intf.no.args=\u533F\u540D\u7C7B\u5B9E\u73B0\u63A5\u53E3; \u4E0D\u80FD\u6709\u53C2\u6570
compiler.err.anon.class.impl.intf.no.typeargs=\u533F\u540D\u7C7B\u5B9E\u73B0\u63A5\u53E3; \u4E0D\u80FD\u5177\u6709\u7C7B\u578B\u53C2\u6570
@@ -134,6 +141,8 @@
compiler.err.array.dimension.missing=\u7F3A\u5C11\u6570\u7EC4\u7EF4
+compiler.err.illegal.array.creation.both.dimension.and.initialization=\u540C\u65F6\u4F7F\u7528\u7EF4\u8868\u8FBE\u5F0F\u548C\u521D\u59CB\u5316\u521B\u5EFA\u6570\u7EC4\u662F\u975E\u6CD5\u7684
+
# 0: type
compiler.err.array.req.but.found=\u9700\u8981\u6570\u7EC4, \u4F46\u627E\u5230{0}
@@ -159,10 +168,10 @@
# 0: symbol kind, 1: name, 2: list of type
compiler.misc.cant.apply.symbols=\u5BF9\u4E8E{1}({2}), \u627E\u4E0D\u5230\u5408\u9002\u7684{0}
-# 0: symbol kind, 1: symbol
+# 0: kind name, 1: symbol
compiler.misc.no.abstracts=\u5728 {0} {1} \u4E2D\u627E\u4E0D\u5230\u62BD\u8C61\u65B9\u6CD5
-# 0: symbol kind, 1: symbol
+# 0: kind name, 1: symbol
compiler.misc.incompatible.abstracts=\u5728 {0} {1} \u4E2D\u627E\u5230\u591A\u4E2A\u975E\u8986\u76D6\u62BD\u8C61\u65B9\u6CD5
compiler.err.bad.functional.intf.anno=\u610F\u5916\u7684 @FunctionalInterface \u6CE8\u91CA
@@ -179,10 +188,10 @@
# 0: symbol, 1: message segment
compiler.misc.not.a.functional.intf.1={0} \u4E0D\u662F\u51FD\u6570\u63A5\u53E3\n{1}
-# 0: symbol, 1: symbol kind, 2: symbol
+# 0: type, 1: kind name, 2: symbol
compiler.misc.invalid.generic.lambda.target=lambda \u8868\u8FBE\u5F0F\u7684\u51FD\u6570\u63CF\u8FF0\u7B26\u65E0\u6548\n{1} {2} \u4E2D\u7684\u65B9\u6CD5 {0} \u4E3A\u6CDB\u578B\u65B9\u6CD5
-# 0: symbol kind, 1: symbol
+# 0: kind name, 1: symbol
compiler.misc.incompatible.descs.in.functional.intf=\u5728 {0} {1} \u4E2D\u627E\u5230\u4E0D\u517C\u5BB9\u7684\u51FD\u6570\u63CF\u8FF0\u7B26
# 0: name, 1: list of type, 2: type, 3: list of type
@@ -200,7 +209,7 @@
# 0: symbol or type
compiler.misc.not.an.intf.component=\u7EC4\u4EF6\u7C7B\u578B{0}\u4E0D\u662F\u63A5\u53E3
-# 0: symbol kind, 1: message segment
+# 0: kind name, 1: message segment
compiler.err.invalid.mref={0}\u5F15\u7528\u65E0\u6548\n{1}
# 0: symbol kind, 1: message segment
@@ -231,10 +240,12 @@
compiler.err.cant.extend.intf.annotation=\u5BF9\u4E8E @interfaces, \u4E0D\u5141\u8BB8 ''extends''
+compiler.err.annotation.decl.not.allowed.here=\u6B64\u5904\u4E0D\u5141\u8BB8\u6CE8\u91CA\u7C7B\u578B\u58F0\u660E
+
# 0: symbol
compiler.err.cant.inherit.from.final=\u65E0\u6CD5\u4ECE\u6700\u7EC8{0}\u8FDB\u884C\u7EE7\u627F
-# 0: symbol
+# 0: symbol or string
compiler.err.cant.ref.before.ctor.called=\u65E0\u6CD5\u5728\u8C03\u7528\u8D85\u7C7B\u578B\u6784\u9020\u5668\u4E4B\u524D\u5F15\u7528{0}
compiler.err.cant.select.static.class.from.param.type=\u65E0\u6CD5\u4ECE\u53C2\u6570\u5316\u7684\u7C7B\u578B\u4E2D\u9009\u62E9\u9759\u6001\u7C7B
@@ -244,7 +255,7 @@
compiler.err.catch.without.try=\u6709 ''catch'', \u4F46\u662F\u6CA1\u6709 ''try''
-# 0: symbol kind, 1: symbol
+# 0: kind name, 1: symbol
compiler.err.clash.with.pkg.of.same.name={0} {1}\u4E0E\u5E26\u6709\u76F8\u540C\u540D\u79F0\u7684\u7A0B\u5E8F\u5305\u51B2\u7A81
compiler.err.class.not.allowed=\u6B64\u5904\u4E0D\u5141\u8BB8\u4F7F\u7528\u7C7B, \u63A5\u53E3\u6216\u679A\u4E3E\u58F0\u660E
@@ -253,19 +264,19 @@
compiler.err.cont.outside.loop=continue \u5728 loop \u5916\u90E8
-# 0: symbol
+# 0: symbol or type
compiler.err.cyclic.inheritance=\u6D89\u53CA{0}\u7684\u5FAA\u73AF\u7EE7\u627F
# 0: symbol
compiler.err.cyclic.annotation.element=\u5143\u7D20 {0} \u7684\u7C7B\u578B\u4E3A\u5FAA\u73AF
-# 0: unused
+# 0: symbol
compiler.err.call.to.super.not.allowed.in.enum.ctor=\u5728\u679A\u4E3E\u6784\u9020\u5668\u4E2D\u4E0D\u5141\u8BB8\u8C03\u7528\u8D85\u7C7B
# 0: type
compiler.err.no.superclass={0}\u4E0D\u5177\u6709\u8D85\u7C7B\u3002
-# 0: symbol, 1: type, 2: symbol, 3: type, 4: unused
+# 0: symbol, 1: type, 2: symbol, 3: type, 4: type
compiler.err.concrete.inheritance.conflict={1}\u4E2D\u7684\u65B9\u6CD5{0}\u548C{3}\u4E2D\u7684\u65B9\u6CD5{2}\u662F\u4F7F\u7528\u76F8\u540C\u7684\u7B7E\u540D\u7EE7\u627F\u7684
compiler.err.default.allowed.in.intf.annotation.member=\u6CE8\u91CA\u7C7B\u578B\u58F0\u660E\u4E2D\u4EC5\u5141\u8BB8\u9ED8\u8BA4\u503C
@@ -279,10 +290,10 @@
# 0: name, 1: type
compiler.err.duplicate.annotation.member.value=\u6CE8\u91CA@{1}\u4E2D\u7684\u5143\u7D20 ''{0}'' \u91CD\u590D\u3002
-# 0: name, 1: unused
+# 0: type
compiler.err.duplicate.annotation.missing.container={0} \u4E0D\u662F\u53EF\u91CD\u590D\u7684\u6CE8\u91CA\u7C7B\u578B
-# 0: type, 1: unused
+# 0: symbol
compiler.err.invalid.repeatable.annotation=\u6CE8\u91CA\u91CD\u590D: \u4F7F\u7528\u65E0\u6548\u7684 @Repeatable \u6CE8\u91CA\u5BF9{0}\u8FDB\u884C\u4E86\u6CE8\u91CA
# 0: symbol or type
@@ -294,13 +305,13 @@
# 0: type
compiler.err.invalid.repeatable.annotation.invalid.value={0}\u4E0D\u662F\u6709\u6548\u7684 @Repeatable: \u503C\u5143\u7D20\u65E0\u6548
-# 0: symbol or type, 1: unused, 2: type
+# 0: symbol or type, 1: type, 2: type
compiler.err.invalid.repeatable.annotation.value.return=\u5305\u542B\u6CE8\u91CA\u7C7B\u578B ({0}) \u5FC5\u987B\u58F0\u660E\u7C7B\u578B{2}\u7684\u540D\u4E3A ''value'' \u7684\u5143\u7D20
# 0: symbol or type, 1: symbol
compiler.err.invalid.repeatable.annotation.elem.nondefault=\u5BF9\u4E8E\u5143\u7D20 {1}, \u5305\u542B\u6CE8\u91CA\u7C7B\u578B ({0}) \u6CA1\u6709\u9ED8\u8BA4\u503C
-# 0: symbol, 1: unused, 2: symbol, 3: unused
+# 0: symbol, 1: string, 2: symbol, 3: string
compiler.err.invalid.repeatable.annotation.retention=\u5305\u542B\u6CE8\u91CA\u7C7B\u578B ({0}) \u7684\u4FDD\u7559\u671F\u77ED\u4E8E\u53EF\u91CD\u590D\u6CE8\u91CA\u7C7B\u578B ({2}) \u7684\u4FDD\u7559\u671F
# 0: symbol, 1: symbol
@@ -390,7 +401,7 @@
# 0: string, 1: string
compiler.err.illegal.char.for.encoding=\u7F16\u7801 {1} \u7684\u4E0D\u53EF\u6620\u5C04\u5B57\u7B26 (0x{0})
-# 0: set of modifier, 1: set of modifier
+# 0: set of flag, 1: set of flag
compiler.err.illegal.combination.of.modifiers=\u975E\u6CD5\u7684\u4FEE\u9970\u7B26\u7EC4\u5408: {0}\u548C{1}
compiler.err.illegal.enum.static.ref=\u521D\u59CB\u5316\u7A0B\u5E8F\u4E2D\u5BF9\u9759\u6001\u5B57\u6BB5\u7684\u5F15\u7528\u4E0D\u5408\u6CD5
@@ -399,7 +410,7 @@
compiler.err.illegal.forward.ref=\u975E\u6CD5\u524D\u5411\u5F15\u7528
-# 0: symbol, 1: string
+# 0: symbol, 1: object
compiler.err.not.in.profile={0}\u5728\u914D\u7F6E\u6587\u4EF6 ''{1}'' \u4E2D\u4E0D\u53EF\u7528
# 0: symbol
@@ -432,6 +443,8 @@
compiler.err.illegal.start.of.type=\u975E\u6CD5\u7684\u7C7B\u578B\u5F00\u59CB
+compiler.err.illegal.parenthesized.expression=\u975E\u6CD5\u7684\u542B\u62EC\u53F7\u8868\u8FBE\u5F0F
+
compiler.err.illegal.unicode.esc=\u975E\u6CD5\u7684 Unicode \u8F6C\u4E49
# 0: symbol
@@ -461,8 +474,7 @@
compiler.err.intf.meth.cant.have.body=\u63A5\u53E3\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u5E26\u6709\u4E3B\u4F53
-# 0: symbol
-compiler.err.invalid.annotation.member.type=\u6CE8\u91CA\u7C7B\u578B\u5143\u7D20 {0} \u7684\u7C7B\u578B\u65E0\u6548
+compiler.err.invalid.annotation.member.type=\u6CE8\u91CA\u7C7B\u578B\u5143\u7D20\u7684\u7C7B\u578B\u65E0\u6548
compiler.err.invalid.binary.number=\u4E8C\u8FDB\u5236\u6570\u5B57\u4E2D\u5FC5\u987B\u5305\u542B\u81F3\u5C11\u4E00\u4E2A\u4E8C\u8FDB\u5236\u6570
@@ -517,22 +529,25 @@
compiler.err.limit.string=\u5E38\u91CF\u5B57\u7B26\u4E32\u8FC7\u957F
+# 0: string
compiler.err.limit.string.overflow=\u5BF9\u4E8E\u5E38\u91CF\u6C60\u6765\u8BF4, \u5B57\u7B26\u4E32 "{0}..." \u7684 UTF8 \u8868\u793A\u8FC7\u957F
compiler.err.malformed.fp.lit=\u6D6E\u70B9\u6587\u5B57\u7684\u683C\u5F0F\u9519\u8BEF
compiler.err.method.does.not.override.superclass=\u65B9\u6CD5\u4E0D\u4F1A\u8986\u76D6\u6216\u5B9E\u73B0\u8D85\u7C7B\u578B\u7684\u65B9\u6CD5
+compiler.err.static.methods.cannot.be.annotated.with.override=\u4E0D\u80FD\u4F7F\u7528 @Override \u6CE8\u91CA\u9759\u6001\u65B9\u6CD5
+
compiler.err.missing.meth.body.or.decl.abstract=\u7F3A\u5C11\u65B9\u6CD5\u4E3B\u4F53, \u6216\u58F0\u660E\u62BD\u8C61
compiler.err.missing.ret.stmt=\u7F3A\u5C11\u8FD4\u56DE\u8BED\u53E5
-# 0: unused
+# 0: type
compiler.misc.missing.ret.val=\u7F3A\u5C11\u8FD4\u56DE\u503C
compiler.misc.unexpected.ret.val=\u610F\u5916\u7684\u8FD4\u56DE\u503C
-# 0: set of modifier
+# 0: set of flag
compiler.err.mod.not.allowed.here=\u6B64\u5904\u4E0D\u5141\u8BB8\u4F7F\u7528\u4FEE\u9970\u7B26{0}
compiler.err.intf.not.allowed.here=\u6B64\u5904\u4E0D\u5141\u8BB8\u4F7F\u7528\u63A5\u53E3
@@ -542,11 +557,11 @@
# 0: symbol, 1: symbol
compiler.err.name.clash.same.erasure=\u540D\u79F0\u51B2\u7A81: {0}\u548C{1}\u5177\u6709\u76F8\u540C\u7591\u7B26
-# 0: symbol, 1: symbol, 2: symbol, 3: symbol, 4: unused, 5: unused
-compiler.err.name.clash.same.erasure.no.override=\u540D\u79F0\u51B2\u7A81: {1}\u4E2D\u7684{0}\u548C{3}\u4E2D\u7684{2}\u5177\u6709\u76F8\u540C\u7591\u7B26, \u4F46\u4E24\u8005\u5747\u4E0D\u8986\u76D6\u5BF9\u65B9
-
-# 0: symbol, 1: symbol, 2: symbol, 3: symbol, 4: symbol, 5: symbol
-compiler.err.name.clash.same.erasure.no.override.1=\u540D\u79F0\u51B2\u7A81: {1} \u4E2D\u7684 {0} \u8986\u76D6\u7684\u65B9\u6CD5\u7684\u7591\u7B26\u4E0E\u53E6\u4E00\u4E2A\u65B9\u6CD5\u7684\u76F8\u540C, \u4F46\u4E24\u8005\u5747\u4E0D\u8986\u76D6\u5BF9\u65B9\n\u7B2C\u4E00\u4E2A\u65B9\u6CD5: {3} \u4E2D\u7684 {2}\n\u7B2C\u4E8C\u4E2A\u65B9\u6CD5: {5} \u4E2D\u7684 {4}
+# 0: name, 1: list of type, 2: symbol, 3: name, 4: list of type, 5: symbol
+compiler.err.name.clash.same.erasure.no.override=\u540D\u79F0\u51B2\u7A81: {2} \u4E2D\u7684 {0}({1}) \u548C {5} \u4E2D\u7684 {3}({4}) \u5177\u6709\u76F8\u540C\u7591\u7B26, \u4F46\u4E24\u8005\u5747\u4E0D\u8986\u76D6\u5BF9\u65B9
+
+# 0: string, 1: name, 2: name, 3: list of type, 4: symbol, 5: name, 6: list of type, 7: symbol
+compiler.err.name.clash.same.erasure.no.override.1=\u540D\u79F0\u51B2\u7A81: {0} {1} \u7684\u4E24\u79CD\u65B9\u6CD5\u5177\u6709\u76F8\u540C\u7684\u7591\u7B26, \u4F46\u4E24\u8005\u5747\u4E0D\u8986\u76D6\u5BF9\u65B9\n\u7B2C\u4E00\u79CD\u65B9\u6CD5: {4} \u4E2D\u7684 {2}({3})\n\u7B2C\u4E8C\u79CD\u65B9\u6CD5: {7} \u4E2D\u7684 {5}({6})
# 0: symbol, 1: symbol, 2: symbol, 3: symbol
compiler.err.name.clash.same.erasure.no.hide=\u540D\u79F0\u51B2\u7A81: {1} \u4E2D\u7684 {0} \u548C {3} \u4E2D\u7684 {2} \u5177\u6709\u76F8\u540C\u7591\u7B26, \u4F46\u4E24\u8005\u5747\u4E0D\u9690\u85CF\u5BF9\u65B9
@@ -564,18 +579,18 @@
compiler.misc.conditional.target.cant.be.void=\u6761\u4EF6\u8868\u8FBE\u5F0F\u7684\u76EE\u6807\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
-# 0: type
+# 0: message segment
compiler.misc.incompatible.ret.type.in.lambda=lambda \u8868\u8FBE\u5F0F\u4E2D\u7684\u8FD4\u56DE\u7C7B\u578B\u9519\u8BEF\n{0}
compiler.misc.stat.expr.expected=lambda \u4E3B\u4F53\u4E0E void \u51FD\u6570\u63A5\u53E3\u4E0D\u517C\u5BB9\n(\u8BF7\u8003\u8651\u4F7F\u7528\u5757 lambda \u4E3B\u4F53, \u6216\u8005\u6539\u4E3A\u4F7F\u7528\u8BED\u53E5\u8868\u8FBE\u5F0F)
-# 0: type
+# 0: message segment
compiler.misc.incompatible.ret.type.in.mref=\u65B9\u6CD5\u5F15\u7528\u4E2D\u7684\u8FD4\u56DE\u7C7B\u578B\u9519\u8BEF\n{0}
compiler.err.lambda.body.neither.value.nor.void.compatible=lambda \u4E3B\u4F53\u4E0D\u662F\u503C, \u4E5F\u4E0D\u4E0E void \u517C\u5BB9
# 0: list of type
-compiler.err.incompatible.thrown.types.in.mref=\u65B9\u6CD5\u5F15\u7528\u4E2D\u629B\u51FA\u7684\u7C7B\u578B{0}\u4E0D\u517C\u5BB9
+compiler.err.incompatible.thrown.types.in.mref=\u51FD\u6570\u8868\u8FBE\u5F0F\u4E2D\u629B\u51FA\u7684\u7C7B\u578B {0} \u4E0D\u517C\u5BB9
compiler.misc.incompatible.arg.types.in.lambda=lambda \u8868\u8FBE\u5F0F\u4E2D\u7684\u53C2\u6570\u7C7B\u578B\u4E0D\u517C\u5BB9
@@ -583,14 +598,17 @@
compiler.err.new.not.allowed.in.annotation=\u6CE8\u91CA\u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528 ''new''
+# 0: name, 1: type
compiler.err.no.annotation.member={1}\u4E2D\u6CA1\u6709\u6CE8\u91CA\u6210\u5458{0}
+# 0: symbol
compiler.err.no.encl.instance.of.type.in.scope=\u4F5C\u7528\u57DF\u4E2D\u6CA1\u6709\u7C7B\u578B\u4E3A{0}\u7684\u5C01\u95ED\u5B9E\u4F8B
compiler.err.no.intf.expected.here=\u6B64\u5904\u4E0D\u9700\u8981\u63A5\u53E3
compiler.err.no.match.entry={0}\u5728{1}\u7684\u6761\u76EE\u4E2D\u6CA1\u6709\u5339\u914D\u9879; \u9700\u8981{2}
+# 0: type
compiler.err.not.annotation.type={0}\u4E0D\u662F\u6CE8\u91CA\u7C7B\u578B
# 0: symbol, 1: symbol, 2: message segment
@@ -691,10 +709,10 @@
# Errors related to annotation processing
-# 0: symbol, 1: string, 2: string (stack-trace)
+# 0: symbol, 1: message segment, 2: string (stack-trace)
compiler.err.proc.cant.access=\u65E0\u6CD5\u8BBF\u95EE{0}\n{1}\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u4EE5\u4E0B\u5806\u6808\u8DDF\u8E2A\u3002\n{2}
-# 0: symbol, 1: string
+# 0: symbol, 1: message segment
compiler.err.proc.cant.access.1=\u65E0\u6CD5\u8BBF\u95EE{0}\n{1}
# 0: string
@@ -704,11 +722,17 @@
# 0: string
compiler.err.proc.messager={0}
-# 0: list of string
+# 0: string
+compiler.misc.exception.message={0}
+
+compiler.misc.user.selected.completion.failure=\u6309\u7C7B\u540D\u5217\u51FA\u7684\u7528\u6237\u9009\u62E9\u8F93\u5165\u63D0\u793A\u5931\u8D25
+
+# 0: collection of string
compiler.err.proc.no.explicit.annotation.processing.requested=\u4EC5\u5F53\u663E\u5F0F\u8BF7\u6C42\u6CE8\u91CA\u5904\u7406\u65F6\u624D\u63A5\u53D7\u7C7B\u540D\u79F0 ''{0}''
compiler.err.proc.no.service=ServiceLoader \u4E0D\u53EF\u7528, \u4F46\u5B83\u662F\u6CE8\u91CA\u5904\u7406\u6240\u5FC5\u9700\u7684\u3002
+# 0: string, 1: string
compiler.err.proc.processor.bad.option.name=\u5904\u7406\u7A0B\u5E8F ''{1}'' \u63D0\u4F9B\u7684\u9009\u9879\u540D\u79F0 ''{0}'' \u9519\u8BEF
# 0: string
@@ -722,11 +746,12 @@
compiler.err.proc.service.problem=\u521B\u5EFA\u670D\u52A1\u52A0\u8F7D\u5668\u4EE5\u52A0\u8F7D\u5904\u7406\u7A0B\u5E8F\u65F6\u51FA\u9519\u3002
+# 0: string
compiler.err.proc.bad.config.file=\u670D\u52A1\u914D\u7F6E\u6587\u4EF6\u4E0D\u6B63\u786E, \u6216\u6784\u9020\u5904\u7406\u7A0B\u5E8F\u5BF9\u8C61{0}\u65F6\u629B\u51FA\u5F02\u5E38\u9519\u8BEF
compiler.err.proc.cant.create.loader=\u65E0\u6CD5\u4E3A\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F{0}\u521B\u5EFA\u7C7B\u52A0\u8F7D\u5668
-# 0: unused
+# 0: symbol
compiler.err.qualified.new.of.static.class=\u9650\u5B9A\u7684\u65B0\u9759\u6001\u7C7B
compiler.err.recursive.ctor.invocation=\u9012\u5F52\u6784\u9020\u5668\u8C03\u7528
@@ -744,10 +769,10 @@
compiler.err.repeated.modifier=\u4FEE\u9970\u7B26\u91CD\u590D
# 0: symbol, 1: set of modifier, 2: symbol
-compiler.err.report.access={0}\u53EF\u4EE5\u5728{2}\u4E2D\u8BBF\u95EE{1}
+compiler.err.report.access={0} \u5728 {2} \u4E2D\u662F {1} \u8BBF\u95EE\u63A7\u5236
# 0: symbol, 1: set of modifier, 2: symbol
-compiler.misc.report.access={0}\u53EF\u4EE5\u5728{2}\u4E2D\u8BBF\u95EE{1}
+compiler.misc.report.access={0} \u5728 {2} \u4E2D\u662F {1} \u8BBF\u95EE\u63A7\u5236
compiler.err.ret.outside.meth=\u8FD4\u56DE\u5916\u90E8\u65B9\u6CD5
@@ -761,8 +786,10 @@
# 0: symbol, 1: symbol, 2: symbol
compiler.err.does.not.override.abstract={0}\u4E0D\u662F\u62BD\u8C61\u7684, \u5E76\u4E14\u672A\u8986\u76D6{2}\u4E2D\u7684\u62BD\u8C61\u65B9\u6CD5{1}
+# 0: file object
compiler.err.source.cant.overwrite.input.file=\u5199\u5165\u6E90\u65F6\u51FA\u9519; \u65E0\u6CD5\u8986\u76D6\u8F93\u5165\u6587\u4EF6{0}
+# 0: symbol
compiler.err.stack.sim.error=\u5185\u90E8\u9519\u8BEF: {0}\u4E2D\u7684\u5806\u6808 sim \u9519\u8BEF
compiler.err.static.imp.only.classes.and.interfaces=\u4EC5\u4ECE\u7C7B\u548C\u63A5\u53E3\u9759\u6001\u5BFC\u5165
@@ -804,7 +831,7 @@
# 0: type
compiler.err.illegal.static.intf.meth.call=\u9759\u6001\u63A5\u53E3\u65B9\u6CD5\u8C03\u7528\u975E\u6CD5\n\u5E94\u5C06\u63A5\u6536\u65B9\u8868\u8FBE\u5F0F\u66FF\u6362\u4E3A\u7C7B\u578B\u9650\u5B9A\u7B26 ''{0}''
-# 0: type, 1: message segment
+# 0: symbol or type, 1: message segment
compiler.err.illegal.default.super.call=\u9ED8\u8BA4\u8D85\u7EA7\u8C03\u7528\u4E2D\u7684\u7C7B\u578B\u9650\u5B9A\u7B26{0}\u9519\u8BEF\n{1}
# 0: symbol, 1: type
@@ -819,7 +846,7 @@
compiler.err.unclosed.str.lit=\u672A\u7ED3\u675F\u7684\u5B57\u7B26\u4E32\u6587\u5B57
-# 0: name
+# 0: string
compiler.err.unsupported.encoding=\u4E0D\u652F\u6301\u7684\u7F16\u7801: {0}
compiler.err.io.exception=\u8BFB\u53D6\u6E90\u6587\u4EF6\u65F6\u51FA\u9519: {0}
@@ -827,6 +854,35 @@
# 0: name
compiler.err.undef.label=\u672A\u5B9A\u4E49\u7684\u6807\u7B7E: {0}
+# 0: name (type)
+compiler.err.illegal.ref.to.var.type=\u5BF9\u53D7\u9650\u5236\u7C7B\u578B ''{0}'' \u7684\u5F15\u7528\u975E\u6CD5
+
+# 0: token
+compiler.err.var.not.allowed=\u4ECE\u53D1\u884C\u7248 10 \u5F00\u59CB,\n\u6B64\u5904\u4E0D\u5141\u8BB8\u4F7F\u7528 ''{0}'', ''{0}'' \u662F\u53D7\u9650\u5236\u7684\u672C\u5730\u53D8\u91CF\u7C7B\u578B, \u65E0\u6CD5\u7528\u4E8E\u7C7B\u578B\u58F0\u660E
+
+# 0: name (variable), 1: message segment
+compiler.err.cant.infer.local.var.type=\u65E0\u6CD5\u63A8\u65AD\u672C\u5730\u53D8\u91CF {0} \u7684\u7C7B\u578B\n({1})
+
+compiler.err.var.not.allowed.here=\u6B64\u5904\u4E0D\u5141\u8BB8\u4F7F\u7528 ''var''
+
+compiler.err.var.not.allowed.array=''var'' \u4E0D\u5141\u8BB8\u7528\u4F5C\u6570\u7EC4\u7684\u5143\u7D20\u7C7B\u578B
+
+compiler.err.var.not.allowed.compound=''var'' \u4E0D\u5141\u8BB8\u5728\u590D\u5408\u58F0\u660E\u4E2D\u4F7F\u7528
+
+compiler.misc.local.cant.infer.null=\u53D8\u91CF\u521D\u59CB\u5316\u7A0B\u5E8F\u4E3A ''null''
+
+compiler.misc.local.cant.infer.void=\u53D8\u91CF\u521D\u59CB\u5316\u7A0B\u5E8F\u4E3A ''void''
+
+compiler.misc.local.missing.init=\u65E0\u6CD5\u5728\u4E0D\u5E26\u521D\u59CB\u5316\u7A0B\u5E8F\u7684\u53D8\u91CF\u4E0A\u4F7F\u7528 ''var''
+
+compiler.misc.local.lambda.missing.target=lambda \u8868\u8FBE\u5F0F\u9700\u8981\u663E\u5F0F\u76EE\u6807\u7C7B\u578B
+
+compiler.misc.local.mref.missing.target=\u65B9\u6CD5\u5F15\u7528\u9700\u8981\u663E\u5F0F\u76EE\u6807\u7C7B\u578B
+
+compiler.misc.local.array.missing.target=\u6570\u7EC4\u521D\u59CB\u5316\u7A0B\u5E8F\u9700\u8981\u663E\u5F0F\u76EE\u6807\u7C7B\u578B
+
+compiler.misc.local.self.ref=\u65E0\u6CD5\u5728\u81EA\u5F15\u7528\u53D8\u91CF\u4E0A\u4F7F\u7528 ''var''
+
# 0: message segment, 1: unused
compiler.err.cant.apply.diamond=\u65E0\u6CD5\u63A8\u65AD{0}\u7684\u7C7B\u578B\u53C2\u6570
@@ -944,10 +1000,13 @@
compiler.misc.fatal.err.no.java.lang=\u81F4\u547D\u9519\u8BEF: \u5728\u7C7B\u8DEF\u5F84\u6216\u5F15\u5BFC\u7C7B\u8DEF\u5F84\u4E2D\u627E\u4E0D\u5230\u7A0B\u5E8F\u5305 java.lang
+# 0: name
compiler.misc.fatal.err.cant.locate.meth=\u81F4\u547D\u9519\u8BEF: \u627E\u4E0D\u5230\u65B9\u6CD5{0}
+# 0: name
compiler.misc.fatal.err.cant.locate.field=\u81F4\u547D\u9519\u8BEF: \u627E\u4E0D\u5230\u5B57\u6BB5{0}
+# 0: type
compiler.misc.fatal.err.cant.locate.ctor=\u81F4\u547D\u9519\u8BEF: \u627E\u4E0D\u5230{0}\u7684\u6784\u9020\u5668
compiler.misc.fatal.err.cant.close=\u81F4\u547D\u9519\u8BEF: \u65E0\u6CD5\u5173\u95ED\u7F16\u8BD1\u5668\u8D44\u6E90
@@ -1061,10 +1120,10 @@
compiler.misc.verbose.checking.attribution=[\u6B63\u5728\u68C0\u67E5{0}]
# 0: string
-compiler.misc.verbose.parsing.done=[\u89E3\u6790\u5DF2\u5B8C\u6210, \u7528\u65F6 {0} \u6BEB\u79D2]
+compiler.misc.verbose.parsing.done=[\u8BED\u6CD5\u5206\u6790\u5DF2\u5B8C\u6210, \u7528\u65F6 {0} \u6BEB\u79D2]
# 0: file name
-compiler.misc.verbose.parsing.started=[\u89E3\u6790\u5F00\u59CB\u65F6\u95F4 {0}]
+compiler.misc.verbose.parsing.started=[\u8BED\u6CD5\u5206\u6790\u5F00\u59CB\u65F6\u95F4 {0}]
# 0: string
compiler.misc.verbose.total=[\u5171 {0} \u6BEB\u79D2]
@@ -1102,7 +1161,7 @@
# 0: symbol
compiler.warn.constant.SVUID=serialVersionUID \u5728\u7C7B{0}\u4E2D\u5FC5\u987B\u662F\u5E38\u91CF
-# 0: file name
+# 0: path
compiler.warn.dir.path.element.not.found=\u9519\u8BEF\u7684\u8DEF\u5F84\u5143\u7D20 "{0}": \u6CA1\u6709\u8FD9\u79CD\u76EE\u5F55
# 0: file name
@@ -1160,12 +1219,13 @@
# 0: message segment
compiler.warn.override.varargs.extra={0}; \u8986\u76D6\u7684\u65B9\u6CD5\u7F3A\u5C11 ''...''
+# 0: message segment
compiler.warn.override.bridge={0}; \u88AB\u8986\u76D6\u7684\u65B9\u6CD5\u4E3A bridge \u65B9\u6CD5
# 0: symbol
compiler.warn.pkg-info.already.seen=\u5DF2\u627E\u5230\u7A0B\u5E8F\u5305{0}\u7684 package-info.java \u6587\u4EF6
-# 0: file name
+# 0: path
compiler.warn.path.element.not.found=\u9519\u8BEF\u7684\u8DEF\u5F84\u5143\u7D20 "{0}": \u6CA1\u6709\u8FD9\u79CD\u6587\u4EF6\u6216\u76EE\u5F55
compiler.warn.possible.fall-through.into.case=\u53EF\u80FD\u65E0\u6CD5\u5B9E\u73B0 case
@@ -1210,13 +1270,13 @@
# 0: string
compiler.warn.proc.package.does.not.exist=\u7A0B\u5E8F\u5305{0}\u4E0D\u5B58\u5728
-# 0: name
+# 0: string
compiler.warn.proc.file.reopening=\u5C1D\u8BD5\u591A\u6B21\u4E3A ''{0}'' \u521B\u5EFA\u6587\u4EF6
# 0: name
compiler.warn.proc.type.already.exists=\u7C7B\u578B ''{0}'' \u7684\u6587\u4EF6\u5DF2\u7ECF\u5B58\u5728\u4E8E\u6E90\u8DEF\u5F84\u6216\u7C7B\u8DEF\u5F84\u4E2D
-# 0: name
+# 0: string
compiler.warn.proc.type.recreate=\u5C1D\u8BD5\u591A\u6B21\u521B\u5EFA\u7C7B\u578B ''{0}'' \u7684\u6587\u4EF6
# 0: string
@@ -1225,7 +1285,7 @@
# 0: string, 1: string
compiler.warn.proc.suspicious.class.name=\u6B63\u5728\u4E3A\u540D\u79F0\u4EE5{1}\u7ED3\u5C3E\u7684\u7C7B\u578B\u521B\u5EFA\u6587\u4EF6: ''{0}''
-# 0: name
+# 0: string
compiler.warn.proc.file.create.last.round=\u5C06\u4E0D\u5BF9\u5728\u6700\u540E\u4E00\u4E2A\u5FAA\u73AF\u4E2D\u521B\u5EFA\u7684\u7C7B\u578B\u4E3A ''{0}'' \u7684\u6587\u4EF6\u8FDB\u884C\u6CE8\u91CA\u5904\u7406\u3002
# 0: string, 1: string
@@ -1247,7 +1307,7 @@
# 0: string
compiler.warn.proc.messager={0}
-# 0: set of name
+# 0: set of string
compiler.warn.proc.unclosed.type.files=\u7C7B\u578B ''{0}'' \u7684\u6587\u4EF6\u672A\u5173\u95ED; \u5C06\u4E0D\u9488\u5BF9\u8FD9\u4E9B\u7C7B\u578B\u8FDB\u884C\u6CE8\u91CA\u5904\u7406
# 0: string
@@ -1285,13 +1345,16 @@
compiler.warn.missing.deprecated.annotation=\u672A\u4F7F\u7528 @Deprecated \u5BF9\u5DF2\u8FC7\u65F6\u7684\u9879\u76EE\u8FDB\u884C\u6CE8\u91CA
-# 0: symbol kind
+# 0: kind name
compiler.warn.deprecated.annotation.has.no.effect=@Deprecated \u6CE8\u91CA\u5BF9\u6B64 {0} \u58F0\u660E\u6CA1\u6709\u4EFB\u4F55\u6548\u679C
+# 0: string
compiler.warn.invalid.path=\u65E0\u6548\u6587\u4EF6\u540D: {0}
+# 0: path
compiler.warn.invalid.archive.file=\u4EE5\u4E0B\u8DEF\u5F84\u4E2D\u5B58\u5728\u610F\u5916\u7684\u6587\u4EF6: {0}
+# 0: path
compiler.warn.unexpected.archive.file=\u4EE5\u4E0B\u6863\u6848\u6587\u4EF6\u5B58\u5728\u610F\u5916\u7684\u6269\u5C55\u540D: {0}
# 0: path
@@ -1301,22 +1364,25 @@
compiler.warn.empty.if=if \u4E4B\u540E\u6CA1\u6709\u8BED\u53E5
+# 0: type, 1: name
compiler.warn.annotation.method.not.found=\u65E0\u6CD5\u627E\u5230\u7C7B\u578B ''{0}'' \u7684\u6CE8\u91CA\u65B9\u6CD5 ''{1}()''
+# 0: type, 1: name, 2: message segment
compiler.warn.annotation.method.not.found.reason=\u65E0\u6CD5\u627E\u5230\u7C7B\u578B ''{0}'' \u7684\u6CE8\u91CA\u65B9\u6CD5 ''{1}()'': {2}
-# 0: symbol, 1: name
+# 0: file object, 1: symbol, 2: name
compiler.warn.unknown.enum.constant=\u672A\u77E5\u7684\u679A\u4E3E\u5E38\u91CF {1}.{2}
-# 0: symbol, 1: name, 2: message segment
+# 0: file object, 1: symbol, 2: name, 3: message segment
compiler.warn.unknown.enum.constant.reason=\u672A\u77E5\u7684\u679A\u4E3E\u5E38\u91CF {1}.{2}\n\u539F\u56E0: {3}
# 0: type, 1: type
compiler.warn.raw.class.use=\u627E\u5230\u539F\u59CB\u7C7B\u578B: {0}\n\u7F3A\u5C11\u6CDB\u578B\u7C7B{1}\u7684\u7C7B\u578B\u53C2\u6570
-# 0: unused, 1: unused
compiler.warn.diamond.redundant.args=\u65B0\u8868\u8FBE\u5F0F\u4E2D\u5B58\u5728\u5197\u4F59\u7C7B\u578B\u53C2\u6570 (\u6539\u7528 diamond \u8FD0\u7B97\u7B26)\u3002
+compiler.warn.local.redundant.type=\u672C\u5730\u53D8\u91CF\u7684\u5197\u4F59\u7C7B\u578B (\u4F7F\u7528 ''var'' \u66FF\u6362\u663E\u5F0F\u7C7B\u578B)\u3002
+
compiler.warn.potential.lambda.found=\u53EF\u5C06\u6B64\u533F\u540D\u5185\u90E8\u7C7B\u521B\u5EFA\u8F6C\u6362\u4E3A lambda \u8868\u8FBE\u5F0F\u3002
compiler.warn.method.redundant.typeargs=\u65B9\u6CD5\u8C03\u7528\u4E2D\u5B58\u5728\u5197\u4F59\u7C7B\u578B\u53C2\u6570\u3002
@@ -1370,7 +1436,7 @@
# 0: token, 1: token, 2: token
compiler.err.expected3=\u9700\u8981{0}, {1}\u6216{2}
-compiler.err.premature.eof=\u8FDB\u884C\u89E3\u6790\u65F6\u5DF2\u5230\u8FBE\u6587\u4EF6\u7ED3\u5C3E
+compiler.err.premature.eof=\u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u65F6\u5DF2\u5230\u8FBE\u6587\u4EF6\u7ED3\u5C3E
## The following are related in form, but do not easily fit the above paradigm.
compiler.err.expected.module=\u9700\u8981 ''module''
@@ -1440,6 +1506,7 @@
compiler.misc.module.info.invalid.super.class=\u5E26\u6709\u65E0\u6548\u8D85\u7C7B\u7684 module-info
+# 0: name
compiler.misc.class.file.not.found=\u627E\u4E0D\u5230{0}\u7684\u7C7B\u6587\u4EF6
# 0: string (constant value), 1: symbol (constant field), 2: type (field type)
@@ -1460,6 +1527,7 @@
# 0: name
compiler.misc.file.doesnt.contain.class=\u6587\u4EF6\u4E0D\u5305\u542B\u7C7B{0}
+# 0: symbol
compiler.misc.file.does.not.contain.package=\u6587\u4EF6\u4E0D\u5305\u542B\u7A0B\u5E8F\u5305{0}
compiler.misc.file.does.not.contain.module=\u6587\u4EF6\u4E0D\u5305\u542B\u6A21\u5757\u58F0\u660E
@@ -1516,12 +1584,12 @@
# compiler.err.no.elem.type=\
# \[\*\] cannot have a type
-# 0: type
+# 0: message segment
compiler.misc.try.not.applicable.to.type=try-with-resources \u4E0D\u9002\u7528\u4E8E\u53D8\u91CF\u7C7B\u578B\n({0})
#####
-# 0: message segment or type, 1: message segment
+# 0: object, 1: message segment
compiler.err.type.found.req=\u610F\u5916\u7684\u7C7B\u578B\n\u9700\u8981: {1}\n\u627E\u5230: {0}
## The following are all possible strings for the first argument ({0}) of the
@@ -1597,10 +1665,9 @@
# 0: list of type, 1: message segment
compiler.misc.diamond.invalid.args=\u6B64\u4E0A\u4E0B\u6587\u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528\u4E3A{1}\u63A8\u65AD\u7684\u7C7B\u578B\u53C2\u6570{0}\n\u63A8\u65AD\u53C2\u6570\u5728\u7B7E\u540D\u5C5E\u6027\u4E2D\u65E0\u6CD5\u8868\u8FBE
-# 0: unused
+# 0: type
compiler.misc.diamond.and.explicit.params=\u4E0D\u80FD\u5C06 ''<>'' \u4E0E\u6784\u9020\u5668\u7684\u663E\u5F0F\u7C7B\u578B\u53C2\u6570\u4E00\u8D77\u4F7F\u7528
-# 0: unused
compiler.misc.mref.infer.and.explicit.params=\u4E0D\u80FD\u5C06\u539F\u59CB\u6784\u9020\u5668\u5F15\u7528\u4E0E\u6784\u9020\u5668\u7684\u663E\u5F0F\u7C7B\u578B\u53C2\u6570\u4E00\u8D77\u4F7F\u7528
# 0: type, 1: list of type
@@ -1623,7 +1690,7 @@
compiler.warn.auxiliary.class.accessed.from.outside.of.its.source.file={1} \u4E2D\u7684\u8F85\u52A9\u7C7B{0}\u4E0D\u5E94\u4ECE\u5176\u81EA\u8EAB\u7684\u6E90\u6587\u4EF6\u4EE5\u5916\u8BBF\u95EE
## The first argument ({0}) is a "kindname".
-# 0: symbol kind, 1: symbol, 2: symbol
+# 0: kind name, 1: symbol, 2: symbol
compiler.err.abstract.cant.be.accessed.directly=\u65E0\u6CD5\u76F4\u63A5\u8BBF\u95EE{2}\u4E2D\u7684\u62BD\u8C61{0} {1}
## The first argument ({0}) is a "kindname".
@@ -1641,6 +1708,7 @@
## Both arguments ({0}, {1}) are "kindname"s. {0} is a comma-separated list
## of kindnames (the list should be identical to that provided in source.
+# 0: set of kind name, 1: set of kind name
compiler.err.unexpected.type=\u610F\u5916\u7684\u7C7B\u578B\n\u9700\u8981: {0}\n\u627E\u5230: {1}
compiler.err.unexpected.lambda=\u6B64\u5904\u4E0D\u5E94\u4E3A lambda \u8868\u8FBE\u5F0F
@@ -1651,32 +1719,32 @@
## The second argument {1} is the non-resolved symbol
## The third argument {2} is a list of type parameters (non-empty if {1} is a method)
## The fourth argument {3} is a list of argument types (non-empty if {1} is a method)
-# 0: symbol kind, 1: name, 2: unused, 3: unused
+# 0: kind name, 1: name, 2: unused, 3: unused
compiler.err.cant.resolve=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {0} {1}
-# 0: symbol kind, 1: name, 2: unused, 3: list of type
+# 0: kind name, 1: name, 2: unused, 3: list of type
compiler.err.cant.resolve.args=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {0} {1}({3})
-# 0: symbol kind, 1: name, 2: list of type, 3: list of type
+# 0: kind name, 1: name, 2: list of type, 3: list of type
compiler.err.cant.resolve.args.params=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {0} <{2}>{1}({3})
## arguments from {0} to {3} have the same meaning as above
## The fifth argument {4} is a location subdiagnostic (see below)
-# 0: symbol kind, 1: name, 2: unused, 3: unused, 4: message segment
+# 0: kind name, 1: name, 2: unused, 3: unused, 4: message segment
compiler.err.cant.resolve.location=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {0} {1}\n\u4F4D\u7F6E: {4}
-# 0: symbol kind, 1: name, 2: unused, 3: list of type, 4: message segment
+# 0: kind name, 1: name, 2: unused, 3: list of type, 4: message segment
compiler.err.cant.resolve.location.args=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {0} {1}({3})\n\u4F4D\u7F6E: {4}
-# 0: symbol kind, 1: name, 2: list of type, 3: list, 4: message segment
+# 0: kind name, 1: name, 2: list of type, 3: list, 4: message segment
compiler.err.cant.resolve.location.args.params=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {0} <{2}>{1}({3})\n\u4F4D\u7F6E: {4}
### Following are replicated/used for method reference diagnostics
-# 0: symbol kind, 1: name, 2: unused, 3: list of type, 4: message segment
+# 0: kind name, 1: name, 2: unused, 3: list of type, 4: message segment
compiler.misc.cant.resolve.location.args=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {0} {1}({3})\n\u4F4D\u7F6E: {4}
-# 0: symbol kind, 1: name, 2: list of type, 3: list, 4: message segment
+# 0: kind name, 1: name, 2: list of type, 3: list, 4: message segment
compiler.misc.cant.resolve.location.args.params=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {0} <{2}>{1}({3})\n\u4F4D\u7F6E: {4}
##a location subdiagnostic is composed as follows:
@@ -1684,10 +1752,10 @@
## The second argument {1} is the location name
## The third argument {2} is the location type (only when {1} is a variable name)
-# 0: symbol kind, 1: type or symbol, 2: unused
+# 0: kind name, 1: type or symbol, 2: unused
compiler.misc.location={0} {1}
-# 0: symbol kind, 1: symbol, 2: type
+# 0: kind name, 1: symbol, 2: type
compiler.misc.location.1=\u7C7B\u578B\u4E3A{2}\u7684{0} {1}
## The following are all possible string for "kindname".
@@ -1732,7 +1800,7 @@
# 0: message segment
compiler.err.override.static={0}\n\u8986\u76D6\u7684\u65B9\u6CD5\u4E3A static
-# 0: message segment, 1: set of modifier
+# 0: message segment, 1: set of flag
compiler.err.override.meth={0}\n\u88AB\u8986\u76D6\u7684\u65B9\u6CD5\u4E3A{1}
# 0: message segment, 1: type
@@ -1740,7 +1808,7 @@
# In the following string {1} is a space separated list of Java Keywords, as
# they would have been declared in the source code
-# 0: message segment, 1: set of modifier
+# 0: message segment, 1: set of flag or string
compiler.err.override.weaker.access={0}\n\u6B63\u5728\u5C1D\u8BD5\u5206\u914D\u66F4\u4F4E\u7684\u8BBF\u95EE\u6743\u9650; \u4EE5\u524D\u4E3A{1}
# 0: message segment, 1: type, 2: type
@@ -1787,30 +1855,64 @@
# 0: symbol, 1: symbol, 2: symbol, 3: symbol
compiler.misc.varargs.clash.with={1}\u4E2D\u7684{0}\u8986\u76D6\u4E86{3}\u4E2D\u7684{2}
-# 0: symbol kind, 1: symbol, 2: symbol, 3: message segment
+# 0: kind name, 1: symbol, 2: symbol, 3: message segment
compiler.misc.inapplicable.method={0} {1}.{2}\u4E0D\u9002\u7528\n({3})
########################################
-# Diagnostics for language feature changes
+# Diagnostics for language feature changes.
+# Such diagnostics have a common template which can be customized by using a feature
+# diagnostic fragment (one of those given below).
########################################
-# 0: string
-compiler.err.modules.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u6A21\u5757\n(\u8BF7\u4F7F\u7528 -source 9 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u6A21\u5757)
-
-# 0: string
-compiler.misc.diamond.and.anon.class.not.supported.in.source=\u5728 -source {0} \u4E2D\u65E0\u6CD5\u4F7F\u7528\u5E26\u6709\u533F\u540D\u5185\u90E8\u7C7B\u7684 ''<>''\n(\u8BF7\u4F7F\u7528 -source 9 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u5141\u8BB8\u5E26\u6709\u533F\u540D\u5185\u90E8\u7C7B\u7684 ''<>'')
-
-# 0: string
-compiler.err.unsupported.binary.lit=-source {0} \u4E2D\u4E0D\u652F\u6301\u4E8C\u8FDB\u5236\u6587\u5B57\n(\u8BF7\u4F7F\u7528 -source 7 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u4E8C\u8FDB\u5236\u6587\u5B57)
-
-# 0: string
-compiler.err.unsupported.underscore.lit=-source {0} \u4E2D\u4E0D\u652F\u6301\u6587\u5B57\u4E2D\u5B58\u5728\u4E0B\u5212\u7EBF\n(\u8BF7\u4F7F\u7528 -source 7 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u5141\u8BB8\u6587\u5B57\u4E2D\u5B58\u5728\u4E0B\u5212\u7EBF)
-
-# 0: string
-compiler.err.try.with.resources.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 try-with-resources\n(\u8BF7\u4F7F\u7528 -source 7 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 try-with-resources)
-
-# 0: string
-compiler.err.var.in.try.with.resources.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u5728 try-with-resources \u4F7F\u7528\u53D8\u91CF\n(\u8BF7\u4F7F\u7528 -source 9 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u5141\u8BB8\u5728 try-with-resources \u4E2D\u4F7F\u7528\u53D8\u91CF)
+# 0: message segment (feature), 1: string (found version), 2: string (expected version)
+compiler.err.feature.not.supported.in.source=-source {1} \u4E2D\u4E0D\u652F\u6301 {0}\n(\u8BF7\u4F7F\u7528 -source {2} \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 {0})
+
+# 0: message segment (feature), 1: string (found version), 2: string (expected version)
+compiler.err.feature.not.supported.in.source.plural=-source {1} \u4E2D\u4E0D\u652F\u6301 {0}\n(\u8BF7\u4F7F\u7528 -source {2} \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 {0})
+
+# 0: message segment (feature), 1: string (found version), 2: string (expected version)
+compiler.misc.feature.not.supported.in.source=-source {1} \u4E2D\u4E0D\u652F\u6301 {0}\n(\u8BF7\u4F7F\u7528 -source {2} \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 {0})
+
+# 0: message segment (feature), 1: string (found version), 2: string (expected version)
+compiler.misc.feature.not.supported.in.source.plural=-source {1} \u4E2D\u4E0D\u652F\u6301 {0}\n(\u8BF7\u4F7F\u7528 -source {2} \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 {0})
+
+compiler.misc.feature.modules=\u6A21\u5757
+
+compiler.misc.feature.diamond.and.anon.class=''<>'' \u5177\u6709\u533F\u540D\u7684\u5185\u90E8\u7C7B
+
+compiler.misc.feature.binary.lit=\u4E8C\u8FDB\u5236\u6587\u5B57
+
+compiler.misc.feature.underscore.lit=\u6587\u5B57\u4E2D\u7684\u4E0B\u5212\u7EBF
+
+compiler.misc.feature.try.with.resources=try-with-resources
+
+compiler.misc.feature.var.in.try.with.resources=try-with-resources \u4E2D\u7684\u53D8\u91CF
+
+compiler.misc.feature.type.annotations=\u7C7B\u578B\u6CE8\u91CA
+
+compiler.misc.feature.annotations.after.type.params=\u5728\u65B9\u6CD5\u7C7B\u578B\u53C2\u6570\u4E4B\u540E\u7684\u6CE8\u91CA
+
+compiler.misc.feature.repeatable.annotations=\u91CD\u590D\u7684\u6CE8\u91CA
+
+compiler.misc.feature.diamond=diamond \u8FD0\u7B97\u7B26
+
+compiler.misc.feature.multicatch=multi-catch \u8BED\u53E5
+
+compiler.misc.feature.string.switch=switch \u4E2D\u7684\u5B57\u7B26\u4E32
+
+compiler.misc.feature.lambda=lambda \u8868\u8FBE\u5F0F
+
+compiler.misc.feature.method.references=\u65B9\u6CD5\u5F15\u7528
+
+compiler.misc.feature.default.methods=\u9ED8\u8BA4\u65B9\u6CD5
+
+compiler.misc.feature.intersection.types.in.cast=\u4EA4\u53C9\u7C7B\u578B
+
+compiler.misc.feature.static.intf.methods=\u9759\u6001\u63A5\u53E3\u65B9\u6CD5
+
+compiler.misc.feature.static.intf.method.invoke=\u9759\u6001\u63A5\u53E3\u65B9\u6CD5\u8C03\u7528
+
+compiler.misc.feature.private.intf.methods=\u79C1\u6709\u63A5\u53E3\u65B9\u6CD5
compiler.warn.underscore.as.identifier=\u4ECE\u53D1\u884C\u7248 9 \u5F00\u59CB, ''_'' \u4E3A\u5173\u952E\u5B57, \u4E0D\u80FD\u7528\u4F5C\u6807\u8BC6\u7B26
@@ -1825,15 +1927,14 @@
# TODO 308: make a better error message
compiler.err.this.as.identifier=\u4ECE\u53D1\u884C\u7248 8 \u5F00\u59CB, ''this'' \u53EA\u80FD\u4F5C\u4E3A\u63A5\u6536\u65B9\u7C7B\u578B\u7684\u53C2\u6570\u540D, \u8BE5\u53C2\u6570\u5FC5\u987B\u4E3A\u7B2C\u4E00\u4E2A\u53C2\u6570
-# 0: symbol
compiler.err.receiver.parameter.not.applicable.constructor.toplevel.class=\u63A5\u6536\u65B9\u53C2\u6570\u4E0D\u9002\u7528\u4E8E\u9876\u5C42\u7C7B\u7684\u6784\u9020\u5668
# TODO 308: make a better error message
-# 0: symbol
+# 0: annotation
compiler.err.cant.type.annotate.scoping.1=\u65E0\u6CD5\u4F7F\u7528 type-use \u6CE8\u91CA {0} \u6765\u6CE8\u91CA\u786E\u5B9A\u4F5C\u7528\u57DF\u7ED3\u6784
# TODO 308: make a better error message
-# 0: list of symbol
+# 0: list of annotation
compiler.err.cant.type.annotate.scoping=\u65E0\u6CD5\u4F7F\u7528 type-use \u6CE8\u91CA {0} \u6765\u6CE8\u91CA\u786E\u5B9A\u4F5C\u7528\u57DF\u7ED3\u6784
# 0: type, 1: type
@@ -1850,45 +1951,6 @@
compiler.err.no.annotations.on.dot.class=\u7C7B\u6587\u5B57\u7C7B\u578B\u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528\u4EFB\u4F55\u6CE8\u91CA
-# 0: string
-compiler.err.type.annotations.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u7C7B\u578B\u6CE8\u91CA\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u7C7B\u578B\u6CE8\u91CA)
-
-# 0: string
-compiler.err.annotations.after.type.params.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u65B9\u6CD5\u7C7B\u578B\u53C2\u6570\u540E\u7684\u6CE8\u91CA\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u65B9\u6CD5\u7C7B\u578B\u53C2\u6570\u540E\u7684\u6CE8\u91CA)
-
-# 0: string
-compiler.err.repeatable.annotations.not.supported.in.source=-source {0}\u4E2D\u4E0D\u652F\u6301\u91CD\u590D\u6CE8\u91CA\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u91CD\u590D\u6CE8\u91CA)
-
-# 0: string
-compiler.err.diamond.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 diamond \u8FD0\u7B97\u7B26\n(\u8BF7\u4F7F\u7528 -source 7 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 diamond \u8FD0\u7B97\u7B26)
-
-# 0: string
-compiler.err.multicatch.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 multi-catch \u8BED\u53E5\n(\u8BF7\u4F7F\u7528 -source 7 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 multi-catch \u8BED\u53E5)
-
-# 0: string
-compiler.err.string.switch.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 switch \u4E2D\u5B58\u5728\u5B57\u7B26\u4E32\n(\u8BF7\u4F7F\u7528 -source 7 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u5141\u8BB8 switch \u4E2D\u5B58\u5728\u5B57\u7B26\u4E32)
-
-# 0: string
-compiler.err.lambda.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 lambda \u8868\u8FBE\u5F0F\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 lambda \u8868\u8FBE\u5F0F)
-
-# 0: string
-compiler.err.method.references.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u65B9\u6CD5\u5F15\u7528\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u65B9\u6CD5\u5F15\u7528)
-
-# 0: string
-compiler.err.default.methods.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u9ED8\u8BA4\u65B9\u6CD5\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u9ED8\u8BA4\u65B9\u6CD5)
-
-# 0: string
-compiler.err.intersection.types.in.cast.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u8F6C\u6362\u4E2D\u7684\u4EA4\u53C9\u7C7B\u578B\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u8F6C\u6362\u4E2D\u7684\u4EA4\u53C9\u7C7B\u578B)
-
-# 0: string
-compiler.err.static.intf.methods.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u9759\u6001\u63A5\u53E3\u65B9\u6CD5\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u9759\u6001\u63A5\u53E3\u65B9\u6CD5)
-
-# 0: string
-compiler.err.static.intf.method.invoke.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u9759\u6001\u63A5\u53E3\u65B9\u6CD5\u8C03\u7528\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u9759\u6001\u63A5\u53E3\u65B9\u6CD5\u8C03\u7528)
-
-# 0: string
-compiler.err.private.intf.methods.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u79C1\u6709\u63A5\u53E3\u65B9\u6CD5\n(\u8BF7\u4F7F\u7528 -source 9 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u79C1\u6709\u63A5\u53E3\u65B9\u6CD5)
-
########################################
# Diagnostics for verbose resolution
# used by Resolve (debug only)
@@ -2120,6 +2182,9 @@
# 0: symbol, 1: name, 2: symbol, 3: symbol
compiler.err.package.clash.from.requires=\u6A21\u5757 {0} \u540C\u65F6\u4ECE {2} \u548C {3} \u8BFB\u53D6\u7A0B\u5E8F\u5305 {1}
+# 0: name, 1: symbol, 2: symbol
+compiler.err.package.clash.from.requires.in.unnamed=\u672A\u547D\u540D\u7684\u6A21\u5757\u540C\u65F6\u4ECE {1} \u548C {2} \u8BFB\u53D6\u7A0B\u5E8F\u5305 {0}
+
# 0: string
compiler.err.module.not.found.in.module.source.path=\u5728\u6A21\u5757\u6E90\u8DEF\u5F84\u4E2D\u627E\u4E0D\u5230\u6A21\u5757 {0}
@@ -2153,9 +2218,6 @@
# 0: symbol
compiler.err.add.reads.with.release=\u4E0D\u5141\u8BB8\u5728\u4F7F\u7528 --release \u65F6\u4E3A\u7CFB\u7EDF\u6A21\u5757 {0} \u6DFB\u52A0\u8BFB\u53D6\u7EF4\u8FB9:
-# 0: symbol
-compiler.err.patch.module.with.release=\u4E0D\u5141\u8BB8\u5728\u4F7F\u7528 --release \u65F6\u4E3A\u7CFB\u7EDF\u6A21\u5757 {0} \u6253\u8865\u4E01
-
compiler.warn.addopens.ignored=--add-opens \u5728\u7F16\u8BD1\u65F6\u6CA1\u6709\u4EFB\u4F55\u6548\u679C
compiler.misc.locn.module_source_path=\u6A21\u5757\u6E90\u8DEF\u5F84
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties Wed Jan 17 12:19:06 2018 +0000
@@ -215,6 +215,8 @@
javac.err.file.not.directory=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u306F\u3042\u308A\u307E\u305B\u3093: {0}
javac.err.file.not.file=\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u3042\u308A\u307E\u305B\u3093: {0}
javac.err.cannot.access.runtime.env=\u5B9F\u884C\u6642\u74B0\u5883\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093
+javac.err.two.class.loaders.1=javac\u304C\u8907\u6570\u306E\u30AF\u30E9\u30B9\u30FB\u30ED\u30FC\u30C0\u30FC\u9593\u3067\u5206\u5272\u3055\u308C\u3066\u3044\u307E\u3059: \u69CB\u6210\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044
+javac.err.two.class.loaders.2=javac\u304C\u8907\u6570\u306E\u30AF\u30E9\u30B9\u30FB\u30ED\u30FC\u30C0\u30FC\u9593\u3067\u5206\u5272\u3055\u308C\u3066\u3044\u307E\u3059:\n\u30AF\u30E9\u30B9\u306E\u53D6\u5F97\u5143\u30D5\u30A1\u30A4\u30EB: {0}\njavac\u306E\u53D6\u5F97\u5143: {1}
javac.err.bad.value.for.option={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5024\u304C\u4E0D\u6B63\u3067\u3059: ''{1}''
javac.err.no.value.for.option={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5024\u304C\u3042\u308A\u307E\u305B\u3093
javac.err.repeated.value.for.patch.module={0}\u306B\u5BFE\u3057\u3066--patch-module\u304C\u8907\u6570\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
@@ -245,5 +247,3 @@
javac.err.release.bootclasspath.conflict=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u306F--release\u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
javac.err.unsupported.release.version=\u30EA\u30EA\u30FC\u30B9\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-
-javac.err.release.not.standard.file.manager=--release\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u6307\u5B9A\u3055\u308C\u305FJavaFileManager\u306FStandardJavaFileManager\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -215,6 +215,8 @@
javac.err.file.not.directory=\u4E0D\u662F\u76EE\u5F55: {0}
javac.err.file.not.file=\u4E0D\u662F\u6587\u4EF6: {0}
javac.err.cannot.access.runtime.env=\u65E0\u6CD5\u8BBF\u95EE\u8FD0\u884C\u65F6\u73AF\u5883
+javac.err.two.class.loaders.1=javac \u5728\u591A\u4E2A\u7C7B\u52A0\u8F7D\u5668\u4E4B\u95F4\u62C6\u5206: \u8BF7\u68C0\u67E5\u914D\u7F6E
+javac.err.two.class.loaders.2=javac \u5728\u591A\u4E2A\u7C7B\u52A0\u8F7D\u5668\u4E4B\u95F4\u62C6\u5206:\n\u4E00\u4E2A\u7C7B\u6765\u81EA\u6587\u4EF6: {0}\n\u800C javac \u6765\u81EA {1}
javac.err.bad.value.for.option={0} \u9009\u9879\u7684\u503C\u9519\u8BEF: ''{1}''
javac.err.no.value.for.option={0} \u9009\u9879\u6CA1\u6709\u503C
javac.err.repeated.value.for.patch.module=\u4E3A {0} \u591A\u6B21\u6307\u5B9A\u4E86 --patch-module
@@ -245,5 +247,3 @@
javac.err.release.bootclasspath.conflict=\u9009\u9879 {0} \u4E0D\u80FD\u4E0E --release \u4E00\u8D77\u4F7F\u7528
javac.err.unsupported.release.version=\u4E0D\u652F\u6301\u53D1\u884C\u7248\u672C {0}
-
-javac.err.release.not.standard.file.manager=\u6307\u5B9A\u4E86 --release \u9009\u9879, \u4F46\u63D0\u4F9B\u7684 JavaFileManager \u4E0D\u662F StandardJavaFileManager\u3002
--- a/src/jdk.compiler/share/classes/sun/tools/serialver/resources/serialver_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.compiler/share/classes/sun/tools/serialver/resources/serialver_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,6 +1,6 @@
NotSerializable=\u7C7B{0}\u65E0\u6CD5\u5E8F\u5217\u5316\u3002
ClassNotFound=\u627E\u4E0D\u5230\u7C7B{0}\u3002
-error.parsing.classpath=\u5BF9\u7C7B\u8DEF\u5F84 {0} \u8FDB\u884C\u89E3\u6790\u65F6\u51FA\u9519\u3002
+error.parsing.classpath=\u5BF9\u7C7B\u8DEF\u5F84 {0} \u8FDB\u884C\u8BED\u6CD5\u5206\u6790\u65F6\u51FA\u9519\u3002
error.missing.classpath=\u7F3A\u5C11 -classpath \u9009\u9879\u7684\u53C2\u6570
invalid.flag=\u65E0\u6548\u6807\u8BB0{0}\u3002
usage=\u7528\u6CD5: serialver [-classpath classpath] [classname...]
--- a/src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeanLinker.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.dynalink/share/classes/jdk/dynalink/beans/BeanLinker.java Wed Jan 17 12:19:06 2018 +0000
@@ -116,7 +116,7 @@
if(clazz.isArray()) {
// Some languages won't have a notion of manipulating collections. Exposing "length" on arrays as an
// explicit property is beneficial for them.
- setPropertyGetter("length", MethodHandles.arrayLength(clazz), ValidationType.EXACT_CLASS);
+ setPropertyGetter("length", GET_ARRAY_LENGTH, ValidationType.IS_ARRAY);
} else if(Collection.class.isAssignableFrom(clazz)) {
setPropertyGetter("length", GET_COLLECTION_LENGTH, ValidationType.INSTANCE_OF);
} else if(Map.class.isAssignableFrom(clazz)) {
@@ -546,6 +546,9 @@
private static final MethodHandle GET_MAP_LENGTH = Lookup.PUBLIC.findVirtual(Map.class, "size",
MethodType.methodType(int.class));
+ private static final MethodHandle GET_ARRAY_LENGTH = Lookup.PUBLIC.findStatic(Array.class, "getLength",
+ MethodType.methodType(int.class, Object.class));
+
private static void assertParameterCount(final CallSiteDescriptor descriptor, final int paramCount) {
if(descriptor.getMethodType().parameterCount() != paramCount) {
throw new BootstrapMethodError(descriptor.getOperation() + " must have exactly " + paramCount + " parameters.");
--- a/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Http1HeaderParser.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Http1HeaderParser.java Wed Jan 17 12:19:06 2018 +0000
@@ -213,9 +213,9 @@
assert state == State.HEADER_FOUND_CR || state == State.HEADER_FOUND_LF;
char c = (char)input.get();
if (c == LF && state == State.HEADER_FOUND_CR) {
- String headerString = sb.toString();
- sb = new StringBuilder();
- addHeaderFromString(headerString);
+ // header value will be flushed by
+ // resumeOrSecondCR if next line does not
+ // begin by SP or HT
state = State.HEADER_FOUND_CR_LF;
} else if (c == SP || c == HT) {
sb.append(SP); // parity with MessageHeaders
@@ -229,11 +229,28 @@
private void resumeOrSecondCR(ByteBuffer input) {
assert state == State.HEADER_FOUND_CR_LF;
- assert sb.length() == 0;
char c = (char)input.get();
if (c == CR) {
+ if (sb.length() > 0) {
+ // no continuation line - flush
+ // previous header value.
+ String headerString = sb.toString();
+ sb = new StringBuilder();
+ addHeaderFromString(headerString);
+ }
state = State.HEADER_FOUND_CR_LF_CR;
+ } else if (c == SP || c == HT) {
+ assert sb.length() != 0;
+ sb.append(SP); // continuation line
+ state = State.HEADER;
} else {
+ if (sb.length() > 0) {
+ // no continuation line - flush
+ // previous header value.
+ String headerString = sb.toString();
+ sb = new StringBuilder();
+ addHeaderFromString(headerString);
+ }
sb.append(c);
state = State.HEADER;
}
--- a/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Http2Connection.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Http2Connection.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -558,6 +558,15 @@
}
/**
+ * Streams initiated by a client MUST use odd-numbered stream
+ * identifiers; those initiated by the server MUST use even-numbered
+ * stream identifiers.
+ */
+ private static final boolean isSeverInitiatedStream(int streamid) {
+ return (streamid & 0x1) == 0;
+ }
+
+ /**
* Handles stream 0 (common) frames that apply to whole connection and passes
* other stream specific frames to that Stream object.
*
@@ -602,10 +611,19 @@
decodeHeaders((HeaderFrame) frame, decoder);
}
- int sid = frame.streamid();
- if (sid >= nextstreamid && !(frame instanceof ResetFrame)) {
- // otherwise the stream has already been reset/closed
- resetStream(streamid, ResetFrame.PROTOCOL_ERROR);
+ if (!(frame instanceof ResetFrame)) {
+ if (isSeverInitiatedStream(streamid)) {
+ if (streamid < nextPushStream) {
+ // trailing data on a cancelled push promise stream,
+ // reset will already have been sent, ignore
+ Log.logTrace("Ignoring cancelled push promise frame " + frame);
+ } else {
+ resetStream(streamid, ResetFrame.PROTOCOL_ERROR);
+ }
+ } else if (streamid >= nextstreamid) {
+ // otherwise the stream has already been reset/closed
+ resetStream(streamid, ResetFrame.PROTOCOL_ERROR);
+ }
}
return;
}
--- a/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Stream.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Stream.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -429,15 +429,9 @@
}
PushGroup<T> pushGroup = exchange.getPushGroup();
if (pushGroup == null) {
- // no push handler set by the user code, i.e. cancel / reject
- IOException ex = new IOException("Stream " + streamid + " cancelled by users handler");
- pushStream.cancelImpl(ex);
- return;
- }
-
- if (pushGroup.noMorePushes()) {
- cancelImpl(new IllegalStateException("unexpected push promise"
- + " on stream " + streamid));
+ Log.logTrace("Rejecting push promise stream " + streamid);
+ connection.resetStream(pushStream.streamid, ResetFrame.REFUSED_STREAM);
+ pushStream.close();
return;
}
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java Wed Jan 17 12:19:06 2018 +0000
@@ -135,8 +135,9 @@
/**
* Gets the implementor for the interface class {@code type}.
*
- * @return the implementor if there is a single implementor, 0 if there is no implementor, or
- * {@code type} itself if there is more than one implementor
+ * @return the implementor if there is a single implementor, {@code null} if there is no
+ * implementor, or {@code type} itself if there is more than one implementor
+ * @throws IllegalArgumentException if type is not an interface type
*/
native HotSpotResolvedObjectTypeImpl getImplementor(HotSpotResolvedObjectTypeImpl type);
@@ -256,14 +257,13 @@
native void resolveInvokeHandleInPool(HotSpotConstantPool constantPool, int cpi);
/**
- * If {@code cpi} denotes an entry representing a resolved dynamic adapter
- * (see {@code resolveInvokeDynamicInPool} and {@code resolveInvokeHandleInPool}),
- * return the opcode of the instruction for which the resolution was performed
- * ({@code invokedynamic} or {@code invokevirtual}}, or {@code -1} otherwise.
+ * If {@code cpi} denotes an entry representing a resolved dynamic adapter (see
+ * {@code resolveInvokeDynamicInPool} and {@code resolveInvokeHandleInPool}), return the opcode
+ * of the instruction for which the resolution was performed ({@code invokedynamic} or
+ * {@code invokevirtual}}, or {@code -1} otherwise.
*/
native int isResolvedInvokeHandleInPool(HotSpotConstantPool constantPool, int cpi);
-
/**
* Gets the list of type names (in the format of {@link JavaType#getName()}) denoting the
* classes that define signature polymorphic methods.
@@ -388,7 +388,7 @@
/**
* Gets the static initializer of {@code type}.
*
- * @return 0 if {@code type} has no static initializer
+ * @return {@code null} if {@code type} has no static initializer
*/
native HotSpotResolvedJavaMethodImpl getClassInitializer(HotSpotResolvedObjectTypeImpl type);
@@ -468,7 +468,8 @@
native long getLocalVariableTableStart(HotSpotResolvedJavaMethodImpl method);
/**
- * Sets flags on {@code method} indicating that it should never be inlined or compiled by the VM.
+ * Sets flags on {@code method} indicating that it should never be inlined or compiled by the
+ * VM.
*/
native void setNotInlinableOrCompilable(HotSpotResolvedJavaMethodImpl method);
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaAccessProvider.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotMetaAccessProvider.java Wed Jan 17 12:19:06 2018 +0000
@@ -34,7 +34,6 @@
import java.util.Objects;
import jdk.vm.ci.code.CodeUtil;
-import jdk.vm.ci.code.TargetDescription;
import jdk.vm.ci.common.JVMCIError;
import jdk.vm.ci.meta.DeoptimizationAction;
import jdk.vm.ci.meta.DeoptimizationReason;
@@ -284,11 +283,9 @@
ResolvedJavaType elementType = lookupJavaType.getComponentType();
JavaKind elementKind = elementType.getJavaKind();
final int headerSize = getArrayBaseOffset(elementKind);
- TargetDescription target = runtime.getHostJVMCIBackend().getTarget();
int sizeOfElement = getArrayIndexScale(elementKind);
- int alignment = target.wordSize;
int log2ElementSize = CodeUtil.log2(sizeOfElement);
- return computeArrayAllocationSize(length, alignment, headerSize, log2ElementSize);
+ return computeArrayAllocationSize(length, headerSize, log2ElementSize);
}
return lookupJavaType.instanceSize();
}
@@ -303,11 +300,13 @@
* alignment requirements.
*
* @param length the number of elements in the array
- * @param alignment the object alignment requirement
* @param headerSize the size of the array header
* @param log2ElementSize log2 of the size of an element in the array
+ * @return the size of the memory chunk
*/
- public static int computeArrayAllocationSize(int length, int alignment, int headerSize, int log2ElementSize) {
+ public int computeArrayAllocationSize(int length, int headerSize, int log2ElementSize) {
+ HotSpotVMConfig config = runtime.getConfig();
+ int alignment = config.objectAlignment;
int size = (length << log2ElementSize) + headerSize + (alignment - 1);
int mask = ~(alignment - 1);
return size & mask;
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java Wed Jan 17 12:19:06 2018 +0000
@@ -922,7 +922,10 @@
}
public ResolvedJavaMethod getClassInitializer() {
- return compilerToVM().getClassInitializer(this);
+ if (!isArray()) {
+ return compilerToVM().getClassInitializer(this);
+ }
+ return null;
}
@Override
--- a/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfig.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotVMConfig.java Wed Jan 17 12:19:06 2018 +0000
@@ -68,6 +68,8 @@
final boolean useCompressedOops = getFlag("UseCompressedOops", Boolean.class);
+ final int objectAlignment = getFlag("ObjectAlignmentInBytes", Integer.class);
+
final int prototypeMarkWordOffset = getFieldOffset("Klass::_prototype_header", Integer.class, "markOop");
final int subklassOffset = getFieldOffset("Klass::_subklass", Integer.class, "Klass*");
final int nextSiblingOffset = getFieldOffset("Klass::_next_sibling", Integer.class, "Klass*");
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotReplacementsUtil.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotReplacementsUtil.java Wed Jan 17 12:19:06 2018 +0000
@@ -566,6 +566,28 @@
}
@Fold
+ public static int objectAlignment(@InjectedParameter GraalHotSpotVMConfig config) {
+ return config.objectAlignment;
+ }
+
+ /**
+ * Computes the size of the memory chunk allocated for an array. This size accounts for the
+ * array header size, body size and any padding after the last element to satisfy object
+ * alignment requirements.
+ *
+ * @param length the number of elements in the array
+ * @param headerSize the size of the array header
+ * @param log2ElementSize log2 of the size of an element in the array
+ * @return the size of the memory chunk
+ */
+ public static int arrayAllocationSize(int length, int headerSize, int log2ElementSize) {
+ int alignment = objectAlignment(INJECTED_VMCONFIG);
+ int size = (length << log2ElementSize) + headerSize + (alignment - 1);
+ int mask = ~(alignment - 1);
+ return size & mask;
+ }
+
+ @Fold
public static int instanceHeaderSize(@InjectedParameter GraalHotSpotVMConfig config) {
return config.useCompressedClassPointers ? (2 * wordSize()) - 4 : 2 * wordSize();
}
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/NewObjectSnippets.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/NewObjectSnippets.java Wed Jan 17 12:19:06 2018 +0000
@@ -23,7 +23,6 @@
package org.graalvm.compiler.hotspot.replacements;
import static jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider.getArrayBaseOffset;
-import static jdk.vm.ci.hotspot.HotSpotMetaAccessProvider.computeArrayAllocationSize;
import static org.graalvm.compiler.core.common.GraalOptions.GeneratePIC;
import static org.graalvm.compiler.core.common.calc.UnsignedMath.belowThan;
import static org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG;
@@ -33,6 +32,7 @@
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.PROTOTYPE_MARK_WORD_LOCATION;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.TLAB_END_LOCATION;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.TLAB_TOP_LOCATION;
+import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayAllocationSize;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayKlassOffset;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayLengthOffset;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.config;
@@ -52,7 +52,6 @@
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.useBiasedLocking;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.useTLAB;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.verifyOop;
-import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.wordSize;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.writeTlabTop;
import static org.graalvm.compiler.hotspot.replacements.HotspotSnippetsOptions.ProfileAllocations;
import static org.graalvm.compiler.hotspot.replacements.HotspotSnippetsOptions.ProfileAllocationsContext;
@@ -315,8 +314,7 @@
private static Object allocateArrayImpl(KlassPointer hub, int length, Word prototypeMarkWord, int headerSize, int log2ElementSize, boolean fillContents, Register threadRegister,
boolean maybeUnroll, String typeContext, boolean skipNegativeCheck, OptionValues options, Counters counters) {
Object result;
- int alignment = wordSize();
- int allocationSize = computeArrayAllocationSize(length, alignment, headerSize, log2ElementSize);
+ int allocationSize = arrayAllocationSize(length, headerSize, log2ElementSize);
Word thread = registerAsWord(threadRegister);
Word top = readTlabTop(thread);
Word end = readTlabEnd(thread);
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/NewArrayStub.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/stubs/NewArrayStub.java Wed Jan 17 12:19:06 2018 +0000
@@ -23,6 +23,7 @@
package org.graalvm.compiler.hotspot.stubs;
import static org.graalvm.compiler.hotspot.GraalHotSpotVMConfig.INJECTED_VMCONFIG;
+import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayAllocationSize;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.arrayPrototypeMarkWord;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.getAndClearObjectResult;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.layoutHelperElementTypeMask;
@@ -34,7 +35,6 @@
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.readLayoutHelper;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.registerAsWord;
import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.useCMSIncrementalMode;
-import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.wordSize;
import static org.graalvm.compiler.hotspot.replacements.NewObjectSnippets.MAX_ARRAY_FAST_PATH_ALLOCATION_LENGTH;
import static org.graalvm.compiler.hotspot.replacements.NewObjectSnippets.formatArray;
import static org.graalvm.compiler.hotspot.stubs.NewInstanceStub.refillAllocate;
@@ -42,7 +42,6 @@
import static org.graalvm.compiler.hotspot.stubs.StubUtil.newDescriptor;
import static org.graalvm.compiler.hotspot.stubs.StubUtil.printf;
import static org.graalvm.compiler.hotspot.stubs.StubUtil.verifyObject;
-import static jdk.vm.ci.hotspot.HotSpotMetaAccessProvider.computeArrayAllocationSize;
import org.graalvm.compiler.api.replacements.Fold;
import org.graalvm.compiler.api.replacements.Snippet;
@@ -112,7 +111,7 @@
int log2ElementSize = (layoutHelper >> layoutHelperLog2ElementSizeShift(INJECTED_VMCONFIG)) & layoutHelperLog2ElementSizeMask(INJECTED_VMCONFIG);
int headerSize = (layoutHelper >> layoutHelperHeaderSizeShift(INJECTED_VMCONFIG)) & layoutHelperHeaderSizeMask(INJECTED_VMCONFIG);
int elementKind = (layoutHelper >> layoutHelperElementTypeShift(INJECTED_VMCONFIG)) & layoutHelperElementTypeMask(INJECTED_VMCONFIG);
- int sizeInBytes = computeArrayAllocationSize(length, wordSize(), headerSize, log2ElementSize);
+ int sizeInBytes = arrayAllocationSize(length, headerSize, log2ElementSize);
if (logging(options)) {
printf("newArray: element kind %d\n", elementKind);
printf("newArray: array length %d\n", length);
--- a/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Resources_ja.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Resources_ja.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -75,7 +75,7 @@
{".digestalg.algorithm.name.of.digest.algorithm",
"[-digestalg <algorithm>] \u30C0\u30A4\u30B8\u30A7\u30B9\u30C8\u30FB\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u306E\u540D\u524D"},
{".sigalg.algorithm.name.of.signature.algorithm",
- "[-sigalg <algorithm>] \u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u306E\u540D\u524D"},
+ "[-sigalg <algorithm>] \u30B7\u30B0\u30CD\u30C1\u30E3\u30FB\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u306E\u540D\u524D"},
{".verify.verify.a.signed.JAR.file",
"[-verify] \u7F72\u540D\u4ED8\u304DJAR\u30D5\u30A1\u30A4\u30EB\u306E\u691C\u8A3C"},
{".verbose.suboptions.verbose.output.when.signing.verifying.",
@@ -97,7 +97,7 @@
{".altsignerpath.pathlist.location.of.an.alternative.signing.mechanism",
"[-altsignerpath <pathlist>] \u4EE3\u66FF\u7F72\u540D\u30E1\u30AB\u30CB\u30BA\u30E0\u306E\u5834\u6240\n (\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u975E\u63A8\u5968\u306B\u306A\u308A\u307E\u3057\u305F\u3002)"},
{".internalsf.include.the.SF.file.inside.the.signature.block",
- "[-internalsf] \u7F72\u540D\u30D6\u30ED\u30C3\u30AF\u306B.SF\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3081\u308B"},
+ "[-internalsf] \u30B7\u30B0\u30CD\u30C1\u30E3\u30FB\u30D6\u30ED\u30C3\u30AF\u306B.SF\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3081\u308B"},
{".sectionsonly.don.t.compute.hash.of.entire.manifest",
"[-sectionsonly] \u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5168\u4F53\u306E\u30CF\u30C3\u30B7\u30E5\u306F\u8A08\u7B97\u3057\u306A\u3044"},
{".protected.keystore.has.protected.authentication.path",
@@ -130,7 +130,7 @@
{"k", "k"},
{".and.d.more.", "(\u4ED6\u306B\u3082%d\u500B)"},
{".s.signature.was.verified.",
- " s=\u7F72\u540D\u304C\u691C\u8A3C\u3055\u308C\u307E\u3057\u305F "},
+ " s=\u30B7\u30B0\u30CD\u30C1\u30E3\u304C\u691C\u8A3C\u3055\u308C\u307E\u3057\u305F "},
{".m.entry.is.listed.in.manifest",
" m=\u30A8\u30F3\u30C8\u30EA\u304C\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5185\u306B\u30EA\u30B9\u30C8\u3055\u308C\u307E\u3059"},
{".k.at.least.one.certificate.was.found.in.keystore",
@@ -138,7 +138,7 @@
{".X.not.signed.by.specified.alias.es.",
" X =\u6307\u5B9A\u3057\u305F\u5225\u540D\u3067\u7F72\u540D\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
{"no.manifest.", "\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002"},
- {".Signature.related.entries.","(\u7F72\u540D\u95A2\u9023\u30A8\u30F3\u30C8\u30EA)"},
+ {".Signature.related.entries.","(\u30B7\u30B0\u30CD\u30C1\u30E3\u95A2\u9023\u30A8\u30F3\u30C8\u30EA)"},
{".Unsigned.entries.", "(\u7F72\u540D\u306A\u3057\u306E\u30A8\u30F3\u30C8\u30EA)"},
{"jar.is.unsigned",
"jar\u306F\u7F72\u540D\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
@@ -162,10 +162,11 @@
{"with.weak", "%s (\u5F31)"},
{"key.bit", "%d\u30D3\u30C3\u30C8\u9375"},
{"key.bit.weak", "%d\u30D3\u30C3\u30C8\u9375(\u5F31)"},
+ {"unknown.size", "\u4E0D\u660E\u30B5\u30A4\u30BA"},
{"jarsigner.", "jarsigner: "},
{"signature.filename.must.consist.of.the.following.characters.A.Z.0.9.or.",
- "\u7F72\u540D\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u306B\u4F7F\u7528\u3067\u304D\u308B\u6587\u5B57\u306F\u3001A-Z\u30010-9\u3001_\u3001- \u306E\u307F\u3067\u3059\u3002"},
+ "\u30B7\u30B0\u30CD\u30C1\u30E3\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u306B\u4F7F\u7528\u3067\u304D\u308B\u6587\u5B57\u306F\u3001A-Z\u30010-9\u3001_\u3001- \u306E\u307F\u3067\u3059\u3002"},
{"unable.to.open.jar.file.", "\u6B21\u306Ejar\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093: "},
{"unable.to.create.", "\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: "},
{".adding.", " \u8FFD\u52A0\u4E2D: "},
@@ -204,9 +205,10 @@
{"certificate.is.not.valid.until",
"\u8A3C\u660E\u66F8\u306F{0}\u307E\u3067\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
{"certificate.will.expire.on", "\u8A3C\u660E\u66F8\u306F{0}\u306B\u5931\u52B9\u3057\u307E\u3059"},
- {".CertPath.not.validated.", "[CertPath\u304C\u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093: "},
+ {".Invalid.certificate.chain.", "[\u7121\u52B9\u306A\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3: "},
+ {".Invalid.TSA.certificate.chain.", "[\u7121\u52B9\u306ATSA\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3: "},
{"requesting.a.signature.timestamp",
- "\u7F72\u540D\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u306E\u30EA\u30AF\u30A8\u30B9\u30C8"},
+ "\u30B7\u30B0\u30CD\u30C1\u30E3\u30FB\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u306E\u30EA\u30AF\u30A8\u30B9\u30C8"},
{"TSA.location.", "TSA\u306E\u5834\u6240: "},
{"TSA.certificate.", "TSA\u8A3C\u660E\u66F8: "},
{"no.response.from.the.Timestamping.Authority.",
@@ -219,6 +221,8 @@
{"entry.was.signed.on", "\u30A8\u30F3\u30C8\u30EA\u306F{0}\u306B\u7F72\u540D\u3055\u308C\u307E\u3057\u305F"},
{"Warning.", "\u8B66\u544A: "},
{"Error.", "\u30A8\u30E9\u30FC: "},
+ {"...Signer", ">>> \u7F72\u540D\u8005"},
+ {"...TSA", ">>> TSA"},
{"This.jar.contains.unsigned.entries.which.have.not.been.integrity.checked.",
"\u3053\u306Ejar\u306B\u306F\u3001\u6574\u5408\u6027\u30C1\u30A7\u30C3\u30AF\u3092\u3057\u3066\u3044\u306A\u3044\u7F72\u540D\u306A\u3057\u306E\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 "},
{"This.jar.contains.entries.whose.signer.certificate.has.expired.",
@@ -253,20 +257,26 @@
"\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306ENetscapeCertType\u62E1\u5F35\u6A5F\u80FD\u304C\u30B3\u30FC\u30C9\u7F72\u540D\u3092\u8A31\u53EF\u3057\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002"},
{".{0}.extension.does.not.support.code.signing.",
"[{0}\u62E1\u5F35\u6A5F\u80FD\u306F\u30B3\u30FC\u30C9\u7F72\u540D\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093]"},
- {"The.signer.s.certificate.chain.is.not.validated.reason.1",
- "\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u307E\u3060\u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u7406\u7531: %s"},
+ {"The.signer.s.certificate.chain.is.invalid.reason.1",
+ "\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u7121\u52B9\u3067\u3059\u3002\u7406\u7531: %s"},
+ {"The.tsa.certificate.chain.is.invalid.reason.1",
+ "TSA\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u7121\u52B9\u3067\u3059\u3002\u7406\u7531: %s"},
{"The.signer.s.certificate.is.self.signed.",
"\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u306F\u81EA\u5DF1\u7F72\u540D\u3055\u308C\u3066\u3044\u307E\u3059\u3002"},
{"The.1.algorithm.specified.for.the.2.option.is.considered.a.security.risk.",
"%1$s\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0(%2$s\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u6307\u5B9A)\u306F\u3001\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30FB\u30EA\u30B9\u30AF\u3068\u307F\u306A\u3055\u308C\u307E\u3059\u3002"},
{"The.1.signing.key.has.a.keysize.of.2.which.is.considered.a.security.risk.",
- "%s\u7F72\u540D\u9375\u306B\u306F\u3001\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30FB\u30EA\u30B9\u30AF\u3068\u307F\u306A\u3055\u308C\u308B%d\u306E\u9375\u30B5\u30A4\u30BA\u304C\u3042\u308A\u307E\u3059\u3002"},
- {"This.jar.contains.entries.whose.certificate.chain.is.not.validated.reason.1",
- "\u3053\u306Ejar\u306B\u306F\u3001\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u307E\u3060\u691C\u8A3C\u3055\u308C\u3066\u3044\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u7406\u7531: %s"},
+ "%1$s\u7F72\u540D\u9375\u306B\u306F\u3001\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30FB\u30EA\u30B9\u30AF\u3068\u307F\u306A\u3055\u308C\u308B%2$d\u306E\u9375\u30B5\u30A4\u30BA\u304C\u3042\u308A\u307E\u3059\u3002"},
+ {"This.jar.contains.entries.whose.certificate.chain.is.invalid.reason.1",
+ "\u3053\u306Ejar\u306B\u306F\u3001\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u7121\u52B9\u306A\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u7406\u7531: %s"},
+ {"This.jar.contains.entries.whose.tsa.certificate.chain.is.invalid.reason.1",
+ "\u3053\u306Ejar\u306B\u306F\u3001TSA\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u7121\u52B9\u306A\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u7406\u7531: %s"},
{"no.timestamp.signing",
"-tsa\u307E\u305F\u306F-tsacert\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u3053\u306Ejar\u306B\u306F\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u4ED8\u52A0\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u306A\u3044\u3068\u3001\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306E\u6709\u52B9\u671F\u9650(%1$tY-%1$tm-%1$td)\u5F8C\u306B\u3001\u30E6\u30FC\u30B6\u30FC\u306F\u3053\u306Ejar\u3092\u691C\u8A3C\u3067\u304D\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002"},
{"no.timestamp.verifying",
"\u3053\u306Ejar\u306B\u306F\u3001\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u306A\u3044\u7F72\u540D\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u306A\u3044\u3068\u3001\u3044\u305A\u308C\u304B\u306E\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306E\u6709\u52B9\u671F\u9650\u5F8C\u306B(\u65E9\u3051\u308C\u3070%1$tY-%1$tm-%1$td)\u30E6\u30FC\u30B6\u30FC\u306F\u3053\u306Ejar\u3092\u691C\u8A3C\u3067\u304D\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002"},
+ {"bad.timestamp.verifying",
+ "\u3053\u306Ejar\u306B\u306F\u3001\u7121\u52B9\u306A\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u306E\u3042\u308B\u7F72\u540D\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u6709\u52B9\u306A\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u306A\u3044\u3068\u3001\u3044\u305A\u308C\u304B\u306E\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306E\u6709\u52B9\u671F\u9650\u5F8C\u306B(\u65E9\u3051\u308C\u3070%1$tY-%1$tm-%1$td)\u30E6\u30FC\u30B6\u30FC\u306F\u3053\u306Ejar\u3092\u691C\u8A3C\u3067\u304D\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\n\u8A73\u7D30\u306F\u3001-J-Djava.security.debug=jar\u3092\u6307\u5B9A\u3057\u3066jarsigner\u3092\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
{"Unknown.password.type.", "\u4E0D\u660E\u306A\u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30BF\u30A4\u30D7: "},
{"Cannot.find.environment.variable.",
"\u74B0\u5883\u5909\u6570\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: "},
--- a/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Resources_zh_CN.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Resources_zh_CN.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -162,6 +162,7 @@
{"with.weak", "%s (\u5F31)"},
{"key.bit", "%d \u4F4D\u5BC6\u94A5"},
{"key.bit.weak", "%d \u4F4D\u5BC6\u94A5 (\u5F31)"},
+ {"unknown.size", "\u672A\u77E5\u5927\u5C0F"},
{"jarsigner.", "jarsigner: "},
{"signature.filename.must.consist.of.the.following.characters.A.Z.0.9.or.",
@@ -204,7 +205,8 @@
{"certificate.is.not.valid.until",
"\u76F4\u5230{0}, \u8BC1\u4E66\u624D\u6709\u6548"},
{"certificate.will.expire.on", "\u8BC1\u4E66\u5C06\u5728{0}\u5230\u671F"},
- {".CertPath.not.validated.", "[CertPath \u672A\u9A8C\u8BC1: "},
+ {".Invalid.certificate.chain.", "[\u65E0\u6548\u7684\u8BC1\u4E66\u94FE: "},
+ {".Invalid.TSA.certificate.chain.", "[\u65E0\u6548 TSA \u7684\u8BC1\u4E66\u94FE: "},
{"requesting.a.signature.timestamp",
"\u6B63\u5728\u8BF7\u6C42\u7B7E\u540D\u65F6\u95F4\u6233"},
{"TSA.location.", "TSA \u4F4D\u7F6E: "},
@@ -219,6 +221,8 @@
{"entry.was.signed.on", "\u6761\u76EE\u7684\u7B7E\u540D\u65E5\u671F\u4E3A {0}"},
{"Warning.", "\u8B66\u544A: "},
{"Error.", "\u9519\u8BEF: "},
+ {"...Signer", ">>> \u7B7E\u540D\u8005"},
+ {"...TSA", ">>> TSA"},
{"This.jar.contains.unsigned.entries.which.have.not.been.integrity.checked.",
"\u6B64 jar \u5305\u542B\u5C1A\u672A\u8FDB\u884C\u5B8C\u6574\u6027\u68C0\u67E5\u7684\u672A\u7B7E\u540D\u6761\u76EE\u3002 "},
{"This.jar.contains.entries.whose.signer.certificate.has.expired.",
@@ -253,20 +257,26 @@
"\u6B64 jar \u5305\u542B\u7531\u4E8E\u7B7E\u540D\u8005\u8BC1\u4E66\u7684 NetscapeCertType \u6269\u5C55\u800C\u65E0\u6CD5\u8FDB\u884C\u4EE3\u7801\u7B7E\u540D\u7684\u6761\u76EE\u3002"},
{".{0}.extension.does.not.support.code.signing.",
"[{0} \u6269\u5C55\u4E0D\u652F\u6301\u4EE3\u7801\u7B7E\u540D]"},
- {"The.signer.s.certificate.chain.is.not.validated.reason.1",
- "\u7B7E\u540D\u8005\u8BC1\u4E66\u94FE\u672A\u7ECF\u8FC7\u9A8C\u8BC1\u3002\u539F\u56E0: %s"},
+ {"The.signer.s.certificate.chain.is.invalid.reason.1",
+ "\u7B7E\u540D\u8005\u8BC1\u4E66\u94FE\u65E0\u6548\u3002\u539F\u56E0: %s"},
+ {"The.tsa.certificate.chain.is.invalid.reason.1",
+ "TSA \u8BC1\u4E66\u94FE\u65E0\u6548\u3002\u539F\u56E0: %s"},
{"The.signer.s.certificate.is.self.signed.",
"\u7B7E\u540D\u8005\u8BC1\u4E66\u4E3A\u81EA\u7B7E\u540D\u8BC1\u4E66\u3002"},
{"The.1.algorithm.specified.for.the.2.option.is.considered.a.security.risk.",
"\u4E3A %2$s \u9009\u9879\u6307\u5B9A\u7684 %1$s \u7B97\u6CD5\u88AB\u89C6\u4E3A\u5B58\u5728\u5B89\u5168\u98CE\u9669\u3002"},
{"The.1.signing.key.has.a.keysize.of.2.which.is.considered.a.security.risk.",
- "%s \u7B7E\u540D\u5BC6\u94A5\u7684\u5BC6\u94A5\u5927\u5C0F\u4E3A %d, \u8FD9\u88AB\u89C6\u4E3A\u5B58\u5728\u5B89\u5168\u98CE\u9669\u3002"},
- {"This.jar.contains.entries.whose.certificate.chain.is.not.validated.reason.1",
- "\u6B64 jar \u5305\u542B\u5176\u8BC1\u4E66\u94FE\u672A\u7ECF\u8FC7\u9A8C\u8BC1\u7684\u6761\u76EE\u3002\u539F\u56E0: %s"},
+ "%1$s \u7B7E\u540D\u5BC6\u94A5\u7684\u5BC6\u94A5\u5927\u5C0F\u4E3A %2$d, \u8FD9\u88AB\u89C6\u4E3A\u5B58\u5728\u5B89\u5168\u98CE\u9669\u3002"},
+ {"This.jar.contains.entries.whose.certificate.chain.is.invalid.reason.1",
+ "\u6B64 jar \u5305\u542B\u5176\u8BC1\u4E66\u94FE\u65E0\u6548\u7684\u6761\u76EE\u3002\u539F\u56E0: %s"},
+ {"This.jar.contains.entries.whose.tsa.certificate.chain.is.invalid.reason.1",
+ "\u6B64 jar \u5305\u542B\u5176 TSA \u8BC1\u4E66\u94FE\u65E0\u6548\u7684\u6761\u76EE\u3002\u539F\u56E0: %s"},
{"no.timestamp.signing",
"\u672A\u63D0\u4F9B -tsa \u6216 -tsacert, \u6B64 jar \u6CA1\u6709\u65F6\u95F4\u6233\u3002\u5982\u679C\u6CA1\u6709\u65F6\u95F4\u6233, \u5219\u5728\u7B7E\u540D\u8005\u8BC1\u4E66\u7684\u5230\u671F\u65E5\u671F (%1$tY-%1$tm-%1$td) \u4E4B\u540E, \u7528\u6237\u53EF\u80FD\u65E0\u6CD5\u9A8C\u8BC1\u6B64 jar\u3002"},
{"no.timestamp.verifying",
"\u6B64 jar \u5305\u542B\u7684\u7B7E\u540D\u6CA1\u6709\u65F6\u95F4\u6233\u3002\u5982\u679C\u6CA1\u6709\u65F6\u95F4\u6233, \u5219\u5728\u5176\u4E2D\u4EFB\u4E00\u7B7E\u540D\u8005\u8BC1\u4E66\u5230\u671F (\u6700\u65E9\u4E3A %1$tY-%1$tm-%1$td) \u4E4B\u540E, \u7528\u6237\u53EF\u80FD\u65E0\u6CD5\u9A8C\u8BC1\u6B64 jar\u3002"},
+ {"bad.timestamp.verifying",
+ "\u6B64 jar \u5305\u542B\u5E26\u6709\u65E0\u6548\u65F6\u95F4\u6233\u7684\u7B7E\u540D\u3002\u5982\u679C\u6CA1\u6709\u6709\u6548\u65F6\u95F4\u6233, \u5219\u5728\u5176\u4E2D\u4EFB\u4E00\u7B7E\u540D\u8005\u8BC1\u4E66\u5230\u671F (\u6700\u65E9\u4E3A %1$tY-%1$tm-%1$td) \u4E4B\u540E, \u7528\u6237\u53EF\u80FD\u65E0\u6CD5\u9A8C\u8BC1\u6B64 jar\u3002\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 -J-Djava.security.debug=jar \u91CD\u65B0\u8FD0\u884C jarsigner\u3002"},
{"Unknown.password.type.", "\u672A\u77E5\u53E3\u4EE4\u7C7B\u578B: "},
{"Cannot.find.environment.variable.",
"\u627E\u4E0D\u5230\u73AF\u5883\u53D8\u91CF: "},
--- a/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_es.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_es.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -34,7 +34,7 @@
error.bad.uflag=El indicador 'u' necesita la especificaci\u00F3n de archivos de manifiesto, de entrada o indicador 'e'.
error.bad.eflag=El indicador 'e' y el manifiesto con el atributo 'Main-Class' no pueden especificarse \na la vez.
error.bad.dflag=La opci\u00F3n '-d, --describe-module' no requiere especificar archivos de entrada
-error.bad.reason=Motivo err\u00F3neo: {0}, debe ser anticuado, anticuado para eliminaci\u00F3n o incubando
+error.bad.reason=Motivo err\u00F3neo: {0}, debe ser en desuso, en desuso para eliminaci\u00F3n o incubando
error.nosuch.fileordir={0} : no existe tal archivo o directorio
error.write.file=Error al escribir un archivo jar existente
error.create.dir={0} : no se ha podido crear el directorio
@@ -115,7 +115,7 @@
main.help.opt.create.update.hash-modules=\ --hash-modules=PATTERN Calcular y registrar los hash de m\u00F3dulos\n que coinciden con el patr\u00F3n proporcionado y que dependen\n directa o indirectamente de la creaci\u00F3n de un archivo jar modular\n o de la actualizaci\u00F3n de un archivo jar no modular
main.help.opt.create.update.module-path=\ -p, --module-path Ubicaci\u00F3n de la dependencia de m\u00F3dulo para generar\n el hash
main.help.opt.create.update.do-not-resolve-by-default=\ --do-not-resolve-by-default Excluir del conjunto de m\u00F3dulos ra\u00EDz por defecto
-main.help.opt.create.update.warn-if-resolved=\ --warn-if-resolved Indicaci\u00F3n para que una herramienta emita una advertencia si el m\u00F3dulo\n se ha resuelto. Anticuado, anticuado para eliminaci\u00F3n\n o incubando
+main.help.opt.create.update.warn-if-resolved=\ --warn-if-resolved Indicaci\u00F3n para que una herramienta emita una advertencia si el m\u00F3dulo\n se ha resuelto. En desuso, en desuso para eliminaci\u00F3n\n o incubando
main.help.opt.create.update.index=\ Modificadores de operaci\u00F3n v\u00E1lidos solo en el modo de creaci\u00F3n, actualizaci\u00F3n y generaci\u00F3n de \u00EDndice:\n
main.help.opt.create.update.index.no-compress=\ -0, --no-compress Solo almacenar; no usar compresi\u00F3n ZIP
main.help.opt.other=\ Otras opciones:\n
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -159,6 +159,7 @@
public void process(Helper helper, String arg) {
helper.encoding = arg;
helper.setCompilerOpt(opt, arg);
+ helper.setFileManagerOpt(Option.ENCODING, arg);
}
},
@@ -211,6 +212,13 @@
}
},
+ ADD_OPENS("--add-opens", true) {
+ @Override
+ public void process(Helper helper, String arg) throws InvalidValueException {
+ Option.ADD_OPENS.process(helper.getOptionHelper(), opt, arg);
+ }
+ },
+
// ----- doclet options -----
DOCLET("-doclet", true), // handled in setDocletInvoker
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/resources/javadoc_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/resources/javadoc_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -62,15 +62,14 @@
main.doclet_method_not_accessible=\u5728 doclet \u7C7B{0}\u4E2D, \u65E0\u6CD5\u8BBF\u95EE\u65B9\u6CD5{1}
main.internal_error_exception_thrown=\u5185\u90E8\u9519\u8BEF: \u5728 doclet \u7C7B{0}\u4E2D, \u65B9\u6CD5{1}\u5DF2\u629B\u51FA\u5F02\u5E38\u9519\u8BEF{2}
main.exception_thrown=\u5728 doclet \u7C7B{0}\u4E2D, \u65B9\u6CD5{1}\u5DF2\u629B\u51FA\u5F02\u5E38\u9519\u8BEF{2}
-main.illegal_locale_name=\u533A\u57DF\u8BBE\u7F6E\u4E0D\u53EF\u7528: {0}
-main.malformed_locale_name=\u683C\u5F0F\u9519\u8BEF\u7684\u533A\u57DF\u8BBE\u7F6E\u540D\u79F0: {0}
+main.illegal_locale_name=\u8BED\u8A00\u73AF\u5883\u4E0D\u53EF\u7528: {0}
+main.malformed_locale_name=\u683C\u5F0F\u9519\u8BEF\u7684\u8BED\u8A00\u73AF\u5883\u540D\u79F0: {0}
main.file_not_found=\u627E\u4E0D\u5230\u6587\u4EF6: "{0}"
main.file_ignored=\u5DF2\u5FFD\u7565\u6587\u4EF6: "{0}" (\u5C1A\u4E0D\u652F\u6301)
main.illegal_class_name=\u975E\u6CD5\u7C7B\u540D: "{0}"
main.illegal_package_name=\u975E\u6CD5\u7684\u7A0B\u5E8F\u5305\u540D\u79F0: "{0}"
main.release.bootclasspath.conflict=\u9009\u9879{0}\u65E0\u6CD5\u4E0E -release \u4E00\u8D77\u4F7F\u7528
main.unsupported.release.version=\u4E0D\u652F\u6301\u53D1\u884C\u7248\u672C {0}
-main.release.not.standard.file.manager=\u6307\u5B9A\u4E86 -release \u9009\u9879, \u4F46\u63D0\u4F9B\u7684 JavaFileManager \u4E0D\u662F StandardJavaFileManager\u3002
main.option.invalid.value={0}
tag.illegal_char_in_arr_dim=\u6807\u8BB0{0}: \u6570\u7EC4\u7EF4\u4E2D\u6709\u8BED\u6CD5\u9519\u8BEF, \u65B9\u6CD5\u53C2\u6570: {1}
tag.illegal_see_tag=\u6807\u8BB0{0}: \u65B9\u6CD5\u53C2\u6570\u4E2D\u6709\u8BED\u6CD5\u9519\u8BEF: {1}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlConfiguration.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlConfiguration.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -204,9 +204,10 @@
public boolean frames = true;
/**
- * This is the HTML version of the generated pages. HTML 4.01 is the default output version.
+ * This is the HTML version of the generated pages.
+ * The default value is determined later.
*/
- public HtmlVersion htmlVersion = HtmlVersion.HTML4;
+ public HtmlVersion htmlVersion = null;
/**
* Collected set of doclint options
@@ -298,6 +299,12 @@
if (!generalValidOptions()) {
return false;
}
+
+ if (htmlVersion == null) {
+ reporter.print(WARNING, getText("doclet.HTML_version_not_specified", helpfile));
+ htmlVersion = HtmlVersion.HTML4;
+ }
+
// check if helpfile exists
if (!helpfile.isEmpty()) {
DocFile help = DocFile.createFileForInput(this, helpfile);
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java Wed Jan 17 12:19:06 2018 +0000
@@ -820,11 +820,14 @@
Content summary = new ContentBuilder();
if (display(usesTrees)) {
description = usesTrees.get(t);
- if (description != null) {
- summary.addContent(description);
+ if (description != null && !description.isEmpty()) {
+ summary.addContent(HtmlTree.DIV(HtmlStyle.block, description));
+ } else {
+ addSummaryComment(t, summary);
}
+ } else {
+ summary.addContent(Contents.SPACE);
}
- addSummaryComment(t, summary);
table.addRow(typeLinkContent, summary);
}
}
@@ -847,11 +850,12 @@
Content desc = new ContentBuilder();
if (display(providesTrees)) {
description = providesTrees.get(srv);
- if (description != null) {
- desc.addContent(description);
+ desc.addContent((description != null && !description.isEmpty())
+ ? HtmlTree.DIV(HtmlStyle.block, description)
+ : Contents.SPACE);
+ } else {
+ desc.addContent(Contents.SPACE);
}
- }
- addSummaryComment(srv, desc);
// Only display the implementation details in the "all" mode.
if (moduleMode == ModuleMode.ALL && !implSet.isEmpty()) {
desc.addContent(new HtmlTree(HtmlTag.BR));
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties Wed Jan 17 12:19:06 2018 +0000
@@ -384,3 +384,11 @@
name prefix followed by .*, which expands to all sub-packages\n\
of the given package. Prefix the package specifier with - to\n\
disable checks for the specified packages.
+
+# L10N: do not localize the option names -html4 and -html5
+doclet.HTML_version_not_specified=\
+ You have not specified the version of HTML to use.\n\
+ The default is currently HTML 4.01, but this will change to HTML5\n\
+ in a future release. To suppress this warning, please specify the\n\
+ version of HTML used in your documentation comments and to be\n\
+ generated by this doclet, using the -html4 or -html5 options.
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties Wed Jan 17 12:19:06 2018 +0000
@@ -74,34 +74,12 @@
doclet.see.class_or_package_not_accessible=\u30BF\u30B0{0}: \u53C2\u7167\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093: {1}
doclet.tag.invalid_usage=\u30BF\u30B0{0}\u306E\u4F7F\u7528\u65B9\u6CD5\u304C\u7121\u52B9\u3067\u3059
doclet.Deprecated_API=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044API
-doclet.Deprecated_For_Removal=\u524A\u9664\u4E88\u5B9A\u306E\u975E\u63A8\u5968
-doclet.Deprecated_Modules=\u975E\u63A8\u5968\u30E2\u30B8\u30E5\u30FC\u30EB
-doclet.Deprecated_Packages=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30D1\u30C3\u30B1\u30FC\u30B8
-doclet.Deprecated_Classes=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30AF\u30E9\u30B9
-doclet.Deprecated_Enums=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u6319\u578B
-doclet.Deprecated_Interfaces=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
-doclet.Deprecated_Exceptions=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u4F8B\u5916
-doclet.Deprecated_Annotation_Types=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u6CE8\u91C8\u578B
-doclet.Deprecated_Errors=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30A8\u30E9\u30FC
-doclet.Deprecated_Fields=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30D5\u30A3\u30FC\u30EB\u30C9
-doclet.Deprecated_Constructors=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF
-doclet.Deprecated_Methods=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30E1\u30BD\u30C3\u30C9
-doclet.Deprecated_Enum_Constants=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u6319\u578B\u5B9A\u6570
-doclet.Deprecated_Annotation_Type_Members=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u6CE8\u91C8\u578B\u306E\u8981\u7D20
-doclet.deprecated_for_removal=\u524A\u9664\u4E88\u5B9A\u306E\u975E\u63A8\u5968
-doclet.deprecated_modules=\u975E\u63A8\u5968\u30E2\u30B8\u30E5\u30FC\u30EB
-doclet.deprecated_packages=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30D1\u30C3\u30B1\u30FC\u30B8
-doclet.deprecated_classes=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30AF\u30E9\u30B9
-doclet.deprecated_enums=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u6319\u578B
-doclet.deprecated_interfaces=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
-doclet.deprecated_exceptions=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u4F8B\u5916
-doclet.deprecated_annotation_types=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u6CE8\u91C8\u578B
-doclet.deprecated_errors=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30A8\u30E9\u30FC
-doclet.deprecated_fields=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30D5\u30A3\u30FC\u30EB\u30C9
-doclet.deprecated_constructors=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF
-doclet.deprecated_methods=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30E1\u30BD\u30C3\u30C9
-doclet.deprecated_enum_constants=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u6319\u578B\u5B9A\u6570
-doclet.deprecated_annotation_type_members=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u6CE8\u91C8\u578B\u306E\u8981\u7D20
+doclet.For_Removal=\u524A\u9664\u7528
+doclet.Annotation_Types=\u6CE8\u91C8\u578B
+doclet.Annotation_Type_Members=\u6CE8\u91C8\u578B\u8981\u7D20
+doclet.for_removal=\u524A\u9664\u7528
+doclet.annotation_types=\u6CE8\u91C8\u578B
+doclet.annotation_type_members=\u6CE8\u91C8\u578B\u8981\u7D20
doclet.Generated_Docs_Untitled=\u751F\u6210\u3055\u308C\u305F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8(\u30BF\u30A4\u30C8\u30EB\u306A\u3057)
doclet.Other_Packages=\u305D\u306E\u4ED6\u306E\u30D1\u30C3\u30B1\u30FC\u30B8
doclet.Description=\u8AAC\u660E
@@ -192,11 +170,13 @@
doclet.Window_ClassUse_Header={0} {1}\u306E\u4F7F\u7528
doclet.ClassUse_Title={0}\u306E\u4F7F\u7528
doclet.navClassUse=\u4F7F\u7528
-doclet.Error_in_packagelist=-group\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u4F7F\u7528\u65B9\u6CD5\u306E\u30A8\u30E9\u30FC: {0} {1}
-doclet.Groupname_already_used=-group\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u304A\u3044\u3066\u3001\u3059\u3067\u306B\u30B0\u30EB\u30FC\u30D7\u540D\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059: {0}
-doclet.Same_package_name_used=\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u5F62\u5F0F\u304C2\u56DE\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059: {0}
+doclet.Error_in_grouplist=-group\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u7121\u52B9\u3067\u3059: {0} {1}
+doclet.Groupname_already_used=-group\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3001\u30B0\u30EB\u30FC\u30D7\u540D\u304C\u3059\u3067\u306B\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059: {0}
+doclet.Same_element_name_used=\u8981\u7D20\u540D\u307E\u305F\u306F\u30D1\u30BF\u30FC\u30F3\u304C2\u56DE\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059: {0}
# option specifiers
+doclet.usage.add-stylesheet.parameters=<file>
+doclet.usage.add-stylesheet.description=\u751F\u6210\u3055\u308C\u305F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u8FFD\u52A0\u30B9\u30BF\u30A4\u30EB\u30B7\u30FC\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB
doclet.usage.d.parameters=<directory>
doclet.usage.d.description=\u51FA\u529B\u30D5\u30A1\u30A4\u30EB\u306E\u8EE2\u9001\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA
@@ -244,8 +224,8 @@
doclet.usage.excludedocfilessubdir.parameters=<name>:..
doclet.usage.excludedocfilessubdir.description=\u6307\u5B9A\u3055\u308C\u305F\u540D\u524D\u306Edoc-files\u30B5\u30D6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u3059\u3079\u3066\u9664\u5916\u3057\u307E\u3059
-doclet.usage.group.parameters=<name> <p1>:<p2>..
-doclet.usage.group.description=\u6307\u5B9A\u3059\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u6982\u8981\u30DA\u30FC\u30B8\u306B\u304A\u3044\u3066\u30B0\u30EB\u30FC\u30D7\u5316\u3057\u307E\u3059
+doclet.usage.group.parameters=<name> <g1>:<g2>...
+doclet.usage.group.description=\u6307\u5B9A\u3059\u308B\u8981\u7D20\u3092\u6982\u8981\u30DA\u30FC\u30B8\u306B\u304A\u3044\u3066\u30B0\u30EB\u30FC\u30D7\u5316\u3057\u307E\u3059
doclet.usage.nocomment.description=\u8A18\u8FF0\u304A\u3088\u3073\u30BF\u30B0\u3092\u6291\u5236\u3057\u3066\u5BA3\u8A00\u306E\u307F\u3092\u751F\u6210\u3057\u307E\u3059
@@ -294,8 +274,8 @@
doclet.usage.keywords.description=HTML\u306Emeta\u30BF\u30B0\u306B\u3001\u30D1\u30C3\u30B1\u30FC\u30B8\u3001\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30E1\u30F3\u30D0\u30FC\u306E\u60C5\u5831\u3092\u542B\u3081\u307E\u3059
-doclet.usage.stylesheetfile.parameters=<path>
-doclet.usage.stylesheetfile.description=\u751F\u6210\u3055\u308C\u305F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u30B9\u30BF\u30A4\u30EB\u5909\u66F4\u7528\u30D5\u30A1\u30A4\u30EB
+doclet.usage.main-stylesheet.parameters=<file>
+doclet.usage.main-stylesheet.description=\u751F\u6210\u3055\u308C\u305F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u30B9\u30BF\u30A4\u30EB\u5909\u66F4\u7528\u30D5\u30A1\u30A4\u30EB
doclet.usage.docencoding.parameters=<name>
doclet.usage.docencoding.description=\u51FA\u529B\u306E\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u6307\u5B9A\u3057\u307E\u3059
@@ -304,6 +284,10 @@
doclet.usage.no-frames.description=\u751F\u6210\u3055\u308C\u305F\u51FA\u529B\u3067\u30D5\u30EC\u30FC\u30E0\u306E\u4F7F\u7528\u3092\u7121\u52B9\u306B\u3057\u307E\u3059
+doclet.usage.override-methods.parameters=(\u8A73\u7D30|\u8981\u7D04)
+
+doclet.usage.override-methods.description=\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9\u3092\u8A73\u7D30\u307E\u305F\u306F\u8981\u7D04\u30BB\u30AF\u30B7\u30E7\u30F3\u3067\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5316\u3057\u307E\u3059
+
doclet.usage.allow-script-in-comments.description=\u30AA\u30D7\u30B7\u30E7\u30F3\u304A\u3088\u3073\u30B3\u30E1\u30F3\u30C8\u3067JavaScript\u3092\u8A31\u53EF\u3057\u307E\u3059
doclet.usage.xdocrootparent.parameters=<url>
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -74,34 +74,12 @@
doclet.see.class_or_package_not_accessible=\u6807\u8BB0{0}: \u65E0\u6CD5\u8BBF\u95EE\u5F15\u7528: {1}
doclet.tag.invalid_usage=\u6807\u8BB0 {0} \u7684\u7528\u6CD5\u65E0\u6548
doclet.Deprecated_API=\u5DF2\u8FC7\u65F6\u7684 API
-doclet.Deprecated_For_Removal=\u5DF2\u8FC7\u65F6, \u5F85\u5220\u9664
-doclet.Deprecated_Modules=\u5DF2\u8FC7\u65F6\u6A21\u5757
-doclet.Deprecated_Packages=\u5DF2\u8FC7\u65F6\u7A0B\u5E8F\u5305
-doclet.Deprecated_Classes=\u5DF2\u8FC7\u65F6\u7684\u7C7B
-doclet.Deprecated_Enums=\u5DF2\u8FC7\u65F6\u7684\u679A\u4E3E
-doclet.Deprecated_Interfaces=\u5DF2\u8FC7\u65F6\u7684\u63A5\u53E3
-doclet.Deprecated_Exceptions=\u5DF2\u8FC7\u65F6\u7684\u5F02\u5E38\u9519\u8BEF
-doclet.Deprecated_Annotation_Types=\u5DF2\u8FC7\u65F6\u7684\u6CE8\u91CA\u7C7B\u578B
-doclet.Deprecated_Errors=\u5DF2\u8FC7\u65F6\u7684\u9519\u8BEF
-doclet.Deprecated_Fields=\u5DF2\u8FC7\u65F6\u7684\u5B57\u6BB5
-doclet.Deprecated_Constructors=\u5DF2\u8FC7\u65F6\u7684\u6784\u9020\u5668
-doclet.Deprecated_Methods=\u5DF2\u8FC7\u65F6\u7684\u65B9\u6CD5
-doclet.Deprecated_Enum_Constants=\u5DF2\u8FC7\u65F6\u7684\u679A\u4E3E\u5E38\u91CF
-doclet.Deprecated_Annotation_Type_Members=\u5DF2\u8FC7\u65F6\u7684\u6CE8\u91CA\u7C7B\u578B\u5143\u7D20
-doclet.deprecated_for_removal=\u5DF2\u8FC7\u65F6, \u5F85\u5220\u9664
-doclet.deprecated_modules=\u5DF2\u8FC7\u65F6\u6A21\u5757
-doclet.deprecated_packages=\u5DF2\u8FC7\u65F6\u7A0B\u5E8F\u5305
-doclet.deprecated_classes=\u5DF2\u8FC7\u65F6\u7684\u7C7B
-doclet.deprecated_enums=\u5DF2\u8FC7\u65F6\u7684\u679A\u4E3E
-doclet.deprecated_interfaces=\u5DF2\u8FC7\u65F6\u7684\u63A5\u53E3
-doclet.deprecated_exceptions=\u5DF2\u8FC7\u65F6\u7684\u5F02\u5E38\u9519\u8BEF
-doclet.deprecated_annotation_types=\u5DF2\u8FC7\u65F6\u7684\u6CE8\u91CA\u7C7B\u578B
-doclet.deprecated_errors=\u5DF2\u8FC7\u65F6\u7684\u9519\u8BEF
-doclet.deprecated_fields=\u5DF2\u8FC7\u65F6\u7684\u5B57\u6BB5
-doclet.deprecated_constructors=\u5DF2\u8FC7\u65F6\u7684\u6784\u9020\u5668
-doclet.deprecated_methods=\u5DF2\u8FC7\u65F6\u7684\u65B9\u6CD5
-doclet.deprecated_enum_constants=\u5DF2\u8FC7\u65F6\u7684\u679A\u4E3E\u5E38\u91CF
-doclet.deprecated_annotation_type_members=\u5DF2\u8FC7\u65F6\u7684\u6CE8\u91CA\u7C7B\u578B\u5143\u7D20
+doclet.For_Removal=\u5F85\u5220\u9664
+doclet.Annotation_Types=\u6CE8\u91CA\u7C7B\u578B
+doclet.Annotation_Type_Members=\u6CE8\u91CA\u7C7B\u578B\u5143\u7D20
+doclet.for_removal=\u5F85\u5220\u9664
+doclet.annotation_types=\u6CE8\u91CA\u7C7B\u578B
+doclet.annotation_type_members=\u6CE8\u91CA\u7C7B\u578B\u5143\u7D20
doclet.Generated_Docs_Untitled=\u751F\u6210\u7684\u6587\u6863 (\u65E0\u6807\u9898)
doclet.Other_Packages=\u5176\u4ED6\u7A0B\u5E8F\u5305
doclet.Description=\u8BF4\u660E
@@ -192,11 +170,13 @@
doclet.Window_ClassUse_Header={0} {1}\u7684\u4F7F\u7528
doclet.ClassUse_Title={0}\u7684\u4F7F\u7528
doclet.navClassUse=\u4F7F\u7528
-doclet.Error_in_packagelist=\u4F7F\u7528 -group \u9009\u9879\u65F6\u51FA\u9519: {0} {1}
-doclet.Groupname_already_used=\u5728 -group \u9009\u9879\u4E2D, groupname \u5DF2\u4F7F\u7528: {0}
-doclet.Same_package_name_used=\u7A0B\u5E8F\u5305\u540D\u79F0\u5F62\u5F0F\u4F7F\u7528\u4E86\u4E24\u6B21: {0}
+doclet.Error_in_grouplist=\u9519\u8BEF\u7684 -group \u9009\u9879: {0} {1}
+doclet.Groupname_already_used=\u5728 -group \u9009\u9879\u4E2D, \u7EC4\u540D\u5DF2\u4F7F\u7528: {0}
+doclet.Same_element_name_used=\u5143\u7D20\u540D\u79F0\u6216\u6A21\u5F0F\u4F7F\u7528\u4E86\u4E24\u6B21: {0}
# option specifiers
+doclet.usage.add-stylesheet.parameters=<file>
+doclet.usage.add-stylesheet.description=\u7528\u4E8E\u6240\u751F\u6210\u6587\u6863\u7684\u5176\u4ED6\u6837\u5F0F\u8868\u6587\u4EF6
doclet.usage.d.parameters=<directory>
doclet.usage.d.description=\u8F93\u51FA\u6587\u4EF6\u7684\u76EE\u6807\u76EE\u5F55
@@ -244,8 +224,8 @@
doclet.usage.excludedocfilessubdir.parameters=<name>:..
doclet.usage.excludedocfilessubdir.description=\u6392\u9664\u5177\u6709\u7ED9\u5B9A\u540D\u79F0\u7684\u6240\u6709\u6587\u6863\u6587\u4EF6\u5B50\u76EE\u5F55
-doclet.usage.group.parameters=<name> <p1>:<p2>..
-doclet.usage.group.description=\u5C06\u6307\u5B9A\u7684\u7A0B\u5E8F\u5305\u5728\u6982\u89C8\u9875\u9762\u4E0A\u5206\u7EC4\u5728\u4E00\u8D77
+doclet.usage.group.parameters=<name> <g1>:<g2>...
+doclet.usage.group.description=\u5C06\u6307\u5B9A\u7684\u5143\u7D20\u5728\u6982\u89C8\u9875\u9762\u4E0A\u5206\u7EC4\u5728\u4E00\u8D77
doclet.usage.nocomment.description=\u4E0D\u751F\u6210\u8BF4\u660E\u548C\u6807\u8BB0, \u53EA\u751F\u6210\u58F0\u660E
@@ -294,8 +274,8 @@
doclet.usage.keywords.description=\u968F\u7A0B\u5E8F\u5305, \u7C7B\u548C\u6210\u5458\u4FE1\u606F\u4E00\u8D77\u9644\u5E26 HTML \u5143\u6807\u8BB0
-doclet.usage.stylesheetfile.parameters=<path>
-doclet.usage.stylesheetfile.description=\u7528\u4E8E\u66F4\u6539\u751F\u6210\u6587\u6863\u7684\u6837\u5F0F\u7684\u6587\u4EF6
+doclet.usage.main-stylesheet.parameters=<file>
+doclet.usage.main-stylesheet.description=\u7528\u4E8E\u66F4\u6539\u751F\u6210\u6587\u6863\u7684\u6837\u5F0F\u7684\u6587\u4EF6
doclet.usage.docencoding.parameters=<name>
doclet.usage.docencoding.description=\u6307\u5B9A\u8F93\u51FA\u7684\u5B57\u7B26\u7F16\u7801
@@ -304,6 +284,10 @@
doclet.usage.no-frames.description=\u7981\u6B62\u5728\u751F\u6210\u7684\u8F93\u51FA\u4E2D\u4F7F\u7528\u5E27
+doclet.usage.override-methods.parameters=(detail|summary)
+
+doclet.usage.override-methods.description=\u5728\u8BE6\u7EC6\u8D44\u6599\u90E8\u5206\u6216\u6982\u8981\u90E8\u5206\u4E2D\u7684\u6587\u6863\u8986\u76D6\u65B9\u6CD5
+
doclet.usage.allow-script-in-comments.description=\u5141\u8BB8\u5728\u9009\u9879\u548C\u6CE8\u91CA\u4E2D\u4F7F\u7528 JavaScript
doclet.usage.xdocrootparent.parameters=<url>
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties Wed Jan 17 12:19:06 2018 +0000
@@ -11,11 +11,10 @@
doclet.Class_0_extends_implements_serializable=Class {0} extends {1} implements Serializable
doclet.Option_conflict=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u304C{1}\u3068\u77DB\u76FE\u3057\u307E\u3059
doclet.Option_reuse=\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u518D\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059: {0}
+doclet.Option_invalid={1}\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F15\u6570{0}\u304C\u7121\u52B9\u3067\u3059
doclet.Option_doclint_no_qualifiers=\u30A2\u30AF\u30BB\u30B9\u4FEE\u98FE\u5B50\u306F-Xdoclint\u306E\u5F15\u6570\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
doclet.Option_doclint_invalid_arg=-Xdoclint\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F15\u6570\u304C\u7121\u52B9\u3067\u3059
doclet.Option_doclint_package_invalid_arg=-Xdoclint/package\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F15\u6570\u304C\u7121\u52B9\u3067\u3059
-doclet.builder.exception.in.component=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u69CB\u7BC9\u4E2D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0}\n\t({1})
-doclet.builder.unknown.component=doclet\u30D3\u30EB\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u3067\u4E0D\u660E\u306A\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u304C\u53C2\u7167\u3055\u308C\u3066\u3044\u307E\u3059: {0}
doclet.error.initializing.dest.dir=\u8EE2\u9001\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u521D\u671F\u5316\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0}
doclet.exception.read.file=\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0}\n\t({1})
doclet.exception.write.file=\u30D5\u30A1\u30A4\u30EB\u306E\u66F8\u8FBC\u307F\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0}\n\t({1})
@@ -37,8 +36,11 @@
doclet.JavaScript_in_comment=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30FB\u30B3\u30E1\u30F3\u30C8\u306BJavaScript\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002\n--allow-script-in-comments\u3092\u4F7F\u7528\u3057\u3066\u3001JavaScript\u306E\u4F7F\u7528\u3092\u8A31\u53EF\u3057\u3066\u304F\u3060\u3055\u3044\u3002
doclet.JavaScript_in_option=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u306BJavaScript\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\n--allow-script-in-comments\u3092\u4F7F\u7528\u3057\u3066\u3001JavaScript\u306E\u4F7F\u7528\u3092\u8A31\u53EF\u3057\u3066\u304F\u3060\u3055\u3044\u3002
doclet.Packages=\u30D1\u30C3\u30B1\u30FC\u30B8
+doclet.All_Packages=\u3059\u3079\u3066\u306E\u30D1\u30C3\u30B1\u30FC\u30B8
doclet.Modules=\u30E2\u30B8\u30E5\u30FC\u30EB
+doclet.All_Modules=\u3059\u3079\u3066\u306E\u30E2\u30B8\u30E5\u30FC\u30EB
doclet.Other_Packages=\u305D\u306E\u4ED6\u306E\u30D1\u30C3\u30B1\u30FC\u30B8
+doclet.Other_Modules=\u305D\u306E\u4ED6\u306E\u30E2\u30B8\u30E5\u30FC\u30EB
doclet.Notice_taglet_registered=\u767B\u9332\u3055\u308C\u305F\u30BF\u30B0\u30EC\u30C3\u30C8{0} ...
doclet.Notice_taglet_unseen=\u6CE8\u610F: \u975E\u8868\u793A\u306E\u30AB\u30B9\u30BF\u30E0\u30FB\u30BF\u30B0: {0}
doclet.Notice_taglet_overriden=\u6CE8\u610F: \u6A19\u6E96\u30BF\u30B0\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\u30AB\u30B9\u30BF\u30E0\u30FB\u30BF\u30B0: {0}
@@ -134,15 +136,25 @@
doclet.Exception=\u4F8B\u5916
doclet.exception=\u4F8B\u5916
doclet.exceptions=\u4F8B\u5916
+doclet.ExportedTo=\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8
+doclet.OpenedTo=\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u30AA\u30FC\u30D7\u30F3
doclet.Package_private=(package private)
doclet.Nested_Classes_Interfaces_Inherited_From_Class=\u30AF\u30E9\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9/\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
-doclet.Nested_Classes_Interface_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9/\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
+doclet.Nested_Classes_Interfaces_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9/\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
+doclet.Nested_Classes_Interfaces_Declared_In_Class=\u30AF\u30E9\u30B9\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9/\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
+doclet.Nested_Classes_Interfaces_Declared_In_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9/\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
doclet.Methods_Inherited_From_Class=\u30AF\u30E9\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9
doclet.Methods_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9
+doclet.Methods_Declared_In_Class=\u30AF\u30E9\u30B9\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9
+doclet.Methods_Declared_In_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9
doclet.Fields_Inherited_From_Class=\u30AF\u30E9\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9
doclet.Fields_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9
+doclet.Fields_Declared_In_Class=\u30AF\u30E9\u30B9\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9
+doclet.Fields_Declared_In_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9
doclet.Properties_Inherited_From_Class=\u30AF\u30E9\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30D7\u30ED\u30D1\u30C6\u30A3
doclet.Properties_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30D7\u30ED\u30D1\u30C6\u30A3
+doclet.Properties_Declared_In_Class=\u30AF\u30E9\u30B9\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30D7\u30ED\u30D1\u30C6\u30A3
+doclet.Properties_Declared_In_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30D7\u30ED\u30D1\u30C6\u30A3
doclet.Annotation_Type_Member_Detail=\u8981\u7D20\u306E\u8A73\u7D30
doclet.Enum_Constant_Detail=\u5217\u6319\u578B\u5B9A\u6570\u306E\u8A73\u7D30
doclet.Constants_Summary=\u5B9A\u6570\u30D5\u30A3\u30FC\u30EB\u30C9\u5024
@@ -190,6 +202,7 @@
doclet.subinterfaces=\u30B5\u30D6\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
doclet.Modifier=\u4FEE\u98FE\u5B50
doclet.Type=\u30BF\u30A4\u30D7
+doclet.Modifier_and_Type=\u4FEE\u98FE\u5B50\u3068\u30BF\u30A4\u30D7
doclet.Implementation=\u5B9F\u88C5:
doclet.Types=\u30BF\u30A4\u30D7
doclet.Members=\u30E1\u30F3\u30D0\u30FC
@@ -207,7 +220,6 @@
doclet.Description=\u8AAC\u660E
doclet.ConstantField=\u5B9A\u6570\u30D5\u30A3\u30FC\u30EB\u30C9
doclet.Value=\u5024
-doclet.0_and_1={0}\u3068{1}
#Documentation for Enums
doclet.enum_values_doc.fullbody=\u3053\u306E\u5217\u6319\u578B\u306E\u5B9A\u6570\u3092\u542B\u3080\u914D\u5217\u3092\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u9806\u5E8F\u3067\u8FD4\u3057\u307E\u3059\u3002\n\u3053\u306E\u30E1\u30BD\u30C3\u30C9\u306F\u6B21\u306E\u3088\u3046\u306B\u3057\u3066\u5B9A\u6570\u3092\u53CD\u5FA9\u3059\u308B\u305F\u3081\u306B\n\u4F7F\u7528\u3067\u304D\u307E\u3059:\n<pre>\nfor ({0} c : {0}.values())\n System.out.println(c);\n</pre>
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -11,11 +11,10 @@
doclet.Class_0_extends_implements_serializable=\u7C7B{0}\u6269\u5C55{1}\u5B9E\u73B0\u53EF\u5E8F\u5217\u5316
doclet.Option_conflict=\u9009\u9879{0}\u4E0E{1}\u51B2\u7A81
doclet.Option_reuse=\u91CD\u590D\u4F7F\u7528\u7684\u9009\u9879: {0}
+doclet.Option_invalid={1} \u9009\u9879\u7684 {0} \u53C2\u6570\u65E0\u6548
doclet.Option_doclint_no_qualifiers=-Xdoclint \u53C2\u6570\u4E0D\u5141\u8BB8\u4F7F\u7528\u8BBF\u95EE\u9650\u5B9A\u7B26
doclet.Option_doclint_invalid_arg=-Xdoclint \u9009\u9879\u7684\u53C2\u6570\u65E0\u6548
doclet.Option_doclint_package_invalid_arg=-Xdoclint/package \u9009\u9879\u7684\u53C2\u6570\u65E0\u6548
-doclet.builder.exception.in.component=\u6784\u5EFA\u7EC4\u4EF6\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF: {0}\n\t({1})
-doclet.builder.unknown.component=doclet \u5DE5\u4F5C\u7248\u672C\u6587\u4EF6\u4E2D\u5F15\u7528\u7684\u7EC4\u4EF6\u672A\u77E5: {0}
doclet.error.initializing.dest.dir=\u521D\u59CB\u5316\u76EE\u6807\u76EE\u5F55\u65F6\u51FA\u9519: {0}
doclet.exception.read.file=\u8BFB\u53D6\u6587\u4EF6\u65F6\u51FA\u9519: {0}\n\t({1})
doclet.exception.write.file=\u5199\u5165\u6587\u4EF6\u65F6\u51FA\u9519: {0}\n\t({1})
@@ -37,8 +36,11 @@
doclet.JavaScript_in_comment=\u6587\u6863\u6CE8\u91CA\u4E2D\u53D1\u73B0 JavaScript\u3002\n\u4F7F\u7528 --allow-script-in-comments \u53EF\u5141\u8BB8\u4F7F\u7528 JavaScript\u3002
doclet.JavaScript_in_option=\u9009\u9879 {0} \u5305\u542B JavaScript\u3002\n\u4F7F\u7528 --allow-script-in-comments \u53EF\u5141\u8BB8\u4F7F\u7528 JavaScript\u3002
doclet.Packages=\u7A0B\u5E8F\u5305
+doclet.All_Packages=\u6240\u6709\u7A0B\u5E8F\u5305
doclet.Modules=\u6A21\u5757
+doclet.All_Modules=\u5168\u90E8\u6A21\u5757
doclet.Other_Packages=\u5176\u4ED6\u7A0B\u5E8F\u5305
+doclet.Other_Modules=\u5176\u4ED6\u6A21\u5757
doclet.Notice_taglet_registered=\u6CE8\u518C\u7684 Taglet {0}...
doclet.Notice_taglet_unseen=\u6CE8: \u627E\u4E0D\u5230\u7684\u5B9A\u5236\u6807\u8BB0: {0}
doclet.Notice_taglet_overriden=\u6CE8: \u8986\u76D6\u6807\u51C6\u6807\u8BB0\u7684\u5B9A\u5236\u6807\u8BB0: {0}
@@ -134,15 +136,25 @@
doclet.Exception=\u5F02\u5E38\u9519\u8BEF
doclet.exception=\u5F02\u5E38\u9519\u8BEF
doclet.exceptions=\u5F02\u5E38\u9519\u8BEF
+doclet.ExportedTo=\u5DF2\u5BFC\u51FA\u5230\u6A21\u5757
+doclet.OpenedTo=\u5DF2\u6253\u5F00\u5230\u6A21\u5757
doclet.Package_private=(\u4E13\u7528\u7A0B\u5E8F\u5305)
doclet.Nested_Classes_Interfaces_Inherited_From_Class=\u4ECE\u7C7B\u7EE7\u627F\u7684\u5D4C\u5957\u7C7B/\u63A5\u53E3
-doclet.Nested_Classes_Interface_Inherited_From_Interface=\u4ECE\u63A5\u53E3\u7EE7\u627F\u7684\u5D4C\u5957\u7C7B/\u63A5\u53E3
+doclet.Nested_Classes_Interfaces_Inherited_From_Interface=\u4ECE\u63A5\u53E3\u7EE7\u627F\u7684\u5D4C\u5957\u7C7B/\u63A5\u53E3
+doclet.Nested_Classes_Interfaces_Declared_In_Class=\u5728\u7C7B\u4E2D\u58F0\u660E\u7684\u5D4C\u5957\u7C7B/\u63A5\u53E3
+doclet.Nested_Classes_Interfaces_Declared_In_Interface=\u5728\u63A5\u53E3\u4E2D\u58F0\u660E\u7684\u5D4C\u5957\u7C7B/\u63A5\u53E3
doclet.Methods_Inherited_From_Class=\u4ECE\u7C7B\u7EE7\u627F\u7684\u65B9\u6CD5
doclet.Methods_Inherited_From_Interface=\u4ECE\u63A5\u53E3\u7EE7\u627F\u7684\u65B9\u6CD5
+doclet.Methods_Declared_In_Class=\u5728\u7C7B\u4E2D\u58F0\u660E\u7684\u65B9\u6CD5
+doclet.Methods_Declared_In_Interface=\u5728\u63A5\u53E3\u4E2D\u58F0\u660E\u7684\u65B9\u6CD5
doclet.Fields_Inherited_From_Class=\u4ECE\u7C7B\u7EE7\u627F\u7684\u5B57\u6BB5
doclet.Fields_Inherited_From_Interface=\u4ECE\u63A5\u53E3\u7EE7\u627F\u7684\u5B57\u6BB5
+doclet.Fields_Declared_In_Class=\u5728\u7C7B\u4E2D\u58F0\u660E\u7684\u5B57\u6BB5
+doclet.Fields_Declared_In_Interface=\u5728\u63A5\u53E3\u4E2D\u58F0\u660E\u7684\u5B57\u6BB5
doclet.Properties_Inherited_From_Class=\u4ECE\u7C7B\u7EE7\u627F\u7684\u5C5E\u6027
doclet.Properties_Inherited_From_Interface=\u4ECE\u63A5\u53E3\u7EE7\u627F\u7684\u5C5E\u6027
+doclet.Properties_Declared_In_Class=\u5728\u7C7B\u4E2D\u58F0\u660E\u7684\u5C5E\u6027
+doclet.Properties_Declared_In_Interface=\u5728\u63A5\u53E3\u4E2D\u58F0\u660E\u7684\u5C5E\u6027
doclet.Annotation_Type_Member_Detail=\u5143\u7D20\u8BE6\u7EC6\u8D44\u6599
doclet.Enum_Constant_Detail=\u679A\u4E3E\u5E38\u91CF\u8BE6\u7EC6\u8D44\u6599
doclet.Constants_Summary=\u5E38\u91CF\u5B57\u6BB5\u503C
@@ -190,6 +202,7 @@
doclet.subinterfaces=\u5B50\u63A5\u53E3
doclet.Modifier=\u9650\u5B9A\u7B26
doclet.Type=\u7C7B\u578B
+doclet.Modifier_and_Type=\u4FEE\u9970\u7B26\u548C\u7C7B\u578B
doclet.Implementation=\u5B9E\u73B0:
doclet.Types=\u7C7B\u578B
doclet.Members=\u6210\u5458
@@ -207,7 +220,6 @@
doclet.Description=\u8BF4\u660E
doclet.ConstantField=\u5E38\u91CF\u5B57\u6BB5
doclet.Value=\u503C
-doclet.0_and_1={0}\u548C{1}
#Documentation for Enums
doclet.enum_values_doc.fullbody=\u6309\u7167\u58F0\u660E\u8BE5\u679A\u4E3E\u7C7B\u578B\u7684\u5E38\u91CF\u7684\u987A\u5E8F, \u8FD4\u56DE\n\u5305\u542B\u8FD9\u4E9B\u5E38\u91CF\u7684\u6570\u7EC4\u3002\u8BE5\u65B9\u6CD5\u53EF\u7528\u4E8E\u8FED\u4EE3\n\u5E38\u91CF, \u5982\u4E0B\u6240\u793A:\n<pre>\nfor ({0} c : {0}.values())\n System.out.println(c);\n</pre>
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ToolOption.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ToolOption.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -189,6 +189,13 @@
}
},
+ ADD_OPENS("--add-opens", HIDDEN, true) {
+ @Override
+ public void process(Helper helper, String arg) throws InvalidValueException {
+ Option.ADD_OPENS.process(helper.getOptionHelper(), primaryName, arg);
+ }
+ },
+
// ----- doclet options -----
DOCLET("-doclet", STANDARD, true), // handled in setDocletInvoker
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_ja.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_ja.properties Wed Jan 17 12:19:06 2018 +0000
@@ -118,6 +118,8 @@
main.opt.quiet.desc=\u72B6\u614B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3057\u306A\u3044
+main.opt.version.desc=\u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u51FA\u529B\u3059\u308B
+
main.opt.J.arg=<flag>
main.opt.J.desc=<flag>\u3092\u5B9F\u884C\u30B7\u30B9\u30C6\u30E0\u306B\u76F4\u63A5\u6E21\u3059
@@ -193,3 +195,5 @@
javadoc.warning.msg={0}: \u8B66\u544A - {1}
javadoc.note.msg = {1}
javadoc.note.pos.msg= {0}: {1}
+javadoc.version={0} {1}
+javadoc.fullversion={0}\u30D5\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3"{1}"
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -118,6 +118,8 @@
main.opt.quiet.desc=\u4E0D\u663E\u793A\u72B6\u6001\u6D88\u606F
+main.opt.version.desc=\u8F93\u51FA\u7248\u672C\u4FE1\u606F
+
main.opt.J.arg=<\u6807\u8BB0>
main.opt.J.desc=\u76F4\u63A5\u5C06 <\u6807\u8BB0> \u4F20\u9012\u7ED9\u8FD0\u884C\u65F6\u7CFB\u7EDF
@@ -172,8 +174,8 @@
main.doclet_no_classloader_found=\u65E0\u6CD5\u83B7\u53D6\u7C7B\u52A0\u8F7D\u5668\u6765\u52A0\u8F7D {0}
main.could_not_instantiate_class=\u65E0\u6CD5\u5B9E\u4F8B\u5316\u7C7B {0}
main.doclet_class_not_found=\u627E\u4E0D\u5230 doclet \u7C7B{0}
-main.illegal_locale_name=\u533A\u57DF\u8BBE\u7F6E\u4E0D\u53EF\u7528: {0}
-main.malformed_locale_name=\u683C\u5F0F\u9519\u8BEF\u7684\u533A\u57DF\u8BBE\u7F6E\u540D\u79F0: {0}
+main.illegal_locale_name=\u8BED\u8A00\u73AF\u5883\u4E0D\u53EF\u7528: {0}
+main.malformed_locale_name=\u683C\u5F0F\u9519\u8BEF\u7684\u8BED\u8A00\u73AF\u5883\u540D\u79F0: {0}
main.file_not_found=\u627E\u4E0D\u5230\u6587\u4EF6: "{0}"
main.illegal_class_name=\u975E\u6CD5\u7C7B\u540D: "{0}"
main.illegal_package_name=\u975E\u6CD5\u7684\u7A0B\u5E8F\u5305\u540D\u79F0: "{0}"
@@ -184,7 +186,7 @@
main.internal.error=\u51FA\u73B0\u5185\u90E8\u9519\u8BEF
main.unexpected.exception=\u6355\u83B7\u5230\u610F\u5916\u7684\u5F02\u5E38\u9519\u8BEF: {0}
doclet.internal.report.bug=\u5982\u679C\u5728 Bug Database (http://bugs.java.com) \u4E2D\u6CA1\u6709\u627E\u5230\u91CD\u590D\u9879, \n\u8BF7\u901A\u8FC7 Java Bug \u62A5\u544A\u9875 (http://bugreport.java.com) \u9488\u5BF9\u8BE5 \njavadoc \u5DE5\u5177\u5EFA\u7ACB Bug\u3002\u8BF7\u5728\u62A5\u544A\u4E2D\u9644\u4E0A\u9519\u8BEF\u6D88\u606F\u548C\u4EE5\u4E0B\u8BCA\u65AD\u4FE1\u606F\u3002\u8C22\u8C22\u3002
-main.legacy_api=\u5DF2\u8BA1\u5212\u5728\u672A\u6765\u7684 JDK \u53D1\u884C\u7248\u4E2D\u5220\u9664\u7A0B\u5E8F\u5305\ncom.sun.javadoc, com.sun.tools.doclets\n\u53CA\u5176\u5B9E\u73B0\u4E2D\u7684\u65E7 Doclet \u548C Taglet API\u3002\n\u8FD9\u4E9B\u7EC4\u4EF6\u5728 jdk.javadoc.doclet \u4E2D\u5DF2\u7531\u65B0 API \u53D6\u4EE3\u3002\n\u5F3A\u70C8\u5EFA\u8BAE\u7528\u6237\u79FB\u690D\u5230\u65B0 API\u3002\n
+main.legacy_api=\u5DF2\u8BA1\u5212\u5728\u672A\u6765\u7684 JDK \u53D1\u884C\u7248\u4E2D\u5220\u9664\u7A0B\u5E8F\u5305\ncom.sun.javadoc, com.sun.tools.doclets\n\u53CA\u5176\u5B9E\u73B0\u4E2D\u7684\u65E7 Doclet \u548C Taglet API\u3002\n\u8FD9\u4E9B\u7EC4\u4EF6\u5728 jdk.javadoc.doclet \u4E2D\u5DF2\u7531\u65B0 API \u53D6\u4EE3\u3002\n\u5F3A\u70C8\u5EFA\u8BAE\u7528\u6237\u8FC1\u79FB\u5230\u65B0 API\u3002\n
javadoc.class_not_found=\u627E\u4E0D\u5230\u7C7B{0}\u3002
javadoc.error=\u9519\u8BEF
@@ -193,3 +195,5 @@
javadoc.warning.msg={0}: \u8B66\u544A - {1}
javadoc.note.msg = {1}
javadoc.note.pos.msg= {0}: {1}
+javadoc.version={0} {1}
+javadoc.fullversion={0}\u5B8C\u6574\u7248\u672C "{1}"
--- a/src/jdk.jdeps/share/classes/com/sun/tools/javap/overview.html Tue Jan 16 15:52:01 2018 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
- <head>
- <title>javap: class file disassembler</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- </head>
- <body>
- Javap is a class file disassembler.
- </body>
-</html>
--- a/src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/resources/jdeprscan_ja.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/resources/jdeprscan_ja.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,4 +1,4 @@
-main.usage=\u4F7F\u7528\u65B9\u6CD5: jdeprscan [options] '{dir|jar|class}' ...\n\n\u30AA\u30D7\u30B7\u30E7\u30F3:\n --class-path PATH\n --for-removal\n --full-version\n -h --help\n -l --list\n --release 6|7|8|9\n -v --verbose\n --version
+main.usage=\u4F7F\u7528\u65B9\u6CD5: jdeprscan [options] '{dir|jar|class}' ...\n\n\u30AA\u30D7\u30B7\u30E7\u30F3:\n --class-path PATH\n --for-removal\n --full-version\n -h --help\n -l --list\n --release 6|7|8|9|10\n -v --verbose\n --version
main.help=\u975E\u63A8\u5968API\u306E\u4F7F\u7528\u306B\u3064\u3044\u3066\u5404\u5F15\u6570\u3092\u30B9\u30AD\u30E3\u30F3\u3057\u307E\u3059\u3002\u5F15\u6570\u306B\u306F\u3001\n\u30D1\u30C3\u30B1\u30FC\u30B8\u968E\u5C64\u306E\u30EB\u30FC\u30C8\u3092\u6307\u5B9A\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001JAR\u30D5\u30A1\u30A4\u30EB\u3001\n\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30AF\u30E9\u30B9\u540D\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u30AF\u30E9\u30B9\u540D\u306F\u3001\n\u5B8C\u5168\u4FEE\u98FE\u30AF\u30E9\u30B9\u540D\u3092\u4F7F\u7528\u3057\u3066\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30CD\u30B9\u30C8\u3055\u308C\u305F\n\u30AF\u30E9\u30B9\u306F$\u3067\u533A\u5207\u308A\u307E\u3059\u3002\u4F8B:\n\n java.lang.Thread$State\n\n--class-path\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u4F9D\u5B58\u3059\u308B\u30AF\u30E9\u30B9\u306E\u89E3\u6C7A\u306E\u305F\u3081\u306E\n\u691C\u7D22\u30D1\u30B9\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\n\n--for-removal\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u30B9\u30AD\u30E3\u30F3\u3068\u30EA\u30B9\u30C8\u5316\u3092\u524A\u9664\u4E88\u5B9A\u3067\u975E\u63A8\u5968\u306EAPI\u306B\n\u9650\u5B9A\u3057\u307E\u3059\u3002\u30EA\u30EA\u30FC\u30B9\u5024\u304C6\u30017\u307E\u305F\u306F8\u306E\u5834\u5408\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\n--full-version\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u30C4\u30FC\u30EB\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u6587\u5B57\u5217\u306E\u5168\u4F53\u3092\u51FA\u529B\u3057\u307E\u3059\u3002\n\n--help\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u30D8\u30EB\u30D7\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u5168\u4F53\u3092\u51FA\u529B\u3057\u307E\u3059\u3002\n\n--list (-l)\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u975E\u63A8\u5968API\u30BB\u30C3\u30C8\u3092\u51FA\u529B\u3057\u307E\u3059\u3002\u30B9\u30AD\u30E3\u30F3\u306F\u884C\u308F\u308C\u306A\u3044\n\u305F\u3081\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001JAR\u307E\u305F\u306F\u30AF\u30E9\u30B9\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n\n--release\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u30B9\u30AD\u30E3\u30F3\u3059\u308B\u975E\u63A8\u5968API\u306E\u30BB\u30C3\u30C8\u3092\u63D0\u4F9B\u3059\u308BJava SE\n\u30EA\u30EA\u30FC\u30B9\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\n\n--verbose (-v)\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3059\u308B\u3068\u3001\u51E6\u7406\u4E2D\u306B\u8FFD\u52A0\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3067\u304D\u307E\u3059\u3002\n\n--version\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u7C21\u7565\u5316\u3055\u308C\u305F\u30C4\u30FC\u30EB\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u6587\u5B57\u5217\u3092\u51FA\u529B\u3057\u307E\u3059\u3002
--- a/src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/resources/jdeprscan_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/resources/jdeprscan_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,4 +1,4 @@
-main.usage=\u7528\u6CD5: jdeprscan [\u9009\u9879] '{dir|jar|class}' ...\n\n\u9009\u9879:\n --class-path PATH\n --for-removal\n --full-version\n -h --help\n -l --list\n --release 6|7|8|9\n -v --verbose\n --version
+main.usage=\u7528\u6CD5: jdeprscan [\u9009\u9879] '{dir|jar|class}' ...\n\n\u9009\u9879:\n --class-path PATH\n --for-removal\n --full-version\n -h --help\n -l --list\n --release 6|7|8|9|10\n -v --verbose\n --version
main.help=\u626B\u63CF\u6BCF\u4E2A\u53C2\u6570\u4EE5\u4E86\u89E3\u662F\u5426\u4F7F\u7528\u4E86\u8FC7\u65F6\u7684 API\u3002\n\u53C2\u6570\u53EF\u4EE5\u662F\u6307\u5B9A\u7A0B\u5E8F\u5305\u5206\u5C42\u7ED3\u6784, JAR \u6587\u4EF6, \n\u7C7B\u6587\u4EF6\u6216\u7C7B\u540D\u7684\u6839\u7684\u76EE\u5F55\u3002\u7C7B\u540D\u5FC5\u987B\n\u4F7F\u7528\u5168\u9650\u5B9A\u7C7B\u540D\u6307\u5B9A, \u5E76\u4F7F\u7528 $ \u5206\u9694\u7B26\n\u6307\u5B9A\u5D4C\u5957\u7C7B, \u4F8B\u5982,\n\n java.lang.Thread$State\n\n--class-path \u9009\u9879\u63D0\u4F9B\u4E86\u7528\u4E8E\u89E3\u6790\u4ECE\u5C5E\u7C7B\u7684\n\u641C\u7D22\u8DEF\u5F84\u3002\n\n--for-removal \u9009\u9879\u9650\u5236\u626B\u63CF\u6216\u5217\u51FA\u5DF2\u8FC7\u65F6\u5E76\u5F85\u5220\u9664\n\u7684 API\u3002\u4E0D\u80FD\u4E0E\u53D1\u884C\u7248\u503C 6, 7 \u6216 8 \u4E00\u8D77\u4F7F\u7528\u3002\n\n--full-version \u9009\u9879\u8F93\u51FA\u5DE5\u5177\u7684\u5B8C\u6574\u7248\u672C\u5B57\u7B26\u4E32\u3002\n\n--help \u9009\u9879\u8F93\u51FA\u5B8C\u6574\u7684\u5E2E\u52A9\u6D88\u606F\u3002\n\n--list (-l) \u9009\u9879\u8F93\u51FA\u4E00\u7EC4\u5DF2\u8FC7\u65F6\u7684 API\u3002\u4E0D\u6267\u884C\u626B\u63CF, \n\u56E0\u6B64\u4E0D\u5E94\u63D0\u4F9B\u4EFB\u4F55\u76EE\u5F55, jar \u6216\u7C7B\u53C2\u6570\u3002\n\n--release \u9009\u9879\u6307\u5B9A\u63D0\u4F9B\u8981\u626B\u63CF\u7684\u5DF2\u8FC7\u65F6 API \u96C6\n\u7684 Java SE \u53D1\u884C\u7248\u3002\n\n--verbose (-v) \u9009\u9879\u5728\u5904\u7406\u671F\u95F4\u542F\u7528\u9644\u52A0\u6D88\u606F\u8F93\u51FA\u3002\n\n--version \u9009\u9879\u8F93\u51FA\u5DE5\u5177\u7684\u7F29\u5199\u7248\u672C\u5B57\u7B26\u4E32\u3002
--- a/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_ja.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_ja.properties Wed Jan 17 12:19:06 2018 +0000
@@ -34,8 +34,6 @@
main.opt.add-modules=\ --add-modules <module-name>[,<module-name>...]\n \u5206\u6790\u7528\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u30EB\u30FC\u30C8\u30FB\u30BB\u30C3\u30C8\u306B\u8FFD\u52A0\u3057\u307E\u3059
-main.opt.m=\ -m <module-name>\n --module <module-name> \u5206\u6790\u7528\u306B\u30EB\u30FC\u30C8\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u6307\u5B9A\u3057\u307E\u3059
-
main.opt.R=\ -R -recursive \u3059\u3079\u3066\u306E\u30E9\u30F3\u30BF\u30A4\u30E0\u4F9D\u5B58\u6027\u3092\u518D\u5E30\u7684\u306B\u30C8\u30E9\u30D0\u30FC\u30B9\u3057\u307E\u3059\u3002\n -R\u30AA\u30D7\u30B7\u30E7\u30F3\u306F-filter:none\u3092\u610F\u5473\u3057\u307E\u3059\u3002-p\u3001-e\u3001-f\n \u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u4E00\u81F4\u3059\u308B\u4F9D\u5B58\u6027\u306E\u307F\n \u5206\u6790\u3055\u308C\u307E\u3059\u3002
main.opt.I=\ -I --inverse \u4ED6\u306E\u6307\u5B9A\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3054\u3068\u306B\u4F9D\u5B58\u6027\u3092\u5206\u6790\u3057\u3001\n \u4E00\u81F4\u3059\u308B\u30CE\u30FC\u30C9\u306B\u76F4\u63A5\u304A\u3088\u3073\u9593\u63A5\u7684\u306B\u4F9D\u5B58\u3059\u308B\n \u3059\u3079\u3066\u306E\u30A2\u30FC\u30C6\u30A3\u30D5\u30A1\u30AF\u30C8\u3092\u691C\u51FA\u3057\u307E\u3059\u3002\n \u3053\u308C\u306F\u3001\u30B3\u30F3\u30D1\u30A4\u30EB\u6642\u306E\u8868\u793A\u5206\u6790\n \u304A\u3088\u3073\u51FA\u529B\u4F9D\u5B58\u6027\u30B5\u30DE\u30EA\u30FC\u306E\u9006\u306B\u76F8\u5F53\u3057\u307E\u3059\u3002\n \u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F--require\u3001--package\u307E\u305F\u306F--regex\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\n \u4E00\u7DD2\u306B\u4F7F\u7528\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
@@ -44,24 +42,27 @@
main.opt.apionly=\ -apionly\n --api-only \u5206\u6790\u3092API\u3001\u3064\u307E\u308A\u3001\u30D1\u30D6\u30EA\u30C3\u30AF\u30FB\u30AF\u30E9\u30B9\u306E\n \u30D1\u30D6\u30EA\u30C3\u30AF\u30FB\u30E1\u30F3\u30D0\u30FC\u304A\u3088\u3073\u4FDD\u8B77\u3055\u308C\u305F\u30E1\u30F3\u30D0\u30FC\u306E\n \u7F72\u540D\u306B\u304A\u3051\u308B\u4F9D\u5B58\u6027(\u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u30BF\u30A4\u30D7\u3001\u30E1\u30BD\u30C3\u30C9\u30FB\n \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7\u3001\u623B\u3055\u308C\u305F\u30BF\u30A4\u30D7\u3001\u30C1\u30A7\u30C3\u30AF\u3055\u308C\u305F\n \u4F8B\u5916\u30BF\u30A4\u30D7\u306A\u3069)\u306B\u5236\u9650\u3057\u307E\u3059\u3002
+main.opt.m=\n\u30E2\u30B8\u30E5\u30FC\u30EB\u4F9D\u5B58\u6027\u306E\u5206\u6790\u30AA\u30D7\u30B7\u30E7\u30F3:\n -m <module-name>\n --module <module-name> \u5206\u6790\u7528\u306B\u30EB\u30FC\u30C8\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u6307\u5B9A\u3057\u307E\u3059
+
main.opt.generate-module-info=\ --generate-module-info <dir> \u6307\u5B9A\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306Bmodule-info.java\u3092\u751F\u6210\u3057\u307E\u3059\u3002\n \u6307\u5B9A\u3057\u305FJAR\u30D5\u30A1\u30A4\u30EB\u3092\u5206\u6790\u3057\u307E\u3059\u3002\n \u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F--dot-output\u307E\u305F\u306F--class-path\n \u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30AA\u30FC\u30D7\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u306F\n --generate-open-module\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002
main.opt.generate-open-module=\ --generate-open-module <dir> \u6307\u5B9A\u3057\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u3001\u6307\u5B9A\u3057\u305F\n JAR\u30D5\u30A1\u30A4\u30EB\u306Emodule-info.java\u3092\u30AA\u30FC\u30D7\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3068\u3057\u3066\n \u751F\u6210\u3057\u307E\u3059\u3002\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F--dot-output\n \u307E\u305F\u306F--class-path\u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
main.opt.check=\ --check <module-name>[,<module-name>...\n \u6307\u5B9A\u3057\u305F\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u4F9D\u5B58\u6027\u3092\u5206\u6790\u3057\u307E\u3059\n \u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u3001\u5206\u6790\u5F8C\u306E\u7D50\u679C\u30E2\u30B8\u30E5\u30FC\u30EB\u4F9D\u5B58\u6027\n \u304A\u3088\u3073\u9077\u79FB\u524A\u6E1B\u5F8C\u306E\u30B0\u30E9\u30D5\u3092\n \u51FA\u529B\u3057\u307E\u3059\u3002\n \u672A\u4F7F\u7528\u306E\u4FEE\u98FE\u3055\u308C\u305F\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3082\u8B58\u5225\u3057\u307E\u3059\u3002
-
main.opt.dotoutput=\ -dotoutput <dir>\n --dot-output <dir> DOT\u30D5\u30A1\u30A4\u30EB\u51FA\u529B\u306E\u5B9B\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA
main.opt.jdkinternals=\ -jdkinternals\n --jdk-internals JDK\u5185\u90E8API\u306E\u30AF\u30E9\u30B9\u30EC\u30D9\u30EB\u306E\u4F9D\u5B58\u6027\u3092\u691C\u51FA\u3057\u307E\u3059\u3002\n \u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u3001-include\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3057\u306A\u3044\u3068\u3001\n --class-path\u306E\u3059\u3079\u3066\u306E\u30AF\u30E9\u30B9\u3068\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u3092\u5206\u6790\u3057\u307E\u3059\u3002\n \u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F-p\u3001-e\u304A\u3088\u3073-s\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u4E00\u7DD2\u306B\n \u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n \u8B66\u544A: JDK\u5185\u90E8API\u306F\u3001\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002
-main.opt.list-deps=\ --list-deps \u4F9D\u5B58\u95A2\u4FC2\u3068JDK\u5185\u90E8API\u306E\u4F7F\u7528\u3092\n \u30EA\u30B9\u30C8\u3057\u307E\u3059\u3002
+main.opt.list-deps=\ --list-deps \u30E2\u30B8\u30E5\u30FC\u30EB\u4F9D\u5B58\u6027\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\u3002\u53C2\u7167\u3055\u308C\u3066\u3044\u308B\n \u5834\u5408\u3001\u4EFB\u610F\u306EJDK\u5185\u90E8API\u30D1\u30C3\u30B1\u30FC\u30B8\u3082\u51FA\u529B\u3057\u307E\u3059\u3002\n \u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u3001\u30AF\u30E9\u30B9\u30D1\u30B9\u306E\u4F9D\u5B58\u6027\u3084\u898B\u3064\u3051\u3089\u308C\u306A\u3044\n \u4F9D\u5B58\u6027\u306F\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002
-main.opt.list-reduced-deps=\ --list-reduced-deps --list-deps\u3068\u540C\u3058\u3067\u3059\u304C\u3001\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30B0\u30E9\u30D5\n \u304B\u3089\u542B\u610F\u3055\u308C\u305F\u8AAD\u53D6\u308A\u30A8\u30C3\u30B8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u305B\u3093\n \u30E2\u30B8\u30E5\u30FC\u30EBM1\u304CM2\u3068M3\u306B\u4F9D\u5B58\u3057\u3066\u304A\u308A\u3001\n M2\u304CM3\u4E0A\u3067requires public\u3067\u3042\u308B\u5834\u5408\u3001M3\u3092\u8AAD\u307F\u53D6\u308BM1\u306F\n \u542B\u610F\u3055\u308C\u3066\u304A\u308A\u3001\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30B0\u30E9\u30D5\u304B\u3089\u524A\u9664\u3055\u308C\u307E\u3059\u3002
+main.opt.list-reduced-deps=\ --list-reduced-deps --list-deps\u3068\u540C\u3058\u3067\u3059\u304C\u3001\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30B0\u30E9\u30D5\n \u304B\u3089\u542B\u610F\u3055\u308C\u305F\u8AAD\u53D6\u308A\u30A8\u30C3\u30B8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u305B\u3093\u3002\n \u30E2\u30B8\u30E5\u30FC\u30EBM1\u304CM2\u3092\u8AAD\u307F\u53D6\u308A\u3001M2\u304CM3\u3067\u306E\u63A8\u79FB\u3092\n \u5FC5\u8981\u3068\u3059\u308B\u5834\u5408\u3001M3\u3092\u8AAD\u307F\u53D6\u308BM1\u306F\u542B\u610F\u3055\u308C\u3066\u304A\u308A\u3001\n \u30B0\u30E9\u30D5\u306B\u306F\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002
+
+main.opt.print-module-deps=\ --print-module-deps \u30E2\u30B8\u30E5\u30FC\u30EB\u4F9D\u5B58\u6027\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30EA\u30B9\u30C8\n \u3092\u51FA\u529B\u3059\u308B--list-reduced-deps\u3068\u540C\u3058\u3067\u3059\u3002\n \u3053\u306E\u51FA\u529B\u306F\u3001\u3053\u308C\u3089\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3068\u305D\u306E\u63A8\u79FB\u7684\u306A\n \u4F9D\u5B58\u6027\u3092\u542B\u3080\u30AB\u30B9\u30BF\u30E0\u30FB\u30A4\u30E1\u30FC\u30B8\u3092\u4F5C\u6210\u3059\u308B\u305F\u3081\u306B\n jlink --add-modules\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002
main.opt.depth=\ -depth=<depth> \u63A8\u79FB\u7684\u306A\u4F9D\u5B58\u6027\u5206\u6790\u306E\u6DF1\u3055\u3092\n \u6307\u5B9A\u3057\u307E\u3059
-main.opt.q=\ -q -quiet --generate-module-info\u51FA\u529B\u3067\n \u6B20\u843D\u3057\u3066\u3044\u308B\u4F9D\u5B58\u6027\u3092\u8868\u793A\u3057\u307E\u305B\u3093\u3002
+main.opt.q=\ -q -quiet \u8B66\u544A\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3057\u306A\u3044\u3088\u3046\u306B\u3057\u307E\u3059
main.opt.multi-release=\ --multi-release <version> \u30DE\u30EB\u30C1\u30EA\u30EA\u30FC\u30B9jar\u30D5\u30A1\u30A4\u30EB\u3092\u51E6\u7406\u3059\u308B\u969B\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\n \u6307\u5B9A\u3057\u307E\u3059\u3002<version>\u306F\u30019\u307E\u305F\u306F\u30D9\u30FC\u30B9\u4EE5\u4E0A\u306E\n \u6574\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
@@ -87,10 +88,9 @@
err.multirelease.jar.malformed=\u4E0D\u6B63\u306A\u30DE\u30EB\u30C1\u30EA\u30EA\u30FC\u30B9jar\u3001{0}\u3001\u4E0D\u6B63\u306A\u30A8\u30F3\u30C8\u30EA: {1}
warn.invalid.arg=\u30D1\u30B9\u304C\u5B58\u5728\u3057\u307E\u305B\u3093: {0}
warn.skipped.entry={0}
-warn.split.package=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F{1} {2}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
+warn.split.package=\u5206\u5272\u30D1\u30C3\u30B1\u30FC\u30B8: {0} {1}
warn.replace.useJDKInternals=JDK\u5185\u90E8API\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u304A\u3089\u305A\u3001JDK\u5B9F\u88C5\u5C02\u7528\u3067\u3059\u304C\u3001\u4E92\u63DB\u6027\u306A\u3057\u3067\n\u524A\u9664\u307E\u305F\u306F\u5909\u66F4\u3055\u308C\u308B\u5834\u5408\u304C\u3042\u308A\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092\u4E2D\u65AD\u3055\u305B\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\nJDK\u5185\u90E8API\u306E\u4F9D\u5B58\u6027\u3092\u524A\u9664\u3059\u308B\u3088\u3046\u30B3\u30FC\u30C9\u3092\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002\nJDK\u5185\u90E8API\u306E\u7F6E\u63DB\u306B\u95A2\u3059\u308B\u6700\u65B0\u306E\u66F4\u65B0\u306B\u3064\u3044\u3066\u306F\u3001\u6B21\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044:\n{0}
-split.package=\u5206\u5272\u30D1\u30C3\u30B1\u30FC\u30B8: {0} {1}\n
inverse.transitive.dependencies.on={0}\u4E0A\u3067\u63A8\u79FB\u7684\u306A\u4F9D\u5B58\u6027\u3092\u9006\u8EE2\u3057\u307E\u3059
inverse.transitive.dependencies.matching={0}\u306B\u4E00\u81F4\u3059\u308B\u63A8\u79FB\u7684\u306A\u4F9D\u5B58\u6027\u3092\u9006\u8EE2\u3057\u307E\u3059
internal.api.column.header=JDK\u5185\u90E8API
--- a/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -34,8 +34,6 @@
main.opt.add-modules=\ --add-modules <\u6A21\u5757\u540D\u79F0>[,<\u6A21\u5757\u540D\u79F0>...]\n \u5C06\u6A21\u5757\u6DFB\u52A0\u5230\u6839\u96C6\u4EE5\u8FDB\u884C\u5206\u6790
-main.opt.m=\ -m <\u6A21\u5757\u540D\u79F0>\n --module <\u6A21\u5757\u540D\u79F0> \u6307\u5B9A\u7528\u4E8E\u5206\u6790\u7684\u6839\u6A21\u5757
-
main.opt.R=\ -R -recursive \u9012\u5F52\u904D\u5386\u6240\u6709\u8FD0\u884C\u65F6\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002\n -R \u9009\u9879\u8868\u793A -filter:none\u3002\u5982\u679C\n \u6307\u5B9A\u4E86 -p, -e, -f \u9009\u9879, \u5219\u53EA\u5206\u6790\n \u5339\u914D\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002
main.opt.I=\ -I --inverse \u6839\u636E\u5176\u4ED6\u6307\u5B9A\u9009\u9879\u5206\u6790\u88AB\u4F9D\u8D56\u5BF9\u8C61,\n \u7136\u540E\u67E5\u627E\u76F4\u63A5\u548C\u95F4\u63A5\u4F9D\u8D56\u4E8E\u5339\u914D\n \u8282\u70B9\u7684\u6240\u6709 Artifact\u3002\n \u8FD9\u76F8\u5F53\u4E8E\u7F16\u8BD1\u65F6\u89C6\u56FE\u5206\u6790\u7684\n \u9006\u5411, \u8F93\u51FA\u88AB\u4F9D\u8D56\u5BF9\u8C61\u6982\u8981\u3002\n \u6B64\u9009\u9879\u5FC5\u987B\u4E0E --require, \n --package \u6216 --regex \u9009\u9879\u4E00\u8D77\u4F7F\u7528\u3002
@@ -44,24 +42,27 @@
main.opt.apionly=\ -apionly\n --api-only \u901A\u8FC7\u516C\u5171\u7C7B (\u5305\u62EC\u5B57\u6BB5\u7C7B\u578B, \u65B9\u6CD5\n \u53C2\u6570\u7C7B\u578B, \u8FD4\u56DE\u7C7B\u578B, \u53D7\u63A7\u5F02\u5E38\u9519\u8BEF\n \u7C7B\u578B\u7B49) \u7684\u516C\u5171\u548C\u53D7\u4FDD\u62A4\u6210\u5458\u7684\u7B7E\u540D\n \u9650\u5236\u5BF9 API (\u5373\u88AB\u4F9D\u8D56\u5BF9\u8C61)\n \u8FDB\u884C\u5206\u6790\u3002
+main.opt.m=\n\u6A21\u5757\u88AB\u4F9D\u8D56\u5BF9\u8C61\u5206\u6790\u9009\u9879:\n -m <\u6A21\u5757\u540D\u79F0>\n --module <\u6A21\u5757\u540D\u79F0> \u6307\u5B9A\u7528\u4E8E\u5206\u6790\u7684\u6839\u6A21\u5757
+
main.opt.generate-module-info=\ --generate-module-info <\u76EE\u5F55> \u5728\u6307\u5B9A\u76EE\u5F55\u4E0B\u751F\u6210 module-info.java\u3002\n \u5C06\u5206\u6790\u6307\u5B9A\u7684 JAR \u6587\u4EF6\u3002\n \u6B64\u9009\u9879\u4E0D\u80FD\u4E0E --dot-output \n \u6216 --class-path \u4E00\u8D77\u4F7F\u7528\u3002\u5BF9\u6253\u5F00\u7684\n \u6A21\u5757\u4F7F\u7528 --generate-open-module \u9009\u9879\u3002
main.opt.generate-open-module=\ --generate-open-module <dir> \u4EE5\u6253\u5F00\u6A21\u5757\u7684\u65B9\u5F0F\u4E3A\u6307\u5B9A\u76EE\u5F55\u4E0B\u7684\n \u6307\u5B9A JAR \u6587\u4EF6\u751F\u6210 module-info.java\u3002\n \u6B64\u9009\u9879\u4E0D\u80FD\u4E0E --dot-output \u6216\n --class-path \u4E00\u8D77\u4F7F\u7528\u3002
main.opt.check=\ --check <\u6A21\u5757\u540D\u79F0>[,<\u6A21\u5757\u540D\u79F0>...\n \u5206\u6790\u6307\u5B9A\u6A21\u5757\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\n \u5B83\u8F93\u51FA\u6A21\u5757\u63CF\u8FF0\u7B26, \u5206\u6790\u4E4B\u540E\n \u751F\u6210\u7684\u6A21\u5757\u88AB\u4F9D\u8D56\u5BF9\u8C61\u4EE5\u53CA\n \u8F6C\u6362\u51CF\u5C11\u4E4B\u540E\u7684\u56FE\u5F62\u3002\u5B83\u8FD8\n \u6307\u793A\u4EFB\u4F55\u672A\u4F7F\u7528\u7684\u5408\u683C\u5BFC\u51FA\u3002
-
main.opt.dotoutput=\ -dotoutput <\u76EE\u5F55>\n --dot-output <\u76EE\u5F55> DOT \u6587\u4EF6\u8F93\u51FA\u7684\u76EE\u6807\u76EE\u5F55
main.opt.jdkinternals=\ -jdkinternals\n --jdk-internals \u5728 JDK \u5185\u90E8 API \u4E0A\u67E5\u627E\u7C7B\u7EA7\u522B\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002\n \u9664\u975E\u6307\u5B9A\u4E86 -include \u9009\u9879, \u5426\u5219\u9ED8\u8BA4\u60C5\u51B5\u4E0B,\n \u5B83\u5206\u6790 --class-path \u4E0A\u7684\u6240\u6709\u7C7B\u548C\u8F93\u5165\u6587\u4EF6\u3002\n \u6B64\u9009\u9879\u4E0D\u80FD\u4E0E -p, -e \u548C -s \u9009\u9879\n \u4E00\u8D77\u4F7F\u7528\u3002\n \u8B66\u544A: \u65E0\u6CD5\u8BBF\u95EE JDK \u5185\u90E8 API\u3002
-main.opt.list-deps=\ --list-deps \u5217\u51FA JDK \u5185\u90E8 API \u7684\n \u88AB\u4F9D\u8D56\u5BF9\u8C61\u548C\u4F7F\u7528\u60C5\u51B5\u3002
+main.opt.list-deps=\ --list-deps \u5217\u51FA\u6A21\u5757\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002\u5B83\u8FD8\u4F1A\u8F93\u51FA\n \u4EFB\u610F JDK \u5185\u90E8 API \u7A0B\u5E8F\u5305 (\u5982\u679C\u5F15\u7528)\u3002\n \u6B64\u9009\u9879\u4E0D\u663E\u793A\u7C7B\u8DEF\u5F84\u4E0A\u6216\u672A\u627E\u5230\u7684\n \u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002
-main.opt.list-reduced-deps=\ --list-reduced-deps \u4E0E --list-deps \u76F8\u540C, \u4E0D\u5217\u51FA\n \u6A21\u5757\u56FE\u4E2D\u7684\u9690\u5F0F\u8BFB\u53D6\u7EF4\u8FB9\u3002\n \u5982\u679C\u6A21\u5757 M1 \u4F9D\u8D56\u4E8E M2 \u548C M3,\n M2 \u8981\u6C42\u5728 M3 \u4E0A\u662F\u516C\u5171\u7684, \u5219 M1 \u8BFB\u53D6 M3 \n \u7684\u64CD\u4F5C\u662F\u9690\u5F0F\u7684, \u5E76\u4E14\u4F1A\u4ECE\u6A21\u5757\u56FE\u4E2D\u5220\u9664\u3002
+main.opt.list-reduced-deps=\ --list-reduced-deps \u4E0E --list-deps \u76F8\u540C, \u4E0D\u5217\u51FA\n \u6A21\u5757\u56FE\u4E2D\u7684\u9690\u5F0F\u8BFB\u53D6\u7EF4\u8FB9\u3002\n \u5982\u679C\u6A21\u5757 M1 \u8BFB\u53D6 M2, \u5E76\u4E14 M2 \u9700\u8981\n M3 \u4E0A\u7684\u8FC7\u6E21, \u5219 M1 \u9690\u5F0F\u8BFB\u53D6 M3\n \u5E76\u4E14\u4E0D\u5728\u56FE\u4E2D\u663E\u793A\u3002
+
+main.opt.print-module-deps=\ --print-module-deps \u4E0E --list-reduced-deps \u76F8\u540C, \u8F93\u51FA\n \u9017\u53F7\u5206\u9694\u7684\u6A21\u5757\u88AB\u4F9D\u8D56\u5BF9\u8C61\u5217\u8868\u3002\n \u6B64\u8F93\u51FA\u53EF\u7531 jlink --add-modules\n \u7528\u4E8E\u521B\u5EFA\u5B9A\u5236\u6620\u50CF, \u5176\u4E2D\u5305\u542B\n \u8FD9\u4E9B\u6A21\u5757\u53CA\u5176\u8FC7\u6E21\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002
main.opt.depth=\ -depth=<\u6DF1\u5EA6> \u6307\u5B9A\u8FC7\u6E21\u88AB\u4F9D\u8D56\u5BF9\u8C61\u5206\u6790\n \u7684\u6DF1\u5EA6
-main.opt.q=\ -q -quiet \u5728 --generate-module-info \u8F93\u51FA\u4E2D\n \u4E0D\u663E\u793A\u7F3A\u5C11\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002
+main.opt.q=\ -q -quiet \u9690\u85CF\u8B66\u544A\u6D88\u606F
main.opt.multi-release=\ --multi-release <\u7248\u672C> \u6307\u5B9A\u5904\u7406\u591A\u53D1\u884C\u7248 jar \u6587\u4EF6\u65F6\u7684\n \u7248\u672C\u3002<\u7248\u672C> \u5E94\u4E3A\u5927\u4E8E\u7B49\u4E8E 9 \n \u7684\u6574\u6570\u6216\u57FA\u6570\u3002
@@ -87,10 +88,9 @@
err.multirelease.jar.malformed=\u683C\u5F0F\u9519\u8BEF\u7684\u591A\u53D1\u884C\u7248 jar, {0}, \u9519\u8BEF\u6761\u76EE: {1}
warn.invalid.arg=\u8DEF\u5F84\u4E0D\u5B58\u5728: {0}
warn.skipped.entry={0}
-warn.split.package=\u5DF2\u5728{1} {2}\u4E2D\u5B9A\u4E49\u7A0B\u5E8F\u5305{0}
+warn.split.package=\u62C6\u5206\u7A0B\u5E8F\u5305: {0} {1}
warn.replace.useJDKInternals=\u4E0D\u652F\u6301 JDK \u5185\u90E8 API, \u5B83\u4EEC\u4E13\u7528\u4E8E\u901A\u8FC7\u4E0D\u517C\u5BB9\u65B9\u5F0F\u6765\n\u5220\u9664\u6216\u66F4\u6539\u7684 JDK \u5B9E\u73B0, \u53EF\u80FD\u4F1A\u635F\u574F\u60A8\u7684\u5E94\u7528\u7A0B\u5E8F\u3002\n\u8BF7\u4FEE\u6539\u60A8\u7684\u4EE3\u7801, \u6D88\u9664\u4E0E\u4EFB\u4F55 JDK \u5185\u90E8 API \u7684\u76F8\u5173\u6027\u3002\n\u6709\u5173 JDK \u5185\u90E8 API \u66FF\u6362\u7684\u6700\u65B0\u66F4\u65B0, \u8BF7\u67E5\u770B:\n{0}
-split.package=\u62C6\u5206\u7A0B\u5E8F\u5305: {0} {1}\n
inverse.transitive.dependencies.on={0} \u7684\u9006\u5411\u8FC7\u6E21\u88AB\u4F9D\u8D56\u5BF9\u8C61
inverse.transitive.dependencies.matching=\u4E0E {0} \u5339\u914D\u7684\u9006\u5411\u8FC7\u6E21\u88AB\u4F9D\u8D56\u5BF9\u8C61
internal.api.column.header=JDK \u5185\u90E8 API
--- a/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTYResources_zh_CN.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTYResources_zh_CN.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -239,7 +239,7 @@
{"operation not yet supported", "\u5C1A\u4E0D\u652F\u6301\u8BE5\u64CD\u4F5C"},
{"Owned by:", " \u62E5\u6709\u8005: {0}, \u6761\u76EE\u8BA1\u6570: {1,number,integer}"},
{"Owned monitor:", " \u62E5\u6709\u7684\u76D1\u89C6\u5668: {0}"},
- {"Parse exception:", "\u89E3\u6790\u5F02\u5E38\u9519\u8BEF: {0}"},
+ {"Parse exception:", "\u8BED\u6CD5\u5206\u6790\u5F02\u5E38\u9519\u8BEF: {0}"},
{"printbreakpointcommandusage", "\u7528\u6CD5: {0} <class>:<line_number> \u6216\n {1} <class>.<method_name>[(argument_type,...)]"},
{"Removed:", "\u5DF2\u5220\u9664: {0}"},
{"Requested stack frame is no longer active:", "\u8BF7\u6C42\u7684\u5806\u6808\u5E27\u4E0D\u518D\u6709\u6548: {0,number,integer}"},
--- a/src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink_ja.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink_ja.properties Wed Jan 17 12:19:06 2018 +0000
@@ -64,6 +64,9 @@
error.prefix=\u30A8\u30E9\u30FC:
warn.prefix=\u8B66\u544A:
+err.empty.module.path=\u7A7A\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9
+err.jlink.version.mismatch=jlink\u30D0\u30FC\u30B8\u30E7\u30F3{0}.{1}\u304C\u30BF\u30FC\u30B2\u30C3\u30C8\u306Ejava.base\u30D0\u30FC\u30B8\u30E7\u30F3{2}.{3}\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093
+err.automatic.module:jlink\u3067\u306F\u81EA\u52D5\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093: {1}\u304B\u3089\u306E{0}
err.unknown.byte.order:\u4E0D\u660E\u306A\u30D0\u30A4\u30C8\u9806{0}
err.launcher.main.class.empty:\u8D77\u52D5\u30C4\u30FC\u30EB\u306E\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u540D\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093: {0}
err.launcher.module.name.empty:\u8D77\u52D5\u30C4\u30FC\u30EB\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u540D\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093: {0}
@@ -89,6 +92,8 @@
err.config.defaults=\u30D7\u30ED\u30D1\u30C6\u30A3{0}\u304C\u69CB\u6210\u306B\u3042\u308A\u307E\u305B\u3093
err.config.defaults.value=\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u5024\u304C\u9593\u9055\u3063\u3066\u3044\u307E\u3059: {0}
err.bom.generation=bom\u30D5\u30A1\u30A4\u30EB\u306E\u751F\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {0}
+err.not.a.module.directory=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306B\u306F\u3001module-info.class\u30D5\u30A1\u30A4\u30EB\u304C\u542B\u307E\u308C\u307E\u305B\u3093
+err.cannot.read.module.info={0}\u304B\u3089\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u3092\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093
err.not.modular.format=\u9078\u629E\u3057\u305F\u30E2\u30B8\u30E5\u30FC\u30EB{0} ({1})\u304Cjmod\u307E\u305F\u306F\u30E2\u30B8\u30E5\u30E9JAR\u5F62\u5F0F\u3067\u306F\u3042\u308A\u307E\u305B\u3093
err.signing=\u7F72\u540D\u6E08\u30E2\u30B8\u30E5\u30E9JAR {0}\u306F\u73FE\u5728\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u30A8\u30E9\u30FC\u3092\u6291\u6B62\u3059\u308B\u306B\u306F--ignore-signing-information\u3092\u4F7F\u7528\u3057\u307E\u3059
warn.signing=\u8B66\u544A: \u7F72\u540D\u6E08\u30E2\u30B8\u30E5\u30E9JAR {0}\u306F\u73FE\u5728\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
--- a/src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -64,6 +64,9 @@
error.prefix=\u9519\u8BEF:
warn.prefix=\u8B66\u544A:
+err.empty.module.path=\u7A7A\u6A21\u5757\u8DEF\u5F84
+err.jlink.version.mismatch=jlink \u7248\u672C {0}.{1} \u4E0E\u76EE\u6807 java.base \u7248\u672C {2}.{3} \u4E0D\u5339\u914D
+err.automatic.module:\u81EA\u52A8\u6A21\u5757\u4E0D\u80FD\u7528\u4E8E\u6765\u81EA {1} \u7684 jlink: {0}
err.unknown.byte.order:\u672A\u77E5\u7684\u5B57\u8282\u987A\u5E8F {0}
err.launcher.main.class.empty:\u542F\u52A8\u7A0B\u5E8F\u4E3B\u7C7B\u540D\u4E0D\u80FD\u4E3A\u7A7A: {0}
err.launcher.module.name.empty:\u542F\u52A8\u7A0B\u5E8F\u6A21\u5757\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A: {0}
@@ -89,6 +92,8 @@
err.config.defaults=\u914D\u7F6E\u4E2D\u7F3A\u5C11\u5C5E\u6027 {0}
err.config.defaults.value=\u9ED8\u8BA4\u5C5E\u6027\u4E2D\u7684\u503C\u9519\u8BEF: {0}
err.bom.generation=\u672A\u80FD\u751F\u6210 bom \u6587\u4EF6: {0}
+err.not.a.module.directory=\u76EE\u5F55 {0} \u4E0B\u4E0D\u5305\u542B module-info.class \u6587\u4EF6
+err.cannot.read.module.info=\u65E0\u6CD5\u4ECE {0} \u8BFB\u53D6\u6A21\u5757\u63CF\u8FF0\u7B26
err.not.modular.format=\u9009\u5B9A\u6A21\u5757 {0} ({1}) \u672A\u4F7F\u7528 jmod \u6216\u6A21\u5757\u5316 JAR \u683C\u5F0F
err.signing=\u5F53\u524D\u4E0D\u652F\u6301\u5DF2\u7B7E\u540D\u6A21\u5757\u5316 JAR {0}, \u4F7F\u7528 --ignore-signing-information \u53EF\u9690\u85CF\u9519\u8BEF
warn.signing=\u8B66\u544A: \u5F53\u524D\u4E0D\u652F\u6301\u5DF2\u7B7E\u540D\u6A21\u5757\u5316 JAR {0}
--- a/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_ja.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_ja.properties Wed Jan 17 12:19:06 2018 +0000
@@ -31,7 +31,8 @@
jshell.err.opt.feedback.one = \u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3(--feedback\u3001-q\u3001-s\u307E\u305F\u306F-v)\u306F1\u3064\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002
jshell.err.opt.unknown = \u4E0D\u660E\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}
-jshell.msg.terminated =\u72B6\u614B\u30A8\u30F3\u30B8\u30F3\u304C\u7D42\u4E86\u3057\u307E\u3057\u305F\u3002\n\u6B21\u3092\u6307\u5B9A\u3057\u3066\u5B9A\u7FA9\u3092\u5FA9\u5143\u3057\u3066\u304F\u3060\u3055\u3044: /reload -restore
+jshell.msg.terminated = \u72B6\u614B\u30A8\u30F3\u30B8\u30F3\u304C\u7D42\u4E86\u3057\u307E\u3057\u305F\u3002
+jshell.msg.terminated.restore = \u6B21\u3092\u6307\u5B9A\u3057\u3066\u5B9A\u7FA9\u3092\u5FA9\u5143\u3057\u3066\u304F\u3060\u3055\u3044: /reload -restore
jshell.msg.use.one.of = \u6B21\u306E\u3044\u305A\u308C\u304B\u3092\u4F7F\u7528\u3057\u307E\u3059: {0}
jshell.msg.see.classes.etc = /types\u3001/methods\u3001/vars\u307E\u305F\u306F/list\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044
@@ -46,7 +47,7 @@
jshell.err.startup.unexpected.exception = \u8D77\u52D5\u306E\u8AAD\u53D6\u308A\u4E2D\u306B\u4E88\u671F\u3057\u306A\u3044\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0}
jshell.err.unexpected.exception = \u4E88\u671F\u3057\u306A\u3044\u4F8B\u5916: {0}
-jshell.err.no.such.command.or.snippet.id = \u6307\u5B9A\u3055\u308C\u305F\u30B3\u30DE\u30F3\u30C9\u307E\u305F\u306F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306F\u5B58\u5728\u3057\u307E\u305B\u3093: {0}
+jshell.err.invalid.command = \u7121\u52B9\u306A\u30B3\u30DE\u30F3\u30C9: {0}
jshell.err.command.ambiguous = \u30B3\u30DE\u30F3\u30C9: ''{0}''\u306F\u3042\u3044\u307E\u3044\u3067\u3059: {1}
jshell.msg.set.restore = \u65B0\u3057\u3044\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u8A2D\u5B9A\u3068\u72B6\u614B\u306E\u5FA9\u5143\u3002
jshell.msg.set.editor.set = \u30A8\u30C7\u30A3\u30BF\u306F\u6B21\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059: {0}
@@ -91,12 +92,20 @@
jshell.msg.help.begin =Java\u8A00\u8A9E\u306E\u5F0F\u3001\u6587\u307E\u305F\u306F\u5BA3\u8A00\u3092\u5165\u529B\u3057\u307E\u3059\u3002\n\u307E\u305F\u306F\u3001\u6B21\u306E\u30B3\u30DE\u30F3\u30C9\u306E\u3044\u305A\u308C\u304B\u3092\u5165\u529B\u3057\u307E\u3059:\n
jshell.msg.help.subject =\n\u8A73\u7D30\u306F\u3001''/help''\u306E\u5F8C\u306B\u30B3\u30DE\u30F3\u30C9\u307E\u305F\u306F\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u540D\u524D\u3092\u7D9A\u3051\u3066\n\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u305F\u3068\u3048\u3070\u3001''/help /list''\u307E\u305F\u306F''/help intro''\u306A\u3069\u3067\u3059\u3002\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8:\n\n
+jshell.err.no.snippet.with.id = ID: {0}\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u306F\u5B58\u5728\u3057\u307E\u305B\u3093
+jshell.err.end.snippet.range.less.than.start = \u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u7BC4\u56F2\u306E\u7D42\u4E86\u70B9\u304C\u958B\u59CB\u70B9\u3088\u308A\u5C0F\u3055\u304F\u306A\u3063\u3066\u3044\u307E\u3059: {0} - {1}
+jshell.err.range.requires.id = \u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u7BC4\u56F2\u306B\u306F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u304C\u5FC5\u8981\u3067\u3059: {0}
+
+jshell.err.exit.not.expression = /exit\u306E\u5F15\u6570\u306F\u3001\u6709\u52B9\u306A\u6574\u6570\u5F0F\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u3053\u308C\u306F\u5F0F\u3067\u306F\u3042\u308A\u307E\u305B\u3093: {0}
+jshell.err.exit.bad.type = /exit\u306E\u5F15\u6570\u306F\u3001\u6709\u52B9\u306A\u6574\u6570\u5F0F\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30BF\u30A4\u30D7\u306F{1}\u3067\u3059: {0}
+jshell.err.exit.bad.value = /exit\u306E\u5F15\u6570\u306B\u4E0D\u6B63\u306A\u5024\u306E{1}\u304C\u3042\u308A\u307E\u3059: {0}
+
jshell.err.drop.arg =/drop\u5F15\u6570\u306B\u306F\u3001\u524A\u9664\u3059\u308B\u30A4\u30F3\u30DD\u30FC\u30C8\u3001\u5909\u6570\u3001\u30E1\u30BD\u30C3\u30C9\u307E\u305F\u306F\u30AF\u30E9\u30B9\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\nID\u307E\u305F\u306F\u540D\u524D\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002ID\u3092\u53C2\u7167\u3059\u308B\u306B\u306F/list\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\u3059\u3079\u3066\u306E\u72B6\u614B\u3092\u30EA\u30BB\u30C3\u30C8\u3059\u308B\u306B\u306F/reset\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002
-jshell.err.drop.ambiguous = \u5F15\u6570\u304C\u3001\u8907\u6570\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u3001\u5909\u6570\u3001\u30E1\u30BD\u30C3\u30C9\u307E\u305F\u306F\u30AF\u30E9\u30B9\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002
jshell.err.failed = \u5931\u6557\u3057\u307E\u3057\u305F\u3002
jshell.msg.native.method = Native\u30E1\u30BD\u30C3\u30C9
jshell.msg.unknown.source = \u4E0D\u660E\u306A\u30BD\u30FC\u30B9
jshell.msg.goodbye = \u7D42\u4E86\u3057\u307E\u3059
+jshell.msg.goodbye.value = \u7D42\u4E86\u3057\u307E\u3059({0})
jshell.msg.help.for.help = \u30D8\u30EB\u30D7\u3092\u53C2\u7167\u3059\u308B\u306B\u306F\u3001/help\u3068\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002
@@ -153,29 +162,36 @@
jshell.console.do.nothing = \u4F55\u3082\u3057\u306A\u3044
jshell.console.choice = \u9078\u629E:
jshell.console.create.variable = \u5909\u6570\u306E\u4F5C\u6210
+jshell.console.create.method = \u30E1\u30BD\u30C3\u30C9\u306E\u4F5C\u6210
jshell.console.resolvable = \n\u8B58\u5225\u5B50\u306F\u3053\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3067\u89E3\u6C7A\u3067\u304D\u307E\u3059\u3002
jshell.console.no.candidate = \n\u30A4\u30F3\u30DD\u30FC\u30C8\u3059\u308B\u5019\u88DC\u306E\u5B8C\u5168\u4FEE\u98FE\u3055\u308C\u305F\u540D\u524D\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
jshell.console.incomplete = \n\u7D50\u679C\u304C\u4E0D\u5B8C\u5168\u3067\u3042\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u7D50\u679C\u3092\u5B8C\u5168\u306B\u3059\u308B\u306B\u306F\u3001\u5F8C\u3067\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-
+jshell.console.erroneous = \n\u4E0D\u5B8C\u5168\u307E\u305F\u306F\u30A8\u30E9\u30FC\u3002\u5358\u4E00\u306E\u6709\u52B9\u306A\u5F0F\u307E\u305F\u306F\u6587\u3067[Shift]-[Tab] m\u3092\u7D9A\u884C\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+jshell.console.exprstmt = \n\u5358\u4E00\u306E\u6709\u52B9\u306A\u5F0F\u307E\u305F\u306F\u6587\u3067[Shift]-[Tab] m\u3092\u7D9A\u884C\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+jshell.console.empty = \n\u7A7A\u306E\u30A8\u30F3\u30C8\u30EA\u3002\u5358\u4E00\u306E\u6709\u52B9\u306A\u5F0F\u307E\u305F\u306F\u6587\u3067[Shift]-[Tab] m\u3092\u7D9A\u884C\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-help.usage = \u4F7F\u7528\u65B9\u6CD5: jshell <options> <load files>\n\u4F7F\u7528\u53EF\u80FD\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059:\n --class-path <path> \u30E6\u30FC\u30B6\u30FC\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3057\u307E\u3059\n --module-path <path> \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3057\u307E\u3059\n --add-modules <module>(,<module>)*\n \u89E3\u6C7A\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u3001\u307E\u305F\u306F<module>\u304CALL-MODULE-PATH\n \u3067\u3042\u308B\u5834\u5408\u306F\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9\u306E\u3059\u3079\u3066\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u6307\u5B9A\u3057\u307E\u3059\n --startup <file> \u8D77\u52D5\u5B9A\u7FA9\u306E\u4EE3\u66FF\u3068\u3057\u3066\u5B9F\u884C\u3055\u308C\u307E\u3059\n --no-startup \u8D77\u52D5\u5B9A\u7FA9\u3092\u5B9F\u884C\u3057\u307E\u305B\u3093\n --feedback <mode> \u521D\u671F\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u30E2\u30FC\u30C9\u306F\n \u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B(silent\u3001concise\u3001normal\u307E\u305F\u306Fverbose)\u304B\u3001\n \u4E8B\u524D\u306B\u30E6\u30FC\u30B6\u30FC\u304C\u5B9A\u7FA9\u3067\u304D\u307E\u3059\n -q \u7C21\u6F54\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3002--feedback concise\u3068\u540C\u3058\n -s \u975E\u5E38\u306B\u7C21\u6F54\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3002--feedback silent\u3068\u540C\u3058\n -v \u8A73\u7D30\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3002--feedback verbose\u3068\u540C\u3058\n -J<flag> <flag>\u3092\u5B9F\u884C\u6642\u30B7\u30B9\u30C6\u30E0\u306B\u76F4\u63A5\u6E21\u3057\u307E\u3059\u3002\n \u5B9F\u884C\u6642\u30D5\u30E9\u30B0\u307E\u305F\u306F\u30D5\u30E9\u30B0\u5F15\u6570\u3054\u3068\u306B1\u3064\u306E-J\u3092\u4F7F\u7528\u3057\u307E\u3059\n -R<flag> <flag>\u3092\u30EA\u30E2\u30FC\u30C8\u5B9F\u884C\u6642\u30B7\u30B9\u30C6\u30E0\u306B\u6E21\u3057\u307E\u3059\u3002\n \u30EA\u30E2\u30FC\u30C8\u30FB\u30D5\u30E9\u30B0\u307E\u305F\u306F\u30D5\u30E9\u30B0\u5F15\u6570\u3054\u3068\u306B1\u3064\u306E-R\u3092\u4F7F\u7528\u3057\u307E\u3059\n -C<flag> <flag>\u3092\u30B3\u30F3\u30D1\u30A4\u30E9\u306B\u6E21\u3057\u307E\u3059\u3002\n \u30B3\u30F3\u30D1\u30A4\u30E9\u30FB\u30D5\u30E9\u30B0\u307E\u305F\u306F\u30D5\u30E9\u30B0\u5F15\u6570\u3054\u3068\u306B1\u3064\u306E-C\u3092\u4F7F\u7528\u3057\u307E\u3059\n --version \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u51FA\u529B\u3057\u7D42\u4E86\u3057\u307E\u3059\n --show-version \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u51FA\u529B\u3057\u7D9A\u884C\u3057\u307E\u3059\n --help \u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u3053\u306E\u6982\u8981\u3092\u51FA\u529B\u3057\u7D42\u4E86\u3057\u307E\u3059\n --help-extra, -X \u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30D8\u30EB\u30D7\u3092\u51FA\u529B\u3057\u7D42\u4E86\u3057\u307E\u3059\n
+jshell.fix.wrong.shortcut =[Shift]-[Tab]\u306E\u5F8C\u306E\u6587\u5B57\u304C\u4E88\u671F\u3057\u306A\u3044\u6587\u5B57\u3067\u3059\u3002\n\u81EA\u52D5\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u306F"i"\u3001\u5909\u6570\u306E\u4F5C\u6210\u306B\u306F"v"\u3001\u30E1\u30BD\u30C3\u30C9\u306E\u4F5C\u6210\u306B\u306F"m"\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\u8A73\u7D30\u306F\u6B21\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044:\n/help shortcuts
+
+help.usage = \u4F7F\u7528\u65B9\u6CD5: jshell <option>... <load file>...\n\u4F7F\u7528\u53EF\u80FD\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059:\n --class-path <path> \u30E6\u30FC\u30B6\u30FC\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3057\u307E\u3059\n --module-path <path> \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u3042\u308B\u5834\u6240\u3092\u6307\u5B9A\u3057\u307E\u3059\n --add-modules <module>(,<module>)*\n \u89E3\u6C7A\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u3001\u307E\u305F\u306F<module>\u304CALL-MODULE-PATH\n \u3067\u3042\u308B\u5834\u5408\u306F\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9\u306E\u3059\u3079\u3066\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u6307\u5B9A\u3057\u307E\u3059\n --startup <file> \u8D77\u52D5\u5B9A\u7FA9\u306E\u4EE3\u66FF\u3068\u3057\u3066\u5B9F\u884C\u3055\u308C\u307E\u3059\n --no-startup \u8D77\u52D5\u5B9A\u7FA9\u3092\u5B9F\u884C\u3057\u307E\u305B\u3093\n --feedback <mode> \u521D\u671F\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u30E2\u30FC\u30C9\u306F\n \u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B(silent\u3001concise\u3001normal\u307E\u305F\u306Fverbose)\u304B\u3001\n \u4E8B\u524D\u306B\u30E6\u30FC\u30B6\u30FC\u304C\u5B9A\u7FA9\u3067\u304D\u307E\u3059\n -q \u7C21\u6F54\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3002--feedback concise\u3068\u540C\u3058\n -s \u975E\u5E38\u306B\u7C21\u6F54\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3002--feedback silent\u3068\u540C\u3058\n -v \u8A73\u7D30\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3002--feedback verbose\u3068\u540C\u3058\n -J<flag> <flag>\u3092\u5B9F\u884C\u6642\u30B7\u30B9\u30C6\u30E0\u306B\u76F4\u63A5\u6E21\u3057\u307E\u3059\u3002\n \u5B9F\u884C\u6642\u30D5\u30E9\u30B0\u307E\u305F\u306F\u30D5\u30E9\u30B0\u5F15\u6570\u3054\u3068\u306B1\u3064\u306E-J\u3092\u4F7F\u7528\u3057\u307E\u3059\n -R<flag> <flag>\u3092\u30EA\u30E2\u30FC\u30C8\u5B9F\u884C\u6642\u30B7\u30B9\u30C6\u30E0\u306B\u6E21\u3057\u307E\u3059\u3002\n \u30EA\u30E2\u30FC\u30C8\u30FB\u30D5\u30E9\u30B0\u307E\u305F\u306F\u30D5\u30E9\u30B0\u5F15\u6570\u3054\u3068\u306B1\u3064\u306E-R\u3092\u4F7F\u7528\u3057\u307E\u3059\n -C<flag> <flag>\u3092\u30B3\u30F3\u30D1\u30A4\u30E9\u306B\u6E21\u3057\u307E\u3059\u3002\n \u30B3\u30F3\u30D1\u30A4\u30E9\u30FB\u30D5\u30E9\u30B0\u307E\u305F\u306F\u30D5\u30E9\u30B0\u5F15\u6570\u3054\u3068\u306B1\u3064\u306E-C\u3092\u4F7F\u7528\u3057\u307E\u3059\n --version \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u51FA\u529B\u3057\u7D42\u4E86\u3057\u307E\u3059\n --show-version \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u51FA\u529B\u3057\u7D9A\u884C\u3057\u307E\u3059\n --help \u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u3053\u306E\u6982\u8981\u3092\u51FA\u529B\u3057\u7D42\u4E86\u3057\u307E\u3059\n --help-extra, -X \
+\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30D8\u30EB\u30D7\u3092\u51FA\u529B\u3057\u7D42\u4E86\u3057\u307E\u3059\n\u30D5\u30A1\u30A4\u30EB\u5F15\u6570\u306B\u306F\u3001\u30D5\u30A1\u30A4\u30EB\u540D\u304B\u3001\u307E\u305F\u306F\u4E8B\u524D\u5B9A\u7FA9\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u540D(DEFAULT\u3001\nPRINTING\u307E\u305F\u306FJAVASE)\u306E1\u3064\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\u30ED\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u3067\u3082\u3001\u5BFE\u8A71\u578BI/O\u3092\u4F7F\u7528\u305B\u305A\u306B\u3001"-"\u3092\u6307\u5B9A\u3057\u3066\u6A19\u6E96\u5165\u529B\u3092\u793A\u3059\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\n
+
help.usage.x = \ --add-exports <module>/<package> \u6307\u5B9A\u3057\u305F\u30E2\u30B8\u30E5\u30FC\u30EB\u56FA\u6709\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u30B9\u30CB\u30DA\u30C3\u30C8\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u307E\u3059\n --execution <spec> \u4EE3\u66FF\u5B9F\u884C\u30A8\u30F3\u30B8\u30F3\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\n \u3053\u3053\u3067\u3001<spec>\u306FExecutionControl spec\u3067\u3059\u3002\n spec\u306E\u69CB\u6587\u306B\u3064\u3044\u3066\u306F\u3001\u30D1\u30C3\u30B1\u30FC\u30B8jdk.jshell.spi\u306E\n \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n \n\u3053\u308C\u3089\u306F\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3042\u308A\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\u3002\n
help.list.summary = \u5165\u529B\u3057\u305F\u30BD\u30FC\u30B9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
help.list.args = [<name or id>|-all|-start]
-help.list =\u30B9\u30CB\u30DA\u30C3\u30C8ID\u304C\u4ED8\u304F\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u30BD\u30FC\u30B9\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n\n/list\n\t\u5165\u529B\u3057\u305F\u3001\u307E\u305F\u306F/open\u3067\u8AAD\u307F\u53D6\u3063\u305F\u30B3\u30FC\u30C9\u306E\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/list -start\n\t\u81EA\u52D5\u7684\u306B\u8A55\u4FA1\u3055\u308C\u305F\u8D77\u52D5\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/list -all\n\t\u5931\u6557\u3001\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u6E08\u3001\u524A\u9664\u6E08\u304A\u3088\u3073\u8D77\u52D5\u3092\u542B\u3080\u3059\u3079\u3066\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/list <name>\n\t\u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059(\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9)\n\n/list <id>\n\t\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
+help.list =\u30B9\u30CB\u30DA\u30C3\u30C8ID\u304C\u4ED8\u304F\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u30BD\u30FC\u30B9\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n\n/list\n\t\u5165\u529B\u3057\u305F\u3001\u307E\u305F\u306F/open\u3067\u8AAD\u307F\u53D6\u3063\u305F\u30B3\u30FC\u30C9\u306E\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/list -start\n\t\u81EA\u52D5\u7684\u306B\u8A55\u4FA1\u3055\u308C\u305F\u8D77\u52D5\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/list -all\n\t\u5931\u6557\u3001\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u6E08\u3001\u524A\u9664\u6E08\u304A\u3088\u3073\u8D77\u52D5\u3092\u542B\u3080\u3059\u3079\u3066\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/list <name>\n\t\u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059(\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9)\n\n/list <id>\n\t\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/list <id> <id>...\n\t\u6307\u5B9A\u3057\u305F\u8907\u6570\u306E\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/list <id>-<id>\n\t\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u7BC4\u56F2\u5185\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
help.edit.summary = \u540D\u524D\u307E\u305F\u306FID\u3067\u53C2\u7167\u3055\u308C\u308B\u30BD\u30FC\u30B9\u30FB\u30A8\u30F3\u30C8\u30EA\u3092\u7DE8\u96C6\u3057\u307E\u3059
help.edit.args = <name or id>
-help.edit =\u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u3067\u30B9\u30CB\u30DA\u30C3\u30C8\u307E\u305F\u306F\u30BD\u30FC\u30B9\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u7DE8\u96C6\u3057\u307E\u3059\u3002\n\u4F7F\u7528\u3059\u308B\u30A8\u30C7\u30A3\u30BF\u306F/set editor\u3067\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002\n\u30A8\u30C7\u30A3\u30BF\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3001\u7C21\u6613\u30A8\u30C7\u30A3\u30BF\u304C\u8D77\u52D5\u3055\u308C\u307E\u3059\u3002\n\n/edit <name>\n\t\u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u7DE8\u96C6\u3057\u307E\u3059(\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9)\n\n/edit <id>\n\t\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u7DE8\u96C6\u3057\u307E\u3059\n\n/edit\n\t\u5165\u529B\u3057\u305F\u3001\u307E\u305F\u306F/open\u3067\u8AAD\u307F\u53D6\u3089\u308C\u305F\u30B3\u30FC\u30C9\u306E\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u7DE8\u96C6\u3057\u307E\u3059
+help.edit =\u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u3067\u30B9\u30CB\u30DA\u30C3\u30C8\u307E\u305F\u306F\u30BD\u30FC\u30B9\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u7DE8\u96C6\u3057\u307E\u3059\u3002\n\u4F7F\u7528\u3059\u308B\u30A8\u30C7\u30A3\u30BF\u306F/set editor\u3067\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002\n\u30A8\u30C7\u30A3\u30BF\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3001\u7C21\u6613\u30A8\u30C7\u30A3\u30BF\u304C\u8D77\u52D5\u3055\u308C\u307E\u3059\u3002\n\n/edit <name>\n\t\u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u7DE8\u96C6\u3057\u307E\u3059(\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9)\n\n/edit <id>\n\t\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u7DE8\u96C6\u3057\u307E\u3059\n\n/edit <id> <id>...\n\t\u6307\u5B9A\u3057\u305F\u8907\u6570\u306E\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u7DE8\u96C6\u3057\u307E\u3059\n\n/edit <id>-<id>\n\t\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u7BC4\u56F2\u5185\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u7DE8\u96C6\u3057\u307E\u3059\n\n/edit -start\n\t\u81EA\u52D5\u7684\u306B\u8A55\u4FA1\u3055\u308C\u305F\u8D77\u52D5\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u7DE8\u96C6\u3057\u307E\u3059\u3002\u306A\u3093\u3089\u304B\u306E\u5909\u66F4\u304C\u3053\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\n\t\u3067\u767A\u751F\u3057\u3066\u3082\u3001\u8D77\u52D5\u8A2D\u5B9A\u306B\u306F\u5F71\u97FF\u3042\u308A\u307E\u305B\u3093\n\n/edit -all\n\t\u5931\u6557\u3001\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u6E08\u3001\u524A\u9664\u6E08\u304A\u3088\u3073\u8D77\u52D5\u3092\u542B\u3080\u3059\u3079\u3066\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u7DE8\u96C6\u3057\u307E\u3059\n\n/edit\n\t\u5165\u529B\u3057\u305F\u3001\u307E\u305F\u306F/open\u3067\u8AAD\u307F\u53D6\u3063\u305F\u30B3\u30FC\u30C9\u306E\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u7DE8\u96C6\u3057\u307E\u3059
help.drop.summary = \u540D\u524D\u307E\u305F\u306FID\u3067\u53C2\u7167\u3055\u308C\u308B\u30BD\u30FC\u30B9\u30FB\u30A8\u30F3\u30C8\u30EA\u3092\u524A\u9664\u3057\u307E\u3059
help.drop.args = <name or id>
-help.drop =\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u524A\u9664\u3057\u307E\u3059 -- \u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306B\u3057\u307E\u3059\u3002\n\n/drop <name>\n\t\u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\n\n/drop <id>\n\t\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u524A\u9664\u3057\u307E\u3059
+help.drop =\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u524A\u9664\u3057\u307E\u3059 -- \u975E\u30A2\u30AF\u30C6\u30A3\u30D6\u306B\u3057\u307E\u3059\u3002\n\n/drop <name>\n\t\u6307\u5B9A\u3057\u305F\u540D\u524D\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\n\n/drop <id>\n\t\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\n\n/drop <id> <id>...\n\t\u6307\u5B9A\u3057\u305F\u8907\u6570\u306E\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\n\n/drop <id>-<id>\n\t\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u7BC4\u56F2\u5185\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u524A\u9664\u3057\u307E\u3059
help.save.summary = \u30D5\u30A1\u30A4\u30EB\u306B\u30B9\u30CB\u30DA\u30C3\u30C8\u30FB\u30BD\u30FC\u30B9\u3092\u4FDD\u5B58\u3057\u307E\u3059\u3002
help.save.args = [-all|-history|-start] <file>
-help.save =\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8\u307E\u305F\u306F\u30B3\u30DE\u30F3\u30C9(\u3042\u308B\u3044\u306F\u305D\u306E\u4E21\u65B9)\u3092\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002\n\n/save <file>\n\t\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u30BD\u30FC\u30B9\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002\n\n/save -all <file>\n\t\u3059\u3079\u3066\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u30BD\u30FC\u30B9\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002\n\t\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u6E08\u3001\u5931\u6557\u304A\u3088\u3073\u8D77\u52D5\u30B3\u30FC\u30C9\u3092\u542B\u3080\u30BD\u30FC\u30B9\u304C\u542B\u307E\u308C\u307E\u3059\u3002\n\n/save -history <file>\n\tjshell\u306E\u8D77\u52D5\u4EE5\u964D\u5165\u529B\u3055\u308C\u305F\u3001\u3059\u3079\u3066\u306E\u30B3\u30DE\u30F3\u30C9\u304A\u3088\u3073\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u9806\u6B21\u5C65\u6B74\u3092\u4FDD\u5B58\u3057\u307E\u3059\u3002\n\n/save -start <file>\n\t\u73FE\u5728\u306E\u8D77\u52D5\u5B9A\u7FA9\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002
+help.save =\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8\u307E\u305F\u306F\u30B3\u30DE\u30F3\u30C9(\u3042\u308B\u3044\u306F\u305D\u306E\u4E21\u65B9)\u3092\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002\n\n/save <file>\n\t\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u30BD\u30FC\u30B9\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002\n\n/save -all <file>\n\t\u3059\u3079\u3066\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u30BD\u30FC\u30B9\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002\n\t\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u6E08\u3001\u5931\u6557\u304A\u3088\u3073\u8D77\u52D5\u30B3\u30FC\u30C9\u3092\u542B\u3080\u30BD\u30FC\u30B9\u304C\u542B\u307E\u308C\u307E\u3059\u3002\n\n/save -history <file>\n\tjshell\u306E\u8D77\u52D5\u4EE5\u964D\u5165\u529B\u3055\u308C\u305F\u3001\u3059\u3079\u3066\u306E\u30B3\u30DE\u30F3\u30C9\u304A\u3088\u3073\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u9806\u6B21\u5C65\u6B74\u3092\u4FDD\u5B58\u3057\u307E\u3059\u3002\n\n/save -start <file>\n\t\u73FE\u5728\u306E\u8D77\u52D5\u5B9A\u7FA9\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002\n\n/save <id> <file>\n\t\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u4FDD\u5B58\u3057\u307E\u3059\n\n/save <id> <id>... <file>\n\t\u6307\u5B9A\u3057\u305F\u8907\u6570\u306E\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u4FDD\u5B58\u3057\u307E\u3059\n\n/save <id>-<id> <file>\n\t\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u7BC4\u56F2\u5185\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u4FDD\u5B58\u3057\u307E\u3059
help.open.summary = \u30BD\u30FC\u30B9\u306E\u5165\u529B\u3068\u3057\u3066\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304D\u307E\u3059
help.open.args = <file>
@@ -183,23 +199,23 @@
help.vars.summary = \u5BA3\u8A00\u3055\u308C\u305F\u5909\u6570\u304A\u3088\u3073\u305D\u306E\u5024\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
help.vars.args = [<name or id>|-all|-start]
-help.vars =jshell\u5909\u6570\u306E\u578B\u3001\u540D\u524D\u304A\u3088\u3073\u5024\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\u3002\n\n/vars\n\t\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306Ajshell\u5909\u6570\u306E\u578B\u3001\u540D\u524D\u304A\u3088\u3073\u5024\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/vars <name>\n\t\u6307\u5B9A\u3057\u305F\u540D\u524D\u306Ejshell\u5909\u6570\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059(\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u5909\u6570\u306E\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9)\n\n/vars <id>\n\t\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306Ejshell\u5909\u6570\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/vars -start\n\t\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3055\u308C\u305F\u8D77\u52D5jshell\u5909\u6570\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/vars -all\n\t\u5931\u6557\u3001\u4E0A\u66F8\u304D\u6E08\u3001\u524A\u9664\u6E08\u304A\u3088\u3073\u8D77\u52D5\u3092\u542B\u3080\u3059\u3079\u3066\u306Ejshell\u5909\u6570\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
+help.vars =jshell\u5909\u6570\u306E\u578B\u3001\u540D\u524D\u304A\u3088\u3073\u5024\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\u3002\n\n/vars\n\t\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306Ajshell\u5909\u6570\u306E\u578B\u3001\u540D\u524D\u304A\u3088\u3073\u5024\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/vars <name>\n\t\u6307\u5B9A\u3057\u305F\u540D\u524D\u306Ejshell\u5909\u6570\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059(\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u5909\u6570\u306E\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9)\n\n/vars <id>\n\t\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306Ejshell\u5909\u6570\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/vars <id> <id>... <file>\n\t\u6307\u5B9A\u3057\u305F\u8907\u6570\u306E\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306Ejshell\u5909\u6570\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/vars <id>-<id> <file>\n\t\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u7BC4\u56F2\u5185\u306Ejshell\u5909\u6570\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/vars -start\n\t\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3055\u308C\u305F\u8D77\u52D5jshell\u5909\u6570\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/vars -all\n\t\u5931\u6557\u3001\u4E0A\u66F8\u304D\u6E08\u3001\u524A\u9664\u6E08\u304A\u3088\u3073\u8D77\u52D5\u3092\u542B\u3080\u3059\u3079\u3066\u306Ejshell\u5909\u6570\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
help.methods.summary = \u5BA3\u8A00\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9\u304A\u3088\u3073\u305D\u306E\u7F72\u540D\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
help.methods.args = [<name or id>|-all|-start]
-help.methods =jshell\u30E1\u30BD\u30C3\u30C9\u306E\u540D\u524D\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u578B\u304A\u3088\u3073\u623B\u308A\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\u3002\n\n/methods\n\t\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306Ajshell\u30E1\u30BD\u30C3\u30C9\u306E\u540D\u524D\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u578B\u304A\u3088\u3073\u623B\u308A\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/methods <name>\n\t\u6307\u5B9A\u3057\u305F\u540D\u524D\u306Ejshell\u30E1\u30BD\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059(\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30E1\u30BD\u30C3\u30C9\u306E\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9)\n\n/methods <id>\n\t\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306Ejshell\u30E1\u30BD\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/methods -start\n\t\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3055\u308C\u305F\u8D77\u52D5jshell\u30E1\u30BD\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/methods -all\n\t\u5931\u6557\u3001\u4E0A\u66F8\u304D\u6E08\u3001\u524A\u9664\u6E08\u304A\u3088\u3073\u8D77\u52D5\u3092\u542B\u3080\u3059\u3079\u3066\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
+help.methods =jshell\u30E1\u30BD\u30C3\u30C9\u306E\u540D\u524D\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u578B\u304A\u3088\u3073\u623B\u308A\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\u3002\n\n/methods\n\t\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306Ajshell\u30E1\u30BD\u30C3\u30C9\u306E\u540D\u524D\u3001\u30D1\u30E9\u30E1\u30FC\u30BF\u578B\u304A\u3088\u3073\u623B\u308A\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/methods <name>\n\t\u6307\u5B9A\u3057\u305F\u540D\u524D\u306Ejshell\u30E1\u30BD\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059(\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30E1\u30BD\u30C3\u30C9\u306E\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9)\n\n/methods <id>\n\t\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306Ejshell\u30E1\u30BD\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/methods <id> <id>... <file>\n\t\u6307\u5B9A\u3057\u305F\u8907\u6570\u306E\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306Ejshell\u30E1\u30BD\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/methods <id>-<id> <file>\n\t\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u7BC4\u56F2\u5185\u306Ejshell\u30E1\u30BD\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/methods -start\n\t\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3055\u308C\u305F\u8D77\u52D5jshell\u30E1\u30BD\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/methods -all\n\t\u5931\u6557\u3001\u4E0A\u66F8\u304D\u6E08\u3001\u524A\u9664\u6E08\u304A\u3088\u3073\u8D77\u52D5\u3092\u542B\u3080\u3059\u3079\u3066\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
help.types.summary = \u5BA3\u8A00\u3055\u308C\u305F\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
help.types.args =[<name or id>|-all|-start]
-help.types =jshell\u30AF\u30E9\u30B9\u3001\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304A\u3088\u3073\u5217\u6319\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\u3002\n\n/types\n\t\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306Ajshell\u30AF\u30E9\u30B9\u3001\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304A\u3088\u3073\u5217\u6319\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\u3002\n\n/types <name>\n\t\u6307\u5B9A\u3057\u305F\u540D\u524D\u306Ejshell\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059(\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u578B\u306E\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9)\n\n/types <id>\n\t\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306Ejshell\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/types -start\n\t\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3055\u308C\u305F\u8D77\u52D5jshell\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/types -all\n\t\u5931\u6557\u3001\u4E0A\u66F8\u304D\u6E08\u3001\u524A\u9664\u6E08\u304A\u3088\u3073\u8D77\u52D5\u3092\u542B\u3080\u3059\u3079\u3066\u306Ejshell\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
+help.types =jshell\u30AF\u30E9\u30B9\u3001\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304A\u3088\u3073\u5217\u6319\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\u3002\n\n/types\n\t\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306Ajshell\u30AF\u30E9\u30B9\u3001\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304A\u3088\u3073\u5217\u6319\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\u3002\n\n/types <name>\n\t\u6307\u5B9A\u3057\u305F\u540D\u524D\u306Ejshell\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059(\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u578B\u306E\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9)\n\n/types <id>\n\t\u6307\u5B9A\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306Ejshell\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/types <id> <id>... <file>\n\t\u6307\u5B9A\u3057\u305F\u8907\u6570\u306E\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306Ejshell\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/types <id>-<id> <file>\n\t\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306E\u7BC4\u56F2\u5185\u306Ejshell\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/types -start\n\t\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3055\u308C\u305F\u8D77\u52D5jshell\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\n/types -all\n\t\u5931\u6557\u3001\u4E0A\u66F8\u304D\u6E08\u3001\u524A\u9664\u6E08\u304A\u3088\u3073\u8D77\u52D5\u3092\u542B\u3080\u3059\u3079\u3066\u306Ejshell\u578B\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
help.imports.summary = \u30A4\u30F3\u30DD\u30FC\u30C8\u3055\u308C\u305F\u30A2\u30A4\u30C6\u30E0\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059
help.imports.args =
help.imports =\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306Ajshell\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\u3002
help.exit.summary = exit jshell
-help.exit.args =
-help.exit =jshell\u30C4\u30FC\u30EB\u3092\u7D42\u4E86\u3057\u307E\u3059\u3002\u4F5C\u696D\u306F\u4FDD\u5B58\u3055\u308C\u307E\u305B\u3093\u3002\n\u3053\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528\u3059\u308B\u524D\u306B\u3059\u3079\u3066\u306E\u4F5C\u696D\u3092\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044
+help.exit.args =[<integer-expression-snippet>]
+help.exit =jshell\u30C4\u30FC\u30EB\u3092\u7D42\u4E86\u3057\u307E\u3059\u3002\u4F5C\u696D\u306F\u4FDD\u5B58\u3055\u308C\u307E\u305B\u3093\u3002\n\u3053\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528\u3059\u308B\u524D\u306B\u3059\u3079\u3066\u306E\u4F5C\u696D\u3092\u4FDD\u5B58\u3057\u3066\u304F\u3060\u3055\u3044\n\n/exit\n\tjshell\u30C4\u30FC\u30EB\u3092\u7D42\u4E86\u3057\u307E\u3059\u3002\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u306F\u30BC\u30ED\u3067\u3059\u3002\n\n/exit <integer-expression-snippet>\n\t\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u8A55\u4FA1\u3057\u307E\u3059\u3002\u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u5931\u6557\u3059\u308B\u304B\u3001\u6574\u6570\u5F0F\u3067\u306F\u306A\u3044\u5834\u5408\u3001\n\t\u30A8\u30E9\u30FC\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u305D\u308C\u4EE5\u5916\u306E\u5834\u5408\u3001jshell\u30C4\u30FC\u30EB\u306F\u3001\n\t\u7D42\u4E86\u30B9\u30C6\u30FC\u30BF\u30B9\u3068\u3057\u3066\u5F0F\u306E\u5024\u3068\u3068\u3082\u306B\u7D42\u4E86\u3057\u307E\u3059
help.reset.summary = reset jshell
help.reset.args = [-class-path <path>] [-module-path <path>] [-add-modules <modules>]...
@@ -207,7 +223,7 @@
help.reload.summary = \u30EA\u30BB\u30C3\u30C8\u3057\u3066\u95A2\u9023\u3059\u308B\u5C65\u6B74\u3092\u30EA\u30D7\u30EC\u30A4\u3057\u307E\u3059 -- \u73FE\u5728\u307E\u305F\u306F\u4EE5\u524D(-restore)
help.reload.args = [-restore] [-quiet] [-class-path <path>] [-module-path <path>]...
-help.reload =jshell\u30C4\u30FC\u30EB\u30FB\u30B3\u30FC\u30C9\u304A\u3088\u3073\u5B9F\u884C\u72B6\u614B\u3092\u30EA\u30BB\u30C3\u30C8\u3057\u3001\u5404\u6709\u52B9\u30B9\u30CB\u30DA\u30C3\u30C8\n\u304A\u3088\u3073\u4EFB\u610F\u306E/drop\u30B3\u30DE\u30F3\u30C9\u3092\u5165\u529B\u3055\u308C\u305F\u9806\u756A\u3067\u30EA\u30D7\u30EC\u30A4\u3057\u307E\u3059\u3002\n\n/reload\n\t\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u3001jshell\u304C\u5165\u529B\u3055\u308C\u305F\u3001\u3042\u308B\u3044\u306F/reset\u307E\u305F\u306F\n\t/reload\u30B3\u30DE\u30F3\u30C9\u304C\u5B9F\u884C\u3055\u308C\u305F(\u6700\u65B0\u306E\u3044\u305A\u308C\u304B)\u4EE5\u964D\u306E\u6709\u52B9\u306A\u5C65\u6B74\u304C\n\t\u30EA\u30D7\u30EC\u30A4\u3055\u308C\u307E\u3059\u3002\n\n/reload -restore\n\t\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u3001jshell\u304C\u5165\u529B\u3055\u308C\u305F\u3001\u3042\u308B\u3044\u306F/reset\u307E\u305F\u306F/reload\u30B3\u30DE\u30F3\u30C9\u304C\n\t\u5B9F\u884C\u3055\u308C\u305F\u4EE5\u524D\u3068\u6700\u65B0\u306E\u6642\u9593\u306E\u9593\u306E\u6709\u52B9\u306A\u5C65\u6B74\u304C\u30EA\u30D7\u30EC\u30A4\u3055\u308C\u307E\u3059\u3002\n\t\u305D\u306E\u305F\u3081\u3001\u3053\u308C\u306F\u4EE5\u524D\u306Ejshell\u30C4\u30FC\u30EB\u30FB\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u5FA9\u5143\u306B\n\t\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n/reload [-restore] -quiet\n\t'-quiet'\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u30EA\u30D7\u30EC\u30A4\u304C\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002\u30A8\u30E9\u30FC\u306F\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\n\u4E0A\u306E\u5404\u3005\u306F\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u53D7\u3051\u5165\u308C\u307E\u3059\u3002\u6B21\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044:\n\n\t/help context\n\n\u4F8B:\n\n\t/reload -add-modules com.greetings -restore
+help.reload =jshell\u30C4\u30FC\u30EB\u30FB\u30B3\u30FC\u30C9\u304A\u3088\u3073\u5B9F\u884C\u72B6\u614B\u3092\u30EA\u30BB\u30C3\u30C8\u3057\u3001\u5404\u6709\u52B9\u30B9\u30CB\u30DA\u30C3\u30C8\n\u304A\u3088\u3073\u4EFB\u610F\u306E/drop\u30B3\u30DE\u30F3\u30C9\u3092\u5165\u529B\u3055\u308C\u305F\u9806\u756A\u3067\u30EA\u30D7\u30EC\u30A4\u3057\u307E\u3059\u3002\n\n/reload\n\t\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u3001jshell\u304C\u5165\u529B\u3055\u308C\u305F\u3001\u3042\u308B\u3044\u306F/reset\u307E\u305F\u306F\n\t/reload\u30B3\u30DE\u30F3\u30C9\u304C\u5B9F\u884C\u3055\u308C\u305F(\u6700\u65B0\u306E\u3044\u305A\u308C\u304B)\u4EE5\u964D\u306E\u6709\u52B9\u306A\u5C65\u6B74\u304C\n\t\u30EA\u30D7\u30EC\u30A4\u3055\u308C\u307E\u3059\u3002\n\n/reload -restore\n\t\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u3001jshell\u304C\u5165\u529B\u3055\u308C\u305F\u3001\u3042\u308B\u3044\u306F/reset\u3001/reload\u307E\u305F\u306F/env\u30B3\u30DE\u30F3\u30C9\n\t\u304C\u5B9F\u884C\u3055\u308C\u305F\u4EE5\u524D\u3068\u6700\u65B0\u306E\u6642\u9593\u306E\u9593\u306E\u6709\u52B9\u306A\u5C65\u6B74\u304C\u30EA\u30D7\u30EC\u30A4\u3055\u308C\u307E\u3059\u3002\n\t\u305D\u306E\u305F\u3081\u3001\u3053\u308C\u306F\u4EE5\u524D\u306Ejshell\u30C4\u30FC\u30EB\u30FB\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u5FA9\u5143\u306B\n\t\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n/reload [-restore] -quiet\n\t'-quiet'\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u30EA\u30D7\u30EC\u30A4\u304C\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002\u30A8\u30E9\u30FC\u306F\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\n\u4E0A\u306E\u5404\u3005\u306F\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u53D7\u3051\u5165\u308C\u307E\u3059\u3002\u6B21\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044:\n\n\t/help context\n\n\u4F8B:\n\n\t/reload -add-modules com.greetings -restore
help.env.summary = \u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u8868\u793A\u307E\u305F\u306F\u5909\u66F4\u3057\u307E\u3059
help.env.args = [-class-path <path>] [-module-path <path>] [-add-modules <modules>] ...
@@ -233,15 +249,15 @@
help.quest.args = [<command>|<subject>]
help.quest =jshell\u306B\u95A2\u3059\u308B\u60C5\u5831\u3092\u8868\u793A\u3057\u307E\u3059(/help\u306E\u7701\u7565\u5F62)\u3002\n/?\n\t\u30B3\u30DE\u30F3\u30C9\u304A\u3088\u3073\u30D8\u30EB\u30D7\u306E\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n/? <command>\n\t\u6307\u5B9A\u3057\u305F\u30B3\u30DE\u30F3\u30C9\u306B\u95A2\u3059\u308B\u60C5\u5831\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u30B9\u30E9\u30C3\u30B7\u30E5\u3092\u542B\u3081\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\t\u5FC5\u8981\u306A\u306E\u306F\u30B3\u30DE\u30F3\u30C9\u306E\u6700\u521D\u306E\u6570\u6587\u5B57\u306E\u307F\u3067\u3059 -- \u8907\u6570\u4E00\u81F4\u3059\u308B\u5834\u5408\u306F\n\t\u305D\u308C\u305E\u308C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u4F8B: /help /li\n/? <subject>\n\t\u6307\u5B9A\u3057\u305F\u30D8\u30EB\u30D7\u306E\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u95A2\u3059\u308B\u60C5\u5831\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u4F8B: /? intro
-help.bang.summary = \u6700\u5F8C\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u5B9F\u884C\u3057\u307E\u3059
+help.bang.summary = \u6700\u5F8C\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u5B9F\u884C\u3057\u307E\u3059 -- /help rerun\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044
help.bang.args =
help.bang =\u6700\u5F8C\u306B\u5165\u529B\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002
-help.id.summary = ID\u3067\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u5B9F\u884C\u3057\u307E\u3059
+help.id.summary = ID\u307E\u305F\u306FID\u7BC4\u56F2\u3067\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u5B9F\u884C\u3057\u307E\u3059 -- /help rerun\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044
help.id.args =
-help.id =ID\u3067\u6307\u5B9A\u3055\u308C\u305F\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002
+help.id =/<id> <id> <id>\n\n/<id>-<id>\n\nID\u307E\u305F\u306FID\u7BC4\u56F2\u3067\u6307\u5B9A\u3055\u308C\u305F\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002\nID\u7BC4\u56F2\u306F\u3001\u30CF\u30A4\u30D5\u30F3\u3067\u533A\u5207\u3089\u308C\u305F2\u3064\u306EID\u3067\u8868\u73FE\u3055\u308C\u307E\u3059(\u4F8B: 3-17)\n\u8D77\u52D5\u30B9\u30CB\u30DA\u30C3\u30C8\u304A\u3088\u3073\u30A8\u30E9\u30FC\u30FB\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059(\u4F8B: s3-s9\u307E\u305F\u306Fe1-e4)\n\u4EFB\u610F\u306E\u6570\u306EID\u307E\u305F\u306FID\u7BC4\u56F2\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059(\u4F8B: /3-7 s4 14-16 e2)
-help.previous.summary = n\u56DE\u524D\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u5B9F\u884C\u3057\u307E\u3059
+help.previous.summary = n\u56DE\u524D\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u5B9F\u884C\u3057\u307E\u3059 -- /help rerun\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044
help.previous.args =
help.previous =n\u56DE\u524D\u306B\u5165\u529B\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u8A55\u4FA1\u3057\u307E\u3059\u3002
@@ -249,33 +265,48 @@
help.intro =jshell\u30C4\u30FC\u30EB\u3092\u4F7F\u7528\u3059\u308B\u3068\u3001Java\u30B3\u30FC\u30C9\u3092\u5B9F\u884C\u3057\u3066\u5373\u5EA7\u306B\u7D50\u679C\u3092\u53D6\u5F97\u3067\u304D\u307E\u3059\u3002\nint x = 8\u306A\u3069\u306EJava\u5B9A\u7FA9(\u5909\u6570\u3001\u30E1\u30BD\u30C3\u30C9\u3001\u30AF\u30E9\u30B9\u306A\u3069)\u3001\nx + x\u306A\u3069\u306EJava\u5F0F\u307E\u305F\u306FJava\u6587\u3092\u5165\u529B\u3057\u305F\u308A\u3001\n\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u305F\u308A\u3067\u304D\u307E\u3059\u3002\n\u3053\u308C\u3089\u306EJava\u30B3\u30FC\u30C9\u306E\u5C0F\u3055\u306A\u30C1\u30E3\u30F3\u30AF\u3092\u300C\u30B9\u30CB\u30DA\u30C3\u30C8\u300D\u3068\u547C\u3073\u307E\u3059\u3002\n\n\u307E\u305F\u3001/list\u306A\u3069\u306E\u5B9F\u884C\u3059\u308B\u5185\u5BB9\u3092\u7406\u89E3\u304A\u3088\u3073\u5236\u5FA1\u3067\u304D\u308Bjshell\u30B3\u30DE\u30F3\u30C9\u3082\n\u3042\u308A\u307E\u3059\n\n\u30B3\u30DE\u30F3\u30C9\u306E\u30EA\u30B9\u30C8\u3092\u53C2\u7167\u3059\u308B\u5834\u5408: /help
help.shortcuts.summary = \u30B9\u30CB\u30DA\u30C3\u30C8\u304A\u3088\u3073\u30B3\u30DE\u30F3\u30C9\u306E\u88DC\u5B8C\u3001\u60C5\u5831\u30A2\u30AF\u30BB\u30B9\u3001\u304A\u3088\u3073\u81EA\u52D5\u30B3\u30FC\u30C9\u751F\u6210\n\u306E\u30AD\u30FC\u30B9\u30C8\u30ED\u30FC\u30AF\u306E\u8AAC\u660E
-help.shortcuts =\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\n<tab>\n\t\tJava\u8B58\u5225\u5B50\u3001jshell\u30B3\u30DE\u30F3\u30C9\u3001\u5834\u5408\u306B\u3088\u3063\u3066\u306F\n\t\tjshell\u30B3\u30DE\u30F3\u30C9\u5F15\u6570\u306E\u6700\u521D\u306E\u6570\u6587\u5B57\u3092\u5165\u529B\u3057\u305F\u5F8C\u306B\u3001\n\t\t<tab>\u30AD\u30FC\u3092\u62BC\u3059\u3068\u3001\u5165\u529B\u304C\u88DC\u5B8C\u3055\u308C\u307E\u3059\u3002\n\t\t\u88DC\u5B8C\u7D50\u679C\u304C\u8907\u6570\u3042\u308B\u5834\u5408\u3001\u4F7F\u7528\u53EF\u80FD\u306A\u88DC\u5B8C\u7D50\u679C\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\t\t\u4F7F\u7528\u53EF\u80FD\u306A\u5834\u5408\u3001\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\nShift-<tab> v\n\t\t\u5B8C\u5168\u306A\u5F0F\u306E\u5F8C\u306B\u3001<shift>\u3092\u62BC\u3057\u306A\u304C\u3089<tab>\u3092\u62BC\u3057\u3001\u6B21\u306B\u96E2\u3057\u3066\n\t\t[v]\u3092\u62BC\u3059\u3068\u3001\u30BF\u30A4\u30D7\u304C\u5F0F\u306E\u30BF\u30A4\u30D7\u306B\u57FA\u3065\u304F\u5909\u6570\u306E\u5BA3\u8A00\u306B\n\t\t\u5F0F\u304C\u5909\u63DB\u3055\u308C\u307E\u3059\u3002\n\nShift-<tab> i\n\t\t\u89E3\u6C7A\u3067\u304D\u306A\u3044\u8B58\u5225\u5B50\u306E\u5F8C\u306B\u3001<shift>\u3092\u62BC\u3057\u306A\u304C\u3089<tab>\u3092\u62BC\u3057\u3001\u6B21\u306B\u96E2\u3057\u3066\n\t\t[i]\u3092\u62BC\u3059\u3068\u3001jshell\u306B\u3088\u3063\u3066\u3001\u4F7F\u7528\u53EF\u80FD\u306A\u30A4\u30F3\u30DD\u30FC\u30C8\u304C\u63D0\u793A\u3055\u308C\u3001\n\t\t\u3053\u308C\u306B\u3088\u3063\u3066\u3001\u6307\u5B9A\u3055\u308C\u305F\u30AF\u30E9\u30B9\u30D1\u30B9\u306E\u5185\u5BB9\u306B\u57FA\u3065\u3044\u3066\u8B58\u5225\u5B50\u304C\u89E3\u6C7A\u3055\u308C\u307E\u3059\u3002
+help.shortcuts =\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\n<tab>\n\t\tJava\u8B58\u5225\u5B50\u3001jshell\u30B3\u30DE\u30F3\u30C9\u3001\u5834\u5408\u306B\u3088\u3063\u3066\u306F\n\t\tjshell\u30B3\u30DE\u30F3\u30C9\u5F15\u6570\u306E\u6700\u521D\u306E\u6570\u6587\u5B57\u3092\u5165\u529B\u3057\u305F\u5F8C\u306B\u3001\n\t\t<tab>\u30AD\u30FC\u3092\u62BC\u3059\u3068\u3001\u5165\u529B\u304C\u88DC\u5B8C\u3055\u308C\u307E\u3059\u3002\n\t\t\u88DC\u5B8C\u7D50\u679C\u304C\u8907\u6570\u3042\u308B\u5834\u5408\u3001\u4F7F\u7528\u53EF\u80FD\u306A\u88DC\u5B8C\u7D50\u679C\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\t\t\u4F7F\u7528\u53EF\u80FD\u306A\u5834\u5408\u3001\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\nShift-<tab> v\n\t\t\u5B8C\u5168\u306A\u5F0F\u306E\u5F8C\u306B\u3001<shift>\u3092\u62BC\u3057\u306A\u304C\u3089<tab>\u3092\u62BC\u3057\u3001\u6B21\u306B\u96E2\u3057\u3066\n\t\t[v]\u3092\u62BC\u3059\u3068\u3001\u30BF\u30A4\u30D7\u304C\u5F0F\u306E\u30BF\u30A4\u30D7\u306B\u57FA\u3065\u304F\u5909\u6570\u306E\u5BA3\u8A00\u306B\n\t\t\u5F0F\u304C\u5909\u63DB\u3055\u308C\u307E\u3059\u3002\n\nShift-<tab> m\n\t\t\u5B8C\u5168\u306A\u5F0F\u307E\u305F\u306F\u6587\u306E\u5F8C\u306B\u3001<shift>\u3092\u62BC\u3057\u306A\u304C\u3089<tab>\u3092\u62BC\u3057\u3001\n\t\t\u6B21\u306B\u96E2\u3057\u3066[m]\u3092\u62BC\u3059\u3068\u3001\u5F0F\u307E\u305F\u306F\u6587\u304C\u30E1\u30BD\u30C3\u30C9\u5BA3\u8A00\u306B\n\t\t\u5909\u63DB\u3055\u308C\u307E\u3059\u3002\u5F0F\u306E\u5834\u5408\u3001\u623B\u308A\u578B\u306F\u3001\n\t\t\u5F0F\u306E\u30BF\u30A4\u30D7\u306B\u57FA\u3065\u304D\u307E\u3059\u3002\n\nShift-<tab> i\n\t\t\u89E3\u6C7A\u3067\u304D\u306A\u3044\u8B58\u5225\u5B50\u306E\u5F8C\u306B\u3001<shift>\u3092\u62BC\u3057\u306A\u304C\u3089<tab>\u3092\u62BC\u3057\u3001\u6B21\u306B\u96E2\u3057\u3066\n\t\t[i]\u3092\u62BC\u3059\u3068\u3001jshell\u306B\u3088\u3063\u3066\u3001\u4F7F\u7528\u53EF\u80FD\u306A\u30A4\u30F3\u30DD\u30FC\u30C8\u304C\u63D0\u793A\u3055\u308C\u3001\n\t\t\u3053\u308C\u306B\u3088\u3063\u3066\u3001\u6307\u5B9A\u3055\u308C\u305F\u30AF\u30E9\u30B9\u30D1\u30B9\u306E\u5185\u5BB9\u306B\u57FA\u3065\u3044\u3066\u8B58\u5225\u5B50\u304C\u89E3\u6C7A\u3055\u308C\u307E\u3059\u3002
-help.context.summary = /env /reload\u304A\u3088\u3073/reset\u306E\u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3
+help.context.summary = /env /reload\u304A\u3088\u3073/reset\u306E\u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u8AAC\u660E
help.context =\u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u69CB\u6210\u3057\u307E\u3059\u3002\u3053\u308C\u3089\u306F\u3001jshell\u8D77\u52D5\u6642\u306B\n\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u3001\u307E\u305F\u306F\u30B3\u30DE\u30F3\u30C9/env\u3001/reload\u307E\u305F\u306F/reset\u3067\u518D\u8D77\u52D5\u3059\u308B\n\u3053\u3068\u306B\u3088\u308A\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\n\n\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\t--class-path <class search path of directories and zip/jar files>\n\t\t\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001\n\t\tJAR\u30A2\u30FC\u30AB\u30A4\u30D6\u3001ZIP\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u30EA\u30B9\u30C8\u3002\n\t\t\u30EA\u30B9\u30C8\u306F\u30D1\u30B9\u533A\u5207\u308A\u6587\u5B57\u3067\u533A\u5207\u308A\u307E\u3059\n\t\t(UNIX/Linux/Mac\u3067\u306F\u300C:\u300D\u3001Windows\u3067\u306F\u300C;\u300D)\u3002\n\t--module-path <module path>...\n\t\t\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30EA\u30B9\u30C8\u3002\u5404\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\n\t\t\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u3059\u3002\n\t\t\u30EA\u30B9\u30C8\u306F\u30D1\u30B9\u533A\u5207\u308A\u6587\u5B57\u3067\u533A\u5207\u308A\u307E\u3059\n\t\t(UNIX/Linux/Mac\u3067\u306F\u300C:\u300D\u3001Windows\u3067\u306F\u300C;\u300D)\u3002\n\t--add-modules <modulename>[,<modulename>...]\n\t\t\u521D\u671F\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u52A0\u3048\u3066\u89E3\u6C7A\u3059\u308B\u30EB\u30FC\u30C8\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3002\n\t\t<modulename>\u306B\u306F\u3001ALL-DEFAULT\u3001ALL-SYSTEM\u3001\n\t\tALL-MODULE-PATH\u3082\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\t--add-exports <module>/<package>=<target-module>(,<target-module>)*\n\t\t\u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u306B\u95A2\u4FC2\u306A\u304F\u3001<module>\u3092\u66F4\u65B0\u3057\u3066\n\t\t<package>\u3092<target-module>\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002\n\t\t<target-module>\u3092ALL-UNNAMED\u306B\u8A2D\u5B9A\u3059\u308B\u3068\u3001\u3059\u3079\u3066\u306E\u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\n\t\t\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002jshell\u3067\u306F\u3001<target-module>\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408(\u300C=\u300D\u306A\u3057)\u3001\n\t\tALL-UNNAMED\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\n\n\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u306F\u3001\u3053\u308C\u3089\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F2\u3064\u306E\u30C0\u30C3\u30B7\u30E5\u304C\u5FC5\u8981\u3067\u3059\u3002\u4F8B: --module-path\njshell\u30B3\u30DE\u30F3\u30C9\u3067\u306F\u3001\u30C0\u30C3\u30B7\u30E5\u306F1\u3064\u3067\u30822\u3064\u3067\u3082\u304B\u307E\u3044\u307E\u305B\u3093\u3002\u4F8B: -module-path\n
+help.rerun.summary = \u524D\u306B\u5165\u529B\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u8A55\u4FA1\u3059\u308B\u65B9\u6CD5\u306E\u8AAC\u660E
+help.rerun =\u524D\u306B\u5165\u529B\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u8A55\u4FA1\u3059\u308B\u65B9\u6CD5\u306F4\u3064\u3042\u308A\u307E\u3059\u3002\n\u6700\u5F8C\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u306F\u3001/!\u3092\u4F7F\u7528\u3057\u3066\u518D\u8A55\u4FA1\u3067\u304D\u307E\u3059\nn\u56DE\u524D\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u306F\u3001\u30B9\u30E9\u30C3\u30B7\u30E5\u3068\u30DE\u30A4\u30CA\u30B9\u304A\u3088\u3073n\u306E\u6570\u5B57\u3067\u518D\u8A55\u4FA1\u3067\u304D\u307E\u3059(\u4F8B: /-4)\n\u6B21\u306B\u4F8B\u3092\u793A\u3057\u307E\u3059\u3002\n\n\tjshell> 2 + 2\n\t$1 ==> 4\n\n\tjshell> /!\n\t2 + 2\n\t$2 ==> 4\n\n\tjshell> int z\n\tz ==> 0\n\n\tjshell> /-1\n\tint z;\n\tz ==> 0\n\n\tjshell> /-4\n\t2 + 2\n\t$5 ==> 4\n\n\u518D\u8A55\u4FA1\u3059\u308B\u30B9\u30CB\u30DA\u30C3\u30C8\u306F\u3001\u30B9\u30CB\u30DA\u30C3\u30C8ID\u307E\u305F\u306FID\u7BC4\u56F2\u3067\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\nID\u7BC4\u56F2\u306F\u3001\u30CF\u30A4\u30D5\u30F3\u3067\u533A\u5207\u3089\u308C\u305F2\u3064\u306EID\u3067\u8868\u73FE\u3055\u308C\u307E\u3059(\u4F8B: 3-17)\n\u8D77\u52D5\u30B9\u30CB\u30DA\u30C3\u30C8\u304A\u3088\u3073\u30A8\u30E9\u30FC\u30FB\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059(\u4F8B: s3-s9\u307E\u305F\u306Fe1-e4)\n\u4EFB\u610F\u306E\u6570\u306EID\u307E\u305F\u306FID\u7BC4\u56F2\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059(\u4F8B: /3-7 s4 14-16 e2)\n\n\u307E\u305F\u3001[Ctrl]-[R]\u3092\u62BC\u3057\u3066\u304B\u3089\u691C\u7D22\u6587\u5B57\u5217\u3092\u5165\u529B\u3059\u308B\u3068\u3001\u5C65\u6B74\u3092\u3055\u304B\u306E\u307C\u3063\u3066\u691C\u7D22\u3067\u304D\u307E\u3059\u3002
+
help.set._retain = '-retain'\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u3088\u308A\u3001\u5C06\u6765\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u3067\u4F7F\u7528\u3059\u308B\u305F\u3081\u306B\u8A2D\u5B9A\u3092\u4FDD\u5B58\u3057\u307E\u3059\u3002\n-retain\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001/set\u306E\u6B21\u306E\u5F62\u5F0F\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059:\n\n\t/set editor -retain\n\t/set start -retain\n\t/set feedback -retain\n\t/set mode -retain\n\n\u8A73\u7D30\u306F\u3001\u3053\u308C\u3089\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044 -- \u4F8B: /help /set editor
+help.set.format.summary = \u30B9\u30CB\u30DA\u30C3\u30C8\u30FB\u30A4\u30D9\u30F3\u30C8\u3092\u30EC\u30DD\u30FC\u30C8\u3059\u308B\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002
+
help.set.format = \u30B9\u30CB\u30DA\u30C3\u30C8\u30FB\u30A4\u30D9\u30F3\u30C8\u3092\u30EC\u30DD\u30FC\u30C8\u3059\u308B\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u8A2D\u5B9A\u3057\u307E\u3059:\n\n\t/set format <mode> <field> "<format>" <selector>...\n\n\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set format [<mode> [<field>]]\n\n<mode>\u306F\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059 -- '/help /set mode'\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n<field>\u306F\u5B9A\u7FA9\u3059\u308B\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u56FA\u6709\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306E\u540D\u524D\u3067\u3059\u3002\n<format>\u306F\u5F15\u7528\u7B26\u306B\u56F2\u307E\u308C\u305F\u6587\u5B57\u5217\u3067\u3001\u6B21\u306E\u5834\u5408\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u5024\u3067\u3059: \n\u30BB\u30EC\u30AF\u30BF\u304C\u4E00\u81F4\u3059\u308B(\u307E\u305F\u306F\u30BB\u30EC\u30AF\u30BF\u304C\u306A\u3044)\u3002\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304C\u4F7F\u7528\u3055\u308C\u308B\u5834\u5408\u3001\n\u4E2D\u30AB\u30C3\u30B3\u3067\u56F2\u307E\u308C\u3066\u3044\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u304C\u305D\u306E\u3068\u304D\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u5024\u3067\u7F6E\u63DB\u3055\u308C\u307E\u3059\n\u3053\u308C\u3089\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u3001\u3053\u306E\u30B3\u30DE\u30F3\u30C9\u3067\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3082\u3001\n\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306B\u56FA\u6709\u306E\u3053\u308C\u3089\u306E\u4E8B\u524D\u5B9A\u7FA9\u6E08\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5834\u5408\u3082\u3042\u308A\u307E\u3059:\n\t{name} == \u540D\u524D\u3001\u4F8B: \u5909\u6570\u540D\u3001 ...\n\t{type} == \u30BF\u30A4\u30D7\u540D\u3002\u5909\u6570\u307E\u305F\u306F\u5F0F\u306E\u30BF\u30A4\u30D7\u3001\n\t\t\t\u30E1\u30BD\u30C3\u30C9\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7\n\t{value} == \u5F0F\u307E\u305F\u306F\u5909\u6570\u306E\u521D\u671F\u5316\u306E\u7D50\u679C\u5024\n\t{unresolved} == \u672A\u89E3\u6C7A\u306E\u53C2\u7167\u306E\u30EA\u30B9\u30C8\n\t{errors} == \u30EA\u30AB\u30D0\u30EA\u53EF\u80FD\u306A\u30A8\u30E9\u30FC\u306E\u30EA\u30B9\u30C8(\u51E6\u7406\u6642-\n\t\t\t"display"\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u307F)\n\t{err} == \u672A\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u30FB\u30A8\u30E9\u30FC\u884C(\u51E6\u7406\u6642-\n\t\t\t"errorline"\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u307F)\n\u6B21\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306F\u30C4\u30FC\u30EB\u306B\u3088\u3063\u3066\u30A2\u30AF\u30BB\u30B9\u3055\u308C\u3001\u8868\u793A\u3055\u308C\u308B\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u6C7A\u5B9A\u3057\u307E\u3059:\n\t{display} == \u30B9\u30CB\u30DA\u30C3\u30C8\u30FB\u30A4\u30D9\u30F3\u30C8\u306B\u5BFE\u3057\u3066\u8868\u793A\u3055\u308C\u308B\u30E1\u30C3\u30BB\u30FC\u30B8\n\t{errorline} == \u300Cerrors\u300D\u30D5\u30A3\u30FC\u30EB\u30C9\u5185\u306E\u30A8\u30E9\u30FC\u884C\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\n\t{pre} == \u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u63A5\u982D\u8F9E(\u30B3\u30DE\u30F3\u30C9\u30FB\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u958B\u59CB\u3059\u308B)\n\t{post} == \u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u63A5\u5C3E\u8F9E(\u30B3\u30DE\u30F3\u30C9\u30FB\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u7D42\u4E86\u3059\u308B)\n\t{errorpre} == \u30A8\u30E9\u30FC\u63A5\u982D\u8F9E(\u30A8\u30E9\u30FC\u30FB\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u958B\u59CB\u3059\u308B)\n\t{errorpost} == \
\u30A8\u30E9\u30FC\u63A5\u5C3E\u8F9E(\u30A8\u30E9\u30FC\u30FB\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u7D42\u4E86\u3059\u308B)\n\u3053\u308C\u3089\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u306F\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u8A2D\u5B9A\u304C\u3042\u308A\u307E\u3059(\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059)\u3002\n<selector>\u306F\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304C\u9069\u7528\u3055\u308C\u308B\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3067\u3059\u3002\n\u30BB\u30EC\u30AF\u30BF\u69CB\u9020\u306F\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u30EA\u30B9\u30C8\u306E\u30CF\u30A4\u30D5\u30F3\u533A\u5207\u308A\u30EA\u30B9\u30C8\u3067\u3059\u3002\n\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u30EA\u30B9\u30C8\u306F\u30011\u3064\u306E\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306E\u5024\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u30EA\u30B9\u30C8\u3067\u3059\u3002\n\u30BB\u30EC\u30AF\u30BF\u306F\u5404\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u30EA\u30B9\u30C8\u304C\u4E00\u81F4\u3059\u308C\u3070\u4E00\u81F4\u3068\u306A\u308A\u307E\u3059\u3002\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u30EA\u30B9\u30C8\u306F\n\u3044\u305A\u308C\u304B\u306E\u5024\u304C\u4E00\u81F4\u3059\u308C\u3070\u4E00\u81F4\u3068\u306A\u308A\u307E\u3059\u3002\n\n\u30B1\u30FC\u30B9\u30FB\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306F\u3001\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u7A2E\u985E\u3092\u793A\u3057\u307E\u3059\u3002\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\timport -- \u30A4\u30F3\u30DD\u30FC\u30C8\u5BA3\u8A00\n\tclass -- \u30AF\u30E9\u30B9\u5BA3\u8A00\n\tinterface -- \u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u5BA3\u8A00\n\tenum -- \u5217\u6319\u578B\u306E\u5BA3\u8A00\n\tannotation -- \u6CE8\u91C8\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u5BA3\u8A00\n\tmethod -- \u30E1\u30BD\u30C3\u30C9\u5BA3\u8A00 -- \u6CE8\u610F: {type}==parameter-types\n\tvardecl -- \u521D\u671F\u5316\u3057\u306A\u3044\u5909\u6570\u5BA3\u8A00\n\tvarinit -- \u521D\u671F\u5316\u3059\u308B\u5909\u6570\u5BA3\u8A00\n\texpression -- \u5F0F -- \u6CE8\u610F: {name}==scratch-variable-name\n\tvarvalue -- \u5909\u6570\u5024\u5F0F\n\tassignment -- \u5909\u6570\u3092\u5272\u308A\u5F53\u3066\u307E\u3059\n\tstatement -- \u6587\n\u30A2\u30AF\u30B7\u30E7\u30F3\u30FB\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306F\u3001\u30B9\u30CB\u30DA\u30C3\u30C8\u306B\u767A\u751F\u3057\u305F\u5185\u5BB9\u3092\u793A\u3057\u307E\u3059\u3002\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\tadded -- \u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F\n\tmodified -- \u65E2\u5B58\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u5909\u66F4\u3055\u308C\u307E\u3057\u305F\n\treplaced -- \u65E2\u5B58\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u65B0\u898F\u30B9\u30CB\u30DA\u30C3\u30C8\u3067\u7F6E\u63DB\u3055\u308C\u307E\u3057\u305F\n\toverwrote -- \u65E2\u5B58\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u307E\u3057\u305F\n\tdropped -- \u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u524A\u9664\u3055\u308C\u307E\u3057\u305F\n\tused -- \u4F7F\u7528\u3067\u304D\u306A\u3044\u3068\u304D\u306B\u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u4F7F\u7528\u3055\u308C\u307E\u3057\u305F\n\u767A\u751F\u6642\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306F\u3001\u3053\u308C\u304C\u76F4\u63A5\u307E\u305F\u306F\u9593\u63A5\u30A2\u30AF\u30B7\u30E7\u30F3\u3067\u3042\u308B\u304B\u3092\u793A\u3057\u307E\u3059\u3002\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\tprimary -- \u5165\u529B\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8\n\tupdate -- \u4F9D\u5B58\u30B9\u30CB\u30DA\u30C3\u30C8\u3078\u306E\u66F4\u65B0\n\u89E3\u6C7A\u72B6\u614B\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306F\u3001\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u89E3\u6C7A/\u5B9A\u7FA9\u306E\u72B6\u614B\u3092\u793A\u3057\u307E\u3059\u3002\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\tok -- \
-\u6B63\u3057\u304F\u89E3\u6C7A\u3055\u308C\u307E\u3057\u305F\n\tdefined -- \u5FA9\u5143\u53EF\u80FD\u3067\u672A\u89E3\u6C7A\u306E\u53C2\u7167\u306B\u3082\u304B\u304B\u308F\u3089\u305A\u5B9A\u7FA9\u3055\u308C\u307E\u3057\u305F\n\tnotdefined -- \u5FA9\u5143\u53EF\u80FD\u3067\u672A\u89E3\u6C7A\u306E\u53C2\u7167\u306E\u305F\u3081\u5B9A\u7FA9\u3055\u308C\u307E\u305B\u3093\n\u672A\u89E3\u6C7A\u6570\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306F\u3001\u672A\u89E3\u6C7A\u306E\u53C2\u7167\u306E\u6570\u3092\u793A\u3057\u307E\u3059\u3002\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\tunresolved0 -- \u672A\u89E3\u6C7A\u306E\u540D\u524D\u306F\u3042\u308A\u307E\u305B\u3093\n\tunresolved1 -- 1\u3064\u306E\u540D\u524D\u304C\u89E3\u6C7A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n\tunresolved2 -- 2\u3064\u4EE5\u4E0A\u306E\u540D\u524D\u304C\u89E3\u6C7A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n\u30A8\u30E9\u30FC\u6570\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306F\u3001\u30A8\u30E9\u30FC\u306E\u6570\u3092\u793A\u3057\u307E\u3059\u3002\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\terror0 -- \u30A8\u30E9\u30FC\u306A\u3057\n\terror1 -- 1\u3064\u306E\u30A8\u30E9\u30FC\n\terror2 -- 2\u3064\u4EE5\u4E0A\u306E\u30A8\u30E9\u30FC\n\n\u4F8B:\n\t/set format myformat action 'Created' added-primary\n\t/set format myformat action 'Update replaced' replaced-update\n\t/set format myformat display '{pre}{action} class {name}{post}' class-ok\n\t/set format myformat display '{pre}{action} \u5909\u6570 {name}\u3001null\u306B\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u307E\u3057\u305F{post}' replaced-vardecl,varinit-ok-update\n\n\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u5BFE\u3059\u308B\u5F8C\u7D9A\u306E\u30BB\u30EC\u30AF\u30BF\u306B\u3088\u308A\u3001\u4EE5\u524D\u306B\u4F7F\u7528\u3055\u308C\u305F\u30BB\u30EC\u30AF\u30C8\u306E\u4E00\u90E8\u307E\u305F\u306F\u3059\u3079\u3066\u304C\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059 -- \u6700\u5F8C\u306E\u30BB\u30EC\u30AF\u30BF\u304C\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\n\n<format>\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u73FE\u5728\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n<mode>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u306E\u30E2\u30FC\u30C9\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u8A2D\u5B9A\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n<mode>\u3068<field>\u306E\u4E21\u65B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\n\u305D\u306E\u30E2\u30FC\u30C9\u304A\u3088\u3073\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u8A2D\u5B9A\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u4F8B:\n\t/set format myformat\n\u30E2\u30FC\u30C9myformat\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\n
+\u6B63\u3057\u304F\u89E3\u6C7A\u3055\u308C\u307E\u3057\u305F\n\tdefined -- \u5FA9\u5143\u53EF\u80FD\u3067\u672A\u89E3\u6C7A\u306E\u53C2\u7167\u306B\u3082\u304B\u304B\u308F\u3089\u305A\u5B9A\u7FA9\u3055\u308C\u307E\u3057\u305F\n\tnotdefined -- \u5FA9\u5143\u53EF\u80FD\u3067\u672A\u89E3\u6C7A\u306E\u53C2\u7167\u306E\u305F\u3081\u5B9A\u7FA9\u3055\u308C\u307E\u305B\u3093\n\u672A\u89E3\u6C7A\u6570\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306F\u3001\u672A\u89E3\u6C7A\u306E\u53C2\u7167\u306E\u6570\u3092\u793A\u3057\u307E\u3059\u3002\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\tunresolved0 -- \u672A\u89E3\u6C7A\u306E\u540D\u524D\u306F\u3042\u308A\u307E\u305B\u3093\n\tunresolved1 -- 1\u3064\u306E\u540D\u524D\u304C\u89E3\u6C7A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n\tunresolved2 -- 2\u3064\u4EE5\u4E0A\u306E\u540D\u524D\u304C\u89E3\u6C7A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n\u30A8\u30E9\u30FC\u6570\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306F\u3001\u30A8\u30E9\u30FC\u306E\u6570\u3092\u793A\u3057\u307E\u3059\u3002\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\terror0 -- \u30A8\u30E9\u30FC\u306A\u3057\n\terror1 -- 1\u3064\u306E\u30A8\u30E9\u30FC\n\terror2 -- 2\u3064\u4EE5\u4E0A\u306E\u30A8\u30E9\u30FC\n\n\u4F8B:\n\t/set format mymode action '\u6B21\u3092\u4F5C\u6210\u3057\u307E\u3057\u305F:' added-primary\n\t/set format mymode action '\u6B21\u3092\u66F4\u65B0/\u7F6E\u63DB\u3057\u307E\u3057\u305F:' replaced-update\n\t/set format mymode display '{pre}{action} \u30AF\u30E9\u30B9 {name}{post}' class-ok\n\t/set format mymode display '{pre}{action} \u5909\u6570 {name}\u3001null\u306B\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u307E\u3057\u305F{post}' replaced-vardecl,varinit-ok-update\n\n\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u5BFE\u3059\u308B\u5F8C\u7D9A\u306E\u30BB\u30EC\u30AF\u30BF\u306B\u3088\u308A\u3001\u4EE5\u524D\u306B\u4F7F\u7528\u3055\u308C\u305F\u30BB\u30EC\u30AF\u30C8\u306E\u4E00\u90E8\u307E\u305F\u306F\u3059\u3079\u3066\u304C\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059 -- \u6700\u5F8C\u306E\u30BB\u30EC\u30AF\u30BF\u304C\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\n\n<format>\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u73FE\u5728\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n<mode>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u306E\u30E2\u30FC\u30C9\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u8A2D\u5B9A\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n<mode>\u3068<field>\u306E\u4E21\u65B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\n\u305D\u306E\u30E2\u30FC\u30C9\u304A\u3088\u3073\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u8A2D\u5B9A\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u4F8B:\n\t/set format mymode\n\u30E2\u30FC\u30C9mymode\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\n
+
+help.set.truncation.summary = \u8868\u793A\u3055\u308C\u308B\u5024\u306E\u6700\u5927\u9577\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002
-help.set.truncation = \u8868\u793A\u3055\u308C\u308B\u5024\u306E\u6700\u5927\u9577\u3092\u8A2D\u5B9A\u3057\u307E\u3059:\n\n\t/set truncation <mode> <length> <selector>...\n\n\u73FE\u5728\u306E\u5207\u6368\u3066\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set truncation [<mode>]\n\n<mode>\u306F\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059 -- '/help /set mode'\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n<length>\u306F\u6700\u5927\u9577\u3092\u8868\u3059\u7B26\u53F7\u306A\u3057\u6574\u6570\u3067\u3059\u3002\n<selector>\u306F\u3001\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306B\u3088\u3063\u3066\u5207\u6368\u3066\u9577\u306E\u5024\u3092\u5FAE\u8ABF\u6574\u3059\u308B\u5834\u5408\u306B\u306E\u307F\n\u5FC5\u8981\u3067\u3059\u3002<selector>\u306F\u3001\u5207\u6368\u3066\u304C\u9069\u7528\u3055\u308C\u308B\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3067\u3059\u3002\n\u30BB\u30EC\u30AF\u30BF\u69CB\u9020\u306F\u3001\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u30EA\u30B9\u30C8\u306E\u30CF\u30A4\u30D5\u30F3\u533A\u5207\u308A\u306E\u30EA\u30B9\u30C8\u3067\u3059\u3002\n\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u30EA\u30B9\u30C8\u306F\u30011\u3064\u306E\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306E\u5024\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u30EA\u30B9\u30C8\u3067\u3059\u3002\n\u30BB\u30EC\u30AF\u30BF\u306F\u5404\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u30EA\u30B9\u30C8\u304C\u4E00\u81F4\u3059\u308C\u3070\u4E00\u81F4\u3068\u306A\u308A\u307E\u3059\u3002\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u30EA\u30B9\u30C8\u306F\n\u3044\u305A\u308C\u304B\u306E\u5024\u304C\u4E00\u81F4\u3059\u308C\u3070\u4E00\u81F4\u3068\u306A\u308A\u307E\u3059\u3002\n\n\u6B21\u306B\u793A\u3059\u306E\u306F\u3001\u5207\u6368\u3066\u306B\u95A2\u9023\u3059\u308B\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u3067\u3059\u3002\n\n\u30B1\u30FC\u30B9\u30FB\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306F\u3001\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u7A2E\u985E\u3092\u793A\u3057\u307E\u3059\u3002\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\tvardecl -- \u521D\u671F\u5316\u3057\u306A\u3044\u5909\u6570\u5BA3\u8A00\n\tvarinit -- \u521D\u671F\u5316\u3059\u308B\u5909\u6570\u5BA3\u8A00\n\texpression -- \u5F0F -- \u6CE8\u610F: {name}==scratch-variable-name\n\tvarvalue -- \u5909\u6570\u5024\u5F0F\n\tassignment -- \u5909\u6570\u3092\u5272\u308A\u5F53\u3066\u307E\u3059\n\t\u30A2\u30AF\u30B7\u30E7\u30F3\u30FB\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306F\u3001\u30B9\u30CB\u30DA\u30C3\u30C8\u306B\u767A\u751F\u3057\u305F\u5185\u5BB9\u3092\u793A\u3057\u307E\u3059\u3002\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\tadded -- \u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F\n\tmodified -- \u65E2\u5B58\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u5909\u66F4\u3055\u308C\u307E\u3057\u305F\n\treplaced -- \u65E2\u5B58\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u65B0\u898F\u30B9\u30CB\u30DA\u30C3\u30C8\u3067\u7F6E\u63DB\u3055\u308C\u307E\u3057\u305F\n\u4F8B:\n\t/set trunc mymode 80\n\t/set truncation mymode 45 expression\n\t/set truncation mymode 0 vardecl-modified,replaced\n\n\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u5BFE\u3059\u308B\u5F8C\u7D9A\u306E\u30BB\u30EC\u30AF\u30BF\u306B\u3088\u308A\u3001\u4EE5\u524D\u306B\u4F7F\u7528\u3055\u308C\u305F\u30BB\u30EC\u30AF\u30BF\u306E\u4E00\u90E8\u307E\u305F\u306F\u3059\u3079\u3066\u304C\u4E0A\u66F8\u304D\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059 -- \u6700\u5F8C\u306E\u30BB\u30EC\u30AF\u30BF\u304C\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\n\n<length>\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u5207\u6368\u3066\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n<mode>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u306E\u30E2\u30FC\u30C9\u306E\u5207\u6368\u3066\u8A2D\u5B9A\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\u4F8B:\n\t/set truncation \
-myformat\n\u30E2\u30FC\u30C9myformat\u306E\u5207\u6368\u3066\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\n
+help.set.truncation = \u8868\u793A\u3055\u308C\u308B\u5024\u306E\u6700\u5927\u9577\u3092\u8A2D\u5B9A\u3057\u307E\u3059:\n\n\t/set truncation <mode> <length> <selector>...\n\n\u73FE\u5728\u306E\u5207\u6368\u3066\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set truncation [<mode>]\n\n<mode>\u306F\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059 -- '/help /set mode'\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n<length>\u306F\u6700\u5927\u9577\u3092\u8868\u3059\u7B26\u53F7\u306A\u3057\u6574\u6570\u3067\u3059\u3002\n<selector>\u306F\u3001\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306B\u3088\u3063\u3066\u5207\u6368\u3066\u9577\u306E\u5024\u3092\u5FAE\u8ABF\u6574\u3059\u308B\u5834\u5408\u306B\u306E\u307F\n\u5FC5\u8981\u3067\u3059\u3002<selector>\u306F\u3001\u5207\u6368\u3066\u304C\u9069\u7528\u3055\u308C\u308B\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3067\u3059\u3002\n\u30BB\u30EC\u30AF\u30BF\u69CB\u9020\u306F\u3001\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u30EA\u30B9\u30C8\u306E\u30CF\u30A4\u30D5\u30F3\u533A\u5207\u308A\u306E\u30EA\u30B9\u30C8\u3067\u3059\u3002\n\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u30EA\u30B9\u30C8\u306F\u30011\u3064\u306E\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306E\u5024\u306E\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u30EA\u30B9\u30C8\u3067\u3059\u3002\n\u30BB\u30EC\u30AF\u30BF\u306F\u5404\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u30EA\u30B9\u30C8\u304C\u4E00\u81F4\u3059\u308C\u3070\u4E00\u81F4\u3068\u306A\u308A\u307E\u3059\u3002\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u30EA\u30B9\u30C8\u306F\n\u3044\u305A\u308C\u304B\u306E\u5024\u304C\u4E00\u81F4\u3059\u308C\u3070\u4E00\u81F4\u3068\u306A\u308A\u307E\u3059\u3002\n\n\u6B21\u306B\u793A\u3059\u306E\u306F\u3001\u5207\u6368\u3066\u306B\u95A2\u9023\u3059\u308B\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u3067\u3059\u3002\n\n\u30B1\u30FC\u30B9\u30FB\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306F\u3001\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u7A2E\u985E\u3092\u793A\u3057\u307E\u3059\u3002\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\tvardecl -- \u521D\u671F\u5316\u3057\u306A\u3044\u5909\u6570\u5BA3\u8A00\n\tvarinit -- \u521D\u671F\u5316\u3059\u308B\u5909\u6570\u5BA3\u8A00\n\texpression -- \u5F0F -- \u6CE8\u610F: {name}==scratch-variable-name\n\tvarvalue -- \u5909\u6570\u5024\u5F0F\n\tassignment -- \u5909\u6570\u3092\u5272\u308A\u5F53\u3066\u307E\u3059\n\u30A2\u30AF\u30B7\u30E7\u30F3\u30FB\u30BB\u30EC\u30AF\u30BF\u7A2E\u985E\u306F\u3001\u30B9\u30CB\u30DA\u30C3\u30C8\u306B\u767A\u751F\u3057\u305F\u5185\u5BB9\u3092\u793A\u3057\u307E\u3059\u3002\u5024\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n\tadded -- \u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F\n\tmodified -- \u65E2\u5B58\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u5909\u66F4\u3055\u308C\u307E\u3057\u305F\n\treplaced -- \u65E2\u5B58\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u304C\u65B0\u898F\u30B9\u30CB\u30DA\u30C3\u30C8\u3067\u7F6E\u63DB\u3055\u308C\u307E\u3057\u305F\n\u4F8B:\n\t/set trunc mymode 80\n\t/set truncation mymode 45 expression\n\t/set truncation mymode 0 vardecl-modified,replaced\n\n\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u5BFE\u3059\u308B\u5F8C\u7D9A\u306E\u30BB\u30EC\u30AF\u30BF\u306B\u3088\u308A\u3001\u4EE5\u524D\u306B\u4F7F\u7528\u3055\u308C\u305F\u30BB\u30EC\u30AF\u30BF\u306E\u4E00\u90E8\u307E\u305F\u306F\u3059\u3079\u3066\u304C\u4E0A\u66F8\u304D\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059 -- \u6700\u5F8C\u306E\u30BB\u30EC\u30AF\u30BF\u304C\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\n\n<length>\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u5207\u6368\u3066\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n<mode>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u306E\u30E2\u30FC\u30C9\u306E\u5207\u6368\u3066\u8A2D\u5B9A\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\u4F8B:\n\t/set truncation \
+mymode\n\u30E2\u30FC\u30C9mymode\u306E\u5207\u6368\u3066\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\n
+
+help.set.feedback.summary = \u5165\u529B\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8\u304A\u3088\u3073\u30B3\u30DE\u30F3\u30C9\u306B\u5BFE\u3057\u3066\u8868\u793A\u3055\u308C\u308B\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u793A\u3059\u3001\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002
help.set.feedback = \u5165\u529B\u3057\u305F\u30B9\u30CB\u30DA\u30C3\u30C8\u304A\u3088\u3073\u30B3\u30DE\u30F3\u30C9\u306B\u5BFE\u3057\u3066\u8868\u793A\u3055\u308C\u308B\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u793A\u3059\u3001\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u8A2D\u5B9A\u3057\u307E\u3059:\n\n\t/set feedback [-retain] <mode>\n\n\u5C06\u6765\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u305F\u3081\u306B\u73FE\u5728\u306E\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u4FDD\u6301\u3057\u307E\u3059:\n\n\t/set feedback -retain\n\n\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u8868\u793A\u3057\u3001\u4F7F\u7528\u53EF\u80FD\u306A\u30E2\u30FC\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059:\n\n\t/set feedback\n\n<mode>\u306F\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059\u3002\n\u4E00\u610F\u306B\u3059\u308B\u305F\u3081\u306B\u5FC5\u8981\u306A\u6587\u5B57\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u30E2\u30FC\u30C9\u306F\u8FFD\u52A0\u3067\u304D\u307E\u3059\u3002'/help /set mode'\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\n\n-retain\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u8A2D\u5B9A\u306Fjshell\u30C4\u30FC\u30EB\u306E\u3053\u306E\u5B9F\u884C\u3068\u5C06\u6765\u306E\n\u5B9F\u884C\u3067\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n\n<mode>\u307E\u305F\u306F-retain\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u73FE\u5728\u306E\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u304A\u3088\u3073\u4F7F\u7528\u53EF\u80FD\u306A\u30E2\u30FC\u30C9\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n
-help.set.mode = \u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u65E2\u5B58\u306E\u30E2\u30FC\u30C9\u304B\u3089\u30B3\u30D4\u30FC\u3057\u307E\u3059:\n\n\t/set mode <new-mode> [<old-mode>] (-command|-quiet)\n\n\u5C06\u6765\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u305F\u3081\u306B\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u4FDD\u6301\u3057\u307E\u3059:\n\n\t/set mode -retain <mode>\n\n\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u524A\u9664\u3057\u307E\u3059:\n\n\t/set mode -delete [-retain] <mode>\n\n\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set mode [<mode>]\n\n<new-mode>\u306F\u4F5C\u6210\u3059\u308B\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059\u3002\n<old-mode>\u306F\u65E2\u5B58\u306E\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059\u3002\n<mode>\u306F\u65E2\u5B58\u306E\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059\u3002\n\n<old-mode>\u304C\u5B58\u5728\u3059\u308B\u5834\u5408\u3001\u305D\u306E\u8A2D\u5B9A\u304C\u65B0\u898F\u30E2\u30FC\u30C9\u306B\u30B3\u30D4\u30FC\u3055\u308C\u307E\u3059\u3002\n\n\u5165\u529B\u3055\u308C\u305F\u30B9\u30CB\u30DA\u30C3\u30C8\u306B\u30E2\u30FC\u30C9\u304C\u63D0\u4F9B\u3059\u308B\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u306F\u3001'/set format'\u8A2D\u5B9A\u306B\u3088\u3063\u3066\n\u6C7A\u5B9A\u3055\u308C\u307E\u3059\u3002\u305F\u3060\u3057\u3001\u5165\u529B\u3055\u308C\u305F\u30B3\u30DE\u30F3\u30C9\u306E\u5834\u5408\u3001\u30E2\u30FC\u30C9\u4F5C\u6210\u6642\u306B\n\u4F7F\u7528\u3055\u308C\u305F\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u5F93\u3063\u3066\u3001\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u306F\u30AA\u30F3\u307E\u305F\u306F\u30AA\u30D5\u306E\u3044\u305A\u308C\u304B\u306B\u306A\u308A\u307E\u3059\u3002\n\u30AA\u30D7\u30B7\u30E7\u30F3'-command'\u307E\u305F\u306F\u30AA\u30D7\u30B7\u30E7\u30F3'-quiet'\u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n'-command'\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u65B0\u898F\u30E2\u30FC\u30C9\u306E\u5834\u5408\u3001\u60C5\u5831/\u691C\u8A3C\u4E2D\u306E\u30B3\u30DE\u30F3\u30C9\u30FB\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n'-quiet'\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u5FC5\u8981\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF(\u30A8\u30E9\u30FC\u306A\u3069)\u306E\u307F\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\n\u65B0\u898F\u30E2\u30FC\u30C9\u3092\u4F5C\u6210\u3057\u305F\u3089\u3001'/set format'\u3001'/set prompt'\u304A\u3088\u3073'/set truncation'\u3092\u4F7F\u7528\u3057\u3066\n\u69CB\u6210\u3057\u307E\u3059\u3002\u65B0\u898F\u30E2\u30FC\u30C9\u3092\u4F7F\u7528\u3059\u308B\u306B\u306F\u3001'/set \
-feedback'\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\n\n'-retain'\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408('-delete'\u30AA\u30D7\u30B7\u30E7\u30F3\u306A\u3057)\u3001\n\u30E2\u30FC\u30C9(\u73FE\u5728\u306E\u30D7\u30ED\u30F3\u30D7\u30C8\u3001\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304A\u3088\u3073\u5207\u6368\u3066\u8A2D\u5B9A\u3092\u542B\u3080)\u306F\u3001\u5C06\u6765\u306E\u5B9F\u884C\u3067\n\u4F7F\u7528\u3067\u304D\u308B\u3088\u3046\u306Bjshell\u30C4\u30FC\u30EB\u306B\u683C\u7D0D\u3055\u308C\u307E\u3059\u3002retain\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3001\n\u30E2\u30FC\u30C9\u306F\u73FE\u5728\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u3067\u306E\u307F\u5B9A\u7FA9\u3055\u308C\u307E\u3059\u3002\u30E2\u30FC\u30C9\u306E\u8A2D\u5B9A\u3092\u66F4\u65B0\u3057\u305F\u5F8C\u3001\n\u30BB\u30C3\u30B7\u30E7\u30F3\u9593\u3067\u66F4\u65B0\u3092\u4FDD\u5B58\u3059\u308B\u306B\u306F\u3001\u30E2\u30FC\u30C9\u3092\u518D\u5EA6\u4FDD\u6301\u3057\u307E\u3059\u3002\n\n'-delete'\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u307F\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30E2\u30FC\u30C9\u306F\u73FE\u5728\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u304B\u3089\u524A\u9664\u3055\u308C\u307E\u3059\u3002\n'-retain'\u3068'-delete'\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u4E21\u65B9\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30E2\u30FC\u30C9\u306F\u73FE\u5728\u3068\u5C06\u6765\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u304B\u3089\n\u524A\u9664\u3055\u308C\u307E\u3059\u3002\n\n\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u30E2\u30FC\u30C9\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n<mode>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u306E\u30E2\u30FC\u30C9\u306E\u30E2\u30FC\u30C9\u8A2D\u5B9A\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\u6CE8\u610F: \u30E2\u30FC\u30C9\u306E\u8A2D\u5B9A\u306B\u306F\u3001\u30D7\u30ED\u30F3\u30D7\u30C8\u3001\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304A\u3088\u3073\u5207\u6368\u3066\u306E\u8A2D\u5B9A\u304C\n\u542B\u307E\u308C\u307E\u3059\u3002\n\u4F8B:\n\t/set mode myformat\n\n\u30E2\u30FC\u30C9myformat\u306E\u30E2\u30FC\u30C9\u3001\u30D7\u30ED\u30F3\u30D7\u30C8\u3001\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304A\u3088\u3073\u5207\u6368\u3066\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059
+help.set.mode.summary = \u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u65E2\u5B58\u306E\u30E2\u30FC\u30C9\u304B\u3089\u30B3\u30D4\u30FC\u3057\u307E\u3059\u3002
+
+help.set.mode = \u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u65E2\u5B58\u306E\u30E2\u30FC\u30C9\u304B\u3089\u30B3\u30D4\u30FC\u3057\u307E\u3059:\n\n\t/set mode <new-mode> [<old-mode>] (-command|-quiet)\n\n\u5C06\u6765\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u305F\u3081\u306B\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u4FDD\u6301\u3057\u307E\u3059:\n\n\t/set mode -retain <mode>\n\n\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u3092\u524A\u9664\u3057\u307E\u3059:\n\n\t/set mode -delete [-retain] <mode>\n\n\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set mode [<mode>]\n\n<new-mode>\u306F\u4F5C\u6210\u3059\u308B\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059\u3002\n<old-mode>\u306F\u65E2\u5B58\u306E\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059\u3002\n<mode>\u306F\u65E2\u5B58\u306E\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059\u3002\n\n<old-mode>\u304C\u5B58\u5728\u3059\u308B\u5834\u5408\u3001\u305D\u306E\u8A2D\u5B9A\u304C\u65B0\u898F\u30E2\u30FC\u30C9\u306B\u30B3\u30D4\u30FC\u3055\u308C\u307E\u3059\u3002\n\n\u5165\u529B\u3055\u308C\u305F\u30B9\u30CB\u30DA\u30C3\u30C8\u306B\u30E2\u30FC\u30C9\u304C\u63D0\u4F9B\u3059\u308B\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u306F\u3001'/set format'\u8A2D\u5B9A\u306B\u3088\u3063\u3066\n\u6C7A\u5B9A\u3055\u308C\u307E\u3059\u3002\u305F\u3060\u3057\u3001\u5165\u529B\u3055\u308C\u305F\u30B3\u30DE\u30F3\u30C9\u306E\u5834\u5408\u3001\u30E2\u30FC\u30C9\u4F5C\u6210\u6642\u306B\n\u4F7F\u7528\u3055\u308C\u305F\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u5F93\u3063\u3066\u3001\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u306F\u30AA\u30F3\u307E\u305F\u306F\u30AA\u30D5\u306E\u3044\u305A\u308C\u304B\u306B\u306A\u308A\u307E\u3059\u3002\n\u30AA\u30D7\u30B7\u30E7\u30F3'-command'\u307E\u305F\u306F\u30AA\u30D7\u30B7\u30E7\u30F3'-quiet'\u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n'-command'\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u65B0\u898F\u30E2\u30FC\u30C9\u3067\u306F\u3001\u60C5\u5831/\u691C\u8A3C\u4E2D\u306E\u30B3\u30DE\u30F3\u30C9\u30FB\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n'-quiet'\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u5FC5\u8981\u306A\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF(\u30A8\u30E9\u30FC\u306A\u3069)\u306E\u307F\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\n\u65B0\u898F\u30E2\u30FC\u30C9\u3092\u4F5C\u6210\u3057\u305F\u3089\u3001'/set format'\u3001'/set prompt'\u304A\u3088\u3073'/set truncation'\u3092\u4F7F\u7528\u3057\u3066\n\u69CB\u6210\u3057\u307E\u3059\u3002\u65B0\u898F\u30E2\u30FC\u30C9\u3092\u4F7F\u7528\u3059\u308B\u306B\u306F\u3001'/set \
+feedback'\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\n\n'-retain'\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408('-delete'\u30AA\u30D7\u30B7\u30E7\u30F3\u306A\u3057)\u3001\n\u30E2\u30FC\u30C9(\u73FE\u5728\u306E\u30D7\u30ED\u30F3\u30D7\u30C8\u3001\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304A\u3088\u3073\u5207\u6368\u3066\u8A2D\u5B9A\u3092\u542B\u3080)\u306F\u3001\u5C06\u6765\u306E\u5B9F\u884C\u3067\n\u4F7F\u7528\u3067\u304D\u308B\u3088\u3046\u306Bjshell\u30C4\u30FC\u30EB\u306B\u683C\u7D0D\u3055\u308C\u307E\u3059\u3002retain\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u3001\n\u30E2\u30FC\u30C9\u306F\u73FE\u5728\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u3067\u306E\u307F\u5B9A\u7FA9\u3055\u308C\u307E\u3059\u3002\u30E2\u30FC\u30C9\u306E\u8A2D\u5B9A\u3092\u66F4\u65B0\u3057\u305F\u5F8C\u3001\n\u30BB\u30C3\u30B7\u30E7\u30F3\u9593\u3067\u66F4\u65B0\u3092\u4FDD\u5B58\u3059\u308B\u306B\u306F\u3001\u30E2\u30FC\u30C9\u3092\u518D\u5EA6\u4FDD\u6301\u3057\u307E\u3059\u3002\n\n'-delete'\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u307F\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30E2\u30FC\u30C9\u306F\u73FE\u5728\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u304B\u3089\u524A\u9664\u3055\u308C\u307E\u3059\u3002\n'-retain'\u3068'-delete'\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u4E21\u65B9\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30E2\u30FC\u30C9\u306F\u73FE\u5728\u3068\u5C06\u6765\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u304B\u3089\n\u524A\u9664\u3055\u308C\u307E\u3059\u3002\n\n\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u30E2\u30FC\u30C9\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n<mode>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u306E\u30E2\u30FC\u30C9\u306E\u30E2\u30FC\u30C9\u8A2D\u5B9A\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\u6CE8\u610F: \u30E2\u30FC\u30C9\u306E\u8A2D\u5B9A\u306B\u306F\u3001\u30D7\u30ED\u30F3\u30D7\u30C8\u3001\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304A\u3088\u3073\u5207\u6368\u3066\u306E\u8A2D\u5B9A\u304C\n\u542B\u307E\u308C\u307E\u3059\u3002\n\u4F8B:\n\t/set mode mymode\n\n\u30E2\u30FC\u30C9mymode\u306E\u30E2\u30FC\u30C9\u3001\u30D7\u30ED\u30F3\u30D7\u30C8\u3001\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304A\u3088\u3073\u5207\u6368\u3066\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059
-help.set.prompt = \u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002\u6A19\u6E96\u30D7\u30ED\u30F3\u30D7\u30C8\u3068\u7D9A\u884C\u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u4E21\u65B9\u3092\u8A2D\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059:\n\n\t/set prompt <mode> "<prompt>" "<continuation-prompt>"\n\n\u6A19\u6E96\u30D7\u30ED\u30F3\u30D7\u30C8\u3068\u7D9A\u884C\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set prompt [<mode>]\n\n<mode>\u306F\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059\u3002\n<prompt>\u304A\u3088\u3073<continuation-prompt>\u306F\u5165\u529B\u30D7\u30ED\u30F3\u30D7\u30C8\u3068\u3057\u3066\u51FA\u529B\u3055\u308C\u308B\u5F15\u7528\u7B26\u3067\u56F2\u307E\u308C\u305F\u6587\u5B57\u5217\u3067\u3059\u3002\n\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3001\u4E21\u65B9\u3068\u3082\u3001\u6B21\u306E\u30B9\u30CB\u30DA\u30C3\u30C8ID\u3067\u7F6E\u304D\u63DB\u3048\u3089\u308C\u308B'%%s'\u3092\u542B\u3080\u3053\u3068\u304C\u3067\u304D\u307E\u3059 --\n\u5165\u529B\u3057\u305F\u5185\u5BB9\u304C\u305D\u306EID\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u306A\u3044\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u305F\u3068\u3048\u3070\u3001\u30A8\u30E9\u30FC\u307E\u305F\u306F\u30B3\u30DE\u30F3\u30C9\u3067\u3042\u308B\u5834\u5408\u306A\u3069\u3067\u3059\u3002\n\u7D9A\u884C\u30D7\u30ED\u30F3\u30D7\u30C8\u306F\u8907\u6570\u884C\u30B9\u30CB\u30DA\u30C3\u30C8\u306E2\u884C\u76EE\u4EE5\u964D\u3067\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n\n<prompt>\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u73FE\u5728\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n<mode>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u306E\u30E2\u30FC\u30C9\u306E\u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\u4F8B:\n\t/set prompt myformat\n\u30E2\u30FC\u30C9myformat\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\n
+help.set.prompt.summary = \u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002
+
+help.set.prompt = \u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002\u6A19\u6E96\u30D7\u30ED\u30F3\u30D7\u30C8\u3068\u7D9A\u884C\u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u4E21\u65B9\u3092\u8A2D\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059:\n\n\t/set prompt <mode> "<prompt>" "<continuation-prompt>"\n\n\u6A19\u6E96\u30D7\u30ED\u30F3\u30D7\u30C8\u3068\u7D9A\u884C\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set prompt [<mode>]\n\n<mode>\u306F\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30FB\u30E2\u30FC\u30C9\u306E\u540D\u524D\u3067\u3059\u3002\n<prompt>\u304A\u3088\u3073<continuation-prompt>\u306F\u5165\u529B\u30D7\u30ED\u30F3\u30D7\u30C8\u3068\u3057\u3066\u51FA\u529B\u3055\u308C\u308B\u5F15\u7528\u7B26\u3067\u56F2\u307E\u308C\u305F\u6587\u5B57\u5217\u3067\u3059\u3002\n\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3001\u4E21\u65B9\u3068\u3082\u3001\u6B21\u306E\u30B9\u30CB\u30DA\u30C3\u30C8ID\u3067\u7F6E\u304D\u63DB\u3048\u3089\u308C\u308B'%%s'\u3092\u542B\u3080\u3053\u3068\u304C\u3067\u304D\u307E\u3059 --\n\u5165\u529B\u3057\u305F\u5185\u5BB9\u304C\u305D\u306EID\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u306A\u3044\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\u305F\u3068\u3048\u3070\u3001\u30A8\u30E9\u30FC\u307E\u305F\u306F\u30B3\u30DE\u30F3\u30C9\u3067\u3042\u308B\u5834\u5408\u306A\u3069\u3067\u3059\u3002\n\u7D9A\u884C\u30D7\u30ED\u30F3\u30D7\u30C8\u306F\u8907\u6570\u884C\u30B9\u30CB\u30DA\u30C3\u30C8\u306E2\u884C\u76EE\u4EE5\u964D\u3067\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n\n<prompt>\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u73FE\u5728\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n<mode>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u306E\u30E2\u30FC\u30C9\u306E\u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u307F\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\u4F8B:\n\t/set prompt mymode\n\u30E2\u30FC\u30C9mymode\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\n
+
+help.set.editor.summary =/edit\u30B3\u30DE\u30F3\u30C9\u3067\u8D77\u52D5\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002
help.set.editor =/edit\u30B3\u30DE\u30F3\u30C9\u3067\u8D77\u52D5\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u6307\u5B9A\u3057\u307E\u3059:\n\n\t/set editor [-retain] [-wait] <command>\n\n\t/set editor [-retain] -default\n\n\t/set editor [-retain] -delete\n\n\u5C06\u6765\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u305F\u3081\u306B\u73FE\u5728\u306E\u30A8\u30C7\u30A3\u30BF\u8A2D\u5B9A\u3092\u4FDD\u6301\u3057\u307E\u3059:\n\n\t/set editor -retain\n\n/edit\u30B3\u30DE\u30F3\u30C9\u3067\u8D77\u52D5\u3059\u308B\u30B3\u30DE\u30F3\u30C9\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set editor\n\n<command>\u306F\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30FB\u30B7\u30B9\u30C6\u30E0\u4F9D\u5B58\u6587\u5B57\u5217\u3067\u3059\u3002\n<command>\u306B\u306F\u30B9\u30DA\u30FC\u30B9\u3067\u533A\u5207\u3089\u308C\u305F\u5F15\u6570(\u30D5\u30E9\u30B0\u306A\u3069)\u304C\u542B\u307E\u308C\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\n\n-default\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u7D44\u8FBC\u307F\u30A8\u30C7\u30A3\u30BF\u304C\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n\n-delete\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u4EE5\u524D\u306E\u8A2D\u5B9A\u306F\u7121\u8996\u3055\u308C\u307E\u3059 -- \u30A8\u30C7\u30A3\u30BF\n\u8A2D\u5B9A\u306F\u3001jshell\u30C4\u30FC\u30EB\u306E\u8D77\u52D5\u6642\u306B\u521D\u671F\u5316\u3055\u308C\u307E\u3059\u3002\u5177\u4F53\u7684\u306B\u306F\u3001\u4FDD\u6301\u3055\u308C\u305F\u8A2D\u5B9A\u304C\n\u5B58\u5728\u3059\u308B\u5834\u5408\u3001(\u4FDD\u6301\u3055\u308C\u305F\u8A2D\u5B9A\u3092\u524A\u9664\u3059\u308B-retain\u3068-delete\u306E\u4E21\u65B9\u304C\u6307\u5B9A\u3055\u308C\u3066\n\u3044\u306A\u3051\u308C\u3070)\u305D\u308C\u304C\u4F7F\u7528\u3055\u308C\u3001\u6B21\u306E\u74B0\u5883\u5909\u6570\u306E\u3044\u305A\u308C\u304B\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\n\u305D\u308C\u304C(\u305D\u306E\u9806\u5E8F\u3067)\u4F7F\u7528\u3055\u308C\u307E\u3059: JSHELLEDITOR\u3001VISUAL\u307E\u305F\u306FEDITOR\u3002\n\u305D\u308C\u4EE5\u5916\u306E\u5834\u5408\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u7D44\u8FBC\u307F\u30A8\u30C7\u30A3\u30BF\u304C\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n\n<command>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u308C\u304C\u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002<command>\u306F\u3001\n\u30D7\u30ED\u30B0\u30E9\u30E0\u3068\u30BC\u30ED\u500B\u4EE5\u4E0A\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u5F15\u6570\u3067\u69CB\u6210\u3055\u308C\u307E\u3059\u3002<command>\u304C\u4F7F\u7528\u3055\u308C\u308B\u5834\u5408\u3001\n\u7DE8\u96C6\u5BFE\u8C61\u306E\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u304C\u6700\u5F8C\u306E\u5F15\u6570\u3068\u3057\u3066\u8FFD\u52A0\u3055\u308C\u307E\u3059\u3002\n\u901A\u5E38\u3001\u7DE8\u96C6\u30E2\u30FC\u30C9\u306F\u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u304C\u7D42\u4E86\u3059\u308B\u307E\u3067\u7D99\u7D9A\u3057\u307E\u3059\u3002\u4E00\u90E8\u306E\u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u306F\u3001\n\u305F\u3068\u3048\u3070\u7DE8\u96C6\u30A6\u30A3\u30F3\u30C9\u30A6\u304C\u7D42\u4E86\u3059\u308B\u3068\u5373\u5EA7\u306B\u7D42\u4E86\u3059\u308B\u305F\u3081\u3001\u5916\u90E8\u30A8\u30C7\u30A3\u30BF\u30FB\u30D5\u30E9\u30B0\u3092\u4F7F\u7528\u3057\u3066\n\u5373\u6642\u306E\u7D42\u4E86\u3092\u56DE\u907F\u3059\u308B\u304B\u3001-wait\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u3001\u7DE8\u96C6\u30E2\u30FC\u30C9\u304C\u7D42\u4E86\u3059\u308B\u30BF\u30A4\u30DF\u30F3\u30B0\u3092\n\u6307\u5B9A\u3059\u308B\u3088\u3046\u30E6\u30FC\u30B6\u30FC\u306B\u8981\u6C42\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\n\u6CE8\u610F: \
\u7DE8\u96C6\u30E2\u30FC\u30C9\u4E2D\u3001\u30B3\u30DE\u30F3\u30C9\u5165\u529B\u306F\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002\u7DE8\u96C6\u30E2\u30FC\u30C9\u306E\u7D42\u4E86\u5F8C\u3001\u7DE8\u96C6\u3055\u308C\u305F\n\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u5909\u66F4\u5185\u5BB9\u306F\u8868\u793A\u3055\u308C\u307E\u305B\u3093\u3002\n\n-retain\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u8A2D\u5B9A\u306Fjshell\u30C4\u30FC\u30EB\u306E\u3053\u306E\u5B9F\u884C\u3068\u5C06\u6765\u306E\n\u5B9F\u884C\u3067\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n\n<command>\u307E\u305F\u306F\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u30A8\u30C7\u30A3\u30BF\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n
+help.set.start.summary =\u8D77\u52D5\u69CB\u6210\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002
+
help.set.start =\u8D77\u52D5\u69CB\u6210\u3092\u8A2D\u5B9A\u3057\u307E\u3059 -- \u8D77\u52D5\u6642\u306B\u8AAD\u307F\u53D6\u3089\u308C\u308B\u30B9\u30CB\u30DA\u30C3\u30C8\u304A\u3088\u3073\u30B3\u30DE\u30F3\u30C9\u306E\u30B7\u30FC\u30B1\u30F3\u30B9:\n\n\t/set start [-retain] <file>...\n\n\t/set start [-retain] -default\n\n\t/set start [-retain] -none\n\n\u5C06\u6765\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u305F\u3081\u306B\u8D77\u52D5\u69CB\u6210\u3092\u4FDD\u6301\u3057\u307E\u3059:\n\n\t/set start -retain\n\n\u8D77\u52D5\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059:\n\n\t/set start\n\n\u3053\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u3067/reset\u3001/reload\u307E\u305F\u306F/env\u30B3\u30DE\u30F3\u30C9\u304C\u4F7F\u7528\u3055\u308C\u308B\u5834\u5408\u3001\n\u6307\u5B9A\u3057\u305F<file>\u306E\u5185\u5BB9\u304C\u3001\u4F7F\u7528\u3055\u308C\u308B\u8D77\u52D5\u30B9\u30CB\u30DA\u30C3\u30C8\u304A\u3088\u3073\u30B3\u30DE\u30F3\u30C9\u306B\u306A\u308A\u307E\u3059\u3002\n\u304B\u308F\u308A\u306B-default\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u4E8B\u524D\u306B\u5B9A\u7FA9\u3055\u308C\u305F\u8D77\u52D5\u30A4\u30F3\u30DD\u30FC\u30C8\u30FB\u30B9\u30CB\u30DA\u30C3\u30C8\u304C\n\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n-none\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3059\u308B\u3068\u3001\u8D77\u52D5\u304C\u7A7A\u306B\u306A\u308A\u307E\u3059 -- \u8D77\u52D5\u30B9\u30CB\u30DA\u30C3\u30C8\u307E\u305F\u306F\n\u30B3\u30DE\u30F3\u30C9\u304C\u4F7F\u7528\u3055\u308C\u307E\u305B\u3093\u3002\n\u3053\u306E\u30B3\u30DE\u30F3\u30C9\u306F\u8D77\u52D5\u8A2D\u5B9A\u3092\u30C6\u30B9\u30C8\u3059\u308B\u306E\u306B\u6709\u52B9\u3067\u3059\u3002jshell\u30C4\u30FC\u30EB\u306E\u4ECA\u5F8C\u306E\u5B9F\u884C\u306E\u305F\u3081\u306B\n\u305D\u308C\u3089\u3092\u4FDD\u6301\u3059\u308B\u306B\u306F\u3001\u6B21\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528\u3057\u307E\u3059:\n\t/set start -retain\n\n-retain\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u8A2D\u5B9A\u306Fjshell\u30C4\u30FC\u30EB\u306E\u3053\u306E\u5B9F\u884C\u3068\u5C06\u6765\u306E\n\u5B9F\u884C\u3067\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n\n<file>\u307E\u305F\u306F\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u306A\u3044\u5F62\u5F0F\u306F\u3001\u8D77\u52D5\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n\u6CE8\u610F: \u8D77\u52D5\u304C\u6700\u5F8C\u306B\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u3053\u308C\u306F'set start'\u30B3\u30DE\u30F3\u30C9\u304A\u3088\u3073\n\u305D\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u5185\u5BB9\u3068\u3068\u3082\u306B\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\n<file>\u306F\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30FB\u30B7\u30B9\u30C6\u30E0\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u304B\u3001\u4E8B\u524D\u5B9A\u7FA9\u3055\u308C\u305F\n\u8D77\u52D5\u30D5\u30A1\u30A4\u30EB\u540D\u306E\u3044\u305A\u308C\u304B(DEFAULT\u3001PRINTING\u307E\u305F\u306FJAVASE)\u306B\u306A\u308A\u307E\u3059\u3002\n\u3053\u308C\u3089\u306F\u3001\u305D\u308C\u305E\u308C\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A4\u30F3\u30DD\u30FC\u30C8\u30FB\u30B9\u30CB\u30DA\u30C3\u30C8(-default\u3067\u4F7F\u7528)\u3001print()\u3001\nprintln()\u304A\u3088\u3073printf()\u30E1\u30BD\u30C3\u30C9\u30FB\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u5B9A\u7FA9\u3001\u307E\u305F\u306F\u3059\u3079\u3066\u306EJava SE\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\n\u30A4\u30F3\u30DD\u30FC\u30C8\u3067\u3059\u3002\n\u8907\u6570\u306E<file>\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u4F8B\u3092\u6B21\u306B\u793A\u3057\u307E\u3059:\n\n\t/set start -retain DEFAULT PRINTING
startup.feedback = /set mode verbose -command \n\n/set prompt verbose '\\njshell> ' ' ...> ' \n\n/set format verbose pre '| ' \n/set format verbose post '%n' \n/set format verbose errorpre '| ' \n/set format verbose errorpost '%n' \n\n/set format verbose errorline '{post}{pre} {err}' \n\n/set format verbose action '\u6B21\u3092\u4F5C\u6210\u3057\u307E\u3057\u305F:' added-primary \n/set format verbose action '\u6B21\u3092\u5909\u66F4\u3057\u307E\u3057\u305F:' modified-primary \n/set format verbose action '\u6B21\u3092\u7F6E\u63DB\u3057\u307E\u3057\u305F:' replaced-primary \n/set format verbose action '\u6B21\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3057\u305F:' overwrote-primary \n/set format verbose action '\u6B21\u3092\u524A\u9664\u3057\u307E\u3057\u305F:' dropped-primary \n/set format verbose action ' \u6B21\u3092\u66F4\u65B0/\u4F5C\u6210\u3057\u307E\u3057\u305F:' added-update \n/set format verbose action ' \u6B21\u3092\u66F4\u65B0/\u5909\u66F4\u3057\u307E\u3057\u305F:' modified-update \n/set format verbose action ' \u6B21\u3092\u66F4\u65B0/\u7F6E\u63DB\u3057\u307E\u3057\u305F:' replaced-update \n/set format verbose action ' \u6B21\u3092\u66F4\u65B0/\u4E0A\u66F8\u304D\u3057\u307E\u3057\u305F:' overwrote-update \n/set format verbose action ' \u6B21\u3092\u66F4\u65B0/\u524A\u9664\u3057\u307E\u3057\u305F:' dropped-update \n\n/set format verbose until '\u307E\u3067\u3001\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u306A\u3044\u304B\u3001\u305D\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093' defined-class-primary \n/set format verbose until '\u307E\u3067\u3001\u305D\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093' defined-interface-primary \n/set format verbose until '\u307E\u3067\u3001\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093' defined-enum,annotation-primary \n/set format verbose until '\u307E\u3067\u3001\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093' defined-method-primary \n/set format verbose until '\u307E\u3067\u3001\u53C2\u7167\u3067\u304D\u307E\u305B\u3093' notdefined-primary \n/set format verbose until '\u307E\u3067\u3001\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u306A\u3044\u304B\u3001\u305D\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093' defined-class-update \n/set format verbose until '\u307E\u3067\u3001\u305D\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093' defined-interface-update \n/set format verbose until '\u307E\u3067\u3001\u8D77\u52D5\u3067\u304D\u307E\u305B\u3093' defined-method-update \n/set format verbose until '\u307E\u3067\u3001\u53C2\u7167\u3067\u304D\u307E\u305B\u3093' notdefined-update \n\n/set format verbose unrerr '\u3002\u3057\u304B\u3057\u3001{unresolved}\u304C\u5BA3\u8A00\u3055\u308C\u308B' unresolved1-error0 \n/set format verbose unrerr '\u3002\u3057\u304B\u3057\u3001{unresolved}\u304C\u5BA3\u8A00\u3055\u308C\u308B' unresolved2-error0 \n/set format verbose unrerr '\u3002\u3057\u304B\u3057\u3001\u3053\u306E\u30A8\u30E9\u30FC({errors})\u304C\u4FEE\u6B63\u3055\u308C\u308B' unresolved0-error1 \n/set format verbose unrerr '\u3002\u3057\u304B\u3057\u3001{unresolved}\u304C\u5BA3\u8A00\u3055\u308C\u3001\u3053\u306E\u30A8\u30E9\u30FC({errors})\u304C\u4FEE\u6B63\u3055\u308C\u308B' unresolved1-error1 \n/set format verbose unrerr '\u3002\u3057\u304B\u3057\u3001{unresolved}\u304C\u5BA3\u8A00\u3055\u308C\u3001\u3053\u306E\u30A8\u30E9\u30FC({errors})\u304C\u4FEE\u6B63\u3055\u308C\u308B' unresolved2-error1 \n/set format verbose unrerr \
'\u3002\u3057\u304B\u3057\u3001\u3053\u308C\u3089\u306E\u30A8\u30E9\u30FC({errors})\u304C\u4FEE\u6B63\u3055\u308C\u308B' unresolved0-error2 \n/set format verbose unrerr '\u3002\u3057\u304B\u3057\u3001{unresolved}\u304C\u5BA3\u8A00\u3055\u308C\u3001\u3053\u308C\u3089\u306E\u30A8\u30E9\u30FC({errors})\u304C\u4FEE\u6B63\u3055\u308C\u308B' unresolved1-error2 \n/set format verbose unrerr '\u3002\u3057\u304B\u3057\u3001{unresolved}\u304C\u5BA3\u8A00\u3055\u308C\u3001\u3053\u308C\u3089\u306E\u30A8\u30E9\u30FC({errors})\u304C\u4FEE\u6B63\u3055\u308C\u308B' unresolved2-error2 \n\n/set format verbose resolve '{unrerr}{until}' defined,notdefined-added,modified,replaced,used \n\n/set format verbose typeKind '\u30AF\u30E9\u30B9' class \n/set format verbose typeKind '\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9' interface \n/set format verbose typeKind '\u5217\u6319\u578B' enum \n/set format verbose typeKind '\u6CE8\u91C8\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9' annotation \n\n/set format verbose result '{name} ==> {value}{post}' added,modified,replaced-ok-primary \n\n/set format verbose display '{result}{pre}\u30B9\u30AF\u30E9\u30C3\u30C1\u5909\u6570{name} : {type}\u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F{post}' expression-added,modified,replaced-primary \n/set format verbose display '{result}{pre}{name} : {type}\u306E\u5024{post}' varvalue-added,modified,replaced-primary \n/set format verbose display '{result}{pre}{name} : {type}\u306B\u5272\u308A\u5F53\u3066\u3089\u308C\u307E\u3057\u305F{post}' assignment-primary \n/set format verbose display '{result}{pre}{action} \u5909\u6570 {name} : {type}{resolve}{post}' varinit,vardecl \n/set format verbose display '{pre}{action} \u5909\u6570 {name}{resolve}{post}' vardecl,varinit-notdefined \n/set format verbose display '{pre}{action} \u5909\u6570 {name}{post}' dropped-vardecl,varinit,expression \n/set format verbose display '{pre}{action} \u5909\u6570 {name}\u3002null\u306B\u30EA\u30BB\u30C3\u30C8\u3057\u307E\u3057\u305F{post}' replaced-vardecl,varinit-ok-update \n\n/set format verbose display '{pre}{action} {typeKind} {name}{resolve}{post}' class,interface,enum,annotation \n/set format verbose display '{pre}{action} \u30E1\u30BD\u30C3\u30C9 {name}({type}){resolve}{post}' method \n\n/set format verbose display '{pre}{typeKind} {name}\u3092\u4F7F\u7528\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F{resolve}{post}' used-class,interface,enum,annotation \n/set format verbose display '{pre}\u30E1\u30BD\u30C3\u30C9{name}({type})\u3092\u547C\u3073\u51FA\u305D\u3046\u3068\u3057\u307E\u3057\u305F{resolve}{post}' used-method \n\n/set truncation verbose 80\n/set truncation verbose 1000 varvalue,expression\n\n/set mode normal -command verbose \n/set format normal display '' added,modified,replaced,overwrote,dropped-update \n/set format normal display '{pre}{action} \u5909\u6570 {name}\u3001null\u306B\u30EA\u30BB\u30C3\u30C8\u3055\u308C\u307E\u3057\u305F{post}' replaced-vardecl,varinit-ok-update \n/set format normal display '{result}' added,modified,replaced-expression,varvalue,assignment,varinit,vardecl-ok-primary \n/set mode concise -quiet normal \n\n/set prompt concise 'jshell> ' ' ...> ' \n\n/set format concise display '' class,interface,enum,annotation,method,assignment,varinit,vardecl-ok \n\n/set feedback normal \n\n/set mode silent -quiet \n/set prompt silent '-> ' '>> ' \
\n/set truncation silent 80\n/set truncation silent 1000 varvalue,expression\n/set format silent pre '| ' \n/set format silent post '%n' \n/set format silent errorpre '| ' \n/set format silent errorpost '%n' \n/set format silent display '' \n
-
-jshell.fix.wrong.shortcut =[Shift]-[Tab]\u306E\u5F8C\u306E\u6587\u5B57\u304C\u4E88\u671F\u3057\u306A\u3044\u6587\u5B57\u3067\u3059\u3002\u81EA\u52D5\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u306F"i"\u3001\u5909\u6570\u306E\u4F5C\u6210\u306B\u306F"v"\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u8A73\u7D30\u306F\u6B21\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044:\n/help shortcuts
--- a/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -31,7 +31,8 @@
jshell.err.opt.feedback.one = \u53EA\u80FD\u4F7F\u7528\u4E00\u4E2A\u53CD\u9988\u9009\u9879 (--feedback, -q, -s \u6216 -v)\u3002
jshell.err.opt.unknown = \u672A\u77E5\u9009\u9879: {0}
-jshell.msg.terminated =\u72B6\u6001\u5F15\u64CE\u5DF2\u7EC8\u6B62\u3002\n\u4F7F\u7528 /reload -restore \u53EF\u8FD8\u539F\u5B9A\u4E49
+jshell.msg.terminated = \u72B6\u6001\u5F15\u64CE\u5DF2\u7EC8\u6B62\u3002
+jshell.msg.terminated.restore = \u4F7F\u7528 /reload -restore \u53EF\u8FD8\u539F\u5B9A\u4E49
jshell.msg.use.one.of = \u4F7F\u7528\u4EE5\u4E0B\u4E4B\u4E00: {0}
jshell.msg.see.classes.etc = \u8BF7\u53C2\u9605 /types, /methods, /vars \u6216 /list
@@ -46,7 +47,7 @@
jshell.err.startup.unexpected.exception = \u8BFB\u53D6\u542F\u52A8\u65F6\u51FA\u73B0\u610F\u5916\u7684\u5F02\u5E38\u9519\u8BEF: {0}
jshell.err.unexpected.exception = \u610F\u5916\u5F02\u5E38\u9519\u8BEF: {0}
-jshell.err.no.such.command.or.snippet.id = \u6CA1\u6709\u8FD9\u6837\u7684\u547D\u4EE4\u6216\u7247\u6BB5 id: {0}
+jshell.err.invalid.command = \u65E0\u6548\u7684\u547D\u4EE4: {0}
jshell.err.command.ambiguous = \u547D\u4EE4 ''{0}'' \u4E0D\u660E\u786E: {1}
jshell.msg.set.restore = \u6B63\u5728\u8BBE\u7F6E\u65B0\u9009\u9879\u5E76\u8FD8\u539F\u72B6\u6001\u3002
jshell.msg.set.editor.set = \u7F16\u8F91\u5668\u8BBE\u7F6E\u4E3A: {0}
@@ -91,12 +92,20 @@
jshell.msg.help.begin =\u952E\u5165 Java \u8BED\u8A00\u8868\u8FBE\u5F0F, \u8BED\u53E5\u6216\u58F0\u660E\u3002\n\u6216\u8005\u952E\u5165\u4EE5\u4E0B\u547D\u4EE4\u4E4B\u4E00:\n
jshell.msg.help.subject =\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u952E\u5165 ''/help'', \u540E\u8DDF\n\u547D\u4EE4\u6216\u4E3B\u9898\u7684\u540D\u79F0\u3002\n\u4F8B\u5982 ''/help /list'' \u6216 ''/help intro''\u3002\u4E3B\u9898:\n\n
+jshell.err.no.snippet.with.id = \u6CA1\u6709\u7247\u6BB5\u5177\u6709 ID: {0}
+jshell.err.end.snippet.range.less.than.start = \u7247\u6BB5\u8303\u56F4\u7684\u7ED3\u675F\u503C\u5C0F\u4E8E\u5F00\u59CB\u503C: {0} - {1}
+jshell.err.range.requires.id = \u7247\u6BB5\u8303\u56F4\u9700\u8981\u7247\u6BB5 ID: {0}
+
+jshell.err.exit.not.expression = /exit \u7684\u53C2\u6570\u5FC5\u987B\u662F\u6709\u6548\u7684\u6574\u6570\u8868\u8FBE\u5F0F, \u8FD9\u4E0D\u662F\u8868\u8FBE\u5F0F: {0}
+jshell.err.exit.bad.type = /exit \u7684\u53C2\u6570\u5FC5\u987B\u662F\u6709\u6548\u7684\u6574\u6570\u8868\u8FBE\u5F0F, \u7C7B\u578B\u4E3A {1}: {0}
+jshell.err.exit.bad.value = /exit \u7684\u53C2\u6570\u5177\u6709\u9519\u8BEF\u503C {1}: {0}
+
jshell.err.drop.arg =\u5728 /drop \u53C2\u6570\u4E2D, \u8BF7\u6307\u5B9A\u8981\u5220\u9664\u7684\u5BFC\u5165, \u53D8\u91CF, \u65B9\u6CD5\u6216\u7C7B\u3002\n\u6309 id \u6216\u540D\u79F0\u6307\u5B9A\u3002\u4F7F\u7528 /list \u53EF\u67E5\u770B id\u3002\u4F7F\u7528 /reset \u53EF\u91CD\u7F6E\u6240\u6709\u72B6\u6001\u3002
-jshell.err.drop.ambiguous = \u53C2\u6570\u5F15\u7528\u4E86\u591A\u4E2A\u5BFC\u5165, \u53D8\u91CF, \u65B9\u6CD5\u6216\u7C7B\u3002
jshell.err.failed = \u5931\u8D25\u3002
jshell.msg.native.method = \u672C\u673A\u65B9\u6CD5
jshell.msg.unknown.source = \u672A\u77E5\u6E90
jshell.msg.goodbye = \u518D\u89C1
+jshell.msg.goodbye.value = \u518D\u89C1 ({0})
jshell.msg.help.for.help = \u952E\u5165 /help \u4EE5\u83B7\u53D6\u5E2E\u52A9\u4FE1\u606F\u3002
@@ -153,29 +162,35 @@
jshell.console.do.nothing = \u4E0D\u6267\u884C\u4EFB\u4F55\u64CD\u4F5C
jshell.console.choice = \u9009\u9879:
jshell.console.create.variable = \u521B\u5EFA\u53D8\u91CF
+jshell.console.create.method = \u521B\u5EFA\u65B9\u6CD5
jshell.console.resolvable = \n\u6807\u8BC6\u7B26\u53EF\u5728\u6B64\u4E0A\u4E0B\u6587\u4E2D\u89E3\u6790\u3002
jshell.console.no.candidate = \n\u6CA1\u6709\u627E\u5230\u53EF\u5BFC\u5165\u7684\u5019\u9009\u5168\u9650\u5B9A\u540D\u79F0\u3002
jshell.console.incomplete = \n\u7ED3\u679C\u53EF\u80FD\u4E0D\u5B8C\u6574; \u8BF7\u7A0D\u5019\u91CD\u8BD5\u4EE5\u83B7\u53D6\u5B8C\u6574\u7ED3\u679C\u3002
-
+jshell.console.erroneous = \n\u4E0D\u5B8C\u6574\u6216\u9519\u8BEF\u3002Shift-<tab> m \u540E\u5FC5\u987B\u4E3A\u5355\u4E2A\u6709\u6548\u7684\u8868\u8FBE\u5F0F\u6216\u8BED\u53E5\u3002
+jshell.console.exprstmt = \nShift-<tab> m \u540E\u5FC5\u987B\u4E3A\u5355\u4E2A\u6709\u6548\u7684\u8868\u8FBE\u5F0F\u6216\u8BED\u53E5\u3002
+jshell.console.empty = \n\u7A7A\u6761\u76EE\u3002Shift-<tab> m \u540E\u5FC5\u987B\u4E3A\u5355\u4E2A\u6709\u6548\u7684\u8868\u8FBE\u5F0F\u6216\u8BED\u53E5\u3002
-help.usage = \u7528\u6CD5: jshell <\u9009\u9879> <\u52A0\u8F7D\u6587\u4EF6>\n\u5176\u4E2D, \u53EF\u80FD\u7684\u9009\u9879\u5305\u62EC:\n --class-path <\u8DEF\u5F84> \u6307\u5B9A\u67E5\u627E\u7528\u6237\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n --module-path <\u8DEF\u5F84> \u6307\u5B9A\u67E5\u627E\u5E94\u7528\u7A0B\u5E8F\u6A21\u5757\u7684\u4F4D\u7F6E\n --add-modules <\u6A21\u5757>(,<\u6A21\u5757>)*\n \u6307\u5B9A\u8981\u89E3\u6790\u7684\u6A21\u5757; \u5982\u679C <\u6A21\u5757> \n \u4E3A ALL-MODULE-PATH, \u5219\u4E3A\u6A21\u5757\u8DEF\u5F84\u4E2D\u7684\u6240\u6709\u6A21\u5757\n --startup <\u6587\u4EF6> \u5BF9\u542F\u52A8\u5B9A\u4E49\u6267\u884C\u5355\u6B21\u66FF\u6362\n --no-startup \u4E0D\u8FD0\u884C\u542F\u52A8\u5B9A\u4E49\n --feedback <\u6A21\u5F0F> \u6307\u5B9A\u521D\u59CB\u53CD\u9988\u6A21\u5F0F\u3002\u8BE5\u6A21\u5F0F\u53EF\u4EE5\u662F\n \u9884\u5B9A\u4E49\u7684 (silent, concise, normal \u6216 verbose),\n \u4E5F\u53EF\u662F\u4EE5\u524D\u7528\u6237\u5B9A\u4E49\u7684\n -q \u65E0\u63D0\u793A\u53CD\u9988\u3002\u7B49\u540C\u4E8E: --feedback concise\n -s \u771F\u6B63\u65E0\u63D0\u793A\u53CD\u9988\u3002\u7B49\u540C\u4E8E: --feedback silent\n -v \u8BE6\u7EC6\u53CD\u9988\u3002\u7B49\u540C\u4E8E: --feedback verbose\n -J<\u6807\u8BB0> \u76F4\u63A5\u5C06 <\u6807\u8BB0> \u4F20\u9012\u5230\u8FD0\u884C\u65F6\u7CFB\u7EDF\u3002\n \u4E3A\u6BCF\u4E2A\u8FD0\u884C\u65F6\u6807\u8BB0\u6216\u6807\u8BB0\u53C2\u6570\u4F7F\u7528\u4E00\u4E2A -J\n -R<\u6807\u8BB0> \u5C06 <\u6807\u8BB0> \u4F20\u9012\u5230\u8FDC\u7A0B\u8FD0\u884C\u65F6\u7CFB\u7EDF\u3002\n \u4E3A\u6BCF\u4E2A\u8FDC\u7A0B\u6807\u8BB0\u6216\u6807\u8BB0\u53C2\u6570\u4F7F\u7528\u4E00\u4E2A -R\n -C<\u6807\u8BB0> \u5C06 <\u6807\u8BB0> \u4F20\u9012\u5230\u7F16\u8BD1\u5668\u3002\n \u4E3A\u6BCF\u4E2A\u7F16\u8BD1\u5668\u6807\u8BB0\u6216\u6807\u8BB0\u53C2\u6570\u4F7F\u7528\u4E00\u4E2A -C\n --version \u8F93\u51FA\u7248\u672C\u4FE1\u606F\u5E76\u9000\u51FA\n --show-version \u8F93\u51FA\u7248\u672C\u4FE1\u606F\u5E76\u7EE7\u7EED\n --help \u8F93\u51FA\u6807\u51C6\u9009\u9879\u7684\u6B64\u63D0\u8981\u5E76\u9000\u51FA\n --help-extra, -X \u8F93\u51FA\u975E\u6807\u51C6\u9009\u9879\u7684\u5E2E\u52A9\u5E76\u9000\u51FA\n
+jshell.fix.wrong.shortcut =Shift-Tab \u540E\u51FA\u73B0\u610F\u5916\u7684\u5B57\u7B26\u3002\n\u4F7F\u7528 "i" \u8868\u793A\u81EA\u52A8\u5BFC\u5165, \u4F7F\u7528 "v" \u8868\u793A\u53D8\u91CF\u521B\u5EFA, \u4F7F\u7528 "i" \u8868\u793A\u65B9\u6CD5\u521B\u5EFA\u3002\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605:\n /help \u5FEB\u6377\u65B9\u5F0F
+
+help.usage = \u7528\u6CD5: jshell <\u9009\u9879>... <\u52A0\u8F7D\u6587\u4EF6>...\n\u5176\u4E2D, \u53EF\u80FD\u7684\u9009\u9879\u5305\u62EC:\n --class-path <\u8DEF\u5F84> \u6307\u5B9A\u67E5\u627E\u7528\u6237\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n --module-path <\u8DEF\u5F84> \u6307\u5B9A\u67E5\u627E\u5E94\u7528\u7A0B\u5E8F\u6A21\u5757\u7684\u4F4D\u7F6E\n --add-modules <\u6A21\u5757>(,<\u6A21\u5757>)*\n \u6307\u5B9A\u8981\u89E3\u6790\u7684\u6A21\u5757; \u5982\u679C <\u6A21\u5757> \n \u4E3A ALL-MODULE-PATH, \u5219\u4E3A\u6A21\u5757\u8DEF\u5F84\u4E2D\u7684\u6240\u6709\u6A21\u5757\n --startup <\u6587\u4EF6> \u5BF9\u542F\u52A8\u5B9A\u4E49\u6267\u884C\u5355\u6B21\u66FF\u6362\n --no-startup \u4E0D\u8FD0\u884C\u542F\u52A8\u5B9A\u4E49\n --feedback <\u6A21\u5F0F> \u6307\u5B9A\u521D\u59CB\u53CD\u9988\u6A21\u5F0F\u3002\u8BE5\u6A21\u5F0F\u53EF\u4EE5\u662F\n \u9884\u5B9A\u4E49\u7684 (silent, concise, normal \u6216 verbose),\n \u4E5F\u53EF\u662F\u4EE5\u524D\u7528\u6237\u5B9A\u4E49\u7684\n -q \u65E0\u63D0\u793A\u53CD\u9988\u3002\u7B49\u540C\u4E8E: --feedback concise\n -s \u771F\u6B63\u65E0\u63D0\u793A\u53CD\u9988\u3002\u7B49\u540C\u4E8E: --feedback silent\n -v \u8BE6\u7EC6\u53CD\u9988\u3002\u7B49\u540C\u4E8E: --feedback verbose\n -J<\u6807\u8BB0> \u76F4\u63A5\u5C06 <\u6807\u8BB0> \u4F20\u9012\u5230\u8FD0\u884C\u65F6\u7CFB\u7EDF\u3002\n \u4E3A\u6BCF\u4E2A\u8FD0\u884C\u65F6\u6807\u8BB0\u6216\u6807\u8BB0\u53C2\u6570\u4F7F\u7528\u4E00\u4E2A -J\n -R<\u6807\u8BB0> \u5C06 <\u6807\u8BB0> \u4F20\u9012\u5230\u8FDC\u7A0B\u8FD0\u884C\u65F6\u7CFB\u7EDF\u3002\n \u4E3A\u6BCF\u4E2A\u8FDC\u7A0B\u6807\u8BB0\u6216\u6807\u8BB0\u53C2\u6570\u4F7F\u7528\u4E00\u4E2A -R\n -C<\u6807\u8BB0> \u5C06 <\u6807\u8BB0> \u4F20\u9012\u5230\u7F16\u8BD1\u5668\u3002\n \u4E3A\u6BCF\u4E2A\u7F16\u8BD1\u5668\u6807\u8BB0\u6216\u6807\u8BB0\u53C2\u6570\u4F7F\u7528\u4E00\u4E2A -C\n --version \u8F93\u51FA\u7248\u672C\u4FE1\u606F\u5E76\u9000\u51FA\n --show-version \u8F93\u51FA\u7248\u672C\u4FE1\u606F\u5E76\u7EE7\u7EED\n --help \u8F93\u51FA\u6807\u51C6\u9009\u9879\u7684\u6B64\u63D0\u8981\u5E76\u9000\u51FA\n --help-extra, -X \u8F93\u51FA\u975E\u6807\u51C6\u9009\u9879\u7684\u5E2E\u52A9\u5E76\u9000\u51FA\n\u6587\u4EF6\u53C2\u6570\u53EF\u4EE5\u662F\u6587\u4EF6\u540D, \u6216\u8005\u662F\u9884\u5B9A\u4E49\u7684\u6587\u4EF6\u540D\u4E4B\u4E00: DEFAULT,\nPRINTING \u6216 JAVASE\u3002\n\u52A0\u8F7D\u6587\u4EF6\u4E5F\u53EF\u4EE5\u662F "-", \u7528\u4E8E\u6307\u793A\u6807\u51C6\u8F93\u5165, \u65E0\u4EA4\u4E92\u5F0F I/O\u3002\n
+
help.usage.x = \ --add-exports <\u6A21\u5757>/<\u7A0B\u5E8F\u5305> \u5C06\u6307\u5B9A\u7684\u6A21\u5757\u4E13\u7528\u7A0B\u5E8F\u5305\u5BFC\u51FA\u5230\u7247\u6BB5\n --execution <\u89C4\u8303> \u6307\u5B9A\u66FF\u4EE3\u6267\u884C\u5F15\u64CE\u3002\n \u5176\u4E2D <\u89C4\u8303> \u662F ExecutionControl \u89C4\u8303\u3002\n \u6709\u5173\u89C4\u8303\u7684\u8BED\u6CD5, \u8BF7\u53C2\u9605\u7A0B\u5E8F\u5305\n jdk.jshell.spi \u7684\u6587\u6863\n \n\u8FD9\u4E9B\u9009\u9879\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n
help.list.summary = \u5217\u51FA\u60A8\u952E\u5165\u7684\u6E90
help.list.args = [<\u540D\u79F0\u6216 id>|-all|-start]
-help.list =\u663E\u793A\u524D\u9762\u5E26\u6709\u7247\u6BB5 ID \u7684\u7247\u6BB5\u6E90\u3002\n\n/list\n\t\u5217\u51FA\u60A8\u952E\u5165\u7684\u6216\u4F7F\u7528 /open \u8BFB\u53D6\u7684\u5F53\u524D\u6D3B\u52A8\u7684\u4EE3\u7801\u7247\u6BB5\n\n/list -start\n\t\u5217\u51FA\u81EA\u52A8\u8BC4\u4F30\u7684\u542F\u52A8\u7247\u6BB5\n\n/list -all\n\t\u5217\u51FA\u6240\u6709\u7247\u6BB5, \u5305\u62EC\u5931\u8D25\u7684\u7247\u6BB5, \u8986\u76D6\u7684\u7247\u6BB5, \u5220\u9664\u7684\u7247\u6BB5\u548C\u542F\u52A8\u7247\u6BB5\n\n/list <\u540D\u79F0>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u540D\u79F0\u7684\u7247\u6BB5 (\u7279\u522B\u662F\u6D3B\u52A8\u7247\u6BB5)\n\n/list <id>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u7247\u6BB5 ID \u7684\u7247\u6BB5
+help.list =\u663E\u793A\u524D\u9762\u5E26\u6709\u7247\u6BB5 ID \u7684\u7247\u6BB5\u6E90\u3002\n\n/list\n\t\u5217\u51FA\u60A8\u952E\u5165\u7684\u6216\u4F7F\u7528 /open \u8BFB\u53D6\u7684\u5F53\u524D\u6D3B\u52A8\u7684\u4EE3\u7801\u7247\u6BB5\n\n/list -start\n\t\u5217\u51FA\u81EA\u52A8\u8BC4\u4F30\u7684\u542F\u52A8\u7247\u6BB5\n\n/list -all\n\t\u5217\u51FA\u6240\u6709\u7247\u6BB5, \u5305\u62EC\u5931\u8D25\u7684\u7247\u6BB5, \u8986\u76D6\u7684\u7247\u6BB5, \u5220\u9664\u7684\u7247\u6BB5\u548C\u542F\u52A8\u7247\u6BB5\n\n/list <\u540D\u79F0>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u540D\u79F0\u7684\u7247\u6BB5 (\u7279\u522B\u662F\u6D3B\u52A8\u7247\u6BB5)\n\n/list <id>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u7247\u6BB5 ID \u7684\u7247\u6BB5\n\n/list <id> <id>...\n\t\u5217\u51FA\u5177\u6709\u591A\u4E2A\u6307\u5B9A\u7247\u6BB5 ID \u7684\u591A\u4E2A\u7247\u6BB5\n\n/list <id>-<id>\n\t\u5217\u51FA\u5728\u7247\u6BB5 ID \u8303\u56F4\u5185\u7684\u7247\u6BB5
help.edit.summary = \u7F16\u8F91\u6309\u540D\u79F0\u6216 id \u5F15\u7528\u7684\u6E90\u6761\u76EE
help.edit.args = <\u540D\u79F0\u6216 id>
-help.edit =\u5728\u5916\u90E8\u7F16\u8F91\u5668\u4E2D\u7F16\u8F91\u6E90\u7684\u7247\u6BB5\u3002\n\u4F7F\u7528 /set editor \u53EF\u4EE5\u8BBE\u7F6E\u8981\u4F7F\u7528\u7684\u7F16\u8F91\u5668\u3002\n\u5982\u679C\u5C1A\u672A\u8BBE\u7F6E\u7F16\u8F91\u5668, \u5219\u5C06\u542F\u52A8\u4E00\u4E2A\u7B80\u5355\u7684\u7F16\u8F91\u5668\u3002\n\n/edit <\u540D\u79F0>\n\t\u7F16\u8F91\u5177\u6709\u6307\u5B9A\u540D\u79F0\u7684\u7247\u6BB5 (\u7279\u522B\u662F\u6D3B\u52A8\u7247\u6BB5)\n\n/edit <id>\n\t\u7F16\u8F91\u5177\u6709\u6307\u5B9A\u7247\u6BB5 id \u7684\u7247\u6BB5\n\n/edit\n\t\u7F16\u8F91\u60A8\u952E\u5165\u6216\u4F7F\u7528 /open \u8BFB\u53D6\u7684\u5F53\u524D\u6D3B\u52A8\u7684\u4EE3\u7801\u7247\u6BB5
+help.edit =\u5728\u5916\u90E8\u7F16\u8F91\u5668\u4E2D\u7F16\u8F91\u6E90\u7684\u7247\u6BB5\u3002\n\u4F7F\u7528 /set editor \u53EF\u4EE5\u8BBE\u7F6E\u8981\u4F7F\u7528\u7684\u7F16\u8F91\u5668\u3002\n\u5982\u679C\u5C1A\u672A\u8BBE\u7F6E\u7F16\u8F91\u5668, \u5219\u5C06\u542F\u52A8\u4E00\u4E2A\u7B80\u5355\u7684\u7F16\u8F91\u5668\u3002\n\n/edit <\u540D\u79F0>\n\t\u7F16\u8F91\u5177\u6709\u6307\u5B9A\u540D\u79F0\u7684\u7247\u6BB5 (\u7279\u522B\u662F\u6D3B\u52A8\u7247\u6BB5)\n\n/edit <id>\n\t\u7F16\u8F91\u5177\u6709\u6307\u5B9A\u7247\u6BB5 id \u7684\u7247\u6BB5\n\n/edit <id> <id>...\n\t\u7F16\u8F91\u5177\u6709\u591A\u4E2A\u6307\u5B9A\u7247\u6BB5 ID \u7684\u591A\u4E2A\u7247\u6BB5\n\n/edit <id>-<id>\n\t\u7F16\u8F91\u5728\u7247\u6BB5 ID \u8303\u56F4\u5185\u7684\u7247\u6BB5\n\n/edit -start\n\t\u7F16\u8F91\u81EA\u52A8\u8BC4\u4F30\u7684\u542F\u52A8\u7247\u6BB5\u3002\u4EFB\u4F55\u66F4\u6539\u4FDD\u6301\u5728\n\t\u6B64\u4F1A\u8BDD\u4E2D, \u4E0D\u5F71\u54CD\u542F\u52A8\u8BBE\u7F6E\n\n/edit -all\n\t\u7F16\u8F91\u6240\u6709\u7247\u6BB5, \u5305\u62EC\u5931\u8D25\u7684\u7247\u6BB5, \u8986\u76D6\u7684\u7247\u6BB5, \u5220\u9664\u7684\u7247\u6BB5\u548C\u542F\u52A8\u7247\u6BB5\n\n/edit\n\t\u7F16\u8F91\u60A8\u952E\u5165\u6216\u4F7F\u7528 /open \u8BFB\u53D6\u7684\u5F53\u524D\u6D3B\u52A8\u7684\u4EE3\u7801\u7247\u6BB5
help.drop.summary = \u5220\u9664\u6309\u540D\u79F0\u6216 id \u5F15\u7528\u7684\u6E90\u6761\u76EE
help.drop.args = <\u540D\u79F0\u6216 id>
-help.drop =\u5220\u9664\u7247\u6BB5 -- \u4F7F\u7247\u6BB5\u5904\u4E8E\u4E0D\u6D3B\u52A8\u72B6\u6001\u3002\n\n/drop <name>\n\t\u5220\u9664\u5177\u6709\u6307\u5B9A\u540D\u79F0\u7684\u7247\u6BB5\n\n/drop <id>\n\t\u5220\u9664\u5177\u6709\u6307\u5B9A\u7247\u6BB5 id \u7684\u7247\u6BB5
+help.drop =\u5220\u9664\u7247\u6BB5 -- \u4F7F\u7247\u6BB5\u5904\u4E8E\u4E0D\u6D3B\u52A8\u72B6\u6001\u3002\n\n/drop <name>\n\t\u5220\u9664\u5177\u6709\u6307\u5B9A\u540D\u79F0\u7684\u7247\u6BB5\n\n/drop <id>\n\t\u5220\u9664\u5177\u6709\u6307\u5B9A\u7247\u6BB5 id \u7684\u7247\u6BB5\n\n/drop <id> <id>...\n\t\u5220\u9664\u5177\u6709\u591A\u4E2A\u6307\u5B9A\u7247\u6BB5 ID \u7684\u591A\u4E2A\u7247\u6BB5\n\n/drop <id>-<id>\n\t\u5220\u9664\u5728\u7247\u6BB5 ID \u8303\u56F4\u5185\u7684\u7247\u6BB5
help.save.summary = \u5C06\u7247\u6BB5\u6E90\u4FDD\u5B58\u5230\u6587\u4EF6\u3002
help.save.args = [-all|-history|-start] <\u6587\u4EF6>
-help.save =\u5C06\u6307\u5B9A\u7684\u7247\u6BB5\u548C/\u6216\u547D\u4EE4\u4FDD\u5B58\u5230\u6307\u5B9A\u6587\u4EF6\u3002\n\n/save <\u6587\u4EF6>\n\t\u5C06\u5F53\u524D\u6D3B\u52A8\u7247\u6BB5\u7684\u6E90\u4FDD\u5B58\u5230\u6587\u4EF6\u3002\n\n/save -all <\u6587\u4EF6>\n\t\u5C06\u6240\u6709\u7247\u6BB5\u7684\u6E90\u4FDD\u5B58\u5230\u6587\u4EF6\u3002\n\t\u8FD9\u5305\u62EC\u8986\u76D6\u7684\u6E90, \u5931\u8D25\u7684\u6E90\u4EE5\u53CA\u542F\u52A8\u4EE3\u7801\u3002\n\n/save -history <\u6587\u4EF6>\n\t\u4FDD\u5B58\u81EA\u542F\u52A8 jshell \u4EE5\u6765\u8F93\u5165\u7684\u6240\u6709\u547D\u4EE4\u548C\u7247\u6BB5\u7684\u987A\u5E8F\u5386\u53F2\u8BB0\u5F55\u3002\n\n/save -start <\u6587\u4EF6>\n\t\u5C06\u5F53\u524D\u542F\u52A8\u5B9A\u4E49\u4FDD\u5B58\u5230\u6587\u4EF6\u3002
+help.save =\u5C06\u6307\u5B9A\u7684\u7247\u6BB5\u548C/\u6216\u547D\u4EE4\u4FDD\u5B58\u5230\u6307\u5B9A\u6587\u4EF6\u3002\n\n/save <\u6587\u4EF6>\n\t\u5C06\u5F53\u524D\u6D3B\u52A8\u7247\u6BB5\u7684\u6E90\u4FDD\u5B58\u5230\u6587\u4EF6\u3002\n\n/save -all <\u6587\u4EF6>\n\t\u5C06\u6240\u6709\u7247\u6BB5\u7684\u6E90\u4FDD\u5B58\u5230\u6587\u4EF6\u3002\n\t\u8FD9\u5305\u62EC\u8986\u76D6\u7684\u6E90, \u5931\u8D25\u7684\u6E90\u4EE5\u53CA\u542F\u52A8\u4EE3\u7801\u3002\n\n/save -history <\u6587\u4EF6>\n\t\u4FDD\u5B58\u81EA\u542F\u52A8 jshell \u4EE5\u6765\u8F93\u5165\u7684\u6240\u6709\u547D\u4EE4\u548C\u7247\u6BB5\u7684\u987A\u5E8F\u5386\u53F2\u8BB0\u5F55\u3002\n\n/save -start <\u6587\u4EF6>\n\t\u5C06\u5F53\u524D\u542F\u52A8\u5B9A\u4E49\u4FDD\u5B58\u5230\u6587\u4EF6\u3002\n\n/save <id> <\u6587\u4EF6>\n\t\u4FDD\u5B58\u5177\u6709\u6307\u5B9A\u7247\u6BB5 ID \u7684\u7247\u6BB5\n\n/save <id> <id>... <\u6587\u4EF6>\n\t\u4FDD\u5B58\u5177\u6709\u591A\u4E2A\u6307\u5B9A\u7247\u6BB5 ID \u7684\u591A\u4E2A\u7247\u6BB5\n\n/save <id>-<id> <\u6587\u4EF6>\n\t\u4FDD\u5B58\u5728\u7247\u6BB5 ID \u8303\u56F4\u5185\u7684\u7247\u6BB5
help.open.summary = \u6253\u5F00\u6587\u4EF6\u4F5C\u4E3A\u6E90\u8F93\u5165
help.open.args = <file>
@@ -183,23 +198,23 @@
help.vars.summary = \u5217\u51FA\u5DF2\u58F0\u660E\u53D8\u91CF\u53CA\u5176\u503C
help.vars.args = [<\u540D\u79F0\u6216 id>|-all|-start]
-help.vars =\u5217\u51FA jshell \u53D8\u91CF\u7684\u7C7B\u578B, \u540D\u79F0\u548C\u503C\u3002\n\n/vars\n\t\u5217\u51FA\u5F53\u524D\u6D3B\u52A8\u7684 jshell \u53D8\u91CF\u7684\u7C7B\u578B, \u540D\u79F0\u548C\u503C\n\n/vars <\u540D\u79F0>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u540D\u79F0\u7684 jshell \u53D8\u91CF (\u7279\u522B\u662F\u6D3B\u52A8\u53D8\u91CF)\n\n/vars <id>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u7247\u6BB5 ID \u7684 jshell \u53D8\u91CF\n\n/vars -start\n\t\u5217\u51FA\u81EA\u52A8\u6DFB\u52A0\u7684\u542F\u52A8 jshell \u53D8\u91CF\n\n/vars -all\n\t\u5217\u51FA\u6240\u6709 jshell \u53D8\u91CF, \u5305\u62EC\u5DF2\u5931\u8D25\u53D8\u91CF, \u5DF2\u8986\u76D6\u53D8\u91CF, \u5DF2\u5220\u9664\u53D8\u91CF\u548C\u542F\u52A8\u53D8\u91CF
+help.vars =\u5217\u51FA jshell \u53D8\u91CF\u7684\u7C7B\u578B, \u540D\u79F0\u548C\u503C\u3002\n\n/vars\n\t\u5217\u51FA\u5F53\u524D\u6D3B\u52A8\u7684 jshell \u53D8\u91CF\u7684\u7C7B\u578B, \u540D\u79F0\u548C\u503C\n\n/vars <\u540D\u79F0>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u540D\u79F0\u7684 jshell \u53D8\u91CF (\u7279\u522B\u662F\u6D3B\u52A8\u53D8\u91CF)\n\n/vars <id>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u7247\u6BB5 ID \u7684 jshell \u53D8\u91CF\n\n/vars <id> <id>... <\u6587\u4EF6>\n\t\u5217\u51FA\u5177\u6709\u591A\u4E2A\u6307\u5B9A\u7247\u6BB5 ID \u7684\u591A\u4E2A jshell \u53D8\u91CF\n\n/vars <id>-<id> <\u6587\u4EF6>\n\t\u5217\u51FA\u5728\u7247\u6BB5 ID \u8303\u56F4\u5185\u7684 jshell \u53D8\u91CF\n\n/vars -start\n\t\u5217\u51FA\u81EA\u52A8\u6DFB\u52A0\u7684\u542F\u52A8 jshell \u53D8\u91CF\n\n/vars -all\n\t\u5217\u51FA\u6240\u6709 jshell \u53D8\u91CF, \u5305\u62EC\u5DF2\u5931\u8D25\u53D8\u91CF, \u5DF2\u8986\u76D6\u53D8\u91CF, \u5DF2\u5220\u9664\u53D8\u91CF\u548C\u542F\u52A8\u53D8\u91CF
help.methods.summary = \u5217\u51FA\u5DF2\u58F0\u660E\u65B9\u6CD5\u53CA\u5176\u7B7E\u540D
help.methods.args = [<\u540D\u79F0\u6216 id>|-all|-start]
-help.methods =\u5217\u51FA jshell \u65B9\u6CD5\u7684\u540D\u79F0, \u53C2\u6570\u7C7B\u578B\u4EE5\u53CA\u8FD4\u56DE\u7C7B\u578B\u3002\n\n/methods\n\t\u5217\u51FA\u5F53\u524D\u6D3B\u52A8 jshell \u65B9\u6CD5\u540D\u79F0, \u53C2\u6570\u7C7B\u578B\u548C\u8FD4\u56DE\u7C7B\u578B\n\n/methods <\u540D\u79F0>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u540D\u79F0\u7684 jshell \u65B9\u6CD5 (\u7279\u522B\u662F\u6D3B\u52A8\u65B9\u6CD5)\n\n/methods <id>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u7247\u6BB5 ID \u7684 jshell \u65B9\u6CD5\n\n/methods -start\n\t\u5217\u51FA\u81EA\u52A8\u6DFB\u52A0\u7684\u542F\u52A8 jshell \u65B9\u6CD5\n\n/methods -all\n\t\u5217\u51FA\u6240\u6709\u7247\u6BB5, \u5305\u62EC\u5DF2\u5931\u8D25\u7247\u6BB5, \u5DF2\u8986\u76D6\u7247\u6BB5, \u5DF2\u5220\u9664\u7247\u6BB5\u548C\u542F\u52A8\u7247\u6BB5
+help.methods =\u5217\u51FA jshell \u65B9\u6CD5\u7684\u540D\u79F0, \u53C2\u6570\u7C7B\u578B\u4EE5\u53CA\u8FD4\u56DE\u7C7B\u578B\u3002\n\n/methods\n\t\u5217\u51FA\u5F53\u524D\u6D3B\u52A8 jshell \u65B9\u6CD5\u540D\u79F0, \u53C2\u6570\u7C7B\u578B\u548C\u8FD4\u56DE\u7C7B\u578B\n\n/methods <\u540D\u79F0>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u540D\u79F0\u7684 jshell \u65B9\u6CD5 (\u7279\u522B\u662F\u6D3B\u52A8\u65B9\u6CD5)\n\n/methods <id>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u7247\u6BB5 ID \u7684 jshell \u65B9\u6CD5\n\n/methods <id> <id>... <\u6587\u4EF6>\n\t\u5217\u51FA\u5177\u6709\u591A\u4E2A\u6307\u5B9A\u7247\u6BB5 ID \u7684\u591A\u4E2A jshell \u65B9\u6CD5\n\n/methods <id>-<id> <file>\n\t\u5217\u51FA\u5728\u7247\u6BB5 ID \u8303\u56F4\u5185\u7684 jshell \u65B9\u6CD5\n\n/methods -start\n\t\u5217\u51FA\u81EA\u52A8\u6DFB\u52A0\u7684\u542F\u52A8 jshell \u65B9\u6CD5\n\n/methods -all\n\t\u5217\u51FA\u6240\u6709\u7247\u6BB5, \u5305\u62EC\u5DF2\u5931\u8D25\u7247\u6BB5, \u5DF2\u8986\u76D6\u7247\u6BB5, \u5DF2\u5220\u9664\u7247\u6BB5\u548C\u542F\u52A8\u7247\u6BB5
help.types.summary = \u5217\u51FA\u5DF2\u58F0\u660E\u7684\u7C7B\u578B
help.types.args =[<\u540D\u79F0\u6216 id>|-all|-start]
-help.types =\u5217\u51FA jshell \u7C7B, \u63A5\u53E3\u548C\u679A\u4E3E\u3002\n\n/types\n\t\u5217\u51FA\u5F53\u524D\u6D3B\u52A8 jshell \u7C7B, \u63A5\u53E3\u548C\u679A\u4E3E\u3002\n\n/types <\u540D\u79F0>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u540D\u79F0\u7684 jshell \u7C7B\u578B (\u7279\u522B\u662F\u6D3B\u52A8\u7C7B\u578B)\n\n/types <id>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u7247\u6BB5 ID \u7684 jshell \u7C7B\u578B\n\n/types -start\n\t\u5217\u51FA\u81EA\u52A8\u6DFB\u52A0\u7684\u542F\u52A8 jshell \u7C7B\u578B\n\n/types -all\n\t\u5217\u51FA\u6240\u6709 jshell \u7C7B\u578B, \u5305\u62EC\u5DF2\u5931\u8D25, \u5DF2\u8986\u76D6, \u5DF2\u5220\u9664\u548C\u542F\u52A8\u7C7B\u578B
+help.types =\u5217\u51FA jshell \u7C7B, \u63A5\u53E3\u548C\u679A\u4E3E\u3002\n\n/types\n\t\u5217\u51FA\u5F53\u524D\u6D3B\u52A8 jshell \u7C7B, \u63A5\u53E3\u548C\u679A\u4E3E\u3002\n\n/types <\u540D\u79F0>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u540D\u79F0\u7684 jshell \u7C7B\u578B (\u7279\u522B\u662F\u6D3B\u52A8\u7C7B\u578B)\n\n/types <id>\n\t\u5217\u51FA\u5177\u6709\u6307\u5B9A\u7247\u6BB5 ID \u7684 jshell \u7C7B\u578B\n\n/types <id> <id>... <\u6587\u4EF6>\n\t\u5217\u51FA\u5177\u6709\u591A\u4E2A\u6307\u5B9A\u7247\u6BB5 ID \u7684\u591A\u4E2A jshell \u7C7B\u578B\n\n/types <id>-<id> <\u6587\u4EF6>\n\t\u5217\u51FA\u5728\u7247\u6BB5 ID \u8303\u56F4\u5185\u7684 jshell \u7C7B\u578B\n\n/types -start\n\t\u5217\u51FA\u81EA\u52A8\u6DFB\u52A0\u7684\u542F\u52A8 jshell \u7C7B\u578B\n\n/types -all\n\t\u5217\u51FA\u6240\u6709 jshell \u7C7B\u578B, \u5305\u62EC\u5DF2\u5931\u8D25, \u5DF2\u8986\u76D6, \u5DF2\u5220\u9664\u548C\u542F\u52A8\u7C7B\u578B
help.imports.summary = \u5217\u51FA\u5BFC\u5165\u7684\u9879
help.imports.args =
help.imports =\u5217\u51FA\u5F53\u524D\u6D3B\u52A8\u7684 jshell \u5BFC\u5165\u3002
help.exit.summary = \u9000\u51FA jshell
-help.exit.args =
-help.exit =\u9000\u51FA jshell \u5DE5\u5177\u3002\u4E0D\u4FDD\u5B58\u5DE5\u4F5C\u3002\n\u5728\u4F7F\u7528\u6B64\u547D\u4EE4\u524D\u5E94\u8BE5\u5148\u4FDD\u5B58\u4EFB\u4F55\u5DE5\u4F5C
+help.exit.args =[<integer-expression-snippet>]
+help.exit =\u9000\u51FA jshell \u5DE5\u5177\u3002\u4E0D\u4FDD\u5B58\u5DE5\u4F5C\u3002\n\u5728\u4F7F\u7528\u6B64\u547D\u4EE4\u524D\u5E94\u8BE5\u5148\u4FDD\u5B58\u4EFB\u4F55\u5DE5\u4F5C\n\n/exit\n\t\u9000\u51FA jshell \u5DE5\u5177\u3002\u9000\u51FA\u72B6\u6001\u4E3A\u96F6\u3002\n\n/exit <integer-expression-snippet>\n\t\u8BC4\u4F30\u7247\u6BB5\u3002\u5982\u679C\u7247\u6BB5\u5931\u8D25\u6216\u8005\u4E0D\u662F\u6574\u6570\u8868\u8FBE\u5F0F,\n\t\u5219\u663E\u793A\u9519\u8BEF\u3002\u5426\u5219\u9000\u51FA jshell \u5DE5\u5177, \u5E76\u5C06\n\t\u8868\u8FBE\u5F0F\u7684\u503C\u4F5C\u4E3A\u9000\u51FA\u72B6\u6001
help.reset.summary = \u91CD\u542F jshell
help.reset.args = [-class-path <\u8DEF\u5F84>] [-module-path <\u8DEF\u5F84>] [-add-modules <\u6A21\u5757>]...
@@ -207,7 +222,7 @@
help.reload.summary = \u91CD\u7F6E\u548C\u91CD\u653E\u76F8\u5173\u5386\u53F2\u8BB0\u5F55 -- \u5F53\u524D\u5386\u53F2\u8BB0\u5F55\u6216\u4E0A\u4E00\u4E2A\u5386\u53F2\u8BB0\u5F55 (-restore)
help.reload.args = [-restore] [-quiet] [-class-path <\u8DEF\u5F84>] [-module-path <\u8DEF\u5F84>]...
-help.reload =\u91CD\u7F6E jshell \u5DE5\u5177\u4EE3\u7801\u548C\u6267\u884C\u72B6\u6001, \u7136\u540E\u6309\u7167\u5404\u6709\u6548\u7247\u6BB5\u548C\n\u4EFB\u4F55 /drop \u6216 /classpath \u547D\u4EE4\u7684\u8F93\u5165\u987A\u5E8F\u91CD\u653E\u5B83\u4EEC\u3002\n\n/reload\n\t\u91CD\u7F6E\u548C\u91CD\u653E\u81EA\u8FDB\u5165 jshell \u4EE5\u6765\u7684\u6709\u6548\u5386\u53F2\u8BB0\u5F55, \n\t\u6216\u8005\u6267\u884C /reset \u6216 /reload \u547D\u4EE4\u4E2D\u6700\u65B0\u7684\u90A3\u4E2A\n\t\u547D\u4EE4\u3002\n\n/reload -restore\n\t\u91CD\u7F6E\u5E76\u91CD\u653E\u4E0A\u4E00\u6B21\u8FDB\u5165 jshell \u4E0E\u6700\u8FD1\u8FDB\u5165 jshell\n\t\u4E4B\u95F4\u7684\u6709\u6548\u5386\u53F2\u8BB0\u5F55, \u6216\u8005\u6267\u884C /reset \u6216 /reload\n\t\u547D\u4EE4\u3002\u8FD9\u8FDB\u800C\u53EF\u7528\u4E8E\u8FD8\u539F\u4E0A\u4E00\u4E2A\n\tjshell \u5DE5\u5177\u4F1A\u8BDD\u3002\n\n/reload [-restore] -quiet\n\t\u4F7F\u7528 '-quiet' \u53C2\u6570\u65F6, \u4E0D\u663E\u793A\u91CD\u653E\u3002\u5C06\u663E\u793A\u9519\u8BEF\u3002\n\n\u4E0A\u9762\u6BCF\u4E2A\u547D\u4EE4\u90FD\u63A5\u53D7\u4E0A\u4E0B\u6587\u9009\u9879, \u8BF7\u53C2\u9605:\n\n\t/help context\n\n\u4F8B\u5982:\n\n\t/reload -add-modules com.greetings -restore
+help.reload =\u91CD\u7F6E jshell \u5DE5\u5177\u4EE3\u7801\u548C\u6267\u884C\u72B6\u6001, \u7136\u540E\u6309\u7167\u5404\u6709\u6548\u7247\u6BB5\u548C\n\u4EFB\u4F55 /drop \u547D\u4EE4\u7684\u8F93\u5165\u987A\u5E8F\u91CD\u653E\u5B83\u4EEC\u3002\n\n/reload\n\t\u91CD\u7F6E\u548C\u91CD\u653E\u81EA\u8FDB\u5165 jshell \u4EE5\u6765\u7684\u6709\u6548\u5386\u53F2\u8BB0\u5F55, \n\t\u6216\u8005\u6267\u884C /reset \u6216 /reload \u547D\u4EE4\u4E2D\u6700\u65B0\u7684\u90A3\u4E2A\n\t\u547D\u4EE4\u3002\n\n/reload -restore\n\t\u91CD\u7F6E\u5E76\u91CD\u653E\u4E0A\u4E00\u6B21\u8FDB\u5165 jshell \u4E0E\u6700\u8FD1\u8FDB\u5165 jshell\n\t\u4E4B\u95F4\u7684\u6709\u6548\u5386\u53F2\u8BB0\u5F55, \u6216\u8005\u6267\u884C /reset, /reload\n\t\u6216 /env \u547D\u4EE4\u3002\u8FD9\u8FDB\u800C\u53EF\u7528\u4E8E\u8FD8\u539F\u4E0A\u4E00\u4E2A\n\tjshell \u5DE5\u5177\u4F1A\u8BDD\u3002\n\n/reload [-restore] -quiet\n\t\u4F7F\u7528 '-quiet' \u53C2\u6570\u65F6, \u4E0D\u663E\u793A\u91CD\u653E\u3002\u5C06\u663E\u793A\u9519\u8BEF\u3002\n\n\u4E0A\u9762\u6BCF\u4E2A\u547D\u4EE4\u90FD\u63A5\u53D7\u4E0A\u4E0B\u6587\u9009\u9879, \u8BF7\u53C2\u9605:\n\n\t/help context\n\n\u4F8B\u5982:\n\n\t/reload -add-modules com.greetings -restore
help.env.summary = \u67E5\u770B\u6216\u66F4\u6539\u8BC4\u4F30\u4E0A\u4E0B\u6587
help.env.args = [-class-path <\u8DEF\u5F84>] [-module-path <\u8DEF\u5F84>] [-add-modules <\u6A21\u5757>] ...
@@ -233,15 +248,15 @@
help.quest.args = [<command>|<subject>]
help.quest =\u663E\u793A\u6709\u5173 jshell \u7684\u4FE1\u606F (\u5BF9 /help \u4F7F\u7528\u7F29\u5199\u5F62\u5F0F)\u3002\n/?\n\t\u663E\u793A\u547D\u4EE4\u548C\u5E2E\u52A9\u4E3B\u9898\u7684\u5217\u8868\u3002\n/? <\u547D\u4EE4>\n\t\u663E\u793A\u6709\u5173\u6307\u5B9A\u547D\u4EE4\u7684\u4FE1\u606F\u3002\u5FC5\u987B\u5305\u542B\u659C\u6760\u3002\n\t\u53EA\u9700\u8981\u547D\u4EE4\u7684\u524D\u51E0\u4E2A\u5B57\u6BCD -- \u5982\u679C\u6709\u591A\u4E2A\n\t\u5339\u914D\u9879, \u5219\u5C06\u663E\u793A\u6240\u6709\u5B57\u6BCD\u3002\u793A\u4F8B: /? /li\n/? <\u4E3B\u9898>\n\t\u663E\u793A\u6709\u5173\u6307\u5B9A\u5E2E\u52A9\u4E3B\u9898\u7684\u4FE1\u606F\u3002\u793A\u4F8B: /? intro
-help.bang.summary = \u91CD\u65B0\u8FD0\u884C\u4E0A\u4E00\u4E2A\u7247\u6BB5
+help.bang.summary = \u91CD\u65B0\u8FD0\u884C\u4E0A\u4E00\u4E2A\u7247\u6BB5 -- \u8BF7\u53C2\u9605 /help rerun
help.bang.args =
help.bang =\u91CD\u65B0\u8BC4\u4F30\u6700\u8FD1\u8F93\u5165\u7684\u7247\u6BB5\u3002
-help.id.summary = \u6309 id \u91CD\u65B0\u8FD0\u884C\u7247\u6BB5
+help.id.summary = \u6309 ID \u6216 ID \u8303\u56F4\u91CD\u65B0\u8FD0\u884C\u7247\u6BB5 -- \u8BF7\u53C2\u9605 /help rerun
help.id.args =
-help.id =\u91CD\u65B0\u8BC4\u4F30\u7531 id \u6267\u884C\u7684\u7247\u6BB5\u3002
+help.id =/<id> <id> <id>\n\n/<id>-<id>\n\n\u91CD\u65B0\u8BC4\u4F30\u6309 ID \u6216 ID \u8303\u56F4\u6307\u5B9A\u7684\u7247\u6BB5\u3002\nID \u8303\u56F4\u4EE5\u901A\u8FC7\u8FDE\u5B57\u7B26\u5206\u9694\u7684\u4E24\u4E2A ID \u8868\u793A, \u4F8B\u5982, e.g.: 3-17\n\u53EF\u80FD\u4F1A\u4F7F\u7528\u542F\u52A8\u548C\u9519\u8BEF\u7247\u6BB5, \u4F8B\u5982: s3-s9 \u6216 e1-e4\n\u53EF\u4EE5\u4F7F\u7528\u4EFB\u610F\u6570\u91CF\u7684 ID \u6216 ID \u8303\u56F4, \u4F8B\u5982: /3-7 s4 14-16 e2
-help.previous.summary = \u91CD\u65B0\u8FD0\u884C\u524D\u9762\u7684\u7B2C n \u4E2A\u7247\u6BB5
+help.previous.summary = \u91CD\u65B0\u8FD0\u884C\u4EE5\u524D\u7684\u7B2C n \u4E2A\u7247\u6BB5 -- \u8BF7\u53C2\u9605 /help rerun
help.previous.args =
help.previous =\u91CD\u65B0\u8BC4\u4F30\u6700\u8FD1\u8F93\u5165\u7684\u7B2C n \u4E2A\u7247\u6BB5\u3002
@@ -249,28 +264,43 @@
help.intro =\u4F7F\u7528 jshell \u5DE5\u5177\u53EF\u4EE5\u6267\u884C Java \u4EE3\u7801, \u4ECE\u800C\u7ACB\u5373\u83B7\u53D6\u7ED3\u679C\u3002\n\u60A8\u53EF\u4EE5\u8F93\u5165 Java \u5B9A\u4E49 (\u53D8\u91CF, \u65B9\u6CD5, \u7C7B, \u7B49\u7B49), \u4F8B\u5982: int x = 8\n\u6216 Java \u8868\u8FBE\u5F0F, \u4F8B\u5982: x + x\n\u6216 Java \u8BED\u53E5\u6216\u5BFC\u5165\u3002\n\u8FD9\u4E9B\u5C0F\u5757\u7684 Java \u4EE3\u7801\u79F0\u4E3A '\u7247\u6BB5'\u3002\n\n\u8FD9\u4E9B jshell \u547D\u4EE4\u8FD8\u53EF\u4EE5\u8BA9\u60A8\u4E86\u89E3\u548C\n\u63A7\u5236\u60A8\u6B63\u5728\u6267\u884C\u7684\u64CD\u4F5C, \u4F8B\u5982: /list\n\n\u6709\u5173\u547D\u4EE4\u7684\u5217\u8868, \u8BF7\u6267\u884C: /help
help.shortcuts.summary = \u7247\u6BB5\u548C\u547D\u4EE4\u8F93\u5165\u63D0\u793A, \u4FE1\u606F\u8BBF\u95EE\u4EE5\u53CA\n\u81EA\u52A8\u4EE3\u7801\u751F\u6210\u7684\u6309\u952E\u8BF4\u660E
-help.shortcuts =\u652F\u6301\u7684\u5FEB\u6377\u65B9\u5F0F\u5305\u62EC:\n\n<tab>\n\t\t\u5728\u8F93\u5165 Java \u6807\u8BC6\u7B26, jshell \u547D\u4EE4\u6216 jshell\n\t\t\u547D\u4EE4\u53C2\u6570 (\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B) \u7684\u524D\u51E0\u4E2A\u5B57\u6BCD\u540E,\n\t\t\u6309 <tab> \u952E\u53EF\u4EE5\u5B8C\u6210\u8F93\u5165\u3002\n\t\t\u5982\u679C\u6709\u591A\u4E2A\u8F93\u5165\u63D0\u793A, \u5219\u5C06\u663E\u793A\u53EF\u80FD\u7684\u8F93\u5165\u63D0\u793A\u3002\n\t\t\u5C06\u663E\u793A\u53EF\u7528\u7684\u9002\u7528\u6587\u6863\u3002\n\nShift-<tab> v\n\t\t\u5728\u5B8C\u6574\u7684\u8868\u8FBE\u5F0F\u540E\u9762, \u6309\u4F4F <tab> \u7684\u540C\u65F6\u6309\u4E0B <shift>,\n\t\t\u7136\u540E\u91CA\u653E\u5E76\u6309 "v", \u6B64\u65F6\u8868\u8FBE\u5F0F\u5C06\u8F6C\u6362\u4E3A\n\t\t\u5176\u7C7B\u578B\u57FA\u4E8E\u8868\u8FBE\u5F0F\u7C7B\u578B\u7684\u53D8\u91CF\u58F0\u660E\u3002\n\nShift-<tab> i\n\t\t\u5728\u4E0D\u53EF\u89E3\u6790\u7684\u6807\u8BC6\u7B26\u540E\u9762, \u6309\u4F4F <tab> \u7684\u540C\u65F6\u6309\u4E0B <shift>,\n\t\t\u7136\u540E\u91CA\u653E\u5E76\u6309 "i", \u6B64\u65F6 jshell \u5C06\u4F1A\u5EFA\u8BAE\u53EF\u80FD\u7684\u5BFC\u5165\u9879,\n\t\t\u8FD9\u5C06\u57FA\u4E8E\u6307\u5B9A\u7C7B\u8DEF\u5F84\u7684\u5185\u5BB9\u89E3\u6790\u6807\u8BC6\u7B26\u3002
+help.shortcuts =\u652F\u6301\u7684\u5FEB\u6377\u65B9\u5F0F\u5305\u62EC:\n\n<tab>\n\t\t\u5728\u8F93\u5165 Java \u6807\u8BC6\u7B26, jshell \u547D\u4EE4\u6216 jshell\n\t\t\u547D\u4EE4\u53C2\u6570 (\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B) \u7684\u524D\u51E0\u4E2A\u5B57\u6BCD\u540E,\n\t\t\u6309 <tab> \u952E\u53EF\u4EE5\u5B8C\u6210\u8F93\u5165\u3002\n\t\t\u5982\u679C\u6709\u591A\u4E2A\u8F93\u5165\u63D0\u793A, \u5219\u5C06\u663E\u793A\u53EF\u80FD\u7684\u8F93\u5165\u63D0\u793A\u3002\n\t\t\u5C06\u663E\u793A\u53EF\u7528\u7684\u9002\u7528\u6587\u6863\u3002\n\nShift-<tab> v\n\t\t\u5728\u5B8C\u6574\u7684\u8868\u8FBE\u5F0F\u540E\u9762, \u6309\u4F4F <tab> \u7684\u540C\u65F6\u6309\u4E0B <shift>,\n\t\t\u7136\u540E\u91CA\u653E\u5E76\u6309 "v", \u6B64\u65F6\u8868\u8FBE\u5F0F\u5C06\u8F6C\u6362\u4E3A\n\t\t\u5176\u7C7B\u578B\u57FA\u4E8E\u8868\u8FBE\u5F0F\u7C7B\u578B\u7684\u53D8\u91CF\u58F0\u660E\u3002\n\nShift-<tab> m\n\t\t\u5B8C\u6210\u8868\u8FBE\u5F0F\u6216\u8BED\u53E5\u4E4B\u540E, \u6309\u4F4F <tab> \u7684\u540C\u65F6\u6309\u4F4F <shift>,\n\t\t\u7136\u540E\u91CA\u653E\u5E76\u6309\u4F4F "m", \u5219\u8868\u8FBE\u5F0F\u6216\u8BED\u53E5\u5C06\u8F6C\u6362\u4E3A\n\t\t\u65B9\u6CD5\u58F0\u660E\u3002\u5982\u679C\u662F\u8868\u8FBE\u5F0F, \u5219\u8FD4\u56DE\u7C7B\u578B\u57FA\u4E8E\u8868\u8FBE\u5F0F\u7684\n\t\t\u7C7B\u578B\u3002\n\nShift-<tab> i\n\t\t\u5728\u4E0D\u53EF\u89E3\u6790\u7684\u6807\u8BC6\u7B26\u540E\u9762, \u6309\u4F4F <tab> \u7684\u540C\u65F6\u6309\u4E0B <shift>,\n\t\t\u7136\u540E\u91CA\u653E\u5E76\u6309 "i", \u6B64\u65F6 jshell \u5C06\u4F1A\u5EFA\u8BAE\u53EF\u80FD\u7684\u5BFC\u5165\u9879,\n\t\t\u8FD9\u5C06\u57FA\u4E8E\u6307\u5B9A\u7C7B\u8DEF\u5F84\u7684\u5185\u5BB9\u89E3\u6790\u6807\u8BC6\u7B26\u3002
-help.context.summary = /env /reload \u548C /reset \u7684\u8BC4\u4F30\u4E0A\u4E0B\u6587\u9009\u9879
+help.context.summary = /env /reload \u548C /reset \u7684\u8BC4\u4F30\u4E0A\u4E0B\u6587\u9009\u9879\u7684\u8BF4\u660E
help.context =\u8FD9\u4E9B\u9009\u9879\u7528\u4E8E\u914D\u7F6E\u8BC4\u4F30\u4E0A\u4E0B\u6587, \u5B83\u4EEC\u53EF\u4EE5\u5728\u542F\u52A8\njshell \u65F6\u6307\u5B9A: \u5728\u547D\u4EE4\u884C\u4E0A, \u6216\u8005\u4F7F\u7528\u547D\u4EE4 /env,\n/reload \u6216 /reset \u91CD\u65B0\u542F\u52A8\u65F6\u3002\n\n\u5B83\u4EEC\u662F:\n\t--class-path <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n\t\t\u7528\u4E8E\u641C\u7D22\u7C7B\u6587\u4EF6\u7684\u76EE\u5F55, JAR \n\t\t\u6863\u6848\u548C ZIP \u6863\u6848\u7684\u5217\u8868\u3002\n\t\t\u8BE5\u5217\u8868\u4F7F\u7528\u8DEF\u5F84\u5206\u9694\u7B26\u5206\u9694\n\t\t(\u5728 unix/linux/mac \u4E0A\u4F7F\u7528 :, \u5728 Windows \u4E0A\u4F7F\u7528 ;)\u3002\n\t--module-path <\u6A21\u5757\u8DEF\u5F84>...\n\t\t\u76EE\u5F55\u5217\u8868, \u5176\u4E2D\u6BCF\u4E2A\u76EE\u5F55\n\t\t\u90FD\u662F\u4E00\u4E2A\u5305\u542B\u6A21\u5757\u7684\u76EE\u5F55\u3002\n\t\t\u8BE5\u5217\u8868\u4F7F\u7528\u8DEF\u5F84\u5206\u9694\u7B26\u5206\u9694\n\t\t(\u5728 unix/linux/mac \u4E0A\u4F7F\u7528 :, \u5728 Windows \u4E0A\u4F7F\u7528 ;)\u3002\n\t--add-modules <\u6A21\u5757\u540D\u79F0>[,<\u6A21\u5757\u540D\u79F0>...]\n\t\t\u9664\u4E86\u521D\u59CB\u6A21\u5757\u4E4B\u5916\u8981\u89E3\u6790\u7684\u6839\u6A21\u5757\u3002\n\t\t<\u6A21\u5757\u540D\u79F0> \u8FD8\u53EF\u4EE5\u662F ALL-DEFAULT, ALL-SYSTEM,\n\t\tALL-MODULE-PATH\u3002\n\t--add-exports <\u6A21\u5757>/<\u7A0B\u5E8F\u5305>=<\u76EE\u6807\u6A21\u5757>(,<\u76EE\u6807\u6A21\u5757>)*\n\t\t\u66F4\u65B0 <\u6A21\u5757> \u4EE5\u5C06 <\u7A0B\u5E8F\u5305> \u5BFC\u51FA\u5230 <\u76EE\u6807\u6A21\u5757>,\n\t\t\u800C\u65E0\u8BBA\u6A21\u5757\u58F0\u660E\u5982\u4F55\u3002\n\t\t<\u76EE\u6807\u6A21\u5757> \u53EF\u4EE5\u662F ALL-UNNAMED \u4EE5\u5BFC\u51FA\u5230\u5168\u90E8\n\t\t\u672A\u547D\u540D\u6A21\u5757\u3002\u5728 jshell \u4E2D, \u5982\u679C\u672A\u6307\u5B9A \n\t\t<\u76EE\u6807\u6A21\u5757> (no =), \u5219\u4F7F\u7528 ALL-UNNAMED\u3002\n\n\u5728\u547D\u4EE4\u884C\u4E0A, \u8FD9\u4E9B\u9009\u9879\u5FC5\u987B\u6709\u4E24\u4E2A\u77ED\u5212\u7EBF, \u4F8B\u5982: --module-path\n\u5728 jshell \u547D\u4EE4\u4E0A, \u5B83\u4EEC\u53EF\u4EE5\u6709\u4E00\u4E2A\u6216\u4E24\u4E2A\u77ED\u5212\u7EBF, \u4F8B\u5982: -module-path\n
+help.rerun.summary = \u91CD\u65B0\u8BC4\u4F30\u4EE5\u524D\u8F93\u5165\u7247\u6BB5\u7684\u65B9\u6CD5\u7684\u8BF4\u660E
+help.rerun =\u91CD\u65B0\u4EE5\u524D\u8F93\u5165\u7684\u7247\u6BB5\u6709\u56DB\u79CD\u65B9\u6CD5\u3002\n\u91CD\u65B0\u8BC4\u4F30\u4E0A\u4E00\u4E2A\u7247\u6BB5\u4F7F\u7528\u7684\u65B9\u6CD5\u4E3A: /!\n\u53EF\u4EE5\u4F7F\u7528\u659C\u6760\u52A0\u51CF\u53F7\u52A0\u6570\u5B57 n \u6765\u91CD\u65B0\u8BC4\u4F30\u4E4B\u524D\u7684\u7B2C n \u4E2A\u7247\u6BB5, \u4F8B\u5982: /-4\n\u4F8B\u5982:\n\n\tjshell> 2 + 2\n\t$1 ==> 4\n\n\tjshell> /!\n\t2 + 2\n\t$2 ==> 4\n\n\tjshell> int z\n\tz ==> 0\n\n\tjshell> /-1\n\tint z;\n\tz ==> 0\n\n\tjshell> /-4\n\t2 + 2\n\t$5 ==> 4\n\n\u53EF\u4EE5\u4F7F\u7528\u7247\u6BB5 ID \u6216 ID \u8303\u56F4\u6307\u5B9A\u8981\u91CD\u65B0\u8BC4\u4F30\u7684\u7247\u6BB5\u3002\nID \u8303\u56F4\u4EE5\u901A\u8FC7\u8FDE\u5B57\u7B26\u5206\u9694\u7684\u4E24\u4E2A ID \u8868\u793A, \u4F8B\u5982: 3-17\n\u53EF\u80FD\u4F7F\u7528\u542F\u52A8\u548C\u9519\u8BEF\u7247\u6BB5, \u4F8B\u5982: s3-s9 \u6216 e1-e4\n\u53EF\u4EE5\u4F7F\u7528\u4EFB\u610F\u6570\u91CF\u7684 ID \u6216 ID \u8303\u56F4, \u4F8B\u5982: /3-7 s4 14-16 e2\n\n\u6700\u540E, \u53EF\u4EE5\u901A\u8FC7\u8F93\u5165 ctrl-R \u540E\u8DDF\u8981\u641C\u7D22\u7684\u5B57\u7B26\u4E32, \u901A\u8FC7\u5386\u53F2\u8BB0\u5F55\u5411\u540E\u641C\u7D22\u3002
+
help.set._retain = '-retain' \u9009\u9879\u4FDD\u5B58\u8BBE\u7F6E\u4EE5\u4FBF\u5728\u5C06\u6765\u4F1A\u8BDD\u4E2D\u4F7F\u7528\u3002\n\u53EF\u4EE5\u5728 /set \u7684\u4EE5\u4E0B\u683C\u5F0F\u4E2D\u4F7F\u7528 -retain \u9009\u9879:\n\n\t/set editor -retain\n\t/set start -retain\n\t/set feedback -retain\n\t/set mode -retain\n\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u8FD9\u4E9B\u547D\u4EE4 -- \u4F8B\u5982, /help /set editor
+help.set.format.summary = \u8BBE\u7F6E\u7528\u4E8E\u62A5\u544A\u7247\u6BB5\u4E8B\u4EF6\u7684\u683C\u5F0F\u3002
+
help.set.format = \u8BBE\u7F6E\u7528\u4E8E\u62A5\u544A\u7247\u6BB5\u4E8B\u4EF6\u7684\u683C\u5F0F\uFF1A\n\n\t/set format <\u6A21\u5F0F> <\u5B57\u6BB5> "<\u683C\u5F0F>" <\u9009\u62E9\u5668>...\n\n\u663E\u793A\u683C\u5F0F\u8BBE\u7F6E:\n\n\t/set format [<\u6A21\u5F0F> [<\u5B57\u6BB5>]]\n\n\u5176\u4E2D <\u6A21\u5F0F> \u662F\u4EE5\u524D\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F\u7684\u540D\u79F0 -- \u8BF7\u53C2\u9605 '/help /set mode'\u3002\n\u5176\u4E2D <\u5B57\u6BB5> \u662F\u8981\u5B9A\u4E49\u7684\u4E0A\u4E0B\u6587\u7279\u5B9A\u683C\u5F0F\u7684\u540D\u79F0\u3002\n\u5176\u4E2D <\u683C\u5F0F> \u662F\u4E00\u4E2A\u5E26\u5F15\u53F7\u7684\u5B57\u7B26\u4E32, \u8BE5\u5B57\u7B26\u4E32\u5C06\u4E3A\n\u5B57\u6BB5\u7684\u503C (\u5982\u679C\u9009\u62E9\u5668\u5339\u914D, \u6216\u8005\u6CA1\u6709\u4EFB\u4F55\u9009\u62E9\u5668)\u3002\n\u5728\u4F7F\u7528\u683C\u5F0F\u65F6, \u7528\u5927\u62EC\u53F7\u62EC\u8D77\u7684\u5B57\u6BB5\u540D\u5C06\u4F1A\u5728\u76F8\u5E94\u65F6\u95F4\n\u4F7F\u7528\u5B57\u6BB5\u503C\u66FF\u6362\u3002\u8FD9\u4E9B\u5B57\u6BB5\u53EF\u80FD\u5DF2\u4F7F\u7528\u6B64\u547D\u4EE4\u5B9A\u4E49, \n\u4E5F\u53EF\u80FD\u662F\u7279\u5B9A\u4E8E\u4E0A\u4E0B\u6587\u7684\u4EE5\u4E0B\u9884\u5B9A\u4E49\u5B57\u6BB5\u4E4B\u4E00:\n\t{name} == \u540D\u79F0, \u4F8B\u5982: \u53D8\u91CF\u7684\u540D\u79F0, ...\n\t{type} == \u7C7B\u578B\u540D\u79F0\u3002\u53D8\u91CF\u6216\u8868\u8FBE\u5F0F\u7684\u7C7B\u578B,\n\t\t\t\u65B9\u6CD5\u7684\u53C2\u6570\u7C7B\u578B\n\t{value} == \u8868\u8FBE\u5F0F\u6216\u53D8\u91CF\u521D\u59CB\u5316\u7684\u7ED3\u679C\u503C\n\t{unresolved} == \u672A\u89E3\u6790\u5F15\u7528\u7684\u5217\u8868\n\t{errors} == \u53EF\u6062\u590D\u9519\u8BEF\u7684\u5217\u8868 (\u53EA\u5728\u5904\u7406\n\t\t\t"display" \u5B57\u6BB5\u671F\u95F4)\n\t{err} == \u65E0\u683C\u5F0F\u7684\u9519\u8BEF\u884C (\u53EA\u5728\u5904\u7406\n\t\t\t"errorline" \u5B57\u6BB5\u671F\u95F4)\n\u8BE5\u5DE5\u5177\u8BBF\u95EE\u4EE5\u4E0B\u5B57\u6BB5\u6765\u786E\u5B9A\u6240\u663E\u793A\u7684\u53CD\u9988:\n\t{display} == \u4E3A\u7247\u6BB5\u4E8B\u4EF6\u663E\u793A\u7684\u6D88\u606F\n\t{errorline} == "errors" \u5B57\u6BB5\u4E2D\u7684\u4E00\u4E2A\u9519\u8BEF\u884C\u7684\u683C\u5F0F\n\t{pre} == \u53CD\u9988\u524D\u7F00 (\u4F5C\u4E3A\u547D\u4EE4\u53CD\u9988\u7684\u5F00\u5934)\n\t{post} == \u53CD\u9988\u540E\u7F00 (\u4F5C\u4E3A\u547D\u4EE4\u53CD\u9988\u7684\u7ED3\u5C3E)\n\t{errorpre} == \u9519\u8BEF\u524D\u7F00 (\u4F5C\u4E3A\u9519\u8BEF\u53CD\u9988\u7684\u5F00\u5934)\n\t{errorpost} == \u9519\u8BEF\u540E\u7F00 (\u4F5C\u4E3A\u9519\u8BEF\u53CD\u9988\u7684\u7ED3\u5C3E)\n\u8FD9\u4E9B\u5B57\u6BB5\u5177\u6709\u9ED8\u8BA4\u8BBE\u7F6E (\u53EF\u8986\u76D6)\u3002\n\u5176\u4E2D <selector> \u662F\u5E94\u7528\u683C\u5F0F\u7684\u4E0A\u4E0B\u6587\u3002\n\u9009\u62E9\u5668\u7ED3\u6784\u662F\u4E00\u4E2A\u7531\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u6784\u6210\u7684\u5217\u8868, \u4F7F\u7528\u8FDE\u5B57\u7B26\u5206\u9694\u3002\n\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u662F\u5355\u4E2A\u9009\u62E9\u5668\u7C7B\u578B\u7684\u503C\u7684\u5217\u8868, \u4F7F\u7528\u9017\u53F7\u5206\u9694\u3002\n\u5982\u679C\u6BCF\u4E2A\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u5339\u914D, \u5219\u9009\u62E9\u5668\u5339\u914D; \u5982\u679C\u5176\u4E2D\u67D0\u4E2A\u503C\n\u5339\u914D, \u5219\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u5339\u914D\u3002\n\ncase \u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u7247\u6BB5\u7684\u7C7B\u578B\u3002\u503C\u5305\u62EC:\n\timport -- \u5BFC\u5165\u58F0\u660E\n\tclass -- \u7C7B\u58F0\u660E\n\tinterface -- \u63A5\u53E3\u58F0\u660E\n\tenum -- \u679A\u4E3E\u58F0\u660E\n\tannotation -- \u6CE8\u91CA\u63A5\u53E3\u58F0\u660E\n\tmethod -- \u65B9\u6CD5\u58F0\u660E -- \u6CE8: {type}==parameter-types\n\tvardecl -- \u4E0D\u5E26\u521D\u59CB\u5316\u7684\u53D8\u91CF\u58F0\u660E\n\tvardecl -- \u5E26\u521D\u59CB\u5316\u7684\u53D8\u91CF\u58F0\u660E\n\texpression -- \u8868\u8FBE\u5F0F -- \u6CE8: \
-{name}==scratch-variable-name\n\tvarvalue -- \u53D8\u91CF\u503C\u8868\u8FBE\u5F0F\n\tassignment -- \u5206\u914D\u53D8\u91CF\n\tstatement -- \u8BED\u53E5\n\u64CD\u4F5C\u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u5BF9\u7247\u6BB5\u6267\u884C\u7684\u64CD\u4F5C\u3002\u503C\u5305\u62EC:\n\tadded -- \u7247\u6BB5\u5DF2\u6DFB\u52A0\n\tmodified -- \u73B0\u6709\u7247\u6BB5\u5DF2\u4FEE\u6539\n\treplaced -- \u73B0\u6709\u7247\u6BB5\u5DF2\u66FF\u6362\u4E3A\u65B0\u7247\u6BB5\n\toverwrote -- \u73B0\u6709\u7247\u6BB5\u5DF2\u8986\u76D6\n\tdropped -- \u7247\u6BB5\u5DF2\u5220\u9664\n\tused -- \u7247\u6BB5\u5728\u4E0D\u80FD\u4F7F\u7528\u7684\u65F6\u5019\u5DF2\u88AB\u4F7F\u7528\nwhen-did-it-occur \u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u8FD9\u662F\u76F4\u63A5\u64CD\u4F5C\u8FD8\u662F\u95F4\u63A5\u64CD\u4F5C\u3002\u503C\u5305\u62EC:\n\tprimary -- \u8F93\u5165\u7684\u7247\u6BB5\n\tupdate -- \u5BF9\u76F8\u5173\u7247\u6BB5\u7684\u66F4\u65B0\nresolution-state \u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u7247\u6BB5\u7684\u89E3\u6790/\u5B9A\u4E49\u72B6\u6001\u3002\u503C\u5305\u62EC:\n\tok -- \u5DF2\u6B63\u786E\u89E3\u6790\n\tdefined -- \u5DF2\u5B9A\u4E49, \u4F46\u5B58\u5728\u53EF\u6062\u590D\u7684\u672A\u89E3\u6790\u5F15\u7528\n\tnotdefined -- \u7531\u4E8E\u5B58\u5728\u53EF\u6062\u590D\u7684\u672A\u89E3\u6790\u5F15\u7528\u800C\u672A\u5B9A\u4E49\nunresolved-count \u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u672A\u89E3\u6790\u5F15\u7528\u7684\u6570\u91CF\u3002\u503C\u5305\u62EC:\n\tunresolved0 -- \u4E0D\u5B58\u5728\u672A\u89E3\u6790\u7684\u540D\u79F0\n\tunresolved1 -- \u4E00\u4E2A\u540D\u79F0\u672A\u89E3\u6790\n\tunresolved2 -- \u4E24\u4E2A\u6216\u66F4\u591A\u540D\u79F0\u672A\u89E3\u6790\nerrors-count \u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u9519\u8BEF\u7684\u6570\u91CF\u3002\u503C\u5305\u62EC:\n\terror0 -- \u65E0\u9519\u8BEF\n\terror1 -- \u4E00\u4E2A\u9519\u8BEF\n\terror2 -- \u4E24\u4E2A\u6216\u66F4\u591A\u9519\u8BEF\n\n\u793A\u4F8B:\n\t/set format myformat action '\u5DF2\u521B\u5EFA' added-primary\n\t/set format myformat action '\u66F4\u65B0\u5DF2\u66FF\u6362' replaced-update\n\t/set format myformat display '{pre}{action} \u7C7B {name}{post}' class-ok\n\t/set format myformat display '{pre}{action} \u53D8\u91CF {name}, \u91CD\u7F6E\u4E3A\u7A7A\u503C{post}' replaced-vardecl,varinit-ok-update\n\n\u8BF7\u6CE8\u610F, \u67D0\u4E2A\u5B57\u6BB5\u7684\u540E\u7EED\u9009\u62E9\u5668\u53EF\u80FD\u4F1A\u8986\u76D6\u90E8\u5206\u6216\u5168\u90E8\u4EE5\u524D\u4F7F\u7528\u7684\u9009\u62E9\u5668 -- \u91C7\u7528\u6700\u540E\u4E00\u4E2A\u9009\u62E9\u5668\n\n\u4E0D\u5E26 <\u683C\u5F0F> \u7684\u683C\u5F0F\u663E\u793A\u5F53\u524D\u683C\u5F0F\u8BBE\u7F6E\u3002\n\u6307\u5B9A <\u6A21\u5F0F> \u65F6, \u5C06\u4EC5\u663E\u793A\u8BE5\u6A21\u5F0F\u7684\u683C\u5F0F\u8BBE\u7F6E\u3002\n\u540C\u65F6\u6307\u5B9A <\u6A21\u5F0F> \u548C <\u5B57\u6BB5> \u65F6, \u5C06\u4EC5\u663E\u793A\u8BE5\u6A21\u5F0F\u548C\u5B57\u6BB5\u7684\n\u683C\u5F0F\u8BBE\u7F6E\u3002\u793A\u4F8B:\n\t/set format myformat\n\u663E\u793A\u6A21\u5F0F myformat \u7684\u683C\u5F0F\u8BBE\u7F6E\n
+{name}==scratch-variable-name\n\tvarvalue -- \u53D8\u91CF\u503C\u8868\u8FBE\u5F0F\n\tassignment -- \u5206\u914D\u53D8\u91CF\n\tstatement -- \u8BED\u53E5\n\u64CD\u4F5C\u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u5BF9\u7247\u6BB5\u6267\u884C\u7684\u64CD\u4F5C\u3002\u503C\u5305\u62EC:\n\tadded -- \u7247\u6BB5\u5DF2\u6DFB\u52A0\n\tmodified -- \u73B0\u6709\u7247\u6BB5\u5DF2\u4FEE\u6539\n\treplaced -- \u73B0\u6709\u7247\u6BB5\u5DF2\u66FF\u6362\u4E3A\u65B0\u7247\u6BB5\n\toverwrote -- \u73B0\u6709\u7247\u6BB5\u5DF2\u8986\u76D6\n\tdropped -- \u7247\u6BB5\u5DF2\u5220\u9664\n\tused -- \u7247\u6BB5\u5728\u4E0D\u80FD\u4F7F\u7528\u7684\u65F6\u5019\u5DF2\u88AB\u4F7F\u7528\nwhen-did-it-occur \u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u8FD9\u662F\u76F4\u63A5\u64CD\u4F5C\u8FD8\u662F\u95F4\u63A5\u64CD\u4F5C\u3002\u503C\u5305\u62EC:\n\tprimary -- \u8F93\u5165\u7684\u7247\u6BB5\n\tupdate -- \u5BF9\u76F8\u5173\u7247\u6BB5\u7684\u66F4\u65B0\nresolution-state \u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u7247\u6BB5\u7684\u89E3\u6790/\u5B9A\u4E49\u72B6\u6001\u3002\u503C\u5305\u62EC:\n\tok -- \u5DF2\u6B63\u786E\u89E3\u6790\n\tdefined -- \u5DF2\u5B9A\u4E49, \u4F46\u5B58\u5728\u53EF\u6062\u590D\u7684\u672A\u89E3\u6790\u5F15\u7528\n\tnotdefined -- \u7531\u4E8E\u5B58\u5728\u53EF\u6062\u590D\u7684\u672A\u89E3\u6790\u5F15\u7528\u800C\u672A\u5B9A\u4E49\nunresolved-count \u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u672A\u89E3\u6790\u5F15\u7528\u7684\u6570\u91CF\u3002\u503C\u5305\u62EC:\n\tunresolved0 -- \u4E0D\u5B58\u5728\u672A\u89E3\u6790\u7684\u540D\u79F0\n\tunresolved1 -- \u4E00\u4E2A\u540D\u79F0\u672A\u89E3\u6790\n\tunresolved2 -- \u4E24\u4E2A\u6216\u66F4\u591A\u540D\u79F0\u672A\u89E3\u6790\nerrors-count \u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u9519\u8BEF\u7684\u6570\u91CF\u3002\u503C\u5305\u62EC:\n\terror0 -- \u65E0\u9519\u8BEF\n\terror1 -- \u4E00\u4E2A\u9519\u8BEF\n\terror2 -- \u4E24\u4E2A\u6216\u66F4\u591A\u9519\u8BEF\n\n\u793A\u4F8B:\n\t/set format mymode action '\u5DF2\u521B\u5EFA' added-primary\n\t/set format mymode action '\u66F4\u65B0\u5DF2\u66FF\u6362' replaced-update\n\t/set format mymode display '{pre}{action} \u7C7B {name}{post}' class-ok\n\t/set format mymode display '{pre}{action} \u53D8\u91CF {name}, \u91CD\u7F6E\u4E3A\u7A7A\u503C{post}' replaced-vardecl,varinit-ok-update\n\n\u8BF7\u6CE8\u610F, \u67D0\u4E2A\u5B57\u6BB5\u7684\u540E\u7EED\u9009\u62E9\u5668\u53EF\u80FD\u4F1A\u8986\u76D6\u90E8\u5206\u6216\u5168\u90E8\u4EE5\u524D\u4F7F\u7528\u7684\u9009\u62E9\u5668 -- \u91C7\u7528\u6700\u540E\u4E00\u4E2A\u9009\u62E9\u5668\n\n\u4E0D\u5E26 <\u683C\u5F0F> \u7684\u683C\u5F0F\u663E\u793A\u5F53\u524D\u683C\u5F0F\u8BBE\u7F6E\u3002\n\u6307\u5B9A <\u6A21\u5F0F> \u65F6, \u5C06\u4EC5\u663E\u793A\u8BE5\u6A21\u5F0F\u7684\u683C\u5F0F\u8BBE\u7F6E\u3002\n\u540C\u65F6\u6307\u5B9A <\u6A21\u5F0F> \u548C <\u5B57\u6BB5> \u65F6, \u5C06\u4EC5\u663E\u793A\u8BE5\u6A21\u5F0F\u548C\u5B57\u6BB5\u7684\n\u683C\u5F0F\u8BBE\u7F6E\u3002\u793A\u4F8B:\n\t/set format mymode\n\u663E\u793A\u6A21\u5F0F mymode \u7684\u683C\u5F0F\u8BBE\u7F6E\n
+
+help.set.truncation.summary = \u8BBE\u7F6E\u663E\u793A\u503C\u7684\u6700\u5927\u957F\u5EA6\u3002
-help.set.truncation = \u8BBE\u7F6E\u663E\u793A\u503C\u7684\u6700\u5927\u957F\u5EA6:\n\n\t/set truncation <\u6A21\u5F0F> <\u957F\u5EA6> <\u9009\u62E9\u5668>...\n\n\u663E\u793A\u5F53\u524D\u622A\u65AD\u8BBE\u7F6E:\n\n\t/set truncation [<\u6A21\u5F0F>]\n\n\u5176\u4E2D <\u6A21\u5F0F> \u662F\u4EE5\u524D\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F\u540D\u79F0 -- \u8BF7\u53C2\u9605 '/help /set mode'\u3002\n\u800C <\u957F\u5EA6> \u662F\u65E0\u7B26\u53F7\u6574\u6570, \u8868\u793A\u6700\u5927\u957F\u5EA6\u3002\n<\u9009\u62E9\u5668> \u53EA\u6709\u5728\u60A8\u5E0C\u671B\u6839\u636E\u4E0A\u4E0B\u6587\u5FAE\u8C03\u503C\u622A\u65AD\u957F\u5EA6\u65F6\u624D\u9700\u8981,\n<\u9009\u62E9\u5668> \u662F\u5728\u5176\u4E2D\u5E94\u7528\u622A\u65AD\u7684\u4E0A\u4E0B\u6587\u3002\n\u9009\u62E9\u5668\u7ED3\u6784\u662F\u4E00\u4E2A\u8FDE\u5B57\u7B26\u5206\u9694\u7684\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u3002\n\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u662F\u4E00\u4E2A\u5305\u542B\u67D0\u79CD\u9009\u62E9\u5668\u7C7B\u578B\u7684\u503C\u7684\u9017\u53F7\u5206\u9694\u5217\u8868\u3002\n\u9009\u62E9\u5668\u5728\u6240\u6709\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u5339\u914D\u65F6\u5339\u914D; \u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\n\u5219\u5728\u5176\u4E2D\u4E00\u4E2A\u503C\u5339\u914D\u65F6\u5339\u914D\u3002\n\n\u4E0B\u9762\u662F\u7528\u4E8E\u622A\u65AD\u7684\u76F8\u5173\u9009\u62E9\u5668\u7C7B\u578B\u3002\n\ncase \u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u7247\u6BB5\u7684\u7C7B\u578B\u3002\u503C\u5305\u62EC:\n\tvardecl -- \u4E0D\u5E26\u521D\u59CB\u5316\u7684\u53D8\u91CF\u58F0\u660E\n\tvarinit -- \u5E26\u521D\u59CB\u5316\u7684\u53D8\u91CF\u58F0\u660E\n\texpression -- \u8868\u8FBE\u5F0F -- \u6CE8: {name}==\u6682\u5B58\u53D8\u91CF\u540D\u79F0\n\tvarvalue -- \u53D8\u91CF\u503C\u8868\u8FBE\u5F0F\n\tassignment -- \u5206\u914D\u53D8\u91CF\n\t\u64CD\u4F5C\u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u5BF9\u7247\u6BB5\u6267\u884C\u7684\u64CD\u4F5C\u3002\u503C\u5305\u62EC:\n\tadded -- \u7247\u6BB5\u5DF2\u6DFB\u52A0\n\tmodified -- \u73B0\u6709\u7247\u6BB5\u5DF2\u4FEE\u6539\n\treplaced -- \u73B0\u6709\u7247\u6BB5\u5DF2\u66FF\u6362\u4E3A\u65B0\u7247\u6BB5\n\u793A\u4F8B:\n\t/set trunc mymode 80\n\t/set truncation mymode 45 expression\n\t/set truncation mymode 0 vardecl-modified,replaced\n\n\u8BF7\u6CE8\u610F, \u67D0\u4E2A\u5B57\u6BB5\u7684\u540E\u7EED\u9009\u62E9\u5668\u53EF\u80FD\u4F1A\u8986\u76D6\u90E8\u5206\u6216\u5168\u90E8\u4EE5\u524D\u4F7F\u7528\u7684\u9009\u62E9\u5668 -- \u91C7\u7528\u6700\u540E\u4E00\u4E2A\u9009\u62E9\u5668\n\n\u4E0D\u5E26 <\u957F\u5EA6> \u7684\u683C\u5F0F\u663E\u793A\u622A\u65AD\u8BBE\u7F6E\u3002\n\u6307\u5B9A <\u6A21\u5F0F> \u65F6, \u5C06\u4EC5\u663E\u793A\u8BE5\u6A21\u5F0F\u7684\u622A\u65AD\u8BBE\u7F6E\u3002\n\u793A\u4F8B:\n\t/set truncation myformat\n\u663E\u793A\u6A21\u5F0F myformat \u7684\u622A\u65AD\u8BBE\u7F6E\n
+help.set.truncation = \u8BBE\u7F6E\u663E\u793A\u503C\u7684\u6700\u5927\u957F\u5EA6:\n\n\t/set truncation <\u6A21\u5F0F> <\u957F\u5EA6> <\u9009\u62E9\u5668>...\n\n\u663E\u793A\u5F53\u524D\u622A\u65AD\u8BBE\u7F6E:\n\n\t/set truncation [<\u6A21\u5F0F>]\n\n\u5176\u4E2D <\u6A21\u5F0F> \u662F\u4EE5\u524D\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F\u540D\u79F0 -- \u8BF7\u53C2\u9605 '/help /set mode'\u3002\n\u800C <\u957F\u5EA6> \u662F\u65E0\u7B26\u53F7\u6574\u6570, \u8868\u793A\u6700\u5927\u957F\u5EA6\u3002\n<\u9009\u62E9\u5668> \u53EA\u6709\u5728\u60A8\u5E0C\u671B\u6839\u636E\u4E0A\u4E0B\u6587\u5FAE\u8C03\u503C\u622A\u65AD\u957F\u5EA6\u65F6\u624D\u9700\u8981,\n<\u9009\u62E9\u5668> \u662F\u5728\u5176\u4E2D\u5E94\u7528\u622A\u65AD\u7684\u4E0A\u4E0B\u6587\u3002\n\u9009\u62E9\u5668\u7ED3\u6784\u662F\u4E00\u4E2A\u8FDE\u5B57\u7B26\u5206\u9694\u7684\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u3002\n\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u662F\u4E00\u4E2A\u5305\u542B\u67D0\u79CD\u9009\u62E9\u5668\u7C7B\u578B\u7684\u503C\u7684\u9017\u53F7\u5206\u9694\u5217\u8868\u3002\n\u9009\u62E9\u5668\u5728\u6240\u6709\u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\u5339\u914D\u65F6\u5339\u914D; \u9009\u62E9\u5668\u7C7B\u578B\u5217\u8868\n\u5219\u5728\u5176\u4E2D\u4E00\u4E2A\u503C\u5339\u914D\u65F6\u5339\u914D\u3002\n\n\u4E0B\u9762\u662F\u7528\u4E8E\u622A\u65AD\u7684\u76F8\u5173\u9009\u62E9\u5668\u7C7B\u578B\u3002\n\ncase \u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u7247\u6BB5\u7684\u7C7B\u578B\u3002\u503C\u5305\u62EC:\n\tvardecl -- \u4E0D\u5E26\u521D\u59CB\u5316\u7684\u53D8\u91CF\u58F0\u660E\n\tvarinit -- \u5E26\u521D\u59CB\u5316\u7684\u53D8\u91CF\u58F0\u660E\n\texpression -- \u8868\u8FBE\u5F0F -- \u6CE8: {name}==\u6682\u5B58\u53D8\u91CF\u540D\u79F0\n\tvarvalue -- \u53D8\u91CF\u503C\u8868\u8FBE\u5F0F\n\tassignment -- \u5206\u914D\u53D8\u91CF\n\t\u64CD\u4F5C\u9009\u62E9\u5668\u7C7B\u578B\u63CF\u8FF0\u4E86\u5BF9\u7247\u6BB5\u6267\u884C\u7684\u64CD\u4F5C\u3002\u503C\u5305\u62EC:\n\tadded -- \u7247\u6BB5\u5DF2\u6DFB\u52A0\n\tmodified -- \u73B0\u6709\u7247\u6BB5\u5DF2\u4FEE\u6539\n\treplaced -- \u73B0\u6709\u7247\u6BB5\u5DF2\u66FF\u6362\u4E3A\u65B0\u7247\u6BB5\n\u793A\u4F8B:\n\t/set trunc mymode 80\n\t/set truncation mymode 45 expression\n\t/set truncation mymode 0 vardecl-modified,replaced\n\n\u8BF7\u6CE8\u610F, \u67D0\u4E2A\u5B57\u6BB5\u7684\u540E\u7EED\u9009\u62E9\u5668\u53EF\u80FD\u4F1A\u8986\u76D6\u90E8\u5206\u6216\u5168\u90E8\u4EE5\u524D\u4F7F\u7528\u7684\u9009\u62E9\u5668 -- \u91C7\u7528\u6700\u540E\u4E00\u4E2A\u9009\u62E9\u5668\n\n\u4E0D\u5E26 <\u957F\u5EA6> \u7684\u683C\u5F0F\u663E\u793A\u622A\u65AD\u8BBE\u7F6E\u3002\n\u6307\u5B9A <\u6A21\u5F0F> \u65F6, \u5C06\u4EC5\u663E\u793A\u8BE5\u6A21\u5F0F\u7684\u622A\u65AD\u8BBE\u7F6E\u3002\n\u793A\u4F8B:\n\t/set truncation mymode\n\u663E\u793A\u6A21\u5F0F mymode \u7684\u622A\u65AD\u8BBE\u7F6E\n
+
+help.set.feedback.summary = \u8BBE\u7F6E\u7528\u4E8E\u63CF\u8FF0\u4E3A\u6240\u8F93\u5165\u7247\u6BB5\u548C\u547D\u4EE4\u663E\u793A\u7684\u53CD\u9988\u7684\u53CD\u9988\u6A21\u5F0F\u3002
help.set.feedback = \u8BBE\u7F6E\u53CD\u9988\u6A21\u5F0F, \u8BE5\u6A21\u5F0F\u63CF\u8FF0\u4E3A\u6240\u8F93\u5165\u7684\u7247\u6BB5\u548C\u547D\u4EE4\u663E\u793A\u7684\u53CD\u9988:\n\n\t/set feedback [-retain] <\u6A21\u5F0F>\n\n\u4FDD\u7559\u5F53\u524D\u53CD\u9988\u6A21\u5F0F\u4EE5\u4FBF\u5728\u5C06\u6765\u4F1A\u8BDD\u4E2D\u4F7F\u7528:\n\n\t/set feedback -retain\n\n\u663E\u793A\u53CD\u9988\u6A21\u5F0F\u5E76\u5217\u51FA\u53EF\u7528\u6A21\u5F0F:\n\n\t/set feedback\n\n\u5176\u4E2D <\u6A21\u5F0F> \u662F\u4EE5\u524D\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F\u540D\u79F0\u3002\n\u60A8\u53EF\u4EE5\u4F7F\u7528\u8DB3\u591F\u591A\u7684\u5B57\u6BCD\u6765\u63D0\u4F9B\u552F\u4E00\u7684\u540D\u79F0\u3002\n\u53EF\u4EE5\u6DFB\u52A0\u7528\u6237\u5B9A\u4E49\u7684\u6A21\u5F0F, \u5177\u4F53\u8BF7\u53C2\u9605 '/help /set mode'\n\n\u4F7F\u7528 -retain \u9009\u9879\u65F6, \u5C06\u5728\u672C\u6B21\u8FD0\u884C\u548C\u5C06\u6765\u8FD0\u884C jshell \u5DE5\u5177\u65F6\n\u4F7F\u7528\u6B64\u8BBE\u7F6E\u3002\n\n\u4E0D\u5E26 <\u6A21\u5F0F> \u7684\u683C\u5F0F\u6216 -retain \u663E\u793A\u5F53\u524D\u53CD\u9988\u6A21\u5F0F\u548C\u53EF\u7528\u6A21\u5F0F\u3002\n
-help.set.mode = \u521B\u5EFA\u7528\u6237\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F, \u4E5F\u53EF\u4EE5\u9009\u62E9\u4ECE\u73B0\u6709\u6A21\u5F0F\u590D\u5236:\n\n\t/set mode <\u65B0\u6A21\u5F0F> [<\u65E7\u6A21\u5F0F>] (-command|-quiet)\n\n\u4FDD\u7559\u7528\u6237\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F\u4EE5\u4FBF\u5728\u5C06\u6765\u4F1A\u8BDD\u4E2D\u4F7F\u7528:\n\n\t/set mode -retain <\u6A21\u5F0F>\n\n\u5220\u9664\u7528\u6237\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F:\n\n\t/set mode -delete [-retain] <\u6A21\u5F0F>\n\n\u663E\u793A\u53CD\u9988\u6A21\u5F0F\u8BBE\u7F6E:\n\n\t/set mode [<\u6A21\u5F0F>]\n\n\u5176\u4E2D <\u65B0\u6A21\u5F0F> \u662F\u60A8\u5E0C\u671B\u521B\u5EFA\u7684\u6A21\u5F0F\u7684\u540D\u79F0\u3002\n\u5176\u4E2D <\u65E7\u6A21\u5F0F> \u662F\u73B0\u6709\u53CD\u9988\u6A21\u5F0F\u7684\u540D\u79F0\u3002\n\u5176\u4E2D <\u6A21\u5F0F> \u662F\u73B0\u6709\u53CD\u9988\u6A21\u5F0F\u7684\u540D\u79F0\u3002\n\n\u5982\u679C\u5B58\u5728 <\u65E7\u6A21\u5F0F>, \u5176\u8BBE\u7F6E\u5C06\u4F1A\u590D\u5236\u5230\u65B0\u6A21\u5F0F\u3002\n\n\u6A21\u5F0F\u4E3A\u6240\u8F93\u5165\u7247\u6BB5\u63D0\u4F9B\u7684\u53CD\u9988\u7531 '/set format' \u8BBE\u7F6E\u786E\u5B9A\u3002\n\u4E0D\u8FC7, \u5BF9\u4E8E\u8F93\u5165\u7684\u547D\u4EE4, \u53CD\u9988\u7684\u542F\u7528\u6216\u7981\u7528\u662F\u6839\u636E\u521B\u5EFA\u6A21\u5F0F\u65F6\n\u4F7F\u7528\u7684\u9009\u9879\u786E\u5B9A\u7684\u3002\u5FC5\u987B\u6307\u5B9A\u9009\u9879 '-command' \u6216\n\u9009\u9879 '-quiet'\u3002\u5982\u679C\u4F7F\u7528 '-command', \u5219\u5728\u65B0\u6A21\u5F0F\n\u4E0B\u65F6\u4F1A\u663E\u793A\u4FE1\u606F\u6027\u548C\u9A8C\u8BC1\u547D\u4EE4\u53CD\u9988\u3002\u5982\u679C\u4F7F\u7528 '-quiet',\n\u5219\u547D\u4EE4\u53EA\u63D0\u4F9B\u57FA\u672C\u53CD\u9988 (\u4F8B\u5982, \u9519\u8BEF)\u3002\n\n\u4E00\u65E6\u521B\u5EFA\u65B0\u6A21\u5F0F, \u5373\u53EF\u4F7F\u7528 '/set format', '/set prompt' \u548C '/set truncation'\n\u8FDB\u884C\u914D\u7F6E\u3002\u4F7F\u7528 '/set feedback' \u53EF\u4F7F\u7528\u65B0\u6A21\u5F0F\u3002\n\n\u4F7F\u7528 -retain \u9009\u9879 (\u4E0D\u5E26 '-delete' \u9009\u9879) \u65F6, \u5C06\u5B58\u50A8\n\u6A21\u5F0F (\u5305\u62EC\u5176\u5F53\u524D\u63D0\u793A, \u683C\u5F0F\u548C\u622A\u65AD\u8BBE\u7F6E) \u4EE5\u4FBF\u5728\u5C06\u6765\u8FD0\u884C\njshell \u5DE5\u5177\u65F6\u4F7F\u7528\u3002\u5982\u679C\u4E0D\u4F7F\u7528 retain, \u5219\u4EC5\u5728\u5F53\u524D\u4F1A\u8BDD\n\u4E2D\u5B9A\u4E49\u6A21\u5F0F\u3002\u5728\u66F4\u65B0\u6A21\u5F0F\u7684\u8BBE\u7F6E\u4E4B\u540E, \u518D\u6B21\u4FDD\u7559\u6A21\u5F0F\u4EE5\u4FBF\u5728\n\u5404\u4E2A\u4F1A\u8BDD\u4E4B\u95F4\u4FDD\u7559\u66F4\u65B0\u3002\n\n\u4EC5\u4F7F\u7528 '-delete' \u9009\u9879\u65F6, \u5C06\u4ECE\u5F53\u524D\u4F1A\u8BDD\u4E2D\u5220\u9664\u6A21\u5F0F\u3002\n\u540C\u65F6\u4F7F\u7528 '-retain' \u548C '-delete' \u65F6, \u5C06\u4ECE\u5F53\u524D\u4F1A\u8BDD\u548C\n\u5C06\u6765\u4F1A\u8BDD\u4E2D\u5220\u9664\u6A21\u5F0F\u3002\n\n\u4F7F\u7528\u4E0D\u5E26\u9009\u9879\u7684\u683C\u5F0F\u65F6, \u5C06\u663E\u793A\u6A21\u5F0F\u8BBE\u7F6E\u3002\n\u6307\u5B9A <\u6A21\u5F0F> \u65F6, \u5C06\u4EC5\u663E\u793A\u8BE5\u6A21\u5F0F\u7684\u6A21\u5F0F\u8BBE\u7F6E\u3002\n\u6CE8: \u6A21\u5F0F\u8BBE\u7F6E\u5305\u62EC\u63D0\u793A, \u683C\u5F0F\u548C\u622A\u65AD\u7684\n\u8BBE\u7F6E\u3002\n\u793A\u4F8B:\n\t/set mode myformat\n\n\u663E\u793A\u6A21\u5F0F myformat \u7684\u6A21\u5F0F, \u63D0\u793A, \u683C\u5F0F\u548C\u622A\u65AD\u8BBE\u7F6E
+help.set.mode.summary = \u521B\u5EFA\u7528\u6237\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F, \u53EF\u4EE5\u9009\u62E9\u4ECE\u73B0\u6709\u6A21\u5F0F\u590D\u5236\u3002
+
+help.set.mode = \u521B\u5EFA\u7528\u6237\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F, \u4E5F\u53EF\u4EE5\u9009\u62E9\u4ECE\u73B0\u6709\u6A21\u5F0F\u590D\u5236:\n\n\t/set mode <\u65B0\u6A21\u5F0F> [<\u65E7\u6A21\u5F0F>] (-command|-quiet)\n\n\u4FDD\u7559\u7528\u6237\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F\u4EE5\u4FBF\u5728\u5C06\u6765\u4F1A\u8BDD\u4E2D\u4F7F\u7528:\n\n\t/set mode -retain <\u6A21\u5F0F>\n\n\u5220\u9664\u7528\u6237\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F:\n\n\t/set mode -delete [-retain] <\u6A21\u5F0F>\n\n\u663E\u793A\u53CD\u9988\u6A21\u5F0F\u8BBE\u7F6E:\n\n\t/set mode [<\u6A21\u5F0F>]\n\n\u5176\u4E2D <\u65B0\u6A21\u5F0F> \u662F\u60A8\u5E0C\u671B\u521B\u5EFA\u7684\u6A21\u5F0F\u7684\u540D\u79F0\u3002\n\u5176\u4E2D <\u65E7\u6A21\u5F0F> \u662F\u73B0\u6709\u53CD\u9988\u6A21\u5F0F\u7684\u540D\u79F0\u3002\n\u5176\u4E2D <\u6A21\u5F0F> \u662F\u73B0\u6709\u53CD\u9988\u6A21\u5F0F\u7684\u540D\u79F0\u3002\n\n\u5982\u679C\u5B58\u5728 <\u65E7\u6A21\u5F0F>, \u5176\u8BBE\u7F6E\u5C06\u4F1A\u590D\u5236\u5230\u65B0\u6A21\u5F0F\u3002\n\n\u6A21\u5F0F\u4E3A\u6240\u8F93\u5165\u7247\u6BB5\u63D0\u4F9B\u7684\u53CD\u9988\u7531 '/set format' \u8BBE\u7F6E\u786E\u5B9A\u3002\n\u4E0D\u8FC7, \u5BF9\u4E8E\u8F93\u5165\u7684\u547D\u4EE4, \u53CD\u9988\u7684\u542F\u7528\u6216\u7981\u7528\u662F\u6839\u636E\u521B\u5EFA\u6A21\u5F0F\u65F6\n\u4F7F\u7528\u7684\u9009\u9879\u786E\u5B9A\u7684\u3002\u5FC5\u987B\u6307\u5B9A\u9009\u9879 '-command' \u6216\n\u9009\u9879 '-quiet'\u3002\u5982\u679C\u4F7F\u7528 '-command', \u5219\u5728\u65B0\u6A21\u5F0F\n\u4E0B\u65F6\u4F1A\u663E\u793A\u4FE1\u606F\u6027\u548C\u9A8C\u8BC1\u547D\u4EE4\u53CD\u9988\u3002\u5982\u679C\u4F7F\u7528 '-quiet',\n\u5219\u547D\u4EE4\u53EA\u63D0\u4F9B\u57FA\u672C\u53CD\u9988 (\u4F8B\u5982, \u9519\u8BEF)\u3002\n\n\u4E00\u65E6\u521B\u5EFA\u65B0\u6A21\u5F0F, \u5373\u53EF\u4F7F\u7528 '/set format', '/set prompt' \u548C '/set truncation'\n\u8FDB\u884C\u914D\u7F6E\u3002\u4F7F\u7528 '/set feedback' \u53EF\u4F7F\u7528\u65B0\u6A21\u5F0F\u3002\n\n\u4F7F\u7528 -retain \u9009\u9879 (\u4E0D\u5E26 '-delete' \u9009\u9879) \u65F6, \u5C06\u5B58\u50A8\n\u6A21\u5F0F (\u5305\u62EC\u5176\u5F53\u524D\u63D0\u793A, \u683C\u5F0F\u548C\u622A\u65AD\u8BBE\u7F6E) \u4EE5\u4FBF\u5728\u5C06\u6765\u8FD0\u884C\njshell \u5DE5\u5177\u65F6\u4F7F\u7528\u3002\u5982\u679C\u4E0D\u4F7F\u7528 retain, \u5219\u4EC5\u5728\u5F53\u524D\u4F1A\u8BDD\n\u4E2D\u5B9A\u4E49\u6A21\u5F0F\u3002\u5728\u66F4\u65B0\u6A21\u5F0F\u7684\u8BBE\u7F6E\u4E4B\u540E, \u518D\u6B21\u4FDD\u7559\u6A21\u5F0F\u4EE5\u4FBF\u5728\n\u5404\u4E2A\u4F1A\u8BDD\u4E4B\u95F4\u4FDD\u7559\u66F4\u65B0\u3002\n\n\u4EC5\u4F7F\u7528 '-delete' \u9009\u9879\u65F6, \u5C06\u4ECE\u5F53\u524D\u4F1A\u8BDD\u4E2D\u5220\u9664\u6A21\u5F0F\u3002\n\u540C\u65F6\u4F7F\u7528 '-retain' \u548C '-delete' \u65F6, \u5C06\u4ECE\u5F53\u524D\u4F1A\u8BDD\u548C\n\u5C06\u6765\u4F1A\u8BDD\u4E2D\u5220\u9664\u6A21\u5F0F\u3002\n\n\u4F7F\u7528\u4E0D\u5E26\u9009\u9879\u7684\u683C\u5F0F\u65F6, \u5C06\u663E\u793A\u6A21\u5F0F\u8BBE\u7F6E\u3002\n\u6307\u5B9A <\u6A21\u5F0F> \u65F6, \u5C06\u4EC5\u663E\u793A\u8BE5\u6A21\u5F0F\u7684\u6A21\u5F0F\u8BBE\u7F6E\u3002\n\u6CE8: \u6A21\u5F0F\u8BBE\u7F6E\u5305\u62EC\u63D0\u793A, \u683C\u5F0F\u548C\u622A\u65AD\u7684\n\u8BBE\u7F6E\u3002\n\u793A\u4F8B:\n\t/set mode mymode\n\n\u663E\u793A\u6A21\u5F0F mymode \u7684\u6A21\u5F0F, \u63D0\u793A, \u683C\u5F0F\u548C\u622A\u65AD\u8BBE\u7F6E
-help.set.prompt = \u8BBE\u7F6E\u63D0\u793A\u3002\u5FC5\u987B\u540C\u65F6\u8BBE\u7F6E\u6B63\u5E38\u63D0\u793A\u548C\u66F4\u591A\u63D0\u793A:\n\n\t/set prompt <\u6A21\u5F0F> "<\u63D0\u793A>" "<\u66F4\u591A\u63D0\u793A>"\n\n\u663E\u793A\u6B63\u5E38\u63D0\u793A\u548C\u66F4\u591A\u63D0\u793A:\n\n\t/set prompt [<\u6A21\u5F0F>]\n\n\u5176\u4E2D <\u6A21\u5F0F> \u662F\u4EE5\u524D\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F\u540D\u79F0\u3002\n\u800C <\u63D0\u793A> \u548C <\u66F4\u591A\u63D0\u793A> \u662F\u4F5C\u4E3A\u8F93\u5165\u63D0\u793A\u8F93\u51FA\u7684\u5E26\u5F15\u53F7\u7684\u5B57\u7B26\u4E32;\n\u5B83\u4EEC\u5747\u53EF\u9009\u62E9\u6027\u5730\u5305\u542B '%%s', \u8BE5\u53D8\u91CF\u5C06\u88AB\u66FF\u6362\u4E3A\u4E0B\u4E00\u4E2A\u7247\u6BB5 ID --\n\u8BF7\u6CE8\u610F, \u53EF\u80FD\u65E0\u6CD5\u5411\u6240\u8F93\u5165\u5185\u5BB9\u5206\u914D\u8BE5 ID, \u4F8B\u5982\u8FD9\u53EF\u80FD\u662F\u4E00\u4E2A\u9519\u8BEF\u6216\u547D\u4EE4\u3002\n\u66F4\u591A\u63D0\u793A\u5728\u591A\u884C\u7247\u6BB5\u7684\u7B2C\u4E8C\u884C\u4EE5\u53CA\u540E\u7EED\u884C\u4E0A\u4F7F\u7528\u3002\n\n\u4E0D\u5E26 <\u63D0\u793A> \u7684\u683C\u5F0F\u663E\u793A\u5F53\u524D\u8BBE\u7F6E\u7684\u63D0\u793A\u3002\n\u6307\u5B9A <\u6A21\u5F0F> \u65F6, \u5C06\u4EC5\u663E\u793A\u8BE5\u6A21\u5F0F\u7684\u63D0\u793A\u3002\n\u793A\u4F8B:\n\t/set prompt myformat\n\u663E\u793A\u4E3A\u6A21\u5F0F myformat \u8BBE\u7F6E\u7684\u63D0\u793A\n
+help.set.prompt.summary = \u8BBE\u7F6E\u63D0\u793A\u3002
+
+help.set.prompt = \u8BBE\u7F6E\u63D0\u793A\u3002\u5FC5\u987B\u540C\u65F6\u8BBE\u7F6E\u6B63\u5E38\u63D0\u793A\u548C\u66F4\u591A\u63D0\u793A:\n\n\t/set prompt <\u6A21\u5F0F> "<\u63D0\u793A>" "<\u66F4\u591A\u63D0\u793A>"\n\n\u663E\u793A\u6B63\u5E38\u63D0\u793A\u548C\u66F4\u591A\u63D0\u793A:\n\n\t/set prompt [<\u6A21\u5F0F>]\n\n\u5176\u4E2D <\u6A21\u5F0F> \u662F\u4EE5\u524D\u5B9A\u4E49\u7684\u53CD\u9988\u6A21\u5F0F\u540D\u79F0\u3002\n\u800C <\u63D0\u793A> \u548C <\u66F4\u591A\u63D0\u793A> \u662F\u4F5C\u4E3A\u8F93\u5165\u63D0\u793A\u8F93\u51FA\u7684\u5E26\u5F15\u53F7\u7684\u5B57\u7B26\u4E32;\n\u5B83\u4EEC\u5747\u53EF\u9009\u62E9\u6027\u5730\u5305\u542B '%%s', \u8BE5\u53D8\u91CF\u5C06\u88AB\u66FF\u6362\u4E3A\u4E0B\u4E00\u4E2A\u7247\u6BB5 ID --\n\u8BF7\u6CE8\u610F, \u53EF\u80FD\u65E0\u6CD5\u5411\u6240\u8F93\u5165\u5185\u5BB9\u5206\u914D\u8BE5 ID, \u4F8B\u5982\u8FD9\u53EF\u80FD\u662F\u4E00\u4E2A\u9519\u8BEF\u6216\u547D\u4EE4\u3002\n\u66F4\u591A\u63D0\u793A\u5728\u591A\u884C\u7247\u6BB5\u7684\u7B2C\u4E8C\u884C\u4EE5\u53CA\u540E\u7EED\u884C\u4E0A\u4F7F\u7528\u3002\n\n\u4E0D\u5E26 <\u63D0\u793A> \u7684\u683C\u5F0F\u663E\u793A\u5F53\u524D\u8BBE\u7F6E\u7684\u63D0\u793A\u3002\n\u6307\u5B9A <\u6A21\u5F0F> \u65F6, \u5C06\u4EC5\u663E\u793A\u8BE5\u6A21\u5F0F\u7684\u63D0\u793A\u3002\n\u793A\u4F8B:\n\t/set prompt mymode\n\u663E\u793A\u4E3A\u6A21\u5F0F mymode \u8BBE\u7F6E\u7684\u63D0\u793A\n
+
+help.set.editor.summary =\u6307\u5B9A\u4E3A /edit \u547D\u4EE4\u542F\u52A8\u7684\u547D\u4EE4\u3002
help.set.editor =\u6307\u5B9A\u8981\u4E3A /edit \u547D\u4EE4\u542F\u52A8\u7684\u547D\u4EE4:\n\n\t/set editor [-retain] [-wait] <\u547D\u4EE4>\n\n\t/set editor [-retain] -default\n\n\t/set editor [-retain] -delete\n\n\u4FDD\u7559\u5F53\u524D\u7F16\u8F91\u5668\u8BBE\u7F6E\u4EE5\u4FBF\u5728\u5C06\u6765\u4F1A\u8BDD\u4E2D\u4F7F\u7528:\n\n\t/set editor -retain\n\n\u663E\u793A\u8981\u4E3A /edit \u547D\u4EE4\u542F\u52A8\u7684\u547D\u4EE4:\n\n\t/set editor\n\n<\u547D\u4EE4> \u662F\u4E0E\u64CD\u4F5C\u7CFB\u7EDF\u76F8\u5173\u7684\u5B57\u7B26\u4E32\u3002\n<\u547D\u4EE4> \u53EF\u4EE5\u5305\u542B\u7528\u7A7A\u683C\u5206\u9694\u7684\u53C2\u6570 (\u4F8B\u5982\u6807\u8BB0)\n\n\u5982\u679C\u6307\u5B9A\u4E86 -default \u9009\u9879, \u5C06\u4F7F\u7528\u5185\u7F6E\u9ED8\u8BA4\u7F16\u8F91\u5668\u3002\n\n\u5982\u679C\u6307\u5B9A\u4E86 -delete \u9009\u9879, \u5C06\u5FFD\u7565\u4EE5\u524D\u7684\u8BBE\u7F6E -- \u542F\u52A8\njshell \u5DE5\u5177\u65F6\u5C06\u521D\u59CB\u5316\u7F16\u8F91\u5668\u8BBE\u7F6E\u3002\u5177\u4F53\u6765\u8BF4, \u5982\u679C\u5B58\u5728\n\u4FDD\u7559\u7684\u8BBE\u7F6E, \u5C06\u4F7F\u7528\u4FDD\u7559\u7684\u8BBE\u7F6E (\u9664\u975E\u540C\u65F6\u6307\u5B9A -retain \u548C -delete --\n\u8FD9\u5C06\u5220\u9664\u4FDD\u7559\u7684\u8BBE\u7F6E), \u5982\u679C\u8BBE\u7F6E\u4E86\u4EE5\u4E0B\u67D0\u4E2A\u73AF\u5883\u53D8\u91CF, \n\u5C06\u4F7F\u7528\u5B83: JSHELLEDITOR, VISUAL \u6216 EDITOR (\u6309\u6B64\u987A\u5E8F)\u3002\u5426\u5219\u5C06\u4F7F\u7528\n\u5185\u7F6E\u9ED8\u8BA4\u7F16\u8F91\u5668\u3002\n\n\u5982\u679C\u6307\u5B9A\u4E86 <\u547D\u4EE4>, \u5B83\u5C06\u7528\u4F5C\u5916\u90E8\u7F16\u8F91\u5668\u3002<\u547D\u4EE4>\n\u7531\u7A0B\u5E8F\u53CA\u96F6\u4E2A\u6216\u591A\u4E2A\u7A0B\u5E8F\u53C2\u6570\u7EC4\u6210\u3002\u4F7F\u7528 <\u547D\u4EE4>\n\u65F6, \u8981\u7F16\u8F91\u7684\u4E34\u65F6\u6587\u4EF6\u5C06\u4F5C\u4E3A\u6700\u540E\u4E00\u4E2A\u53C2\u6570\u9644\u52A0\u3002\n\u901A\u5E38, \u7F16\u8F91\u6A21\u5F0F\u5C06\u6301\u7EED\u5230\u9000\u51FA\u5916\u90E8\u7F16\u8F91\u5668\u4E3A\u6B62\u3002\u67D0\u4E9B\u5916\u90E8\u7F16\u8F91\u5668\n\u5C06\u7ACB\u5373\u9000\u51FA (\u4F8B\u5982, \u5982\u679C\u9000\u51FA\u7F16\u8F91\u7A97\u53E3), \u5E94\u4F7F\u7528\u5916\u90E8\u7F16\u8F91\u5668\n\u6807\u8BB0\u963B\u6B62\u7ACB\u5373\u9000\u51FA, \u6216\u8005\u4F7F\u7528 -wait \u9009\u9879\n\u63D0\u793A\u7528\u6237\u6307\u793A\u4F55\u65F6\u5E94\u7ED3\u675F\u7F16\u8F91\u6A21\u5F0F\u3002\n\n\u6CE8: \u5728\u7F16\u8F91\u6A21\u5F0F\u4E0B, \u4E0D\u4F1A\u663E\u793A\u4EFB\u4F55\u547D\u4EE4\u8F93\u5165\u3002\u9000\u51FA\u7F16\u8F91\u6A21\u5F0F\u540E, \n\u5C06\u4E0D\u4F1A\u663E\u793A\u5BF9\u7F16\u8F91\u7684\u7247\u6BB5\u6240\u505A\u7684\u4EFB\u4F55\u66F4\u6539\u3002\n\n\u4F7F\u7528 -retain \u9009\u9879\u65F6, \u5C06\u5728\u672C\u6B21\u8FD0\u884C\u548C\u5C06\u6765\u8FD0\u884C jshell \u5DE5\u5177\u65F6\n\u4F7F\u7528\u8BE5\u8BBE\u7F6E\u3002\n\n\u4E0D\u5E26 <\u547D\u4EE4> \u6216\u9009\u9879\u7684\u683C\u5F0F\u663E\u793A\u7F16\u8F91\u5668\u8BBE\u7F6E\u3002\n
+help.set.start.summary =\u8BBE\u7F6E\u542F\u52A8\u914D\u7F6E\u3002
+
help.set.start =\u8BBE\u7F6E\u542F\u52A8\u914D\u7F6E -- \u542F\u52A8\u65F6\u8BFB\u53D6\u7684\u7247\u6BB5\u548C\u547D\u4EE4\u5E8F\u5217:\n\n\t/set start [-retain] <\u6587\u4EF6>...\n\n\t/set start [-retain] -default\n\n\t/set start [-retain] -none\n\n\u4FDD\u7559\u542F\u52A8\u914D\u7F6E\u4EE5\u4FBF\u5728\u5C06\u6765\u4F1A\u8BDD\u4E2D\u4F7F\u7528:\n\n\t/set start -retain\n\n\u663E\u793A\u542F\u52A8\u8BBE\u7F6E:\n\n\t/set start\n\n\u5728\u6B64\u4F1A\u8BDD\u4E2D\u4F7F\u7528 /reset, /reload \u6216 /env \u547D\u4EE4\u65F6,\n\u6307\u5B9A <\u6587\u4EF6> \u7684\u5185\u5BB9\u5C06\u6210\u4E3A\u4F7F\u7528\u7684\u542F\u52A8\u7247\u6BB5\u548C\u547D\u4EE4\u3002\n\u5982\u679C\u6539\u4E3A\u6307\u5B9A -default \u9009\u9879, \u5219\u5C06\u4F7F\u7528\u9884\u5B9A\u4E49\u7684\n\u542F\u52A8\u5BFC\u5165\u7247\u6BB5\u3002\n\u5982\u679C\u4F7F\u7528 -none \u9009\u9879, \u5219\u542F\u52A8\u8BBE\u7F6E\u5C06\u4E3A\u7A7A -- \u5C06\u4E0D\u4F7F\u7528\n\u542F\u52A8\u7247\u6BB5\u6216\u547D\u4EE4\n\u6B64\u547D\u4EE4\u5BF9\u4E8E\u6D4B\u8BD5\u542F\u52A8\u8BBE\u7F6E\u975E\u5E38\u6709\u7528\u3002\u8981\u4FDD\u7559\u8FD9\u4E9B\u5185\u5BB9\n\u4EE5\u4FBF\u5C06\u6765\u8FD0\u884C jshell \u5DE5\u5177\u65F6\u4F7F\u7528, \u8BF7\u4F7F\u7528\u547D\u4EE4:\n\t/set start -retain\n\n\u4F7F\u7528 -retain \u9009\u9879\u65F6, \u5C06\u5728\u672C\u6B21\u8FD0\u884C\u548C\u5C06\u6765\n\u8FD0\u884C jshell \u5DE5\u5177\u65F6\u4F7F\u7528\u8BE5\u8BBE\u7F6E\u3002\n\n\u4E0D\u5E26 <\u6587\u4EF6> \u6216\u9009\u9879\u7684\u683C\u5F0F\u663E\u793A\u542F\u52A8\u8BBE\u7F6E\u3002\n\u6CE8: \u5982\u679C\u542F\u52A8\u8BBE\u7F6E\u6700\u540E\u4E00\u6B21\u662F\u4ECE\u6587\u4EF6\u8BBE\u7F6E\u7684, \u5219\u4F1A\u968F\n'set start' \u547D\u4EE4 (\u540E\u8DDF\u6587\u4EF6\u5185\u5BB9) \u4E00\u8D77\u663E\u793A\u6B64\u5185\u5BB9\u3002\n\n<\u6587\u4EF6> \u53EF\u4EE5\u662F\u64CD\u4F5C\u7CFB\u7EDF\u6587\u4EF6\u540D, \u4E5F\u53EF\u662F\u9884\u5B9A\u4E49\u7684\n\u542F\u52A8\u6587\u4EF6\u540D\u4E4B\u4E00: DEFAULT, PRINTING, \u6216 JAVASE\u3002\n\u8FD9\u4E9B\u9879\u7684\u8BF4\u660E\u5206\u522B\u5982\u4E0B: \u9ED8\u8BA4\u5BFC\u5165\u7247\u6BB5 (\u5982 -default \u6240\u4F7F\u7528\u7684),\nprint(), println() \u548C printf() \u65B9\u6CD5\u7247\u6BB5\u7684\u5B9A\u4E49, \u6216\n\u6240\u6709 Java SE \u7A0B\u5E8F\u5305\u7684\u5BFC\u5165\u9879\u3002\n\u53EF\u4EE5\u6307\u5B9A\u591A\u4E2A <\u6587\u4EF6>, \u4F8B\u5982:\n\n\t/set start -retain DEFAULT PRINTING
startup.feedback = /set mode verbose -command \n\n/set prompt verbose '\\njshell> ' ' ...> ' \n\n/set format verbose pre '| ' \n/set format verbose post '%n' \n/set format verbose errorpre '| ' \n/set format verbose errorpost '%n' \n\n/set format verbose errorline '{post}{pre} {err}' \n\n/set format verbose action '\u5DF2\u521B\u5EFA' added-primary \n/set format verbose action '\u5DF2\u4FEE\u6539' modified-primary \n/set format verbose action '\u5DF2\u66FF\u6362' replaced-primary \n/set format verbose action '\u5DF2\u8986\u76D6' overwrote-primary \n/set format verbose action '\u5DF2\u5220\u9664' dropped-primary \n/set format verbose action ' \u66F4\u65B0\u5DF2\u521B\u5EFA' added-update \n/set format verbose action ' \u66F4\u65B0\u5DF2\u4FEE\u6539' modified-update \n/set format verbose action ' \u66F4\u65B0\u5DF2\u66FF\u6362' replaced-update \n/set format verbose action ' \u66F4\u65B0\u5DF2\u8986\u76D6' overwrote-update \n/set format verbose action ' \u66F4\u65B0\u5DF2\u5220\u9664' dropped-update \n\n/set format verbose until ', \u4E0D\u8FC7, \u5B83\u65E0\u6CD5\u5B9E\u4F8B\u5316\u6216\u8005\u5176\u65B9\u6CD5\u65E0\u6CD5\u8C03\u7528, \u76F4\u81F3' defined-class-primary \n/set format verbose until ', \u4E0D\u8FC7, \u5176\u65B9\u6CD5\u65E0\u6CD5\u8C03\u7528, \u76F4\u81F3' defined-interface-primary \n/set format verbose until ', \u4E0D\u8FC7, \u5B83\u65E0\u6CD5\u4F7F\u7528, \u76F4\u81F3' defined-enum,annotation-primary \n/set format verbose until ', \u4E0D\u8FC7, \u5B83\u65E0\u6CD5\u8C03\u7528, \u76F4\u81F3' defined-method-primary \n/set format verbose until ', \u4E0D\u8FC7, \u5B83\u65E0\u6CD5\u5F15\u7528, \u76F4\u81F3' notdefined-primary \n/set format verbose until ' \u5B83\u65E0\u6CD5\u5B9E\u4F8B\u5316\u6216\u8005\u5176\u65B9\u6CD5\u65E0\u6CD5\u8C03\u7528, \u76F4\u81F3' defined-class-update \n/set format verbose until ' \u5176\u65B9\u6CD5\u65E0\u6CD5\u8C03\u7528, \u76F4\u81F3' defined-interface-update \n/set format verbose until ' \u5B83\u65E0\u6CD5\u8C03\u7528, \u76F4\u81F3' defined-method-update \n/set format verbose until ' \u5B83\u65E0\u6CD5\u5F15\u7528, \u76F4\u81F3' notdefined-update \n\n/set format verbose unrerr '{unresolved} \u5DF2\u58F0\u660E' unresolved1-error0 \n/set format verbose unrerr '{unresolved} \u5DF2\u58F0\u660E' unresolved2-error0 \n/set format verbose unrerr ' \u6B64\u9519\u8BEF\u5DF2\u66F4\u6B63: {errors}' unresolved0-error1 \n/set format verbose unrerr '{unresolved} \u5DF2\u58F0\u660E, \u5E76\u4E14\u6B64\u9519\u8BEF\u5DF2\u66F4\u6B63: {errors}' unresolved1-error1 \n/set format verbose unrerr '{unresolved} \u5DF2\u58F0\u660E, \u5E76\u4E14\u6B64\u9519\u8BEF\u5DF2\u66F4\u6B63: {errors}' unresolved2-error1 \n/set format verbose unrerr ' \u8FD9\u4E9B\u9519\u8BEF\u5DF2\u66F4\u6B63: {errors}' unresolved0-error2 \n/set format verbose unrerr '{unresolved} \u5DF2\u58F0\u660E\u5E76\u4E14\u8FD9\u4E9B\u9519\u8BEF\u5DF2\u66F4\u6B63: {errors}' unresolved1-error2 \n/set format verbose unrerr '{unresolved} \u5DF2\u58F0\u660E\u5E76\u4E14\u8FD9\u4E9B\u9519\u8BEF\u5DF2\u66F4\u6B63: {errors}' unresolved2-error2 \n\n/set format verbose resolve '{until}{unrerr}' defined,notdefined-added,modified,replaced,used \n\n/set format verbose typeKind '\u7C7B' class \n/set format verbose typeKind '\u63A5\u53E3' interface \n/set format verbose typeKind '\u679A\u4E3E' enum \n/set format verbose typeKind '\u6CE8\u91CA\u63A5\u53E3' annotation \
\n\n/set format verbose result '{name} ==> {value}{post}' added,modified,replaced-ok-primary \n\n/set format verbose display '{result}{pre}\u5DF2\u521B\u5EFA\u6682\u5B58\u53D8\u91CF {name} : {type}{post}' expression-added,modified,replaced-primary \n/set format verbose display '{result}{pre}{name} \u7684\u503C: {type}{post}' varvalue-added,modified,replaced-primary \n/set format verbose display '{result}{pre}\u5DF2\u5206\u914D\u7ED9 {name} : {type}{post}' assignment-primary \n/set format verbose display '{result}{pre}{action} \u53D8\u91CF {name} : {type}{resolve}{post}' varinit,vardecl \n/set format verbose display '{pre}{action} \u53D8\u91CF {name}{resolve}{post}' vardecl,varinit-notdefined \n/set format verbose display '{pre}{action} \u53D8\u91CF {name}{post}' dropped-vardecl,varinit,expression \n/set format verbose display '{pre}{action} \u53D8\u91CF {name}, \u91CD\u7F6E\u4E3A\u7A7A\u503C{post}' replaced-vardecl,varinit-ok-update \n\n/set format verbose display '{pre}{action} {typeKind} {name}{resolve}{post}' class,interface,enum,annotation \n/set format verbose display '{pre}{action} \u65B9\u6CD5 {name}({type}){resolve}{post}' method \n\n/set format verbose display '{pre}\u5DF2\u5C1D\u8BD5\u4F7F\u7528 {typeKind} {name}{resolve}{post}' used-class,interface,enum,annotation \n/set format verbose display '{pre}\u5DF2\u5C1D\u8BD5\u8C03\u7528\u65B9\u6CD5 {name}({type}){resolve}{post}' used-method \n\n/set truncation verbose 80\n/set truncation verbose 1000 varvalue,expression\n\n/set mode normal -command verbose \n/set format normal display '' added,modified,replaced,overwrote,dropped-update \n/set format normal display '{pre}{action} \u53D8\u91CF {name}, \u91CD\u7F6E\u4E3A\u7A7A\u503C{post}' replaced-vardecl,varinit-ok-update \n/set format normal display '{result}' added,modified,replaced-expression,varvalue,assignment,varinit,vardecl-ok-primary \n/set mode concise -quiet normal \n\n/set prompt concise 'jshell> ' ' ...> ' \n\n/set format concise display '' class,interface,enum,annotation,method,assignment,varinit,vardecl-ok \n\n/set feedback normal \n\n/set mode silent -quiet \n/set prompt silent '-> ' '>> ' \n/set truncation silent 80\n/set truncation silent 1000 varvalue,expression\n/set format silent pre '| ' \n/set format silent post '%n' \n/set format silent errorpre '| ' \n/set format silent errorpost '%n' \n/set format silent display '' \n
-
-jshell.fix.wrong.shortcut =Shift-Tab \u540E\u51FA\u73B0\u610F\u5916\u7684\u5B57\u7B26\u3002\u4F7F\u7528 "i" \u8868\u793A\u81EA\u52A8\u5BFC\u5165, \u4F7F\u7528 "v" \u8868\u793A\u53D8\u91CF\u521B\u5EFA\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605:\n/help \u5FEB\u6377\u65B9\u5F0F
--- a/src/jdk.jshell/share/classes/jdk/jshell/resources/l10n_ja.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jshell/share/classes/jdk/jshell/resources/l10n_ja.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -27,8 +27,9 @@
jshell.diag.modifier.plural.ignore = \u4FEE\u98FE\u5B50{0}\u306F\u3001\u30C8\u30C3\u30D7\u30FB\u30EC\u30D9\u30EB\u5BA3\u8A00\u3067\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u7121\u8996\u3055\u308C\u307E\u3059
jshell.diag.modifier.single.fatal = \u4FEE\u98FE\u5B50{0}\u306F\u3001\u30C8\u30C3\u30D7\u30FB\u30EC\u30D9\u30EB\u5BA3\u8A00\u3067\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
jshell.diag.modifier.single.ignore = \u4FEE\u98FE\u5B50{0}\u306F\u3001\u30C8\u30C3\u30D7\u30FB\u30EC\u30D9\u30EB\u5BA3\u8A00\u3067\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u7121\u8996\u3055\u308C\u307E\u3059
+jshell.diag.object.method.fatal = JShell\u30E1\u30BD\u30C3\u30C9\u540D\u3092\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u3068\u540C\u4E00\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093: {0}
jshell.exc.null = \u30B9\u30CB\u30DA\u30C3\u30C8\u306Fnull\u306B\u3067\u304D\u307E\u305B\u3093
-jshell.exc.alien = \u3053\u306EJShell\u304B\u3089\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+jshell.exc.alien = \u3053\u306EJShell\u304B\u3089\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093: {0}
jshell.exc.closed = JShell ({0})\u306F\u30AF\u30ED\u30FC\u30BA\u3055\u308C\u307E\u3057\u305F\u3002
jshell.exc.var.not.valid = varValue() {0}\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF\u306FVALID\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u304C\u3001{1}\u3067\u3059
--- a/src/jdk.jshell/share/classes/jdk/jshell/resources/l10n_zh_CN.properties Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.jshell/share/classes/jdk/jshell/resources/l10n_zh_CN.properties Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -27,8 +27,9 @@
jshell.diag.modifier.plural.ignore = \u4FEE\u9970\u7B26 {0} \u4E0D\u5141\u8BB8\u5728\u9876\u7EA7\u58F0\u660E\u4E2D\u4F7F\u7528, \u5DF2\u5FFD\u7565
jshell.diag.modifier.single.fatal = \u4FEE\u9970\u7B26 {0} \u4E0D\u5141\u8BB8\u5728\u9876\u7EA7\u58F0\u660E\u4E2D\u4F7F\u7528
jshell.diag.modifier.single.ignore = \u4FEE\u9970\u7B26 {0} \u4E0D\u5141\u8BB8\u5728\u9876\u7EA7\u58F0\u660E\u4E2D\u4F7F\u7528, \u5DF2\u5FFD\u7565
+jshell.diag.object.method.fatal = JShell \u65B9\u6CD5\u540D\u79F0\u4E0D\u80FD\u4E0E Object \u65B9\u6CD5\u5339\u914D: {0}
jshell.exc.null = \u7247\u6BB5\u4E0D\u80FD\u4E3A\u7A7A\u503C
-jshell.exc.alien = \u7247\u6BB5\u4E0D\u6765\u81EA\u4E8E\u6B64 JShell
+jshell.exc.alien = \u7247\u6BB5\u5E76\u975E\u6765\u81EA\u4E8E\u6B64 JShell: {0}
jshell.exc.closed = JShell ({0}) \u5DF2\u5173\u95ED\u3002
jshell.exc.var.not.valid = varValue() {0} \u7684\u7247\u6BB5\u53C2\u6570\u5FC5\u987B\u4E3A VALID, \u8BE5\u53C2\u6570\u4E3A: {1}
--- a/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/OptimisticTypesCalculator.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/OptimisticTypesCalculator.java Wed Jan 17 12:19:06 2018 +0000
@@ -101,13 +101,12 @@
tagNeverOptimistic(binaryNode.rhs());
}
}
- } else if(binaryNode.isTokenType(TokenType.INSTANCEOF)
- || binaryNode.isTokenType(TokenType.EQ_STRICT)
- || binaryNode.isTokenType(TokenType.NE_STRICT)) {
+ } else if(binaryNode.isTokenType(TokenType.INSTANCEOF)) {
tagNeverOptimistic(binaryNode.lhs());
tagNeverOptimistic(binaryNode.rhs());
}
- return true;
+ // Don't enter comparison nodes, see JDK-8193567
+ return !binaryNode.isComparison();
}
@Override
--- a/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java Tue Jan 16 15:52:01 2018 +0000
+++ b/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JavaAdapterBytecodeGenerator.java Wed Jan 17 12:19:06 2018 +0000
@@ -1083,7 +1083,7 @@
// Simply invoke super.finalize()
mv.visitVarInsn(ALOAD, 0);
- mv.checkcast(Type.getType(generatedClassName));
+ mv.checkcast(Type.getType('L' + generatedClassName + ';'));
mv.invokespecial(superClassName, "finalize", VOID_METHOD_DESCRIPTOR, false);
mv.visitInsn(RETURN);
--- a/src/jdk.unsupported/share/classes/sun/reflect/Reflection.java Tue Jan 16 15:52:01 2018 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2001, 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
- * 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.
- */
-
-package sun.reflect;
-
-public class Reflection {
-
- private Reflection() { }
-
- /**
- * @deprecated This method is an internal API and will be removed.
- * Use {@link StackWalker} to walk the stack and obtain the caller class
- * with {@link StackWalker.StackFrame#getDeclaringClass} instead.
- */
- @Deprecated(forRemoval=true)
- @SuppressWarnings("removal") // Reflection.getCallerClass
- public static Class<?> getCallerClass(int depth) {
- if (depth < 0)
- throw new InternalError("depth must be positive");
-
- // increase depth to account for delegation to the internal impl
- return jdk.internal.reflect.Reflection.getCallerClass(depth + 1);
- }
-}
--- a/test/hotspot/jtreg/ProblemList.txt Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/ProblemList.txt Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -68,6 +68,7 @@
gc/g1/logging/TestG1LoggingFailure.java 8169634 generic-all
gc/g1/humongousObjects/TestHeapCounters.java 8178918 generic-all
gc/g1/TestVerifyGCType.java 8193067 generic-all
+gc/stress/gclocker/TestGCLockerWithParallel.java 8180622 generic-all
gc/stress/gclocker/TestGCLockerWithG1.java 8179226 generic-all
gc/survivorAlignment/TestPromotionFromSurvivorToTenuredAfterMinorGC.java 8177765 generic-all
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/aot/cli/jaotc/CompileClassWithDebugTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @requires vm.aot
+ * @library / /test/lib /testlibrary
+ * @modules java.base/jdk.internal.misc
+ * @build compiler.aot.cli.jaotc.CompileClassWithDebugTest
+ * @run driver ClassFileInstaller compiler.aot.cli.jaotc.data.HelloWorldOne
+ * @run driver compiler.aot.cli.jaotc.CompileClassWithDebugTest
+ * @summary check that jaotc can compile a class with a --debug flag
+ */
+
+package compiler.aot.cli.jaotc;
+
+import compiler.aot.cli.jaotc.data.HelloWorldOne;
+import java.io.File;
+import jdk.test.lib.Asserts;
+import jdk.test.lib.process.OutputAnalyzer;
+
+public class CompileClassWithDebugTest {
+ public static void main(String[] args) {
+ OutputAnalyzer oa = JaotcTestHelper.compileLibrary("--debug", "--class-name", JaotcTestHelper
+ .getClassAotCompilationName(HelloWorldOne.class));
+ oa.shouldHaveExitValue(0);
+ File compiledLibrary = new File(JaotcTestHelper.DEFAULT_LIB_PATH);
+ Asserts.assertTrue(compiledLibrary.exists(), "Compiled library file missing");
+ Asserts.assertGT(compiledLibrary.length(), 0L, "Unexpected compiled library size");
+ JaotcTestHelper.checkLibraryUsage(HelloWorldOne.class.getName());
+ }
+}
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetImplementorTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetImplementorTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -103,6 +103,14 @@
HotSpotResolvedObjectType resolvedIface = CompilerToVMHelper
.lookupTypeHelper(Utils.toJVMTypeSignature(tcase.anInterface),
getClass(), /* resolve = */ true);
+ if (!resolvedIface.isInterface()) {
+ try {
+ CompilerToVMHelper.getImplementor(resolvedIface);
+ Asserts.fail("Expected " + IllegalArgumentException.class.getName());
+ } catch (IllegalArgumentException e) {
+ }
+ return;
+ }
HotSpotResolvedObjectType resolvedImplementer = CompilerToVMHelper
.getImplementor(resolvedIface);
HotSpotResolvedObjectType resolvedExpected = null;
--- a/test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaType.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaType.java Wed Jan 17 12:19:06 2018 +0000
@@ -473,6 +473,20 @@
metaAccess.lookupJavaType(ConcreteTransitiveImplementor1.class);
metaAccess.lookupJavaType(ConcreteTransitiveImplementor2.class);
assertEquals(aSai2, iSai2.getSingleImplementor());
+
+ for (Class<?> c : classes) {
+ ResolvedJavaType type = metaAccess.lookupJavaType(c);
+ try {
+ type.getSingleImplementor();
+ if (!c.isInterface()) {
+ throw new AssertionError("Expected exception for calling getSingleImplmentor on " + c.getName());
+ }
+ } catch (JVMCIError e) {
+ if (c.isInterface()) {
+ throw new AssertionError("Unexpected exception", e);
+ }
+ }
+ }
}
@Test(expected = JVMCIError.class)
@@ -830,6 +844,10 @@
assertNull(metaAccess.lookupJavaType(C.class).getClassInitializer());
assertNull(metaAccess.lookupJavaType(int.class).getClassInitializer());
assertNull(metaAccess.lookupJavaType(void.class).getClassInitializer());
+ for (Class<?> c : classes) {
+ ResolvedJavaType type = metaAccess.lookupJavaType(c);
+ type.getClassInitializer();
+ }
}
@Test
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/loopstripmining/BackedgeNodeWithOutOfLoopControl.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2018, Red Hat, Inc. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8194914
+ * @summary "node not on backedge" assert in OuterStripMinedLoopNode::adjust_strip_mined_loop
+ *
+ * @run main/othervm -XX:-TieredCompilation -XX:+IgnoreUnrecognizedVMOptions -XX:-BackgroundCompilation -XX:+UseCountedLoopSafepoints -XX:LoopStripMiningIter=1000 BackedgeNodeWithOutOfLoopControl
+ *
+ */
+
+public class BackedgeNodeWithOutOfLoopControl {
+
+ public static void accessArrayVariables(int[] array, int i) {
+ for (int j = 0; j < 100000; j++) {
+ array[i-2]++;
+ array[i-1]++;
+ }
+ }
+
+ public void test() {
+ int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ for (int i = 0; i < 2000; i++) {
+ accessArrayVariables(array, 5);
+ }
+ }
+
+ public static void main(String [] args) {
+ BackedgeNodeWithOutOfLoopControl aa = new BackedgeNodeWithOutOfLoopControl();
+ aa.test();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/loopstripmining/LimitSharedwithOutOfLoopTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2018, Red Hat, Inc. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8193597
+ * @summary limit test is shared with out of loop if
+ *
+ * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-BackgroundCompilation -XX:LoopUnrollLimit=0 -XX:+UseCountedLoopSafepoints -XX:LoopStripMiningIter=1000 LimitSharedwithOutOfLoopTest
+ *
+ */
+
+public class LimitSharedwithOutOfLoopTest {
+ public static void main(String[] args) {
+ boolean[] array1 = new boolean[2001];
+ boolean[] array2 = new boolean[2001];
+ boolean[] array3 = new boolean[2001];
+ array2[1000] = true;
+ array3[2000] = true;
+ for (int i = 0; i < 20_000; i++) {
+ if (test(2000, array1)) {
+ throw new RuntimeException("bad return");
+ }
+ if (!test(2000, array2)) {
+ throw new RuntimeException("bad return");
+ }
+ if (test(2000, array3)) {
+ throw new RuntimeException("bad return");
+ }
+ }
+ }
+
+ static volatile boolean barrier;
+
+ private static boolean test(int limit, boolean[] array) {
+ for (int i = 0; i < limit;) {
+ i++;
+ if (array[i]) {
+ // Same test as end of loop test. When loop is strip
+ // mined, this must not become the end of inner loop
+ // test.
+ if (i < limit) {
+ return true;
+ }
+ return false;
+ }
+ barrier = true;
+ }
+ return false;
+ }
+}
--- a/test/hotspot/jtreg/compiler/tiered/LevelTransitionTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/compiler/tiered/LevelTransitionTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,6 +29,7 @@
* java.management
*
* @build sun.hotspot.WhiteBox
+ * compiler.tiered.LevelTransitionTest
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
* sun.hotspot.WhiteBox$WhiteBoxPermission
* @run main/othervm/timeout=240 -Xmixed -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/ArchiveDoesNotExist.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/ArchiveDoesNotExist.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,7 @@
* attempting to use CDS archive. JVM should exit gracefully
* when sharing mode is ON, and continue w/o sharing if sharing
* mode is AUTO.
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/BootAppendTests.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/BootAppendTests.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,7 +25,7 @@
* @test
* @requires vm.cds & !vm.graal.enabled
* @summary Testing -Xbootclasspath/a support for CDS
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/CdsDifferentCompactStrings.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/CdsDifferentCompactStrings.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,7 @@
* @requires vm.cds
* @summary CDS (class data sharing) requires the same -XX:[+-]CompactStrings
* setting between archive creation time and load time.
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/CdsDifferentObjectAlignment.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/CdsDifferentObjectAlignment.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,7 +29,7 @@
* This is a negative test; using object alignment for loading that
* is different from object alignment for creating a CDS file
* should fail when loading.
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @bug 8025642
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/CdsSameObjectAlignment.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/CdsSameObjectAlignment.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,7 @@
* @requires vm.cds
* @summary Testing CDS (class data sharing) using varying object alignment.
* Using same object alignment for each dump/load pair
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/DefaultUseWithClient.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/DefaultUseWithClient.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,7 +24,7 @@
/*
* @test DefaultUseWithClient
* @summary Test default behavior of sharing with -client
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/DumpSharedDictionary.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/DumpSharedDictionary.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,7 @@
* Feature support: compressed oops/kptrs, 64-bit os, not on windows
* @requires vm.cds
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* @run main DumpSharedDictionary
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/NonBootLoaderClasses.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/NonBootLoaderClasses.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,7 +24,7 @@
/*
* @test NonBootLoaderClasses
* @summary Test to ensure platform and app classes are not being archived
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/PrintSharedArchiveAndExit.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/PrintSharedArchiveAndExit.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,7 @@
* @requires vm.cds
* @bug 8066670
* @summary Testing -XX:+PrintSharedArchiveAndExit option
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SASymbolTableTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/SASymbolTableTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,7 +25,7 @@
* @test SASymbolTableTest
* @requires vm.cds
* @summary Walk symbol table using SA, with and without CDS.
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* jdk.hotspot.agent/sun.jvm.hotspot.oops
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedArchiveFile.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedArchiveFile.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,7 @@
* @requires vm.cds
* @bug 8014138
* @summary Testing new -XX:SharedArchiveFile=<file-name> option
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedBaseAddress.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedBaseAddress.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,7 @@
* @requires vm.cds
* @summary Test variety of values for SharedBaseAddress, making sure
* VM handles normal values as well as edge values w/o a crash.
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStrings.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStrings.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,7 @@
* are actually shared
* Feature support: G1GC only, compressed oops/kptrs, 64-bit os, not on windows
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @library /test/lib
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStringsDedup.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStringsDedup.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @summary Test -Xshare:auto with shared strings and -XX:+UseStringDeduplication
* Feature support: G1GC only, compressed oops/kptrs, 64-bit os, not on windows
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @library /test/lib
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStringsRunAuto.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedStringsRunAuto.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @summary Test -Xshare:auto with shared strings.
* Feature support: G1GC only, compressed oops/kptrs, 64-bit os, not on windows
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @library /test/lib
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedSymbolTableBucketSize.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedSymbolTableBucketSize.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,7 @@
* @requires vm.cds
* @bug 8059510
* @summary Test SharedSymbolTableBucketSize option
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/SpaceUtilizationCheck.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/SpaceUtilizationCheck.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,7 +25,7 @@
* @test SpaceUtilizationCheck
* @requires vm.cds
* @summary Check if the space utilization for shared spaces is adequate
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/TestInterpreterMethodEntries.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/TestInterpreterMethodEntries.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @bug 8169711
* @summary Test interpreter method entries for intrinsics with CDS (class data sharing)
* and different settings of the intrinsic flag during dump/use of the archive.
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformInterfaceAndImplementor.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformInterfaceAndImplementor.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @summary Exercise initial transformation (ClassFileLoadHook)
* with CDS with Interface/Implementor pair
* @library /test/lib /runtime/SharedArchiveFile /testlibrary/jvmti
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.flavor != "minimal"
* @modules java.base/jdk.internal.misc
* jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformSuperAndSubClasses.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformSuperAndSubClasses.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,7 @@
* @summary Exercise initial transformation (ClassFileLoadHook)
* with CDS with SubClass and SuperClass
* @library /test/lib /runtime/SharedArchiveFile /testlibrary/jvmti
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.flavor != "minimal"
* @modules java.base/jdk.internal.misc
* jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformSuperSubTwoPckgs.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformSuperSubTwoPckgs.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,7 @@
* @summary Exercise initial transformation (ClassFileLoadHook)
* with CDS with SubClass and SuperClass, each lives in own separate package
* @library /test/lib /runtime/SharedArchiveFile /testlibrary/jvmti
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.flavor != "minimal"
* @modules java.base/jdk.internal.misc
* jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/AppendClasspath.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/AppendClasspath.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary At run time, it is OK to append new elements to the classpath that was used at dump time.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/BootClassPathMismatch.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/BootClassPathMismatch.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary bootclasspath mismatch test.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/CaseSensitiveClassPath.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/CaseSensitiveClassPath.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @test
* @summary Test case sensitive aspect of comparing class paths
* between dump time and archive use time
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/ClassLoaderTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/ClassLoaderTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Initiating and defining classloader test.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/ClassPathAttr.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/ClassPathAttr.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Class-Path: attribute in MANIFEST file
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/CommandLineFlagCombo.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/CommandLineFlagCombo.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,8 +24,8 @@
/*
* @test CommandLineFlagCombo
- * AppCDS does not support uncompressed oops
- * @requires (vm.gc=="null") & ((vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true))
+ * @requires vm.cds
+ * @requires (vm.gc=="null")
* @summary Test command line flag combinations that
* could likely affect the behaviour of AppCDS
* @library /test/lib
--- a/test/hotspot/jtreg/runtime/appcds/CommandLineFlagComboNegative.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/CommandLineFlagComboNegative.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,8 +28,7 @@
* the dump and execute steps, in such way that they cause errors
* E.g. use compressed oops for creating and archive, but then
* execute w/o compressed oops
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/DirClasspathTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/DirClasspathTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary AppCDS handling of directories in -cp
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @run main DirClasspathTest
*/
--- a/test/hotspot/jtreg/runtime/appcds/DumpClassList.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/DumpClassList.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,7 @@
* @test
* @summary DumpLoadedClassList should exclude generated classes, classes in bootclasspath/a and
* --patch-module.
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/ExtraSymbols.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/ExtraSymbols.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,7 +25,7 @@
/*
* @test
* @summary Adding extra symbols into CDS archive using -XX:SharedArchiveConfigFile
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/FieldAnnotationsTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/FieldAnnotationsTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,7 +25,7 @@
/*
* @test
* @summary Test for field annotations.
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/FreeUnusedMetadata.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/FreeUnusedMetadata.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,7 +25,7 @@
/*
* @test
* @summary Unused metadata created during dump time should be freed from the CDS archive.
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules jdk.jartool/sun.tools.jar
* @compile test-classes/MethodNoReturn.jasm test-classes/Hello.java
--- a/test/hotspot/jtreg/runtime/appcds/HelloExtTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/HelloExtTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary a simple test for loading a class using the ext class loader in AppCDS
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/HelloTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/HelloTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Hello World test for AppCDS
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
@@ -36,7 +35,6 @@
*/
public class HelloTest {
-
public static void main(String[] args) throws Exception {
TestCommon.test(JarBuilder.getOrCreateHelloJar(),
TestCommon.list("Hello"), "Hello");
--- a/test/hotspot/jtreg/runtime/appcds/IgnoreEmptyClassPaths.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/IgnoreEmptyClassPaths.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Test the -XX:+IgnoreEmptyClassPaths flag
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/JvmtiAddPath.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/JvmtiAddPath.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary JvmtiEnv::AddToBootstrapClassLoaderSearch and JvmtiEnv::AddToSystemClassLoaderSearch should disable AppCDS
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @bug 8060592
* @library /test/lib
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/MismatchedUseAppCDS.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/MismatchedUseAppCDS.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Try different combination of mismatched UseAppCDS between dump time and run time.
- * (Note: AppCDS does not support uncompressed oops.)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/MissingSuperTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/MissingSuperTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,8 @@
/*
* @test
* @summary When super class is missing during dumping, no crash should happen.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ *
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/MultiProcessSharing.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/MultiProcessSharing.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,8 @@
/*
* @test
* @summary Run multiple processes with the same archive, ensure they share
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ *
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/MultiReleaseJars.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/MultiReleaseJars.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test MultiReleaseJars
* @bug 8170105
* @summary Test multi-release jar with AppCDS.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/OldClassTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/OldClassTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary classes with major version < JDK_1.5 (48) should not be included in CDS
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.org.objectweb.asm
* java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/PackageSealing.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/PackageSealing.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary AppCDS handling of package.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/ParallelLoad2.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/ParallelLoad2.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Load app classes from CDS archive in parallel threads. Similar to ParallelLoad.java, but each class in its own JAR
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/ParallelLoadTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/ParallelLoadTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,9 +25,8 @@
/*
* @test
* @summary Load app classes from CDS archive in parallel threads
- * AppCDS does not support uncompressed oops
* @library /test/lib
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @modules java.base/jdk.internal.misc
* java.management
* jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/PrintSharedArchiveAndExit.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/PrintSharedArchiveAndExit.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary test the -XX:+PrintSharedArchiveAndExit flag
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/ProhibitedPackage.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/ProhibitedPackage.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary AppCDS handling of prohibited package.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/ProtectionDomain.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/ProtectionDomain.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary AppCDS handling of protection domain.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/RewriteBytecodesTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/RewriteBytecodesTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test
* @summary Use ClassLoader.defineClass() to load a class with rewritten bytecode. Make sure
* the archived class with the same name is not loaded.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/SharedArchiveConsistency.java Wed Jan 17 12:19:06 2018 +0000
@@ -23,20 +23,19 @@
*/
/*
- * @test
- * @summary SharedArchiveConsistency
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
- * java.compiler
- * java.management
- * jdk.jartool/sun.tools.jar
- * jdk.internal.jvmstat/sun.jvmstat.monitor
- * @build sun.hotspot.WhiteBox
- * @compile test-classes/Hello.java
- * @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI SharedArchiveConsistency
+ * @test
+ * @summary SharedArchiveConsistency
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
+ * java.compiler
+ * java.management
+ * jdk.jartool/sun.tools.jar
+ * jdk.internal.jvmstat/sun.jvmstat.monitor
+ * @build sun.hotspot.WhiteBox
+ * @compile test-classes/Hello.java
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI SharedArchiveConsistency
*/
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.Utils;
--- a/test/hotspot/jtreg/runtime/appcds/SharedArchiveFile.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/SharedArchiveFile.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,8 +24,7 @@
/*
* @test
* @summary The diagnostic option, -XX:SharedArchiveFile can be unlocked using -XX:+UseAppCDS
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/SharedBaseAddress.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/SharedBaseAddress.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,8 +27,7 @@
* @summary Test variety of values for SharedBaseAddress, in AppCDS mode,
* making sure VM handles normal values as well as edge values
* w/o a crash.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/SharedPackages.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/SharedPackages.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary AppCDS handling of package.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/SignedJar.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/SignedJar.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary AppCDS handling of signed JAR.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/SpecifySysLoaderProp.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/SpecifySysLoaderProp.java Wed Jan 17 12:19:06 2018 +0000
@@ -23,17 +23,16 @@
*/
/*
- * @test
- * @summary If -Djava.system.class.loader=xxx is specified in command-line, disable UseAppCDS
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
- * @library /test/lib
- * @modules java.base/jdk.internal.misc
+ * @test
+ * @summary If -Djava.system.class.loader=xxx is specified in command-line, disable UseAppCDS
+ * @requires vm.cds
+ * @library /test/lib
+ * @modules java.base/jdk.internal.misc
* jdk.jartool/sun.tools.jar
- * @compile test-classes/TestClassLoader.java
- * @compile test-classes/ReportMyLoader.java
- * @compile test-classes/TrySwitchMyLoader.java
- * @run main SpecifySysLoaderProp
+ * @compile test-classes/TestClassLoader.java
+ * @compile test-classes/ReportMyLoader.java
+ * @compile test-classes/TrySwitchMyLoader.java
+ * @run main SpecifySysLoaderProp
*/
import java.io.*;
--- a/test/hotspot/jtreg/runtime/appcds/TestCommon.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/TestCommon.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
*/
import jdk.test.lib.Utils;
+import jdk.test.lib.BuildHelper;
import jdk.test.lib.JDKToolFinder;
import jdk.test.lib.Platform;
import jdk.test.lib.cds.CDSOptions;
@@ -107,6 +108,19 @@
return createArchive(opts);
}
+ // If you use -XX:+UseAppCDS or -XX:-UseAppCDS in your JVM command-line, call this method
+ // to wrap the arguments. On commercial builds, -XX:+UnlockCommercialFeatures will be
+ // prepended to the command-line. See JDK-8193664.
+ public static String[] makeCommandLineForAppCDS(String... args) throws Exception {
+ if (BuildHelper.isCommercialBuild()) {
+ String[] newArgs = new String[args.length + 1];
+ newArgs[0] = "-XX:+UnlockCommercialFeatures";
+ System.arraycopy(args, 0, newArgs, 1, args.length);
+ return newArgs;
+ } else {
+ return args;
+ }
+ }
// Create AppCDS archive using appcds options
public static OutputAnalyzer createArchive(AppCDSOptions opts)
@@ -139,7 +153,7 @@
for (String s : opts.suffix) cmd.add(s);
String[] cmdLine = cmd.toArray(new String[cmd.size()]);
- ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmdLine);
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, makeCommandLineForAppCDS(cmdLine));
return executeAndLog(pb, "dump");
}
@@ -166,7 +180,7 @@
for (String s : opts.suffix) cmd.add(s);
String[] cmdLine = cmd.toArray(new String[cmd.size()]);
- ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmdLine);
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, makeCommandLineForAppCDS(cmdLine));
return executeAndLog(pb, "exec");
}
--- a/test/hotspot/jtreg/runtime/appcds/TraceLongClasspath.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/TraceLongClasspath.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary ensure -XX:+TraceClassPaths showing entire expecting app classpath
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/UseAppCDS.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/UseAppCDS.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,8 +25,7 @@
/*
* @test
* @summary Testing use of UseAppCDS flag
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
@@ -122,14 +121,14 @@
static void dumpLoadedClasses(boolean useAppCDS, String[] expectedClasses,
String[] unexpectedClasses) throws Exception {
- ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
- true,
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
+ TestCommon.makeCommandLineForAppCDS(
"-XX:DumpLoadedClassList=" + CLASSLIST_FILE,
"-cp",
TESTJAR,
useAppCDS ? "-XX:+UseAppCDS" : "-XX:-UseAppCDS",
TESTNAME,
- TEST_OUT);
+ TEST_OUT));
OutputAnalyzer output = TestCommon.executeAndLog(pb, "dump-loaded-classes")
.shouldHaveExitValue(0).shouldContain(TEST_OUT);
@@ -152,8 +151,8 @@
static void dumpArchive(boolean useAppCDS, String[] expectedClasses,
String[] unexpectedClasses) throws Exception {
- ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
- true,
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
+ TestCommon.makeCommandLineForAppCDS(
useAppCDS ? "-XX:-UnlockDiagnosticVMOptions" :
"-XX:+UnlockDiagnosticVMOptions",
"-cp",
@@ -162,7 +161,7 @@
"-XX:SharedClassListFile=" + CLASSLIST_FILE,
"-XX:SharedArchiveFile=" + ARCHIVE_FILE,
"-Xlog:cds",
- "-Xshare:dump");
+ "-Xshare:dump"));
OutputAnalyzer output = TestCommon.executeAndLog(pb, "dump-archive")
.shouldHaveExitValue(0);
@@ -179,8 +178,8 @@
static void useArchive(boolean useAppCDS, String[] expectedClasses,
String[] unexpectedClasses) throws Exception {
- ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
- true,
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
+ TestCommon.makeCommandLineForAppCDS(
useAppCDS ? "-XX:-UnlockDiagnosticVMOptions" :
"-XX:+UnlockDiagnosticVMOptions",
"-cp",
@@ -190,7 +189,7 @@
"-verbose:class",
"-Xshare:on",
TESTNAME,
- TEST_OUT );
+ TEST_OUT));
OutputAnalyzer output = TestCommon.executeAndLog(pb, "use-archive");
if (CDSTestUtils.isUnableToMap(output))
--- a/test/hotspot/jtreg/runtime/appcds/VerifierTest_0.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/VerifierTest_0.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Unverfiable app classes should not be archived.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* @modules jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/VerifierTest_1A.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/VerifierTest_1A.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Unverfiable app classes should not be archived.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* @modules jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/VerifierTest_1B.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/VerifierTest_1B.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Unverfiable app classes should not be archived.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* @modules jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/VerifierTest_2.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/VerifierTest_2.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Unverfiable app classes should not be archived.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* @modules jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/WideIloadTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/WideIloadTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,7 +25,7 @@
/**
* @test
* @summary Test 'iload_w' bytecode in shared class
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/WrongClasspath.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/WrongClasspath.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary classpath mismatch between dump time and execution time
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/XShareAutoWithChangedJar.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/XShareAutoWithChangedJar.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Test -Xshare:auto for AppCDS
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/CheckCachedResolvedReferences.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/CheckCachedResolvedReferences.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,7 +25,7 @@
/*
* @test
* @summary Test resolved_references
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
* @requires (vm.gc=="null")
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/DumpTimeVerifyFailure.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/DumpTimeVerifyFailure.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,7 @@
* @test
* @summary Dump time should not crash if any class with shared strings fails verification due to missing dependencies.
* @bug 8186789
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
* @requires (vm.gc=="null")
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/GCStressTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/GCStressTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,7 +25,7 @@
/*
* @test
* @summary
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
* @requires (vm.gc=="null")
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/OpenArchiveRegion.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/OpenArchiveRegion.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,7 +25,7 @@
/*
* @test
* @summary Test open archive heap regions
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
* @requires (vm.gc=="null")
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/RangeNotWithinHeap.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/RangeNotWithinHeap.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,7 @@
* mapped due to out of range, and -Xshare:on should not fail. Test on
* linux 64-bit only since the HeapBaseMinAddress value is platform specific.
* The value used in the test may cause different behavior on other platforms.
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires (os.family == "linux") & (os.arch == "amd64") & (sun.arch.data.model == "64")
* @requires (vm.gc=="null")
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
--- a/test/hotspot/jtreg/runtime/appcds/cacheObject/RedefineClassTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/cacheObject/RedefineClassTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,7 @@
* @test
* @summary Redefine shared class. GC should not cause crash with cached resolved_references.
* @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes /test/hotspot/jtreg/runtime/appcds/jvmti
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @requires vm.flavor != "minimal"
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatA.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatA.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test
* @summary Tests the format checking of class list format.
*
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatB.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatB.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test
* @summary Tests the format checking of hotspot/src/closed/share/vm/classfile/classListParser.cpp.
*
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatC.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatC.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test
* @summary Tests the format checking of hotspot/src/closed/share/vm/classfile/classListParser.cpp.
*
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatD.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatD.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test
* @summary Tests the format checking of hotspot/src/closed/share/vm/classfile/classListParser.cpp.
*
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatE.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/ClassListFormatE.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test
* @summary Tests the format checking of hotspot/src/closed/share/vm/classfile/classListParser.cpp.
*
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/HelloCustom.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/HelloCustom.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Hello World test for AppCDS custom loader support
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/LoaderSegregationTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/LoaderSegregationTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test
* @summary Check that during dumping, the classes for BOOT/EXT/APP loaders are segregated from the
* custom loader classes.
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ParallelTestMultiFP.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/ParallelTestMultiFP.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Load classes from CDS archive into multiple custom loader using parallel threads
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ParallelTestSingleFP.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/ParallelTestSingleFP.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Load classes from CDS archive into a single custom loader using parallel threads (finger print)
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ProhibitedPackageNamesTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/ProhibitedPackageNamesTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Make sure prohibited packages cannot be stored into archive for custom loaders.
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/ProtectionDomain.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/ProtectionDomain.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test
* @summary AppCDS handling of protection domain in custom loaders.
*
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
*
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/SameNameInTwoLoadersTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/SameNameInTwoLoadersTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test
* @summary Testing the loading of a class with the same name in two different class loaders.
*
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
*
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/UnintendedLoadersTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/UnintendedLoadersTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Make sure classes intended for custom loaders cannot be loaded by BOOT/EXT/APP loaders
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/UnloadUnregisteredLoaderTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/UnloadUnregisteredLoaderTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test
* @summary Test the behavior when shared classes loaded by custom loaders are
* unloaded.
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.cds.custom.loaders
* @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/testlibrary
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/customLoader/UnsupportedPlatforms.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/customLoader/UnsupportedPlatforms.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,6 @@
/*
* @test
* @summary Ensure that support for AppCDS custom class loaders are not enabled on unsupported platforms.
- * (NOTE: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
* @requires vm.cds
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/ArrayTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/javaldr/ArrayTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary test the ability to archive array classes and load them from the archive
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules jdk.jartool/sun.tools.jar
* @compile ArrayTestHelper.java
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/CheckAnonymousClass.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/javaldr/CheckAnonymousClass.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary ensure no anonymous class is being dumped into the CDS archive
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules jdk.jartool/sun.tools.jar
* @compile ../test-classes/Hello.java
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/GCDuringDump.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/javaldr/GCDuringDump.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,7 @@
* @test
* @summary When dumping the CDS archive, try to cause garbage collection while classes are being loaded.
* @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.flavor != "minimal"
* @modules java.base/jdk.internal.misc
* jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/javaldr/GCSharedStringsDuringDump.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/javaldr/GCSharedStringsDuringDump.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,7 @@
* option for testing the interaction with GC and shared strings.
* @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.flavor != "minimal"
* @requires vm.gc.G1
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/CheckUnsupportedDumpingOptions.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/CheckUnsupportedDumpingOptions.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Abort dumping if any of the new jigsaw vm options is specified.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib ..
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/JigsawOptionsCombo.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/JigsawOptionsCombo.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test
* @summary Test combinations of jigsaw options that affect the use of AppCDS
*
- * AppCDS does not support uncompressed oops
- * @requires ((vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)) & !vm.graal.enabled
+ * @requires vm.cds & !vm.graal.enabled
* @library /test/lib ..
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/AppClassInCP.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/AppClassInCP.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,7 +24,7 @@
/*
* @test
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @summary a test to demonstrate that an application class in the -cp
* will be archived although --patch-module is specified. The class in
* the -cp has no dependencies on the class in the --patch-module.
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/CustomPackage.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/CustomPackage.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,7 +24,7 @@
/*
* @test
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @summary if a class is defined to a package which is not defined to any
* module in the jimage, the class will not be found during dump
* time but it will be used during run time.
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/MismatchedPatchModule.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/MismatchedPatchModule.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,7 +24,7 @@
/*
* @test
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @summary different settings of --patch-module at dump time and runtime are
* acceptable. The class found in runtime --patch-module entry should
* be used.
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/PatchDir.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/PatchDir.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,7 +24,7 @@
/*
* @test
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @summary a simple test to ensure that a directory in the --patch-module
* option does not affect dump process
* @library ../..
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/PatchJavaBase.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/PatchJavaBase.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,7 +24,7 @@
/*
* @test
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @summary sharing is disabled if java.base is patch at runtime
* @library ../..
* @library /test/hotspot/jtreg/testlibrary
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/Simple.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/Simple.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,7 +24,7 @@
/*
* @test
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @summary a simple test to ensure that class is loaded from jar file in --patch-module at runtime
* @library ../..
* @library /test/hotspot/jtreg/testlibrary
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/SubClassOfPatchedClass.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/SubClassOfPatchedClass.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,7 +24,7 @@
/*
* @test
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @summary the class in the -cp is a subclass of the class in --patch-module. The
* patched class should be used at runtime.
* @library ../..
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/TwoJars.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/PatchModule/TwoJars.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,7 +24,7 @@
/*
* @test
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @summary a patched class found in --patch-module should be used at runtime
* @library ../..
* @library /test/hotspot/jtreg/testlibrary
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/BootAppendTests.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/BootAppendTests.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,7 +25,7 @@
/**
* @test
* @summary AppCDS tests for testing -Xbootclasspath/a
- * @requires ((vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)) & !vm.graal.enabled
+ * @requires vm.cds & !vm.graal.enabled
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/ClassPathTests.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/ClassPathTests.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,7 +24,7 @@
/**
* @test
- * @requires ((vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)) & !vm.graal.enabled
+ * @requires vm.cds & !vm.graal.enabled
* @library ../..
* @library /test/lib
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/DummyClassesInBootClassPath.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/DummyClassesInBootClassPath.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,8 +25,7 @@
/*
* @test
* @summary Ensure that classes found in jimage takes precedence over classes found in -Xbootclasspath/a.
- * AppCDS does not support uncompressed oops
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.activation
* jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/EmptyClassInBootClassPath.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/classpathtests/EmptyClassInBootClassPath.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,7 +29,7 @@
* 2) app loader will load the class from the jimage by default;
* app loader will load the class from the bootclasspath if the
* "--limit-modules java.base" option is specified
- * @requires ((vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)) & !vm.graal.enabled
+ * @requires vm.cds & !vm.graal.enabled
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/limitmods/LimitModsTests.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/limitmods/LimitModsTests.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,7 +24,7 @@
/**
* @test
- * @requires ((vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)) & !vm.graal.enabled
+ * @requires vm.cds & !vm.graal.enabled
* @library ../..
* @library /test/lib
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/OverrideTests.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jigsaw/overridetests/OverrideTests.java Wed Jan 17 12:19:06 2018 +0000
@@ -24,7 +24,7 @@
/**
* @test
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @modules java.base/jdk.internal.misc
* @library ../..
* @library /test/lib
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/ClassFileLoadHookTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jvmti/ClassFileLoadHookTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,7 @@
* @test
* @summary Test jvmti class file loader hook interaction with AppCDS
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @modules java.base/jdk.internal.misc
* jdk.jartool/sun.tools.jar
* java.management
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @summary Exercise the java.lang.instrument.Instrumentation APIs on classes archived
* using CDS/AppCDSv1/AppCDSv2.
* @library /test/lib /test/hotspot/jtreg/runtime/appcds /test/hotspot/jtreg/runtime/appcds/test-classes
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.flavor != "minimal"
* @modules java.base/jdk.internal.misc
* jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/parallelLoad/ParallelLoadAndTransformTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jvmti/parallelLoad/ParallelLoadAndTransformTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,7 +29,7 @@
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* /test/hotspot/jtreg/runtime/appcds/test-classes /test/hotspot/jtreg/runtime/appcds/jvmti
* /test/hotspot/jtreg/testlibrary/jvmti
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @modules java.base/jdk.internal.misc
* java.management
* jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/transformRelatedClasses/TransformInterfaceImplementorAppCDS.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jvmti/transformRelatedClasses/TransformInterfaceImplementorAppCDS.java Wed Jan 17 12:19:06 2018 +0000
@@ -32,7 +32,7 @@
* /test/hotspot/jtreg/runtime/SharedArchiveFile /test/hotspot/jtreg/testlibrary/jvmti
* /test/hotspot/jtreg/runtime/appcds/customLoader
* /test/hotspot/jtreg/runtime/appcds/customLoader/test-classes
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.flavor != "minimal"
* @modules java.base/jdk.internal.misc
* jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/transformRelatedClasses/TransformSuperSubAppCDS.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/jvmti/transformRelatedClasses/TransformSuperSubAppCDS.java Wed Jan 17 12:19:06 2018 +0000
@@ -32,7 +32,7 @@
* /test/hotspot/jtreg/runtime/SharedArchiveFile /test/hotspot/jtreg/testlibrary/jvmti
* /test/hotspot/jtreg/runtime/appcds/customLoader
* /test/hotspot/jtreg/runtime/appcds/customLoader/test-classes
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.flavor != "minimal"
* @modules java.base/jdk.internal.misc
* jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineBasicTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineBasicTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test
* @summary Run /runtime/RedefineTests/RedefineRunningMethods in AppCDS mode to
* make sure class redefinition works with CDS.
- * (Note: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib /test/hotspot/jtreg/runtime/RedefineTests /test/hotspot/jtreg/runtime/appcds
* @modules java.compiler
* java.instrument
--- a/test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineRunningMethods_Shared.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/redefineClass/RedefineRunningMethods_Shared.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,8 +26,7 @@
* @test
* @summary Run /runtime/RedefineTests/RedefineRunningMethods in AppCDS mode to
* make sure class redefinition works with CDS.
- * (Note: AppCDS does not support uncompressed oops)
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @library /test/lib /test/hotspot/jtreg/runtime/RedefineTests /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
* @modules java.compiler
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/ExerciseGC.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/ExerciseGC.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,7 +25,7 @@
/*
* @test
* @summary Exercise GC with shared strings
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
* @library /test/hotspot/jtreg/runtime/appcds /test/lib
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/FlagCombo.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/FlagCombo.java Wed Jan 17 12:19:06 2018 +0000
@@ -25,7 +25,7 @@
/*
* @test
* @summary Test relevant combinations of command line flags with shared strings
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
* @requires (vm.gc=="null")
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/IncompatibleOptions.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/IncompatibleOptions.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,7 @@
* Also test mismatch in oops encoding between dump time and run time
* Feature support: G1GC only, compressed oops/kptrs, 64-bit os, not on windows
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires (vm.gc=="null")
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/InternSharedString.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/InternSharedString.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @summary Test shared strings together with string intern operation
* Feature support: G1GC only, compressed oops/kptrs, 64-bit os, not on windows
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @library /test/hotspot/jtreg/runtime/appcds /test/lib
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/InvalidFileFormat.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/InvalidFileFormat.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @summary Check most common errors in file format
* Feature support: G1GC only, compressed oops/kptrs, 64-bit os, not on windows
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/LargePages.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/LargePages.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @summary Basic shared string test with large pages
* Feature support: G1GC only, compressed oops/kptrs, 64-bit os, not on windows
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/LockSharedStrings.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/LockSharedStrings.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @summary Test locking on shared strings
* Feature support: G1GC only, compressed oops/kptrs, 64-bit os, not on windows
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @library /test/hotspot/jtreg/runtime/appcds /test/lib
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasic.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasic.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,7 @@
* @summary Basic test for shared strings
* Feature support: G1GC only, compressed oops/kptrs, 64-bit os, not on windows
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @library /test/hotspot/jtreg/runtime/appcds /test/lib
* @modules java.base/jdk.internal.misc
@@ -50,6 +50,7 @@
TestCommon.getSourceFile("SharedStringsBasic.txt").toString();
ProcessBuilder dumpPb = ProcessTools.createJavaProcessBuilder(true,
+ TestCommon.makeCommandLineForAppCDS(
"-XX:+UseAppCDS",
"-XX:+UseCompressedOops",
"-XX:+UseG1GC",
@@ -57,13 +58,14 @@
"-XX:SharedArchiveConfigFile=" + sharedArchiveConfigFile,
"-XX:SharedArchiveFile=./SharedStringsBasic.jsa",
"-Xshare:dump",
- "-Xlog:cds,cds+hashtables");
+ "-Xlog:cds,cds+hashtables"));
TestCommon.executeAndLog(dumpPb, "dump")
.shouldContain("Shared string table stats")
.shouldHaveExitValue(0);
ProcessBuilder runPb = ProcessTools.createJavaProcessBuilder(true,
+ TestCommon.makeCommandLineForAppCDS(
"-XX:+UseAppCDS",
"-XX:+UseCompressedOops",
"-XX:+UseG1GC",
@@ -71,7 +73,7 @@
"-XX:SharedArchiveFile=./SharedStringsBasic.jsa",
"-Xshare:auto",
"-showversion",
- "HelloString");
+ "HelloString"));
TestCommon.executeAndLog(runPb, "run").shouldHaveExitValue(0);
}
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasicPlus.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsBasicPlus.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @summary Basic plus test for shared strings
* Feature support: G1GC only, compressed oops/kptrs, 64-bit os, not on windows
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @library /test/hotspot/jtreg/runtime/appcds /test/lib
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsStress.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsStress.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @summary Write a lots of shared strings.
* Feature support: G1GC only, compressed oops/kptrs, 64-bit os, not on windows
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @library /test/hotspot/jtreg/runtime/appcds /test/lib
* @modules jdk.jartool/sun.tools.jar
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsWbTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/SharedStringsWbTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @summary White box test for shared strings
* Feature support: G1GC only, compressed oops/kptrs, 64-bit os, not on windows
* @requires (sun.arch.data.model != "32") & (os.family != "windows")
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
--- a/test/hotspot/jtreg/runtime/appcds/sharedStrings/SysDictCrash.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/appcds/sharedStrings/SysDictCrash.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
* @test
* @summary Regression test for JDK-8098821
* @bug 8098821
- * @requires (vm.opt.UseCompressedOops == null) | (vm.opt.UseCompressedOops == true)
+ * @requires vm.cds
* @requires vm.gc.G1
* @library /test/lib /test/hotspot/jtreg/runtime/appcds
* @modules java.base/jdk.internal.misc
@@ -42,21 +42,23 @@
// SharedBaseAddress=0 puts the archive at a very high address on solaris,
// which provokes the crash.
ProcessBuilder dumpPb = ProcessTools.createJavaProcessBuilder(true,
+ TestCommon.makeCommandLineForAppCDS(
"-XX:+UseG1GC", "-XX:MaxRAMPercentage=12.5",
"-XX:+UseAppCDS",
"-cp", ".",
"-XX:SharedBaseAddress=0", "-XX:SharedArchiveFile=./SysDictCrash.jsa",
"-Xshare:dump",
- "-showversion", "-Xlog:cds,cds+hashtables");
+ "-showversion", "-Xlog:cds,cds+hashtables"));
TestCommon.checkDump(TestCommon.executeAndLog(dumpPb, "dump"));
ProcessBuilder runPb = ProcessTools.createJavaProcessBuilder(true,
+ TestCommon.makeCommandLineForAppCDS(
"-XX:+UseG1GC", "-XX:MaxRAMPercentage=12.5",
"-XX:+UseAppCDS",
"-XX:SharedArchiveFile=./SysDictCrash.jsa",
"-Xshare:on",
- "-version");
+ "-version"));
TestCommon.checkExec(TestCommon.executeAndLog(runPb, "exec"));
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/AbstractClone.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8154587
+ * @summary Check that invokeinterface of clone() works properly where clone() is
+ * an abstract method in a superinterface and also overridden locally.
+ * @run main AbstractClone
+ */
+
+public class AbstractClone {
+
+ interface I1 {
+ Object clone();
+ }
+
+ interface I2 extends I1 { }
+
+ static class C implements I2 {
+ public Object clone() {
+ return "In C's clone()";
+ }
+ }
+
+ static Object test(I2 i) { return i.clone(); }
+
+ public static void main(String[] args) {
+ String s = (String)test(new C());
+ if (!s.equals("In C's clone()")) {
+ throw new RuntimeException("Wrong clone() called");
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/AbstractNoClones.jasm Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8154587
+ * @summary Check that invokeinterface of clone() works properly where clone() is
+ * an abstract method in a superinterface and not overridden locally.
+ * @compile AbstractNoClones.jasm
+ * @run main AbstractNoClones
+ */
+
+// The below .jasm code implements the following java code:
+//
+// public class AbstractNoClones {
+//
+// interface I1 {
+// Object clone();
+// }
+//
+// interface I2 extends I1 { }
+//
+// static class C implements I2 { }
+//
+// static Object test(I2 i) { return i.clone(); }
+//
+// public static void main(String[] args) {
+// try {
+// String s = (String)test(new C());
+// throw new RuntimeException("Expected IAE not thrown");
+// } catch (java.lang.IllegalAccessError e) {
+// if (!e.toString().contains("C.clone")) {
+// throw new RuntimeException("Wrong IllegalAccessError exception thrown");
+// }
+// }
+// }
+// }
+
+
+interface AbstractNoClones$I1 version 53:0 {
+
+ public abstract Method clone:"()Ljava/lang/Object;";
+
+ static abstract interface InnerClass I1=class AbstractNoClones$I1 of class AbstractNoClones;
+
+} // end Class AbstractNoClones$I1
+
+
+interface AbstractNoClones$I2 implements AbstractNoClones$I1 version 53:0 {
+
+ static abstract interface InnerClass I2=class AbstractNoClones$I2 of class AbstractNoClones;
+ static abstract interface InnerClass I1=class AbstractNoClones$I1 of class AbstractNoClones;
+
+} // end Class AbstractNoClones$I2
+
+
+super class AbstractNoClones$C implements AbstractNoClones$I2 version 53:0 {
+
+ Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ static InnerClass C=class AbstractNoClones$C of class AbstractNoClones;
+ static abstract interface InnerClass I2=class AbstractNoClones$I2 of class AbstractNoClones;
+
+} // end Class AbstractNoClones$C
+
+
+super public class AbstractNoClones version 53:0 {
+
+ public Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ static Method test:"(LAbstractNoClones$I2;)Ljava/lang/Object;" stack 1 locals 1 {
+ aload_0;
+ invokeinterface InterfaceMethod AbstractNoClones$I2.clone:"()Ljava/lang/Object;", 1;
+ areturn;
+ }
+
+ public static Method main:"([Ljava/lang/String;)V" stack 3 locals 2 {
+ try t0;
+ new class AbstractNoClones$C;
+ dup;
+ invokespecial Method AbstractNoClones$C."<init>":"()V";
+ invokestatic Method test:"(LAbstractNoClones$I2;)Ljava/lang/Object;";
+ checkcast class java/lang/String;
+ astore_1;
+ new class java/lang/RuntimeException;
+ dup;
+ ldc String "Expected IAE not thrown";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ endtry t0;
+ catch t0 java/lang/IllegalAccessError;
+ stack_frame_type stack1;
+ stack_map class java/lang/IllegalAccessError;
+ astore_1;
+ aload_1;
+ invokevirtual Method java/lang/IllegalAccessError.toString:"()Ljava/lang/String;";
+ ldc String "C.clone";
+ invokevirtual Method java/lang/String.contains:"(Ljava/lang/CharSequence;)Z";
+ ifne L47;
+ new class java/lang/RuntimeException;
+ dup;
+ ldc String "Wrong IllegalAccessError exception thrown";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ L47: stack_frame_type same;
+ return;
+ }
+
+ static InnerClass C=class AbstractNoClones$C of class AbstractNoClones;
+ static abstract interface InnerClass I2=class AbstractNoClones$I2 of class AbstractNoClones;
+ static abstract interface InnerClass I1=class AbstractNoClones$I1 of class AbstractNoClones;
+
+} // end Class AbstractNoClones
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/DefaultClone.jasm Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,145 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8154587
+ * @summary Check that a default method named clone() does not get masked by
+ * java.lang.Object.clone() during resolution.
+ * @compile DefaultClone.jasm
+ * @run main DefaultClone
+ */
+
+// The below .jasm code implements the following java code:
+//
+// public class DefaultClone {
+//
+// interface I1 {
+// default Object clone() {
+// return "In I1's clone()";
+// }
+// }
+//
+//
+// interface I2 extends I1 { }
+//
+//
+// static class C implements I2 {
+// public Object clone() {
+// return "In C's clone()";
+// }
+// }
+//
+//
+// static Object test(I2 i) { return i.clone(); }
+//
+// public static void main(String[] args) {
+// String s = (String)test(new C());
+// if (!s.equals("In C's clone()")) {
+// throw new RuntimeException("Wrong clone() called");
+// }
+// }
+// }
+
+
+interface DefaultClone$I1 version 53:0 {
+
+ public Method clone:"()Ljava/lang/Object;" stack 1 locals 1 {
+ ldc String "In I1\'s clone()";
+ areturn;
+ }
+
+ static abstract interface InnerClass I1=class DefaultClone$I1 of class DefaultClone;
+
+} // end Class DefaultClone$I1
+
+
+
+interface DefaultClone$I2 implements DefaultClone$I1 version 53:0 {
+
+ static abstract interface InnerClass I2=class DefaultClone$I2 of class DefaultClone;
+ static abstract interface InnerClass I1=class DefaultClone$I1 of class DefaultClone;
+
+} // end Class DefaultClone$I2
+
+
+super class DefaultClone$C implements DefaultClone$I2 version 53:0 {
+
+ Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ public Method clone:"()Ljava/lang/Object;" stack 1 locals 1 {
+ ldc String "In C\'s clone()";
+ areturn;
+ }
+
+ static InnerClass C=class DefaultClone$C of class DefaultClone;
+ static abstract interface InnerClass I2=class DefaultClone$I2 of class DefaultClone;
+
+} // end Class DefaultClone$C
+
+
+super public class DefaultClone version 53:0 {
+
+ public Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ static Method test:"(LDefaultClone$I2;)Ljava/lang/Object;" stack 1 locals 1 {
+ aload_0;
+ invokeinterface InterfaceMethod DefaultClone$I2.clone:"()Ljava/lang/Object;", 1;
+ areturn;
+ }
+
+ public static Method main:"([Ljava/lang/String;)V" stack 3 locals 2 {
+ new class DefaultClone$C;
+ dup;
+ invokespecial Method DefaultClone$C."<init>":"()V";
+ invokestatic Method test:"(LDefaultClone$I2;)Ljava/lang/Object;";
+ checkcast class java/lang/String;
+ astore_1;
+ aload_1;
+ ldc String "In C\'s clone()";
+ invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z";
+ ifne L33;
+ new class java/lang/RuntimeException;
+ dup;
+ ldc String "Wrong clone() called";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ L33: stack_frame_type append;
+ locals_map class java/lang/String;
+ return;
+ }
+
+ static InnerClass C=class DefaultClone$C of class DefaultClone;
+ static abstract interface InnerClass I2=class DefaultClone$I2 of class DefaultClone;
+ static abstract interface InnerClass I1=class DefaultClone$I1 of class DefaultClone;
+
+} // end Class DefaultClone
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/DefaultFinalize.jasm Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8154587
+ * @summary Check that a default method named finalize() does not get masked by
+ * java.lang.Object.finalize() during resolution.
+ * @compile DefaultFinalize.jasm
+ * @run main DefaultFinalize
+ */
+
+// The below .jasm code implements the following java code:
+//
+// public class DefaultFinalize {
+//
+// static String res;
+//
+// interface I1 {
+// default void finalize() {
+// res = "In I1's finalize()";
+// }
+// }
+//
+// interface I2 extends I1 { }
+//
+// static class C implements I2 {
+// public void finalize() {
+// res = "In C's finalize()";
+// }
+// }
+//
+// static void test(I2 i) { i.finalize(); }
+//
+// public static void main(String[] args) {
+// test(new C());
+// if (!res.equals("In C's finalize()")) {
+// throw new RuntimeException("Wrong finalize() method called");
+// }
+// }
+// }
+
+
+interface DefaultFinalize$I1 version 54:0 {
+
+ public Method finalize:"()V" stack 1 locals 1 {
+ ldc String "In I1\'s finalize()";
+ putstatic Field DefaultFinalize.res:"Ljava/lang/String;";
+ return;
+ }
+
+ static abstract interface InnerClass I1=class DefaultFinalize$I1 of class DefaultFinalize;
+
+} // end Class DefaultFinalize$I1
+
+
+interface DefaultFinalize$I2 implements DefaultFinalize$I1 version 54:0 {
+
+ static abstract interface InnerClass I2=class DefaultFinalize$I2 of class DefaultFinalize;
+ static abstract interface InnerClass I1=class DefaultFinalize$I1 of class DefaultFinalize;
+
+} // end Class DefaultFinalize$I2
+
+
+super class DefaultFinalize$C implements DefaultFinalize$I2 version 54:0 {
+
+ Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ public Method finalize:"()V" stack 1 locals 1 {
+ ldc String "In C\'s finalize()";
+ putstatic Field DefaultFinalize.res:"Ljava/lang/String;";
+ return;
+ }
+
+ static InnerClass C=class DefaultFinalize$C of class DefaultFinalize;
+ static abstract interface InnerClass I2=class DefaultFinalize$I2 of class DefaultFinalize;
+
+} // end Class DefaultFinalize$C
+
+
+super public class DefaultFinalize version 54:0 {
+
+ static Field res:"Ljava/lang/String;";
+
+ public Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ static Method test:"(LDefaultFinalize$I2;)V" stack 1 locals 1 {
+ aload_0;
+ invokeinterface InterfaceMethod DefaultFinalize$I2.finalize:"()V", 1;
+ return;
+ }
+
+ public static Method main:"([Ljava/lang/String;)V" stack 3 locals 1 {
+ new class DefaultFinalize$C;
+ dup;
+ invokespecial Method DefaultFinalize$C."<init>":"()V";
+ invokestatic Method test:"(LDefaultFinalize$I2;)V";
+ getstatic Field res:"Ljava/lang/String;";
+ ldc String "In C\'s finalize()";
+ invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z";
+ ifne L31;
+ new class java/lang/RuntimeException;
+ dup;
+ ldc String "Wrong finalize() method called";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ L31: stack_frame_type same;
+ return;
+ }
+
+ static InnerClass C=class DefaultFinalize$C of class DefaultFinalize;
+ static abstract interface InnerClass I2=class DefaultFinalize$I2 of class DefaultFinalize;
+ static abstract interface InnerClass I1=class DefaultFinalize$I1 of class DefaultFinalize;
+
+} // end Class DefaultFinalize
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/DefaultHashCode.jasm Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8154587
+ * @summary Check that invokeinterface calls the right hashCode() method when
+ * there is both a local method named hashCode() and a default method
+ * named hashCode().
+ * @compile DefaultHashCode.jasm
+ * @run main DefaultHashCode
+ */
+
+// The below .jasm code implements the following java code:
+//
+// public class DefaultHashCode {
+//
+// interface I2 {
+// default int hashCode() {
+// return 5;
+// }
+// }
+//
+// static class C implements I2 {
+// public int hashCode() {
+// return 4;
+// }
+// }
+//
+// static int test(I2 i) { return i.hashCode(); }
+//
+// public static void main(String[] args) {
+// if (test(new C()) != 4) {
+// throw new RuntimeException("Wrong hashCode() function called");
+// }
+// }
+// }
+
+
+interface DefaultHashCode$I2 version 53:0 {
+
+ public Method hashCode:"()I" stack 1 locals 1 {
+ iconst_5;
+ ireturn;
+ }
+
+ static abstract interface InnerClass I2=class DefaultHashCode$I2 of class DefaultHashCode;
+
+} // end Class DefaultHashCode$I2
+
+
+super class DefaultHashCode$C implements DefaultHashCode$I2 version 53:0 {
+
+ Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ public Method hashCode:"()I" stack 1 locals 1 {
+ iconst_4;
+ ireturn;
+ }
+
+ static InnerClass C=class DefaultHashCode$C of class DefaultHashCode;
+ static abstract interface InnerClass I2=class DefaultHashCode$I2 of class DefaultHashCode;
+
+} // end Class DefaultHashCode$C
+
+
+super public class DefaultHashCode version 53:0 {
+
+ public Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ static Method test:"(LDefaultHashCode$I2;)I" stack 1 locals 1 {
+ aload_0;
+ invokeinterface InterfaceMethod DefaultHashCode$I2.hashCode:"()I", 1;
+ ireturn;
+ }
+
+ public static Method main:"([Ljava/lang/String;)V" stack 3 locals 1 {
+ new class DefaultHashCode$C;
+ dup;
+ invokespecial Method DefaultHashCode$C."<init>":"()V";
+ invokestatic Method test:"(LDefaultHashCode$I2;)I";
+ iconst_4;
+ if_icmpeq L24;
+ new class java/lang/RuntimeException;
+ dup;
+ ldc String "Wrong hashCode() function called";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ L24: stack_frame_type same;
+ return;
+ }
+
+ static InnerClass C=class DefaultHashCode$C of class DefaultHashCode;
+ static abstract interface InnerClass I2=class DefaultHashCode$I2 of class DefaultHashCode;
+
+} // end Class DefaultHashCode
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/DefaultNoCloneInC.jasm Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8154587
+ * @summary Check that calling clone() with an invokeinterface opcode throws an IAE
+ * even if there is a default method named clone() in a super interface.
+ * @compile DefaultNoCloneInC.jasm
+ * @run main DefaultNoCloneInC
+ */
+
+// The below .jasm code implements the following java code:
+//
+// public class DefaultNoCloneInC {
+//
+// interface I1 {
+// default Object clone() {
+// return "In I1's clone()";
+// }
+// }
+//
+//
+// interface I2 extends I1 { }
+//
+//
+// static class C implements I2 { }
+//
+//
+// static Object test(I2 i) { return i.clone(); }
+//
+// public static void main(String[] args) {
+// try {
+// String s = (String)test(new C());
+// throw new RuntimeException("Expected IAE not thrown");
+// } catch (java.lang.IllegalAccessError e) {
+// if (!e.toString().contains("C.clone")) {
+// throw new RuntimeException("Wrong IllegalAccessError exception thrown");
+// }
+// }
+// }
+// }
+
+
+interface DefaultNoCloneInC$I1 version 53:0 {
+
+ public Method clone:"()Ljava/lang/Object;" stack 1 locals 1 {
+ ldc String "In I1\'s clone()";
+ areturn;
+ }
+
+ static abstract interface InnerClass I1=class DefaultNoCloneInC$I1 of class DefaultNoCloneInC;
+
+} // end Class DefaultNoCloneInC$I1
+
+
+interface DefaultNoCloneInC$I2 implements DefaultNoCloneInC$I1 version 53:0 {
+
+ static abstract interface InnerClass I2=class DefaultNoCloneInC$I2 of class DefaultNoCloneInC;
+ static abstract interface InnerClass I1=class DefaultNoCloneInC$I1 of class DefaultNoCloneInC;
+
+} // end Class DefaultNoCloneInC$I2
+
+
+super class DefaultNoCloneInC$C implements DefaultNoCloneInC$I2 version 53:0 {
+
+
+ Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ static InnerClass C=class DefaultNoCloneInC$C of class DefaultNoCloneInC;
+ static abstract interface InnerClass I2=class DefaultNoCloneInC$I2 of class DefaultNoCloneInC;
+
+} // end Class DefaultNoCloneInC$C
+
+
+super public class DefaultNoCloneInC version 53:0 {
+
+ public Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ static Method test:"(LDefaultNoCloneInC$I2;)Ljava/lang/Object;" stack 1 locals 1 {
+ aload_0;
+ invokeinterface InterfaceMethod DefaultNoCloneInC$I2.clone:"()Ljava/lang/Object;", 1;
+ areturn;
+ }
+
+ public static Method main:"([Ljava/lang/String;)V" stack 3 locals 2 {
+ try t0;
+ new class DefaultNoCloneInC$C;
+ dup;
+ invokespecial Method DefaultNoCloneInC$C."<init>":"()V";
+ invokestatic Method test:"(LDefaultNoCloneInC$I2;)Ljava/lang/Object;";
+ checkcast class java/lang/String;
+ astore_1;
+ new class java/lang/RuntimeException;
+ dup;
+ ldc String "Expected IAE not thrown";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ endtry t0;
+ catch t0 java/lang/IllegalAccessError;
+ stack_frame_type stack1;
+ stack_map class java/lang/IllegalAccessError;
+ astore_1;
+ aload_1;
+ invokevirtual Method java/lang/IllegalAccessError.toString:"()Ljava/lang/String;";
+ ldc String "C.clone";
+ invokevirtual Method java/lang/String.contains:"(Ljava/lang/CharSequence;)Z";
+ ifne L47;
+ new class java/lang/RuntimeException;
+ dup;
+ ldc String "Wrong IllegalAccessError exception thrown";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ L47: stack_frame_type same;
+ return;
+ }
+
+ static InnerClass C=class DefaultNoCloneInC$C of class DefaultNoCloneInC;
+ static abstract interface InnerClass I2=class DefaultNoCloneInC$I2 of class DefaultNoCloneInC;
+ static abstract interface InnerClass I1=class DefaultNoCloneInC$I1 of class DefaultNoCloneInC;
+
+} // end Class DefaultNoCloneInC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/LocalClone.jasm Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8154587
+ * @summary Check that method resolution for invokeinterface of clone() fails
+ * if it cannot find a public method named clone().
+ * @compile LocalClone.jasm
+ * @run main LocalClone
+ */
+
+// The below .jasm code implements the following java code:
+//
+// interface I1 { }
+//
+//
+// public class LocalClone {
+//
+// interface I2 extends I1 { }
+//
+//
+// static class C implements I2 {
+// public Object clone() {
+// return "In C's clone()";
+// }
+// }
+//
+// static Object test(I2 i) { return i.clone(); }
+//
+// public static void main(String[] args) {
+// try {
+// String s = (String)test(new C());
+// throw new RuntimeException("Expected NSME not thrown");
+// } catch (java.lang.NoSuchMethodError e) {
+// if (!e.toString().contains("I2.clone")) {
+// throw new RuntimeException("Wrong NoSuchMethodError exception thrown");
+// }
+// }
+// }
+// }
+
+
+interface I1 version 53:0 { } // end Class I1
+
+
+interface LocalClone$I2 implements I1 version 53:0 {
+
+ static abstract interface InnerClass I2=class LocalClone$I2 of class LocalClone;
+
+} // end Class LocalClone$I2
+
+
+super class LocalClone$C implements LocalClone$I2 version 53:0 {
+
+ Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ public Method clone:"()Ljava/lang/Object;" stack 1 locals 1 {
+ ldc String "In C\'s clone()";
+ areturn;
+ }
+
+ static InnerClass C=class LocalClone$C of class LocalClone;
+ static abstract interface InnerClass I2=class LocalClone$I2 of class LocalClone;
+
+} // end Class LocalClone$C
+
+
+super public class LocalClone version 53:0 {
+
+ public Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ static Method test:"(LLocalClone$I2;)Ljava/lang/Object;" stack 1 locals 1 {
+ aload_0;
+ invokeinterface InterfaceMethod LocalClone$I2.clone:"()Ljava/lang/Object;", 1;
+ areturn;
+ }
+
+ public static Method main:"([Ljava/lang/String;)V" stack 3 locals 2 {
+ try t0;
+ new class LocalClone$C;
+ dup;
+ invokespecial Method LocalClone$C."<init>":"()V";
+ invokestatic Method test:"(LLocalClone$I2;)Ljava/lang/Object;";
+ checkcast class java/lang/String;
+ astore_1;
+ new class java/lang/RuntimeException;
+ dup;
+ ldc String "Expected NSME not thrown";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ endtry t0;
+ catch t0 java/lang/NoSuchMethodError;
+ stack_frame_type stack1;
+ stack_map class java/lang/NoSuchMethodError;
+ astore_1;
+ aload_1;
+ invokevirtual Method java/lang/NoSuchMethodError.toString:"()Ljava/lang/String;";
+ ldc String "I2.clone";
+ invokevirtual Method java/lang/String.contains:"(Ljava/lang/CharSequence;)Z";
+ ifne L47;
+ new class java/lang/RuntimeException;
+ dup;
+ ldc String "Wrong NoSuchMethodError exception thrown";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ L47: stack_frame_type same;
+ return;
+ }
+
+ static InnerClass C=class LocalClone$C of class LocalClone;
+ static abstract interface InnerClass I2=class LocalClone$I2 of class LocalClone;
+
+} // end Class LocalClone
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/NoClones.jasm Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8154587
+ * @summary Check that a NoSuchMethodError exception gets thrown if invokeinterface
+ * calls clone() and there is no public implementation of clone().
+ * @compile NoClones.jasm
+ * @run main NoClones
+ */
+
+// The below .jasm code implements the following java code:
+//
+// interface I1 { }
+//
+//
+// public class NoClones {
+//
+// interface I2 extends I1 { }
+//
+// static class C implements I2 { }
+//
+// static Object test(I2 i) { return i.clone(); }
+//
+// public static void main(String[] args) {
+// try {
+// String s = (String)test(new C());
+// throw new RuntimeException("Expected NSME not thrown");
+// } catch (java.lang.NoSuchMethodError e) {
+// if (!e.toString().contains("I2.clone")) {
+// throw new RuntimeException("Wrong NoSuchMethodError exception thrown");
+// }
+// }
+// }
+// }
+
+
+interface I1 version 53:0 { } // end Class I1
+
+
+interface NoClones$I2 implements I1 version 53:0 {
+
+ static abstract interface InnerClass I2=class NoClones$I2 of class NoClones;
+
+} // end Class NoClones$I2
+
+
+super class NoClones$C implements NoClones$I2 version 53:0 {
+
+ Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ static InnerClass C=class NoClones$C of class NoClones;
+ static abstract interface InnerClass I2=class NoClones$I2 of class NoClones;
+
+} // end Class NoClones$C
+
+
+super public class NoClones version 53:0 {
+
+ public Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+ static Method test:"(LNoClones$I2;)Ljava/lang/Object;" stack 1 locals 1 {
+ aload_0;
+ invokeinterface InterfaceMethod NoClones$I2.clone:"()Ljava/lang/Object;", 1;
+ areturn;
+ }
+
+ public static Method main:"([Ljava/lang/String;)V" stack 3 locals 2 {
+ try t0;
+ new class NoClones$C;
+ dup;
+ invokespecial Method NoClones$C."<init>":"()V";
+ invokestatic Method test:"(LNoClones$I2;)Ljava/lang/Object;";
+ checkcast class java/lang/String;
+ astore_1;
+ new class java/lang/RuntimeException;
+ dup;
+ ldc String "Expected NSME not thrown";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ endtry t0;
+ catch t0 java/lang/NoSuchMethodError;
+ stack_frame_type stack1;
+ stack_map class java/lang/NoSuchMethodError;
+ astore_1;
+ aload_1;
+ invokevirtual Method java/lang/NoSuchMethodError.toString:"()Ljava/lang/String;";
+ ldc String "I2.clone";
+ invokevirtual Method java/lang/String.contains:"(Ljava/lang/CharSequence;)Z";
+ ifne L47;
+ new class java/lang/RuntimeException;
+ dup;
+ ldc String "Wrong NoSuchMethodError exception thrown";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ L47: stack_frame_type same;
+ return;
+ }
+
+ static InnerClass C=class NoClones$C of class NoClones;
+ static abstract interface InnerClass I2=class NoClones$I2 of class NoClones;
+
+} // end Class NoClones
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/invokevirtual/DefMethClone.jasm Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ *
+ */
+
+interface DefMethClone version 54:0 {
+
+ public Method clone:"()Ljava/lang/Object;" stack 1 locals 1 {
+ ldc String "In DefMethClone\'s clone()";
+ areturn;
+ }
+
+} // end Class DefMethClone
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/invokevirtual/HasLocalClone.jasm Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8154587
+ * @summary Check that invokevirtual of clone() finds the clone() method that
+ * is local to the calling class.
+ * @compile DefMethClone.jasm SuperClass.jasm I1.java HasLocalClone.jasm
+ * @run main/othervm -noverify HasLocalClone
+ */
+
+// The below .jasm code implements the following java code:
+//
+// public class HasLocalClone extends SuperClass implements I1 {
+//
+// public Object clone() {
+// return "In HasLocalClone's clone()";
+// }
+//
+// static Object test(SuperClass a) { return a.clone(); }
+//
+// public static void main(String[] args) {
+// String s = (String)test(new HasLocalClone());
+// if (!s.equals("In HasLocalCloneC's clone()")) {
+// throw new RuntimeException("Wrong clone() called: " + s);
+// }
+// }
+// }
+
+
+super public class HasLocalClone extends SuperClass implements I1 version 54:0 {
+
+ public Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method SuperClass."<init>":"()V";
+ return;
+ }
+
+ public Method clone:"()Ljava/lang/Object;" stack 1 locals 1 {
+ ldc String "In HasLocalClone\'s clone()";
+ areturn;
+ }
+
+ static Method test:"(LSuperClass;)Ljava/lang/Object;" stack 1 locals 1 {
+ aload_0;
+ invokevirtual Method SuperClass.clone:"()Ljava/lang/Object;";
+ areturn;
+ }
+
+ public static Method main:"([Ljava/lang/String;)V" stack 3 locals 2 {
+ new class HasLocalClone;
+ dup;
+ invokespecial Method "<init>":"()V";
+ invokestatic Method test:"(LSuperClass;)Ljava/lang/Object;";
+ checkcast class java/lang/String;
+ astore_1;
+ aload_1;
+ ldc String "In HasLocalClone\'s clone()";
+ invokevirtual Method java/lang/String.equals:"(Ljava/lang/Object;)Z";
+ ifne L37;
+ new class java/lang/RuntimeException;
+ dup;
+ aload_1;
+ invokedynamic InvokeDynamic REF_invokeStatic:java/lang/invoke/StringConcatFactory.makeConcatWithConstants:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;":makeConcatWithConstants:"(Ljava/lang/String;)Ljava/lang/String;" String "Wrong clone() called: ";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ L37: stack_frame_type append;
+ locals_map class java/lang/String;
+ return;
+ }
+
+ public static final InnerClass Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles;
+
+} // end Class HasLocalClone
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/invokevirtual/I1.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ *
+ */
+
+interface I1 extends DefMethClone { }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/invokevirtual/I1Abstr.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ *
+ */
+
+interface I1Abstr extends DefMethClone {
+ Object clone();
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/invokevirtual/NoLocalClone.jasm Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8154587
+ * @summary Check that invokevirtual of clone() calls java.lang.Object.clone()
+ * even if a superinterface has a default method named clone().
+ * @compile DefMethClone.jasm SuperClass.jasm I1.java NoLocalClone.jasm
+ * @run main/othervm -noverify NoLocalClone
+ */
+
+// The below .jasm code implements the following java code:
+//
+// public class NoLocalClone extends SuperClass implements Cloneable,I1 {
+//
+// static Object test(SuperClass a) { return a.clone(); }
+//
+// public static void main(String[] args) {
+// Object obj = test(new NoLocalClone());
+// if (!(obj instanceof NoLocalClone)) {
+// throw new RuntimeException("Wrong clone() called.");
+// }
+// }
+// }
+
+super public class NoLocalClone extends SuperClass implements java/lang/Cloneable, I1 version 54:0 {
+
+ public Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method SuperClass."<init>":"()V";
+ return;
+ }
+
+ static Method test:"(LSuperClass;)Ljava/lang/Object;" stack 1 locals 1 {
+ aload_0;
+ invokevirtual Method SuperClass.clone:"()Ljava/lang/Object;";
+ areturn;
+ }
+
+ public static Method main:"([Ljava/lang/String;)V" stack 3 locals 2 {
+ new class NoLocalClone;
+ dup;
+ invokespecial Method "<init>":"()V";
+ invokestatic Method test:"(LSuperClass;)Ljava/lang/Object;";
+ astore_1;
+ aload_1;
+ instanceof class NoLocalClone;
+ ifne L31;
+ new class java/lang/RuntimeException;
+ dup;
+ ldc String "Wrong clone() called.";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ L31: stack_frame_type append;
+ locals_map class java/lang/Object;
+ return;
+ }
+
+} // end Class NoLocalClone
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/invokevirtual/NoLocalCloneAbstr.jasm Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/*
+ * @test
+ * @bug 8154587
+ * @summary Check that invokevirtual of clone() calls java.lang.Object.clone()
+ * even if a superinterface has an abstract method named clone().
+ * @compile DefMethClone.jasm SuperClass.jasm I1Abstr.java NoLocalCloneAbstr.jasm
+ * @run main/othervm -noverify NoLocalCloneAbstr
+ */
+
+// The below .jasm code implements the following java code:
+//
+// public class NoLocalCloneAbstr extends SuperClass implements Cloneable,I1Abstr {
+//
+// static Object test(SuperClass a) { return a.clone(); }
+//
+// public static void main(String[] args) {
+// Object obj = test(new NoLocalCloneAbstr());
+// if (!(obj instanceof NoLocalCloneAbstr)) {
+// throw new RuntimeException("Wrong clone() called.");
+// }
+// }
+// }
+
+super public class NoLocalCloneAbstr extends SuperClass implements java/lang/Cloneable, I1Abstr version 54:0 {
+
+ public Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method SuperClass."<init>":"()V";
+ return;
+ }
+
+ static Method test:"(LSuperClass;)Ljava/lang/Object;" stack 1 locals 1 {
+ aload_0;
+ invokevirtual Method SuperClass.clone:"()Ljava/lang/Object;";
+ areturn;
+ }
+
+ public static Method main:"([Ljava/lang/String;)V" stack 3 locals 2 {
+ new class NoLocalCloneAbstr;
+ dup;
+ invokespecial Method "<init>":"()V";
+ invokestatic Method test:"(LSuperClass;)Ljava/lang/Object;";
+ astore_1;
+ aload_1;
+ instanceof class NoLocalCloneAbstr;
+ ifne L31;
+ new class java/lang/RuntimeException;
+ dup;
+ ldc String "Wrong clone() called.";
+ invokespecial Method java/lang/RuntimeException."<init>":"(Ljava/lang/String;)V";
+ athrow;
+ L31: stack_frame_type append;
+ locals_map class java/lang/Object;
+ return;
+ }
+
+} // end Class NoLocalCloneAbstr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/clone/invokevirtual/SuperClass.jasm Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ *
+ */
+
+super public class SuperClass implements DefMethClone version 54:0 {
+
+ public Method "<init>":"()V" stack 1 locals 1 {
+ aload_0;
+ invokespecial Method java/lang/Object."<init>":"()V";
+ return;
+ }
+
+} // end Class SuperClass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/invokedynamic/MethodHandleConstantHelper.jasm Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 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
+ * 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 runtime/invokedynamic;
+
+super public class MethodHandleConstantHelper
+ version 51:0
+{
+
+static Field "testField":"I";
+
+static Method "testMethod":"()V"
+{
+ return;
+}
+
+public static Method "testMethodSignatureResolutionFailure":"()V"
+ stack 1 locals 1
+{
+ ldc MethodHandle REF_invokeStatic:
+ MethodHandleConstantHelper.testMethod:
+ "(LNotExist;)V";
+
+ return;
+}
+
+public static Method "testFieldSignatureResolutionFailure":"()V"
+ stack 1 locals 1
+{
+ ldc MethodHandle REF_getField:
+ MethodHandleConstantHelper.testField:
+ "LNotExist;";
+
+ return;
+}
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/invokedynamic/MethodHandleConstantTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 8188145
+ * @compile MethodHandleConstantHelper.jasm
+ * @run main runtime.invokedynamic.MethodHandleConstantTest
+ */
+package runtime.invokedynamic;
+
+import java.lang.invoke.*;
+
+public class MethodHandleConstantTest {
+ static final MethodHandles.Lookup LOOKUP = MethodHandles.lookup();
+ static final MethodType TEST_MT = MethodType.methodType(void.class);
+ static final Class<?> TEST_CLASS;
+
+ static {
+ try {
+ TEST_CLASS = Class.forName("runtime.invokedynamic.MethodHandleConstantHelper");
+ } catch (ClassNotFoundException e) {
+ throw new Error(e);
+ }
+ }
+
+ static void test(String testName, Class<? extends Throwable> expectedError) {
+ System.out.print(testName);
+ try {
+ LOOKUP.findStatic(TEST_CLASS, testName, TEST_MT).invokeExact();
+ } catch (Throwable e) {
+ if (expectedError.isInstance(e)) {
+ // expected
+ } else {
+ e.printStackTrace();
+ String msg = String.format("%s: wrong exception: %s, but %s expected",
+ testName, e.getClass().getName(), expectedError.getName());
+ throw new AssertionError(msg);
+ }
+ }
+ System.out.println(": PASSED");
+ }
+
+ public static void main(String[] args) throws Throwable {
+ test("testMethodSignatureResolutionFailure", NoSuchMethodError.class);
+ test("testFieldSignatureResolutionFailure", NoSuchFieldError.class);
+ }
+}
--- a/test/hotspot/jtreg/runtime/logging/OsCpuLoggingTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/runtime/logging/OsCpuLoggingTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -40,10 +40,7 @@
public class OsCpuLoggingTest {
static void analyzeOutputForOsLog(OutputAnalyzer output) throws Exception {
- // Aix has it's own logging
- if (!Platform.isAix()) {
- output.shouldContain("SafePoint Polling address");
- }
+ output.shouldContain("SafePoint Polling address");
output.shouldHaveExitValue(0);
}
@@ -58,7 +55,10 @@
OutputAnalyzer output = new OutputAnalyzer(pb.start());
analyzeOutputForOsCpuLog(output);
- pb = ProcessTools.createJavaProcessBuilder("-Xlog:os", "-version");
+ // PPC64 only uses polling pages when UseSIGTRAP is off.
+ pb = (Platform.isPPC() && Platform.is64bit())
+ ? ProcessTools.createJavaProcessBuilder("-Xlog:os", "-XX:-UseSIGTRAP", "-version")
+ : ProcessTools.createJavaProcessBuilder("-Xlog:os", "-version");
output = new OutputAnalyzer(pb.start());
analyzeOutputForOsLog(output);
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/os/TestUseCpuAllocPath.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.process.OutputAnalyzer;
+
+/**
+ * @test
+ * @summary If #processors > 1024 os_linux.cpp uses special coding.
+ * Excercise this by forcing usage of this coding. If this fails, this
+ * VM was either compiled on a platform which does not define CPU_ALLOC,
+ * or it is executed on a platform that does not support it.
+ * @requires os.family == "linux"
+ * @modules java.base/jdk.internal.misc
+ * @library /test/lib
+ * @run driver TestUseCpuAllocPath
+ */
+public class TestUseCpuAllocPath {
+
+ static final String SUCCESS_STRING = "active_processor_count: using dynamic path (forced)";
+
+ public static void main(String[] args) throws Exception {
+ ProcessBuilder pb =
+ ProcessTools.createJavaProcessBuilder(false,
+ "-Xlog:os=trace",
+ "-XX:+UnlockDiagnosticVMOptions",
+ "-XX:+UseCpuAllocPath",
+ "-version");
+
+ OutputAnalyzer output = new OutputAnalyzer(pb.start());
+ output.shouldContain(SUCCESS_STRING);
+ }
+}
--- a/test/hotspot/jtreg/serviceability/sa/JhsdbThreadInfoTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/serviceability/sa/JhsdbThreadInfoTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,6 +21,11 @@
* questions.
*/
+import java.util.Arrays;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
import jdk.test.lib.apps.LingeredApp;
import jdk.test.lib.JDKToolLauncher;
import jdk.test.lib.Platform;
@@ -69,7 +74,18 @@
out.shouldMatch(" JavaThread state: _thread_.+");
out.shouldNotContain(" java.lang.Thread.State: UNKNOWN");
- out.stderrShouldBeEmpty();
+
+ // stderr should be empty except for VM warnings.
+ if (!out.getStderr().isEmpty()) {
+ List<String> lines = Arrays.asList(out.getStderr().split("(\\r\\n|\\n|\\r)"));
+ Pattern p = Pattern.compile(".*VM warning.*");
+ for (String line : lines) {
+ Matcher m = p.matcher(line);
+ if (!m.matches()) {
+ throw new RuntimeException("Stderr has output other than VM warnings");
+ }
+ }
+ }
System.out.println("Test Completed");
} catch (InterruptedException ie) {
--- a/test/hotspot/jtreg/serviceability/sa/TestJhsdbJstackLock.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/hotspot/jtreg/serviceability/sa/TestJhsdbJstackLock.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,11 @@
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
import jdk.test.lib.apps.LingeredApp;
import jdk.test.lib.Asserts;
import jdk.test.lib.JDKToolLauncher;
@@ -76,7 +80,19 @@
out.shouldMatch("^\\s+- waiting to lock <0x[0-9a-f]+> \\(a java\\.lang\\.Class for LingeredAppWithLock\\)$");
out.shouldMatch("^\\s+- locked <0x[0-9a-f]+> \\(a java\\.lang\\.Thread\\)$");
out.shouldMatch("^\\s+- locked <0x[0-9a-f]+> \\(a java\\.lang\\.Class for int\\)$");
- out.stderrShouldBeEmpty();
+
+ // stderr should be empty except for VM warnings.
+ if (!out.getStderr().isEmpty()) {
+ List<String> lines = Arrays.asList(out.getStderr().split("(\\r\\n|\\n|\\r)"));
+ Pattern p = Pattern.compile(".*VM warning.*");
+ for (String line : lines) {
+ Matcher m = p.matcher(line);
+ if (!m.matches()) {
+ throw new RuntimeException("Stderr has output other than VM warnings");
+ }
+ }
+ }
+
System.out.println("Test Completed");
} finally {
--- a/test/jdk/ProblemList.txt Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/ProblemList.txt Wed Jan 17 12:19:06 2018 +0000
@@ -1,6 +1,6 @@
###########################################################################
#
-# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -197,7 +197,6 @@
com/sun/management/OperatingSystemMXBean/GetProcessCpuLoad.java 8030957 aix-all
com/sun/management/OperatingSystemMXBean/GetSystemCpuLoad.java 8030957 aix-all
sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java 8174734 generic-all
-sun/management/jdp/JdpOffTest.java 8175542 generic-all
############################################################################
@@ -218,6 +217,8 @@
java/net/DatagramSocket/SendDatagramToBadAddress.java 7143960 macosx-all
+java/net/httpclient/SplitResponseSSL.java 8194151 windows-all
+
############################################################################
# jdk_nio
@@ -264,7 +265,7 @@
sun/security/krb5/auto/UnboundSSL.java 8180265 windows-all
sun/security/provider/KeyStore/DKSTest.sh 8180266 windows-all
-sun/security/ssl/X509KeyManager/PreferredKey.java 8176354 generic-all
+sun/security/ssl/X509KeyManager/PreferredKey.java 8190333 generic-all
############################################################################
@@ -349,26 +350,24 @@
# svc_tools
-sun/tools/jcmd/TestJcmdSanity.java 8031482 windows-all
-
sun/tools/jstat/jstatClassloadOutput1.sh 8173942 generic-all
sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java 8057732 generic-all
-com/sun/tools/attach/StartManagementAgent.java 8179700 generic-all
-
############################################################################
# jdk_other
com/sun/jndi/ldap/DeadSSLLdapTimeoutTest.java 8169942 linux-i586,macosx-all,windows-x64
-javax/rmi/PortableRemoteObject/8146975/RmiIiopReturnValueTest.java 8169737 generic-all
-
-org/omg/CORBA/OrbPropertiesTest.java 8175177 generic-all
+com/sun/jndi/ldap/LdapTimeoutTest.java 8151678 linux-all
-javax/rmi/PortableRemoteObject/ConcurrentHashMapTest.java 8080643 generic-all
+javax/rmi/PortableRemoteObject/8146975/RmiIiopReturnValueTest.java 8194663 generic-all
+
+org/omg/CORBA/OrbPropertiesTest.java 8194663 generic-all
-javax/rmi/ssl/SSLSocketParametersTest.sh 8162906 generic-all
+javax/rmi/PortableRemoteObject/ConcurrentHashMapTest.java 8194663 generic-all
+
+javax/rmi/ssl/SSLSocketParametersTest.sh 8194663 generic-all
############################################################################
--- a/test/jdk/java/awt/Dialog/NestedDialogs/Modal/NestedModalDialogTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/awt/Dialog/NestedDialogs/Modal/NestedModalDialogTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -22,7 +22,8 @@
*/
/**
- * @test 8155740
+ * @test
+ * @bug 8155740
* @key headful
* @summary See <rdar://problem/3429130>: Events: actionPerformed() method not
* called when it is button is clicked (system load related)
--- a/test/jdk/java/awt/Dialog/NestedDialogs/Modeless/NestedModelessDialogTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/awt/Dialog/NestedDialogs/Modeless/NestedModelessDialogTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -22,7 +22,8 @@
*/
/**
- * @test 8155740
+ * @test
+ * @bug 8155740
* @key headful
* @summary See <rdar://problem/3429130>: Events: actionPerformed() method not
* called when it is button is clicked (system load related)
--- a/test/jdk/java/awt/Robot/ModifierRobotKey/ModifierRobotKeyTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/awt/Robot/ModifierRobotKey/ModifierRobotKeyTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -36,7 +36,8 @@
import static jdk.testlibrary.Asserts.assertTrue;
/*
- * @test 8155742
+ * @test
+ * @bug 8155742
* @key headful
* @summary Make sure that modifier key mask is set when robot press
* some key with one or more modifiers.
--- a/test/jdk/java/awt/TrayIcon/TrayIconMouseTest/TrayIconMouseTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/awt/TrayIcon/TrayIconMouseTest/TrayIconMouseTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,7 +29,8 @@
import java.awt.image.BufferedImage;
/*
- * @test 6384991
+ * @test
+ * @bug 6384991
* @summary Check if ActionEvent is triggered by a TrayIcon when
* it is double clicked with mouse button 1 on windows
* or single clicked with button 3 on Mac OS X
--- a/test/jdk/java/io/FileInputStream/UnreferencedFISClosesFd.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/io/FileInputStream/UnreferencedFISClosesFd.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -35,6 +35,8 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.lang.management.ManagementFactory;
+import java.lang.management.OperatingSystemMXBean;
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
@@ -42,6 +44,7 @@
import java.util.HashSet;
import java.util.concurrent.atomic.AtomicInteger;
+import com.sun.management.UnixOperatingSystemMXBean;
/**
* Tests for FIS unreferenced.
@@ -136,6 +139,9 @@
String name = inFile.getPath();
+ long fdCount0 = getFdCount();
+ System.out.printf("initial count of open file descriptors: %d%n", fdCount0);
+
int failCount = 0;
failCount += test(new FileInputStream(name), CleanupType.CLEANER);
@@ -150,6 +156,22 @@
if (failCount > 0) {
throw new AssertionError("Failed test count: " + failCount);
}
+
+ // Check the final count of open file descriptors
+ long fdCount = getFdCount();
+ System.out.printf("final count of open file descriptors: %d%n", fdCount);
+ if (fdCount != fdCount0) {
+ throw new AssertionError("raw fd count wrong: expected: " + fdCount0
+ + ", actual: " + fdCount);
+ }
+ }
+
+ // Get the count of open file descriptors, or -1 if not available
+ private static long getFdCount() {
+ OperatingSystemMXBean mxBean = ManagementFactory.getOperatingSystemMXBean();
+ return (mxBean instanceof UnixOperatingSystemMXBean)
+ ? ((UnixOperatingSystemMXBean) mxBean).getOpenFileDescriptorCount()
+ : -1L;
}
private static int test(FileInputStream fis, CleanupType cleanType) throws Exception {
--- a/test/jdk/java/io/FileOutputStream/UnreferencedFOSClosesFd.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/io/FileOutputStream/UnreferencedFOSClosesFd.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,15 +30,22 @@
* the specification.
* @run main/othervm UnreferencedFOSClosesFd
*/
-import java.io.*;
+import java.io.File;
+import java.io.FileDescriptor;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.lang.management.ManagementFactory;
+import java.lang.management.OperatingSystemMXBean;
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.util.HashSet;
-import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
+import com.sun.management.UnixOperatingSystemMXBean;
+
public class UnreferencedFOSClosesFd {
enum CleanupType {
@@ -118,12 +125,17 @@
*/
public static void main(String argv[]) throws Exception {
+
+
File inFile = new File(System.getProperty("test.dir", "."), FILE_NAME);
inFile.createNewFile();
inFile.deleteOnExit();
String name = inFile.getPath();
+ long fdCount0 = getFdCount();
+ System.out.printf("initial count of open file descriptors: %d%n", fdCount0);
+
int failCount = 0;
failCount += test(new FileOutputStream(name), CleanupType.CLEANER);
@@ -138,8 +150,23 @@
if (failCount > 0) {
throw new AssertionError("Failed test count: " + failCount);
}
+
+ // Check the final count of open file descriptors
+ long fdCount = getFdCount();
+ System.out.printf("final count of open file descriptors: %d%n", fdCount);
+ if (fdCount != fdCount0) {
+ throw new AssertionError("raw fd count wrong: expected: " + fdCount0
+ + ", actual: " + fdCount);
+ }
}
+ // Get the count of open file descriptors, or -1 if not available
+ private static long getFdCount() {
+ OperatingSystemMXBean mxBean = ManagementFactory.getOperatingSystemMXBean();
+ return (mxBean instanceof UnixOperatingSystemMXBean)
+ ? ((UnixOperatingSystemMXBean) mxBean).getOpenFileDescriptorCount()
+ : -1L;
+ }
private static int test(FileOutputStream fos, CleanupType cleanType) throws Exception {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/io/InputStream/NullInputStream.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,200 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import org.testng.annotations.AfterGroups;
+import org.testng.annotations.BeforeGroups;
+import org.testng.annotations.Test;
+import static org.testng.Assert.*;
+
+/*
+ * @test
+ * @bug 4358774
+ * @run testng NullInputStream
+ * @summary Check for expected behavior of InputStream.nullInputStream().
+ */
+public class NullInputStream {
+ private static InputStream openStream;
+ private static InputStream closedStream;
+
+ @BeforeGroups(groups="open")
+ public static void openStream() {
+ openStream = InputStream.nullInputStream();
+ }
+
+ @BeforeGroups(groups="closed")
+ public static void openAndCloseStream() {
+ closedStream = InputStream.nullInputStream();
+ try {
+ closedStream.close();
+ } catch (IOException e) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @AfterGroups(groups="open")
+ public static void closeStream() {
+ try {
+ openStream.close();
+ } catch (IOException e) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @Test(groups = "open")
+ public static void testOpen() {
+ assertNotNull(openStream, "InputStream.nullInputStream() returned null");
+ }
+
+ @Test(groups = "open")
+ public static void testAvailable() {
+ try {
+ assertEquals(0, openStream.available(), "available() != 0");
+ } catch (IOException ioe) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @Test(groups = "open")
+ public static void testRead() {
+ try {
+ assertEquals(-1, openStream.read(), "read() != -1");
+ } catch (IOException ioe) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @Test(groups = "open")
+ public static void testReadBII() {
+ try {
+ assertEquals(-1, openStream.read(new byte[1], 0, 1),
+ "read(byte[],int,int) != -1");
+ } catch (IOException ioe) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @Test(groups = "open")
+ public static void testReadAllBytes() {
+ try {
+ assertEquals(0, openStream.readAllBytes().length,
+ "readAllBytes().length != 0");
+ } catch (IOException ioe) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @Test(groups = "open")
+ public static void testreadNBytes() {
+ try {
+ assertEquals(0, openStream.readNBytes(new byte[1], 0, 1),
+ "readNBytes(byte[],int,int) != 0");
+ } catch (IOException ioe) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @Test(groups = "open")
+ public static void testSkip() {
+ try {
+ assertEquals(0, openStream.skip(1), "skip() != 0");
+ } catch (IOException ioe) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @Test(groups = "open")
+ public static void testTransferTo() {
+ try {
+ assertEquals(0, openStream.transferTo(new ByteArrayOutputStream(7)),
+ "transferTo() != 0");
+ } catch (IOException ioe) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @Test(groups = "closed")
+ public static void testAvailableClosed() {
+ try {
+ closedStream.available();
+ fail("Expected IOException not thrown");
+ } catch (IOException e) {
+ }
+ }
+
+ @Test(groups = "closed")
+ public static void testReadClosed() {
+ try {
+ closedStream.read();
+ fail("Expected IOException not thrown");
+ } catch (IOException e) {
+ }
+ }
+
+ @Test(groups = "closed")
+ public static void testReadBIIClosed() {
+ try {
+ closedStream.read(new byte[1], 0, 1);
+ fail("Expected IOException not thrown");
+ } catch (IOException e) {
+ }
+ }
+
+ @Test(groups = "closed")
+ public static void testReadAllBytesClosed() {
+ try {
+ closedStream.readAllBytes();
+ fail("Expected IOException not thrown");
+ } catch (IOException e) {
+ }
+ }
+
+ @Test(groups = "closed")
+ public static void testReadNBytesClosed() {
+ try {
+ closedStream.readNBytes(new byte[1], 0, 1);
+ fail("Expected IOException not thrown");
+ } catch (IOException e) {
+ }
+ }
+
+ @Test(groups = "closed")
+ public static void testSkipClosed() {
+ try {
+ closedStream.skip(1);
+ fail("Expected IOException not thrown");
+ } catch (IOException e) {
+ }
+ }
+
+ @Test(groups = "closed")
+ public static void testTransferToClosed() {
+ try {
+ closedStream.transferTo(new ByteArrayOutputStream(7));
+ fail("Expected IOException not thrown");
+ } catch (IOException e) {
+ }
+ }
+}
--- a/test/jdk/java/io/InputStream/ReadParams.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/io/InputStream/ReadParams.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 4008296 4008293 4190090 4193729
+ * @bug 4008296 4008293 4190090 4193729 4358774
* @summary Check for correct handling of parameters to
* XXXXInputStream.read(b, off, len).
*
@@ -197,6 +197,11 @@
doTest1(ifs);
ifs.close();
+ InputStream nis = InputStream.nullInputStream();
+ doTest(nis);
+ doTest1(nis);
+ nis.close();
+
/* cleanup */
fn.delete();
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/io/OutputStream/NullOutputStream.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.IOException;
+import java.io.OutputStream;
+import org.testng.annotations.AfterGroups;
+import org.testng.annotations.BeforeGroups;
+import org.testng.annotations.Test;
+import static org.testng.Assert.*;
+
+/*
+ * @test
+ * @bug 4358774
+ * @run testng NullOutputStream
+ * @summary Check for expected behavior of OutputStream.nullOutputStream().
+ */
+public class NullOutputStream {
+ private static OutputStream openStream;
+ private static OutputStream closedStream;
+
+ @BeforeGroups(groups="open")
+ public static void openStream() {
+ openStream = OutputStream.nullOutputStream();
+ }
+
+ @BeforeGroups(groups="closed")
+ public static void openAndCloseStream() {
+ closedStream = OutputStream.nullOutputStream();
+ try {
+ closedStream.close();
+ } catch (IOException e) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @AfterGroups(groups="open")
+ public static void closeStream() {
+ try {
+ openStream.close();
+ } catch (IOException e) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @Test(groups="open")
+ public static void testOpen() {
+ assertNotNull(openStream,
+ "OutputStream.nullOutputStream() returned null");
+ }
+
+ @Test(groups="open")
+ public static void testWrite() {
+ try {
+ openStream.write(62832);
+ } catch (IOException e) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @Test(groups="open")
+ public static void testWriteBII() {
+ try {
+ openStream.write(new byte[] {(byte)6}, 0, 1);
+ } catch (Exception e) {
+ fail("Unexpected IOException");
+ }
+ }
+
+ @Test(groups="closed")
+ public static void testWriteClosed() {
+ try {
+ closedStream.write(62832);
+ fail("Expected IOException not thrown");
+ } catch (IOException e) {
+ }
+ }
+
+ @Test(groups="closed")
+ public static void testWriteBIIClosed() {
+ try {
+ closedStream.write(new byte[] {(byte)6}, 0, 1);
+ fail("Expected IOException not thrown");
+ } catch (IOException e) {
+ }
+ }
+}
--- a/test/jdk/java/io/OutputStream/WriteParams.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/io/OutputStream/WriteParams.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 1267039 1267043 4193729
+ * @bug 1267039 1267043 4193729 4358774
* @summary Check for correct handling of parameters to
* XXXXOutputStream.write(b, off, len).
*
@@ -152,6 +152,11 @@
doTest1(dfos);
dfos.close();
+ OutputStream nos = OutputStream.nullOutputStream();
+ doTest(nos);
+ doTest1(nos);
+ nos.close();
+
/* cleanup */
fn.delete();
--- a/test/jdk/java/io/RandomAccessFile/UnreferencedRAFClosesFd.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/io/RandomAccessFile/UnreferencedRAFClosesFd.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,9 +23,10 @@
import java.io.File;
import java.io.FileDescriptor;
-import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
+import java.lang.management.ManagementFactory;
+import java.lang.management.OperatingSystemMXBean;
import java.lang.ref.Cleaner;
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
@@ -33,6 +34,8 @@
import java.lang.reflect.Field;
import java.util.HashSet;
+import com.sun.management.UnixOperatingSystemMXBean;
+
/**
* @test
* @bug 8080225
@@ -51,6 +54,9 @@
inFile.createNewFile();
inFile.deleteOnExit();
+ long fdCount0 = getFdCount();
+ System.out.printf("initial count of open file descriptors: %d%n", fdCount0);
+
String name = inFile.getPath();
RandomAccessFile raf;
try {
@@ -92,5 +98,22 @@
Reference.reachabilityFence(fd);
Reference.reachabilityFence(raf);
Reference.reachabilityFence(pending);
+
+ // Check the final count of open file descriptors
+ long fdCount = getFdCount();
+ System.out.printf("final count of open file descriptors: %d%n", fdCount);
+ if (fdCount != fdCount0) {
+ throw new AssertionError("raw fd count wrong: expected: " + fdCount0
+ + ", actual: " + fdCount);
+ }
+ }
+
+
+ // Get the count of open file descriptors, or -1 if not available
+ private static long getFdCount() {
+ OperatingSystemMXBean mxBean = ManagementFactory.getOperatingSystemMXBean();
+ return (mxBean instanceof UnixOperatingSystemMXBean)
+ ? ((UnixOperatingSystemMXBean) mxBean).getOpenFileDescriptorCount()
+ : -1L;
}
}
--- a/test/jdk/java/lang/StackWalker/SecurityExceptions.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/lang/StackWalker/SecurityExceptions.java Wed Jan 17 12:19:06 2018 +0000
@@ -22,7 +22,8 @@
*/
/*
- * @test 8020968
+ * @test
+ * @bug 8020968
* @summary Test security permission check
* @run main/othervm/java.security.policy=noperms.policy SecurityExceptions true
* @run main/othervm/java.security.policy=stackwalk.policy SecurityExceptions false
--- a/test/jdk/java/lang/System/LoggerFinder/internal/SystemLoggerInPlatformLoader/SystemLoggerInPlatformLoader.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/lang/System/LoggerFinder/internal/SystemLoggerInPlatformLoader/SystemLoggerInPlatformLoader.java Wed Jan 17 12:19:06 2018 +0000
@@ -31,7 +31,8 @@
import java.lang.reflect.Method;
/*
- * @test 8163162
+ * @test
+ * @bug 8163162
* @summary Checks that LazyLoggers are returned for System.Logger instances
* created by modules in the platform class loader.
* @modules java.base/java.lang:open
--- a/test/jdk/java/net/httpclient/HeadersTest1.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/net/httpclient/HeadersTest1.java Wed Jan 17 12:19:06 2018 +0000
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 8153142
+ * @bug 8153142 8195138
* @modules jdk.incubator.httpclient
* jdk.httpserver
* @run testng/othervm HeadersTest1
@@ -113,8 +113,16 @@
}
// toString
- hd.toString().toLowerCase().contains("content-length");
- hd.toString().toLowerCase().contains("x-foo-response");
+ assertTrue(hd.toString().toLowerCase().contains("content-length"));
+ assertTrue(hd.toString().toLowerCase().contains("x-foo-response"));
+ assertTrue(hd.toString().toLowerCase().contains("x-multi-line-response"));
+
+ // multi-line
+ List<String> multiline = hd.allValues("x-multi-line-response");
+ assertTrue(multiline.get(0).startsWith("Custom "));
+ assertTrue(multiline.get(0).contains(" foo=\"bar\""));
+ assertTrue(multiline.get(0).contains(" bar=\"foo\""));
+ assertTrue(multiline.get(0).contains(" foobar=\"barfoo\""));
} finally {
server.stop(0);
e.shutdownNow();
@@ -138,6 +146,9 @@
Headers h = he.getResponseHeaders();
h.add("X-Foo-Response", "resp1");
h.add("X-Foo-Response", "resp2");
+ h.add("X-multi-line-response", "Custom foo=\"bar\","
+ + "\r\n bar=\"foo\","
+ + "\r\n foobar=\"barfoo\"");
he.sendResponseHeaders(200, RESPONSE.length());
OutputStream os = he.getResponseBody();
os.write(RESPONSE.getBytes(US_ASCII));
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/net/httpclient/http2/ImplicitPushCancel.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,185 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @library /lib/testlibrary server
+ * @build jdk.testlibrary.SimpleSSLContext
+ * @modules java.base/sun.net.www.http
+ * jdk.incubator.httpclient/jdk.incubator.http.internal.common
+ * jdk.incubator.httpclient/jdk.incubator.http.internal.frame
+ * jdk.incubator.httpclient/jdk.incubator.http.internal.hpack
+ * @run testng/othervm -Djdk.internal.httpclient.debug=true -Djdk.httpclient.HttpClient.log=errors,requests,responses,trace ImplicitPushCancel
+ */
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+import jdk.incubator.http.HttpClient;
+import jdk.incubator.http.HttpRequest;
+import jdk.incubator.http.HttpResponse;
+import jdk.incubator.http.HttpResponse.BodyHandler;
+import jdk.incubator.http.HttpResponse.PushPromiseHandler;
+import jdk.incubator.http.internal.common.HttpHeadersImpl;
+import org.testng.annotations.AfterTest;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.testng.Assert.assertEquals;
+
+public class ImplicitPushCancel {
+
+ static Map<String,String> PUSH_PROMISES = Map.of(
+ "/x/y/z/1", "the first push promise body",
+ "/x/y/z/2", "the second push promise body",
+ "/x/y/z/3", "the third push promise body",
+ "/x/y/z/4", "the fourth push promise body",
+ "/x/y/z/5", "the fifth push promise body",
+ "/x/y/z/6", "the sixth push promise body",
+ "/x/y/z/7", "the seventh push promise body",
+ "/x/y/z/8", "the eight push promise body",
+ "/x/y/z/9", "the ninth push promise body"
+ );
+ static final String MAIN_RESPONSE_BODY = "the main response body";
+
+ Http2TestServer server;
+ URI uri;
+
+ @BeforeTest
+ public void setup() throws Exception {
+ server = new Http2TestServer(false, 0);
+ Http2Handler handler = new ServerPushHandler(MAIN_RESPONSE_BODY,
+ PUSH_PROMISES);
+ server.addHandler(handler, "/");
+ server.start();
+ int port = server.getAddress().getPort();
+ System.err.println("Server listening on port " + port);
+ uri = new URI("http://127.0.0.1:" + port + "/foo/a/b/c");
+ }
+
+ @AfterTest
+ public void teardown() {
+ server.stop();
+ }
+
+ static final <T> HttpResponse<T> assert200ResponseCode(HttpResponse<T> response) {
+ assertEquals(response.statusCode(), 200);
+ return response;
+ }
+
+ /*
+ * With a handler not capable of accepting push promises, then all push
+ * promises should be rejected / cancelled, without interfering with the
+ * main response.
+ */
+ @Test
+ public void test() throws Exception {
+ HttpClient client = HttpClient.newHttpClient();
+
+ client.sendAsync(HttpRequest.newBuilder(uri).build(), BodyHandler.asString())
+ .thenApply(ImplicitPushCancel::assert200ResponseCode)
+ .thenApply(HttpResponse::body)
+ .thenAccept(body -> body.equals(MAIN_RESPONSE_BODY))
+ .join();
+
+ ConcurrentMap<HttpRequest, CompletableFuture<HttpResponse<String>>> promises
+ = new ConcurrentHashMap<>();
+ PushPromiseHandler<String> pph = PushPromiseHandler
+ .withPushPromises((r) -> BodyHandler.asString(), promises);
+ HttpResponse<String> main = client.sendAsync(
+ HttpRequest.newBuilder(uri).build(),
+ BodyHandler.asString(),
+ pph)
+ .join();
+
+ promises.entrySet().stream().forEach(e -> System.out.println(e.getKey() + ":" + e.getValue().join().body()));
+
+ promises.putIfAbsent(main.request(), CompletableFuture.completedFuture(main));
+ promises.entrySet().stream().forEach(entry -> {
+ HttpRequest request = entry.getKey();
+ HttpResponse<String> response = entry.getValue().join();
+ assertEquals(response.statusCode(), 200);
+ if (PUSH_PROMISES.containsKey(request.uri().getPath())) {
+ assertEquals(response.body(), PUSH_PROMISES.get(request.uri().getPath()));
+ } else {
+ assertEquals(response.body(), MAIN_RESPONSE_BODY);
+ }
+
+ } );
+ }
+
+ // --- server push handler ---
+ static class ServerPushHandler implements Http2Handler {
+
+ private final String mainResponseBody;
+ private final Map<String,String> promises;
+
+ public ServerPushHandler(String mainResponseBody,
+ Map<String,String> promises)
+ throws Exception
+ {
+ Objects.requireNonNull(promises);
+ this.mainResponseBody = mainResponseBody;
+ this.promises = promises;
+ }
+
+ public void handle(Http2TestExchange exchange) throws IOException {
+ System.err.println("Server: handle " + exchange);
+ try (InputStream is = exchange.getRequestBody()) {
+ is.readAllBytes();
+ }
+
+ if (exchange.serverPushAllowed()) {
+ pushPromises(exchange);
+ }
+
+ // response data for the main response
+ try (OutputStream os = exchange.getResponseBody()) {
+ byte[] bytes = mainResponseBody.getBytes(UTF_8);
+ exchange.sendResponseHeaders(200, bytes.length);
+ os.write(bytes);
+ }
+ }
+
+ private void pushPromises(Http2TestExchange exchange) throws IOException {
+ URI requestURI = exchange.getRequestURI();
+ for (Map.Entry<String,String> promise : promises.entrySet()) {
+ URI uri = requestURI.resolve(promise.getKey());
+ InputStream is = new ByteArrayInputStream(promise.getValue().getBytes(UTF_8));
+ HttpHeadersImpl headers = new HttpHeadersImpl();
+ exchange.serverPush(uri, headers, is);
+ }
+ System.err.println("Server: All pushes sent");
+ }
+ }
+}
+
--- a/test/jdk/java/net/httpclient/http2/server/Http2TestServerConnection.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/net/httpclient/http2/server/Http2TestServerConnection.java Wed Jan 17 12:19:06 2018 +0000
@@ -643,11 +643,21 @@
// This should mean depending on what the
// handler is doing: either an EOF on read
// or an IOException if writing the response.
- q.orderlyClose();
- BodyOutputStream oq = outStreams.get(stream);
- if (oq != null)
- oq.closeInternal();
-
+ if (q != null) {
+ q.orderlyClose();
+ BodyOutputStream oq = outStreams.get(stream);
+ if (oq != null)
+ oq.closeInternal();
+ } else if (pushStreams.contains(stream)) {
+ // we could interrupt the pushStream's output
+ // but the continuation, even after a reset
+ // should be handle gracefully by the client
+ // anyway.
+ } else {
+ System.err.println("TestServer: Unexpected frame on: " + stream);
+ System.err.println(frame);
+ throw new IOException("Unexpected frame");
+ }
} else {
q.put(frame);
}
--- a/test/jdk/java/net/httpclient/whitebox/Http1HeaderParserTestDriver.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/net/httpclient/whitebox/Http1HeaderParserTestDriver.java Wed Jan 17 12:19:06 2018 +0000
@@ -23,6 +23,7 @@
/*
* @test
+ * @bug 8195138
* @modules jdk.incubator.httpclient
* @run testng jdk.incubator.httpclient/jdk.incubator.http.Http1HeaderParserTest
*/
--- a/test/jdk/java/net/httpclient/whitebox/jdk.incubator.httpclient/jdk/incubator/http/Http1HeaderParserTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/net/httpclient/whitebox/jdk.incubator.httpclient/jdk/incubator/http/Http1HeaderParserTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -175,8 +175,15 @@
" \t \t charset=UTF-8\r\n" + // mix of preceding SP and HT
"Connection: keep-alive\r\n\r\n" +
"XXYYZZAABBCCDDEEFFGGHHII",
+
+ "HTTP/1.1 401 Unauthorized\r\n" +
+ "WWW-Authenticate: Digest realm=\"wally land\","
+ +"$NEWLINE domain=/,"
+ +"$NEWLINE nonce=\"2B7F3A2B\","
+ +"$NEWLINE\tqop=\"auth\"\r\n\r\n",
+
};
- for (String newLineChar : new String[] { "\n", "\r" }) {
+ for (String newLineChar : new String[] { "\n", "\r", "\r\n" }) {
for (String template : foldingTemplate)
responses.add(template.replace("$NEWLINE", newLineChar));
}
@@ -331,7 +338,7 @@
assertEquals(values.size(), otherValues.size(),
format("%s. Expected list size %d, actual size %s",
msg, values.size(), otherValues.size()));
- if (!values.containsAll(otherValues) && otherValues.containsAll(values))
+ if (!(values.containsAll(otherValues) && otherValues.containsAll(values)))
assertTrue(false, format("Lists are unequal [%s] [%s]", values, otherValues));
break;
}
--- a/test/jdk/java/security/cert/PKIXBuilderParameters/InvalidParameters.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/security/cert/PKIXBuilderParameters/InvalidParameters.java Wed Jan 17 12:19:06 2018 +0000
@@ -23,7 +23,7 @@
/*
* @test
- * @test 4422738
+ * @bug 4422738
* @compile InvalidParameters.java
* @run main InvalidParameters
* @summary Make sure PKIXBuilderParameters(Set) detects invalid
--- a/test/jdk/java/security/cert/PKIXParameters/InvalidParameters.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/security/cert/PKIXParameters/InvalidParameters.java Wed Jan 17 12:19:06 2018 +0000
@@ -23,7 +23,7 @@
/**
* @test
- * @test 4422738
+ * @bug 4422738
* @compile InvalidParameters.java
* @run main InvalidParameters
* @summary Make sure PKIXParameters(Set) and setTrustAnchors() detects invalid
--- a/test/jdk/java/util/AbstractCollection/ToString.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/AbstractCollection/ToString.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,8 +29,13 @@
* @author Josh Bloch, Martin Buchholz
*/
-import java.util.*;
-import java.util.concurrent.*;
+import java.util.AbstractCollection;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.Vector;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.CopyOnWriteArraySet;
public class ToString {
private static void realMain(String[] args) {
--- a/test/jdk/java/util/AbstractList/CheckForComodification.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/AbstractList/CheckForComodification.java Wed Jan 17 12:19:06 2018 +0000
@@ -30,7 +30,9 @@
* @ignore Bug fix temporarily removed as it uncovered other bugs (4992226)
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.ConcurrentModificationException;
+import java.util.List;
public class CheckForComodification {
private static final int LENGTH = 10;
--- a/test/jdk/java/util/AbstractList/FailFastIterator.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/AbstractList/FailFastIterator.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,10 @@
* *after* the set/add/remove operations were performed.
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.ConcurrentModificationException;
+import java.util.List;
+import java.util.ListIterator;
public class FailFastIterator {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/AbstractList/HasNextAfterException.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/AbstractList/HasNextAfterException.java Wed Jan 17 12:19:06 2018 +0000
@@ -30,7 +30,10 @@
* @author Konstantin Kladko
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.NoSuchElementException;
public class HasNextAfterException {
public static void main(String[] args) {
--- a/test/jdk/java/util/AbstractMap/AbstractMapClone.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/AbstractMap/AbstractMapClone.java Wed Jan 17 12:19:06 2018 +0000
@@ -30,7 +30,10 @@
* @author Konstantin Kladko
*/
-import java.util.*;
+import java.util.AbstractMap;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
public class AbstractMapClone extends AbstractMap implements Cloneable {
--- a/test/jdk/java/util/AbstractMap/Equals.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/AbstractMap/Equals.java Wed Jan 17 12:19:06 2018 +0000
@@ -21,7 +21,12 @@
* questions.
*/
-import java.util.*;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
/**
* @test
--- a/test/jdk/java/util/AbstractMap/SimpleEntries.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/AbstractMap/SimpleEntries.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,9 +28,10 @@
* @author Martin Buchholz
*/
-import java.util.*;
-import java.util.concurrent.*;
-import static java.util.AbstractMap.*;
+import java.util.Map;
+
+import static java.util.AbstractMap.SimpleEntry;
+import static java.util.AbstractMap.SimpleImmutableEntry;
public class SimpleEntries {
private static String k = "foo";
--- a/test/jdk/java/util/AbstractMap/ToString.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/AbstractMap/ToString.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,7 +29,8 @@
* @author Josh Bloch
*/
-import java.util.*;
+import java.util.LinkedHashMap;
+import java.util.Map;
public class ToString {
public static void main(String[] args) {
--- a/test/jdk/java/util/AbstractSequentialList/AddAll.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/AbstractSequentialList/AddAll.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,11 @@
* @summary AddAll(int, Collection) intersperses the Collection with this List.
*/
-import java.util.*;
+import java.util.AbstractSequentialList;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.ListIterator;
public class AddAll {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/ArrayList/AddAll.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/ArrayList/AddAll.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,12 @@
* @author Josh Bloch
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
+import java.util.WeakHashMap;
public class AddAll {
public static void main(String[] args) {
--- a/test/jdk/java/util/ArrayList/Bug6533203.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/ArrayList/Bug6533203.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,9 @@
* @summary AbstractList.ListItr.add might corrupt iterator state if enclosing add throws
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListIterator;
@SuppressWarnings({"serial","unchecked"})
public class Bug6533203 {
--- a/test/jdk/java/util/ArrayList/IteratorMicroBenchmark.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/ArrayList/IteratorMicroBenchmark.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,9 +27,12 @@
* @run main IteratorMicroBenchmark iterations=1 size=8 warmup=0
*/
+import static java.util.stream.Collectors.toList;
+
import java.lang.ref.WeakReference;
import java.util.ArrayDeque;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
@@ -165,16 +168,11 @@
}
private static Job[] filter(Pattern filter, Job[] jobs) {
- if (filter == null) return jobs;
- Job[] newJobs = new Job[jobs.length];
- int n = 0;
- for (Job job : jobs)
- if (filter.matcher(job.name()).find())
- newJobs[n++] = job;
- // Arrays.copyOf not available in JDK 5
- Job[] ret = new Job[n];
- System.arraycopy(newJobs, 0, ret, 0, n);
- return ret;
+ return (filter == null) ? jobs
+ : Arrays.stream(jobs)
+ .filter(job -> filter.matcher(job.name()).find())
+ .collect(toList())
+ .toArray(new Job[0]);
}
private static void deoptimize(int sum) {
--- a/test/jdk/java/util/ArrayList/RangeCheckMicroBenchmark.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/ArrayList/RangeCheckMicroBenchmark.java Wed Jan 17 12:19:06 2018 +0000
@@ -32,9 +32,14 @@
* @author Martin Buchholz
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.CountDownLatch;
import java.util.regex.Pattern;
-import java.util.concurrent.CountDownLatch;
+
+import static java.util.stream.Collectors.toList;
public class RangeCheckMicroBenchmark {
abstract static class Job {
@@ -133,16 +138,11 @@
}
private static Job[] filter(Pattern filter, Job[] jobs) {
- if (filter == null) return jobs;
- Job[] newJobs = new Job[jobs.length];
- int n = 0;
- for (Job job : jobs)
- if (filter.matcher(job.name()).find())
- newJobs[n++] = job;
- // Arrays.copyOf not available in JDK 5
- Job[] ret = new Job[n];
- System.arraycopy(newJobs, 0, ret, 0, n);
- return ret;
+ return (filter == null) ? jobs
+ : Arrays.stream(jobs)
+ .filter(job -> filter.matcher(job.name()).find())
+ .collect(toList())
+ .toArray(new Job[0]);
}
private static void deoptimize(ArrayList<Integer> list) {
--- a/test/jdk/java/util/Arrays/StreamAndSpliterator.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Arrays/StreamAndSpliterator.java Wed Jan 17 12:19:06 2018 +0000
@@ -22,7 +22,8 @@
*/
/**
- * @test 8037857
+ * @test
+ * @bug 8037857
* @summary tests for stream and spliterator factory methods
* @run testng StreamAndSpliterator
*/
--- a/test/jdk/java/util/Arrays/largeMemory/ParallelPrefix.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Arrays/largeMemory/ParallelPrefix.java Wed Jan 17 12:19:06 2018 +0000
@@ -22,7 +22,8 @@
*/
/**
- * @test 8014076 8025067
+ * @test
+ * @bug 8014076 8025067
* @summary unit test for Arrays.ParallelPrefix().
* @author Tristan Yan
* @modules java.management jdk.management
--- a/test/jdk/java/util/Base64/TestBase64.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Base64/TestBase64.java Wed Jan 17 12:19:06 2018 +0000
@@ -22,8 +22,9 @@
*/
/**
- * @test 4235519 8004212 8005394 8007298 8006295 8006315 8006530 8007379 8008925
- * 8014217 8025003 8026330 8028397 8129544 8165243
+ * @test
+ * @bug 4235519 8004212 8005394 8007298 8006295 8006315 8006530 8007379 8008925
+ * 8014217 8025003 8026330 8028397 8129544 8165243
* @summary tests java.util.Base64
* @library /test/lib
* @build jdk.test.lib.RandomFactory
--- a/test/jdk/java/util/Base64/TestBase64Golden.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Base64/TestBase64Golden.java Wed Jan 17 12:19:06 2018 +0000
@@ -22,7 +22,8 @@
*/
/*
- * @test 4235519
+ * @test
+ * @bug 4235519
* @author Eric Wang <yiming.wang@oracle.com>
* @summary tests java.util.Base64
*/
--- a/test/jdk/java/util/Collection/BiggernYours.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collection/BiggernYours.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,9 +28,27 @@
* @author Martin Buchholz
*/
-import java.io.*;
-import java.util.*;
-import java.util.concurrent.*;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Map;
+import java.util.NavigableMap;
+import java.util.NavigableSet;
+import java.util.Objects;
+import java.util.Random;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedDeque;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.ConcurrentSkipListMap;
+import java.util.concurrent.ConcurrentSkipListSet;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.LinkedTransferQueue;
+import java.util.concurrent.PriorityBlockingQueue;
@SuppressWarnings("unchecked")
public class BiggernYours {
@@ -152,7 +170,7 @@
static int randomize(int size) { return rnd.nextInt(size + 2); }
@SuppressWarnings("serial")
- private static void realMain(String[] args) throws Throwable {
+ private static void realMain(String[] args) {
testNavigableMaps(
new ConcurrentSkipListMap(),
new ConcurrentSkipListMap() {
@@ -232,7 +250,7 @@
static void arrayEqual(Object[] x, Object[] y) {
if (x == null ? y == null : Arrays.equals(x, y)) pass();
else fail(Arrays.toString(x) + " not equal to " + Arrays.toString(y));}
- public static void main(String[] args) throws Throwable {
+ public static void main(String[] args) {
try {realMain(args);} catch (Throwable t) {unexpected(t);}
System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
if (failed > 0) throw new AssertionError("Some tests failed");}
--- a/test/jdk/java/util/Collection/HotPotatoes.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collection/HotPotatoes.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,9 +28,16 @@
* @author Martin Buchholz
*/
-import java.lang.reflect.*;
-import java.util.*;
-import java.util.concurrent.*;
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.PriorityQueue;
+import java.util.Vector;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.PriorityBlockingQueue;
@SuppressWarnings("unchecked")
public class HotPotatoes {
--- a/test/jdk/java/util/Collection/IteratorAtEnd.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collection/IteratorAtEnd.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,8 +28,34 @@
* @author Martin Buchholz
*/
-import java.util.*;
-import java.util.concurrent.*;
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.IdentityHashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.PriorityQueue;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.Vector;
+import java.util.WeakHashMap;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedDeque;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.ConcurrentSkipListMap;
+import java.util.concurrent.ConcurrentSkipListSet;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.LinkedTransferQueue;
@SuppressWarnings("unchecked")
public class IteratorAtEnd {
--- a/test/jdk/java/util/Collection/IteratorMicroBenchmark.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collection/IteratorMicroBenchmark.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,10 +28,10 @@
*/
import static java.util.stream.Collectors.summingInt;
+import static java.util.stream.Collectors.toList;
import java.lang.ref.WeakReference;
import java.util.ArrayDeque;
-import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -205,12 +205,10 @@
}
private static List<Job> filter(Pattern filter, List<Job> jobs) {
- if (filter == null) return jobs;
- ArrayList<Job> newJobs = new ArrayList<>();
- for (Job job : jobs)
- if (filter.matcher(job.name()).find())
- newJobs.add(job);
- return newJobs;
+ return (filter == null) ? jobs
+ : jobs.stream()
+ .filter(job -> filter.matcher(job.name()).find())
+ .collect(toList());
}
private static void deoptimize(int sum) {
@@ -270,24 +268,24 @@
abq.add(abq.remove());
}
- ArrayList<Job> jobs = new ArrayList<>(Arrays.asList());
+ ArrayList<Job> jobs = new ArrayList<>();
- List.of(al, ad, abq,
- new LinkedList<>(al),
- new PriorityQueue<>(al),
- new Vector<>(al),
- new ConcurrentLinkedQueue<>(al),
- new ConcurrentLinkedDeque<>(al),
- new LinkedBlockingQueue<>(al),
- new LinkedBlockingDeque<>(al),
- new LinkedTransferQueue<>(al),
- new PriorityBlockingQueue<>(al))
- .stream()
- .forEach(x -> {
- jobs.addAll(collectionJobs(x));
- if (x instanceof Deque)
- jobs.addAll(dequeJobs((Deque<Integer>)x));
- });
+ List.<Collection<Integer>>of(
+ al, ad, abq,
+ new LinkedList<>(al),
+ new PriorityQueue<>(al),
+ new Vector<>(al),
+ new ConcurrentLinkedQueue<>(al),
+ new ConcurrentLinkedDeque<>(al),
+ new LinkedBlockingQueue<>(al),
+ new LinkedBlockingDeque<>(al),
+ new LinkedTransferQueue<>(al),
+ new PriorityBlockingQueue<>(al)).forEach(
+ x -> {
+ jobs.addAll(collectionJobs(x));
+ if (x instanceof Deque)
+ jobs.addAll(dequeJobs((Deque<Integer>)x));
+ });
if (reverse) Collections.reverse(jobs);
if (shuffle) Collections.shuffle(jobs);
--- a/test/jdk/java/util/Collection/RemoveMicroBenchmark.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collection/RemoveMicroBenchmark.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,6 +27,8 @@
* @run main RemoveMicroBenchmark iterations=1 size=8 warmup=0
*/
+import static java.util.stream.Collectors.toList;
+
import java.lang.ref.WeakReference;
import java.util.ArrayDeque;
import java.util.ArrayList;
@@ -202,12 +204,10 @@
}
private static List<Job> filter(Pattern filter, List<Job> jobs) {
- if (filter == null) return jobs;
- ArrayList<Job> newJobs = new ArrayList<>();
- for (Job job : jobs)
- if (filter.matcher(job.name()).find())
- newJobs.add(job);
- return newJobs;
+ return (filter == null) ? jobs
+ : jobs.stream()
+ .filter(job -> filter.matcher(job.name()).find())
+ .collect(toList());
}
private static void deoptimize(int sum) {
@@ -271,8 +271,7 @@
new LinkedBlockingQueue<>(),
new LinkedBlockingDeque<>(),
new LinkedTransferQueue<>(),
- new PriorityBlockingQueue<>())
- .stream().forEach(
+ new PriorityBlockingQueue<>()).forEach(
x -> {
String klazz = x.getClass().getSimpleName();
jobs.addAll(collectionJobs(klazz, () -> x, al));
--- a/test/jdk/java/util/Collections/AddAll.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/AddAll.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,7 +29,15 @@
* @key randomness
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Random;
public class AddAll {
static final int N = 100;
--- a/test/jdk/java/util/Collections/BigBinarySearch.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/BigBinarySearch.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,13 @@
* @author Martin Buchholz
*/
-import java.util.*;
+import java.util.AbstractList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.RandomAccess;
public class BigBinarySearch {
--- a/test/jdk/java/util/Collections/BinarySearchNullComparator.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/BinarySearchNullComparator.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,9 @@
* @summary Test Collections.binarySearch() with a null comparator
*/
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
public class BinarySearchNullComparator {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/Collections/CheckedIdentityMap.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/CheckedIdentityMap.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,14 +28,15 @@
* @summary Checked collections with underlying maps with identity comparisons
*/
-import java.util.*;
-import static java.util.Collections.*;
+import org.testng.annotations.Test;
+import java.util.IdentityHashMap;
+import java.util.Map;
+
+import static java.util.Collections.checkedMap;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotEquals;
-import org.testng.annotations.Test;
-
public class CheckedIdentityMap {
@Test
--- a/test/jdk/java/util/Collections/CheckedListBash.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/CheckedListBash.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,7 +29,13 @@
* @key randomness
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Random;
public class CheckedListBash {
static Random rnd = new Random();
--- a/test/jdk/java/util/Collections/CheckedMapBash.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/CheckedMapBash.java Wed Jan 17 12:19:06 2018 +0000
@@ -30,10 +30,20 @@
* @key randomness
*/
-import java.util.*;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+import java.util.TreeMap;
import java.util.function.Supplier;
-import org.testng.annotations.Test;
-import org.testng.annotations.DataProvider;
import static org.testng.Assert.fail;
--- a/test/jdk/java/util/Collections/CheckedNull.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/CheckedNull.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,8 +27,18 @@
* @summary Test behavior of nulls in checked collections
*/
-import java.util.*;
-import static java.util.Collections.*;
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.TreeSet;
+
+import static java.util.Collections.singleton;
+import static java.util.Collections.singletonMap;
@SuppressWarnings({"unchecked","serial"})
public class CheckedNull {
--- a/test/jdk/java/util/Collections/CheckedSetBash.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/CheckedSetBash.java Wed Jan 17 12:19:06 2018 +0000
@@ -30,13 +30,23 @@
* @key randomness
*/
-import java.util.*;
-import java.util.function.Supplier;
+import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
-import org.testng.annotations.DataProvider;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.function.Supplier;
+
+import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
-import static org.testng.Assert.assertTrue;
public class CheckedSetBash {
static final int numItr = 100;
--- a/test/jdk/java/util/Collections/Disjoint.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/Disjoint.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,7 +29,11 @@
* @key randomness
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Random;
public class Disjoint {
static final int N = 20;
--- a/test/jdk/java/util/Collections/EmptyCollectionSerialization.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/EmptyCollectionSerialization.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,14 +29,22 @@
* @run testng EmptyCollectionSerialization
*/
-import java.util.*;
-import java.util.function.Supplier;
-import java.io.*;
+import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
-import org.testng.annotations.DataProvider;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.function.Supplier;
+
+import static org.testng.Assert.assertSame;
import static org.testng.Assert.fail;
-import static org.testng.Assert.assertSame;
public class EmptyCollectionSerialization {
private static Object patheticDeepCopy(Object o) throws Exception {
--- a/test/jdk/java/util/Collections/EmptyIterator.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/EmptyIterator.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,10 +27,25 @@
* @summary Test empty iterators, enumerations, and collections
*/
-import static java.util.Collections.*;
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
import java.util.concurrent.SynchronousQueue;
+import static java.util.Collections.emptyEnumeration;
+import static java.util.Collections.emptyIterator;
+import static java.util.Collections.emptyList;
+import static java.util.Collections.emptyListIterator;
+import static java.util.Collections.emptyMap;
+import static java.util.Collections.emptySet;
+import static java.util.Collections.nCopies;
+import static java.util.Collections.unmodifiableMap;
+
public class EmptyIterator {
void test(String[] args) throws Throwable {
--- a/test/jdk/java/util/Collections/EmptyNavigableMap.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/EmptyNavigableMap.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,6 +27,12 @@
* @summary Unit test for Collections.emptyNavigableMap
* @run testng EmptyNavigableMap
*/
+
+import org.testng.Assert;
+import org.testng.Assert.ThrowingRunnable;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collection;
@@ -37,13 +43,8 @@
import java.util.SortedMap;
import java.util.TreeMap;
-import org.testng.Assert;
-import org.testng.Assert.ThrowingRunnable;
-import org.testng.annotations.Test;
-import org.testng.annotations.DataProvider;
-
+import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.assertFalse;
public class EmptyNavigableMap {
@@ -124,10 +125,9 @@
*/
@Test(dataProvider = "NavigableMap<?,?>", dataProviderClass = EmptyNavigableMap.class)
public void testContainsRequiresComparable(String description, NavigableMap<?,?> navigableMap) {
- assertThrowsCCE(() -> {
- navigableMap.containsKey(new Object());
- },
- description + ": Compareable should be required");
+ assertThrowsCCE(
+ () -> navigableMap.containsKey(new Object()),
+ description + ": Comparable should be required");
}
/**
@@ -252,9 +252,7 @@
Object last = (BigInteger.ZERO == first) ? BigInteger.TEN : BigInteger.ZERO;
assertThrowsIAE(
- () -> {
- navigableMap.subMap(last, true, first, false);
- },
+ () -> navigableMap.subMap(last, true, first, false),
description + ": Must throw IllegalArgumentException when fromElement is not less than toElement.");
navigableMap.subMap(first, true, last, false);
@@ -273,9 +271,8 @@
// slightly smaller
NavigableMap ns = subMap.subMap(first, false, last, false);
// slight expansion
- assertThrowsIAE(() -> {
- ns.subMap(first, true, last, true);
- },
+ assertThrowsIAE(
+ () -> ns.subMap(first, true, last, true),
description + ": Expansion should not be allowed");
// much smaller
@@ -293,9 +290,8 @@
NavigableMap ns = subMap.headMap(BigInteger.ONE, false);
// slight expansion
- assertThrowsIAE(() -> {
- ns.headMap(BigInteger.ONE, true);
- },
+ assertThrowsIAE(
+ () -> ns.headMap(BigInteger.ONE, true),
description + ": Expansion should not be allowed");
// much smaller
@@ -313,9 +309,8 @@
NavigableMap ns = subMap.tailMap(BigInteger.ONE, false);
// slight expansion
- assertThrowsIAE(() -> {
- ns.tailMap(BigInteger.ONE, true);
- },
+ assertThrowsIAE(
+ () -> ns.tailMap(BigInteger.ONE, true),
description + ": Expansion should not be allowed");
// much smaller
@@ -327,14 +322,12 @@
*/
@Test(dataProvider = "NavigableMap<?,?>", dataProviderClass = EmptyNavigableMap.class)
public void testTailMap(String description, NavigableMap navigableMap) {
- assertThrowsNPE(() -> {
- navigableMap.tailMap(null);
- },
+ assertThrowsNPE(
+ () -> navigableMap.tailMap(null),
description + ": Must throw NullPointerException for null element");
- assertThrowsCCE(() -> {
- navigableMap.tailMap(new Object());
- },
+ assertThrowsCCE(
+ () -> navigableMap.tailMap(new Object()),
description);
NavigableMap ss = navigableMap.tailMap("1", true);
--- a/test/jdk/java/util/Collections/EmptyNavigableSet.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/EmptyNavigableSet.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,22 +27,23 @@
* @summary Unit test for Collections.emptyNavigableSet
* @run testng EmptyNavigableSet
*/
+
+import org.testng.Assert;
+import org.testng.Assert.ThrowingRunnable;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
+import java.util.NavigableSet;
import java.util.NoSuchElementException;
-import java.util.NavigableSet;
import java.util.SortedSet;
import java.util.TreeSet;
-import org.testng.Assert;
-import org.testng.Assert.ThrowingRunnable;
-import org.testng.annotations.Test;
-import org.testng.annotations.DataProvider;
-
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertSame;
import static org.testng.Assert.assertTrue;
@@ -130,10 +131,9 @@
*/
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
public void testContainsRequiresComparable(String description, NavigableSet<?> navigableSet) {
- assertThrowsCCE(() -> {
- navigableSet.contains(new Object());
- },
- description + ": Compareable should be required");
+ assertThrowsCCE(
+ () -> navigableSet.contains(new Object()),
+ description + ": Comparable should be required");
}
/**
@@ -182,9 +182,7 @@
*/
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
public void testFirst(String description, NavigableSet<?> navigableSet) {
- assertThrowsNSEE(() -> {
- navigableSet.first();
- }, description);
+ assertThrowsNSEE(navigableSet::first, description);
}
/**
@@ -210,9 +208,7 @@
*/
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
public void testLast(String description, NavigableSet<?> navigableSet) {
- assertThrowsNSEE(() -> {
- navigableSet.last();
- }, description);
+ assertThrowsNSEE(navigableSet::last, description);
}
/**
@@ -277,9 +273,7 @@
Object last = (BigInteger.ZERO == first) ? BigInteger.TEN : BigInteger.ZERO;
assertThrowsIAE(
- () -> {
- navigableSet.subSet(last, true, first, false);
- },
+ () -> navigableSet.subSet(last, true, first, false),
description
+ ": Must throw IllegalArgumentException when fromElement is not less than toElement.");
@@ -299,9 +293,8 @@
// slightly smaller
NavigableSet ns = subSet.subSet(first, false, last, false);
// slight expansion
- assertThrowsIAE(() -> {
- ns.subSet(first, true, last, true);
- },
+ assertThrowsIAE(
+ () -> ns.subSet(first, true, last, true),
description + ": Expansion should not be allowed");
// much smaller
@@ -319,9 +312,8 @@
NavigableSet ns = subSet.headSet(BigInteger.ONE, false);
// slight expansion
- assertThrowsIAE(() -> {
- ns.headSet(BigInteger.ONE, true);
- },
+ assertThrowsIAE(
+ () -> ns.headSet(BigInteger.ONE, true),
description + ": Expansion should not be allowed");
// much smaller
@@ -339,9 +331,8 @@
NavigableSet ns = subSet.tailSet(BigInteger.ONE, false);
// slight expansion
- assertThrowsIAE(() -> {
- ns.tailSet(BigInteger.ONE, true);
- },
+ assertThrowsIAE(
+ () -> ns.tailSet(BigInteger.ONE, true),
description + ": Expansion should not be allowed");
// much smaller
@@ -353,14 +344,13 @@
*/
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
public void testTailSet(String description, NavigableSet navigableSet) {
- assertThrowsNPE(() -> {
- navigableSet.tailSet(null);
- },
+ assertThrowsNPE(
+ () -> navigableSet.tailSet(null),
description + ": Must throw NullPointerException for null element");
- assertThrowsCCE(() -> {
- navigableSet.tailSet(new Object());
- }, description);
+ assertThrowsCCE(
+ () -> navigableSet.tailSet(new Object()),
+ description);
NavigableSet ss = navigableSet.tailSet("1", true);
--- a/test/jdk/java/util/Collections/Enum.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/Enum.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,9 @@
* @summary Basic test for new Enumeration -> List converter
*/
-import java.util.*;
+import java.util.Collections;
+import java.util.List;
+import java.util.Vector;
public class Enum {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/Collections/FindSubList.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/FindSubList.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,12 @@
* @summary Basic test for Collections.indexOfSubList/lastIndexOfSubList
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Vector;
public class FindSubList {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/Collections/Frequency.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/Frequency.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,10 @@
* @author Josh Bloch
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
public class Frequency {
static final int N = 100;
--- a/test/jdk/java/util/Collections/MinMax.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/MinMax.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,7 +29,9 @@
* @author Josh Bloch
*/
-import java.util.*;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.Set;
public class MinMax {
public static void main(String[] args) {
--- a/test/jdk/java/util/Collections/NCopies.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/NCopies.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,8 +28,8 @@
* @author Martin Buchholz
*/
-import java.util.*;
-import java.util.concurrent.*;
+import java.util.Collections;
+import java.util.List;
public class NCopies {
static volatile int passed = 0, failed = 0;
--- a/test/jdk/java/util/Collections/NullComparator.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/NullComparator.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,10 @@
* @summary A null Comparator is now specified to indicate natural ordering.
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
public class NullComparator {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/Collections/RacingCollections.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/RacingCollections.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,9 +28,46 @@
* @author Martin Buchholz
*/
-import static java.util.Collections.*;
-import java.util.*;
-import java.util.concurrent.*;
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Deque;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.Vector;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedDeque;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.ConcurrentSkipListMap;
+import java.util.concurrent.ConcurrentSkipListSet;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.LinkedTransferQueue;
+
+import static java.util.Collections.asLifoQueue;
+import static java.util.Collections.checkedList;
+import static java.util.Collections.checkedMap;
+import static java.util.Collections.checkedSet;
+import static java.util.Collections.newSetFromMap;
+import static java.util.Collections.synchronizedList;
+import static java.util.Collections.synchronizedMap;
+import static java.util.Collections.synchronizedSet;
+import static java.util.Collections.unmodifiableList;
+import static java.util.Collections.unmodifiableMap;
+import static java.util.Collections.unmodifiableSet;
public class RacingCollections {
/**
--- a/test/jdk/java/util/Collections/ReplaceAll.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/ReplaceAll.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,11 @@
* @summary Basic test for new replaceAll algorithm
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Vector;
public class ReplaceAll {
static final int SIZE = 20;
--- a/test/jdk/java/util/Collections/ReverseOrder.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/ReverseOrder.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,8 +28,14 @@
* @author Josh Bloch
*/
-import java.util.*;
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
public class ReverseOrder {
static byte[] serialBytes(Object o) {
--- a/test/jdk/java/util/Collections/ReverseOrder2.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/ReverseOrder2.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,8 +28,17 @@
* @author Josh Bloch, Martin Buchholz
*/
-import java.util.*;
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.LinkedList;
+import java.util.List;
public class ReverseOrder2 {
static final int N = 100;
--- a/test/jdk/java/util/Collections/Rotate.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/Rotate.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,12 @@
* @key randomness
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Random;
+import java.util.Vector;
public class Rotate {
// Should have lots of distinct factors and be > ROTATE_THRESHOLD
--- a/test/jdk/java/util/Collections/RotateEmpty.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/RotateEmpty.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,9 @@
* @summary Collections.rotate(...) returns ArithmeticException
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
public class RotateEmpty {
--- a/test/jdk/java/util/Collections/Ser.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/Ser.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,8 +28,13 @@
* nCopies and singleton were spec'd to be serializable, but weren't.
*/
-import java.io.*;
-import java.util.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
public class Ser {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/Collections/SetFromMap.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/SetFromMap.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,10 @@
* @author Martin Buchholz
*/
-import java.util.*;
+import java.util.Collections;
+import java.util.IdentityHashMap;
+import java.util.Map;
+import java.util.Set;
public class SetFromMap {
static volatile int passed = 0, failed = 0;
--- a/test/jdk/java/util/Collections/Swap.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/Swap.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,9 @@
* @author Josh Bloch
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
public class Swap {
static final int SIZE = 100;
--- a/test/jdk/java/util/Collections/T5078378.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/T5078378.java Wed Jan 17 12:19:06 2018 +0000
@@ -21,7 +21,7 @@
* questions.
*/
-/**
+/*
* @test
* @bug 5078378
* @summary REGRESSION: Some calls to Collections.binarySearch no longer compile
@@ -30,7 +30,9 @@
* @compile T5078378.java
* @compile/fail -Xlint:unchecked -Werror T5078378.java
*/
-import java.util.*;
+
+import java.util.Collections;
+import java.util.List;
class T5078378 {
public static boolean contains(List l, Object o) {
--- a/test/jdk/java/util/Collections/T6433170.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/T6433170.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,8 +27,16 @@
* @summary CheckedCollection.addAll should be all-or-nothing
*/
-import java.util.*;
-import static java.util.Collections.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Vector;
+
+import static java.util.Collections.checkedCollection;
+import static java.util.Collections.checkedList;
+import static java.util.Collections.checkedSet;
@SuppressWarnings("unchecked")
public class T6433170 {
--- a/test/jdk/java/util/Collections/ViewSynch.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/ViewSynch.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,7 +29,11 @@
* (Got that?)
*/
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
public class ViewSynch {
static final Integer ZERO = new Integer(0);
--- a/test/jdk/java/util/Collections/WrappedNull.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Collections/WrappedNull.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,16 @@
* rather than later
*/
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
public class WrappedNull {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/Currency/ValidateISO4217.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Currency/ValidateISO4217.java Wed Jan 17 12:19:06 2018 +0000
@@ -23,7 +23,7 @@
/*
* @test
* @bug 4691089 4819436 4942982 5104960 6544471 6627549 7066203 7195759
- * 8039317 8074350 8074351 8145952
+ * 8039317 8074350 8074351 8145952 8187946
* @summary Validate ISO 4217 data for Currency class.
* @modules java.base/java.util:open
* jdk.localedata
@@ -95,7 +95,11 @@
/* Codes that are obsolete, do not have related country */
static final String otherCodes =
- "ADP-AFA-ATS-AYM-AZM-BEF-BGL-BOV-BYB-BYR-CHE-CHW-CLF-COU-CUC-CYP-DEM-EEK-ESP-FIM-FRF-GHC-GRD-GWP-IEP-ITL-LUF-MGF-MTL-MXV-MZM-NLG-PTE-ROL-RUR-SDD-SIT-SKK-SRG-TMM-TPE-TRL-VEF-UYI-USN-USS-VEB-XAG-XAU-XBA-XBB-XBC-XBD-XDR-XFO-XFU-XPD-XPT-XSU-XTS-XUA-XXX-YUM-ZMK-ZWD-ZWN-ZWR";
+ "ADP-AFA-ATS-AYM-AZM-BEF-BGL-BOV-BYB-BYR-CHE-CHW-CLF-COU-CUC-CYP-"
+ + "DEM-EEK-ESP-FIM-FRF-GHC-GRD-GWP-IEP-ITL-LUF-MGF-MTL-MXV-MZM-NLG-"
+ + "PTE-ROL-RUR-SDD-SIT-SKK-SRG-STD-TMM-TPE-TRL-VEF-UYI-USN-USS-VEB-"
+ + "XAG-XAU-XBA-XBB-XBC-XBD-XDR-XFO-XFU-XPD-XPT-XSU-XTS-XUA-XXX-"
+ + "YUM-ZMK-ZWD-ZWN-ZWR";
static boolean err = false;
--- a/test/jdk/java/util/Currency/tablea1.txt Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Currency/tablea1.txt Wed Jan 17 12:19:06 2018 +0000
@@ -1,12 +1,12 @@
#
#
-# Amendments up until ISO 4217 AMENDMENT NUMBER 162
-# (As of 30 Auguest 2016)
+# Amendments up until ISO 4217 AMENDMENT NUMBER 164
+# (As of 22 September 2017)
#
# Version
FILEVERSION=3
-DATAVERSION=162
+DATAVERSION=164
# ISO 4217 currency data
AF AFN 971 2
@@ -210,7 +210,7 @@
VC XCD 951 2
WS WST 882 2
SM EUR 978 2
-ST STD 678 2
+ST STN 930 2
SA SAR 682 2
SN XOF 952 0
# MA 134
--- a/test/jdk/java/util/HashMap/KeySetRemove.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/HashMap/KeySetRemove.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,9 @@
* false if the Map previously mapped k to null.
*/
-import java.util.*;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeMap;
public class KeySetRemove {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/HashMap/SetValue.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/HashMap/SetValue.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,8 @@
* @author jbloch
*/
-import java.util.*;
+import java.util.HashMap;
+import java.util.Map;
public class SetValue {
static final String key = "key";
--- a/test/jdk/java/util/HashMap/ToString.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/HashMap/ToString.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,8 @@
* contained null keys or values.
*/
-import java.util.*;
+import java.util.HashMap;
+import java.util.Map;
public class ToString {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/Hashtable/EqualsCast.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Hashtable/EqualsCast.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,8 +29,8 @@
* unnecessarily. (java.security.Provider tickled this sensitivity.)
*/
-import java.util.*;
import java.security.Provider;
+import java.util.Map;
public class EqualsCast {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/Hashtable/HashCode.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Hashtable/HashCode.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,8 @@
* @author Josh Bloch
*/
-import java.util.*;
+import java.util.Hashtable;
+import java.util.Map;
public class HashCode {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/Hashtable/IllegalLoadFactor.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Hashtable/IllegalLoadFactor.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,12 @@
@summary Test for an illegalargumentexception on loadFactor
*/
-import java.util.*;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Set;
+import java.util.WeakHashMap;
/**
* This class tests to see if creating a hash table with an
--- a/test/jdk/java/util/Hashtable/ReadObject.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Hashtable/ReadObject.java Wed Jan 17 12:19:06 2018 +0000
@@ -21,18 +21,18 @@
* questions.
*/
-/**
+/*
* @test
* @bug 4652911
* @summary test Hashtable readObject for invocation of overridable put method
*/
-import java.util.Hashtable;
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.ObjectInputStream;
import java.io.Serializable;
+import java.util.Hashtable;
/**
* Class that extends Hashtable to demonstrate bug when
@@ -52,7 +52,7 @@
Object getValue() {
return mValue;
}
- };
+ }
public Object get(Object key) {
ValueWrapper valueWrapper = (ValueWrapper)super.get(key);
--- a/test/jdk/java/util/Hashtable/SelfRef.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Hashtable/SelfRef.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,8 +29,11 @@
* @author Josh Bloch, Martin Buchholz
*/
-import java.util.*;
-import java.util.concurrent.*;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
public class SelfRef {
public static void main(String[] args) {
--- a/test/jdk/java/util/IdentityHashMap/ToArray.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/IdentityHashMap/ToArray.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,11 @@
* @author Josh Bloch, Martin Buchholz
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.IdentityHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
public class ToArray {
public static void main(String[] args) {
--- a/test/jdk/java/util/IdentityHashMap/ToString.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/IdentityHashMap/ToString.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,10 @@
* @author Josh Bloch
*/
-import java.util.*;
+import java.util.IdentityHashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
public class ToString {
public static void main(String[] args) {
--- a/test/jdk/java/util/LinkedHashMap/Basic.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/LinkedHashMap/Basic.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,9 +27,21 @@
* @summary Basic test for LinkedHashMap. (Based on MapBash)
*/
-import java.util.*;
-import java.util.function.*;
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Random;
+import java.util.Set;
+import java.util.function.BiFunction;
public class Basic {
static final Random rnd = new Random(666);
--- a/test/jdk/java/util/LinkedHashMap/Cache.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/LinkedHashMap/Cache.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,8 @@
* @summary Basic test of removeEldestElement method.
*/
-import java.util.*;
+import java.util.LinkedHashMap;
+import java.util.Map;
public class Cache {
private static final int MAP_SIZE = 10;
--- a/test/jdk/java/util/LinkedHashMap/EmptyMapIterator.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/LinkedHashMap/EmptyMapIterator.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,12 +27,14 @@
* @summary iterators on collection views of empty map weren't fail-fast.
*/
-import java.util.*;
+import java.util.ConcurrentModificationException;
+import java.util.HashMap;
+import java.util.Iterator;
public class EmptyMapIterator {
public static void main(String[] args) throws Exception {
HashMap map = new HashMap();
- Iterator iter = iter = map.entrySet().iterator();
+ Iterator iter = map.entrySet().iterator();
map.put("key", "value");
try {
--- a/test/jdk/java/util/LinkedHashSet/Basic.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/LinkedHashSet/Basic.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,8 +27,15 @@
* @summary Basic test for LinkedHashSet. (Based on SetBash)
*/
-import java.util.*;
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.Random;
+import java.util.Set;
public class Basic {
static Random rnd = new Random(666);
--- a/test/jdk/java/util/LinkedList/AddAll.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/LinkedList/AddAll.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,10 @@
* @summary AddAll was prepending instead of appending!
*/
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
public class AddAll {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/LinkedList/Clone.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/LinkedList/Clone.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,7 +29,9 @@
* TreeMap.
*/
-import java.util.*;
+import java.util.LinkedList;
+import java.util.TreeMap;
+import java.util.TreeSet;
public class Clone {
public static void main(String[] args) {
--- a/test/jdk/java/util/LinkedList/ComodifiedRemove.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/LinkedList/ComodifiedRemove.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,9 +29,10 @@
* @author Konstantin Kladko
*/
-import java.util.*;
+import java.util.ConcurrentModificationException;
+import java.util.LinkedList;
+import java.util.List;
import java.util.ListIterator;
-import java.util.ConcurrentModificationException;
public class ComodifiedRemove {
public static
--- a/test/jdk/java/util/List/LockStep.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/List/LockStep.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,10 +29,23 @@
* @key randomness
*/
-import java.io.*;
-import java.util.*;
-import java.util.concurrent.*;
-import static java.util.Collections.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.ConcurrentModificationException;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Random;
+import java.util.Vector;
@SuppressWarnings("unchecked")
public class LockStep {
--- a/test/jdk/java/util/Locale/bcp47u/FormatTests.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Locale/bcp47u/FormatTests.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/*
*
* @test
- * @bug 8176841
+ * @bug 8176841 8194148
* @summary Tests *Format class deals with Unicode extensions
* correctly.
* @modules jdk.localedata
@@ -73,6 +73,7 @@
private static final String NUM_SINH = "\u0de7\u0de8,\u0de9\u0dea\u0deb.\u0dec\u0ded\u0dee\u0def";
private static final Date testDate = new Calendar.Builder()
+ .setCalendarType("gregory")
.setDate(2017, 7, 10)
.setTimeOfDay(15, 15, 0)
.setTimeZone(AMLA)
--- a/test/jdk/java/util/Locale/bcp47u/SymbolsTests.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Locale/bcp47u/SymbolsTests.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,11 +24,11 @@
/*
*
* @test
- * @bug 8176841
+ * @bug 8176841 8194148
* @summary Tests *FormatSymbols class deals with Unicode extensions
* correctly.
* @modules jdk.localedata
- * @run testng/othervm -Djava.locale.providers=CLDR FormatTests
+ * @run testng/othervm -Djava.locale.providers=CLDR SymbolsTests
*/
import static org.testng.Assert.assertEquals;
@@ -66,11 +66,11 @@
return new Object[][] {
// Locale, expected decimal separator, expected grouping separator
- {RG_AT, ",", "."},
- {Locale.US, ".", ","},
+ {RG_AT, ',', '.'},
+ {Locale.US, '.', ','},
// -nu & -rg mixed. -nu should win
- {Locale.forLanguageTag("ar-EG-u-nu-latn-rg-mazzzz"), ".", ","},
+ {Locale.forLanguageTag("ar-EG-u-nu-latn-rg-mazzzz"), '.', ','},
};
}
--- a/test/jdk/java/util/Map/Defaults.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Map/Defaults.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,6 +28,11 @@
* @author Mike Duigou
* @run testng Defaults
*/
+
+import org.testng.Assert.ThrowingRunnable;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
import java.util.AbstractMap;
import java.util.AbstractSet;
import java.util.ArrayList;
@@ -36,36 +41,31 @@
import java.util.Collections;
import java.util.EnumMap;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Hashtable;
-import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.Set;
import java.util.TreeMap;
-import java.util.Set;
import java.util.WeakHashMap;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Supplier;
-import org.testng.Assert.ThrowingRunnable;
-import org.testng.annotations.Test;
-import org.testng.annotations.DataProvider;
-
import static java.util.Objects.requireNonNull;
-
-import static org.testng.Assert.fail;
import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertSame;
import static org.testng.Assert.assertThrows;
+import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
public class Defaults {
@@ -730,7 +730,7 @@
e90, e91, e92, e93, e94, e95, e96, e97, e98, e99,
EXTRA_KEY;
public static final int SIZE = values().length;
- };
+ }
private static final int TEST_SIZE = IntegerEnum.SIZE - 1;
/**
* Realized keys ensure that there is always a hard ref to all test objects.
--- a/test/jdk/java/util/Map/Get.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Map/Get.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,10 +28,18 @@
* @author Martin Buchholz
*/
-import java.io.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.concurrent.atomic.*;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.IdentityHashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.WeakHashMap;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.ConcurrentSkipListMap;
public class Get {
--- a/test/jdk/java/util/Map/LockStep.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Map/LockStep.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,8 +28,20 @@
* @key randomness
*/
-import java.util.*;
-import java.util.concurrent.*;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.IdentityHashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.TreeMap;
+import java.util.WeakHashMap;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentSkipListMap;
/**
* Based on the strange scenario required to reproduce
--- a/test/jdk/java/util/NavigableMap/LockStep.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/NavigableMap/LockStep.java Wed Jan 17 12:19:06 2018 +0000
@@ -32,10 +32,35 @@
* @key randomness
*/
-import java.io.*;
-import java.util.*;
-import java.util.concurrent.*;
-import static java.util.Collections.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.NotSerializableException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.NavigableMap;
+import java.util.NavigableSet;
+import java.util.NoSuchElementException;
+import java.util.Random;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.concurrent.ConcurrentSkipListMap;
+import java.util.concurrent.ConcurrentSkipListSet;
+
+import static java.util.Collections.reverseOrder;
+import static java.util.Collections.singleton;
+import static java.util.Collections.singletonMap;
@SuppressWarnings("unchecked")
public class LockStep {
--- a/test/jdk/java/util/PriorityQueue/AddNonComparable.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/PriorityQueue/AddNonComparable.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,6 +27,8 @@
* @run testng AddNonComparable
*/
+import org.testng.annotations.Test;
+
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.SortedMap;
@@ -39,8 +41,8 @@
import java.util.function.BiConsumer;
import java.util.function.Supplier;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
public class AddNonComparable {
--- a/test/jdk/java/util/PriorityQueue/NoNulls.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/PriorityQueue/NoNulls.java Wed Jan 17 12:19:06 2018 +0000
@@ -38,8 +38,8 @@
*/
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Comparator;
-import java.util.Collection;
import java.util.PriorityQueue;
import java.util.SortedSet;
import java.util.TreeSet;
--- a/test/jdk/java/util/PriorityQueue/PriorityQueueSort.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/PriorityQueue/PriorityQueueSort.java Wed Jan 17 12:19:06 2018 +0000
@@ -42,18 +42,14 @@
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
+import java.util.PriorityQueue;
import java.util.Queue;
-import java.util.PriorityQueue;
public class PriorityQueueSort {
static class MyComparator implements Comparator<Integer> {
public int compare(Integer x, Integer y) {
- int i = x.intValue();
- int j = y.intValue();
- if (i < j) return -1;
- if (i > j) return 1;
- return 0;
+ return Integer.compare(x.intValue(), y.intValue());
}
}
--- a/test/jdk/java/util/PriorityQueue/RemoveContains.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/PriorityQueue/RemoveContains.java Wed Jan 17 12:19:06 2018 +0000
@@ -37,8 +37,8 @@
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.LinkedTransferQueue;
import java.util.concurrent.PriorityBlockingQueue;
-import java.util.concurrent.LinkedTransferQueue;
public class RemoveContains {
static volatile int passed = 0, failed = 0;
--- a/test/jdk/java/util/Random/NextBytes.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Random/NextBytes.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,8 @@
* @author Martin Buchholz
*/
-import java.util.*;
+import java.util.Arrays;
+import java.util.Random;
public class NextBytes {
private static void realMain(String[] args) throws Throwable {
--- a/test/jdk/java/util/TimSort/SortPerf.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/TimSort/SortPerf.java Wed Jan 17 12:19:06 2018 +0000
@@ -21,8 +21,6 @@
* questions.
*/
-import java.util.Arrays;
-
public class SortPerf {
private static final int NUM_SETS = 5;
private static final int[] lengths = { 10, 100, 1000, 10000, 1000000 };
--- a/test/jdk/java/util/TreeMap/ContainsValue.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/TreeMap/ContainsValue.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,8 @@
* @summary TreeMap.containsValue throws NullPointerExc for empty TreeMap
*/
-import java.util.*;
+import java.util.Map;
+import java.util.TreeMap;
public class ContainsValue {
public static void main(String[] args) {
--- a/test/jdk/java/util/TreeMap/HeadTailTypeError.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/TreeMap/HeadTailTypeError.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,10 @@
* valid range in the backing array
*/
-import java.util.*;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
public class HeadTailTypeError {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/TreeMap/NullAtEnd.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/TreeMap/NullAtEnd.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,8 +28,9 @@
* @author Martin Buchholz
*/
-import java.util.*;
-import java.util.concurrent.*;
+import java.util.Comparator;
+import java.util.SortedMap;
+import java.util.TreeMap;
public class NullAtEnd {
static volatile int passed = 0, failed = 0;
--- a/test/jdk/java/util/TreeMap/NullPermissiveComparator.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/TreeMap/NullPermissiveComparator.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,10 +28,9 @@
* @author Martin Buchholz
*/
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.concurrent.atomic.*;
-import java.lang.reflect.*;
+import java.util.Comparator;
+import java.util.Map;
+import java.util.TreeMap;
@SuppressWarnings("unchecked")
public class NullPermissiveComparator {
--- a/test/jdk/java/util/TreeMap/SubMap.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/TreeMap/SubMap.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,11 @@
* @summary The firstKey and lastKey
*/
-import java.util.*;
+import java.util.NoSuchElementException;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
public class SubMap {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/TreeMap/SubMapClear.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/TreeMap/SubMapClear.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,7 +29,9 @@
* @author Josh Bloch
*/
-import java.util.*;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
public class SubMapClear {
public static void main(String[] args) {
--- a/test/jdk/java/util/Vector/ComodifiedRemoveAllElements.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Vector/ComodifiedRemoveAllElements.java Wed Jan 17 12:19:06 2018 +0000
@@ -29,7 +29,9 @@
* @author Konstantin Kladko
*/
-import java.util.*;
+import java.util.ConcurrentModificationException;
+import java.util.Iterator;
+import java.util.Vector;
public class ComodifiedRemoveAllElements {
public static void main(String[] args) {
--- a/test/jdk/java/util/Vector/CopyInto.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Vector/CopyInto.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,10 +28,7 @@
* @author Martin Buchholz
*/
-import java.io.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.concurrent.atomic.*;
+import java.util.Vector;
public class CopyInto {
private static void realMain(String[] args) throws Throwable {
--- a/test/jdk/java/util/Vector/IllegalConstructorArgs.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Vector/IllegalConstructorArgs.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,7 @@
* @summary Test for illegal argument exception
*/
-import java.util.*;
+import java.util.Vector;
/**
* This is a simple test class created to check for
--- a/test/jdk/java/util/Vector/LastIndexOf.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Vector/LastIndexOf.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,7 @@
* valid range in the backing array
*/
-import java.util.*;
+import java.util.Vector;
public class LastIndexOf {
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/Vector/SyncLastIndexOf.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/Vector/SyncLastIndexOf.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,7 +27,8 @@
* @summary Vector's lastIndexOf(Object) was lacking synchronization
* @author Konstantin Kladko
*/
-import java.util.*;
+
+import java.util.Vector;
public class SyncLastIndexOf {
--- a/test/jdk/java/util/WeakHashMap/GCDuringIteration.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/WeakHashMap/GCDuringIteration.java Wed Jan 17 12:19:06 2018 +0000
@@ -32,7 +32,7 @@
* @key randomness
*/
-import static java.util.concurrent.TimeUnit.SECONDS;
+import jdk.test.lib.RandomFactory;
import java.lang.ref.WeakReference;
import java.util.Arrays;
@@ -43,7 +43,8 @@
import java.util.WeakHashMap;
import java.util.concurrent.CountDownLatch;
import java.util.function.BooleanSupplier;
-import jdk.test.lib.RandomFactory;
+
+import static java.util.concurrent.TimeUnit.SECONDS;
public class GCDuringIteration {
--- a/test/jdk/java/util/WeakHashMap/Iteration.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/WeakHashMap/Iteration.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,9 @@
* @author Josh Bloch
*/
-import java.util.*;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.WeakHashMap;
public class Iteration {
public static void main(String[] args) {
--- a/test/jdk/java/util/WeakHashMap/ZeroInitCap.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/WeakHashMap/ZeroInitCap.java Wed Jan 17 12:19:06 2018 +0000
@@ -21,7 +21,8 @@
* questions.
*/
-import java.util.*;
+import java.util.Map;
+import java.util.WeakHashMap;
/*
* @test
--- a/test/jdk/java/util/concurrent/ArrayBlockingQueue/WhiteBox.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/ArrayBlockingQueue/WhiteBox.java Wed Jan 17 12:19:06 2018 +0000
@@ -39,7 +39,7 @@
*/
import static org.testng.Assert.*;
-import org.testng.annotations.DataProvider;
+
import org.testng.annotations.Test;
import java.lang.ref.WeakReference;
--- a/test/jdk/java/util/concurrent/BlockingQueue/DrainToFails.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/BlockingQueue/DrainToFails.java Wed Jan 17 12:19:06 2018 +0000
@@ -78,9 +78,7 @@
pseudodelay = i;
}
public int compareTo(PDelay other) {
- int a = this.pseudodelay;
- int b = other.pseudodelay;
- return (a < b) ? -1 : (a > b) ? 1 : 0;
+ return Integer.compare(this.pseudodelay, other.pseudodelay);
}
public int compareTo(Delayed y) {
return compareTo((PDelay)y);
--- a/test/jdk/java/util/concurrent/BlockingQueue/LoopHelpers.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/BlockingQueue/LoopHelpers.java Wed Jan 17 12:19:06 2018 +0000
@@ -95,7 +95,7 @@
String num = Long.toString(n);
if (num.length() >= field.length())
return num;
- StringBuffer b = new StringBuffer(field);
+ StringBuilder b = new StringBuilder(field);
b.replace(b.length()-num.length(), b.length(), num);
return b.toString();
}
--- a/test/jdk/java/util/concurrent/BlockingQueue/OfferDrainToLoops.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/BlockingQueue/OfferDrainToLoops.java Wed Jan 17 12:19:06 2018 +0000
@@ -79,7 +79,7 @@
final long timeoutMillis = 10L * 1000L;
final SplittableRandom rnd = new SplittableRandom();
- /** Poor man's bounded buffer. */
+ // Poor man's bounded buffer.
final AtomicLong approximateCount = new AtomicLong(0L);
abstract class CheckedThread extends Thread {
--- a/test/jdk/java/util/concurrent/CompletableFuture/Basic.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/CompletableFuture/Basic.java Wed Jan 17 12:19:06 2018 +0000
@@ -151,11 +151,11 @@
// runAsync tests
//----------------------------------------------------------------
try {
- CompletableFuture<Void> cf = runAsync(() -> { });
+ CompletableFuture<Void> cf = runAsync(() -> {});
checkCompletedNormally(cf, cf.join());
- cf = runAsync(() -> { }, commonPool());
+ cf = runAsync(() -> {}, commonPool());
checkCompletedNormally(cf, cf.join());
- cf = runAsync(() -> { }, executor);
+ cf = runAsync(() -> {}, executor);
checkCompletedNormally(cf, cf.join());
cf = runAsync(() -> { throw new RuntimeException(); });
checkCompletedExceptionally(cf);
@@ -200,32 +200,32 @@
try {
CompletableFuture<Integer> cf2;
CompletableFuture<String> cf1 = supplyAsync(() -> "a test string");
- cf2 = cf1.thenApply((x) -> { if (x.equals("a test string")) return 1; else return 0; });
+ cf2 = cf1.thenApply(x -> x.equals("a test string") ? 1 : 0);
checkCompletedNormally(cf1, "a test string");
checkCompletedNormally(cf2, 1);
cf1 = supplyAsync(() -> "a test string");
- cf2 = cf1.thenApplyAsync((x) -> { if (x.equals("a test string")) return 1; else return 0; });
+ cf2 = cf1.thenApplyAsync(x -> x.equals("a test string") ? 1 : 0);
checkCompletedNormally(cf1, "a test string");
checkCompletedNormally(cf2, 1);
cf1 = supplyAsync(() -> "a test string");
- cf2 = cf1.thenApplyAsync((x) -> { if (x.equals("a test string")) return 1; else return 0; }, executor);
+ cf2 = cf1.thenApplyAsync(x -> x.equals("a test string") ? 1 : 0, executor);
checkCompletedNormally(cf1, "a test string");
checkCompletedNormally(cf2, 1);
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
- cf2 = cf1.thenApply((x) -> { return 0; } );
+ cf2 = cf1.thenApply(x -> 0);
checkCompletedExceptionally(cf1);
checkCompletedExceptionally(cf2);
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
- cf2 = cf1.thenApplyAsync((x) -> { return 0; } );
+ cf2 = cf1.thenApplyAsync(x -> 0);
checkCompletedExceptionally(cf1);
checkCompletedExceptionally(cf2);
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
- cf2 = cf1.thenApplyAsync((x) -> { return 0; }, executor);
+ cf2 = cf1.thenApplyAsync(x -> 0, executor);
checkCompletedExceptionally(cf1);
checkCompletedExceptionally(cf2);
} catch (Throwable t) { unexpected(t); }
@@ -237,40 +237,40 @@
CompletableFuture<Void> cf2;
int before = atomicInt.get();
CompletableFuture<String> cf1 = supplyAsync(() -> "a test string");
- cf2 = cf1.thenAccept((x) -> { if (x.equals("a test string")) { atomicInt.incrementAndGet(); return; } throw new RuntimeException(); });
+ cf2 = cf1.thenAccept(x -> { if (x.equals("a test string")) { atomicInt.incrementAndGet(); return; } throw new RuntimeException(); });
checkCompletedNormally(cf1, "a test string");
checkCompletedNormally(cf2, null);
check(atomicInt.get() == (before + 1));
before = atomicInt.get();
cf1 = supplyAsync(() -> "a test string");
- cf2 = cf1.thenAcceptAsync((x) -> { if (x.equals("a test string")) { atomicInt.incrementAndGet(); return; } throw new RuntimeException(); });
+ cf2 = cf1.thenAcceptAsync(x -> { if (x.equals("a test string")) { atomicInt.incrementAndGet(); return; } throw new RuntimeException(); });
checkCompletedNormally(cf1, "a test string");
checkCompletedNormally(cf2, null);
check(atomicInt.get() == (before + 1));
before = atomicInt.get();
cf1 = supplyAsync(() -> "a test string");
- cf2 = cf1.thenAcceptAsync((x) -> { if (x.equals("a test string")) { atomicInt.incrementAndGet(); return; } throw new RuntimeException(); }, executor);
+ cf2 = cf1.thenAcceptAsync(x -> { if (x.equals("a test string")) { atomicInt.incrementAndGet(); return; } throw new RuntimeException(); }, executor);
checkCompletedNormally(cf1, "a test string");
checkCompletedNormally(cf2, null);
check(atomicInt.get() == (before + 1));
before = atomicInt.get();
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
- cf2 = cf1.thenAccept((x) -> { atomicInt.incrementAndGet(); } );
+ cf2 = cf1.thenAccept(x -> atomicInt.incrementAndGet());
checkCompletedExceptionally(cf1);
checkCompletedExceptionally(cf2);
check(atomicInt.get() == before);
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
- cf2 = cf1.thenAcceptAsync((x) -> { atomicInt.incrementAndGet(); } );
+ cf2 = cf1.thenAcceptAsync(x -> atomicInt.incrementAndGet());
checkCompletedExceptionally(cf1);
checkCompletedExceptionally(cf2);
check(atomicInt.get() == before);
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
- cf2 = cf1.thenAcceptAsync((x) -> { atomicInt.incrementAndGet(); }, executor );
+ cf2 = cf1.thenAcceptAsync(x -> atomicInt.incrementAndGet(), executor );
checkCompletedExceptionally(cf1);
checkCompletedExceptionally(cf2);
check(atomicInt.get() == before);
@@ -283,40 +283,40 @@
CompletableFuture<Void> cf2;
int before = atomicInt.get();
CompletableFuture<String> cf1 = supplyAsync(() -> "a test string");
- cf2 = cf1.thenRun(() -> { atomicInt.incrementAndGet(); });
+ cf2 = cf1.thenRun(() -> atomicInt.incrementAndGet());
checkCompletedNormally(cf1, "a test string");
checkCompletedNormally(cf2, null);
check(atomicInt.get() == (before + 1));
before = atomicInt.get();
cf1 = supplyAsync(() -> "a test string");
- cf2 = cf1.thenRunAsync(() -> { atomicInt.incrementAndGet(); });
+ cf2 = cf1.thenRunAsync(() -> atomicInt.incrementAndGet());
checkCompletedNormally(cf1, "a test string");
checkCompletedNormally(cf2, null);
check(atomicInt.get() == (before + 1));
before = atomicInt.get();
cf1 = supplyAsync(() -> "a test string");
- cf2 = cf1.thenRunAsync(() -> { atomicInt.incrementAndGet(); }, executor);
+ cf2 = cf1.thenRunAsync(() -> atomicInt.incrementAndGet(), executor);
checkCompletedNormally(cf1, "a test string");
checkCompletedNormally(cf2, null);
check(atomicInt.get() == (before + 1));
before = atomicInt.get();
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
- cf2 = cf1.thenRun(() -> { atomicInt.incrementAndGet(); });
+ cf2 = cf1.thenRun(() -> atomicInt.incrementAndGet());
checkCompletedExceptionally(cf1);
checkCompletedExceptionally(cf2);
check(atomicInt.get() == before);
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
- cf2 = cf1.thenRunAsync(() -> { atomicInt.incrementAndGet(); });
+ cf2 = cf1.thenRunAsync(() -> atomicInt.incrementAndGet());
checkCompletedExceptionally(cf1);
checkCompletedExceptionally(cf2);
check(atomicInt.get() == before);
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
- cf2 = cf1.thenRunAsync(() -> { atomicInt.incrementAndGet(); }, executor);
+ cf2 = cf1.thenRunAsync(() -> atomicInt.incrementAndGet(), executor);
checkCompletedExceptionally(cf1);
checkCompletedExceptionally(cf2);
check(atomicInt.get() == before);
@@ -329,42 +329,42 @@
CompletableFuture<Integer> cf3;
CompletableFuture<Integer> cf1 = supplyAsync(() -> 1);
CompletableFuture<Integer> cf2 = supplyAsync(() -> 1);
- cf3 = cf1.thenCombine(cf2, (x, y) -> { return x + y; });
+ cf3 = cf1.thenCombine(cf2, (x, y) -> x + y);
checkCompletedNormally(cf1, 1);
checkCompletedNormally(cf2, 1);
checkCompletedNormally(cf3, 2);
cf1 = supplyAsync(() -> 1);
cf2 = supplyAsync(() -> 1);
- cf3 = cf1.thenCombineAsync(cf2, (x, y) -> { return x + y; });
+ cf3 = cf1.thenCombineAsync(cf2, (x, y) -> x + y);
checkCompletedNormally(cf1, 1);
checkCompletedNormally(cf2, 1);
checkCompletedNormally(cf3, 2);
cf1 = supplyAsync(() -> 1);
cf2 = supplyAsync(() -> 1);
- cf3 = cf1.thenCombineAsync(cf2, (x, y) -> { return x + y; }, executor);
+ cf3 = cf1.thenCombineAsync(cf2, (x, y) -> x + y, executor);
checkCompletedNormally(cf1, 1);
checkCompletedNormally(cf2, 1);
checkCompletedNormally(cf3, 2);
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
cf2 = supplyAsync(() -> 1);
- cf3 = cf1.thenCombine(cf2, (x, y) -> { return 0; });
+ cf3 = cf1.thenCombine(cf2, (x, y) -> 0);
checkCompletedExceptionally(cf1);
checkCompletedNormally(cf2, 1);
checkCompletedExceptionally(cf3);
cf1 = supplyAsync(() -> 1);
cf2 = supplyAsync(() -> { throw new RuntimeException(); });
- cf3 = cf1.thenCombineAsync(cf2, (x, y) -> { return 0; });
+ cf3 = cf1.thenCombineAsync(cf2, (x, y) -> 0);
checkCompletedNormally(cf1, 1);
checkCompletedExceptionally(cf2);
checkCompletedExceptionally(cf3);
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
cf2 = supplyAsync(() -> { throw new RuntimeException(); });
- cf3 = cf1.thenCombineAsync(cf2, (x, y) -> { return 0; }, executor);
+ cf3 = cf1.thenCombineAsync(cf2, (x, y) -> 0, executor);
checkCompletedExceptionally(cf1);
checkCompletedExceptionally(cf2);
checkCompletedExceptionally(cf3);
@@ -405,7 +405,7 @@
before = atomicInt.get();
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
cf2 = supplyAsync(() -> 1);
- cf3 = cf1.thenAcceptBoth(cf2, (x, y) -> { atomicInt.incrementAndGet(); });
+ cf3 = cf1.thenAcceptBoth(cf2, (x, y) -> atomicInt.incrementAndGet());
checkCompletedExceptionally(cf1);
checkCompletedNormally(cf2, 1);
checkCompletedExceptionally(cf3);
@@ -413,7 +413,7 @@
cf1 = supplyAsync(() -> 1);
cf2 = supplyAsync(() -> { throw new RuntimeException(); });
- cf3 = cf1.thenAcceptBothAsync(cf2, (x, y) -> { atomicInt.incrementAndGet(); });
+ cf3 = cf1.thenAcceptBothAsync(cf2, (x, y) -> atomicInt.incrementAndGet());
checkCompletedNormally(cf1, 1);
checkCompletedExceptionally(cf2);
checkCompletedExceptionally(cf3);
@@ -421,7 +421,7 @@
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
cf2 = supplyAsync(() -> { throw new RuntimeException(); });
- cf3 = cf1.thenAcceptBothAsync(cf2, (x, y) -> { atomicInt.incrementAndGet(); }, executor);
+ cf3 = cf1.thenAcceptBothAsync(cf2, (x, y) -> atomicInt.incrementAndGet(), executor);
checkCompletedExceptionally(cf1);
checkCompletedExceptionally(cf2);
checkCompletedExceptionally(cf3);
@@ -463,7 +463,7 @@
before = atomicInt.get();
CompletableFuture<Integer> cf4 = supplyAsync(() -> { throw new RuntimeException(); });
CompletableFuture<Integer> cf5 = supplyAsync(() -> 1);
- cf3 = cf5.runAfterBothAsync(cf4, () -> { atomicInt.incrementAndGet(); }, executor);
+ cf3 = cf5.runAfterBothAsync(cf4, () -> atomicInt.incrementAndGet(), executor);
checkCompletedExceptionally(cf4);
checkCompletedNormally(cf5, 1);
checkCompletedExceptionally(cf3);
@@ -472,7 +472,7 @@
before = atomicInt.get();
cf4 = supplyAsync(() -> 1);
cf5 = supplyAsync(() -> { throw new RuntimeException(); });
- cf3 = cf5.runAfterBothAsync(cf4, () -> { atomicInt.incrementAndGet(); });
+ cf3 = cf5.runAfterBothAsync(cf4, () -> atomicInt.incrementAndGet());
checkCompletedNormally(cf4, 1);
checkCompletedExceptionally(cf5);
checkCompletedExceptionally(cf3);
@@ -481,7 +481,7 @@
before = atomicInt.get();
cf4 = supplyAsync(() -> { throw new RuntimeException(); });
cf5 = supplyAsync(() -> { throw new RuntimeException(); });
- cf3 = cf5.runAfterBoth(cf4, () -> { atomicInt.incrementAndGet(); });
+ cf3 = cf5.runAfterBoth(cf4, () -> atomicInt.incrementAndGet());
checkCompletedExceptionally(cf4);
checkCompletedExceptionally(cf5);
checkCompletedExceptionally(cf3);
@@ -495,46 +495,46 @@
CompletableFuture<Integer> cf3;
CompletableFuture<Integer> cf1 = supplyAsync(() -> 1);
CompletableFuture<Integer> cf2 = supplyAsync(() -> 2);
- cf3 = cf1.applyToEither(cf2, (x) -> { check(x == 1 || x == 2); return x; });
+ cf3 = cf1.applyToEither(cf2, x -> { check(x == 1 || x == 2); return x; });
checkCompletedNormally(cf3, new Object[] {1, 2});
check(cf1.isDone() || cf2.isDone());
cf1 = supplyAsync(() -> 1);
cf2 = supplyAsync(() -> 2);
- cf3 = cf1.applyToEitherAsync(cf2, (x) -> { check(x == 1 || x == 2); return x; });
+ cf3 = cf1.applyToEitherAsync(cf2, x -> { check(x == 1 || x == 2); return x; });
checkCompletedNormally(cf3, new Object[] {1, 2});
check(cf1.isDone() || cf2.isDone());
cf1 = supplyAsync(() -> 1);
cf2 = supplyAsync(() -> 2);
- cf3 = cf1.applyToEitherAsync(cf2, (x) -> { check(x == 1 || x == 2); return x; }, executor);
+ cf3 = cf1.applyToEitherAsync(cf2, x -> { check(x == 1 || x == 2); return x; }, executor);
checkCompletedNormally(cf3, new Object[] {1, 2});
check(cf1.isDone() || cf2.isDone());
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
cf2 = supplyAsync(() -> 2);
- cf3 = cf1.applyToEither(cf2, (x) -> { check(x == 2); return x; });
+ cf3 = cf1.applyToEither(cf2, x -> { check(x == 2); return x; });
try { check(cf3.join() == 2); } catch (CompletionException x) { pass(); }
check(cf3.isDone());
check(cf1.isDone() || cf2.isDone());
cf1 = supplyAsync(() -> 1);
cf2 = supplyAsync(() -> { throw new RuntimeException(); });
- cf3 = cf1.applyToEitherAsync(cf2, (x) -> { check(x == 1); return x; });
+ cf3 = cf1.applyToEitherAsync(cf2, x -> { check(x == 1); return x; });
try { check(cf3.join() == 1); } catch (CompletionException x) { pass(); }
check(cf3.isDone());
check(cf1.isDone() || cf2.isDone());
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
cf2 = supplyAsync(() -> { throw new RuntimeException(); });
- cf3 = cf1.applyToEitherAsync(cf2, (x) -> { fail(); return x; });
+ cf3 = cf1.applyToEitherAsync(cf2, x -> { fail(); return x; });
checkCompletedExceptionally(cf3);
check(cf1.isDone() || cf2.isDone());
final Phaser cf3Done = new Phaser(2);
cf1 = supplyAsync(() -> { cf3Done.arriveAndAwaitAdvance(); return 1; });
cf2 = supplyAsync(() -> 2);
- cf3 = cf1.applyToEither(cf2, (x) -> { check(x == 2); return x; });
+ cf3 = cf1.applyToEither(cf2, x -> { check(x == 2); return x; });
checkCompletedNormally(cf3, 2);
checkCompletedNormally(cf2, 2);
check(!cf1.isDone());
@@ -544,7 +544,7 @@
cf1 = supplyAsync(() -> 1);
cf2 = supplyAsync(() -> { cf3Done.arriveAndAwaitAdvance(); return 2; });
- cf3 = cf1.applyToEitherAsync(cf2, (x) -> { check(x == 1); return x; });
+ cf3 = cf1.applyToEitherAsync(cf2, x -> { check(x == 1); return x; });
checkCompletedNormally(cf3, 1);
checkCompletedNormally(cf1, 1);
check(!cf2.isDone());
@@ -561,7 +561,7 @@
int before = atomicInt.get();
CompletableFuture<Integer> cf1 = supplyAsync(() -> 1);
CompletableFuture<Integer> cf2 = supplyAsync(() -> 2);
- cf3 = cf1.acceptEither(cf2, (x) -> { check(x == 1 || x == 2); atomicInt.incrementAndGet(); });
+ cf3 = cf1.acceptEither(cf2, x -> { check(x == 1 || x == 2); atomicInt.incrementAndGet(); });
checkCompletedNormally(cf3, null);
check(cf1.isDone() || cf2.isDone());
check(atomicInt.get() == (before + 1));
@@ -569,7 +569,7 @@
before = atomicInt.get();
cf1 = supplyAsync(() -> 1);
cf2 = supplyAsync(() -> 2);
- cf3 = cf1.acceptEitherAsync(cf2, (x) -> { check(x == 1 || x == 2); atomicInt.incrementAndGet(); });
+ cf3 = cf1.acceptEitherAsync(cf2, x -> { check(x == 1 || x == 2); atomicInt.incrementAndGet(); });
checkCompletedNormally(cf3, null);
check(cf1.isDone() || cf2.isDone());
check(atomicInt.get() == (before + 1));
@@ -577,35 +577,35 @@
before = atomicInt.get();
cf1 = supplyAsync(() -> 1);
cf2 = supplyAsync(() -> 2);
- cf3 = cf2.acceptEitherAsync(cf1, (x) -> { check(x == 1 || x == 2); atomicInt.incrementAndGet(); }, executor);
+ cf3 = cf2.acceptEitherAsync(cf1, x -> { check(x == 1 || x == 2); atomicInt.incrementAndGet(); }, executor);
checkCompletedNormally(cf3, null);
check(cf1.isDone() || cf2.isDone());
check(atomicInt.get() == (before + 1));
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
cf2 = supplyAsync(() -> 2);
- cf3 = cf2.acceptEitherAsync(cf1, (x) -> { check(x == 2); }, executor);
+ cf3 = cf2.acceptEitherAsync(cf1, x -> { check(x == 2); }, executor);
try { check(cf3.join() == null); } catch (CompletionException x) { pass(); }
check(cf3.isDone());
check(cf1.isDone() || cf2.isDone());
cf1 = supplyAsync(() -> 1);
cf2 = supplyAsync(() -> { throw new RuntimeException(); });
- cf3 = cf2.acceptEitherAsync(cf1, (x) -> { check(x == 1); });
+ cf3 = cf2.acceptEitherAsync(cf1, x -> { check(x == 1); });
try { check(cf3.join() == null); } catch (CompletionException x) { pass(); }
check(cf3.isDone());
check(cf1.isDone() || cf2.isDone());
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
cf2 = supplyAsync(() -> { throw new RuntimeException(); });
- cf3 = cf2.acceptEitherAsync(cf1, (x) -> { fail(); });
+ cf3 = cf2.acceptEitherAsync(cf1, x -> { fail(); });
checkCompletedExceptionally(cf3);
check(cf1.isDone() || cf2.isDone());
final Phaser cf3Done = new Phaser(2);
cf1 = supplyAsync(() -> { cf3Done.arriveAndAwaitAdvance(); return 1; });
cf2 = supplyAsync(() -> 2);
- cf3 = cf1.acceptEither(cf2, (x) -> { check(x == 2); });
+ cf3 = cf1.acceptEither(cf2, x -> { check(x == 2); });
checkCompletedNormally(cf3, null);
checkCompletedNormally(cf2, 2);
check(!cf1.isDone());
@@ -615,7 +615,7 @@
cf1 = supplyAsync(() -> 1);
cf2 = supplyAsync(() -> { cf3Done.arriveAndAwaitAdvance(); return 2; });
- cf3 = cf1.acceptEitherAsync(cf2, (x) -> { check(x == 1); });
+ cf3 = cf1.acceptEitherAsync(cf2, x -> { check(x == 1); });
checkCompletedNormally(cf3, null);
checkCompletedNormally(cf1, 1);
check(!cf2.isDone());
@@ -630,33 +630,33 @@
try {
CompletableFuture<Void> cf3;
int before = atomicInt.get();
- CompletableFuture<Void> cf1 = runAsync(() -> { });
- CompletableFuture<Void> cf2 = runAsync(() -> { });
- cf3 = cf1.runAfterEither(cf2, () -> { atomicInt.incrementAndGet(); });
+ CompletableFuture<Void> cf1 = runAsync(() -> {});
+ CompletableFuture<Void> cf2 = runAsync(() -> {});
+ cf3 = cf1.runAfterEither(cf2, () -> atomicInt.incrementAndGet());
checkCompletedNormally(cf3, null);
check(cf1.isDone() || cf2.isDone());
check(atomicInt.get() == (before + 1));
before = atomicInt.get();
- cf1 = runAsync(() -> { });
- cf2 = runAsync(() -> { });
- cf3 = cf1.runAfterEitherAsync(cf2, () -> { atomicInt.incrementAndGet(); });
+ cf1 = runAsync(() -> {});
+ cf2 = runAsync(() -> {});
+ cf3 = cf1.runAfterEitherAsync(cf2, () -> atomicInt.incrementAndGet());
checkCompletedNormally(cf3, null);
check(cf1.isDone() || cf2.isDone());
check(atomicInt.get() == (before + 1));
before = atomicInt.get();
- cf1 = runAsync(() -> { });
- cf2 = runAsync(() -> { });
- cf3 = cf2.runAfterEitherAsync(cf1, () -> { atomicInt.incrementAndGet(); }, executor);
+ cf1 = runAsync(() -> {});
+ cf2 = runAsync(() -> {});
+ cf3 = cf2.runAfterEitherAsync(cf1, () -> atomicInt.incrementAndGet(), executor);
checkCompletedNormally(cf3, null);
check(cf1.isDone() || cf2.isDone());
check(atomicInt.get() == (before + 1));
before = atomicInt.get();
cf1 = runAsync(() -> { throw new RuntimeException(); });
- cf2 = runAsync(() -> { });
- cf3 = cf2.runAfterEither(cf1, () -> { atomicInt.incrementAndGet(); });
+ cf2 = runAsync(() -> {});
+ cf3 = cf2.runAfterEither(cf1, () -> atomicInt.incrementAndGet());
try {
check(cf3.join() == null);
check(atomicInt.get() == (before + 1));
@@ -665,9 +665,9 @@
check(cf1.isDone() || cf2.isDone());
before = atomicInt.get();
- cf1 = runAsync(() -> { });
+ cf1 = runAsync(() -> {});
cf2 = runAsync(() -> { throw new RuntimeException(); });
- cf3 = cf1.runAfterEitherAsync(cf2, () -> { atomicInt.incrementAndGet(); });
+ cf3 = cf1.runAfterEitherAsync(cf2, () -> atomicInt.incrementAndGet());
try {
check(cf3.join() == null);
check(atomicInt.get() == (before + 1));
@@ -678,16 +678,16 @@
before = atomicInt.get();
cf1 = runAsync(() -> { throw new RuntimeException(); });
cf2 = runAsync(() -> { throw new RuntimeException(); });
- cf3 = cf2.runAfterEitherAsync(cf1, () -> { atomicInt.incrementAndGet(); }, executor);
+ cf3 = cf2.runAfterEitherAsync(cf1, () -> atomicInt.incrementAndGet(), executor);
checkCompletedExceptionally(cf3);
check(cf1.isDone() || cf2.isDone());
check(atomicInt.get() == before);
final Phaser cf3Done = new Phaser(2);
before = atomicInt.get();
- cf1 = runAsync(() -> { cf3Done.arriveAndAwaitAdvance(); });
- cf2 = runAsync(() -> { });
- cf3 = cf1.runAfterEither(cf2, () -> { atomicInt.incrementAndGet(); });
+ cf1 = runAsync(() -> cf3Done.arriveAndAwaitAdvance());
+ cf2 = runAsync(() -> {});
+ cf3 = cf1.runAfterEither(cf2, () -> atomicInt.incrementAndGet());
checkCompletedNormally(cf3, null);
checkCompletedNormally(cf2, null);
check(!cf1.isDone());
@@ -697,9 +697,9 @@
checkCompletedNormally(cf3, null);
before = atomicInt.get();
- cf1 = runAsync(() -> { });
- cf2 = runAsync(() -> { cf3Done.arriveAndAwaitAdvance(); });
- cf3 = cf1.runAfterEitherAsync(cf2, () -> { atomicInt.incrementAndGet(); });
+ cf1 = runAsync(() -> {});
+ cf2 = runAsync(() -> cf3Done.arriveAndAwaitAdvance());
+ cf3 = cf1.runAfterEitherAsync(cf2, () -> atomicInt.incrementAndGet());
checkCompletedNormally(cf3, null);
checkCompletedNormally(cf1, null);
check(!cf2.isDone());
@@ -715,35 +715,35 @@
try {
CompletableFuture<Integer> cf2;
CompletableFuture<Integer> cf1 = supplyAsync(() -> 1);
- cf2 = cf1.thenCompose((x) -> { check(x ==1); return CompletableFuture.completedFuture(2); });
+ cf2 = cf1.thenCompose(x -> { check(x == 1); return CompletableFuture.completedFuture(2); });
checkCompletedNormally(cf1, 1);
checkCompletedNormally(cf2, 2);
cf1 = supplyAsync(() -> 1);
- cf2 = cf1.thenComposeAsync((x) -> { check(x ==1); return CompletableFuture.completedFuture(2); });
+ cf2 = cf1.thenComposeAsync(x -> { check(x == 1); return CompletableFuture.completedFuture(2); });
checkCompletedNormally(cf1, 1);
checkCompletedNormally(cf2, 2);
cf1 = supplyAsync(() -> 1);
- cf2 = cf1.thenComposeAsync((x) -> { check(x ==1); return CompletableFuture.completedFuture(2); }, executor);
+ cf2 = cf1.thenComposeAsync(x -> { check(x == 1); return CompletableFuture.completedFuture(2); }, executor);
checkCompletedNormally(cf1, 1);
checkCompletedNormally(cf2, 2);
int before = atomicInt.get();
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
- cf2 = cf1.thenCompose((x) -> { atomicInt.incrementAndGet(); return CompletableFuture.completedFuture(2); });
+ cf2 = cf1.thenCompose(x -> { atomicInt.incrementAndGet(); return CompletableFuture.completedFuture(2); });
checkCompletedExceptionally(cf1);
checkCompletedExceptionally(cf2);
check(atomicInt.get() == before);
cf1 = supplyAsync(() -> { throw new RuntimeException(); });
- cf2 = cf1.thenComposeAsync((x) -> { atomicInt.incrementAndGet(); return CompletableFuture.completedFuture(2); });
+ cf2 = cf1.thenComposeAsync(x -> { atomicInt.incrementAndGet(); return CompletableFuture.completedFuture(2); });
checkCompletedExceptionally(cf1);
checkCompletedExceptionally(cf2);
check(atomicInt.get() == before);
cf1 = supplyAsync(() -> 1);
- cf2 = cf1.thenComposeAsync((x) -> { throw new RuntimeException(); }, executor);
+ cf2 = cf1.thenComposeAsync(x -> { throw new RuntimeException(); }, executor);
checkCompletedNormally(cf1, 1);
checkCompletedExceptionally(cf2);
} catch (Throwable t) { unexpected(t); }
@@ -787,13 +787,13 @@
try {
CompletableFuture<Integer> cf2;
CompletableFuture<Integer> cf1 = supplyAsync(() -> 1);
- cf2 = cf1.exceptionally((t) -> { fail("function should never be called"); return 2;});
+ cf2 = cf1.exceptionally(t -> { fail("function should never be called"); return 2;});
checkCompletedNormally(cf1, 1);
checkCompletedNormally(cf2, 1);
final RuntimeException t = new RuntimeException();
cf1 = supplyAsync(() -> { throw t; });
- cf2 = cf1.exceptionally((x) -> { check(x.getCause() == t); return 2;});
+ cf2 = cf1.exceptionally(x -> { check(x.getCause() == t); return 2;});
checkCompletedExceptionally(cf1);
checkCompletedNormally(cf2, 2);
} catch (Throwable t) { unexpected(t); }
--- a/test/jdk/java/util/concurrent/ConcurrentHashMap/LoopHelpers.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/ConcurrentHashMap/LoopHelpers.java Wed Jan 17 12:19:06 2018 +0000
@@ -95,7 +95,7 @@
String num = Long.toString(n);
if (num.length() >= field.length())
return num;
- StringBuffer b = new StringBuffer(field);
+ StringBuilder b = new StringBuilder(field);
b.replace(b.length()-num.length(), b.length(), num);
return b.toString();
}
--- a/test/jdk/java/util/concurrent/ConcurrentHashMap/MapCheck.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/ConcurrentHashMap/MapCheck.java Wed Jan 17 12:19:06 2018 +0000
@@ -109,14 +109,12 @@
static Map newMap(Class cl) {
try {
- Map m = (Map)cl.newInstance();
- return m;
+ return (Map)cl.newInstance();
} catch (Exception e) {
throw new RuntimeException("Can't instantiate " + cl + ": " + e);
}
}
-
static void runTest(Map s, Object[] key) {
shuffle(key);
int size = key.length;
@@ -137,7 +135,6 @@
// System.gc();
}
-
static void t1(String nm, int n, Map s, Object[] key, int expect) {
int sum = 0;
int iters = 4;
--- a/test/jdk/java/util/concurrent/ConcurrentLinkedQueue/WhiteBox.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/ConcurrentLinkedQueue/WhiteBox.java Wed Jan 17 12:19:06 2018 +0000
@@ -55,7 +55,6 @@
import java.util.concurrent.ThreadLocalRandom;
import static java.util.stream.Collectors.toList;
import java.util.function.Consumer;
-import java.util.function.Function;
@Test
public class WhiteBox {
--- a/test/jdk/java/util/concurrent/ConcurrentQueues/LoopHelpers.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/ConcurrentQueues/LoopHelpers.java Wed Jan 17 12:19:06 2018 +0000
@@ -95,7 +95,7 @@
String num = Long.toString(n);
if (num.length() >= field.length())
return num;
- StringBuffer b = new StringBuffer(field);
+ StringBuilder b = new StringBuilder(field);
b.replace(b.length()-num.length(), b.length(), num);
return b.toString();
}
--- a/test/jdk/java/util/concurrent/ConcurrentQueues/OfferRemoveLoops.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/ConcurrentQueues/OfferRemoveLoops.java Wed Jan 17 12:19:06 2018 +0000
@@ -81,7 +81,7 @@
final CountDownLatch done = new CountDownLatch(3);
final SplittableRandom rnd = new SplittableRandom();
- /** Poor man's bounded buffer; prevents unbounded queue expansion. */
+ // Poor man's bounded buffer; prevents unbounded queue expansion.
final Semaphore offers = new Semaphore(maxQueueSize);
abstract class CheckedThread extends Thread {
--- a/test/jdk/java/util/concurrent/Exchanger/LoopHelpers.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/Exchanger/LoopHelpers.java Wed Jan 17 12:19:06 2018 +0000
@@ -95,7 +95,7 @@
String num = Long.toString(n);
if (num.length() >= field.length())
return num;
- StringBuffer b = new StringBuffer(field);
+ StringBuilder b = new StringBuilder(field);
b.replace(b.length()-num.length(), b.length(), num);
return b.toString();
}
--- a/test/jdk/java/util/concurrent/ExecutorCompletionService/ExecutorCompletionServiceLoops.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/ExecutorCompletionService/ExecutorCompletionServiceLoops.java Wed Jan 17 12:19:06 2018 +0000
@@ -52,7 +52,7 @@
static final ExecutorService pool =
Executors.newFixedThreadPool(POOLSIZE);
static final ExecutorCompletionService<Integer> ecs =
- new ExecutorCompletionService<Integer>(pool);
+ new ExecutorCompletionService<>(pool);
static boolean print = false;
public static void main(String[] args) throws Exception {
--- a/test/jdk/java/util/concurrent/ExecutorCompletionService/LoopHelpers.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/ExecutorCompletionService/LoopHelpers.java Wed Jan 17 12:19:06 2018 +0000
@@ -95,7 +95,7 @@
String num = Long.toString(n);
if (num.length() >= field.length())
return num;
- StringBuffer b = new StringBuffer(field);
+ StringBuilder b = new StringBuilder(field);
b.replace(b.length()-num.length(), b.length(), num);
return b.toString();
}
--- a/test/jdk/java/util/concurrent/FutureTask/BlockingTaskExecutor.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/FutureTask/BlockingTaskExecutor.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,21 +26,25 @@
* @bug 6431315
* @summary ExecutorService.invokeAll might hang
* @author Martin Buchholz
+ * @library /lib/testlibrary/
*/
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.TimeUnit;
+import jdk.testlibrary.Utils;
/**
* Adapted from Doug Lea, which was...
* adapted from a posting by Tom Sugden tom at epcc.ed.ac.uk
*/
public class BlockingTaskExecutor {
+ static final long LONG_DELAY_MS = Utils.adjustTimeout(10_000);
static void realMain(String[] args) throws Throwable {
for (int i = 1; i <= 100; i++) {
@@ -75,15 +79,19 @@
// are blocked. This should cause the tasks to be
// interrupted.
executor.shutdownNow();
- if (! executor.awaitTermination(5L, TimeUnit.SECONDS))
- throw new Error("Executor stuck");
+ if (! executor.awaitTermination(LONG_DELAY_MS, MILLISECONDS))
+ throw new Error(
+ String.format("Executor termination timed out after %d ms",
+ LONG_DELAY_MS));
// Wait for the invocation thread to complete.
- thread.join(5000);
+ thread.join(LONG_DELAY_MS);
if (thread.isAlive()) {
thread.interrupt();
- thread.join(5000);
- throw new Error("invokeAll stuck");
+ thread.join(LONG_DELAY_MS);
+ throw new Error(
+ String.format("invokeAll timed out after %d ms",
+ LONG_DELAY_MS));
}
}
--- a/test/jdk/java/util/concurrent/FutureTask/ExplicitSet.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/FutureTask/ExplicitSet.java Wed Jan 17 12:19:06 2018 +0000
@@ -60,7 +60,7 @@
public Boolean call() {
fail("The task should never be run!");
return null;
- };
+ }
});
}
--- a/test/jdk/java/util/concurrent/FutureTask/LoopHelpers.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/FutureTask/LoopHelpers.java Wed Jan 17 12:19:06 2018 +0000
@@ -95,7 +95,7 @@
String num = Long.toString(n);
if (num.length() >= field.length())
return num;
- StringBuffer b = new StringBuffer(field);
+ StringBuilder b = new StringBuilder(field);
b.replace(b.length()-num.length(), b.length(), num);
return b.toString();
}
--- a/test/jdk/java/util/concurrent/FutureTask/NegativeTimeout.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/FutureTask/NegativeTimeout.java Wed Jan 17 12:19:06 2018 +0000
@@ -38,7 +38,7 @@
public class NegativeTimeout {
public static void main(String[] args) throws Exception {
- FutureTask<Void> task = new FutureTask<>( () -> { return null; } );
+ FutureTask<Void> task = new FutureTask<>(() -> null);
try {
task.get(Long.MIN_VALUE, TimeUnit.NANOSECONDS);
} catch (TimeoutException success) {}
--- a/test/jdk/java/util/concurrent/LinkedTransferQueue/WhiteBox.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/LinkedTransferQueue/WhiteBox.java Wed Jan 17 12:19:06 2018 +0000
@@ -56,7 +56,6 @@
import java.util.concurrent.TimeUnit;
import static java.util.stream.Collectors.toList;
import java.util.function.Consumer;
-import java.util.function.Function;
@Test
public class WhiteBox {
--- a/test/jdk/java/util/concurrent/atomic/AtomicUpdaters.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/atomic/AtomicUpdaters.java Wed Jan 17 12:19:06 2018 +0000
@@ -89,9 +89,9 @@
// Would like to test a public volatile in a class in another
// package - but of course there aren't any
- new Config(AtomicInteger.class, "value", "private", hasSM ? false : true, false, "private int field of class in different package", TYPE.INT),
- new Config(AtomicLong.class, "value", "private", hasSM ? false : true, false, "private long field of class in different package", TYPE.LONG),
- new Config(AtomicReference.class, "value", "private", hasSM ? false : true, false, "private reference field of class in different package", TYPE.REF),
+ new Config(AtomicInteger.class, "value", "private", !hasSM, false, "private int field of class in different package", TYPE.INT),
+ new Config(AtomicLong.class, "value", "private", !hasSM, false, "private long field of class in different package", TYPE.LONG),
+ new Config(AtomicReference.class, "value", "private", !hasSM, false, "private reference field of class in different package", TYPE.REF),
};
}
--- a/test/jdk/java/util/concurrent/locks/Lock/LoopHelpers.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/locks/Lock/LoopHelpers.java Wed Jan 17 12:19:06 2018 +0000
@@ -95,7 +95,7 @@
String num = Long.toString(n);
if (num.length() >= field.length())
return num;
- StringBuffer b = new StringBuffer(field);
+ StringBuilder b = new StringBuilder(field);
b.replace(b.length()-num.length(), b.length(), num);
return b.toString();
}
--- a/test/jdk/java/util/concurrent/locks/ReentrantLock/LoopHelpers.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/locks/ReentrantLock/LoopHelpers.java Wed Jan 17 12:19:06 2018 +0000
@@ -95,7 +95,7 @@
String num = Long.toString(n);
if (num.length() >= field.length())
return num;
- StringBuffer b = new StringBuffer(field);
+ StringBuilder b = new StringBuilder(field);
b.replace(b.length()-num.length(), b.length(), num);
return b.toString();
}
--- a/test/jdk/java/util/concurrent/locks/ReentrantReadWriteLock/LoopHelpers.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/locks/ReentrantReadWriteLock/LoopHelpers.java Wed Jan 17 12:19:06 2018 +0000
@@ -95,7 +95,7 @@
String num = Long.toString(n);
if (num.length() >= field.length())
return num;
- StringBuffer b = new StringBuffer(field);
+ StringBuilder b = new StringBuilder(field);
b.replace(b.length()-num.length(), b.length(), num);
return b.toString();
}
--- a/test/jdk/java/util/concurrent/tck/AbstractQueueTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/AbstractQueueTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -80,7 +80,7 @@
}
/**
- * add throws IllegalStateException true if offer fails
+ * add throws IllegalStateException if offer fails
*/
public void testAddF() {
Fail q = new Fail();
@@ -106,7 +106,7 @@
*/
public void testRemoveS() {
Succeed q = new Succeed();
- q.remove();
+ assertSame(one, q.remove());
}
/**
@@ -125,7 +125,7 @@
*/
public void testElementS() {
Succeed q = new Succeed();
- q.element();
+ assertSame(one, q.element());
}
/**
--- a/test/jdk/java/util/concurrent/tck/AbstractQueuedSynchronizerTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/AbstractQueuedSynchronizerTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -1289,11 +1289,10 @@
}
/**
- * Disabled demo test for (unfixed as of 2017-11)
* JDK-8191483: AbstractQueuedSynchronizer cancel/cancel race
* ant -Djsr166.tckTestClass=AbstractQueuedSynchronizerTest -Djsr166.methodFilter=testCancelCancelRace -Djsr166.runsPerTest=100 tck
*/
- public void DISABLED_testCancelCancelRace() throws InterruptedException {
+ public void testCancelCancelRace() throws InterruptedException {
class Sync extends AbstractQueuedSynchronizer {
protected boolean tryAcquire(int acquires) {
return !hasQueuedPredecessors() && compareAndSetState(0, 1);
--- a/test/jdk/java/util/concurrent/tck/ArrayDeque8Test.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/ArrayDeque8Test.java Wed Jan 17 12:19:06 2018 +0000
@@ -110,14 +110,13 @@
assertEquals((Integer) 1, q.peekLast());
assertEquals(maxArraySize - 1, q.size());
- ArrayDeque qq = q;
ArrayDeque smallish = new ArrayDeque(
Collections.nCopies(Integer.MAX_VALUE - q.size() + 1, e));
assertThrows(
IllegalStateException.class,
- () -> qq.addAll(qq),
- () -> qq.addAll(smallish),
- () -> smallish.addAll(qq));
+ () -> q.addAll(q),
+ () -> q.addAll(smallish),
+ () -> smallish.addAll(q));
}
}
--- a/test/jdk/java/util/concurrent/tck/AtomicReferenceArrayTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/AtomicReferenceArrayTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -84,7 +84,7 @@
*/
public void testConstructorSubClassArray() {
Integer[] a = { two, one, three, four, seven };
- AtomicReferenceArray<Number> aa = new AtomicReferenceArray<Number>(a);
+ AtomicReferenceArray<Number> aa = new AtomicReferenceArray<>(a);
assertEquals(a.length, aa.length());
for (int i = 0; i < a.length; i++) {
assertSame(a[i], aa.get(i));
--- a/test/jdk/java/util/concurrent/tck/BlockingQueueTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/BlockingQueueTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -216,18 +216,20 @@
public void testDrainToNonPositiveMaxElements() {
final BlockingQueue q = emptyCollection();
final int[] ns = { 0, -1, -42, Integer.MIN_VALUE };
- for (int n : ns)
- assertEquals(0, q.drainTo(new ArrayList(), n));
+ final ArrayList sink = new ArrayList();
+ for (int n : ns) {
+ assertEquals(0, q.drainTo(sink, n));
+ assertTrue(sink.isEmpty());
+ }
if (q.remainingCapacity() > 0) {
// Not SynchronousQueue, that is
Object one = makeElement(1);
q.add(one);
- ArrayList c = new ArrayList();
for (int n : ns)
- assertEquals(0, q.drainTo(new ArrayList(), n));
+ assertEquals(0, q.drainTo(sink, n));
assertEquals(1, q.size());
assertSame(one, q.poll());
- assertTrue(c.isEmpty());
+ assertTrue(sink.isEmpty());
}
}
--- a/test/jdk/java/util/concurrent/tck/CompletableFutureTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/CompletableFutureTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -357,7 +357,7 @@
* toString indicates current completion state
*/
public void testToString_incomplete() {
- CompletableFuture<String> f = new CompletableFuture<String>();
+ CompletableFuture<String> f = new CompletableFuture<>();
assertTrue(f.toString().matches(".*\\[.*Not completed.*\\]"));
if (testImplementationDetails)
assertEquals(identityString(f) + "[Not completed]",
@@ -365,7 +365,7 @@
}
public void testToString_normal() {
- CompletableFuture<String> f = new CompletableFuture<String>();
+ CompletableFuture<String> f = new CompletableFuture<>();
assertTrue(f.complete("foo"));
assertTrue(f.toString().matches(".*\\[.*Completed normally.*\\]"));
if (testImplementationDetails)
@@ -374,7 +374,7 @@
}
public void testToString_exception() {
- CompletableFuture<String> f = new CompletableFuture<String>();
+ CompletableFuture<String> f = new CompletableFuture<>();
assertTrue(f.completeExceptionally(new IndexOutOfBoundsException()));
assertTrue(f.toString().matches(".*\\[.*Completed exceptionally.*\\]"));
if (testImplementationDetails)
@@ -384,7 +384,7 @@
public void testToString_cancelled() {
for (boolean mayInterruptIfRunning : new boolean[] { true, false }) {
- CompletableFuture<String> f = new CompletableFuture<String>();
+ CompletableFuture<String> f = new CompletableFuture<>();
assertTrue(f.cancel(mayInterruptIfRunning));
assertTrue(f.toString().matches(".*\\[.*Completed exceptionally.*\\]"));
if (testImplementationDetails)
--- a/test/jdk/java/util/concurrent/tck/ConcurrentHashMap8Test.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/ConcurrentHashMap8Test.java Wed Jan 17 12:19:06 2018 +0000
@@ -212,7 +212,7 @@
*/
public void testReplaceAll() {
ConcurrentHashMap<Integer, String> map = map5();
- map.replaceAll((x, y) -> { return x > 3 ? "Z" : y; });
+ map.replaceAll((x, y) -> (x > 3) ? "Z" : y);
assertEquals("A", map.get(one));
assertEquals("B", map.get(two));
assertEquals("C", map.get(three));
--- a/test/jdk/java/util/concurrent/tck/ConcurrentHashMapTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/ConcurrentHashMapTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -83,17 +83,12 @@
return map;
}
- /** Re-implement Integer.compare for old java versions */
- static int compare(int x, int y) {
- return (x < y) ? -1 : (x > y) ? 1 : 0;
- }
-
// classes for testing Comparable fallbacks
static class BI implements Comparable<BI> {
private final int value;
BI(int value) { this.value = value; }
public int compareTo(BI other) {
- return compare(value, other.value);
+ return Integer.compare(value, other.value);
}
public boolean equals(Object x) {
return (x instanceof BI) && ((BI)x).value == value;
@@ -127,7 +122,7 @@
break;
}
if (r == 0)
- r = compare(size(), other.size());
+ r = Integer.compare(size(), other.size());
return r;
}
private static final long serialVersionUID = 0;
@@ -155,8 +150,7 @@
*/
public void testComparableFamily() {
int size = 500; // makes measured test run time -> 60ms
- ConcurrentHashMap<BI, Boolean> m =
- new ConcurrentHashMap<BI, Boolean>();
+ ConcurrentHashMap<BI, Boolean> m = new ConcurrentHashMap<>();
for (int i = 0; i < size; i++) {
assertNull(m.put(new CI(i), true));
}
@@ -172,13 +166,12 @@
*/
public void testGenericComparable() {
int size = 120; // makes measured test run time -> 60ms
- ConcurrentHashMap<Object, Boolean> m =
- new ConcurrentHashMap<Object, Boolean>();
+ ConcurrentHashMap<Object, Boolean> m = new ConcurrentHashMap<>();
for (int i = 0; i < size; i++) {
BI bi = new BI(i);
BS bs = new BS(String.valueOf(i));
- LexicographicList<BI> bis = new LexicographicList<BI>(bi);
- LexicographicList<BS> bss = new LexicographicList<BS>(bs);
+ LexicographicList<BI> bis = new LexicographicList<>(bi);
+ LexicographicList<BS> bss = new LexicographicList<>(bs);
assertNull(m.putIfAbsent(bis, true));
assertTrue(m.containsKey(bis));
if (m.putIfAbsent(bss, true) == null)
@@ -197,14 +190,13 @@
*/
public void testGenericComparable2() {
int size = 500; // makes measured test run time -> 60ms
- ConcurrentHashMap<Object, Boolean> m =
- new ConcurrentHashMap<Object, Boolean>();
+ ConcurrentHashMap<Object, Boolean> m = new ConcurrentHashMap<>();
for (int i = 0; i < size; i++) {
m.put(Collections.singletonList(new BI(i)), true);
}
for (int i = 0; i < size; i++) {
- LexicographicList<BI> bis = new LexicographicList<BI>(new BI(i));
+ LexicographicList<BI> bis = new LexicographicList<>(new BI(i));
assertTrue(m.containsKey(bis));
}
}
@@ -215,8 +207,7 @@
*/
public void testMixedComparable() {
int size = 1200; // makes measured test run time -> 35ms
- ConcurrentHashMap<Object, Object> map =
- new ConcurrentHashMap<Object, Object>();
+ ConcurrentHashMap<Object, Object> map = new ConcurrentHashMap<>();
Random rng = new Random();
for (int i = 0; i < size; i++) {
Object x;
--- a/test/jdk/java/util/concurrent/tck/ConcurrentSkipListSetTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/ConcurrentSkipListSetTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -65,8 +65,7 @@
* Integers 0 ... n - 1.
*/
private static ConcurrentSkipListSet<Integer> populatedSet(int n) {
- ConcurrentSkipListSet<Integer> q =
- new ConcurrentSkipListSet<Integer>();
+ ConcurrentSkipListSet<Integer> q = new ConcurrentSkipListSet<>();
assertTrue(q.isEmpty());
for (int i = n - 1; i >= 0; i -= 2)
assertTrue(q.add(new Integer(i)));
--- a/test/jdk/java/util/concurrent/tck/ConcurrentSkipListSubSetTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/ConcurrentSkipListSubSetTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -60,8 +60,7 @@
* Integers 0 ... n - 1.
*/
private static NavigableSet<Integer> populatedSet(int n) {
- ConcurrentSkipListSet<Integer> q =
- new ConcurrentSkipListSet<Integer>();
+ ConcurrentSkipListSet<Integer> q = new ConcurrentSkipListSet<>();
assertTrue(q.isEmpty());
for (int i = n - 1; i >= 0; i -= 2)
--- a/test/jdk/java/util/concurrent/tck/CopyOnWriteArrayListTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/CopyOnWriteArrayListTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -83,8 +83,8 @@
static CopyOnWriteArrayList<Integer> populatedArray(Integer[] elements) {
CopyOnWriteArrayList<Integer> a = new CopyOnWriteArrayList<>();
assertTrue(a.isEmpty());
- for (int i = 0; i < elements.length; i++)
- a.add(elements[i]);
+ for (Integer element : elements)
+ a.add(element);
assertFalse(a.isEmpty());
assertEquals(elements.length, a.size());
return a;
--- a/test/jdk/java/util/concurrent/tck/CyclicBarrierTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/CyclicBarrierTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -335,8 +335,7 @@
c.await();
shouldThrow();
}
- catch (BrokenBarrierException ok) {}
- catch (InterruptedException ok) {}
+ catch (BrokenBarrierException | InterruptedException ok) {}
}}});
for (int i = 0; i < 4; i++) {
--- a/test/jdk/java/util/concurrent/tck/ForkJoinPool8Test.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/ForkJoinPool8Test.java Wed Jan 17 12:19:06 2018 +0000
@@ -1557,7 +1557,7 @@
* timeout elapsed
*/
public void testAwaitQuiescence2() throws Exception {
- /**
+ /*
* """It is possible to disable or limit the use of threads in the
* common pool by setting the parallelism property to zero. However
* doing so may cause unjoined tasks to never be executed."""
--- a/test/jdk/java/util/concurrent/tck/FutureTaskTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/FutureTaskTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -865,7 +865,7 @@
* toString indicates current completion state
*/
public void testToString_incomplete() {
- FutureTask<String> f = new FutureTask<String>(() -> "");
+ FutureTask<String> f = new FutureTask<>(() -> "");
assertTrue(f.toString().matches(".*\\[.*Not completed.*\\]"));
if (testImplementationDetails)
assertTrue(f.toString().startsWith(
@@ -873,7 +873,7 @@
}
public void testToString_normal() {
- FutureTask<String> f = new FutureTask<String>(() -> "");
+ FutureTask<String> f = new FutureTask<>(() -> "");
f.run();
assertTrue(f.toString().matches(".*\\[.*Completed normally.*\\]"));
if (testImplementationDetails)
@@ -882,7 +882,7 @@
}
public void testToString_exception() {
- FutureTask<String> f = new FutureTask<String>(
+ FutureTask<String> f = new FutureTask<>(
() -> { throw new ArithmeticException(); });
f.run();
assertTrue(f.toString().matches(".*\\[.*Completed exceptionally.*\\]"));
@@ -893,7 +893,7 @@
public void testToString_cancelled() {
for (boolean mayInterruptIfRunning : new boolean[] { true, false }) {
- FutureTask<String> f = new FutureTask<String>(() -> "");
+ FutureTask<String> f = new FutureTask<>(() -> "");
assertTrue(f.cancel(mayInterruptIfRunning));
assertTrue(f.toString().matches(".*\\[.*Cancelled.*\\]"));
if (testImplementationDetails)
--- a/test/jdk/java/util/concurrent/tck/JSR166TestCase.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/JSR166TestCase.java Wed Jan 17 12:19:06 2018 +0000
@@ -472,18 +472,11 @@
}
}
- public static boolean atLeastJava6() { return JAVA_CLASS_VERSION >= 50.0; }
- public static boolean atLeastJava7() { return JAVA_CLASS_VERSION >= 51.0; }
- public static boolean atLeastJava8() { return JAVA_CLASS_VERSION >= 52.0; }
- public static boolean atLeastJava9() {
- return JAVA_CLASS_VERSION >= 53.0
- // As of 2015-09, java9 still uses 52.0 class file version
- || JAVA_SPECIFICATION_VERSION.matches("^(1\\.)?(9|[0-9][0-9])$");
- }
- public static boolean atLeastJava10() {
- return JAVA_CLASS_VERSION >= 54.0
- || JAVA_SPECIFICATION_VERSION.matches("^(1\\.)?[0-9][0-9]$");
- }
+ public static boolean atLeastJava6() { return JAVA_CLASS_VERSION >= 50.0; }
+ public static boolean atLeastJava7() { return JAVA_CLASS_VERSION >= 51.0; }
+ public static boolean atLeastJava8() { return JAVA_CLASS_VERSION >= 52.0; }
+ public static boolean atLeastJava9() { return JAVA_CLASS_VERSION >= 53.0; }
+ public static boolean atLeastJava10() { return JAVA_CLASS_VERSION >= 54.0; }
/**
* Collects all JSR166 unit tests as one suite.
--- a/test/jdk/java/util/concurrent/tck/LinkedBlockingQueueTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/LinkedBlockingQueueTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -86,8 +86,7 @@
* Integers 0 ... n - 1.
*/
private static LinkedBlockingQueue<Integer> populatedQueue(int n) {
- LinkedBlockingQueue<Integer> q =
- new LinkedBlockingQueue<Integer>(n);
+ LinkedBlockingQueue<Integer> q = new LinkedBlockingQueue<>(n);
assertTrue(q.isEmpty());
for (int i = 0; i < n; i++)
assertTrue(q.offer(new Integer(i)));
--- a/test/jdk/java/util/concurrent/tck/MapTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/MapTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -129,7 +129,7 @@
final Object v2 = (permitsNullValues && rnd.nextBoolean() && v1 != null)
? null : impl.makeValue(2);
- /** If true, always lands in first bucket in hash tables. */
+ // If true, always lands in first bucket in hash tables.
final boolean poorHash = rnd.nextBoolean();
class Key implements Comparable<Key> {
final int i;
--- a/test/jdk/java/util/concurrent/tck/RecursiveActionTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/RecursiveActionTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -352,8 +352,7 @@
* succeeds in the presence of interrupts
*/
public void testJoinIgnoresInterruptsOutsideForkJoinPool() {
- final SynchronousQueue<FibAction[]> sq =
- new SynchronousQueue<FibAction[]>();
+ final SynchronousQueue<FibAction[]> sq = new SynchronousQueue<>();
RecursiveAction a = new CheckedRecursiveAction() {
protected void realCompute() throws InterruptedException {
FibAction[] fibActions = new FibAction[6];
--- a/test/jdk/java/util/concurrent/tck/ScheduledExecutorSubclassTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/ScheduledExecutorSubclassTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -872,7 +872,7 @@
immediates.forEach(
f -> assertTrue(((ScheduledFuture)f).getDelay(NANOSECONDS) <= 0L));
- Stream.of(immediates, delayeds, periodics).flatMap(c -> c.stream())
+ Stream.of(immediates, delayeds, periodics).flatMap(Collection::stream)
.forEach(f -> assertFalse(f.isDone()));
try { p.shutdown(); } catch (SecurityException ok) { return; }
@@ -926,7 +926,7 @@
assertTrue(q.isEmpty());
- Stream.of(immediates, delayeds, periodics).flatMap(c -> c.stream())
+ Stream.of(immediates, delayeds, periodics).flatMap(Collection::stream)
.forEach(f -> assertTrue(f.isDone()));
for (Future<?> f : immediates) assertNull(f.get());
--- a/test/jdk/java/util/concurrent/tck/ScheduledExecutorTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/ScheduledExecutorTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -831,7 +831,7 @@
immediates.forEach(
f -> assertTrue(((ScheduledFuture)f).getDelay(NANOSECONDS) <= 0L));
- Stream.of(immediates, delayeds, periodics).flatMap(c -> c.stream())
+ Stream.of(immediates, delayeds, periodics).flatMap(Collection::stream)
.forEach(f -> assertFalse(f.isDone()));
try { p.shutdown(); } catch (SecurityException ok) { return; }
@@ -885,7 +885,7 @@
assertTrue(q.isEmpty());
- Stream.of(immediates, delayeds, periodics).flatMap(c -> c.stream())
+ Stream.of(immediates, delayeds, periodics).flatMap(Collection::stream)
.forEach(f -> assertTrue(f.isDone()));
for (Future<?> f : immediates) assertNull(f.get());
--- a/test/jdk/java/util/concurrent/tck/SubmissionPublisherTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/SubmissionPublisherTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -431,7 +431,7 @@
*/
public void testCancel() {
SubmissionPublisher<Integer> p =
- new SubmissionPublisher<Integer>(basicExecutor, 4); // must be < 20
+ new SubmissionPublisher<>(basicExecutor, 4); // must be < 20
TestSubscriber s1 = new TestSubscriber();
TestSubscriber s2 = new TestSubscriber();
p.subscribe(s1);
@@ -1012,6 +1012,7 @@
* cvs update -D '2017-11-25' src/main/java/util/concurrent/SubmissionPublisher.java && ant -Djsr166.expensiveTests=true -Djsr166.tckTestClass=SubmissionPublisherTest -Djsr166.methodFilter=testMissedSignal tck; cvs update -A src/main/java/util/concurrent/SubmissionPublisher.java
*/
public void testMissedSignal_8187947() throws Exception {
+ if (!atLeastJava9()) return; // backport to jdk8 too hard
final int N = expensiveTests ? (1 << 20) : (1 << 10);
final CountDownLatch finished = new CountDownLatch(1);
final SubmissionPublisher<Boolean> pub = new SubmissionPublisher<>();
--- a/test/jdk/java/util/concurrent/tck/ThreadLocalRandomTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/concurrent/tck/ThreadLocalRandomTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -382,7 +382,7 @@
// Don't use main thread's ThreadLocalRandom - it is likely to
// be polluted by previous tests.
final AtomicReference<ThreadLocalRandom> threadLocalRandom =
- new AtomicReference<ThreadLocalRandom>();
+ new AtomicReference<>();
final AtomicLong rand = new AtomicLong();
long firstRand = 0;
--- a/test/jdk/java/util/logging/LogManager/LinkageErrorTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/logging/LogManager/LinkageErrorTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -28,7 +28,8 @@
import java.util.logging.Logger;
/**
- * @test 8152515
+ * @test
+ * @bug 8152515
* @summary Checks that LinkageError are ignored when closing handlers
* during Shutdown.
* @build LinkageErrorTest
--- a/test/jdk/java/util/regex/RegExTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/regex/RegExTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -35,6 +35,7 @@
* 8027645 8035076 8039124 8035975 8074678 6854417 8143854 8147531 7071819
* 8151481 4867170 7080302 6728861 6995635 6736245 4916384 6328855 6192895
* 6345469 6988218 6693451 7006761 8140212 8143282 8158482 8176029 8184706
+ * 8194667
*
* @library /test/lib
* @build jdk.test.lib.RandomFactory
@@ -1367,24 +1368,35 @@
report("Reluctant Repetition");
}
+ private static Pattern serializedPattern(Pattern p) throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(p);
+ oos.close();
+ try (ObjectInputStream ois = new ObjectInputStream(
+ new ByteArrayInputStream(baos.toByteArray()))) {
+ return (Pattern)ois.readObject();
+ }
+ }
+
private static void serializeTest() throws Exception {
String patternStr = "(b)";
String matchStr = "b";
Pattern pattern = Pattern.compile(patternStr);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- ObjectOutputStream oos = new ObjectOutputStream(baos);
- oos.writeObject(pattern);
- oos.close();
- ObjectInputStream ois = new ObjectInputStream(
- new ByteArrayInputStream(baos.toByteArray()));
- Pattern serializedPattern = (Pattern)ois.readObject();
- ois.close();
+ Pattern serializedPattern = serializedPattern(pattern);
Matcher matcher = serializedPattern.matcher(matchStr);
if (!matcher.matches())
failCount++;
if (matcher.groupCount() != 1)
failCount++;
+ pattern = Pattern.compile("a(?-i)b", Pattern.CASE_INSENSITIVE);
+ serializedPattern = serializedPattern(pattern);
+ if (!serializedPattern.matcher("Ab").matches())
+ failCount++;
+ if (serializedPattern.matcher("AB").matches())
+ failCount++;
+
report("Serialization");
}
--- a/test/jdk/java/util/stream/test/org/openjdk/tests/java/util/stream/WhileOpTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/java/util/stream/test/org/openjdk/tests/java/util/stream/WhileOpTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -47,6 +47,7 @@
/*
* @test
* @bug 8071597 8193856
+ * @run main/timeout=240
*/
@Test
public class WhileOpTest extends OpTestCase {
--- a/test/jdk/javax/net/ssl/compatibility/Parameter.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/javax/net/ssl/compatibility/Parameter.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -65,15 +65,15 @@
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384(
Protocol.TLSV1_2, JdkRelease.JDK7),
TLS_RSA_WITH_AES_256_CBC_SHA256(
- Protocol.TLSV1_2, JdkRelease.JDK7),
+ Protocol.TLSV1_2, JdkRelease.JDK6),
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384(
Protocol.TLSV1_2, JdkRelease.JDK7),
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384(
Protocol.TLSV1_2, JdkRelease.JDK7),
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256(
- Protocol.TLSV1_2, JdkRelease.JDK7),
+ Protocol.TLSV1_2, JdkRelease.JDK6),
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256(
- Protocol.TLSV1_2, JdkRelease.JDK7),
+ Protocol.TLSV1_2, JdkRelease.JDK6),
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA(),
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA(),
TLS_RSA_WITH_AES_256_CBC_SHA(),
@@ -86,15 +86,15 @@
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256(
Protocol.TLSV1_2, JdkRelease.JDK7),
TLS_RSA_WITH_AES_128_CBC_SHA256(
- Protocol.TLSV1_2, JdkRelease.JDK7),
+ Protocol.TLSV1_2, JdkRelease.JDK6),
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256(
Protocol.TLSV1_2, JdkRelease.JDK7),
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256(
Protocol.TLSV1_2, JdkRelease.JDK7),
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256(
- Protocol.TLSV1_2, JdkRelease.JDK7),
+ Protocol.TLSV1_2, JdkRelease.JDK6),
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256(
- Protocol.TLSV1_2, JdkRelease.JDK7),
+ Protocol.TLSV1_2, JdkRelease.JDK6),
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA(),
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA(),
TLS_RSA_WITH_AES_128_CBC_SHA(),
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/net/ssl/sanity/CacertsExplorer.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2018 Google Inc. 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.
+ */
+
+import java.security.KeyStore;
+import java.security.cert.X509Certificate;
+import java.util.Arrays;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactory;
+import javax.net.ssl.X509TrustManager;
+
+/*
+ * @test
+ * @bug 8194960
+ * @summary Sanity check trust manager defaults/cacerts.
+ */
+
+/**
+ * Explores the set of root certificates.
+ * Also useful as a standalone program.
+ *
+ * Prior to JEP 319, stock openjdk fails this because no root
+ * certificates were checked into the repo.
+ */
+public class CacertsExplorer {
+ public static void main(String[] args) throws Throwable {
+ String defaultAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
+ if (!defaultAlgorithm.equals("PKIX")) {
+ throw new AssertionError(
+ "Expected default algorithm PKIX, got " + defaultAlgorithm);
+ }
+
+ TrustManagerFactory trustManagerFactory =
+ TrustManagerFactory.getInstance(defaultAlgorithm);
+ trustManagerFactory.init((KeyStore) null);
+ TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
+ if (trustManagers.length != 1) {
+ throw new AssertionError(
+ "Expected exactly one TrustManager, got "
+ + Arrays.toString(trustManagers));
+ }
+ X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
+
+ X509Certificate[] acceptedIssuers = trustManager.getAcceptedIssuers();
+ if (acceptedIssuers.length == 0) {
+ throw new AssertionError(
+ "no accepted issuers - cacerts file configuration problem?");
+ }
+ Arrays.stream(acceptedIssuers)
+ .map(X509Certificate::getIssuerX500Principal)
+ .forEach(System.out::println);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/swing/JFileChooser/8194044/FileSystemRootTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8194044
+ * @summary Test if Win32ShellFolder2 root folder object gets identified as such.
+ * @requires os.family=="windows"
+ * @modules java.desktop/sun.awt.shell
+ * @run main FileSystemRootTest
+ */
+
+import sun.awt.shell.ShellFolder;
+import javax.swing.filechooser.FileSystemView;
+import java.io.File;
+
+public class FileSystemRootTest {
+ public static void main(String[] args) throws Exception {
+ FileSystemView fileSystemView = FileSystemView.getFileSystemView();
+
+ /*
+ * This is the only way to get the Win32ShellFolder2 object, since
+ * it is an internal class, which cannot be instantiated directly.
+ * On windows, this returns "C:\Users\<user-name>\Documents"
+ */
+ File def = fileSystemView.getDefaultDirectory();
+ File root = fileSystemView.getParentDirectory(
+ fileSystemView.getParentDirectory(
+ fileSystemView.getParentDirectory(def)));
+
+ if (! (root instanceof ShellFolder && ShellFolder.isFileSystemRoot(root))) {
+ throw new RuntimeException("Test failed: root drive reported as false");
+ }
+
+ if (fileSystemView.getSystemDisplayName(root).isEmpty()) {
+ throw new RuntimeException("Root drive display name is empty.");
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/swing/UIManager/8193673/TestProperties.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+import javax.swing.plaf.nimbus.NimbusLookAndFeel;
+
+/**
+ * @test
+ * @bug 8193673
+ * @summary The test verifies that l&f specific properties are accessible
+ */
+public final class TestProperties {
+
+ private static final String[] windowsProperties = {
+ "FileChooser.viewMenuButtonToolTipText",
+ "FileChooser.viewMenuButtonAccessibleName",
+ };
+
+ private static final String[] aquaProperties = {
+ "FileChooser.mac.newFolder",
+ };
+
+ private static final String[] gtkProperties = {
+ "FileChooser.renameFileDialogText",
+ };
+
+ private static final String[] motifProperties = {
+ "FileChooser.enterFolderNameLabel.textAndMnemonic",
+ };
+
+ private static final String[] nimbusProperties = {
+ "FileChooser.refreshActionLabelText",
+ };
+
+ private static final String[] metalProperties = {
+ "MetalTitlePane.iconify.titleAndMnemonic",
+ };
+
+ public static void main(final String[] args) throws Exception {
+ UIManager.setLookAndFeel(new MetalLookAndFeel());
+ test(metalProperties);
+
+ UIManager.setLookAndFeel(new NimbusLookAndFeel());
+ test(nimbusProperties);
+
+ UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
+ test(motifProperties);
+
+ try {
+ UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
+ test(windowsProperties);
+ } catch (Exception e) {
+ // ignore
+ }
+
+ try {
+ UIManager.setLookAndFeel("com.apple.laf.AquaLookAndFeel");
+ test(aquaProperties);
+ } catch (Exception e) {
+ // ignore
+ }
+
+ try {
+ UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
+ test(gtkProperties);
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+
+ private static void test(final String[] properties) {
+ for (final String name : properties) {
+ String value = UIManager.getString(name);
+ if (value == null) {
+ System.err.println("Current LookAndFeel = "
+ + UIManager.getLookAndFeel().getDescription());
+ System.err.printf("The value for %s property is null\n", name);
+ throw new Error();
+ }
+ }
+ }
+}
--- a/test/jdk/jdk/internal/reflect/CallerSensitive/CallerSensitiveFinder.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/jdk/internal/reflect/CallerSensitive/CallerSensitiveFinder.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,21 +22,20 @@
*/
import com.sun.tools.classfile.*;
-import com.sun.tools.jdeps.ClassFileReader;
import static com.sun.tools.classfile.ConstantPool.*;
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
import java.io.UncheckedIOException;
import java.net.URI;
-import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -87,8 +86,7 @@
}
}
- private final List<String> csMethodsMissingAnnotation =
- Collections.synchronizedList(new ArrayList<>());
+ private final List<String> csMethodsMissingAnnotation = new CopyOnWriteArrayList<>();
private final ReferenceFinder finder;
public CallerSensitiveFinder() {
this.finder = new ReferenceFinder(getFilter(), getVisitor());
@@ -142,40 +140,17 @@
public List<String> run(Stream<Path> classes)throws IOException, InterruptedException,
ExecutionException, ConstantPoolException
{
- classes.forEach(this::processPath);
+ classes.forEach(p -> pool.submit(getTask(p)));
waitForCompletion();
- pool.shutdown();
return csMethodsMissingAnnotation;
}
- void processPath(Path path) {
- try {
- ClassFileReader reader = ClassFileReader.newInstance(path);
- for (ClassFile cf : reader.getClassFiles()) {
- if (cf.access_flags.is(AccessFlags.ACC_MODULE))
- continue;
-
- String classFileName = cf.getName();
- // for each ClassFile
- // parse constant pool to find matching method refs
- // parse each method (caller)
- // - visit and find method references matching the given method name
- pool.submit(getTask(cf));
- }
- } catch (IOException x) {
- throw new UncheckedIOException(x);
- } catch (ConstantPoolException x) {
- throw new RuntimeException(x);
- }
- }
-
private static final String CALLER_SENSITIVE_ANNOTATION = "Ljdk/internal/reflect/CallerSensitive;";
private static boolean isCallerSensitive(Method m, ConstantPool cp)
throws ConstantPoolException
{
RuntimeAnnotations_attribute attr =
(RuntimeAnnotations_attribute)m.attributes.get(Attribute.RuntimeVisibleAnnotations);
- int index = 0;
if (attr != null) {
for (int i = 0; i < attr.annotations.length; i++) {
Annotation ann = attr.annotations[i];
@@ -188,11 +163,24 @@
return false;
}
- private final List<FutureTask<Void>> tasks = new ArrayList<FutureTask<Void>>();
- private FutureTask<Void> getTask(final ClassFile cf) {
- FutureTask<Void> task = new FutureTask<Void>(new Callable<Void>() {
+ private final List<FutureTask<Void>> tasks = new ArrayList<>();
+
+ /*
+ * Each task parses the class file of the given path.
+ * - parse constant pool to find matching method refs
+ * - parse each method (caller)
+ * - visit and find method references matching the given method name
+ */
+ private FutureTask<Void> getTask(Path p) {
+ FutureTask<Void> task = new FutureTask<>(new Callable<>() {
public Void call() throws Exception {
- finder.parse(cf);
+ try (InputStream is = Files.newInputStream(p)) {
+ finder.parse(ClassFile.read(is));
+ } catch (IOException x) {
+ throw new UncheckedIOException(x);
+ } catch (ConstantPoolException x) {
+ throw new RuntimeException(x);
+ }
return null;
}
});
@@ -207,6 +195,7 @@
if (tasks.isEmpty()) {
throw new RuntimeException("No classes found, or specified.");
}
+ pool.shutdown();
System.out.println("Parsed " + tasks.size() + " classfiles");
}
@@ -215,21 +204,16 @@
// Either an exploded build or an image.
File classes = home.resolve("modules").toFile();
- if (classes.isDirectory()) {
- return Stream.of(classes.toPath());
- } else {
- return jrtPaths();
- }
- }
-
- static Stream<Path> jrtPaths() {
- FileSystem jrt = FileSystems.getFileSystem(URI.create("jrt:/"));
- Path root = jrt.getPath("/");
+ Path root = classes.isDirectory()
+ ? classes.toPath()
+ : FileSystems.getFileSystem(URI.create("jrt:/"))
+ .getPath("/");
try {
return Files.walk(root)
- .filter(p -> p.getNameCount() > 1)
- .filter(p -> p.toString().endsWith(".class"));
+ .filter(p -> p.getNameCount() > 1)
+ .filter(p -> p.toString().endsWith(".class") &&
+ !p.toString().equals("module-info.class"));
} catch (IOException x) {
throw new UncheckedIOException(x);
}
--- a/test/jdk/jdk/internal/reflect/CallerSensitive/CheckCSMs.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/jdk/internal/reflect/CallerSensitive/CheckCSMs.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,13 +22,12 @@
*/
import com.sun.tools.classfile.*;
-import com.sun.tools.jdeps.ClassFileReader;
import static com.sun.tools.classfile.ConstantPool.*;
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
import java.io.UncheckedIOException;
import java.net.URI;
-import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -99,9 +98,8 @@
throws IOException, InterruptedException, ExecutionException,
ConstantPoolException
{
- classes.forEach(this::processPath);
+ classes.forEach(p -> pool.submit(getTask(p)));
waitForCompletion();
- pool.shutdown();
return nonFinalCSMs;
}
@@ -149,27 +147,6 @@
};
}
- void processPath(Path path) {
- try {
- ClassFileReader reader = ClassFileReader.newInstance(path);
- for (ClassFile cf : reader.getClassFiles()) {
- if (cf.access_flags.is(AccessFlags.ACC_MODULE))
- continue;
-
- String classFileName = cf.getName();
- // for each ClassFile
- // parse constant pool to find matching method refs
- // parse each method (caller)
- // - visit and find method references matching the given method name
- pool.submit(getTask(cf));
- }
- } catch (IOException x) {
- throw new UncheckedIOException(x);
- } catch (ConstantPoolException x) {
- throw new RuntimeException(x);
- }
- }
-
private static final String CALLER_SENSITIVE_ANNOTATION
= "Ljdk/internal/reflect/CallerSensitive;";
@@ -202,11 +179,24 @@
cf.access_flags.is(AccessFlags.ACC_FINAL);
}
- private final List<FutureTask<Void>> tasks = new ArrayList<FutureTask<Void>>();
- private FutureTask<Void> getTask(final ClassFile cf) {
- FutureTask<Void> task = new FutureTask<Void>(new Callable<Void>() {
+ private final List<FutureTask<Void>> tasks = new ArrayList<>();
+
+ /*
+ * Each task parses the class file of the given path.
+ * - parse constant pool to find matching method refs
+ * - parse each method (caller)
+ * - visit and find method references matching the given method name
+ */
+ private FutureTask<Void> getTask(Path p) {
+ FutureTask<Void> task = new FutureTask<>(new Callable<>() {
public Void call() throws Exception {
- finder.parse(cf);
+ try (InputStream is = Files.newInputStream(p)) {
+ finder.parse(ClassFile.read(is));
+ } catch (IOException x) {
+ throw new UncheckedIOException(x);
+ } catch (ConstantPoolException x) {
+ throw new RuntimeException(x);
+ }
return null;
}
});
@@ -221,6 +211,7 @@
if (tasks.isEmpty()) {
throw new RuntimeException("No classes found, or specified.");
}
+ pool.shutdown();
System.out.println("Parsed " + tasks.size() + " classfiles");
}
@@ -229,21 +220,16 @@
// Either an exploded build or an image.
File classes = home.resolve("modules").toFile();
- if (classes.isDirectory()) {
- return Stream.of(classes.toPath());
- } else {
- return jrtPaths();
- }
- }
-
- static Stream<Path> jrtPaths() {
- FileSystem jrt = FileSystems.getFileSystem(URI.create("jrt:/"));
- Path root = jrt.getPath("/");
+ Path root = classes.isDirectory()
+ ? classes.toPath()
+ : FileSystems.getFileSystem(URI.create("jrt:/"))
+ .getPath("/");
try {
return Files.walk(root)
- .filter(p -> p.getNameCount() > 1)
- .filter(p -> p.toString().endsWith(".class"));
+ .filter(p -> p.getNameCount() > 1)
+ .filter(p -> p.toString().endsWith(".class") &&
+ !p.toString().equals("module-info.class"));
} catch (IOException x) {
throw new UncheckedIOException(x);
}
--- a/test/jdk/jdk/internal/reflect/Reflection/GetCallerClassWithDepth.java Tue Jan 16 15:52:01 2018 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 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.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8025799
- * @summary Reflection.getCallerClass(int)
- * @modules java.base/jdk.internal.reflect
- * @run main GetCallerClassWithDepth
- */
-
-import jdk.internal.reflect.Reflection;
-
-public class GetCallerClassWithDepth {
- public static void main(String[] args) throws Exception {
- Class<?> c = Test.test();
- assertEquals(c, GetCallerClassWithDepth.class);
- Class<?> caller = Test.caller();
- assertEquals(caller, GetCallerClassWithDepth.class);
- Test.selfTest();
-
- try {
- Reflection.getCallerClass(-1);
- throw new RuntimeException("getCallerClass(-1) should fail");
- } catch (Error e) {
- System.out.println("Expected: " + e.getMessage());
- }
- }
-
- public Class<?> getCallerClass() {
- // 0: Reflection 1: getCallerClass 2: Test.test 3: main
- return Reflection.getCallerClass(3);
- }
-
- static void assertEquals(Class<?> c, Class<?> expected) {
- if (c != expected) {
- throw new RuntimeException("Incorrect caller: " + c);
- }
- }
-
- static class Test {
- // Returns the caller of this method
- public static Class<?> test() {
- return new GetCallerClassWithDepth().getCallerClass();
- }
-
- // Returns the caller of this method
- public static Class<?> caller() {
- // 0: Reflection 1: Test.caller 2: main
- return Reflection.getCallerClass(2);
- }
- public static void selfTest() {
- // 0: Reflection 1: Test.selfTest
- Class<?> c = Reflection.getCallerClass(1);
- assertEquals(c, Test.class);
- Inner1.deep();
- }
-
- static class Inner1 {
- static void deep() {
- deeper();
- }
- static void deeper() {
- Inner2.deepest();
- }
- static class Inner2 {
- static void deepest() {
- // 0: Reflection 1: deepest 2: deeper 3: deep 4: Test.selfTest
- Class<?> c = Reflection.getCallerClass(4);
- assertEquals(c, Test.class);
- }
- }
- }
- }
-}
--- a/test/jdk/lib/testlibrary/bootlib/java.base/java/util/stream/LambdaTestHelpers.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/lib/testlibrary/bootlib/java.base/java/util/stream/LambdaTestHelpers.java Wed Jan 17 12:19:06 2018 +0000
@@ -48,6 +48,7 @@
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.fail;
/**
* LambdaTestHelpers -- assertion methods and useful objects for lambda test cases
@@ -277,7 +278,7 @@
public static<T> void assertContents(Iterable<T> actual, Iterable<T> expected) {
if (actual instanceof Collection && expected instanceof Collection) {
- assertEquals(actual, expected);
+ assertIterableEquals(actual, expected);
} else {
assertContents(actual.iterator(), expected.iterator());
}
@@ -287,6 +288,42 @@
assertEquals(toBoxedList(actual), toBoxedList(expected));
}
+ // Workaround excessive String creation in inner loop in org.testng.Assert.assertEquals(Iterable<?>, Iterable<?>)
+ static public void assertIterableEquals(Iterable<?> actual, Iterable<?> expected) {
+ if(actual == expected) {
+ return;
+ }
+
+ if(actual == null || expected == null) {
+ fail("Iterables not equal: expected: " + expected + " and actual: " + actual);
+ }
+
+ assertIteratorsEquals(actual.iterator(), expected.iterator());
+ }
+
+ // Workaround excessive String creation in inner loop in org.testng.Assert.assertEquals(Iterator<?>, Iterator<?>)
+ static public void assertIteratorsEquals(Iterator<?> actual, Iterator<?> expected) {
+ if (actual == expected) {
+ return;
+ }
+
+ if (actual == null || expected == null) {
+ fail("Iterators not equal: expected: " + expected + " and actual: " + actual);
+ }
+
+ while (actual.hasNext() && expected.hasNext()) {
+ Object e = expected.next();
+ Object a = actual.next();
+ assertEquals(a, e, "Iterator contents differ");
+ }
+
+ if(actual.hasNext()) {
+ fail("Actual iterator returned more elements than the expected iterator.");
+ } else if(expected.hasNext()) {
+ fail("Expected iterator returned more elements than the actual iterator.");
+ }
+ }
+
@SafeVarargs
@SuppressWarnings("varargs")
public static<T> void assertContents(Iterator<T> actual, T... expected) {
--- a/test/jdk/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,12 +25,16 @@
import static jdk.testlibrary.Asserts.*;
+import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintStream;
+import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
/**
* Utility class for verifying output and exit value from a {@code Process}.
@@ -446,8 +450,9 @@
/**
- * Get the contents of the output buffer (stdout and stderr) as list of strings.
- * Output will be split by system property 'line.separator'.
+ * Get the contents of the output buffer (stdout and stderr)
+ * as a list of strings. Output will be split at new-lines as
+ * recognized by java.io.BufferedReader.readLine().
*
* @return Contents of the output buffer as list of strings
*/
@@ -456,12 +461,8 @@
}
private List<String> asLines(String buffer) {
- List<String> l = new ArrayList<>();
- String[] a = buffer.split(Utils.NEW_LINE);
- for (String string : a) {
- l.add(string);
- }
- return l;
+ return new BufferedReader(new StringReader(buffer))
+ .lines().collect(Collectors.toList());
}
/**
--- a/test/jdk/sun/management/jdp/JdpTestCase.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/sun/management/jdp/JdpTestCase.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -77,11 +77,15 @@
onSocketTimeOut(e);
}
+ if (!shouldContinue()) {
+ break;
+ }
+
if (hasTestLivedLongEnough()) {
shutdown();
}
- } while (shouldContinue());
+ } while (true);
log.fine("Test ended successfully.");
}
--- a/test/jdk/sun/reflect/Reflection/GetCallerClassWithDepth.java Tue Jan 16 15:52:01 2018 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 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.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8137058
- * @summary Basic test for the unsupported Reflection.getCallerClass(int)
- * @modules jdk.unsupported
- */
-
-import sun.reflect.Reflection;
-
-public class GetCallerClassWithDepth {
- public static void main(String[] args) throws Exception {
- Class<?> c = Test.test();
- assertEquals(c, GetCallerClassWithDepth.class);
- Class<?> caller = Test.caller();
- assertEquals(caller, GetCallerClassWithDepth.class);
- Test.selfTest();
-
- try {
- Reflection.getCallerClass(-1);
- throw new RuntimeException("getCallerClass(-1) should fail");
- } catch (Error e) {
- System.out.println("Expected: " + e.getMessage());
- }
- }
-
- public Class<?> getCallerClass() {
- // 0: Reflection 1: getCallerClass 2: Test.test 3: main
- return Reflection.getCallerClass(3);
- }
-
- static void assertEquals(Class<?> c, Class<?> expected) {
- if (c != expected) {
- throw new RuntimeException("Incorrect caller: " + c);
- }
- }
-
- static class Test {
- // Returns the caller of this method
- public static Class<?> test() {
- return new GetCallerClassWithDepth().getCallerClass();
- }
-
- // Returns the caller of this method
- public static Class<?> caller() {
- // 0: Reflection 1: Test.caller 2: main
- return Reflection.getCallerClass(2);
- }
- public static void selfTest() {
- // 0: Reflection 1: Test.selfTest
- Class<?> c = Reflection.getCallerClass(1);
- assertEquals(c, Test.class);
- Inner1.deep();
- }
-
- static class Inner1 {
- static void deep() {
- deeper();
- }
- static void deeper() {
- Inner2.deepest();
- }
- static class Inner2 {
- static void deepest() {
- // 0: Reflection 1: deepest 2: deeper 3: deep 4: Test.selfTest
- Class<?> c = Reflection.getCallerClass(4);
- assertEquals(c, Test.class);
- }
- }
- }
- }
-}
--- a/test/jdk/sun/text/resources/LocaleData Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/sun/text/resources/LocaleData Wed Jan 17 12:19:06 2018 +0000
@@ -8312,3 +8312,9 @@
# bug #8081643
FormatData/sr-Latin/NumberElements/0=,
FormatData/sr-Latin/NumberElements/1=.
+
+# bug #8187946
+CurrencyNames//stn=S\u00e3o Tom\u00e9 and Pr\u00edncipe Dobra
+CurrencyNames//lak=Lao Kip
+CurrencyNames//php=Philippine Piso
+CurrencyNames//azn=Azerbaijan Manat
--- a/test/jdk/sun/text/resources/LocaleDataTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/sun/text/resources/LocaleDataTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -38,6 +38,7 @@
* 7114053 7074882 7040556 8008577 8013836 8021121 6192407 6931564 8027695
* 8017142 8037343 8055222 8042126 8074791 8075173 8080774 8129361 8134916
* 8145136 8145952 8164784 8037111 8081643 7037368 8178872 8185841 8190918
+ * 8187946
* @summary Verify locale data
* @modules java.base/sun.util.resources
* @modules jdk.localedata
--- a/test/jdk/tools/launcher/FXLauncherTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/tools/launcher/FXLauncherTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@
* jfx app class, a main-class for the manifest, a bogus one and none.
* All should execute except the incorrect fx app class entries.
* @run main/othervm FXLauncherTest
- * @key intermittent
+ * @key intermittent headful
*/
import java.io.File;
import java.io.IOException;
--- a/test/jdk/tools/launcher/RunpathTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/jdk/tools/launcher/RunpathTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -71,6 +71,10 @@
public static void main(String... args) throws Exception {
if (isSolaris || isLinux) {
RunpathTest rp = new RunpathTest();
+ if (rp.elfreaderCmd == null) {
+ System.err.println("Warning: test passes vacuously");
+ return;
+ }
rp.testRpath();
}
}
--- a/test/langtools/ProblemList.txt Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/ProblemList.txt Wed Jan 17 12:19:06 2018 +0000
@@ -37,7 +37,7 @@
# jshell
jdk/jshell/UserJdiUserRemoteTest.java 8173079 linux-all
-jdk/jshell/UserInputTest.java 8169536 generic-all
+jdk/jshell/UserInputTest.java 8169536 generic-all
###########################################################################
#
@@ -55,6 +55,7 @@
tools/javac/warnings/suppress/TypeAnnotations.java 8057683 generic-all improve ordering of errors with type annotations
tools/javac/modules/SourceInSymlinkTest.java 8180263 windows-all fails when run on a subst drive
tools/javac/options/release/ReleaseOptionUnsupported.java 8193784 generic-all temporary until support for --release 11 is worked out
+tools/javac/jvm/VerboseOutTest.java 8194968 windows-all
###########################################################################
#
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/jdk/javadoc/doclet/testHtmlWarning/TestHtmlWarning.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8194955
+ * @summary Warn when default HTML version is used.
+ * @library ../lib
+ * @modules jdk.javadoc/jdk.javadoc.internal.tool
+ * @build JavadocTester
+ * @run main TestHtmlWarning
+ */
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+
+public class TestHtmlWarning extends JavadocTester {
+
+ public static void main(String... args) throws Exception {
+ Files.write(testFile,
+ List.of("/** Comment. */", "public class C { }"));
+
+ TestHtmlWarning tester = new TestHtmlWarning();
+ tester.runTests();
+ }
+
+ private static final Path testFile = Paths.get("C.java");
+ private static final String warning =
+ "javadoc: warning - You have not specified the version of HTML to use.";
+
+ @Test
+ void testHtml4() {
+ javadoc("-d", "out-4",
+ "-html4",
+ testFile.toString());
+ checkExit(Exit.OK);
+
+ checkOutput(Output.OUT, false, warning);
+ }
+
+ @Test
+ void testHtml5() {
+ javadoc("-d", "out-5",
+ "-html5",
+ testFile.toString());
+ checkExit(Exit.OK);
+
+ checkOutput(Output.OUT, false, warning);
+ }
+
+ @Test
+ void testDefault() {
+ javadoc("-d", "out-default",
+ testFile.toString());
+ checkExit(Exit.OK);
+
+ checkOutput(Output.OUT, true, warning);
+ }
+}
--- a/test/langtools/jdk/javadoc/doclet/testModules/TestModuleServices.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/jdk/javadoc/doclet/testModules/TestModuleServices.java Wed Jan 17 12:19:06 2018 +0000
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 8178067
+ * @bug 8178067 8192007
* @summary tests the module's services, such as provides and uses
* @modules jdk.javadoc/jdk.javadoc.internal.api
* jdk.javadoc/jdk.javadoc.internal.tool
@@ -34,6 +34,7 @@
* @run main TestModuleServices
*/
+import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -52,6 +53,106 @@
}
@Test
+ public void checkModuleServicesDescription(Path base) throws Exception {
+ Path src = Files.createDirectories(base.resolve("src"));
+ ModuleBuilder mb = new ModuleBuilder(tb, "moduleService")
+ .comment("This module exports a package containing the declaration of a service type.")
+ .exports("pkgService")
+ .classes("/**A Package that has a service.*/ package pkgService;")
+ .classes("package pkgService; /**A service Interface for service providers.*/ "
+ + "public interface Service {\n"
+ + " /**\n"
+ + " * A test method for the service.\n"
+ + " */\n"
+ + " void testMethod1();\n"
+ + " /**\n"
+ + " * Another test method for the service.\n"
+ + " */\n"
+ + " void testMethod2();\n"
+ + "}");
+ mb.write(src);
+ mb = new ModuleBuilder(tb, "moduleServiceProvider")
+ .comment("This module provides an implementation of a service.\n" +
+ "@provides pkgService.Service Provides a service whose name is ServiceProvider.")
+ .requires("moduleService")
+ .provides("pkgService.Service", "pkgServiceProvider.ServiceProvider")
+ .classes("/**A Package that has a service provider.*/ package pkgServiceProvider;")
+ .classes("package pkgServiceProvider;\n"
+ + "public class ServiceProvider implements pkgService.Service {\n"
+ + " /**\n"
+ + " * {@inheritDoc}\n"
+ + " */\n"
+ + " public void testMethod1() {}\n"
+ + " /**\n"
+ + " * This is an internal implementation so the documentation will not be seen.\n"
+ + " */\n"
+ + " public void testMethod2() {}\n"
+ + "}");
+ mb.write(src);
+ mb = new ModuleBuilder(tb, "moduleServiceUser")
+ .comment("This module uses a service defined in another module.\n"
+ + "@uses pkgService.Service If no other provider is found, a default internal implementation will be used.")
+ .requires("moduleService")
+ .uses("pkgService.Service")
+ .classes("/**A Package that has a service user.*/ package pkgServiceUser;")
+ .classes("package pkgServiceUser;\n"
+ + "/**\n"
+ + " * A service user class.\n"
+ + " */\n"
+ + "public class ServiceUser {\n"
+ + "}");
+ mb.write(src);
+ mb = new ModuleBuilder(tb, "moduleServiceUserNoDescription")
+ .comment("This is another module that uses a service defined in another module.\n"
+ + "@uses pkgService.Service")
+ .requires("moduleService")
+ .uses("pkgService.Service")
+ .classes("/**A Package that has a service user with no description.*/ package pkgServiceUserNoDescription;")
+ .classes("package pkgServiceUserNoDescription;\n"
+ + "/**\n"
+ + " * A service user class.\n"
+ + " */\n"
+ + "public class ServiceUserNoDescription {\n"
+ + "}");
+ mb.write(src);
+
+ javadoc("-d", base.resolve("out").toString(),
+ "-quiet", "-noindex",
+ "--module-source-path", src.toString(),
+ "--module", "moduleService,moduleServiceProvider,moduleServiceUser,moduleServiceUserNoDescription",
+ "pkgService", "moduleServiceProvider/pkgServiceProvider", "moduleServiceUser/pkgServiceUser",
+ "moduleServiceUserNoDescription/pkgServiceUserNoDescription");
+ checkExit(Exit.OK);
+
+ checkOutput("moduleServiceProvider-summary.html", true,
+ "<tr class=\"altColor\">\n"
+ + "<th class=\"colFirst\" scope=\"row\"><a href=\"pkgService/Service.html\" "
+ + "title=\"interface in pkgService\">Service</a></th>\n"
+ + "<td class=\"colLast\">\n"
+ + "<div class=\"block\">Provides a service whose name is ServiceProvider.</div>\n"
+ + "</td>\n"
+ + "</tr>");
+ checkOutput("moduleServiceUser-summary.html", true,
+ "<tr class=\"altColor\">\n"
+ + "<th class=\"colFirst\" scope=\"row\"><a href=\"pkgService/Service.html\" title=\"interface in pkgService\">Service</a></th>\n"
+ + "<td class=\"colLast\">\n"
+ + "<div class=\"block\">If no other provider is found, a default internal implementation will be used.</div>\n"
+ + "</td>\n"
+ + "</tr>");
+ checkOutput("moduleServiceUserNoDescription-summary.html", true,
+ "<tr class=\"altColor\">\n"
+ + "<th class=\"colFirst\" scope=\"row\"><a href=\"pkgService/Service.html\" title=\"interface in pkgService\">Service</a></th>\n"
+ + "<td class=\"colLast\">\n"
+ + "<div class=\"block\">A service Interface for service providers.</div>\n"
+ + "</td>\n"
+ + "</tr>");
+ checkOutput("moduleServiceProvider-summary.html", false,
+ "A service Interface for service providers.");
+ checkOutput("moduleServiceUser-summary.html", false,
+ "A service Interface for service providers.");
+ }
+
+ @Test
public void checkUsesNoApiTagModuleModeDefault(Path base) throws Exception {
ModuleBuilder mb = new ModuleBuilder(tb, "m")
.comment("module m.\n@provides p1.A abc") // bogus tag
@@ -251,7 +352,8 @@
"<tbody>\n" +
"<tr class=\"altColor\">\n" +
"<th class=\"colFirst\" scope=\"row\"><a href=\"p1/A.html\" title=\"interface in p1\">A</a></th>\n" +
- "<td class=\"colLast\">abc </td>\n" +
+ "<td class=\"colLast\">\n" +
+ "<div class=\"block\">abc</div>\n</td>\n" +
"</tr>\n" +
"</tbody>\n" +
"</table>\n");
@@ -292,7 +394,8 @@
"<tbody>\n" +
"<tr class=\"altColor\">\n" +
"<th class=\"colFirst\" scope=\"row\"><a href=\"p1/A.html\" title=\"interface in p1\">A</a></th>\n" +
- "<td class=\"colLast\">abc </td>\n" +
+ "<td class=\"colLast\">\n" +
+ "<div class=\"block\">abc</div>\n</td>\n" +
"</tr>\n" +
"</tbody>\n" +
"</table>",
@@ -305,7 +408,8 @@
"<tbody>\n" +
"<tr class=\"altColor\">\n" +
"<th class=\"colFirst\" scope=\"row\"><a href=\"p2/B.html\" title=\"class in p2\">B</a></th>\n" +
- "<td class=\"colLast\">def </td>\n" +
+ "<td class=\"colLast\">\n" +
+ "<div class=\"block\">def</div>\n</td>\n" +
"</tr>\n" +
"</tbody>\n" +
"</table>\n");
--- a/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java Wed Jan 17 12:19:06 2018 +0000
@@ -26,7 +26,7 @@
* @bug 8154119 8154262 8156077 8157987 8154261 8154817 8135291 8155995 8162363
* 8168766 8168688 8162674 8160196 8175799 8174974 8176778 8177562 8175218
* 8175823 8166306 8178043 8181622 8183511 8169819 8074407 8183037 8191464
- 8164407
+ 8164407 8192007
* @summary Test modules support in javadoc.
* @author bpatel
* @library ../lib
@@ -764,7 +764,8 @@
+ "</a>",
"<tr class=\"altColor\">\n"
+ "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/TestClassInModuleB.html\" title=\"class in testpkgmdlB\">TestClassInModuleB</a></th>\n"
- + "<td class=\"colLast\">With a test description for uses. </td>\n"
+ + "<td class=\"colLast\">\n"
+ + "<div class=\"block\">With a test description for uses.</div>\n</td>\n"
+ "</tr>",
"<caption><span>Opens</span><span class=\"tabEnd\"> </span></caption>\n"
+ "<tr>\n"
@@ -931,7 +932,8 @@
+ "<td class=\"colLast\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></td>\n");
checkOutput("moduleB-summary.html", true,
"<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/TestClassInModuleB.html\" title=\"class in testpkgmdlB\">TestClassInModuleB</a></th>\n"
- + "<td class=\"colLast\">With a test description for uses. </td>");
+ + "<td class=\"colLast\">\n"
+ + "<div class=\"block\">With a test description for uses.</div>\n</td>\n");
checkOutput("moduletags-summary.html", true,
"<li><a href=\"#module.description\">Description</a> | <a href=\"#modules.summary\">Modules"
+ "</a> | <a href=\"#packages.summary\">Packages</a> | Services</li>",
--- a/test/langtools/jdk/javadoc/tool/6958836/Test.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/jdk/javadoc/tool/6958836/Test.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -63,6 +63,7 @@
// For some reason, this must be the first option when used.
opts.addAll(list("-locale", "en_US"));
opts.add("-Xdoclint:none");
+ opts.add("-html4");
opts.addAll(list("-classpath", System.getProperty("test.src")));
opts.addAll(list("-d", testOutDir.getPath()));
opts.addAll(testOpts);
--- a/test/langtools/jdk/javadoc/tool/6964914/Test.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/jdk/javadoc/tool/6964914/Test.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,6 +47,7 @@
File testSrc = new File(System.getProperty("test.src"));
String[] args = {
"-Xdoclint:none",
+ "-html4",
"-source", "8",
"-classpath", ".",
"-package",
--- a/test/langtools/jdk/javadoc/tool/6964914/TestStdDoclet.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/jdk/javadoc/tool/6964914/TestStdDoclet.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -58,6 +58,7 @@
cmdArgs.addAll(Arrays.asList(
"-classpath", ".", // insulates us from ambient classpath
"-Xdoclint:none",
+ "-html4",
"-package",
new File(testSrc, thisClassName + ".java").getPath()
));
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/jdk/javadoc/tool/AddOpensTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8181878
+ * @summary javadoc should support/ignore --add-opens
+ * @modules jdk.compiler/com.sun.tools.javac.api
+ * @modules jdk.compiler/com.sun.tools.javac.main
+ * @modules jdk.javadoc/jdk.javadoc.internal.api
+ * @modules jdk.javadoc/jdk.javadoc.internal.tool
+ * @library /tools/lib
+ * @build toolbox.JavacTask toolbox.JavadocTask toolbox.TestRunner toolbox.ToolBox
+ * @run main AddOpensTest
+ */
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import toolbox.JavadocTask;
+import toolbox.Task;
+import toolbox.TestRunner;
+import toolbox.ToolBox;
+
+public class AddOpensTest extends TestRunner {
+ public static void main(String... args) throws Exception {
+ AddOpensTest t = new AddOpensTest();
+ t.runTests();
+ }
+
+ private final ToolBox tb = new ToolBox();
+ private final Path src = Paths.get("src");
+ private final Path api = Paths.get("api");
+
+ AddOpensTest() throws Exception {
+ super(System.err);
+ init();
+ }
+
+ void init() throws IOException {
+ tb.writeJavaFiles(src, "public class C { }");
+ }
+
+ @Test
+ public void testEncoding() {
+ Task.Result result = new JavadocTask(tb, Task.Mode.EXEC)
+ .options("-d", api.toString(),
+ "--add-opens", "some.module")
+ .files(src.resolve("C.java"))
+ .run(Task.Expect.SUCCESS)
+ .writeAll();
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/jdk/javadoc/tool/EncodingTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8188649
+ * @summary ensure javadoc -encoding is not ignored
+ * @modules jdk.compiler/com.sun.tools.javac.api
+ * @modules jdk.compiler/com.sun.tools.javac.main
+ * @modules jdk.javadoc/jdk.javadoc.internal.api
+ * @modules jdk.javadoc/jdk.javadoc.internal.tool
+ * @library /tools/lib /tools/javadoc/lib
+ * @build toolbox.JavacTask toolbox.JavadocTask toolbox.TestRunner toolbox.ToolBox
+ * @run main EncodingTest
+ */
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import toolbox.JavadocTask;
+import toolbox.Task;
+import toolbox.TestRunner;
+import toolbox.ToolBox;
+
+public class EncodingTest extends TestRunner {
+ public static void main(String... args) throws Exception {
+ EncodingTest t = new EncodingTest();
+ t.runTests();
+ }
+
+ private final ToolBox tb = new ToolBox();
+ private final Path src = Paths.get("src");
+ private final Path api = Paths.get("api");
+
+ EncodingTest() throws Exception {
+ super(System.err);
+ init();
+ }
+
+ void init() throws IOException {
+ Files.createDirectories(src);
+ Files.write(src.resolve("C.java"),
+ "/** \u03b1\u03b2\u03b3 */ public class C { }".getBytes(StandardCharsets.UTF_8));
+ }
+
+ @Test
+ public void testEncoding() {
+ Task.Result result = new JavadocTask(tb, Task.Mode.EXEC)
+ .outdir(api)
+ .options("-J-Dfile.encoding=ASCII",
+ "-encoding", "UTF-8",
+ "-docencoding", "UTF-8")
+ .files(src.resolve("C.java"))
+ .run(Task.Expect.SUCCESS)
+ .writeAll();
+ }
+}
+
--- a/test/langtools/jdk/javadoc/tool/MaxWarns.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/jdk/javadoc/tool/MaxWarns.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -75,7 +75,7 @@
String javadoc(File f) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
- String[] args = { "-Xdoclint:none", "-d", "api", f.getPath() };
+ String[] args = { "-Xdoclint:none", "-html4", "-d", "api", f.getPath() };
int rc = jdk.javadoc.internal.tool.Main.execute(args, pw);
pw.flush();
return sw.toString();
--- a/test/langtools/jdk/javadoc/tool/QuietOption.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/jdk/javadoc/tool/QuietOption.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -62,6 +62,7 @@
void run1() throws Exception {
List<String> output = doTest(javadoc.getPath(),
"-classpath", ".", // insulates us from ambient classpath
+ "-html4",
"-quiet",
new File(testSrc, thisClassName + ".java").getPath());
--- a/test/langtools/jdk/javadoc/tool/doclint/DocLintTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/jdk/javadoc/tool/doclint/DocLintTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -92,6 +92,7 @@
/* 05 */ "}\n";
private final String rawDiags = "-XDrawDiagnostics";
+ private final String htmlVersion = "-html4";
private enum Message {
// doclint messages
@@ -141,66 +142,66 @@
javadoc = ToolProvider.getSystemDocumentationTool();
fm = javadoc.getStandardFileManager(null, null, null);
try {
- fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(".")));
+ fm.setLocation(StandardLocation.CLASS_OUTPUT, List.of(new File(".")));
fm.setLocation(StandardLocation.CLASS_PATH, Collections.<File>emptyList());
- files = Arrays.asList(new TestJFO("Test.java", code));
+ files = List.of(new TestJFO("Test.java", code));
- test(Collections.<String>emptyList(),
+ test(List.of(htmlVersion),
Main.Result.ERROR,
EnumSet.of(Message.DL_ERR9A, Message.DL_WRN12A));
- test(Arrays.asList(rawDiags),
+ test(List.of(htmlVersion, rawDiags),
Main.Result.ERROR,
EnumSet.of(Message.DL_ERR9, Message.DL_WRN12));
-// test(Arrays.asList("-Xdoclint:none"),
+// test(List.of("-Xdoclint:none"),
// Main.Result.OK,
// EnumSet.of(Message.JD_WRN10, Message.JD_WRN13));
- test(Arrays.asList(rawDiags, "-Xdoclint"),
+ test(List.of(htmlVersion, rawDiags, "-Xdoclint"),
Main.Result.ERROR,
EnumSet.of(Message.DL_ERR9, Message.DL_WRN12));
- test(Arrays.asList(rawDiags, "-Xdoclint:all/public"),
+ test(List.of(htmlVersion, rawDiags, "-Xdoclint:all/public"),
Main.Result.ERROR,
EnumSet.of(Message.OPT_BADQUAL));
- test(Arrays.asList(rawDiags, "-Xdoclint:all", "-public"),
+ test(List.of(htmlVersion, rawDiags, "-Xdoclint:all", "-public"),
Main.Result.OK,
EnumSet.of(Message.DL_WRN12));
- test(Arrays.asList(rawDiags, "-Xdoclint:syntax"),
+ test(List.of(htmlVersion, rawDiags, "-Xdoclint:syntax"),
Main.Result.OK,
EnumSet.of(Message.DL_WRN12));
- test(Arrays.asList(rawDiags, "-private"),
+ test(List.of(htmlVersion, rawDiags, "-private"),
Main.Result.ERROR,
EnumSet.of(Message.DL_ERR6, Message.DL_ERR9, Message.DL_WRN12));
- test(Arrays.asList(rawDiags, "-Xdoclint:syntax", "-private"),
+ test(List.of(htmlVersion, rawDiags, "-Xdoclint:syntax", "-private"),
Main.Result.ERROR,
EnumSet.of(Message.DL_ERR6, Message.DL_WRN12));
- test(Arrays.asList(rawDiags, "-Xdoclint:reference"),
+ test(List.of(htmlVersion, rawDiags, "-Xdoclint:reference"),
Main.Result.ERROR,
EnumSet.of(Message.DL_ERR9));
- test(Arrays.asList(rawDiags, "-Xdoclint:badarg"),
+ test(List.of(htmlVersion, rawDiags, "-Xdoclint:badarg"),
Main.Result.ERROR,
EnumSet.of(Message.OPT_BADARG));
- files = Arrays.asList(new TestJFO("p1/P1Test.java", p1Code),
+ files = List.of(new TestJFO("p1/P1Test.java", p1Code),
new TestJFO("p2/P2Test.java", p2Code));
- test(Arrays.asList(rawDiags),
+ test(List.of(htmlVersion, rawDiags),
Main.Result.ERROR,
EnumSet.of(Message.DL_ERR_P1TEST, Message.DL_ERR_P2TEST));
- test(Arrays.asList(rawDiags, "-Xdoclint/package:p1"),
+ test(List.of(htmlVersion, rawDiags, "-Xdoclint/package:p1"),
Main.Result.ERROR,
EnumSet.of(Message.DL_ERR_P1TEST));
- test(Arrays.asList(rawDiags, "-Xdoclint/package:*p"),
+ test(List.of(htmlVersion, rawDiags, "-Xdoclint/package:*p"),
Main.Result.ERROR,
EnumSet.of(Message.OPT_BADPACKAGEARG));
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/doclint/LambdaTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8194069
+ * @summary ignore declarations in lambda expressions
+ * @modules jdk.compiler/com.sun.tools.doclint
+ * @build DocLintTester
+ * @run main DocLintTester -Xmsgs:all SyntheticTest.java
+ */
+
+package acme;
+
+import java.util.Arrays;
+import java.util.Set;
+import java.util.function.Function;
+
+/**
+ * The class has docs.
+ */
+public final class LambdaTest
+{
+ /**
+ * The field itself has docs.
+ */
+ // Ensure no warning for lambda parameter, at 'string ->'
+ static final Function<String, String> someFunction = string -> {
+ // Ensure no warning for 'localVariable'
+ int localVariable = 3;
+ return Integer.toString(localVariable);
+ };
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/8194932/Foo.jcod Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,115 @@
+class Foo {
+ 0xCAFEBABE;
+ 0; // minor version
+ 52; // version
+ [] { // Constant Pool
+ ; // first element is empty
+ Method #4 #14; // #1
+ String #15; // #2
+ class #16; // #3
+ class #17; // #4
+ Utf8 "<init>"; // #5
+ Utf8 "()V"; // #6
+ Utf8 "Code"; // #7
+ Utf8 "LineNumberTable"; // #8
+ Utf8 "m"; // #9
+ Utf8 "m2"; // #10
+ Utf8 "()Ljava/lang/String;"; // #11
+ Utf8 "SourceFile"; // #12
+ Utf8 "Foo.java"; // #13
+ NameAndType #5 #6; // #14
+ Utf8 "Hello"; // #15
+ Utf8 "Foo"; // #16
+ Utf8 "java/lang/Object"; // #17
+ } // Constant Pool
+
+ 0x0020; // access
+ #3;// this_cpx
+ #4;// super_cpx
+
+ [] { // Interfaces
+ } // Interfaces
+
+ [] { // fields
+ } // fields
+
+ [] { // methods
+ { // Member
+ 0x0000; // access
+ #5; // name_cpx
+ #6; // sig_cpx
+ [] { // Attributes
+ Attr(#7) { // Code
+ 1; // max_stack
+ 1; // max_locals
+ Bytes[]{
+ 0x2AB70001B1;
+ };
+ [] { // Traps
+ } // end Traps
+ [] { // Attributes
+ Attr(#8) { // LineNumberTable
+ [] { // LineNumberTable
+ 0 1;
+ }
+ } // end LineNumberTable
+ } // Attributes
+ } // end Code
+ } // Attributes
+ } // Member
+ ;
+ { // Member
+ 0x0000; // access
+ #9; // name_cpx
+ #6; // sig_cpx
+ [] { // Attributes
+ Attr(#7) { // Code
+ 0; // max_stack
+ 1; // max_locals
+ Bytes[]{
+ 0xB1;
+ };
+ [] { // Traps
+ } // end Traps
+ [] { // Attributes
+ Attr(#8) { // LineNumberTable
+ [] { // LineNumberTable
+ 0 2;
+ }
+ } // end LineNumberTable
+ } // Attributes
+ } // end Code
+ } // Attributes
+ } // Member
+ ;
+ { // Member
+ 0x0000; // access
+ #9; // name_cpx
+ #11; // sig_cpx
+ [] { // Attributes
+ Attr(#7) { // Code
+ 1; // max_stack
+ 1; // max_locals
+ Bytes[]{
+ 0x1202B0;
+ };
+ [] { // Traps
+ } // end Traps
+ [] { // Attributes
+ Attr(#8) { // LineNumberTable
+ [] { // LineNumberTable
+ 0 3;
+ }
+ } // end LineNumberTable
+ } // Attributes
+ } // end Code
+ } // Attributes
+ } // Member
+ } // methods
+
+ [] { // Attributes
+ Attr(#12) { // SourceFile
+ #13;
+ } // end SourceFile
+ } // Attributes
+} // end class Foo
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/8194932/T8194932.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,13 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 8194932
+ * @summary no ambuguity error is emitted if classfile contains two identical methods with different return types
+ * @build Foo
+ * @compile/fail/ref=T8194932.out -XDrawDiagnostics T8194932.java
+ */
+
+class T8194932 {
+ void test(Foo foo) {
+ foo.m(); //should get an ambiguity here
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/8194932/T8194932.out Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,2 @@
+T8194932.java:11:12: compiler.err.ref.ambiguous: m, kindname.method, m(), Foo, kindname.method, m(), Foo
+1 error
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/T6356530/SerializableAbstractClassTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 6356530 8191637
+ * @summary -Xlint:serial does not flag abstract classes with persisent fields
+ * @compile/fail/ref=SerializableAbstractClassTest.out -XDrawDiagnostics -Werror -Xlint:serial SerializableAbstractClassTest.java
+ */
+
+abstract class SerializableAbstractClassTest implements java.io.Serializable {
+ // no serialVersionUID; error
+ abstract void m2();
+
+ static abstract class AWithUID implements java.io.Serializable {
+ private static final long serialVersionUID = 0;
+ void m(){}
+ }
+
+ interface I extends java.io.Serializable {
+ // no need for serialVersionUID
+ }
+
+ interface IDefault extends java.io.Serializable {
+ // no need for serialVersionUID
+ default int m() { return 1; }
+ }
+
+ interface IUID extends java.io.Serializable {
+ // no need for serialVersionUID, but not wrong
+ static final long serialVersionUID = 0;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/T6356530/SerializableAbstractClassTest.out Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,4 @@
+SerializableAbstractClassTest.java:31:10: compiler.warn.missing.SVUID: SerializableAbstractClassTest
+- compiler.err.warnings.and.werror
+1 error
+1 warning
--- a/test/langtools/tools/javac/T6356530/SerializableAbstractClassWithNonAbstractMethodsTest.java Tue Jan 16 15:52:01 2018 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 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.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 6356530
- * @summary -Xlint:serial does not flag abstract classes with concrete methods/members
- * @compile/fail/ref=SerializableAbstractClassWithNonAbstractMethodsTest.out -XDrawDiagnostics -Werror -Xlint:serial SerializableAbstractClassWithNonAbstractMethodsTest.java
- */
-
-abstract class SerializableAbstractClassWithNonAbstractMethodsTest implements java.io.Serializable {
- void m1() {}
- abstract void m2();
-
- abstract class AWithUID implements java.io.Serializable {
- private static final long serialVersionUID = 0;
- void m(){}
- }
-
- interface IDefault extends java.io.Serializable {
- default int m() { return 1; }
- }
-
- interface IDefaultAndUID extends java.io.Serializable {
- static final long serialVersionUID = 0;
- default int m() { return 1; }
- }
-}
--- a/test/langtools/tools/javac/T6356530/SerializableAbstractClassWithNonAbstractMethodsTest.out Tue Jan 16 15:52:01 2018 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-SerializableAbstractClassWithNonAbstractMethodsTest.java:40:5: compiler.warn.missing.SVUID: SerializableAbstractClassWithNonAbstractMethodsTest.IDefault
-SerializableAbstractClassWithNonAbstractMethodsTest.java:31:10: compiler.warn.missing.SVUID: SerializableAbstractClassWithNonAbstractMethodsTest
-- compiler.err.warnings.and.werror
-1 error
-2 warnings
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/T8187805/BogusRTTAForUnusedVarTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test 8187805
+ * @summary bogus RuntimeVisibleTypeAnnotations for unused local in a block
+ * @modules jdk.jdeps/com.sun.tools.classfile
+ * jdk.compiler/com.sun.tools.javac.util
+ * @run main BogusRTTAForUnusedVarTest
+ */
+
+import com.sun.tools.classfile.*;
+
+import java.io.File;
+import java.lang.annotation.Target;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import com.sun.tools.classfile.Attribute;
+import com.sun.tools.classfile.RuntimeVisibleTypeAnnotations_attribute;
+import com.sun.tools.classfile.TypeAnnotation;
+import com.sun.tools.classfile.TypeAnnotation.Position;
+import com.sun.tools.javac.util.Assert;
+
+public class BogusRTTAForUnusedVarTest {
+
+ class Foo {
+ void something() {
+ {
+ @MyAnno Object o = new Object();
+ }
+ }
+ }
+
+ @Target(ElementType.TYPE_USE)
+ @Retention(RetentionPolicy.RUNTIME)
+ @interface MyAnno {}
+
+ public static void main(String args[]) throws Throwable {
+ new BogusRTTAForUnusedVarTest().run();
+ }
+
+ void run() throws Throwable {
+ checkRTTA();
+ }
+
+ void checkRTTA() throws Throwable {
+ File testClasses = new File(System.getProperty("test.classes"));
+ File file = new File(testClasses,
+ BogusRTTAForUnusedVarTest.class.getName() + "$Foo.class");
+ ClassFile classFile = ClassFile.read(file);
+ for (Method m : classFile.methods) {
+ if (m.getName(classFile.constant_pool).equals("something")) {
+ for (Attribute a : m.attributes) {
+ if (a.getName(classFile.constant_pool).equals("Code")) {
+ Code_attribute code = (Code_attribute)a;
+ for (Attribute codeAttrs : code.attributes) {
+ if (codeAttrs.getName(classFile.constant_pool).equals("RuntimeVisibleTypeAnnotations")) {
+ throw new AssertionError("no RuntimeVisibleTypeAnnotations attribute should have been generated in this case");
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
--- a/test/langtools/tools/javac/T8192885/AddGotoAfterForLoopToLNTTest.java Tue Jan 16 15:52:01 2018 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/*
- * Copyright (c) 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8192885
- * @summary Compiler in JDK 10-ea+33 misses to include entry in LineNumberTable for goto instruction of foreach loop
- * @library /tools/lib
- * @modules jdk.jdeps/com.sun.tools.classfile
- * jdk.compiler/com.sun.tools.javac.api
- * jdk.compiler/com.sun.tools.javac.main
- * jdk.compiler/com.sun.tools.javac.util
- * jdk.jdeps/com.sun.tools.javap
- * @build toolbox.ToolBox toolbox.JavacTask
- * @run main AddGotoAfterForLoopToLNTTest
- */
-
-import java.io.File;
-import java.nio.file.Paths;
-
-import com.sun.tools.classfile.ClassFile;
-import com.sun.tools.classfile.Code_attribute;
-import com.sun.tools.classfile.LineNumberTable_attribute;
-import com.sun.tools.classfile.Method;
-import com.sun.tools.javac.util.Assert;
-
-import toolbox.JavacTask;
-import toolbox.ToolBox;
-
-public class AddGotoAfterForLoopToLNTTest {
-
- static final String testSource =
- /* 01 */ "class GotoAtEnhancedForTest {\n" +
- /* 02 */ " void lookForThisMethod() {\n" +
- /* 03 */ " for (Object o : java.util.Collections.emptyList()) {\n" +
- /* 04 */ " }\n" +
- /* 05 */ " }\n" +
- /* 06 */ "}";
-
- static final int[][] expectedLNT = {
- // {line-number, start-pc},
- {3, 0},
- {4, 25},
- {3, 28},
- {5, 30},
- };
-
- static final String methodToLookFor = "lookForThisMethod";
-
- public static void main(String[] args) throws Exception {
- new AddGotoAfterForLoopToLNTTest().run();
- }
-
- ToolBox tb = new ToolBox();
-
- void run() throws Exception {
- compileTestClass();
- checkClassFile(new File(Paths.get(System.getProperty("user.dir"),
- "GotoAtEnhancedForTest.class").toUri()), methodToLookFor);
- }
-
- void compileTestClass() throws Exception {
- new JavacTask(tb)
- .sources(testSource)
- .run();
- }
-
- void checkClassFile(final File cfile, String methodToFind) throws Exception {
- ClassFile classFile = ClassFile.read(cfile);
- boolean methodFound = false;
- for (Method method : classFile.methods) {
- if (method.getName(classFile.constant_pool).equals(methodToFind)) {
- methodFound = true;
- Code_attribute code = (Code_attribute) method.attributes.get("Code");
- LineNumberTable_attribute lnt =
- (LineNumberTable_attribute) code.attributes.get("LineNumberTable");
- Assert.check(lnt.line_number_table_length == expectedLNT.length,
- "The LineNumberTable found has a length different to the expected one");
- int i = 0;
- for (LineNumberTable_attribute.Entry entry: lnt.line_number_table) {
- Assert.check(entry.line_number == expectedLNT[i][0] &&
- entry.start_pc == expectedLNT[i][1],
- "LNT entry at pos " + i + " differ from expected." +
- "Found " + entry.line_number + ":" + entry.start_pc +
- ". Expected " + expectedLNT[i][0] + ":" + expectedLNT[i][1]);
- i++;
- }
- }
- }
- Assert.check(methodFound, "The seek method was not found");
- }
-
- void error(String msg) {
- throw new AssertionError(msg);
- }
-}
--- a/test/langtools/tools/javac/flow/tests/TestCaseForEach.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/tools/javac/flow/tests/TestCaseForEach.java Wed Jan 17 12:19:06 2018 +0000
@@ -3,7 +3,7 @@
public class TestCaseForEach {
@AliveRange(varName="o", bytecodeStart=25, bytecodeLength=11)
- @AliveRange(varName="o", bytecodeStart=41, bytecodeLength=1)
+ @AliveRange(varName="o", bytecodeStart=39, bytecodeLength=1)
void m(String[] args) {
Object o;
for (String s : args) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/jvm/VerboseOutTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8194893
+ * @summary javac -verbose prints wrong paths for output files
+ * @modules jdk.compiler
+ * @run main VerboseOutTest
+ */
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.spi.ToolProvider;
+
+public class VerboseOutTest {
+ public static void main(String... args) throws Exception {
+ new VerboseOutTest().run();
+ }
+
+ void run() throws Exception {
+ String className = getClass().getName();
+ Path testSrc = Paths.get(System.getProperty("test.src"));
+ Path file = testSrc.resolve(className + ".java");
+ ToolProvider javac = ToolProvider.findFirst("javac").orElseThrow();
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw, true);
+ int rc = javac.run(pw, pw,
+ "-d", ".",
+ "-verbose",
+ file.toString());
+ String log = sw.toString();
+ System.out.println(log);
+ if (rc != 0) {
+ throw new Exception("compilation failed: rc=" + rc);
+ }
+ String expected = "[wrote ./" + className + ".class]";
+ if (!log.contains(expected)) {
+ throw new Exception("expected output not found: " + expected);
+ }
+ }
+}
+
--- a/test/langtools/tools/javac/processing/model/TestSourceVersion.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/tools/javac/processing/model/TestSourceVersion.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 7025809 8028543 6415644 8028544 8029942 8193291
+ * @bug 7025809 8028543 6415644 8028544 8029942 8187951 8193291
* @summary Test latest, latestSupported, underscore as keyword, etc.
* @author Joseph D. Darcy
* @modules java.compiler
@@ -42,6 +42,7 @@
testLatestSupported();
testVersionVaryingKeywords();
testRestrictedKeywords();
+ testVar();
}
private static void testLatestSupported() {
@@ -96,6 +97,19 @@
}
}
+ private static void testVar() {
+
+ for(SourceVersion version : SourceVersion.values()) {
+ check(false, isKeyword("var", version), "keyword", version);
+ check(false, isKeyword("foo.var", version), "keyword", version);
+ check(false, isKeyword("var.foo", version), "keyword", version);
+
+ check(true, isName("var", version), "name", version);
+ check(true, isName("foo.var", version), "name", version);
+ check(true, isName("var.foo", version), "name", version);
+ }
+ }
+
private static void check(boolean result, boolean expected,
String message, SourceVersion version) {
if (result != expected) {
--- a/test/langtools/tools/javadoc/6964914/TestStdDoclet.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/tools/javadoc/6964914/TestStdDoclet.java Wed Jan 17 12:19:06 2018 +0000
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -57,6 +57,7 @@
cmdArgs.add(javadoc.getPath());
cmdArgs.addAll(Arrays.asList(
"-classpath", ".", // insulates us from ambient classpath
+ "-html4",
"-Xdoclint:none",
"-package",
new File(testSrc, thisClassName + ".java").getPath()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javadoc/AddOpensTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8181878
+ * @summary javadoc should support/ignore --add-opens
+ * @modules jdk.compiler/com.sun.tools.javac.api
+ * @modules jdk.compiler/com.sun.tools.javac.main
+ * @modules jdk.javadoc/jdk.javadoc.internal.api
+ * @modules jdk.javadoc/jdk.javadoc.internal.tool
+ * @library /tools/lib /tools/javadoc/lib
+ * @build toolbox.JavacTask toolbox.JavadocTask toolbox.TestRunner toolbox.ToolBox ToyDoclet
+ * @run main AddOpensTest
+ */
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import toolbox.JavadocTask;
+import toolbox.Task;
+import toolbox.TestRunner;
+import toolbox.ToolBox;
+
+public class AddOpensTest extends TestRunner {
+ public static void main(String... args) throws Exception {
+ AddOpensTest t = new AddOpensTest();
+ t.runTests();
+ }
+
+ private final ToolBox tb = new ToolBox();
+ private final Path src = Paths.get("src");
+ private final Path api = Paths.get("api");
+
+ AddOpensTest() throws Exception {
+ super(System.err);
+ init();
+ }
+
+ void init() throws IOException {
+ tb.writeJavaFiles(src, "public class C { }");
+ }
+
+ @Test
+ public void testEncoding() {
+ Task.Result result = new JavadocTask(tb, Task.Mode.EXEC)
+ .options("-docletpath", System.getProperty("test.class.path"),
+ "-doclet", "ToyDoclet",
+ "--add-opens", "some.module")
+ .files(src.resolve("C.java"))
+ .run(Task.Expect.SUCCESS)
+ .writeAll();
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javadoc/EncodingTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8188649
+ * @summary javadoc -encoding doesn't work when using the old doclet API
+ * @modules jdk.compiler/com.sun.tools.javac.api
+ * @modules jdk.compiler/com.sun.tools.javac.main
+ * @modules jdk.javadoc/jdk.javadoc.internal.api
+ * @modules jdk.javadoc/jdk.javadoc.internal.tool
+ * @library /tools/lib /tools/javadoc/lib
+ * @build toolbox.JavacTask toolbox.JavadocTask toolbox.TestRunner toolbox.ToolBox ToyDoclet
+ * @run main EncodingTest
+ */
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import toolbox.JavadocTask;
+import toolbox.Task;
+import toolbox.TestRunner;
+import toolbox.ToolBox;
+
+public class EncodingTest extends TestRunner {
+ public static void main(String... args) throws Exception {
+ EncodingTest t = new EncodingTest();
+ t.runTests();
+ }
+
+ private final ToolBox tb = new ToolBox();
+ private final Path src = Paths.get("src");
+
+ EncodingTest() throws Exception {
+ super(System.err);
+ init();
+ }
+
+ void init() throws IOException {
+ Files.createDirectories(src);
+ Files.write(src.resolve("C.java"),
+ "/** \u03b1\u03b2\u03b3 */ public class C { }".getBytes(StandardCharsets.UTF_8));
+ }
+
+ @Test
+ public void testEncoding() {
+ Task.Result result = new JavadocTask(tb, Task.Mode.EXEC)
+ .options("-docletpath", System.getProperty("test.class.path"),
+ "-doclet", "ToyDoclet",
+ "-J-Dfile.encoding=ASCII",
+ "-encoding", "UTF-8")
+ .files(src.resolve("C.java"))
+ .run(Task.Expect.SUCCESS)
+ .writeAll();
+ }
+}
+
--- a/test/langtools/tools/jdeps/jdkinternals/RemovedJDKInternals.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/tools/jdeps/jdkinternals/RemovedJDKInternals.java Wed Jan 17 12:19:06 2018 +0000
@@ -85,7 +85,8 @@
.reference("p.Main", "java.lang.Object", "java.base")
.reference("p.Main", "java.util.Iterator", "java.base")
.reference("p.S", "java.lang.Object", "java.base")
- .jdkInternal("p.Main", "sun.reflect.Reflection", "jdk.unsupported")
+ .jdkInternal("p.Main", "sun.reflect.ReflectionFactory", "jdk.unsupported")
+ .removedJdkInternal("p.Main", "sun.reflect.Reflection")
.removedJdkInternal("p.Main", "com.sun.image.codec.jpeg.JPEGCodec")
.removedJdkInternal("p.Main", "sun.misc.Service")
.removedJdkInternal("p.Main", "sun.misc.SoftCache")
@@ -118,7 +119,8 @@
"com.sun.image.codec.jpeg.JPEGCodec", "Use javax.imageio @since 1.4",
"sun.misc.Service", "Use java.util.ServiceLoader @since 1.6",
"sun.misc.SoftCache", "Removed. See http://openjdk.java.net/jeps/260",
- "sun.reflect.Reflection", "Use java.lang.StackWalker @since 9"
+ "sun.reflect.Reflection", "Use java.lang.StackWalker @since 9",
+ "sun.reflect.ReflectionFactory", "See http://openjdk.java.net/jeps/260"
);
@Test
@@ -139,6 +141,8 @@
int pos = line.indexOf("Use ");
if (pos < 0)
pos = line.indexOf("Removed. ");
+ if (pos < 0)
+ pos = line.indexOf("See ");
assertTrue(pos > 0);
String name = line.substring(0, pos).trim();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/jdeps/jdkinternals/patches/jdk.unsupported/sun/reflect/Reflection.java Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 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
+ * 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 sun.reflect;
+
+/*
+ * JDK removed internal API
+ */
+public class Reflection {
+ public static Class<?> getCallerClass(int depth) {
+ return null;
+ }
+}
--- a/test/langtools/tools/jdeps/jdkinternals/src/p/Main.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/langtools/tools/jdeps/jdkinternals/src/p/Main.java Wed Jan 17 12:19:06 2018 +0000
@@ -27,10 +27,14 @@
import sun.misc.Service;
import sun.misc.SoftCache;
import sun.reflect.Reflection;
+import sun.reflect.ReflectionFactory;
public class Main {
public static void main() {
// in jdk.unsupported
+ ReflectionFactory factory = ReflectionFactory.getReflectionFactory();
+
+ // removed from jdk.unsupported in JDK 11
Class<?> caller = Reflection.getCallerClass(2);
// removed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/nashorn/script/basic/JDK-8157251.js Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * JDK-8157251: BeanLinker relinks array length operations for array types
+ *
+ * @test
+ * @run
+ */
+
+var intArray = Java.type("int[]")
+var doubleArray = Java.type("double[]")
+var arrs = [new intArray(20), new doubleArray(0)]
+for (var i in arrs)
+ print(arrs[i].length)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/nashorn/script/basic/JDK-8157251.js.EXPECTED Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,2 @@
+20
+0
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/nashorn/script/basic/JDK-8193567.js Wed Jan 17 12:19:06 2018 +0000
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 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
+ * 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.
+ */
+
+/**
+ * JDK-8193567: Conversion of comparison nodes affects local slots in optimistic continuation
+ *
+ * @test
+ * @run
+ */
+
+function a() {
+ var x, y;
+ return null == (r = null == (x = this.p) ? void 0 : x.r) ? this : y;
+}
+
+a();
--- a/test/nashorn/src/jdk/nashorn/api/scripting/test/ScriptEngineSecurityTest.java Tue Jan 16 15:52:01 2018 +0000
+++ b/test/nashorn/src/jdk/nashorn/api/scripting/test/ScriptEngineSecurityTest.java Wed Jan 17 12:19:06 2018 +0000
@@ -133,7 +133,7 @@
}
}
-
+ // This also covers overriding finalizer in JavaAdapter such as JDK-8194985
@Test
public void securitySystemExitFromFinalizerThread() throws ScriptException {
if (System.getSecurityManager() == null) {