--- a/.hgtags Tue Jan 08 17:20:28 2019 -0500
+++ b/.hgtags Thu Jan 10 13:13:56 2019 -0500
@@ -532,3 +532,4 @@
7496df94b3b79f3da53925d2d137317715f11d97 jdk-12+25
50677f43ac3df9a8684222b8893543c60f3aa0bd jdk-13+2
de9fd809bb475401aad188eab2264226788aad81 jdk-12+26
+642346a11059b9f283110dc301a24ed43b76a94e jdk-13+3
--- a/make/autoconf/basics.m4 Tue Jan 08 17:20:28 2019 -0500
+++ b/make/autoconf/basics.m4 Thu Jan 10 13:13:56 2019 -0500
@@ -999,7 +999,7 @@
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
MAKE_EXPECTED_ENV='msys'
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
- MAKE_EXPECTED_ENV='x86_64-pc-linux-gnu'
+ MAKE_EXPECTED_ENV='x86_64-.*-linux-gnu'
else
AC_MSG_ERROR([Unknown Windows environment])
fi
--- a/make/autoconf/toolchain_windows.m4 Tue Jan 08 17:20:28 2019 -0500
+++ b/make/autoconf/toolchain_windows.m4 Thu Jan 10 13:13:56 2019 -0500
@@ -272,7 +272,26 @@
eval USE_UCRT="\${VS_USE_UCRT_${VS_VERSION}}"
eval VS_SUPPORTED="\${VS_SUPPORTED_${VS_VERSION}}"
eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
- VS_PATH="$TOOLCHAIN_PATH:$PATH"
+
+ # The TOOLCHAIN_PATH from a devkit is in Unix format. In WSL we need a
+ # windows version of the complete VS_PATH as VS_PATH_WINDOWS
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
+ # Convert the toolchain path
+ OLDIFS="$IFS"
+ IFS=":"
+ VS_PATH_WINDOWS=""
+ for i in $TOOLCHAIN_PATH; do
+ path=$i
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([path])
+ VS_PATH_WINDOWS="$VS_PATH_WINDOWS;$path"
+ done
+ IFS="$OLDIFS"
+ # Append the current path from Windows env
+ WINDOWS_PATH="`$CMD /c echo %PATH%`"
+ VS_PATH_WINDOWS="$VS_PATH_WINDOWS;$WINDOWS_PATH"
+ else
+ VS_PATH="$TOOLCHAIN_PATH:$PATH"
+ fi
# Convert DEVKIT_VS_INCLUDE into windows style VS_INCLUDE so that it
# can still be exported as INCLUDE for compiler invocations without
@@ -450,6 +469,34 @@
. $VS_ENV_TMP_DIR/set-vs-env.sh
# Now we have VS_PATH, VS_INCLUDE, VS_LIB. For further checking, we
# also define VCINSTALLDIR, WindowsSdkDir and WINDOWSSDKDIR.
+
+ # In WSL, the extracted VS_PATH is Windows style. This needs to be
+ # rewritten as Unix style and the Windows style version is saved
+ # in VS_PATH_WINDOWS.
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
+ OLDIFS="$IFS"
+ IFS=";"
+ # Convert VS_PATH to unix style
+ VS_PATH_WINDOWS="$VS_PATH"
+ VS_PATH=""
+ for i in $VS_PATH_WINDOWS; do
+ path=$i
+ # Only process non-empty elements
+ if test "x$path" != x; then
+ IFS="$OLDIFS"
+ # Check that directory exists before calling fixup_path
+ testpath=$path
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH([testpath])
+ if test -d "$testpath"; then
+ BASIC_FIXUP_PATH([path])
+ BASIC_APPEND_TO_PATH(VS_PATH, $path)
+ fi
+ IFS=";"
+ fi
+ done
+ IFS="$OLDIFS"
+ fi
+
else
# We did not find a vsvars bat file, let's hope we are run from a VS command prompt.
AC_MSG_NOTICE([Cannot locate a valid Visual Studio installation, checking current environment])
@@ -483,29 +530,9 @@
AC_SUBST(VS_INCLUDE)
AC_SUBST(VS_LIB)
+ # Convert VS_INCLUDE into SYSROOT_CFLAGS
OLDIFS="$IFS"
IFS=";"
- if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then
- # Convert VS_PATH to unix style
- VS_PATH_WINDOWS="$VS_PATH"
- VS_PATH=""
- for i in $VS_PATH_WINDOWS; do
- path=$i
- # Only process non-empty elements
- if test "x$path" != x; then
- IFS="$OLDIFS"
- # Check that directory exists before calling fixup_path
- testpath=$path
- BASIC_WINDOWS_REWRITE_AS_UNIX_PATH([testpath])
- if test -d "$testpath"; then
- BASIC_FIXUP_PATH([path])
- BASIC_APPEND_TO_PATH(VS_PATH, $path)
- fi
- IFS=";"
- fi
- done
- fi
- # Convert VS_INCLUDE into SYSROOT_CFLAGS
for i in $VS_INCLUDE; do
ipath=$i
# Only process non-empty elements
--- a/make/conf/jib-profiles.js Tue Jan 08 17:20:28 2019 -0500
+++ b/make/conf/jib-profiles.js Thu Jan 10 13:13:56 2019 -0500
@@ -386,7 +386,9 @@
target_cpu: "x64",
dependencies: ["devkit", "graphviz", "pandoc", "graalunit_lib"],
configure_args: concat(common.configure_args_64bit,
- "--enable-full-docs", "--with-zlib=system"),
+ "--enable-full-docs", "--with-zlib=system",
+ (isWsl(input) ? [ "--host=x86_64-unknown-linux-gnu",
+ "--build=x86_64-unknown-linux-gnu" ] : [])),
default_make_targets: ["docs-bundles"],
},
@@ -833,6 +835,13 @@
var boot_jdk_platform = (input.build_os == "macosx" ? "osx" : input.build_os)
+ "-" + input.build_cpu;
+ var boot_jdk_ext = (input.build_os == "windows" ? ".zip" : ".tar.gz")
+ // If running in WSL and building for Windows, it will look like Linux,
+ // but we need a Windows boot JDK.
+ if (isWsl(input) && input.target_os == "windows") {
+ boot_jdk_platform = "windows-" + input.build_cpu;
+ boot_jdk_ext = ".zip";
+ }
var makeBinDir = (input.build_os == "windows"
? input.get("gnumake", "install_path") + "/cygwin/bin"
@@ -846,8 +855,7 @@
version: common.boot_jdk_version,
build_number: "28",
file: "bundles/" + boot_jdk_platform + "/jdk-" + common.boot_jdk_version + "_"
- + boot_jdk_platform + "_bin"
- + (input.build_os == "windows" ? ".zip" : ".tar.gz"),
+ + boot_jdk_platform + "_bin" + boot_jdk_ext,
configure_args: "--with-boot-jdk=" + common.boot_jdk_home,
environment_path: common.boot_jdk_home + "/bin"
},
@@ -941,7 +949,7 @@
organization: common.organization,
ext: "tar.gz",
revision: "2.3.1+1.0",
- module: "pandoc-" + input.target_platform,
+ module: "pandoc-" + input.build_platform,
configure_args: "PANDOC=" + input.get("pandoc", "install_path") + "/pandoc/pandoc",
environment_path: input.get("pandoc", "install_path") + "/pandoc"
},
@@ -1181,3 +1189,13 @@
}
return version_numbers;
}
+
+/**
+ * Returns true if running in Windows Subsystem for Linux. Jib does not yet
+ * detect wsl as osenv, so fall back on linux with version containing Microsoft.
+ */
+var isWsl = function (input) {
+ return ( input.build_osenv == "wsl"
+ || (input.build_os == "linux"
+ && java.lang.System.getProperty("os.version").contains("Microsoft")));
+}
--- a/make/hotspot/symbols/symbols-unix Tue Jan 08 17:20:28 2019 -0500
+++ b/make/hotspot/symbols/symbols-unix Thu Jan 10 13:13:56 2019 -0500
@@ -81,7 +81,6 @@
JVM_GetClassInterfaces
JVM_GetClassMethodsCount
JVM_GetClassModifiers
-JVM_GetClassName
JVM_GetClassNameUTF
JVM_GetClassSignature
JVM_GetClassSigners
@@ -133,6 +132,7 @@
JVM_HasReferencePendingList
JVM_HoldsLock
JVM_IHashCode
+JVM_InitClassName
JVM_InitStackTraceElement
JVM_InitStackTraceElementArray
JVM_InitializeFromArchive
--- a/make/scripts/pandoc-html-manpage-filter.js Tue Jan 08 17:20:28 2019 -0500
+++ b/make/scripts/pandoc-html-manpage-filter.js Thu Jan 10 13:13:56 2019 -0500
@@ -86,7 +86,7 @@
function change_title(type, value) {
if (type === 'MetaInlines') {
if (value[0].t === 'Str') {
- var match = value[0].c.match(/^([A-Z]+)\([0-9]+\)$/);
+ var match = value[0].c.match(/^([A-Z0-9]+)\([0-9]+\)$/);
if (match) {
return MetaInlines([
Str("The"), Space(),
--- a/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -357,7 +357,7 @@
// Create stub name
char name[64];
const bool weak = (decorators & ON_WEAK_OOP_REF) != 0;
- os::snprintf(name, sizeof(name), "load_barrier%s_stub_%s", weak ? "_weak" : "", raddr->name());
+ os::snprintf(name, sizeof(name), "zgc_load_barrier%s_stub_%s", weak ? "_weak" : "", raddr->name());
__ align(CodeEntryAlignment);
StubCodeMark mark(cgen, "StubRoutines", os::strdup(name, mtCode));
@@ -393,7 +393,7 @@
}
// Setup arguments
- if (c_rarg1 != raddr) {
+ if (raddr != c_rarg1) {
__ movq(c_rarg1, raddr);
}
__ movq(c_rarg0, Address(raddr, 0));
@@ -442,19 +442,22 @@
#undef __
-void ZBarrierSetAssembler::barrier_stubs_init() {
- // Load barrier stubs
- int stub_code_size = 256 * 16; // Rough estimate of code size
+static void barrier_stubs_init_inner(const char* label, const DecoratorSet decorators, address* stub) {
+ const int nregs = RegisterImpl::number_of_registers;
+ const int code_size = nregs * 128; // Rough estimate of code size
ResourceMark rm;
- BufferBlob* bb = BufferBlob::create("zgc_load_barrier_stubs", stub_code_size);
- CodeBuffer buf(bb);
+
+ CodeBuffer buf(BufferBlob::create(label, code_size));
StubCodeGenerator cgen(&buf);
- Register rr = as_Register(0);
- for (int i = 0; i < RegisterImpl::number_of_registers; i++) {
- _load_barrier_slow_stub[i] = generate_load_barrier_stub(&cgen, rr, ON_STRONG_OOP_REF);
- _load_barrier_weak_slow_stub[i] = generate_load_barrier_stub(&cgen, rr, ON_WEAK_OOP_REF);
- rr = rr->successor();
+ for (int i = 0; i < nregs; i++) {
+ const Register reg = as_Register(i);
+ stub[i] = generate_load_barrier_stub(&cgen, reg, decorators);
}
}
+
+void ZBarrierSetAssembler::barrier_stubs_init() {
+ barrier_stubs_init_inner("zgc_load_barrier_stubs", ON_STRONG_OOP_REF, _load_barrier_slow_stub);
+ barrier_stubs_init_inner("zgc_load_barrier_weak_stubs", ON_WEAK_OOP_REF, _load_barrier_weak_slow_stub);
+}
--- a/src/hotspot/os_cpu/linux_x86/gc/z/zArguments_linux_x86.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/os_cpu/linux_x86/gc/z/zArguments_linux_x86.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
#include "utilities/debug.hpp"
void ZArguments::initialize_platform() {
+#ifdef COMPILER2
// The C2 barrier slow path expects vector registers to be least
// 16 bytes wide, which is the minimum width available on all
// x86-64 systems. However, the user could have speficied a lower
@@ -37,4 +38,5 @@
warning("ZGC requires MaxVectorSize to be at least 16");
FLAG_SET_DEFAULT(MaxVectorSize, 16);
}
+#endif
}
--- a/src/hotspot/os_cpu/solaris_x86/os_solaris_x86.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/os_cpu/solaris_x86/os_solaris_x86.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -686,54 +686,6 @@
return true;
}
-#ifndef AMD64
- // Workaround (bug 4900493) for Solaris kernel bug 4966651.
- // Handle an undefined selector caused by an attempt to assign
- // fs in libthread getipriptr(). With the current libthread design every 512
- // thread creations the LDT for a private thread data structure is extended
- // and thre is a hazard that and another thread attempting a thread creation
- // will use a stale LDTR that doesn't reflect the structure's growth,
- // causing a GP fault.
- // Enforce the probable limit of passes through here to guard against an
- // infinite loop if some other move to fs caused the GP fault. Note that
- // this loop counter is ultimately a heuristic as it is possible for
- // more than one thread to generate this fault at a time in an MP system.
- // In the case of the loop count being exceeded or if the poll fails
- // just fall through to a fatal error.
- // If there is some other source of T_GPFLT traps and the text at EIP is
- // unreadable this code will loop infinitely until the stack is exausted.
- // The key to diagnosis in this case is to look for the bottom signal handler
- // frame.
-
- if(! IgnoreLibthreadGPFault) {
- if (sig == SIGSEGV && uc->uc_mcontext.gregs[TRAPNO] == T_GPFLT) {
- const unsigned char *p =
- (unsigned const char *) uc->uc_mcontext.gregs[EIP];
-
- // Expected instruction?
-
- if(p[0] == movlfs[0] && p[1] == movlfs[1]) {
-
- Atomic::inc(&ldtr_refresh);
-
- // Infinite loop?
-
- if(ldtr_refresh < ((2 << 16) / PAGESIZE)) {
-
- // No, force scheduling to get a fresh view of the LDTR
-
- if(poll(NULL, 0, 10) == 0) {
-
- // Retry the move
-
- return false;
- }
- }
- }
- }
- }
-#endif // !AMD64
-
if (!abort_if_unrecognized) {
// caller wants another chance, so give it to him
return false;
--- a/src/hotspot/share/c1/c1_GraphBuilder.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/c1/c1_GraphBuilder.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1451,9 +1451,6 @@
}
if (needs_check) {
- // Not a trivial method because C2 can do better with inlined check.
- compilation()->set_would_profile(true);
-
// Perform the registration of finalizable objects.
ValueStack* state_before = copy_state_for_exception();
load_local(objectType, 0);
@@ -3569,9 +3566,6 @@
}
bool GraphBuilder::try_inline_intrinsics(ciMethod* callee, bool ignore_return) {
- // Not a trivial method because C2 may do intrinsics better.
- compilation()->set_would_profile(true);
-
// For calling is_intrinsic_available we need to transition to
// the '_thread_in_vm' state because is_intrinsic_available()
// accesses critical VM-internal data.
--- a/src/hotspot/share/classfile/javaClasses.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/classfile/javaClasses.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1344,6 +1344,16 @@
java_class->obj_field_put(_module_offset, module);
}
+oop java_lang_Class::name(Handle java_class, TRAPS) {
+ assert(_name_offset != 0, "must be set");
+ oop o = java_class->obj_field(_name_offset);
+ if (o == NULL) {
+ o = StringTable::intern(java_lang_Class::as_external_name(java_class()), THREAD);
+ java_class->obj_field_put(_name_offset, o);
+ }
+ return o;
+}
+
oop java_lang_Class::create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS) {
// This should be improved by adding a field at the Java level or by
// introducing a new VM klass (see comment in ClassFileParser)
@@ -1504,7 +1514,8 @@
macro(classRedefinedCount_offset, k, "classRedefinedCount", int_signature, false) ; \
macro(_class_loader_offset, k, "classLoader", classloader_signature, false); \
macro(_component_mirror_offset, k, "componentType", class_signature, false); \
- macro(_module_offset, k, "module", module_signature, false)
+ macro(_module_offset, k, "module", module_signature, false); \
+ macro(_name_offset, k, "name", string_signature, false); \
void java_lang_Class::compute_offsets() {
if (offsets_computed) {
@@ -2550,12 +2561,14 @@
int version, int bci, Symbol* name, TRAPS) {
assert(element->is_a(SystemDictionary::StackTraceElement_klass()), "sanity check");
+ ResourceMark rm(THREAD);
+ HandleMark hm(THREAD);
+
// Fill in class name
- ResourceMark rm(THREAD);
- const char* str = holder->external_name();
- oop classname = StringTable::intern(str, CHECK);
+ Handle java_class(THREAD, holder->java_mirror());
+ oop classname = java_lang_Class::name(java_class, CHECK);
java_lang_StackTraceElement::set_declaringClass(element(), classname);
- java_lang_StackTraceElement::set_declaringClassObject(element(), holder->java_mirror());
+ java_lang_StackTraceElement::set_declaringClassObject(element(), java_class());
oop loader = holder->class_loader();
if (loader != NULL) {
@@ -2600,6 +2613,7 @@
}
Method* java_lang_StackFrameInfo::get_method(Handle stackFrame, InstanceKlass* holder, TRAPS) {
+ HandleMark hm(THREAD);
Handle mname(THREAD, stackFrame->obj_field(_memberName_offset));
Method* method = (Method*)java_lang_invoke_MemberName::vmtarget(mname());
// we should expand MemberName::name when Throwable uses StackTrace
@@ -2609,6 +2623,7 @@
void java_lang_StackFrameInfo::set_method_and_bci(Handle stackFrame, const methodHandle& method, int bci, TRAPS) {
// set Method* or mid/cpref
+ HandleMark hm(THREAD);
Handle mname(Thread::current(), stackFrame->obj_field(_memberName_offset));
InstanceKlass* ik = method->method_holder();
CallInfo info(method(), ik, CHECK);
@@ -2623,6 +2638,7 @@
void java_lang_StackFrameInfo::to_stack_trace_element(Handle stackFrame, Handle stack_trace_element, TRAPS) {
ResourceMark rm(THREAD);
+ HandleMark hm(THREAD);
Handle mname(THREAD, stackFrame->obj_field(java_lang_StackFrameInfo::_memberName_offset));
Klass* clazz = java_lang_Class::as_Klass(java_lang_invoke_MemberName::clazz(mname()));
InstanceKlass* holder = InstanceKlass::cast(clazz);
@@ -3963,6 +3979,7 @@
int java_lang_Class::_component_mirror_offset;
int java_lang_Class::_init_lock_offset;
int java_lang_Class::_signers_offset;
+int java_lang_Class::_name_offset;
GrowableArray<Klass*>* java_lang_Class::_fixup_mirror_list = NULL;
GrowableArray<Klass*>* java_lang_Class::_fixup_module_field_list = NULL;
int java_lang_Throwable::backtrace_offset;
--- a/src/hotspot/share/classfile/javaClasses.hpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/classfile/javaClasses.hpp Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -240,6 +240,7 @@
static int _class_loader_offset;
static int _module_offset;
static int _component_mirror_offset;
+ static int _name_offset;
static bool offsets_computed;
static int classRedefinedCount_offset;
@@ -310,6 +311,8 @@
static void set_module(oop java_class, oop module);
static oop module(oop java_class);
+ static oop name(Handle java_class, TRAPS);
+
static int oop_size(oop java_class);
static int oop_size_raw(oop java_class);
static void set_oop_size(HeapWord* java_class, int size);
--- a/src/hotspot/share/classfile/systemDictionary.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/classfile/systemDictionary.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1787,14 +1787,17 @@
assert(k != NULL, "just checking");
assert_locked_or_safepoint(Compile_lock);
- // Link into hierachy. Make sure the vtables are initialized before linking into
+ k->set_init_state(InstanceKlass::loaded);
+ // make sure init_state store is already done.
+ // The compiler reads the hierarchy outside of the Compile_lock.
+ // Access ordering is used to add to hierarchy.
+
+ // Link into hierachy.
k->append_to_sibling_list(); // add to superklass/sibling list
k->process_interfaces(THREAD); // handle all "implements" declarations
- k->set_init_state(InstanceKlass::loaded);
+
// Now flush all code that depended on old class hierarchy.
// Note: must be done *after* linking k into the hierarchy (was bug 12/9/97)
- // Also, first reinitialize vtable because it may have gotten out of synch
- // while the new class wasn't connected to the class hierarchy.
CodeCache::flush_dependents_on(k);
}
--- a/src/hotspot/share/gc/shared/barrierSet.hpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/gc/shared/barrierSet.hpp Thu Jan 10 13:13:56 2019 -0500
@@ -275,11 +275,7 @@
template <typename T>
static bool oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
- size_t length) {
- return Raw::oop_arraycopy(src_obj, src_offset_in_bytes, src_raw,
- dst_obj, dst_offset_in_bytes, dst_raw,
- length);
- }
+ size_t length);
// Off-heap oop accesses. These accessors get resolved when
// IN_HEAP is not set (e.g. when using the NativeAccess API), it is
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/hotspot/share/gc/shared/barrierSet.inline.hpp Thu Jan 10 13:13:56 2019 -0500
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2019, 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.
+ */
+
+#ifndef SHARE_VM_GC_SHARED_BARRIERSET_INLINE_HPP
+#define SHARE_VM_GC_SHARED_BARRIERSET_INLINE_HPP
+
+#include "gc/shared/barrierSet.hpp"
+#include "oops/accessDecorators.hpp"
+#include "oops/arrayOop.hpp"
+#include "oops/compressedOops.inline.hpp"
+#include "oops/objArrayOop.inline.hpp"
+#include "oops/oop.hpp"
+
+template <DecoratorSet decorators, typename BarrierSetT>
+template <typename T>
+inline bool BarrierSet::AccessBarrier<decorators, BarrierSetT>::oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
+ arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
+ size_t length) {
+ T* src = arrayOopDesc::obj_offset_to_raw(src_obj, src_offset_in_bytes, src_raw);
+ T* dst = arrayOopDesc::obj_offset_to_raw(dst_obj, dst_offset_in_bytes, dst_raw);
+
+ if (!HasDecorator<decorators, ARRAYCOPY_CHECKCAST>::value) {
+ // Covariant, copy without checks
+ return Raw::oop_arraycopy(NULL, 0, src, NULL, 0, dst, length);
+ }
+
+ // Copy each element with checking casts
+ Klass* const dst_klass = objArrayOop(dst_obj)->element_klass();
+ for (const T* const end = src + length; src < end; src++, dst++) {
+ const T elem = *src;
+ if (!oopDesc::is_instanceof_or_null(CompressedOops::decode(elem), dst_klass)) {
+ return false;
+ }
+ *dst = elem;
+ }
+
+ return true;
+}
+
+#endif // SHARE_VM_GC_SHARED_BARRIERSET_INLINE_HPP
--- a/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -983,7 +983,7 @@
Node* c = new ProjNode(call,TypeFunc::Control);
c = igvn.transform(c);
Node* m = new ProjNode(call, TypeFunc::Memory);
- c = igvn.transform(m);
+ m = igvn.transform(m);
Node* dest = ac->in(ArrayCopyNode::Dest);
assert(dest->is_AddP(), "bad input");
--- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -189,6 +189,15 @@
bs->register_potential_barrier_node(this);
}
+uint LoadBarrierNode::size_of() const {
+ return sizeof(*this);
+}
+
+uint LoadBarrierNode::cmp(const Node& n) const {
+ ShouldNotReachHere();
+ return 0;
+}
+
const Type *LoadBarrierNode::bottom_type() const {
const Type** floadbarrier = (const Type **)(Compile::current()->type_arena()->Amalloc_4((Number_of_Outputs)*sizeof(Type*)));
Node* in_oop = in(Oop);
@@ -198,6 +207,11 @@
return TypeTuple::make(Number_of_Outputs, floadbarrier);
}
+const TypePtr* LoadBarrierNode::adr_type() const {
+ ShouldNotReachHere();
+ return NULL;
+}
+
const Type *LoadBarrierNode::Value(PhaseGVN *phase) const {
const Type** floadbarrier = (const Type **)(phase->C->type_arena()->Amalloc_4((Number_of_Outputs)*sizeof(Type*)));
const Type* val_t = phase->type(in(Oop));
@@ -441,6 +455,11 @@
return NULL;
}
+uint LoadBarrierNode::match_edge(uint idx) const {
+ ShouldNotReachHere();
+ return 0;
+}
+
void LoadBarrierNode::fix_similar_in_uses(PhaseIterGVN* igvn) {
Node* out_res = proj_out_or_null(Oop);
if (out_res == NULL) {
@@ -1151,7 +1170,7 @@
if (lb->in(LoadBarrierNode::Oop)->is_Phi()) {
Node* oop_phi = lb->in(LoadBarrierNode::Oop);
- if (oop_phi->in(2) == oop_phi) {
+ if ((oop_phi->req() != 3) || (oop_phi->in(2) == oop_phi)) {
// Ignore phis with only one input
return false;
}
--- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -62,10 +62,14 @@
bool oop_reload_allowed);
virtual int Opcode() const;
+ virtual uint size_of() const;
+ virtual uint cmp(const Node& n) const;
virtual const Type *bottom_type() const;
+ virtual const TypePtr* adr_type() const;
virtual const Type *Value(PhaseGVN *phase) const;
virtual Node *Identity(PhaseGVN *phase);
virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
+ virtual uint match_edge(uint idx) const;
LoadBarrierNode* has_dominating_barrier(PhaseIdealLoop* phase,
bool linear_only,
--- a/src/hotspot/share/include/jvm.h Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/include/jvm.h Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -63,7 +63,7 @@
* class.
*/
-#define JVM_INTERFACE_VERSION 5
+#define JVM_INTERFACE_VERSION 6
JNIEXPORT jint JNICALL
JVM_GetInterfaceVersion(void);
@@ -450,7 +450,7 @@
*/
JNIEXPORT jstring JNICALL
-JVM_GetClassName(JNIEnv *env, jclass cls);
+JVM_InitClassName(JNIEnv *env, jclass cls);
JNIEXPORT jobjectArray JNICALL
JVM_GetClassInterfaces(JNIEnv *env, jclass cls);
--- a/src/hotspot/share/oops/access.inline.hpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/oops/access.inline.hpp Thu Jan 10 13:13:56 2019 -0500
@@ -25,6 +25,7 @@
#ifndef SHARE_OOPS_ACCESS_INLINE_HPP
#define SHARE_OOPS_ACCESS_INLINE_HPP
+#include "gc/shared/barrierSet.inline.hpp"
#include "gc/shared/barrierSetConfig.inline.hpp"
#include "oops/access.hpp"
#include "oops/accessBackend.inline.hpp"
--- a/src/hotspot/share/oops/instanceKlass.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/oops/instanceKlass.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -3654,14 +3654,14 @@
}
}
+void InstanceKlass::set_init_state(ClassState state) {
#ifdef ASSERT
-void InstanceKlass::set_init_state(ClassState state) {
bool good_state = is_shared() ? (_init_state <= state)
: (_init_state < state);
assert(good_state || state == allocated, "illegal state transition");
+#endif
_init_state = (u1)state;
}
-#endif
#if INCLUDE_JVMTI
--- a/src/hotspot/share/oops/instanceKlass.hpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/oops/instanceKlass.hpp Thu Jan 10 13:13:56 2019 -0500
@@ -1243,11 +1243,7 @@
private:
// initialization state
-#ifdef ASSERT
void set_init_state(ClassState state);
-#else
- void set_init_state(ClassState state) { _init_state = (u1)state; }
-#endif
void set_rewritten() { _misc_flags |= _misc_rewritten; }
void set_init_thread(Thread *thread) { _init_thread = thread; }
--- a/src/hotspot/share/opto/callnode.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/opto/callnode.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -1271,6 +1271,14 @@
return (TypeFunc::Parms == idx);
}
+void SafePointNode::disconnect_from_root(PhaseIterGVN *igvn) {
+ assert(Opcode() == Op_SafePoint, "only value for safepoint in loops");
+ int nb = igvn->C->root()->find_prec_edge(this);
+ if (nb != -1) {
+ igvn->C->root()->rm_prec(nb);
+ }
+}
+
//============== SafePointScalarObjectNode ==============
SafePointScalarObjectNode::SafePointScalarObjectNode(const TypeOopPtr* tp,
--- a/src/hotspot/share/opto/callnode.hpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/opto/callnode.hpp Thu Jan 10 13:13:56 2019 -0500
@@ -462,6 +462,8 @@
return !_replaced_nodes.is_empty();
}
+ void disconnect_from_root(PhaseIterGVN *igvn);
+
// Standard Node stuff
virtual int Opcode() const;
virtual bool pinned() const { return true; }
--- a/src/hotspot/share/opto/compile.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/opto/compile.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -2184,6 +2184,23 @@
return true;
}
+// Remove edges from "root" to each SafePoint at a backward branch.
+// They were inserted during parsing (see add_safepoint()) to make
+// infinite loops without calls or exceptions visible to root, i.e.,
+// useful.
+void Compile::remove_root_to_sfpts_edges() {
+ Node *r = root();
+ if (r != NULL) {
+ for (uint i = r->req(); i < r->len(); ++i) {
+ Node *n = r->in(i);
+ if (n != NULL && n->is_SafePoint()) {
+ r->rm_prec(i);
+ --i;
+ }
+ }
+ }
+}
+
//------------------------------Optimize---------------------------------------
// Given a graph, optimize it.
void Compile::Optimize() {
@@ -2244,6 +2261,10 @@
if (failing()) return;
}
+ // Now that all inlining is over, cut edge from root to loop
+ // safepoints
+ remove_root_to_sfpts_edges();
+
// Remove the speculative part of types and clean up the graph from
// the extra CastPP nodes whose only purpose is to carry them. Do
// that early so that optimizations are not disrupted by the extra
@@ -3248,8 +3269,10 @@
break;
}
}
- assert(proj != NULL, "must be found");
- p->subsume_by(proj, this);
+ assert(proj != NULL || p->_con == TypeFunc::I_O, "io may be dropped at an infinite loop");
+ if (proj != NULL) {
+ p->subsume_by(proj, this);
+ }
}
}
break;
--- a/src/hotspot/share/opto/compile.hpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/opto/compile.hpp Thu Jan 10 13:13:56 2019 -0500
@@ -1088,6 +1088,7 @@
void inline_string_calls(bool parse_time);
void inline_boxing_calls(PhaseIterGVN& igvn);
bool optimize_loops(PhaseIterGVN& igvn, LoopOptsMode mode);
+ void remove_root_to_sfpts_edges();
// Matching, CFG layout, allocation, code generation
PhaseCFG* cfg() { return _cfg; }
--- a/src/hotspot/share/opto/node.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/opto/node.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -37,6 +37,7 @@
#include "opto/node.hpp"
#include "opto/opcodes.hpp"
#include "opto/regmask.hpp"
+#include "opto/rootnode.hpp"
#include "opto/type.hpp"
#include "utilities/copy.hpp"
#include "utilities/macros.hpp"
@@ -1310,6 +1311,9 @@
while (nstack.size() > 0) {
dead = nstack.pop();
+ if (dead->Opcode() == Op_SafePoint) {
+ dead->as_SafePoint()->disconnect_from_root(igvn);
+ }
if (dead->outcnt() > 0) {
// Keep dead node on stack until all uses are processed.
nstack.push(dead);
--- a/src/hotspot/share/opto/phaseX.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/opto/phaseX.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -430,20 +430,6 @@
// Disconnect 'useless' nodes that are adjacent to useful nodes
C->remove_useless_nodes(_useful);
-
- // Remove edges from "root" to each SafePoint at a backward branch.
- // They were inserted during parsing (see add_safepoint()) to make infinite
- // loops without calls or exceptions visible to root, i.e., useful.
- Node *root = C->root();
- if( root != NULL ) {
- for( uint i = root->req(); i < root->len(); ++i ) {
- Node *n = root->in(i);
- if( n != NULL && n->is_SafePoint() ) {
- root->rm_prec(i);
- --i;
- }
- }
- }
}
//=============================================================================
@@ -1354,6 +1340,9 @@
while (_stack.is_nonempty()) {
dead = _stack.node();
+ if (dead->Opcode() == Op_SafePoint) {
+ dead->as_SafePoint()->disconnect_from_root(this);
+ }
uint progress_state = _stack.index();
assert(dead != C->root(), "killing root, eh?");
assert(!dead->is_top(), "add check for top when pushing");
@@ -1456,6 +1445,9 @@
//------------------------------subsume_node-----------------------------------
// Remove users from node 'old' and add them to node 'nn'.
void PhaseIterGVN::subsume_node( Node *old, Node *nn ) {
+ if (old->Opcode() == Op_SafePoint) {
+ old->as_SafePoint()->disconnect_from_root(this);
+ }
assert( old != hash_find(old), "should already been removed" );
assert( old != C->top(), "cannot subsume top node");
// Copy debug or profile information to the new version:
--- a/src/hotspot/share/prims/jvm.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/prims/jvm.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1059,21 +1059,14 @@
// Reflection support //////////////////////////////////////////////////////////////////////////////
-JVM_ENTRY(jstring, JVM_GetClassName(JNIEnv *env, jclass cls))
+JVM_ENTRY(jstring, JVM_InitClassName(JNIEnv *env, jclass cls))
assert (cls != NULL, "illegal class");
- JVMWrapper("JVM_GetClassName");
+ JVMWrapper("JVM_InitClassName");
JvmtiVMObjectAllocEventCollector oam;
ResourceMark rm(THREAD);
- const char* name;
- if (java_lang_Class::is_primitive(JNIHandles::resolve(cls))) {
- name = type2name(java_lang_Class::primitive_type(JNIHandles::resolve(cls)));
- } else {
- // Consider caching interned string in Klass
- Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls));
- assert(k->is_klass(), "just checking");
- name = k->external_name();
- }
- oop result = StringTable::intern((char*) name, CHECK_NULL);
+ HandleMark hm(THREAD);
+ Handle java_class(THREAD, JNIHandles::resolve(cls));
+ oop result = java_lang_Class::name(java_class, CHECK_NULL);
return (jstring) JNIHandles::make_local(env, result);
JVM_END
--- a/src/hotspot/share/prims/stackwalk.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/prims/stackwalk.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -163,6 +163,7 @@
// Fill in the LiveStackFrameInfo at the given index in frames_array
void LiveFrameStream::fill_frame(int index, objArrayHandle frames_array,
const methodHandle& method, TRAPS) {
+ HandleMark hm(THREAD);
Handle stackFrame(THREAD, frames_array->obj_at(index));
fill_live_stackframe(stackFrame, method, CHECK);
}
@@ -171,6 +172,7 @@
void JavaFrameStream::fill_frame(int index, objArrayHandle frames_array,
const methodHandle& method, TRAPS) {
if (_need_method_info) {
+ HandleMark hm(THREAD);
Handle stackFrame(THREAD, frames_array->obj_at(index));
fill_stackframe(stackFrame, method, CHECK);
} else {
--- a/src/hotspot/share/runtime/arguments.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/runtime/arguments.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -3793,6 +3793,7 @@
#if defined(AIX)
UNSUPPORTED_OPTION(AllocateHeapAt);
+ UNSUPPORTED_OPTION(AllocateOldGenAt);
#endif
#ifndef PRODUCT
--- a/src/hotspot/share/runtime/globals.hpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/runtime/globals.hpp Thu Jan 10 13:13:56 2019 -0500
@@ -1061,9 +1061,6 @@
manageable(bool, PrintClassHistogram, false, \
"Print a histogram of class instances") \
\
- develop(bool, IgnoreLibthreadGPFault, false, \
- "Suppress workaround for libthread GP fault") \
- \
experimental(double, ObjectCountCutOffPercent, 0.5, \
"The percentage of the used heap that the instances of a class " \
"must occupy for the class to generate a trace event") \
@@ -1330,9 +1327,6 @@
develop(bool, TypeProfileCasts, true, \
"treat casts like calls for purposes of type profiling") \
\
- develop(bool, FillDelaySlots, true, \
- "Fill delay slots (on SPARC only)") \
- \
develop(bool, TimeLivenessAnalysis, false, \
"Time computation of bytecode liveness analysis") \
\
--- a/src/hotspot/share/utilities/concurrentHashTable.hpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/utilities/concurrentHashTable.hpp Thu Jan 10 13:13:56 2019 -0500
@@ -312,11 +312,6 @@
VALUE* internal_get(Thread* thread, LOOKUP_FUNC& lookup_f,
bool* grow_hint = NULL);
- // Insert which handles a number of cases.
- template <typename LOOKUP_FUNC, typename VALUE_FUNC, typename CALLBACK_FUNC>
- bool internal_get_insert(Thread* thread, LOOKUP_FUNC& lookup_f, VALUE_FUNC& value_f,
- CALLBACK_FUNC& callback_f, bool* grow_hint = NULL, bool* clean_hint = NULL);
-
// Plain insert.
template <typename LOOKUP_FUNC>
bool internal_insert(Thread* thread, LOOKUP_FUNC& lookup_f, const VALUE& value,
@@ -402,37 +397,6 @@
// methods on the table during a callback is not supported.Only MultiGetHandle
// supports multiple gets.
- // LOOKUP_FUNC is matching methods, VALUE_FUNC creates value to be inserted
- // and CALLBACK_FUNC is called with new or old value. Returns true if the
- // value already exists.
- template <typename LOOKUP_FUNC, typename VALUE_FUNC, typename CALLBACK_FUNC>
- bool get_insert_lazy(Thread* thread, LOOKUP_FUNC& lookup_f, VALUE_FUNC& val_f,
- CALLBACK_FUNC& callback_f, bool* grow_hint = NULL, bool* clean_hint = NULL) {
- return !internal_get_insert(thread, lookup_f, val_f, callback_f, grow_hint, clean_hint);
- }
-
- // Same without CALLBACK_FUNC.
- template <typename LOOKUP_FUNC, typename VALUE_FUNC>
- bool get_insert_lazy(Thread* thread, LOOKUP_FUNC& lookup_f, VALUE_FUNC& val_f,
- bool* grow_hint = NULL) {
- return get_insert_lazy(thread, lookup_f, val_f, noOp, grow_hint);
- }
-
- // Same without VALUE_FUNC.
- template <typename LOOKUP_FUNC, typename CALLBACK_FUNC>
- bool get_insert(Thread* thread, LOOKUP_FUNC& lookup_f, const VALUE& value,
- CALLBACK_FUNC& callback_f, bool* grow_hint = NULL) {
- LazyValueRetrieve vp(value);
- return get_insert_lazy(thread, lookup_f, vp, callback_f, grow_hint);
- }
-
- // Same without CALLBACK_FUNC and VALUE_FUNC.
- template <typename LOOKUP_FUNC>
- bool get_insert(Thread* thread, LOOKUP_FUNC& lookup_f, const VALUE& value,
- bool* grow_hint = NULL) {
- return get_insert(thread, lookup_f, value, noOp, grow_hint);
- }
-
// Get methods return true on found item with LOOKUP_FUNC and FOUND_FUNC is
// called.
template <typename LOOKUP_FUNC, typename FOUND_FUNC>
--- a/src/hotspot/share/utilities/concurrentHashTable.inline.hpp Tue Jan 08 17:20:28 2019 -0500
+++ b/src/hotspot/share/utilities/concurrentHashTable.inline.hpp Thu Jan 10 13:13:56 2019 -0500
@@ -874,78 +874,6 @@
}
template <typename VALUE, typename CONFIG, MEMFLAGS F>
-template <typename LOOKUP_FUNC, typename VALUE_FUNC, typename CALLBACK_FUNC>
-inline bool ConcurrentHashTable<VALUE, CONFIG, F>::
- internal_get_insert(Thread* thread, LOOKUP_FUNC& lookup_f, VALUE_FUNC& value_f,
- CALLBACK_FUNC& callback_f, bool* grow_hint, bool* clean_hint)
-{
- bool ret = false;
- bool clean = false;
- bool locked;
- size_t loops = 0;
- size_t i = 0;
- Node* new_node = NULL;
- uintx hash = lookup_f.get_hash();
- while (true) {
- {
- ScopedCS cs(thread, this); /* protected the table/bucket */
- Bucket* bucket = get_bucket(hash);
-
- Node* first_at_start = bucket->first();
- Node* old = get_node(bucket, lookup_f, &clean, &loops);
- if (old == NULL) {
- // No duplicate found.
- if (new_node == NULL) {
- new_node = Node::create_node(value_f(), first_at_start);
- } else {
- new_node->set_next(first_at_start);
- }
- if (bucket->cas_first(new_node, first_at_start)) {
- callback_f(true, new_node->value());
- new_node = NULL;
- ret = true;
- break; /* leave critical section */
- }
- // CAS failed we must leave critical section and retry.
- locked = bucket->is_locked();
- } else {
- // There is a duplicate.
- callback_f(false, old->value());
- break; /* leave critical section */
- }
- } /* leave critical section */
- i++;
- if (locked) {
- os::naked_yield();
- } else {
- SpinPause();
- }
- }
-
- if (new_node != NULL) {
- // CAS failed and a duplicate was inserted, we must free this node.
- Node::destroy_node(new_node);
- } else if (i == 0 && clean) {
- // We only do cleaning on fast inserts.
- Bucket* bucket = get_bucket_locked(thread, lookup_f.get_hash());
- delete_in_bucket(thread, bucket, lookup_f);
- bucket->unlock();
-
- clean = false;
- }
-
- if (grow_hint != NULL) {
- *grow_hint = loops > _grow_hint;
- }
-
- if (clean_hint != NULL) {
- *clean_hint = clean;
- }
-
- return ret;
-}
-
-template <typename VALUE, typename CONFIG, MEMFLAGS F>
template <typename LOOKUP_FUNC>
inline bool ConcurrentHashTable<VALUE, CONFIG, F>::
internal_insert(Thread* thread, LOOKUP_FUNC& lookup_f, const VALUE& value,
--- a/src/java.base/share/classes/java/lang/Class.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/java/lang/Class.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -795,14 +795,13 @@
*/
public String getName() {
String name = this.name;
- if (name == null)
- this.name = name = getName0();
- return name;
+ return name != null ? name : initClassName();
}
- // cache the name to reduce the number of calls into the VM
+ // Cache the name to reduce the number of calls into the VM.
+ // This field would be set by VM itself during initClassName call.
private transient String name;
- private native String getName0();
+ private native String initClassName();
/**
* Returns the class loader for the class. Some implementations may use
--- a/src/java.base/share/classes/java/lang/Long.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/java/lang/Long.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -731,7 +731,7 @@
* {@code endIndex} or if {@code endIndex} is greater than
* {@code s.length()}.
* @throws NumberFormatException if the {@code CharSequence} does not
- * contain a parsable {@code int} in the specified
+ * contain a parsable {@code long} in the specified
* {@code radix}, or if {@code radix} is either smaller than
* {@link java.lang.Character#MIN_RADIX} or larger than
* {@link java.lang.Character#MAX_RADIX}.
--- a/src/java.base/share/classes/java/lang/String.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/java/lang/String.java Thu Jan 10 13:13:56 2019 -0500
@@ -2869,119 +2869,12 @@
}
/**
- * Removes vertical and horizontal white space margins from around the
- * essential body of a multi-line string, while preserving relative
- * indentation.
- * <p>
- * This string is first conceptually separated into lines as if by
- * {@link String#lines()}.
- * <p>
- * Then, the <i>minimum indentation</i> (min) is determined as follows. For
- * each non-blank line (as defined by {@link String#isBlank()}), the
- * leading {@link Character#isWhitespace(int) white space} characters are
- * counted. The <i>min</i> value is the smallest of these counts.
- * <p>
- * For each non-blank line, <i>min</i> leading white space characters are
- * removed. Each white space character is treated as a single character. In
- * particular, the tab character {@code "\t"} (U+0009) is considered a
- * single character; it is not expanded.
- * <p>
- * Leading and trailing blank lines, if any, are removed. Trailing spaces are
- * preserved.
- * <p>
- * Each line is suffixed with a line feed character {@code "\n"} (U+000A).
- * <p>
- * Finally, the lines are concatenated into a single string and returned.
- *
- * @apiNote
- * This method's primary purpose is to shift a block of lines as far as
- * possible to the left, while preserving relative indentation. Lines
- * that were indented the least will thus have no leading white space.
- *
- * Example:
- * <blockquote><pre>
- * `
- * This is the first line
- * This is the second line
- * `.align();
- *
- * returns
- * This is the first line
- * This is the second line
- * </pre></blockquote>
- *
- * @return string with margins removed and line terminators normalized
- *
- * @see String#lines()
- * @see String#isBlank()
- * @see String#indent(int)
- * @see Character#isWhitespace(int)
- *
- * @since 12
- */
- public String align() {
- return align(0);
- }
-
- /**
- * Removes vertical and horizontal white space margins from around the
- * essential body of a multi-line string, while preserving relative
- * indentation and with optional indentation adjustment.
- * <p>
- * Invoking this method is equivalent to:
- * <blockquote>
- * {@code this.align().indent(n)}
- * </blockquote>
- *
- * @apiNote
- * Examples:
- * <blockquote><pre>
- * `
- * This is the first line
- * This is the second line
- * `.align(0);
- *
- * returns
- * This is the first line
- * This is the second line
- *
- *
- * `
- * This is the first line
- * This is the second line
- * `.align(4);
- * returns
- * This is the first line
- * This is the second line
- * </pre></blockquote>
- *
- * @param n number of leading white space characters
- * to add or remove
- *
- * @return string with margins removed, indentation adjusted and
- * line terminators normalized
- *
- * @see String#align()
- *
- * @since 12
- */
- public String align(int n) {
- if (isEmpty()) {
- return "";
- }
- int outdent = lines().filter(not(String::isBlank))
- .mapToInt(String::indexOfNonWhitespace)
- .min()
- .orElse(0);
- // overflow-conscious code
- int indent = n - outdent;
- return indent(indent > n ? Integer.MIN_VALUE : indent, true);
- }
-
- /**
* This method allows the application of a function to {@code this}
* string. The function should expect a single String argument
* and produce an {@code R} result.
+ * <p>
+ * Any exception thrown by {@code f()} will be propagated to the
+ * caller.
*
* @param f functional interface to a apply
*
--- a/src/java.base/share/classes/java/lang/Thread.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/java/lang/Thread.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1315,6 +1315,7 @@
/**
* Waits at most {@code millis} milliseconds plus
* {@code nanos} nanoseconds for this thread to die.
+ * If both arguments are {@code 0}, it means to wait forever.
*
* <p> This implementation uses a loop of {@code this.wait} calls
* conditioned on {@code this.isAlive}. As a thread terminates the
--- a/src/java.base/share/classes/java/lang/constant/ClassDesc.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/java/lang/constant/ClassDesc.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -97,7 +97,10 @@
*/
static ClassDesc of(String packageName, String className) {
ConstantUtils.validateBinaryClassName(requireNonNull(packageName));
- validateMemberName(requireNonNull(className));
+ if (packageName.isEmpty()) {
+ return of(className);
+ }
+ validateMemberName(requireNonNull(className), false);
return ofDescriptor(String.format("L%s%s%s;",
binaryToInternal(packageName),
(packageName.length() > 0 ? "/" : ""),
@@ -130,6 +133,9 @@
*/
static ClassDesc ofDescriptor(String descriptor) {
requireNonNull(descriptor);
+ if (descriptor.isEmpty()) {
+ throw new IllegalArgumentException(String.format("not a valid reference type descriptor: %s", descriptor));
+ }
int depth = ConstantUtils.arrayDepth(descriptor);
if (depth > ConstantUtils.MAX_ARRAY_TYPE_DESC_DIMENSIONS) {
throw new IllegalArgumentException(String.format("Cannot create an array type descriptor with more than %d dimensions",
@@ -192,7 +198,7 @@
* @throws IllegalArgumentException if the nested class name is invalid
*/
default ClassDesc nested(String nestedName) {
- validateMemberName(nestedName);
+ validateMemberName(nestedName, false);
if (!isClassOrInterface())
throw new IllegalStateException("Outer class is not a class or interface type");
return ClassDesc.ofDescriptor(String.format("%s$%s;", dropLastChar(descriptorString()), nestedName));
--- a/src/java.base/share/classes/java/lang/constant/ConstantUtils.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/java/lang/constant/ConstantUtils.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -65,7 +65,7 @@
* @return the name passed if valid
* @throws IllegalArgumentException if the member name is invalid
*/
- public static String validateMemberName(String name) {
+ public static String validateMemberName(String name, boolean method) {
requireNonNull(name);
if (name.length() == 0)
throw new IllegalArgumentException("zero-length member name");
@@ -73,7 +73,7 @@
char ch = name.charAt(i);
if (ch == '.' || ch == ';' || ch == '[' || ch == '/')
throw new IllegalArgumentException("Invalid member name: " + name);
- if (ch == '<' || ch == '>') {
+ if (method && (ch == '<' || ch == '>')) {
if (!pointyNames.contains(name))
throw new IllegalArgumentException("Invalid member name: " + name);
}
@@ -126,8 +126,8 @@
++cur; // skip '('
while (cur < end && descriptor.charAt(cur) != ')') {
- int len = matchSig(descriptor, cur, end);
- if (len == 0 || descriptor.charAt(cur) == 'V')
+ int len = skipOverFieldSignature(descriptor, cur, end, false);
+ if (len == 0)
throw new IllegalArgumentException("Bad method descriptor: " + descriptor);
ptypes.add(descriptor.substring(cur, cur + len));
cur += len;
@@ -136,41 +136,103 @@
throw new IllegalArgumentException("Bad method descriptor: " + descriptor);
++cur; // skip ')'
- int rLen = matchSig(descriptor, cur, end);
+ int rLen = skipOverFieldSignature(descriptor, cur, end, true);
if (rLen == 0 || cur + rLen != end)
throw new IllegalArgumentException("Bad method descriptor: " + descriptor);
ptypes.add(0, descriptor.substring(cur, cur + rLen));
return ptypes;
}
+ private static final char JVM_SIGNATURE_ARRAY = '[';
+ private static final char JVM_SIGNATURE_BYTE = 'B';
+ private static final char JVM_SIGNATURE_CHAR = 'C';
+ private static final char JVM_SIGNATURE_CLASS = 'L';
+ private static final char JVM_SIGNATURE_ENDCLASS = ';';
+ private static final char JVM_SIGNATURE_ENUM = 'E';
+ private static final char JVM_SIGNATURE_FLOAT = 'F';
+ private static final char JVM_SIGNATURE_DOUBLE = 'D';
+ private static final char JVM_SIGNATURE_FUNC = '(';
+ private static final char JVM_SIGNATURE_ENDFUNC = ')';
+ private static final char JVM_SIGNATURE_INT = 'I';
+ private static final char JVM_SIGNATURE_LONG = 'J';
+ private static final char JVM_SIGNATURE_SHORT = 'S';
+ private static final char JVM_SIGNATURE_VOID = 'V';
+ private static final char JVM_SIGNATURE_BOOLEAN = 'Z';
+
/**
* Validates that the characters at [start, end) within the provided string
* describe a valid field type descriptor.
- *
- * @param str the descriptor string
+ * @param descriptor the descriptor string
* @param start the starting index into the string
* @param end the ending index within the string
+ * @param voidOK is void acceptable?
* @return the length of the descriptor, or 0 if it is not a descriptor
* @throws IllegalArgumentException if the descriptor string is not valid
*/
- static int matchSig(String str, int start, int end) {
- if (start >= end || start >= str.length() || end > str.length())
- return 0;
- char c = str.charAt(start);
- if (c == 'L') {
- int endc = str.indexOf(';', start);
- int badc = str.indexOf('.', start);
- if (badc >= 0 && badc < endc)
- return 0;
- badc = str.indexOf('[', start);
- if (badc >= 0 && badc < endc)
- return 0;
- return (endc < 0) ? 0 : endc - start + 1;
- } else if (c == '[') {
- int t = matchSig(str, start+1, end);
- return (t > 0) ? t + 1 : 0;
- } else {
- return ("IJCSBFDZV".indexOf(c) >= 0) ? 1 : 0;
+ @SuppressWarnings("fallthrough")
+ static int skipOverFieldSignature(String descriptor, int start, int end, boolean voidOK) {
+ int arrayDim = 0;
+ int index = start;
+ while (index < end) {
+ switch (descriptor.charAt(index)) {
+ case JVM_SIGNATURE_VOID: if (!voidOK) { return index; }
+ case JVM_SIGNATURE_BOOLEAN:
+ case JVM_SIGNATURE_BYTE:
+ case JVM_SIGNATURE_CHAR:
+ case JVM_SIGNATURE_SHORT:
+ case JVM_SIGNATURE_INT:
+ case JVM_SIGNATURE_FLOAT:
+ case JVM_SIGNATURE_LONG:
+ case JVM_SIGNATURE_DOUBLE:
+ return index - start + 1;
+ case JVM_SIGNATURE_CLASS:
+ // Skip leading 'L' and ignore first appearance of ';'
+ index++;
+ int indexOfSemi = descriptor.indexOf(';', index);
+ if (indexOfSemi != -1) {
+ String unqualifiedName = descriptor.substring(index, indexOfSemi);
+ boolean legal = verifyUnqualifiedClassName(unqualifiedName);
+ if (!legal) {
+ return 0;
+ }
+ return index - start + unqualifiedName.length() + 1;
+ }
+ return 0;
+ case JVM_SIGNATURE_ARRAY:
+ arrayDim++;
+ if (arrayDim > MAX_ARRAY_TYPE_DESC_DIMENSIONS) {
+ throw new IllegalArgumentException(String.format("Cannot create an array type descriptor with more than %d dimensions",
+ ConstantUtils.MAX_ARRAY_TYPE_DESC_DIMENSIONS));
+ }
+ // The rest of what's there better be a legal descriptor
+ index++;
+ voidOK = false;
+ break;
+ default:
+ return 0;
+ }
}
+ return 0;
+ }
+
+ static boolean verifyUnqualifiedClassName(String name) {
+ for (int index = 0; index < name.length(); index++) {
+ char ch = name.charAt(index);
+ if (ch < 128) {
+ if (ch == '.' || ch == ';' || ch == '[' ) {
+ return false; // do not permit '.', ';', or '['
+ }
+ if (ch == '/') {
+ // check for '//' or leading or trailing '/' which are not legal
+ // unqualified name must not be empty
+ if (index == 0 || index + 1 >= name.length() || name.charAt(index + 1) == '/') {
+ return false;
+ }
+ }
+ } else {
+ index ++;
+ }
+ }
+ return true;
}
}
--- a/src/java.base/share/classes/java/lang/constant/DirectMethodHandleDescImpl.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/java/lang/constant/DirectMethodHandleDescImpl.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -68,7 +68,7 @@
requireNonNull(kind);
validateClassOrInterface(requireNonNull(owner));
- validateMemberName(requireNonNull(name));
+ validateMemberName(requireNonNull(name), true);
requireNonNull(type);
switch (kind) {
--- a/src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -75,7 +75,7 @@
String invocationName,
MethodTypeDesc invocationType,
ConstantDesc[] bootstrapArgs) {
- this.invocationName = validateMemberName(requireNonNull(invocationName));
+ this.invocationName = validateMemberName(requireNonNull(invocationName), true);
this.invocationType = requireNonNull(invocationType);
this.bootstrapMethod = requireNonNull(bootstrapMethod);
this.bootstrapArgs = requireNonNull(bootstrapArgs.clone());
--- a/src/java.base/share/classes/java/lang/constant/DynamicConstantDesc.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/java/lang/constant/DynamicConstantDesc.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -96,7 +96,7 @@
ClassDesc constantType,
ConstantDesc... bootstrapArgs) {
this.bootstrapMethod = requireNonNull(bootstrapMethod);
- this.constantName = validateMemberName(requireNonNull(constantName));
+ this.constantName = validateMemberName(requireNonNull(constantName), true);
this.constantType = requireNonNull(constantType);
this.bootstrapArgs = requireNonNull(bootstrapArgs).clone();
--- a/src/java.base/share/classes/java/lang/constant/ReferenceClassDescImpl.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/java/lang/constant/ReferenceClassDescImpl.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -49,7 +49,7 @@
*/
ReferenceClassDescImpl(String descriptor) {
requireNonNull(descriptor);
- int len = ConstantUtils.matchSig(descriptor, 0, descriptor.length());
+ int len = ConstantUtils.skipOverFieldSignature(descriptor, 0, descriptor.length(), false);
if (len == 0 || len == 1
|| len != descriptor.length())
throw new IllegalArgumentException(String.format("not a valid reference type descriptor: %s", descriptor));
--- a/src/java.base/share/classes/java/time/chrono/JapaneseEra.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/java/time/chrono/JapaneseEra.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -94,7 +94,7 @@
* dates before Meiji 6, January 1 are not supported.
* The number of the valid eras may increase, as new eras may be
* defined by the Japanese government. Once an era is defined,
- * subsequent versions of this class will add a singleton instance
+ * future versions of the platform may add a singleton instance
* for it. The defined era is expected to have a consecutive integer
* associated with it.
*
--- a/src/java.base/share/classes/java/util/ImmutableCollections.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/java/util/ImmutableCollections.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
import java.io.ObjectOutputStream;
import java.io.ObjectStreamException;
import java.io.Serializable;
+import java.lang.reflect.Array;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Predicate;
@@ -357,6 +358,30 @@
throw outOfBounds(index);
}
}
+
+ @Override
+ public Object[] toArray() {
+ Object[] array = new Object[size];
+ for (int i = 0; i < size; i++) {
+ array[i] = get(i);
+ }
+ return array;
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T> T[] toArray(T[] a) {
+ T[] array = a.length >= size ? a :
+ (T[])java.lang.reflect.Array
+ .newInstance(a.getClass().getComponentType(), size);
+ for (int i = 0; i < size; i++) {
+ array[i] = (T)get(i);
+ }
+ if (array.length > size) {
+ array[size] = null; // null-terminate
+ }
+ return array;
+ }
}
static final class List12<E> extends AbstractImmutableList<E>
@@ -405,6 +430,30 @@
}
}
+ @Override
+ public Object[] toArray() {
+ if (e1 == null) {
+ return new Object[] { e0 };
+ } else {
+ return new Object[] { e0, e1 };
+ }
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T> T[] toArray(T[] a) {
+ int size = e1 == null ? 1 : 2;
+ T[] array = a.length >= size ? a :
+ (T[])Array.newInstance(a.getClass().getComponentType(), size);
+ array[0] = (T)e0;
+ if (size == 2) {
+ array[1] = (T)e1;
+ }
+ if (array.length > size) {
+ array[size] = null; // null-terminate
+ }
+ return array;
+ }
}
static final class ListN<E> extends AbstractImmutableList<E>
@@ -456,6 +505,26 @@
private Object writeReplace() {
return new CollSer(CollSer.IMM_LIST, elements);
}
+
+ @Override
+ public Object[] toArray() {
+ return Arrays.copyOf(elements, elements.length);
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T> T[] toArray(T[] a) {
+ int size = elements.length;
+ if (a.length < size) {
+ // Make a new array of a's runtime type, but my contents:
+ return (T[]) Arrays.copyOf(elements, size, a.getClass());
+ }
+ System.arraycopy(elements, 0, a, 0, size);
+ if (a.length > size) {
+ a[size] = null; // null-terminate
+ }
+ return a;
+ }
}
// ---------- Set Implementations ----------
@@ -565,8 +634,41 @@
return new CollSer(CollSer.IMM_SET, e0, e1);
}
}
+
+ @Override
+ public Object[] toArray() {
+ if (e1 == null) {
+ return new Object[] { e0 };
+ } else if (SALT >= 0) {
+ return new Object[] { e1, e0 };
+ } else {
+ return new Object[] { e0, e1 };
+ }
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T> T[] toArray(T[] a) {
+ int size = e1 == null ? 1 : 2;
+ T[] array = a.length >= size ? a :
+ (T[])Array.newInstance(a.getClass().getComponentType(), size);
+ if (size == 1) {
+ array[0] = (T)e0;
+ } else if (SALT >= 0) {
+ array[0] = (T)e1;
+ array[1] = (T)e0;
+ } else {
+ array[0] = (T)e0;
+ array[1] = (T)e1;
+ }
+ if (array.length > size) {
+ array[size] = null; // null-terminate
+ }
+ return array;
+ }
}
+
/**
* An array-based Set implementation. The element array must be strictly
* larger than the size (the number of contained elements) so that at
@@ -653,7 +755,7 @@
@Override
public E next() {
- if (hasNext()) {
+ if (remaining > 0) {
E element;
// skip null elements
while ((element = elements[nextIndex()]) == null) {}
@@ -713,6 +815,31 @@
}
return new CollSer(CollSer.IMM_SET, array);
}
+
+ @Override
+ public Object[] toArray() {
+ Object[] array = new Object[size];
+ Iterator<E> it = iterator();
+ for (int i = 0; i < size; i++) {
+ array[i] = it.next();
+ }
+ return array;
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T> T[] toArray(T[] a) {
+ T[] array = a.length >= size ? a :
+ (T[])Array.newInstance(a.getClass().getComponentType(), size);
+ Iterator<E> it = iterator();
+ for (int i = 0; i < size; i++) {
+ array[i] = (T)it.next();
+ }
+ if (array.length > size) {
+ array[size] = null; // null-terminate
+ }
+ return array;
+ }
}
// ---------- Map Implementations ----------
@@ -915,8 +1042,9 @@
@Override
public Map.Entry<K,V> next() {
- if (hasNext()) {
- while (table[nextIndex()] == null) {}
+ if (remaining > 0) {
+ int idx;
+ while (table[idx = nextIndex()] == null) {}
@SuppressWarnings("unchecked")
Map.Entry<K,V> e =
new KeyValueHolder<>((K)table[idx], (V)table[idx+1]);
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_ja.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_ja.java Thu Jan 10 13:13:56 2019 -0500
@@ -61,16 +61,16 @@
{"Exports.certificate",
"\u8A3C\u660E\u66F8\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-exportcert
{"Generates.a.key.pair",
- "\u9375\u30DA\u30A2\u3092\u751F\u6210\u3057\u307E\u3059"}, //-genkeypair
+ "\u30AD\u30FC\u30FB\u30DA\u30A2\u3092\u751F\u6210\u3057\u307E\u3059"}, //-genkeypair
{"Generates.a.secret.key",
- "\u79D8\u5BC6\u9375\u3092\u751F\u6210\u3057\u307E\u3059"}, //-genseckey
+ "\u79D8\u5BC6\u30AD\u30FC\u3092\u751F\u6210\u3057\u307E\u3059"}, //-genseckey
{"Generates.certificate.from.a.certificate.request",
"\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8\u304B\u3089\u8A3C\u660E\u66F8\u3092\u751F\u6210\u3057\u307E\u3059"}, //-gencert
{"Generates.CRL", "CRL\u3092\u751F\u6210\u3057\u307E\u3059"}, //-gencrl
{"Generated.keyAlgName.secret.key",
- "{0}\u79D8\u5BC6\u9375\u3092\u751F\u6210\u3057\u307E\u3057\u305F"}, //-genseckey
+ "{0}\u79D8\u5BC6\u30AD\u30FC\u3092\u751F\u6210\u3057\u307E\u3057\u305F"}, //-genseckey
{"Generated.keysize.bit.keyAlgName.secret.key",
- "{0}\u30D3\u30C3\u30C8{1}\u79D8\u5BC6\u9375\u3092\u751F\u6210\u3057\u307E\u3057\u305F"}, //-genseckey
+ "{0}\u30D3\u30C3\u30C8{1}\u79D8\u5BC6\u30AD\u30FC\u3092\u751F\u6210\u3057\u307E\u3057\u305F"}, //-genseckey
{"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
"JDK 1.1.x-style\u30A2\u30A4\u30C7\u30F3\u30C6\u30A3\u30C6\u30A3\u30FB\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30C8\u30EA\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-identitydb
{"Imports.a.certificate.or.a.certificate.chain",
@@ -80,9 +80,9 @@
{"Imports.one.or.all.entries.from.another.keystore",
"\u5225\u306E\u30AD\u30FC\u30B9\u30C8\u30A2\u304B\u30891\u3064\u307E\u305F\u306F\u3059\u3079\u3066\u306E\u30A8\u30F3\u30C8\u30EA\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-importkeystore
{"Clones.a.key.entry",
- "\u9375\u30A8\u30F3\u30C8\u30EA\u306E\u30AF\u30ED\u30FC\u30F3\u3092\u4F5C\u6210\u3057\u307E\u3059"}, //-keyclone
+ "\u30AD\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u30AF\u30ED\u30FC\u30F3\u3092\u4F5C\u6210\u3057\u307E\u3059"}, //-keyclone
{"Changes.the.key.password.of.an.entry",
- "\u30A8\u30F3\u30C8\u30EA\u306E\u9375\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5909\u66F4\u3057\u307E\u3059"}, //-keypasswd
+ "\u30A8\u30F3\u30C8\u30EA\u306E\u30AD\u30FC\u30FB\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5909\u66F4\u3057\u307E\u3059"}, //-keypasswd
{"Lists.entries.in.a.keystore",
"\u30AD\u30FC\u30B9\u30C8\u30A2\u5185\u306E\u30A8\u30F3\u30C8\u30EA\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059"}, //-list
{"Prints.the.content.of.a.certificate",
@@ -98,6 +98,8 @@
// keytool: help: options
{"alias.name.of.the.entry.to.process",
"\u51E6\u7406\u3059\u308B\u30A8\u30F3\u30C8\u30EA\u306E\u5225\u540D"}, //-alias
+ {"groupname.option.help",
+ "\u30B0\u30EB\u30FC\u30D7\u540D\u3002\u305F\u3068\u3048\u3070\u3001\u6955\u5186\u66F2\u7DDA\u540D\u3067\u3059\u3002"}, //-groupname
{"destination.alias",
"\u51FA\u529B\u5148\u306E\u5225\u540D"}, //-destalias
{"destination.key.password",
@@ -121,11 +123,11 @@
{"input.file.name",
"\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u540D"}, //-file and -infile
{"key.algorithm.name",
- "\u9375\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u540D"}, //-keyalg
+ "\u30AD\u30FC\u30FB\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u540D"}, //-keyalg
{"key.password",
- "\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-keypass
+ "\u30AD\u30FC\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"}, //-keypass
{"key.bit.size",
- "\u9375\u306E\u30D3\u30C3\u30C8\u30FB\u30B5\u30A4\u30BA"}, //-keysize
+ "\u30AD\u30FC\u306E\u30D3\u30C3\u30C8\u30FB\u30B5\u30A4\u30BA"}, //-keysize
{"keystore.name",
"\u30AD\u30FC\u30B9\u30C8\u30A2\u540D"}, //-keystore
{"access.the.cacerts.keystore",
@@ -196,7 +198,7 @@
{"Cannot.find.file.", "\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: "},
{"Command.option.flag.needs.an.argument.", "\u30B3\u30DE\u30F3\u30C9\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059\u3002"},
{"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.",
- "\u8B66\u544A: PKCS12\u30AD\u30FC\u30B9\u30C8\u30A2\u3067\u306F\u3001\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3068\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u7570\u306A\u308B\u72B6\u6CC1\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093\u3002\u30E6\u30FC\u30B6\u30FC\u304C\u6307\u5B9A\u3057\u305F{0}\u306E\u5024\u306F\u7121\u8996\u3057\u307E\u3059\u3002"},
+ "\u8B66\u544A: PKCS12\u30AD\u30FC\u30B9\u30C8\u30A2\u3067\u306F\u3001\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3068\u30AD\u30FC\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u7570\u306A\u308B\u72B6\u6CC1\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u307E\u305B\u3093\u3002\u30E6\u30FC\u30B6\u30FC\u304C\u6307\u5B9A\u3057\u305F{0}\u306E\u5024\u306F\u7121\u8996\u3057\u307E\u3059\u3002"},
{"the.keystore.or.storetype.option.cannot.be.used.with.the.cacerts.option",
"-keystore\u307E\u305F\u306F-storetype\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001-cacerts\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u3068\u3082\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093"},
{".keystore.must.be.NONE.if.storetype.is.{0}",
@@ -229,7 +231,7 @@
{"Must.not.specify.both.v.and.rfc.with.list.command",
"'list'\u30B3\u30DE\u30F3\u30C9\u306B-v\u3068-rfc\u306E\u4E21\u65B9\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"},
{"Key.password.must.be.at.least.6.characters",
- "\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u306F6\u6587\u5B57\u4EE5\u4E0A\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+ "\u30AD\u30FC\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u306F6\u6587\u5B57\u4EE5\u4E0A\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
{"New.password.must.be.at.least.6.characters",
"\u65B0\u898F\u30D1\u30B9\u30EF\u30FC\u30C9\u306F6\u6587\u5B57\u4EE5\u4E0A\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
{"Keystore.file.exists.but.is.empty.",
@@ -280,31 +282,35 @@
"\u8A3C\u660E\u66F8\u304C\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u8FFD\u52A0\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"},
{".Storing.ksfname.", "[{0}\u3092\u683C\u7D0D\u4E2D]"},
{"alias.has.no.public.key.certificate.",
- "{0}\u306B\u306F\u516C\u958B\u9375(\u8A3C\u660E\u66F8)\u304C\u3042\u308A\u307E\u305B\u3093"},
+ "{0}\u306B\u306F\u516C\u958B\u30AD\u30FC(\u8A3C\u660E\u66F8)\u304C\u3042\u308A\u307E\u305B\u3093"},
{"Cannot.derive.signature.algorithm",
"\u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093"},
{"Alias.alias.does.not.exist",
"\u5225\u540D<{0}>\u306F\u5B58\u5728\u3057\u307E\u305B\u3093"},
{"Alias.alias.has.no.certificate",
"\u5225\u540D<{0}>\u306B\u306F\u8A3C\u660E\u66F8\u304C\u3042\u308A\u307E\u305B\u3093"},
+ {"groupname.keysize.coexist",
+ "-groupname\u3068-keysize\u306E\u4E21\u65B9\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"},
+ {"deprecate.keysize.for.ec",
+ "-keysize\u306E\u6307\u5B9A\u306B\u3088\u308BEC\u30AD\u30FC\u306E\u751F\u6210\u306F\u975E\u63A8\u5968\u3067\u3059\u3002\u304B\u308F\u308A\u306B\"-groupname %s\"\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
{"Key.pair.not.generated.alias.alias.already.exists",
- "\u9375\u30DA\u30A2\u306F\u751F\u6210\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5225\u540D<{0}>\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
+ "\u30AD\u30FC\u30FB\u30DA\u30A2\u306F\u751F\u6210\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5225\u540D<{0}>\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
{"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for",
- "{3}\u65E5\u9593\u6709\u52B9\u306A{0}\u30D3\u30C3\u30C8\u306E{1}\u306E\u9375\u30DA\u30A2\u3068\u81EA\u5DF1\u7F72\u540D\u578B\u8A3C\u660E\u66F8({2})\u3092\u751F\u6210\u3057\u3066\u3044\u307E\u3059\n\t\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540D: {4}"},
- {"Enter.key.password.for.alias.", "<{0}>\u306E\u9375\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"},
+ "{3}\u65E5\u9593\u6709\u52B9\u306A{0}\u30D3\u30C3\u30C8\u306E{1}\u306E\u30AD\u30FC\u30FB\u30DA\u30A2\u3068\u81EA\u5DF1\u7F72\u540D\u578B\u8A3C\u660E\u66F8({2})\u3092\u751F\u6210\u3057\u3066\u3044\u307E\u3059\n\t\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540D: {4}"},
+ {"Enter.key.password.for.alias.", "<{0}>\u306E\u30AD\u30FC\u30FB\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"},
{".RETURN.if.same.as.keystore.password.",
"\t(\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3068\u540C\u3058\u5834\u5408\u306FRETURN\u3092\u62BC\u3057\u3066\u304F\u3060\u3055\u3044): "},
{"Key.password.is.too.short.must.be.at.least.6.characters",
- "\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u77ED\u3059\u304E\u307E\u3059 - 6\u6587\u5B57\u4EE5\u4E0A\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"},
+ "\u30AD\u30FC\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u77ED\u3059\u304E\u307E\u3059 - 6\u6587\u5B57\u4EE5\u4E0A\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"},
{"Too.many.failures.key.not.added.to.keystore",
- "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059 - \u9375\u306F\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u8FFD\u52A0\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"},
+ "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059 - \u30AD\u30FC\u306F\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u8FFD\u52A0\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"},
{"Destination.alias.dest.already.exists",
"\u51FA\u529B\u5148\u306E\u5225\u540D<{0}>\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
{"Password.is.too.short.must.be.at.least.6.characters",
"\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u77ED\u3059\u304E\u307E\u3059 - 6\u6587\u5B57\u4EE5\u4E0A\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"},
{"Too.many.failures.Key.entry.not.cloned",
- "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059\u3002\u9375\u30A8\u30F3\u30C8\u30EA\u306E\u30AF\u30ED\u30FC\u30F3\u306F\u4F5C\u6210\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"},
- {"key.password.for.alias.", "<{0}>\u306E\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"},
+ "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059\u3002\u30AD\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u30AF\u30ED\u30FC\u30F3\u306F\u4F5C\u6210\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F"},
+ {"key.password.for.alias.", "<{0}>\u306E\u30AD\u30FC\u306E\u30D1\u30B9\u30EF\u30FC\u30C9"},
{"Keystore.entry.for.id.getName.already.exists",
"<{0}>\u306E\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30A8\u30F3\u30C8\u30EA\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
{"Creating.keystore.entry.for.id.getName.",
@@ -330,7 +336,7 @@
{"Failed.to.parse.input", "\u5165\u529B\u306E\u69CB\u6587\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F"},
{"Empty.input", "\u5165\u529B\u304C\u3042\u308A\u307E\u305B\u3093"},
{"Not.X.509.certificate", "X.509\u8A3C\u660E\u66F8\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
- {"alias.has.no.public.key", "{0}\u306B\u306F\u516C\u958B\u9375\u304C\u3042\u308A\u307E\u305B\u3093"},
+ {"alias.has.no.public.key", "{0}\u306B\u306F\u516C\u958B\u30AD\u30FC\u304C\u3042\u308A\u307E\u305B\u3093"},
{"alias.has.no.X.509.certificate", "{0}\u306B\u306FX.509\u8A3C\u660E\u66F8\u304C\u3042\u308A\u307E\u305B\u3093"},
{"New.certificate.self.signed.", "\u65B0\u3057\u3044\u8A3C\u660E\u66F8(\u81EA\u5DF1\u7F72\u540D\u578B):"},
{"Reply.has.no.certificates", "\u5FDC\u7B54\u306B\u306F\u8A3C\u660E\u66F8\u304C\u3042\u308A\u307E\u305B\u3093"},
@@ -377,9 +383,9 @@
{"y", "y"},
{".defaultValue.", " [{0}]: "},
{"Alias.alias.has.no.key",
- "\u5225\u540D<{0}>\u306B\u306F\u9375\u304C\u3042\u308A\u307E\u305B\u3093"},
+ "\u5225\u540D<{0}>\u306B\u306F\u30AD\u30FC\u304C\u3042\u308A\u307E\u305B\u3093"},
{"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key",
- "\u5225\u540D<{0}>\u304C\u53C2\u7167\u3057\u3066\u3044\u308B\u30A8\u30F3\u30C8\u30EA\u30FB\u30BF\u30A4\u30D7\u306F\u79D8\u5BC6\u9375\u30A8\u30F3\u30C8\u30EA\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002-keyclone\u30B3\u30DE\u30F3\u30C9\u306F\u79D8\u5BC6\u9375\u30A8\u30F3\u30C8\u30EA\u306E\u30AF\u30ED\u30FC\u30F3\u4F5C\u6210\u306E\u307F\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059"},
+ "\u5225\u540D<{0}>\u304C\u53C2\u7167\u3057\u3066\u3044\u308B\u30A8\u30F3\u30C8\u30EA\u30FB\u30BF\u30A4\u30D7\u306F\u79D8\u5BC6\u30AD\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002-keyclone\u30B3\u30DE\u30F3\u30C9\u306F\u79D8\u5BC6\u30AD\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u30AF\u30ED\u30FC\u30F3\u4F5C\u6210\u306E\u307F\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059"},
{".WARNING.WARNING.WARNING.",
"***************** WARNING WARNING WARNING *****************"},
@@ -398,7 +404,7 @@
"*\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306B\u4FDD\u5B58\u3055\u308C\u305F\u60C5\u5831\u306E\u6574\u5408\u6027\u306F*\n*\u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u6574\u5408\u6027\u3092\u691C\u8A3C\u3059\u308B\u306B\u306F*\n*\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002*"},
{"Certificate.reply.does.not.contain.public.key.for.alias.",
- "\u8A3C\u660E\u66F8\u5FDC\u7B54\u306B\u306F\u3001<{0}>\u306E\u516C\u958B\u9375\u306F\u542B\u307E\u308C\u307E\u305B\u3093"},
+ "\u8A3C\u660E\u66F8\u5FDC\u7B54\u306B\u306F\u3001<{0}>\u306E\u516C\u958B\u30AD\u30FC\u306F\u542B\u307E\u308C\u307E\u305B\u3093"},
{"Incomplete.certificate.chain.in.reply",
"\u5FDC\u7B54\u3057\u305F\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u306F\u4E0D\u5B8C\u5168\u3067\u3059"},
{"Certificate.chain.in.reply.does.not.verify.",
@@ -409,7 +415,7 @@
{"Install.reply.anyway.no.", "\u5FDC\u7B54\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u304B\u3002[\u3044\u3044\u3048]: "},
{"NO", "\u3044\u3044\u3048"},
{"Public.keys.in.reply.and.keystore.don.t.match",
- "\u5FDC\u7B54\u3057\u305F\u516C\u958B\u9375\u3068\u30AD\u30FC\u30B9\u30C8\u30A2\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093"},
+ "\u5FDC\u7B54\u3057\u305F\u516C\u958B\u30AD\u30FC\u3068\u30AD\u30FC\u30B9\u30C8\u30A2\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093"},
{"Certificate.reply.and.certificate.in.keystore.are.identical",
"\u8A3C\u660E\u66F8\u5FDC\u7B54\u3068\u30AD\u30FC\u30B9\u30C8\u30A2\u5185\u306E\u8A3C\u660E\u66F8\u304C\u540C\u3058\u3067\u3059"},
{"Failed.to.establish.chain.from.reply",
@@ -417,9 +423,9 @@
{"n", "n"},
{"Wrong.answer.try.again", "\u5FDC\u7B54\u304C\u9593\u9055\u3063\u3066\u3044\u307E\u3059\u3002\u3082\u3046\u4E00\u5EA6\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044"},
{"Secret.key.not.generated.alias.alias.already.exists",
- "\u79D8\u5BC6\u9375\u306F\u751F\u6210\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5225\u540D<{0}>\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
+ "\u79D8\u5BC6\u30AD\u30FC\u306F\u751F\u6210\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5225\u540D<{0}>\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059"},
{"Please.provide.keysize.for.secret.key.generation",
- "\u79D8\u5BC6\u9375\u306E\u751F\u6210\u6642\u306B\u306F -keysize\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"},
+ "\u79D8\u5BC6\u30AD\u30FC\u306E\u751F\u6210\u6642\u306B\u306F -keysize\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"},
{"warning.not.verified.make.sure.keystore.is.correct",
"\u8B66\u544A: \u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002-keystore\u304C\u6B63\u3057\u3044\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
@@ -453,13 +459,13 @@
{"alias.in.cacerts", "cacerts\u5185\u306E\u767A\u884C\u8005<%s>"},
{"alias.in.keystore", "\u767A\u884C\u8005<%s>"},
{"with.weak", "%s (\u5F31)"},
- {"key.bit", "%1$d\u30D3\u30C3\u30C8%2$s\u9375"},
- {"key.bit.weak", "%1$d\u30D3\u30C3\u30C8%2$s\u9375(\u5F31)"},
+ {"key.bit", "%1$d\u30D3\u30C3\u30C8%2$s\u30AD\u30FC"},
+ {"key.bit.weak", "%1$d\u30D3\u30C3\u30C8%2$s\u30AD\u30FC(\u5F31)"},
{"unknown.size.1", "\u4E0D\u660E\u306A\u30B5\u30A4\u30BA\u306E%s\u30AD\u30FC"},
{".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}"},
+ "\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\u30AD\u30FC\u30FB\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: %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"},
+ "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\u30AD\u30FC: %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"},
@@ -467,6 +473,7 @@
{"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..."},
+ {"keyalg.option.1.missing.warning", "-keyalg\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30AD\u30FC\u30FB\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0(%s)\u306F\u3001\u65E7\u5F0F\u306E\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u3067\u3001\u73FE\u5728\u306F\u63A8\u5968\u3055\u308C\u307E\u305B\u3093\u3002JDK\u306E\u5F8C\u7D9A\u306E\u30EA\u30EA\u30FC\u30B9\u3067\u306F\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u524A\u9664\u3055\u308C\u308B\u4E88\u5B9A\u3067\u3001-keyalg\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002"},
};
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_zh_CN.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_zh_CN.java Thu Jan 10 13:13:56 2019 -0500
@@ -98,6 +98,8 @@
// keytool: help: options
{"alias.name.of.the.entry.to.process",
"\u8981\u5904\u7406\u7684\u6761\u76EE\u7684\u522B\u540D"}, //-alias
+ {"groupname.option.help",
+ "\u7EC4\u540D\u3002\u4F8B\u5982\uFF0C\u692D\u5706\u66F2\u7EBF\u540D\u79F0\u3002"}, //-groupname
{"destination.alias",
"\u76EE\u6807\u522B\u540D"}, //-destalias
{"destination.key.password",
@@ -287,6 +289,10 @@
"\u522B\u540D <{0}> \u4E0D\u5B58\u5728"},
{"Alias.alias.has.no.certificate",
"\u522B\u540D <{0}> \u6CA1\u6709\u8BC1\u4E66"},
+ {"groupname.keysize.coexist",
+ "\u65E0\u6CD5\u540C\u65F6\u6307\u5B9A -groupname \u548C -keysize"},
+ {"deprecate.keysize.for.ec",
+ "\u4E3A\u751F\u6210 EC \u5BC6\u94A5\u6307\u5B9A -keysize \u5DF2\u8FC7\u65F6\uFF0C\u8BF7\u6539\u4E3A\u4F7F\u7528 \"-groupname %s\"\u3002"},
{"Key.pair.not.generated.alias.alias.already.exists",
"\u672A\u751F\u6210\u5BC6\u94A5\u5BF9, \u522B\u540D <{0}> \u5DF2\u7ECF\u5B58\u5728"},
{"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for",
@@ -467,6 +473,7 @@
{"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..."},
+ {"keyalg.option.1.missing.warning", "\u65E0 -keyalg \u9009\u9879\u3002\u9ED8\u8BA4\u5BC6\u94A5\u7B97\u6CD5 (%s) \u662F\u4F20\u7EDF\u7B97\u6CD5\uFF0C\u4E0D\u518D\u63A8\u8350\u3002\u5728 JDK \u7684\u540E\u7EED\u53D1\u884C\u7248\u4E2D\uFF0C\u5C06\u5220\u9664\u9ED8\u8BA4\u503C\uFF0C\u60A8\u5FC5\u987B\u6307\u5B9A -keyalg \u9009\u9879\u3002"},
};
--- a/src/java.base/share/classes/sun/security/util/AuthResources_ja.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/classes/sun/security/util/AuthResources_ja.java Thu Jan 10 13:13:56 2019 -0500
@@ -88,7 +88,7 @@
{"Keystore.alias.","\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u5225\u540D: "},
{"Keystore.password.","\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9: "},
{"Private.key.password.optional.",
- "\u79D8\u5BC6\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9(\u30AA\u30D7\u30B7\u30E7\u30F3): "},
+ "\u79D8\u5BC6\u30AD\u30FC\u306E\u30D1\u30B9\u30EF\u30FC\u30C9(\u30AA\u30D7\u30B7\u30E7\u30F3): "},
// com.sun.security.auth.module.Krb5LoginModule
{"Kerberos.username.defUsername.",
--- a/src/java.base/share/native/libjava/Class.c Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.base/share/native/libjava/Class.c Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1994, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -52,7 +52,7 @@
#define BA "[B"
static JNINativeMethod methods[] = {
- {"getName0", "()" STR, (void *)&JVM_GetClassName},
+ {"initClassName", "()" STR, (void *)&JVM_InitClassName},
{"getSuperclass", "()" CLS, NULL},
{"getInterfaces0", "()[" CLS, (void *)&JVM_GetClassInterfaces},
{"isInterface", "()Z", (void *)&JVM_IsInterface},
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor7.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor7.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -68,7 +68,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected AbstractAnnotationValueVisitor7() {
super(); // Superclass constructor deprecated too
}
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor7.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor7.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2018, Oacle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019, Oacle and/or its affiliates. All rights reserved.
* 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,7 +71,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected AbstractElementVisitor7(){
super(); // Superclass constructor deprecated too
}
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor7.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor7.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -71,7 +71,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected AbstractTypeVisitor7() {
super(); // Superclass constructor deprecated too
}
--- a/src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor7.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor7.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -85,7 +85,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected ElementKindVisitor7() {
super(null); // Superclass constructor deprecated too
}
@@ -99,7 +99,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected ElementKindVisitor7(R defaultValue) {
super(defaultValue); // Superclass constructor deprecated too
}
--- a/src/java.compiler/share/classes/javax/lang/model/util/ElementScanner7.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.compiler/share/classes/javax/lang/model/util/ElementScanner7.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -98,7 +98,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected ElementScanner7(){
super(null); // Superclass constructor deprecated too
}
@@ -112,7 +112,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected ElementScanner7(R defaultValue){
super(defaultValue); // Superclass constructor deprecated too
}
--- a/src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor7.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor7.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -75,7 +75,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected SimpleAnnotationValueVisitor7() {
super(null); // Superclass constructor deprecated too
}
@@ -89,7 +89,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected SimpleAnnotationValueVisitor7(R defaultValue) {
super(defaultValue); // Superclass constructor deprecated too
}
--- a/src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor7.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor7.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -81,7 +81,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected SimpleElementVisitor7(){
super(null); // Superclass constructor deprecated too
}
@@ -95,7 +95,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected SimpleElementVisitor7(R defaultValue){
super(defaultValue); // Superclass constructor deprecated too
}
--- a/src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor7.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor7.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -81,7 +81,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected SimpleTypeVisitor7(){
super(null); // Superclass constructor deprecated too
}
@@ -95,7 +95,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected SimpleTypeVisitor7(R defaultValue){
super(defaultValue); // Superclass constructor deprecated too
}
--- a/src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor7.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor7.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -82,7 +82,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected TypeKindVisitor7() {
super(null); // Superclass constructor deprecated too
}
@@ -96,7 +96,7 @@
* @deprecated Release 7 is obsolete; update to a visitor for a newer
* release level.
*/
- @Deprecated
+ @Deprecated(since="12")
protected TypeKindVisitor7(R defaultValue) {
super(defaultValue); // Superclass constructor deprecated too
}
--- a/src/java.naming/share/classes/com/sun/jndi/ldap/ext/StartTlsResponseImpl.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/java.naming/share/classes/com/sun/jndi/ldap/ext/StartTlsResponseImpl.java Thu Jan 10 13:13:56 2019 -0500
@@ -288,7 +288,8 @@
*/
public void setConnection(Connection ldapConnection, String hostname) {
this.ldapConnection = ldapConnection;
- this.hostname = (hostname != null) ? hostname : ldapConnection.host;
+ this.hostname = (hostname == null || hostname.isEmpty())
+ ? ldapConnection.host : hostname;
originalInputStream = ldapConnection.inStream;
originalOutputStream = ldapConnection.outStream;
}
--- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_ja.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_ja.properties Thu Jan 10 13:13:56 2019 -0500
@@ -60,6 +60,7 @@
dc.service.not.found = \u30B5\u30FC\u30D3\u30B9\u30FB\u30BF\u30A4\u30D7\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
dc.tag.code.within.code = <code>\u5185\u306E'{@code'}
dc.tag.empty = \u7A7A\u306E<{0}>\u30BF\u30B0
+dc.tag.a.within.a = <a>\u306B\u5C55\u958B\u3055\u308C\u308B<a>\u5185\u306E{0}\u30BF\u30B0
dc.tag.end.not.permitted = \u7121\u52B9\u306A\u7D42\u4E86\u30BF\u30B0: </{0}>
dc.tag.end.unexpected = \u4E88\u671F\u3057\u306A\u3044\u7D42\u4E86\u30BF\u30B0: </{0}>
dc.tag.header.sequence.1 = \u30D8\u30C3\u30C0\u30FC\u306E\u6307\u5B9A\u9806\u5E8F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093: <{0}>
--- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_zh_CN.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_zh_CN.properties Thu Jan 10 13:13:56 2019 -0500
@@ -60,6 +60,7 @@
dc.service.not.found = \u627E\u4E0D\u5230\u670D\u52A1\u7C7B\u578B
dc.tag.code.within.code = '{@code'} \u5728 <code> \u4E2D
dc.tag.empty = <{0}> \u6807\u8BB0\u4E3A\u7A7A
+dc.tag.a.within.a = {0} \u6807\u8BB0\uFF0C\u5176\u6269\u5C55\u5230 <a>\uFF0C\u4F4D\u4E8E <a> \u5185
dc.tag.end.not.permitted = \u65E0\u6548\u7684\u7ED3\u675F\u6807\u8BB0: </{0}>
dc.tag.end.unexpected = \u610F\u5916\u7684\u7ED3\u675F\u6807\u8BB0: </{0}>
dc.tag.header.sequence.1 = \u4F7F\u7528\u7684\u6807\u9898\u8D85\u51FA\u5E8F\u5217: <{0}>
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java Thu Jan 10 13:13:56 2019 -0500
@@ -167,8 +167,7 @@
public boolean isPreview(Feature feature) {
if (feature == Feature.SWITCH_EXPRESSION ||
feature == Feature.SWITCH_MULTIPLE_CASE_LABELS ||
- feature == Feature.SWITCH_RULE ||
- feature == Feature.RAW_STRING_LITERALS)
+ feature == Feature.SWITCH_RULE)
return true;
//Note: this is a backdoor which allows to optionally treat all features as 'preview' (for testing).
//When real preview features will be added, this method can be implemented to return 'true'
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java Thu Jan 10 13:13:56 2019 -0500
@@ -188,8 +188,7 @@
IMPORT_ON_DEMAND_OBSERVABLE_PACKAGES(JDK1_2, JDK8),
SWITCH_MULTIPLE_CASE_LABELS(JDK13, Fragments.FeatureMultipleCaseLabels, DiagKind.PLURAL),
SWITCH_RULE(JDK13, Fragments.FeatureSwitchRules, DiagKind.PLURAL),
- SWITCH_EXPRESSION(JDK13, Fragments.FeatureSwitchExpressions, DiagKind.PLURAL),
- RAW_STRING_LITERALS(JDK13, Fragments.FeatureRawStringLiterals, DiagKind.PLURAL);
+ SWITCH_EXPRESSION(JDK13, Fragments.FeatureSwitchExpressions, DiagKind.PLURAL);
enum DiagKind {
NORMAL,
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Thu Jan 10 13:13:56 2019 -0500
@@ -104,8 +104,8 @@
private FSInfo fsInfo;
- private final Set<JavaFileObject.Kind> sourceOrClass =
- EnumSet.of(JavaFileObject.Kind.SOURCE, JavaFileObject.Kind.CLASS);
+ private static final Set<JavaFileObject.Kind> SOURCE_OR_CLASS =
+ Set.of(JavaFileObject.Kind.SOURCE, JavaFileObject.Kind.CLASS);
protected boolean symbolFileEnabled;
@@ -500,6 +500,9 @@
}
}
+ private static final Set<FileVisitOption> NO_FILE_VISIT_OPTIONS = Set.of();
+ private static final Set<FileVisitOption> FOLLOW_LINKS_OPTIONS = Set.of(FOLLOW_LINKS);
+
private final class ArchiveContainer implements Container {
private final Path archivePath;
private final FileSystem fileSystem;
@@ -517,7 +520,7 @@
}
packages = new HashMap<>();
for (Path root : fileSystem.getRootDirectories()) {
- Files.walkFileTree(root, EnumSet.noneOf(FileVisitOption.class), Integer.MAX_VALUE,
+ Files.walkFileTree(root, NO_FILE_VISIT_OPTIONS, Integer.MAX_VALUE,
new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
@@ -548,8 +551,7 @@
return ;
int maxDepth = (recurse ? Integer.MAX_VALUE : 1);
- Set<FileVisitOption> opts = EnumSet.of(FOLLOW_LINKS);
- Files.walkFileTree(resolvedSubdirectory, opts, maxDepth,
+ Files.walkFileTree(resolvedSubdirectory, FOLLOW_LINKS_OPTIONS, maxDepth,
new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
@@ -763,7 +765,7 @@
// validateClassName(className);
nullCheck(className);
nullCheck(kind);
- if (!sourceOrClass.contains(kind))
+ if (!SOURCE_OR_CLASS.contains(kind))
throw new IllegalArgumentException("Invalid kind: " + kind);
return getFileForInput(location, RelativeFile.forClass(className, kind));
}
@@ -811,7 +813,7 @@
// validateClassName(className);
nullCheck(className);
nullCheck(kind);
- if (!sourceOrClass.contains(kind))
+ if (!SOURCE_OR_CLASS.contains(kind))
throw new IllegalArgumentException("Invalid kind: " + kind);
return getFileForOutput(location, RelativeFile.forClass(className, kind), sibling);
}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java Thu Jan 10 13:13:56 2019 -0500
@@ -646,60 +646,7 @@
lexError(pos, Errors.UnclosedStrLit);
}
break loop;
- case '`':
- checkSourceLevel(pos, Feature.RAW_STRING_LITERALS);
- // Ensure that the backtick was not a Unicode escape sequence
- if (reader.peekBack() != '`') {
- reader.scanChar();
- lexError(pos, Errors.UnicodeBacktick);
- break loop;
- }
- // Turn off unicode processsing and save previous state
- boolean oldState = reader.setUnicodeConversion(false);
- // Count the number of backticks in the open quote sequence
- int openCount = reader.skipRepeats();
- // Skip last backtick
- reader.scanChar();
- while (reader.bp < reader.buflen) {
- // If potential close quote sequence
- if (reader.ch == '`') {
- // Count number of backticks in sequence
- int closeCount = reader.skipRepeats();
- // If the counts match we can exit the raw string literal
- if (openCount == closeCount) {
- break;
- }
- // Emit non-close backtick sequence
- for (int i = 0; i <= closeCount; i++) {
- reader.putChar('`', false);
- }
- // Skip last backtick
- reader.scanChar();
- } else if (reader.ch == LF) {
- reader.putChar(true);
- processLineTerminator(pos, reader.bp);
- } else if (reader.ch == CR) {
- if (reader.peekChar() == LF) {
- reader.scanChar();
- }
- // Translate CR and CRLF sequences to LF
- reader.putChar('\n', true);
- processLineTerminator(pos, reader.bp);
- } else {
- reader.putChar(true);
- }
- }
- // Restore unicode processsing
- reader.setUnicodeConversion(oldState);
- // Ensure the close quote was encountered
- if (reader.bp == reader.buflen) {
- lexError(pos, Errors.UnclosedStrLit);
- } else {
- tk = TokenKind.STRINGLITERAL;
- reader.scanChar();
- }
- break loop;
- default:
+ default:
if (isSpecial(reader.ch)) {
scanOperator();
} else {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java Thu Jan 10 13:13:56 2019 -0500
@@ -64,10 +64,6 @@
*/
protected int unicodeConversionBp = -1;
- /** Control conversion of unicode characters
- */
- protected boolean unicodeConversion = true;
-
protected Log log;
protected Names names;
@@ -158,17 +154,11 @@
return new String(sbuf, 0, sp);
}
- protected boolean setUnicodeConversion(boolean newState) {
- boolean oldState = unicodeConversion;
- unicodeConversion = newState;
- return oldState;
- }
-
/** Convert unicode escape; bp points to initial '\' character
* (Spec 3.3).
*/
protected void convertUnicode() {
- if (ch == '\\' && unicodeConversion && unicodeConversionBp != bp ) {
+ if (ch == '\\' && unicodeConversionBp != bp ) {
bp++; ch = buf[bp];
if (ch == 'u') {
do {
@@ -264,24 +254,6 @@
return buf[bp + 1];
}
- protected char peekBack() {
- return buf[bp];
- }
-
- /**
- * Skips consecutive occurrences of the current character, leaving bp positioned
- * at the last occurrence. Returns the occurrence count.
- */
- protected int skipRepeats() {
- int start = bp;
- while (bp < buflen) {
- if (buf[bp] != buf[bp + 1])
- break;
- bp++;
- }
- return bp - start;
- }
-
/**
* Returns a copy of the input buffer, up to its inputLength.
* Unicode escape sequences are not translated.
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Thu Jan 10 13:13:56 2019 -0500
@@ -1240,9 +1240,6 @@
compiler.err.unclosed.str.lit=\
unclosed string literal
-compiler.err.unicode.backtick=\
- attempt to use \\u0060 as a raw string literal delimiter
-
# 0: string
compiler.err.unsupported.encoding=\
unsupported encoding: {0}
@@ -2837,9 +2834,6 @@
compiler.misc.feature.switch.expressions=\
switch expressions
-compiler.misc.feature.raw.string.literals=\
- raw string literals
-
compiler.misc.feature.var.syntax.in.implicit.lambda=\
var syntax in implicit lambdas
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties Thu Jan 10 13:13:56 2019 -0500
@@ -49,6 +49,7 @@
# kind name an informative description of the kind of a declaration; see compiler.misc.kindname.*
# target a target version number, such as 1.5, 1.6, 1.7, taken from a com.sun.tools.javac.jvm.Target
# token the name of a non-terminal in source code; see compiler.misc.token.*
+# tree tag the name of a non-terminal in source code; see compiler.misc.token.*
# type a Java type; e.g. int, X, X<T>
# url a URL
# object a Java object (unspecified)
@@ -158,6 +159,28 @@
compiler.err.break.outside.switch.loop=break\u304Cswitch\u6587\u307E\u305F\u306F\u30EB\u30FC\u30D7\u306E\u5916\u306B\u3042\u308A\u307E\u3059
+compiler.err.break.missing.value=break\u306E\u5024\u304C\u3042\u308A\u307E\u305B\u3093
+
+compiler.err.break.outside.switch.expression=break\u304C\u3001\u56F2\u3093\u3067\u3044\u308Bswitch\u5F0F\u306E\u5916\u306B\u3042\u308A\u307E\u3059
+
+compiler.err.continue.outside.switch.expression=continue\u304C\u3001\u56F2\u3093\u3067\u3044\u308Bswitch\u5F0F\u306E\u5916\u306B\u3042\u308A\u307E\u3059
+
+compiler.err.return.outside.switch.expression=return\u304C\u3001\u56F2\u3093\u3067\u3044\u308Bswitch\u5F0F\u306E\u5916\u306B\u3042\u308A\u307E\u3059
+
+compiler.err.rule.completes.normally=switch\u30EB\u30FC\u30EB\u304C\u5024\u3092\u63D0\u4F9B\u305B\u305A\u306B\u5B8C\u4E86\u3057\u307E\u3057\u305F\n(switch\u5F0F\u306Eswitch\u30EB\u30FC\u30EB\u306F\u5024\u307E\u305F\u306F\u30B9\u30ED\u30FC\u3092\u63D0\u4F9B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059)
+
+compiler.err.switch.expression.completes.normally=switch\u5F0F\u304C\u5024\u3092\u63D0\u4F9B\u305B\u305A\u306B\u5B8C\u4E86\u3057\u307E\u3057\u305F\n(switch\u5F0F\u306F\u3059\u3079\u3066\u306E\u53EF\u80FD\u306A\u5165\u529B\u5024\u306B\u3064\u3044\u3066\u5024\u307E\u305F\u306F\u30B9\u30ED\u30FC\u3092\u63D0\u4F9B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059)
+
+# 0: name
+compiler.err.break.ambiguous.target=''{0}''\u3078\u306E\u53C2\u7167\u304C\u3042\u3044\u307E\u3044\u3067\u3059\n(''{0}''\u306F\u30E9\u30D9\u30EB\u3068\u5F0F\u306E\u4E21\u65B9\u3067\u3059)
+
+# 0: tree tag
+compiler.err.break.expr.not.immediate=\u5024\u30D6\u30EC\u30FC\u30AF\u306F''{0}''\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+
+compiler.err.break.complex.value.no.switch.expression=\u4E88\u671F\u3057\u306A\u3044\u5024\u30D6\u30EC\u30FC\u30AF\u3067\u3059
+
+compiler.err.switch.expression.empty=switch\u5F0F\u306Bcase\u53E5\u304C\u3042\u308A\u307E\u305B\u3093
+
# 0: name
compiler.err.call.must.be.first.stmt.in.ctor={0}\u306E\u547C\u51FA\u3057\u306F\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u5148\u982D\u6587\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
@@ -583,15 +606,17 @@
compiler.err.native.meth.cant.have.body=native\u30E1\u30BD\u30C3\u30C9\u304C\u672C\u4F53\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-# 0: type, 1: type
-compiler.err.neither.conditional.subtype=?\u306B\u5BFE\u3059\u308B\u4E92\u63DB\u6027\u306E\u306A\u3044\u578B : \u3069\u3061\u3089\u3082\u4ED6\u65B9\u306E\u30B5\u30D6\u30BF\u30A4\u30D7\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n2\u756A\u76EE\u306E\u30AA\u30DA\u30E9\u30F3\u30C9 : {0}\n3\u756A\u76EE\u306E\u30AA\u30DA\u30E9\u30F3\u30C9 : {1}
-
# 0: message segment
compiler.misc.incompatible.type.in.conditional=\u6761\u4EF6\u5F0F\u306E\u578B\u304C\u4E0D\u6B63\u3067\u3059\n{0}
compiler.misc.conditional.target.cant.be.void=\u6761\u4EF6\u5F0F\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u578B\u306Fvoid\u306B\u3067\u304D\u307E\u305B\u3093
+compiler.misc.switch.expression.target.cant.be.void=switch\u5F0F\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u578B\u306Fvoid\u306B\u3067\u304D\u307E\u305B\u3093
+
+# 0: message segment
+compiler.misc.incompatible.type.in.switch.expression=switch\u5F0F\u306E\u578B\u304C\u4E0D\u6B63\u3067\u3059\n{0}
+
# 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}
@@ -817,8 +842,6 @@
compiler.err.throws.not.allowed.in.intf.annotation=throws\u7BC0\u3092@interface\u30E1\u30F3\u30D0\u30FC\u3067\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
-compiler.err.try.without.catch.or.finally=''try''\u3078\u306E''catch''\u307E\u305F\u306F''finally''\u304C\u3042\u308A\u307E\u305B\u3093
-
compiler.err.try.without.catch.finally.or.resource.decls=''try''\u3078\u306E''catch''\u3001''finally''\u307E\u305F\u306F\u30EA\u30BD\u30FC\u30B9\u5BA3\u8A00\u304C\u3042\u308A\u307E\u305B\u3093
# 0: symbol
@@ -865,6 +888,8 @@
compiler.err.unclosed.str.lit=\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093
+compiler.err.unicode.backtick=RAW\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u306E\u30C7\u30EA\u30DF\u30BF\u3068\u3057\u3066\\u0060\u3092\u4F7F\u7528\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F
+
# 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}
@@ -922,6 +947,8 @@
compiler.err.unreachable.stmt=\u3053\u306E\u6587\u306B\u5236\u5FA1\u304C\u79FB\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093
+compiler.err.not.exhaustive=switch\u5F0F\u304C\u3059\u3079\u3066\u306E\u53EF\u80FD\u306A\u5165\u529B\u5024\u3092\u30AB\u30D0\u30FC\u3057\u3066\u3044\u307E\u305B\u3093
+
compiler.err.initializer.must.be.able.to.complete.normally=\u521D\u671F\u5316\u5B50\u306F\u6B63\u5E38\u306B\u5B8C\u4E86\u3067\u304D\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
compiler.err.initializer.not.allowed=\u30A4\u30CB\u30B7\u30E3\u30E9\u30A4\u30B6\u306Finterfaces\u3067\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093
@@ -1240,9 +1267,6 @@
# 0: type, 1: type
compiler.warn.inexact.non-varargs.call=\u6700\u7D42\u30D1\u30E9\u30E1\u30FC\u30BF\u306E\u4E0D\u6B63\u78BA\u306A\u5F15\u6570\u578B\u3092\u6301\u3063\u305F\u53EF\u5909\u5F15\u6570\u30E1\u30BD\u30C3\u30C9\u306E\u975E\u53EF\u5909\u5F15\u6570\u547C\u51FA\u3057\u3002\n\u53EF\u5909\u5F15\u6570\u547C\u51FA\u3057\u306B\u95A2\u3057\u3066\u306F{0}\u306B\u30AD\u30E3\u30B9\u30C8\u3057\u307E\u3059\u3002\n\u975E\u53EF\u5909\u5F15\u6570\u547C\u51FA\u3057\u306B\u95A2\u3057\u3066\u306F{1}\u306B\u30AD\u30E3\u30B9\u30C8\u3057\u3066\u3053\u306E\u8B66\u544A\u3092\u51FA\u3055\u306A\u3044\u3088\u3046\u306B\u3057\u307E\u3059
-# 0: target, 1: target
-compiler.err.bad.target.sigpoly.call=\u591A\u76F8\u7F72\u540D\u547C\u51FA\u3057\u306F-target {0}\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u591A\u76F8\u7F72\u540D\u547C\u51FA\u3057\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F-target {1}\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u307E\u3059)
-
# 0: list of type
compiler.warn.unreachable.catch=catch\u53E5\u306B\u79FB\u3059\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\n\u30B9\u30ED\u30FC\u3055\u308C\u305F\u30BF\u30A4\u30D7{0}\u306F\u3059\u3067\u306B\u6355\u6349\u3055\u308C\u3066\u3044\u307E\u3059
@@ -1852,6 +1876,17 @@
compiler.misc.kindname.instance.init=\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u521D\u671F\u5316\u5B50
+# the following are names of tree kinds:
+compiler.misc.tree.tag.forloop=for
+
+compiler.misc.tree.tag.foreachloop=for
+
+compiler.misc.tree.tag.whileloop=while
+
+compiler.misc.tree.tag.doloop=do
+
+compiler.misc.tree.tag.switch=switch
+
#####
compiler.misc.no.args=\u5F15\u6570\u304C\u3042\u308A\u307E\u305B\u3093
@@ -1958,12 +1993,6 @@
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
@@ -1974,10 +2003,6 @@
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
@@ -1992,6 +2017,16 @@
compiler.misc.feature.private.intf.methods=private\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9
+compiler.misc.feature.multiple.case.labels=\u8907\u6570\u306Ecase\u30E9\u30D9\u30EB
+
+compiler.misc.feature.switch.rules=switch\u30EB\u30FC\u30EB
+
+compiler.misc.feature.switch.expressions=switch\u5F0F
+
+compiler.misc.feature.raw.string.literals=RAW\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB
+
+compiler.misc.feature.var.syntax.in.implicit.lambda=\u6697\u9ED9\u30E9\u30E0\u30C0\u306Evar\u69CB\u6587
+
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
compiler.err.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
@@ -2339,6 +2374,11 @@
# 0: string, 1: string
compiler.err.illegal.argument.for.option={0}\u306E\u5F15\u6570\u304C\u4E0D\u6B63\u3067\u3059: {1}
+compiler.err.switch.null.not.allowed=case\u306Enull\u30E9\u30D9\u30EB\u306F\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093
+
+compiler.err.switch.case.unexpected.statement=case\u306E\u4E88\u671F\u3057\u306A\u3044\u6587\u3067\u3059\u3002\u4E88\u671F\u3055\u308C\u308B\u306E\u306F\u3001\u5F0F\u3001\u30D6\u30ED\u30C3\u30AF\u307E\u305F\u306Fthrow\u6587\u3067\u3059
+
+compiler.err.switch.mixing.case.types=switch\u3067case\u306E\u7570\u306A\u308B\u7A2E\u985E\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059
############################################
# messages previouly at javac.properties
@@ -2407,7 +2447,12 @@
compiler.err.no.value.for.option={0}\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5024\u304C\u3042\u308A\u307E\u305B\u3093
# 0: string
-compiler.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
+compiler.err.repeated.value.for.patch.module=\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u306B\u5BFE\u3057\u3066--patch-module\u304C\u8907\u6570\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
+
+# 0: string
+compiler.err.repeated.value.for.module.source.path=\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u306B\u5BFE\u3057\u3066--module-source-path\u304C\u8907\u6570\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
+
+compiler.err.multiple.values.for.module.source.path=\u30D1\u30BF\u30FC\u30F3\u5F15\u6570\u3067--module-source-path\u304C\u8907\u6570\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
# 0: string
compiler.err.unmatched.quote=\u74B0\u5883\u5909\u6570{0}\u306E\u5F15\u7528\u7B26\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties Thu Jan 10 13:13:56 2019 -0500
@@ -49,6 +49,7 @@
# kind name an informative description of the kind of a declaration; see compiler.misc.kindname.*
# target a target version number, such as 1.5, 1.6, 1.7, taken from a com.sun.tools.javac.jvm.Target
# token the name of a non-terminal in source code; see compiler.misc.token.*
+# tree tag the name of a non-terminal in source code; see compiler.misc.token.*
# type a Java type; e.g. int, X, X<T>
# url a URL
# object a Java object (unspecified)
@@ -158,6 +159,28 @@
compiler.err.break.outside.switch.loop=\u5728 switch \u6216 loop \u5916\u90E8\u4E2D\u65AD
+compiler.err.break.missing.value=\u7F3A\u5C11\u4E2D\u65AD\u503C
+
+compiler.err.break.outside.switch.expression=break \u5728\u95ED\u5408\u7684 switch \u8868\u8FBE\u5F0F\u5916\u90E8
+
+compiler.err.continue.outside.switch.expression=continue \u5728\u95ED\u5408\u7684 switch \u8868\u8FBE\u5F0F\u5916\u90E8
+
+compiler.err.return.outside.switch.expression=return \u5728\u95ED\u5408\u7684 switch \u8868\u8FBE\u5F0F\u5916\u90E8
+
+compiler.err.rule.completes.normally=switch \u89C4\u5219\u5B8C\u7ED3\u4F46\u6CA1\u6709\u63D0\u4F9B\u503C\n\uFF08switch \u8868\u8FBE\u5F0F\u4E2D\u7684 switch \u89C4\u5219\u5FC5\u987B\u63D0\u4F9B\u503C\u6216\u629B\u51FA\uFF09
+
+compiler.err.switch.expression.completes.normally=switch \u8868\u8FBE\u5F0F\u5B8C\u7ED3\u4F46\u6CA1\u6709\u63D0\u4F9B\u503C\n\uFF08switch \u8868\u8FBE\u5F0F\u5FC5\u987B\u4E3A\u6240\u6709\u53EF\u80FD\u7684\u8F93\u5165\u503C\u63D0\u4F9B\u503C\u6216\u629B\u51FA\uFF09
+
+# 0: name
+compiler.err.break.ambiguous.target=\u5BF9 ''{0}'' \u7684\u5F15\u7528\u4E0D\u660E\u786E\n\uFF08''{0}'' \u540C\u65F6\u662F\u6807\u7B7E\u548C\u8868\u8FBE\u5F0F\uFF09
+
+# 0: tree tag
+compiler.err.break.expr.not.immediate=''{0}'' \u4E2D\u4E0D\u652F\u6301\u503C\u4E2D\u65AD
+
+compiler.err.break.complex.value.no.switch.expression=\u610F\u5916\u503C\u4E2D\u65AD
+
+compiler.err.switch.expression.empty=switch \u8868\u8FBE\u5F0F\u4E2D\u6CA1\u6709\u4EFB\u4F55 case \u5B50\u53E5
+
# 0: name
compiler.err.call.must.be.first.stmt.in.ctor=\u5BF9{0}\u7684\u8C03\u7528\u5FC5\u987B\u662F\u6784\u9020\u5668\u4E2D\u7684\u7B2C\u4E00\u4E2A\u8BED\u53E5
@@ -583,15 +606,17 @@
compiler.err.native.meth.cant.have.body=\u672C\u673A\u65B9\u6CD5\u4E0D\u80FD\u5E26\u6709\u4E3B\u4F53
-# 0: type, 1: type
-compiler.err.neither.conditional.subtype=? \u7684\u4E0D\u517C\u5BB9\u7C7B\u578B: \u4E24\u8005\u90FD\u4E0D\u662F\u5BF9\u65B9\u7684\u5B50\u7C7B\u578B\n\u7B2C\u4E8C\u4E2A\u64CD\u4F5C\u6570: {0}\n\u7B2C\u4E09\u4E2A\u64CD\u4F5C\u6570: {1}
-
# 0: message segment
compiler.misc.incompatible.type.in.conditional=\u6761\u4EF6\u8868\u8FBE\u5F0F\u4E2D\u7684\u7C7B\u578B\u9519\u8BEF\n{0}
compiler.misc.conditional.target.cant.be.void=\u6761\u4EF6\u8868\u8FBE\u5F0F\u7684\u76EE\u6807\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
+compiler.misc.switch.expression.target.cant.be.void=switch \u8868\u8FBE\u5F0F\u7684\u76EE\u6807\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
+
+# 0: message segment
+compiler.misc.incompatible.type.in.switch.expression=switch \u8868\u8FBE\u5F0F\u4E2D\u7684\u7C7B\u578B\u9519\u8BEF\n{0}
+
# 0: message segment
compiler.misc.incompatible.ret.type.in.lambda=lambda \u8868\u8FBE\u5F0F\u4E2D\u7684\u8FD4\u56DE\u7C7B\u578B\u9519\u8BEF\n{0}
@@ -817,8 +842,6 @@
compiler.err.throws.not.allowed.in.intf.annotation=@interface \u6210\u5458\u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528 throws \u5B50\u53E5
-compiler.err.try.without.catch.or.finally=\u6709 ''try'', \u4F46\u662F\u6CA1\u6709 ''catch'' \u6216 ''finally''
-
compiler.err.try.without.catch.finally.or.resource.decls=''try'' \u4E0D\u5E26\u6709 ''catch'', ''finally'' \u6216\u8D44\u6E90\u58F0\u660E
# 0: symbol
@@ -865,6 +888,8 @@
compiler.err.unclosed.str.lit=\u672A\u7ED3\u675F\u7684\u5B57\u7B26\u4E32\u6587\u5B57
+compiler.err.unicode.backtick=\u5C1D\u8BD5\u5C06 \\u0060 \u7528\u4F5C\u539F\u59CB\u5B57\u7B26\u4E32\u6587\u5B57\u5206\u9694\u7B26
+
# 0: string
compiler.err.unsupported.encoding=\u4E0D\u652F\u6301\u7684\u7F16\u7801: {0}
@@ -922,6 +947,8 @@
compiler.err.unreachable.stmt=\u65E0\u6CD5\u8BBF\u95EE\u7684\u8BED\u53E5
+compiler.err.not.exhaustive=switch \u8868\u8FBE\u5F0F\u4E0D\u5305\u542B\u6240\u6709\u53EF\u80FD\u7684\u8F93\u5165\u503C
+
compiler.err.initializer.must.be.able.to.complete.normally=\u521D\u59CB\u5316\u7A0B\u5E8F\u5FC5\u987B\u80FD\u591F\u6B63\u5E38\u5B8C\u6210
compiler.err.initializer.not.allowed=\u63A5\u53E3\u4E2D\u4E0D\u5141\u8BB8\u6709\u521D\u59CB\u5316\u7A0B\u5E8F
@@ -1240,9 +1267,6 @@
# 0: type, 1: type
compiler.warn.inexact.non-varargs.call=\u6700\u540E\u4E00\u4E2A\u53C2\u6570\u4F7F\u7528\u4E86\u4E0D\u51C6\u786E\u7684\u53D8\u91CF\u7C7B\u578B\u7684 varargs \u65B9\u6CD5\u7684\u975E varargs \u8C03\u7528; \n\u5BF9\u4E8E varargs \u8C03\u7528, \u5E94\u4F7F\u7528 {0}\n\u5BF9\u4E8E\u975E varargs \u8C03\u7528, \u5E94\u4F7F\u7528 {1}, \u8FD9\u6837\u4E5F\u53EF\u4EE5\u6291\u5236\u6B64\u8B66\u544A
-# 0: target, 1: target
-compiler.err.bad.target.sigpoly.call=-target {0} \u4E2D\u4E0D\u652F\u6301\u591A\u6001\u7B7E\u540D\u8C03\u7528\n\uFF08\u8BF7\u4F7F\u7528 -target {1} \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u591A\u6001\u7B7E\u540D\u8C03\u7528\uFF09
-
# 0: list of type
compiler.warn.unreachable.catch=catch \u5B50\u53E5\u65E0\u6CD5\u8BBF\u95EE\n\u5DF2\u6355\u83B7\u5230\u629B\u51FA\u7684\u7C7B\u578B{0}
@@ -1852,6 +1876,17 @@
compiler.misc.kindname.instance.init=\u5B9E\u4F8B\u521D\u59CB\u5316\u7A0B\u5E8F
+# the following are names of tree kinds:
+compiler.misc.tree.tag.forloop=for
+
+compiler.misc.tree.tag.foreachloop=for
+
+compiler.misc.tree.tag.whileloop=while
+
+compiler.misc.tree.tag.doloop=do
+
+compiler.misc.tree.tag.switch=switch
+
#####
compiler.misc.no.args=\u6CA1\u6709\u53C2\u6570
@@ -1958,12 +1993,6 @@
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
@@ -1974,10 +2003,6 @@
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
@@ -1992,6 +2017,16 @@
compiler.misc.feature.private.intf.methods=\u79C1\u6709\u63A5\u53E3\u65B9\u6CD5
+compiler.misc.feature.multiple.case.labels=\u591A\u4E2A case \u6807\u7B7E
+
+compiler.misc.feature.switch.rules=switch \u89C4\u5219
+
+compiler.misc.feature.switch.expressions=switch \u8868\u8FBE\u5F0F
+
+compiler.misc.feature.raw.string.literals=\u539F\u59CB\u5B57\u7B26\u4E32\u6587\u5B57
+
+compiler.misc.feature.var.syntax.in.implicit.lambda=\u9690\u5F0F lambda \u4E2D\u7684 var \u8BED\u6CD5
+
compiler.warn.underscore.as.identifier=\u4ECE\u53D1\u884C\u7248 9 \u5F00\u59CB, ''_'' \u4E3A\u5173\u952E\u5B57, \u4E0D\u80FD\u7528\u4F5C\u6807\u8BC6\u7B26
compiler.err.underscore.as.identifier=\u4ECE\u53D1\u884C\u7248 9 \u5F00\u59CB, ''_'' \u4E3A\u5173\u952E\u5B57, \u4E0D\u80FD\u7528\u4F5C\u6807\u8BC6\u7B26
@@ -2339,6 +2374,11 @@
# 0: string, 1: string
compiler.err.illegal.argument.for.option={0} \u7684\u53C2\u6570\u975E\u6CD5: {1}
+compiler.err.switch.null.not.allowed=case \u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528\u7A7A\u6807\u7B7E
+
+compiler.err.switch.case.unexpected.statement=case \u4E2D\u5B58\u5728\u610F\u5916\u8BED\u53E5\uFF0C\u5E94\u4E3A\u8868\u8FBE\u5F0F\u3001\u5757\u6216\u629B\u51FA\u8BED\u53E5
+
+compiler.err.switch.mixing.case.types=\u5728 switch \u4E2D\u4F7F\u7528\u4E86\u4E0D\u540C case \u7C7B\u578B
############################################
# messages previouly at javac.properties
@@ -2407,7 +2447,12 @@
compiler.err.no.value.for.option={0} \u9009\u9879\u6CA1\u6709\u503C
# 0: string
-compiler.err.repeated.value.for.patch.module=\u4E3A {0} \u591A\u6B21\u6307\u5B9A\u4E86 --patch-module
+compiler.err.repeated.value.for.patch.module=\u4E3A\u6A21\u5757 {0} \u591A\u6B21\u6307\u5B9A\u4E86 --patch-module
+
+# 0: string
+compiler.err.repeated.value.for.module.source.path=\u4E3A\u6A21\u5757 {0} \u591A\u6B21\u6307\u5B9A\u4E86 --module-source-path
+
+compiler.err.multiple.values.for.module.source.path=\u4F7F\u7528\u6A21\u5F0F\u53C2\u6570\u591A\u6B21\u6307\u5B9A\u4E86 --module-source-path
# 0: string
compiler.err.unmatched.quote=\u73AF\u5883\u53D8\u91CF {0} \u4E2D\u7684\u5F15\u53F7\u4E0D\u6210\u5BF9
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties Thu Jan 10 13:13:56 2019 -0500
@@ -52,9 +52,9 @@
javac.opt.J=<flag>\u3092\u5B9F\u884C\u30B7\u30B9\u30C6\u30E0\u306B\u76F4\u63A5\u6E21\u3059
javac.opt.encoding=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u4F7F\u7528\u3059\u308B\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u6307\u5B9A\u3059\u308B
javac.opt.profile=\u4F7F\u7528\u3055\u308C\u3066\u3044\u308BAPI\u304C\u6307\u5B9A\u3057\u305F\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3067\u4F7F\u7528\u53EF\u80FD\u304B\u3069\u3046\u304B\u3092\u78BA\u8A8D\u3057\u307E\u3059
-javac.opt.target=\u7279\u5B9A\u306EVM\u30D0\u30FC\u30B8\u30E7\u30F3\u7528\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u751F\u6210\u3059\u308B
-javac.opt.release=\u7279\u5B9A\u306EVM\u30D0\u30FC\u30B8\u30E7\u30F3\u7528\u306B\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u307E\u3059\u3002\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u30BF\u30FC\u30B2\u30C3\u30C8: {0}
-javac.opt.source=\u6307\u5B9A\u3055\u308C\u305F\u30EA\u30EA\u30FC\u30B9\u3068\u30BD\u30FC\u30B9\u306E\u4E92\u63DB\u6027\u3092\u4FDD\u3064
+javac.opt.target=\u7279\u5B9A\u306EVM\u30D0\u30FC\u30B8\u30E7\u30F3\u7528\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u751F\u6210\u3057\u307E\u3059\u3002\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u30D0\u30FC\u30B8\u30E7\u30F3: {0}
+javac.opt.release=\u7279\u5B9A\u306E\u30EA\u30EA\u30FC\u30B9\u7528\u306B\u306B\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u307E\u3059\u3002\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u30EA\u30EA\u30FC\u30B9: {0}
+javac.opt.source=\u6307\u5B9A\u3055\u308C\u305F\u30EA\u30EA\u30FC\u30B9\u3068\u30BD\u30FC\u30B9\u306E\u4E92\u63DB\u6027\u3092\u4FDD\u6301\u3057\u307E\u3059\u3002\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u30EA\u30EA\u30FC\u30B9: {0}
javac.opt.Werror=\u8B66\u544A\u304C\u767A\u751F\u3057\u305F\u5834\u5408\u306B\u30B3\u30F3\u30D1\u30A4\u30EB\u3092\u7D42\u4E86\u3059\u308B
javac.opt.A=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u306B\u6E21\u3055\u308C\u308B\u30AA\u30D7\u30B7\u30E7\u30F3
javac.opt.implicit=\u6697\u9ED9\u7684\u306B\u53C2\u7167\u3055\u308C\u308B\u30D5\u30A1\u30A4\u30EB\u306B\u3064\u3044\u3066\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u751F\u6210\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u6307\u5B9A\u3059\u308B
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties Thu Jan 10 13:13:56 2019 -0500
@@ -52,9 +52,9 @@
javac.opt.J=\u76F4\u63A5\u5C06 <\u6807\u8BB0> \u4F20\u9012\u7ED9\u8FD0\u884C\u65F6\u7CFB\u7EDF
javac.opt.encoding=\u6307\u5B9A\u6E90\u6587\u4EF6\u4F7F\u7528\u7684\u5B57\u7B26\u7F16\u7801
javac.opt.profile=\u8BF7\u786E\u4FDD\u4F7F\u7528\u7684 API \u5728\u6307\u5B9A\u7684\u914D\u7F6E\u6587\u4EF6\u4E2D\u53EF\u7528
-javac.opt.target=\u751F\u6210\u7279\u5B9A VM \u7248\u672C\u7684\u7C7B\u6587\u4EF6
-javac.opt.release=\u9488\u5BF9\u7279\u5B9A VM \u7248\u672C\u8FDB\u884C\u7F16\u8BD1\u3002\u652F\u6301\u7684\u76EE\u6807: {0}
-javac.opt.source=\u63D0\u4F9B\u4E0E\u6307\u5B9A\u53D1\u884C\u7248\u7684\u6E90\u517C\u5BB9\u6027
+javac.opt.target=\u751F\u6210\u9488\u5BF9\u7279\u5B9A VM \u7248\u672C\u7684\u7C7B\u6587\u4EF6\u3002\u652F\u6301\u7684\u7248\u672C\uFF1A{0}
+javac.opt.release=\u9488\u5BF9\u7279\u5B9A\u53D1\u884C\u7248\u8FDB\u884C\u7F16\u8BD1\u3002\u652F\u6301\u7684\u53D1\u884C\u7248\uFF1A{0}
+javac.opt.source=\u63D0\u4F9B\u4E0E\u6307\u5B9A\u53D1\u884C\u7248\u7684\u6E90\u517C\u5BB9\u6027\u3002\u652F\u6301\u7684\u53D1\u884C\u7248\uFF1A{0}
javac.opt.Werror=\u51FA\u73B0\u8B66\u544A\u65F6\u7EC8\u6B62\u7F16\u8BD1
javac.opt.A=\u4F20\u9012\u7ED9\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u7684\u9009\u9879
javac.opt.implicit=\u6307\u5B9A\u662F\u5426\u4E3A\u9690\u5F0F\u5F15\u7528\u6587\u4EF6\u751F\u6210\u7C7B\u6587\u4EF6
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_ja.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_ja.properties Thu Jan 10 13:13:56 2019 -0500
@@ -80,17 +80,17 @@
## All errors are preceded by this string.
launcher.error=\u30A8\u30E9\u30FC:
-launcher.err.no.args=\u30D5\u30A1\u30A4\u30EB\u540D\u306A\u3057
+launcher.err.no.args=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u30D1\u30B9\u304C\u3042\u308A\u307E\u305B\u3093
# 0: string
-launcher.err.invalid.filename=\u30D5\u30A1\u30A4\u30EB\u540D\u304C\u7121\u52B9\u3067\u3059: {0}
+launcher.err.invalid.filename=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u7121\u52B9\u306A\u30D1\u30B9: {0}
# 0: path
-launcher.err.file.not.found=\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}
+launcher.err.file.not.found=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}
launcher.err.compilation.failed=\u30B3\u30F3\u30D1\u30A4\u30EB\u304C\u5931\u6557\u3057\u307E\u3057\u305F
-launcher.err.no.class=\u30D5\u30A1\u30A4\u30EB\u3067\u30AF\u30E9\u30B9\u304C\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+launcher.err.no.class=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3067\u5BA3\u8A00\u3055\u308C\u305F\u30AF\u30E9\u30B9\u304C\u3042\u308A\u307E\u305B\u3093
launcher.err.main.not.public.static=''main'\u30E1\u30BD\u30C3\u30C9\u304C''public static''\u3068\u3057\u3066\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u305B\u3093
@@ -100,16 +100,13 @@
launcher.err.cant.find.class=\u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}
# 0: string
-launcher.err.unexpected.class=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306B\u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F: {0}
-
-# 0: string
launcher.err.cant.find.main.method=\u30AF\u30E9\u30B9\u306Bmain(String[])\u30E1\u30BD\u30C3\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}
# 0: string
launcher.err.cant.access.main.method=\u30AF\u30E9\u30B9\u306E\u30E1\u30A4\u30F3\u30FB\u30E1\u30BD\u30C3\u30C9\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093: {0}
# 0: path, 1: object
-launcher.err.cant.read.file=\u30D5\u30A1\u30A4\u30EB{0}\u306E\u8AAD\u53D6\u308A\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {1}
+launcher.err.cant.read.file=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u306E\u8AAD\u53D6\u308A\u30A8\u30E9\u30FC: {1}
# 0: string
launcher.err.no.value.for.option=\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u5024\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093: {0}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_zh_CN.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_zh_CN.properties Thu Jan 10 13:13:56 2019 -0500
@@ -80,17 +80,17 @@
## All errors are preceded by this string.
launcher.error=\u9519\u8BEF:
-launcher.err.no.args=\u65E0\u6587\u4EF6\u540D
+launcher.err.no.args=\u65E0\u6E90\u6587\u4EF6\u7684\u8DEF\u5F84
# 0: string
-launcher.err.invalid.filename=\u65E0\u6548\u7684\u6587\u4EF6\u540D\uFF1A{0}
+launcher.err.invalid.filename=\u6E90\u6587\u4EF6\u7684\u8DEF\u5F84\u65E0\u6548\uFF1A{0}
# 0: path
-launcher.err.file.not.found=\u627E\u4E0D\u5230\u6587\u4EF6: {0}
+launcher.err.file.not.found=\u627E\u4E0D\u5230\u6E90\u6587\u4EF6\uFF1A{0}
launcher.err.compilation.failed=\u7F16\u8BD1\u5931\u8D25
-launcher.err.no.class=\u5728\u6587\u4EF6\u4E2D\u672A\u58F0\u660E\u7C7B
+launcher.err.no.class=\u5728\u6E90\u6587\u4EF6\u4E2D\u672A\u58F0\u660E\u7C7B
launcher.err.main.not.public.static=''main'' \u65B9\u6CD5\u672A\u58F0\u660E ''public static''
@@ -100,16 +100,13 @@
launcher.err.cant.find.class=\u627E\u4E0D\u5230\u7C7B\uFF1A{0}
# 0: string
-launcher.err.unexpected.class=\u5728\u5E94\u7528\u7A0B\u5E8F\u7C7B\u8DEF\u5F84 {0} \u4E2D\u627E\u5230\u7C7B
-
-# 0: string
launcher.err.cant.find.main.method=\u5728\u7C7B {0} \u4E2D\u627E\u4E0D\u5230 main(String[]) \u65B9\u6CD5
# 0: string
launcher.err.cant.access.main.method=\u65E0\u6CD5\u8BBF\u95EE\u7C7B {0} \u4E2D\u7684 main \u65B9\u6CD5
# 0: path, 1: object
-launcher.err.cant.read.file=\u8BFB\u53D6\u6587\u4EF6 {0} \u65F6\u51FA\u9519\uFF1A{1}
+launcher.err.cant.read.file=\u8BFB\u53D6\u6E90\u6587\u4EF6 {0} \u65F6\u51FA\u9519\uFF1A{1}
# 0: string
launcher.err.no.value.for.option=\u6CA1\u6709\u4E3A\u9009\u9879 {0} \u6307\u5B9A\u503C
--- a/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Resources_ja.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Resources_ja.java Thu Jan 10 13:13:56 2019 -0500
@@ -65,7 +65,7 @@
{".storetype.type.keystore.type",
"[-storetype <type>] \u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u578B"},
{".keypass.password.password.for.private.key.if.different.",
- "[-keypass <password>] \u79D8\u5BC6\u9375\u306E\u30D1\u30B9\u30EF\u30FC\u30C9(\u7570\u306A\u308B\u5834\u5408)"},
+ "[-keypass <password>] \u79D8\u5BC6\u30AD\u30FC\u306E\u30D1\u30B9\u30EF\u30FC\u30C9(\u7570\u306A\u308B\u5834\u5408)"},
{".certchain.file.name.of.alternative.certchain.file",
"[-certchain <file>] \u4EE3\u66FF\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u540D\u524D"},
{".sigfile.file.name.of.SF.DSA.file",
@@ -87,7 +87,7 @@
{".tsa.url.location.of.the.Timestamping.Authority",
"[-tsa <url>] \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5C40\u306E\u5834\u6240"},
{".tsacert.alias.public.key.certificate.for.Timestamping.Authority",
- "[-tsacert <alias>] \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5C40\u306E\u516C\u958B\u9375\u8A3C\u660E\u66F8"},
+ "[-tsacert <alias>] \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5C40\u306E\u516C\u958B\u30AD\u30FC\u8A3C\u660E\u66F8"},
{".tsapolicyid.tsapolicyid.for.Timestamping.Authority",
"[-tsapolicyid <oid>] \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5C40\u306ETSAPolicyID"},
{".tsadigestalg.algorithm.of.digest.data.in.timestamping.request",
@@ -162,8 +162,8 @@
{"history.nobk", "- \u7F72\u540D\u95A2\u9023\u30D5\u30A1\u30A4\u30EBMETA-INF/%s.SF\u306E\u30D6\u30ED\u30C3\u30AF\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u3042\u308A\u307E\u305B\u3093"},
{"with.weak", "%s (\u5F31)"},
- {"key.bit", "%d\u30D3\u30C3\u30C8\u9375"},
- {"key.bit.weak", "%d\u30D3\u30C3\u30C8\u9375(\u5F31)"},
+ {"key.bit", "%d\u30D3\u30C3\u30C8\u30FB\u30AD\u30FC"},
+ {"key.bit.weak", "%d\u30D3\u30C3\u30C8\u30FB\u30AD\u30FC(\u5F31)"},
{"unknown.size", "\u4E0D\u660E\u30B5\u30A4\u30BA"},
{"jarsigner.", "jarsigner: "},
@@ -185,7 +185,7 @@
{"unable.to.instantiate.keystore.class.",
"\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30AF\u30E9\u30B9\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093: "},
{"Certificate.chain.not.found.for.alias.alias.must.reference.a.valid.KeyStore.key.entry.containing.a.private.key.and",
- "\u6B21\u306E\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}\u3002{1}\u306F\u3001\u79D8\u5BC6\u9375\u304A\u3088\u3073\u5BFE\u5FDC\u3059\u308B\u516C\u958B\u9375\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u3092\u542B\u3080\u6709\u52B9\u306AKeyStore\u9375\u30A8\u30F3\u30C8\u30EA\u3092\u53C2\u7167\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002"},
+ "\u6B21\u306E\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}\u3002{1}\u306F\u3001\u79D8\u5BC6\u30AD\u30FC\u304A\u3088\u3073\u5BFE\u5FDC\u3059\u308B\u516C\u958B\u30AD\u30FC\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u3092\u542B\u3080\u6709\u52B9\u306AKeyStore\u30AD\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u3092\u53C2\u7167\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002"},
{"File.specified.by.certchain.does.not.exist",
"-certchain\u3067\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u30D5\u30A1\u30A4\u30EB\u306F\u5B58\u5728\u3057\u307E\u305B\u3093"},
{"Cannot.restore.certchain.from.file.specified",
@@ -195,12 +195,12 @@
{"found.non.X.509.certificate.in.signer.s.chain",
"\u7F72\u540D\u8005\u306E\u9023\u9396\u5185\u3067\u975EX.509\u8A3C\u660E\u66F8\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F"},
{"incomplete.certificate.chain", "\u4E0D\u5B8C\u5168\u306A\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3"},
- {"Enter.key.password.for.alias.", "{0}\u306E\u9375\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
+ {"Enter.key.password.for.alias.", "{0}\u306E\u30AD\u30FC\u30FB\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
{"unable.to.recover.key.from.keystore",
- "\u30AD\u30FC\u30B9\u30C8\u30A2\u304B\u3089\u9375\u3092\u5FA9\u5143\u3067\u304D\u307E\u305B\u3093"},
+ "\u30AD\u30FC\u30B9\u30C8\u30A2\u304B\u3089\u30AD\u30FC\u3092\u5FA9\u5143\u3067\u304D\u307E\u305B\u3093"},
{"key.associated.with.alias.not.a.private.key",
- "{0}\u3068\u95A2\u9023\u4ED8\u3051\u3089\u308C\u305F\u9375\u306F\u3001\u79D8\u5BC6\u9375\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
- {"you.must.enter.key.password", "\u9375\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
+ "{0}\u3068\u95A2\u9023\u4ED8\u3051\u3089\u308C\u305F\u30AD\u30FC\u306F\u3001\u79D8\u5BC6\u30AD\u30FC\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
+ {"you.must.enter.key.password", "\u30AD\u30FC\u30FB\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
{"unable.to.read.password.", "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093: "},
{"certificate.is.valid.from", "\u8A3C\u660E\u66F8\u306F{0}\u304B\u3089{1}\u307E\u3067\u6709\u52B9\u3067\u3059"},
{"certificate.expired.on", "\u8A3C\u660E\u66F8\u306F{0}\u306B\u5931\u52B9\u3057\u307E\u3057\u305F"},
@@ -217,7 +217,7 @@
"\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5C40\u304B\u3089\u306E\u30EC\u30B9\u30DD\u30F3\u30B9\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30D5\u30A1\u30A4\u30A2\u30A6\u30A9\u30FC\u30EB\u3092\u4ECB\u3057\u3066\u63A5\u7D9A\u3059\u308B\u3068\u304D\u306F\u3001\u5FC5\u8981\u306B\u5FDC\u3058\u3066HTTP\u307E\u305F\u306FHTTPS\u30D7\u30ED\u30AD\u30B7\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002jarsigner\u306B\u6B21\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044:"},
{"or", "\u307E\u305F\u306F"},
{"Certificate.not.found.for.alias.alias.must.reference.a.valid.KeyStore.entry.containing.an.X.509.public.key.certificate.for.the",
- "\u8A3C\u660E\u66F8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F: {0}\u3002{1}\u306F\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5C40\u306EX.509\u516C\u958B\u9375\u8A3C\u660E\u66F8\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u6709\u52B9\u306AKeyStore\u30A8\u30F3\u30C8\u30EA\u3092\u53C2\u7167\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002"},
+ "\u8A3C\u660E\u66F8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F: {0}\u3002{1}\u306F\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5C40\u306EX.509\u516C\u958B\u30AD\u30FC\u8A3C\u660E\u66F8\u304C\u542B\u307E\u308C\u3066\u3044\u308B\u6709\u52B9\u306AKeyStore\u30A8\u30F3\u30C8\u30EA\u3092\u53C2\u7167\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002"},
{"using.an.alternative.signing.mechanism",
"\u4EE3\u66FF\u7F72\u540D\u30E1\u30AB\u30CB\u30BA\u30E0\u306E\u4F7F\u7528"},
{"entry.was.signed.on", "\u30A8\u30F3\u30C8\u30EA\u306F{0}\u306B\u7F72\u540D\u3055\u308C\u307E\u3057\u305F"},
@@ -277,7 +277,7 @@
{"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.",
- "%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"},
+ "%1$s\u7F72\u540D\u30AD\u30FC\u306B\u306F\u3001\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30FB\u30EA\u30B9\u30AF\u3068\u307F\u306A\u3055\u308C\u308B%2$d\u306E\u30AD\u30FC\u30FB\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",
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties Thu Jan 10 13:13:56 2019 -0500
@@ -93,6 +93,7 @@
doclet.Interfaces=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
doclet.Enclosing_Class=\u542B\u307E\u308C\u3066\u3044\u308B\u30AF\u30E9\u30B9:
doclet.Enclosing_Interface=\u542B\u307E\u308C\u3066\u3044\u308B\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9:
+doclet.System_Property=\u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3
doclet.Window_Source_title=\u30BD\u30FC\u30B9\u30FB\u30B3\u30FC\u30C9
doclet.Window_Help_title=API\u30D8\u30EB\u30D7
@@ -122,7 +123,6 @@
doclet.help.index.body={0}\u306B\u306F\u3001\u3059\u3079\u3066\u306E\u30AF\u30E9\u30B9\u3001\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3001\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3001\u30E1\u30BD\u30C3\u30C9\u304A\u3088\u3073\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30A2\u30EB\u30D5\u30A1\u30D9\u30C3\u30C8\u9806\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3068\u3001\u3059\u3079\u3066\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u304A\u3088\u3073\u3059\u3079\u3066\u306E\u30AF\u30E9\u30B9\u306E\u30EA\u30B9\u30C8\u304C\u542B\u307E\u308C\u307E\u3059\u3002
doclet.help.frames.head=\u30D5\u30EC\u30FC\u30E0/\u30D5\u30EC\u30FC\u30E0\u306A\u3057
doclet.help.frames.body=\u3053\u308C\u3089\u306E\u30EA\u30F3\u30AF\u306FHTML\u30D5\u30EC\u30FC\u30E0\u306E\u8868\u793A\u3068\u975E\u8868\u793A\u3092\u5207\u308A\u66FF\u3048\u307E\u3059\u3002\u3059\u3079\u3066\u306E\u30DA\u30FC\u30B8\u306F\u30D5\u30EC\u30FC\u30E0\u3042\u308A\u3067\u3082\u3001\u30D5\u30EC\u30FC\u30E0\u306A\u3057\u3067\u3082\u8868\u793A\u3067\u304D\u307E\u3059\u3002
-doclet.help.all_classes.body={0}\u30EA\u30F3\u30AF\u306B\u306F\u3001\u3059\u3079\u3066\u306E\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9(\u975Estatic\u306E\u30CD\u30B9\u30C8\u3055\u308C\u305F\u578B\u3092\u9664\u304F)\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002
doclet.help.serial_form.body=\u76F4\u5217\u5316\u53EF\u80FD\u307E\u305F\u306F\u5916\u90E8\u5316\u53EF\u80FD\u306A\u5404\u30AF\u30E9\u30B9\u306F\u3001\u76F4\u5217\u5316\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u30E1\u30BD\u30C3\u30C9\u306E\u8AAC\u660E\u3092\u542B\u307F\u307E\u3059\u3002\u3053\u306E\u60C5\u5831\u306F\u3001API\u3092\u4F7F\u7528\u3059\u308B\u958B\u767A\u8005\u3067\u306F\u306A\u304F\u3001\u518D\u5B9F\u88C5\u3092\u884C\u3046\u62C5\u5F53\u8005\u306B\u5F79\u7ACB\u3061\u307E\u3059\u3002\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u30FB\u30D0\u30FC\u306B\u30EA\u30F3\u30AF\u304C\u306A\u3044\u5834\u5408\u3001\u76F4\u5217\u5316\u3055\u308C\u305F\u30AF\u30E9\u30B9\u306B\u79FB\u52D5\u3057\u3066\u3001\u30AF\u30E9\u30B9\u8A18\u8FF0\u306E\u300C\u95A2\u9023\u9805\u76EE\u300D\u30BB\u30AF\u30B7\u30E7\u30F3\u306B\u3042\u308B\u300C\u76F4\u5217\u5316\u3055\u308C\u305F\u5F62\u5F0F\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3053\u3068\u306B\u3088\u308A\u3001\u3053\u306E\u60C5\u5831\u3092\u8868\u793A\u3067\u304D\u307E\u3059\u3002
doclet.help.constants.body={0}\u30DA\u30FC\u30B8\u306B\u306F\u3001static final\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u305D\u306E\u5024\u306E\u30EA\u30B9\u30C8\u304C\u3042\u308A\u307E\u3059\u3002
doclet.help.footnote=\u3053\u306E\u30D8\u30EB\u30D7\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u6A19\u6E96doclet\u306B\u3088\u3063\u3066\u751F\u6210\u3055\u308C\u305FAPI\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u9069\u7528\u3055\u308C\u307E\u3059\u3002
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties Thu Jan 10 13:13:56 2019 -0500
@@ -93,6 +93,7 @@
doclet.Interfaces=\u63A5\u53E3
doclet.Enclosing_Class=\u5C01\u95ED\u7C7B:
doclet.Enclosing_Interface=\u5C01\u95ED\u63A5\u53E3:
+doclet.System_Property=\u7CFB\u7EDF\u5C5E\u6027
doclet.Window_Source_title=\u6E90\u4EE3\u7801
doclet.Window_Help_title=API \u5E2E\u52A9
@@ -122,7 +123,6 @@
doclet.help.index.body={0} \u5305\u542B\u6240\u6709\u7C7B\u3001\u63A5\u53E3\u3001\u6784\u9020\u5668\u3001\u65B9\u6CD5\u548C\u5B57\u6BB5\u7684\u6309\u5B57\u6BCD\u987A\u5E8F\u6392\u5217\u7684\u7D22\u5F15\uFF0C\u4EE5\u53CA\u6240\u6709\u7A0B\u5E8F\u5305\u548C\u6240\u6709\u7C7B\u7684\u5217\u8868\u3002
doclet.help.frames.head=\u6846\u67B6/\u65E0\u6846\u67B6
doclet.help.frames.body=\u8FD9\u4E9B\u94FE\u63A5\u7528\u4E8E\u663E\u793A\u548C\u9690\u85CF HTML \u6846\u67B6\u3002\u6240\u6709\u9875\u9762\u5747\u5177\u6709\u6709\u6846\u67B6\u548C\u65E0\u6846\u67B6\u4E24\u79CD\u663E\u793A\u65B9\u5F0F\u3002
-doclet.help.all_classes.body={0}\u94FE\u63A5\u663E\u793A\u6240\u6709\u7C7B\u548C\u63A5\u53E3 (\u9664\u4E86\u975E\u9759\u6001\u5D4C\u5957\u7C7B\u578B)\u3002
doclet.help.serial_form.body=\u6BCF\u4E2A\u53EF\u5E8F\u5217\u5316\u6216\u53EF\u5916\u90E8\u5316\u7684\u7C7B\u90FD\u6709\u5176\u5E8F\u5217\u5316\u5B57\u6BB5\u548C\u65B9\u6CD5\u7684\u8BF4\u660E\u3002\u6B64\u4FE1\u606F\u5BF9\u91CD\u65B0\u5B9E\u73B0\u8005\u6709\u7528, \u800C\u5BF9\u4F7F\u7528 API \u7684\u5F00\u53D1\u8005\u5219\u6CA1\u6709\u4EC0\u4E48\u7528\u5904\u3002\u5C3D\u7BA1\u5BFC\u822A\u680F\u4E2D\u6CA1\u6709\u94FE\u63A5, \u4F46\u60A8\u53EF\u4EE5\u901A\u8FC7\u4E0B\u5217\u65B9\u5F0F\u83B7\u53D6\u6B64\u4FE1\u606F: \u8F6C\u81F3\u4EFB\u4F55\u5E8F\u5217\u5316\u7C7B, \u7136\u540E\u5355\u51FB\u7C7B\u8BF4\u660E\u7684 "\u53E6\u8BF7\u53C2\u9605" \u90E8\u5206\u4E2D\u7684 "\u5E8F\u5217\u5316\u8868\u683C"\u3002
doclet.help.constants.body={0}\u9875\u9762\u5217\u51FA\u4E86\u9759\u6001\u6700\u7EC8\u5B57\u6BB5\u53CA\u5176\u503C\u3002
doclet.help.footnote=\u6B64\u5E2E\u52A9\u6587\u4EF6\u9002\u7528\u4E8E\u7531\u6807\u51C6 doclet \u751F\u6210\u7684 API \u6587\u6863\u3002
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties Thu Jan 10 13:13:56 2019 -0500
@@ -104,7 +104,7 @@
doclet.Constructor_Summary=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u6982\u8981
doclet.Method_Summary=\u30E1\u30BD\u30C3\u30C9\u306E\u6982\u8981
doclet.Interfaces=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
-doclet.Enums=\u5217\u6319\u578B
+doclet.Enums=\u5217\u6319
doclet.AnnotationTypes=\u6CE8\u91C8\u578B
doclet.Exceptions=\u4F8B\u5916
doclet.Errors=\u30A8\u30E9\u30FC
@@ -122,7 +122,7 @@
doclet.AnnotationType=\u6CE8\u91C8\u578B
doclet.annotationtype=\u6CE8\u91C8\u578B
doclet.annotationtypes=\u6CE8\u91C8\u578B
-doclet.Enum=\u5217\u6319\u578B
+doclet.Enum=\u5217\u6319
doclet.enum=\u5217\u6319
doclet.enums=\u5217\u6319
doclet.interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9
@@ -211,13 +211,15 @@
doclet.Annotation_Type_Required_Member=\u5FC5\u9808\u8981\u7D20
doclet.Annotation_Type_Member=\u6CE8\u91C8\u578B\u8981\u7D20
doclet.Enum_Constant=\u5217\u6319\u578B\u5B9A\u6570
-doclet.Class=\u30AF\u30E9\u30B9
doclet.Description=\u8AAC\u660E
doclet.ConstantField=\u5B9A\u6570\u30D5\u30A3\u30FC\u30EB\u30C9
doclet.Value=\u5024
+doclet.linkMismatch_PackagedLinkedtoModule=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5316\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u30B3\u30FC\u30C9\u3067\u306F\u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001{0}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u306F\u540D\u524D\u306E\u3042\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u3082\u306E\u3067\u3059\u3002
+doclet.linkMismatch_ModuleLinkedtoPackage=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5316\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u30B3\u30FC\u30C9\u3067\u306F\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001{0}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u306F\u540D\u524D\u306E\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u3082\u306E\u3067\u3059\u3002
+doclet.urlRedirected=URL {0}\u306F{1}\u306B\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u3055\u308C\u307E\u3057\u305F -- \u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u66F4\u65B0\u3057\u3066\u3053\u306E\u8B66\u544A\u3092\u8868\u793A\u3057\u306A\u3044\u3088\u3046\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002
#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>
+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\n\u8FD4\u3057\u307E\u3059\u3002
doclet.enum_values_doc.return=\u3053\u306E\u5217\u6319\u578B\u306E\u5B9A\u6570\u3092\u542B\u3080\u3001\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u9806\u5E8F\u3067\u306E\u914D\u5217
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties Thu Jan 10 13:13:56 2019 -0500
@@ -211,13 +211,15 @@
doclet.Annotation_Type_Required_Member=\u5FC5\u9700\u7684\u5143\u7D20
doclet.Annotation_Type_Member=\u6CE8\u91CA\u7C7B\u578B\u5143\u7D20
doclet.Enum_Constant=\u679A\u4E3E\u5E38\u91CF
-doclet.Class=\u7C7B
doclet.Description=\u8BF4\u660E
doclet.ConstantField=\u5E38\u91CF\u5B57\u6BB5
doclet.Value=\u503C
+doclet.linkMismatch_PackagedLinkedtoModule=\u8FDB\u884C\u6587\u6863\u5316\u7684\u4EE3\u7801\u4F7F\u7528\u4E86\u672A\u547D\u540D\u6A21\u5757\u4E2D\u7684\u7A0B\u5E8F\u5305\uFF0C\u4F46\u5728 {0} \u4E2D\u5B9A\u4E49\u7684\u7A0B\u5E8F\u5305\u5728\u547D\u540D\u6A21\u5757\u4E2D\u3002
+doclet.linkMismatch_ModuleLinkedtoPackage=\u8FDB\u884C\u6587\u6863\u5316\u7684\u4EE3\u7801\u4F7F\u7528\u4E86\u6A21\u5757\uFF0C\u4F46\u5728 {0} \u4E2D\u5B9A\u4E49\u7684\u7A0B\u5E8F\u5305\u5728\u672A\u547D\u540D\u6A21\u5757\u4E2D\u3002
+doclet.urlRedirected=URL {0} \u5DF2\u91CD\u5B9A\u5411\u5230 {1} \u2014 \u66F4\u65B0\u547D\u4EE4\u884C\u9009\u9879\u4EE5\u9690\u85CF\u6B64\u8B66\u544A\u3002
#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>
+doclet.enum_values_doc.fullbody=\u6309\u7167\u58F0\u660E\u8BE5\u679A\u4E3E\u7C7B\u578B\u7684\u5E38\u91CF\u7684\u987A\u5E8F, \n\u8FD4\u56DE\u4E00\u4E2A\u5305\u542B\u8FD9\u4E9B\u5E38\u91CF\u7684\u6570\u7EC4\u3002
doclet.enum_values_doc.return=\u6309\u7167\u58F0\u660E\u8BE5\u679A\u4E3E\u7C7B\u578B\u7684\u5E38\u91CF\u7684\u987A\u5E8F\u8FD4\u56DE\u7684\u5305\u542B\u8FD9\u4E9B\u5E38\u91CF\u7684\u6570\u7EC4
--- a/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_ja.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_ja.properties Thu Jan 10 13:13:56 2019 -0500
@@ -20,6 +20,10 @@
main.opt.require=\ --require <module-name> \u6307\u5B9A\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u540D\u306B\u4E00\u81F4\u3059\u308B\u4F9D\u5B58\u6027\u3092\u691C\u51FA\u3057\u307E\u3059\n (\u8907\u6570\u56DE\u6307\u5B9A\u53EF\u80FD)\u3002--package\u3001\n --regex\u3001--require\u306F\u76F8\u4E92\u306B\u6392\u4ED6\u7684\u3067\u3059\u3002
+main.opt.missing-deps=\ --missing-deps \u6B20\u843D\u3057\u3066\u3044\u308B\u4F9D\u5B58\u6027\u3092\u691C\u51FA\u3057\u307E\u3059\u3002 \u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\n -p\u3001-e\u304A\u3088\u3073-s\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
+
+main.opt.ignore-missing-deps=\ --ignore-missing-deps \u6B20\u843D\u3057\u3066\u3044\u308B\u4F9D\u5B58\u6027\u3092\u7121\u8996\u3057\u307E\u3059\u3002
+
main.opt.include=\n\u5206\u6790\u5BFE\u8C61\u30AF\u30E9\u30B9\u3092\u30D5\u30A3\u30EB\u30BF\u3059\u308B\u30AA\u30D7\u30B7\u30E7\u30F3:\n -include <regex> \u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3059\u308B\u30AF\u30E9\u30B9\u306B\u5206\u6790\u3092\u5236\u9650\u3057\u307E\u3059\n \u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u5206\u6790\u5BFE\u8C61\u30AF\u30E9\u30B9\u306E\n \u30EA\u30B9\u30C8\u304C\u30D5\u30A3\u30EB\u30BF\u3055\u308C\u307E\u3059\u3002\u30D1\u30BF\u30FC\u30F3\u3092\u4F9D\u5B58\u6027\u306B\n \u9069\u7528\u3059\u308B-p\u304A\u3088\u3073-e\u3068\u4E00\u7DD2\u306B\u4F7F\u7528\u3067\u304D\u307E\u3059
main.opt.P=\ -P -profile \u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u542B\u3080\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u3092\u8868\u793A\u3057\u307E\u3059
@@ -34,9 +38,11 @@
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.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.R=\ -R\n --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
+main.opt.no-recursive=\ --no-recursive \u4F9D\u5B58\u6027\u3092\u518D\u5E30\u7684\u306B\u30C8\u30E9\u30D0\u30FC\u30B9\u3057\u307E\u305B\u3093\u3002
+
+main.opt.I=\ -I\n --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
main.opt.compile-time=\ --compile-time \u63A8\u79FB\u7684\u306A\u4F9D\u5B58\u6027\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u6642\u306E\u8868\u793A\n \u4F8B: -R\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u6642\u306E\u8868\u793A\u3002\n \u4ED6\u306E\u6307\u5B9A\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3054\u3068\u306B\u4F9D\u5B58\u6027\u3092\u5206\u6790\u3057\u307E\u3059\n \u4F9D\u5B58\u6027\u304C\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001JAR\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u3089\n \u691C\u51FA\u3055\u308C\u305F\u5834\u5408\u3001\u305D\u306E\u5305\u542B\u3059\u308B\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\n \u3059\u3079\u3066\u306E\u30AF\u30E9\u30B9\u304C\u5206\u6790\u3055\u308C\u307E\u3059\u3002
@@ -54,7 +60,7 @@
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 \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-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\u306E\u5185\u90E8API\u30D1\u30C3\u30B1\u30FC\u30B8\u3082\u51FA\u529B\u3057\u307E\u3059\u3002\n \u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u53C2\u7167\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30AF\u30E9\u30B9\u30D1\u30B9\u3068\n \u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u63A8\u79FB\u7684\u306B\u5206\u6790\u3057\u307E\u3059\u3002\n \u975E\u63A8\u79FB\u7684\u306A\u4F9D\u5B58\u6027\u306E\u5206\u6790\u306B\u306F\u3001--no-recursive\u30AA\u30D7\u30B7\u30E7\u30F3\n \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\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
@@ -86,6 +92,8 @@
err.multirelease.option.notfound={0}\u306F\u30DE\u30EB\u30C1\u30EA\u30EA\u30FC\u30B9jar\u30D5\u30A1\u30A4\u30EB\u3067\u3059\u304C--multi-release\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
err.multirelease.version.associated=\u30AF\u30E9\u30B9{0}\u306F\u3059\u3067\u306B\u30D0\u30FC\u30B8\u30E7\u30F3{1}\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u3059\u3002\u30D0\u30FC\u30B8\u30E7\u30F3{2}\u306E\u8FFD\u52A0\u3092\u8A66\u307F\u307E\u3059
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}
+err.cant.list.module.deps=\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9\u3068\u30AF\u30E9\u30B9\u30D1\u30B9\u304B\u3089\u306E\u4F9D\u5B58\u6027\u304C\u6B20\u843D\u3057\u3066\u3044\u307E\u3059\u3002\n\u3053\u306E\u30A8\u30E9\u30FC\u3092\u6291\u6B62\u3059\u308B\u306B\u306F\u3001--ignore-missing-deps\u3092\u4F7F\u7528\u3057\u3066\u7D9A\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+
warn.invalid.arg=\u30D1\u30B9\u304C\u5B58\u5728\u3057\u307E\u305B\u3093: {0}
warn.skipped.entry={0}
warn.split.package=\u5206\u5272\u30D1\u30C3\u30B1\u30FC\u30B8: {0} {1}
--- a/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_zh_CN.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_zh_CN.properties Thu Jan 10 13:13:56 2019 -0500
@@ -20,6 +20,10 @@
main.opt.require=\ --require <\u6A21\u5757\u540D\u79F0> \u67E5\u627E\u4E0E\u7ED9\u5B9A\u6A21\u5757\u540D\u79F0\u5339\u914D\u7684\n \u88AB\u4F9D\u8D56\u5BF9\u8C61 (\u53EF\u591A\u6B21\u6307\u5B9A)\u3002--package,\n --regex, --requires \u662F\u4E92\u65A5\u7684\u3002
+main.opt.missing-deps=\ --missing-deps \u67E5\u627E\u7F3A\u5C11\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002\u6B64\u9009\u9879\n \u4E0D\u80FD\u4E0E -p\u3001-e \u548C -s \u9009\u9879\u4E00\u8D77\u4F7F\u7528\u3002
+
+main.opt.ignore-missing-deps=\ --ignore-missing-deps \u5FFD\u7565\u7F3A\u5C11\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002
+
main.opt.include=\n\u7528\u4E8E\u7B5B\u9009\u8981\u5206\u6790\u7684\u7C7B\u7684\u9009\u9879:\n -include <\u6B63\u5219\u8868\u8FBE\u5F0F> \u5C06\u5206\u6790\u9650\u5236\u4E3A\u4E0E\u6A21\u5F0F\u5339\u914D\u7684\u7C7B\n \u6B64\u9009\u9879\u7B5B\u9009\u8981\u5206\u6790\u7684\u7C7B\u7684\u5217\u8868\u3002\n \u5B83\u53EF\u4EE5\u4E0E\u5411\u88AB\u4F9D\u8D56\u5BF9\u8C61\u5E94\u7528\u6A21\u5F0F\u7684\n -p \u548C -e \u7ED3\u5408\u4F7F\u7528
main.opt.P=\ -P -profile \u663E\u793A\u5305\u542B\u7A0B\u5E8F\u5305\u7684\u914D\u7F6E\u6587\u4EF6
@@ -34,9 +38,11 @@
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.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.R=\ -R\n --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\u6307\u5B9A\u4E86 -p\u3001\n -e\u3001-f \u9009\u9879\uFF0C\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
+main.opt.no-recursive=\ --no-recursive \u4E0D\u9012\u5F52\u904D\u5386\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002
+
+main.opt.I=\ -I\n --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
main.opt.compile-time=\ --compile-time \u8FC7\u6E21\u88AB\u4F9D\u8D56\u5BF9\u8C61\u7684\u7F16\u8BD1\u65F6\u89C6\u56FE,\n \u4F8B\u5982 -R \u9009\u9879\u7684\u7F16\u8BD1\u65F6\u89C6\u56FE\u3002\n \u6839\u636E\u5176\u4ED6\u6307\u5B9A\u9009\u9879\u5206\u6790\u88AB\u4F9D\u8D56\u5BF9\u8C61\n \u5982\u679C\u4ECE\u76EE\u5F55, JAR \u6587\u4EF6\u6216\u6A21\u5757\u4E2D\n \u627E\u5230\u88AB\u4F9D\u8D56\u5BF9\u8C61, \u5219\u5C06\u5206\u6790\n \u8BE5\u6240\u5728\u6863\u6848\u4E2D\u7684\u6240\u6709\u7C7B\u3002
@@ -54,7 +60,7 @@
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\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-deps=\ --list-deps \u5217\u51FA\u6A21\u5757\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002\u5B83\u8FD8\u4F1A\n \u8F93\u51FA\u5185\u90E8 API \u7A0B\u5E8F\u5305\uFF08\u5982\u679C\u5F15\u7528\uFF09\u3002\n \u6B64\u9009\u9879\u4F20\u9012\u5206\u6790\u7C7B\u8DEF\u5F84\u548C\u6A21\u5757\u8DEF\u5F84\n \u4E0A\u7684\u5E93\uFF08\u5982\u679C\u5F15\u7528\uFF09\u3002\n \u5C06 --no-recursive \u9009\u9879\u7528\u4E8E\n \u88AB\u4F9D\u8D56\u5BF9\u8C61\u7684\u975E\u4F20\u9012\u5206\u6790\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
@@ -86,6 +92,8 @@
err.multirelease.option.notfound={0} \u662F\u591A\u53D1\u884C\u7248 jar \u6587\u4EF6, \u4F46\u672A\u8BBE\u7F6E --multi-release \u9009\u9879
err.multirelease.version.associated=\u7C7B {0} \u5DF2\u4E0E\u7248\u672C {1} \u5173\u8054, \u6B63\u5728\u5C1D\u8BD5\u6DFB\u52A0\u7248\u672C {2}
err.multirelease.jar.malformed=\u683C\u5F0F\u9519\u8BEF\u7684\u591A\u53D1\u884C\u7248 jar, {0}, \u9519\u8BEF\u6761\u76EE: {1}
+err.cant.list.module.deps=\u6A21\u5757\u8DEF\u5F84\u548C\u7C7B\u8DEF\u5F84\u4E2D\u7F3A\u5C11\u88AB\u4F9D\u8D56\u5BF9\u8C61\u3002\n\u8981\u9690\u85CF\u6B64\u9519\u8BEF\uFF0C\u8BF7\u4F7F\u7528 --ignore-missing-deps \u7EE7\u7EED\u3002
+
warn.invalid.arg=\u8DEF\u5F84\u4E0D\u5B58\u5728: {0}
warn.skipped.entry={0}
warn.split.package=\u62C6\u5206\u7A0B\u5E8F\u5305: {0} {1}
--- a/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/ConsoleIOContext.java Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/ConsoleIOContext.java Thu Jan 10 13:13:56 2019 -0500
@@ -59,6 +59,7 @@
import jdk.internal.org.jline.keymap.KeyMap;
import jdk.internal.org.jline.reader.Binding;
import jdk.internal.org.jline.reader.EOFError;
+import jdk.internal.org.jline.reader.EndOfFileException;
import jdk.internal.org.jline.reader.History;
import jdk.internal.org.jline.reader.LineReader;
import jdk.internal.org.jline.reader.LineReader.Option;
@@ -200,6 +201,8 @@
return in.readLine(firstLinePrompt);
} catch (UserInterruptException ex) {
throw (InputInterruptedException) new InputInterruptedException().initCause(ex);
+ } catch (EndOfFileException ex) {
+ return null;
}
}
@@ -1212,6 +1215,7 @@
while ((r = input.read()) != (-1)) {
processInputByte(r);
}
+ slaveInput.close();
} catch (IOException ex) {
throw new IllegalStateException(ex);
}
--- a/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_ja.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_ja.properties Thu Jan 10 13:13:56 2019 -0500
@@ -171,11 +171,11 @@
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
+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\u304C[Shift]+[Tab] m\u306B\u5148\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\u304C[Shift]+[Tab] m\u306B\u5148\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\u304C[Shift]+[Tab] m\u306B\u5148\u884C\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-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
+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 --enable-preview \u30B3\u30FC\u30C9\u3092\u3053\u306E\u30EA\u30EA\u30FC\u30B9\u306E\u30D7\u30EC\u30D3\u30E5\u30FC\u6A5F\u80FD\u306B\u4F9D\u5B58\u3055\u305B\u308B\u3053\u3068\u304C\u3067\u304D\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, -?, -h \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\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\nload-file\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\n\u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3(--class-path\u3001--module-path\u3001--add-modules)\u306E\n\u8A73\u7D30\u306F\u3001\u6B21\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044:\n\t/help context\n\n\u30D1\u30B9\u306B\u306F\u3001\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3068\u30A2\u30FC\u30AB\u30A4\u30D6\u304C\u30EA\u30B9\u30C8\u3055\u308C\u307E\u3059\u3002Windows\u306E\u5834\u5408\u306F\u3001\n\u30BB\u30DF\u30B3\u30ED\u30F3(;)\u3092\u4F7F\u7528\u3057\u3066\u30D1\u30B9\u306E\u9805\u76EE\u3092\u533A\u5207\u308A\u307E\u3059\u3002\u305D\u306E\u4ED6\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u306F\u3001\n\u30B3\u30ED\u30F3(:)\u3092\u4F7F\u7528\u3057\u3066\u9805\u76EE\u3092\u533A\u5207\u308A\u307E\u3059\u3002\n
@@ -268,8 +268,13 @@
help.intro.summary = jshell\u30C4\u30FC\u30EB\u306E\u6982\u8981
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\u30C4\u30FC\u30EB\u30FB\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.keys.summary = readline\u306B\u4F3C\u305F\u5165\u529B\u7DE8\u96C6\u306E\u8AAC\u660E
+help.keys =jshell\u30C4\u30FC\u30EB\u3067\u306F\u884C\u7DE8\u96C6\u30B5\u30DD\u30FC\u30C8\u3092\u63D0\u4F9B\u3057\u3066\u304A\u308A\u3001\u30B9\u30CB\u30DA\u30C3\u30C8\u304A\u3088\u3073\u30B3\u30DE\u30F3\u30C9\n\u5185\u3092\u30CA\u30D3\u30B2\u30FC\u30C8\u3057\u3066\u7DE8\u96C6\u3067\u304D\u307E\u3059\u3002\u73FE\u5728\u306E\u30B3\u30DE\u30F3\u30C9/\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u7DE8\u96C6\u3057\u305F\u308A\u3001\n\u904E\u53BB\u306E\u30B3\u30DE\u30F3\u30C9/\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u5C65\u6B74\u304B\u3089\u53D6\u5F97\u3057\u3066\u7DE8\u96C6\u304A\u3088\u3073\u5B9F\u884C\u3067\u304D\u307E\u3059\u3002\n\u3053\u306E\u30B5\u30DD\u30FC\u30C8\u306F\u3001Emacs\u306E\u3088\u3046\u306A\u5358\u7D14\u306A\u30D0\u30A4\u30F3\u30C7\u30A3\u30F3\u30B0\u3092\u4F7F\u7528\u3057\u305Freadline/editline\u306B\u4F3C\u3066\u3044\u307E\u3059\u3002\njshell\u30C4\u30FC\u30EB\u56FA\u6709\u306E\u30AD\u30FC\u30FB\u30B7\u30FC\u30B1\u30F3\u30B9\u3082\u3042\u308A\u307E\u3059\u3002\n\n\u884C\u3068\u5C65\u6B74\u306E\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3:\n\n\t[Return]\n\t\t\u73FE\u5728\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u5165\u529B\u3057\u307E\u3059\n\t[\u2190]\u307E\u305F\u306F[Ctrl]+[B]\n\t\t1\u6587\u5B57\u524D\u306B\u623B\u308A\u307E\u3059\n\t[\u2192]\u307E\u305F\u306F[Ctrl]+[F]\n\t\t1\u6587\u5B57\u5148\u306B\u9032\u307F\u307E\u3059\n\t[\u2191]\u307E\u305F\u306F[Ctrl]+[P]\n\t\t\u5C65\u6B74\u30921\u884C\u524D(\u4E0A)\u306B\u623B\u308A\u307E\u3059\n\t[\u2193]\u307E\u305F\u306F[Ctrl]+[N]\n\t\t\u5C65\u6B74\u30921\u884C\u5148(\u4E0B)\u306B\u9032\u307F\u307E\u3059\n\t[Ctrl]+[A]\n\t\t\u884C\u306E\u5148\u982D\u306B\u79FB\u52D5\u3057\u307E\u3059\n\t[Ctrl]+[E]\n\t\t\u884C\u306E\u672B\u5C3E\u306B\u79FB\u52D5\u3057\u307E\u3059\n\t[Meta]+[B]\n\t\t1\u5358\u8A9E\u524D\u306B\u623B\u308A\u307E\u3059\n\t[Meta]+[F]\n\t\t1\u5358\u8A9E\u5148\u306B\u9032\u307F\u307E\u3059\n\t[Ctrl]+[R]\n\t\t\u5C65\u6B74\u3092\u524D\u306B\u623B\u3063\u3066\u691C\u7D22\u3057\u307E\u3059\n\n\n\u884C\u3068\u5C65\u6B74\u306E\u57FA\u672C\u7DE8\u96C6:\n\n\t[Meta]+[Return]\u307E\u305F\u306F[Ctrl]+[Return] (\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306B\u4F9D\u5B58\u3057\u307E\u3059)\n\t\t\u30B9\u30CB\u30DA\u30C3\u30C8\u306B\u65B0\u898F\u884C\u3092\u633F\u5165\u3057\u307E\u3059\n\t[Ctrl]+[_] \
+(\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2\u306F[Shift]\u30AD\u30FC\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059)\u307E\u305F\u306F[Ctrl]+[X]\u3092\u62BC\u3057\u3066\u304B\u3089[Ctrl]+[U]\n\t\t\u7DE8\u96C6\u3092\u5143\u306B\u623B\u3057\u307E\u3059(\u7E70\u308A\u8FD4\u3059\u3068\u3055\u3089\u306B\u7DE8\u96C6\u3092\u5143\u306B\u623B\u3059\u3053\u3068\u304C\u3067\u304D\u307E\u3059)\n\t[Delete]\n\t\t\u30AB\u30FC\u30BD\u30EB\u306E\u4F4D\u7F6E\u307E\u305F\u306F\u305D\u306E\u5F8C\u306B\u3042\u308B\u6587\u5B57\u3092\u524A\u9664\u3057\u307E\u3059(\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30FB\u30B7\u30B9\u30C6\u30E0\u306B\u4F9D\u5B58\u3057\u307E\u3059)\n\t[Backspace]\n\t\t\u30AB\u30FC\u30BD\u30EB\u306E\u524D\u306B\u3042\u308B\u6587\u5B57\u3092\u524A\u9664\u3057\u307E\u3059\n\t[Ctrl]+[K]\n\t\t\u30AB\u30FC\u30BD\u30EB\u306E\u4F4D\u7F6E\u304B\u3089\u884C\u306E\u672B\u5C3E\u307E\u3067\u306E\u30C6\u30AD\u30B9\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\n\t[Meta]+[D]\n\t\t\u30AB\u30FC\u30BD\u30EB\u306E\u4F4D\u7F6E\u304B\u3089\u5358\u8A9E\u306E\u672B\u5C3E\u307E\u3067\u306E\u30C6\u30AD\u30B9\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\n\t[Ctrl]+[W]\n\t\t\u30AB\u30FC\u30BD\u30EB\u306E\u4F4D\u7F6E\u304B\u3089\u524D\u306E\u7A7A\u767D\u307E\u3067\u306E\u30C6\u30AD\u30B9\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\n\t[Ctrl]+[Y]\n\t\t\u6700\u5F8C\u306B\u524A\u9664\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u3092\u884C\u306B\u8CBC\u308A\u4ED8\u3051\u307E\u3059\n\t[Meta]+[Y]\n\t\t[Ctrl]+[Y]\u306E\u5F8C\u3067[Meta]+[Y]\u3092\u62BC\u3059\u3068\u3001\u904E\u53BB\u306B\u524A\u9664\u3057\u305F\u30C6\u30AD\u30B9\u30C8\u304C\u30B5\u30A4\u30AF\u30EB\u8868\u793A\u3055\u308C\u307E\u3059\n\t[Ctrl]+[X]\u3092\u62BC\u3057\u3066\u304B\u3089[Ctrl]+[K]\n\t\t\u30B9\u30CB\u30DA\u30C3\u30C8\u5168\u4F53\u3092\u524A\u9664\u3057\u307E\u3059\n\n\njshell\u30C4\u30FC\u30EB\u306E\u30B7\u30E7\u30FC\u30C8\u30AB\u30C3\u30C8:\n\n\t\u8A73\u7D30\u306F\u3001/help \
+shortcuts\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\n\n\t[Tab]\n\t\tJava\u8B58\u5225\u5B50\u307E\u305F\u306Fjshell\u30B3\u30DE\u30F3\u30C9\u3092\u5B8C\u4E86\u3057\u307E\u3059\n\t[Shift]+[Tab]\u3092\u62BC\u3057\u3066\u304B\u3089[v]\n\t\t\u5F0F\u3092\u5909\u6570\u5BA3\u8A00\u306B\u5909\u63DB\u3057\u307E\u3059\n\t[Shift]+[Tab]\u3092\u62BC\u3057\u3066\u304B\u3089[m]\n\t\t\u6587\u3092\u30E1\u30BD\u30C3\u30C9\u5BA3\u8A00\u306B\u5909\u63DB\u3057\u307E\u3059\n\t[Shift]+[Tab]\u3092\u62BC\u3057\u3066\u304B\u3089[i]\n\t\t\u3053\u306E\u8B58\u5225\u5B50\u306B\u30A4\u30F3\u30DD\u30FC\u30C8\u3092\u8FFD\u52A0\u3057\u307E\u3059\n\t\n\n\u884C\u3068\u5C65\u6B74\u306E\u62E1\u5F35\u7DE8\u96C6:\n\n\t[Ctrl]+[L]\n\t\t\u753B\u9762\u3092\u30AF\u30EA\u30A2\u3057\u3066\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u51FA\u529B\u3057\u307E\u3059\n\t[Ctrl]+[U]\n\t\t\u884C\u5168\u4F53\u3092\u5F37\u5236\u7D42\u4E86\u3057\u307E\u3059\n\t[Ctrl]+[T]\n\t\t\u6587\u5B57\u3092\u7F6E\u63DB\u3057\u307E\u3059\n\t[Ctrl]+[X]\u3092\u62BC\u3057\u3066\u304B\u3089[Ctrl]+[B]\n\t\t\u4E00\u81F4\u3059\u308B\u5927\u30AB\u30C3\u30B3\u3001\u4E38\u30AB\u30C3\u30B3\u3001...\u306B\u79FB\u52D5\u3057\u307E\u3059\n\t[Ctrl]+[X]\u3092\u62BC\u3057\u3066\u304B\u3089[=]\n\t\t\u73FE\u884C\u6587\u5B57\u4F4D\u7F6E\u8868\u793A\u30E2\u30FC\u30C9\u306B\u5165\u308A\u307E\u3059\n\t[Ctrl]+[X]\u3092\u62BC\u3057\u3066\u304B\u3089[Ctrl]+[O]\n\t\t\u6587\u5B57\u306E\u4E0A\u66F8\u304D\u3068\u6587\u5B57\u306E\u633F\u5165\u3092\u5207\u308A\u66FF\u3048\u307E\u3059\n\t[Meta]+[C]\n\t\t\u5358\u8A9E\u306E\u5148\u982D\u3092\u5927\u6587\u5B57\u306B\u3057\u307E\u3059\n\t[Meta]+[U]\n\t\t\u5358\u8A9E\u3092\u5927\u6587\u5B57\u306B\u5909\u63DB\u3057\u307E\u3059\n\t[Meta]+[L]\n\t\t\u5358\u8A9E\u3092\u5C0F\u6587\u5B57\u306B\u5909\u63DB\u3057\u307E\u3059\n\t[Meta]+[0]\u304B\u3089[Meta]+[9]\u3092\u62BC\u3057\u3066\u304B\u3089\u30AD\u30FC\n\t\t\u6307\u5B9A\u3057\u305F\u56DE\u6570\u7E70\u308A\u8FD4\u3057\u307E\u3059\n\n\u305F\u3068\u3048\u3070\u3001[Ctrl]+[A]\u306F\u3001[Ctrl]\u30AD\u30FC\u3092\u62BC\u3057\u306A\u304C\u3089[A]\u3092\u62BC\u3059\u3068\u3044\u3046\u610F\u5473\u3067\u3059\u3002\n[Meta]\u306F\u3001\u591A\u304F\u306E\u30AD\u30FC\u30DC\u30FC\u30C9\u3067[Alt]\u3067\u3059\u3002\n\u884C\u7DE8\u96C6\u30B5\u30DD\u30FC\u30C8\u306F\u3001JLine 3\u304B\u3089\u6D3E\u751F\u3057\u3066\u3044\u307E\u3059\u3002
+
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\u30C4\u30FC\u30EB\u30FB\u30B3\u30DE\u30F3\u30C9\u3001\u5834\u5408\u306B\u3088\u3063\u3066\u306F\n\t\tjshell\u30C4\u30FC\u30EB\u30FB\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\u9069\u5207\u306A\u3082\u306E\u304C\u3042\u308B\u5834\u5408\u306F\u3001\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\u5F0F\u304C\u3001\u305D\u306E\u5F0F\u306E\u30BF\u30A4\u30D7\u306B\u57FA\u3065\u304F\u30BF\u30A4\u30D7\u3092\u6301\u3064\u3001\u5909\u6570\u306E\u5BA3\u8A00\u306B\n\t\t\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\u5024\u306E\u30BF\u30A4\u30D7\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\u30C4\u30FC\u30EB\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\t[Tab]\n\t\tJava\u8B58\u5225\u5B50\u3001jshell\u30C4\u30FC\u30EB\u30FB\u30B3\u30DE\u30F3\u30C9\u3001\u5834\u5408\u306B\u3088\u3063\u3066\u306F\n\t\tjshell\u30C4\u30FC\u30EB\u30FB\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\n\t\t\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\t\t\u3082\u30461\u56DE[Tab]\u3092\u62BC\u3059\u3068\u3001\u9069\u5207\u306A\u3082\u306E\u304C\u3042\u308B\u5834\u5408\u306F\u3001\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\n\n\t[Shift]+[Tab]\u3092\u62BC\u3057\u3066\u304B\u3089[v]\n\t\t\u5B8C\u5168\u306A\u5F0F\u306E\u5F8C\u306B\u3001[Shift]\u30AD\u30FC\u3092\u62BC\u3057\u306A\u304C\u3089[Tab]\u30AD\u30FC\u3092\u62BC\u3057\u3001\n\t\t\u6B21\u306B\u96E2\u3057\u3066[v]\u30AD\u30FC\u3092\u62BC\u3059\u3068\u3001\u5F0F\u304C\u3001\n\t\t\u305D\u306E\u5F0F\u306E\u30BF\u30A4\u30D7\u306B\u57FA\u3065\u304F\u30BF\u30A4\u30D7\u3092\u6301\u3064\n\t\t\u5909\u6570\u5BA3\u8A00\u306B\u5909\u63DB\u3055\u308C\u307E\u3059\u3002\n\n\t[Shift]+[Tab]\u3092\u62BC\u3057\u3066\u304B\u3089[m]\n\t\t\u5B8C\u5168\u306A\u5F0F\u307E\u305F\u306F\u6587\u306E\u5F8C\u306B\u3001[Shift]\u30AD\u30FC\u3092\u62BC\u3057\u306A\u304C\u3089\n\t\t[Tab]\u30AD\u30FC\u3092\u62BC\u3057\u3001\u6B21\u306B\u96E2\u3057\u3066[m]\u30AD\u30FC\u3092\u62BC\u3059\u3068\u3001\n\t\t\u5F0F\u307E\u305F\u306F\u6587\u304C\u30E1\u30BD\u30C3\u30C9\u5BA3\u8A00\u306B\u5909\u63DB\u3055\u308C\u307E\u3059\u3002\n\t\t\u5F0F\u306E\u5834\u5408\u3001\u30E1\u30BD\u30C3\u30C9\u306E\u623B\u308A\u5024\u306E\u30BF\u30A4\u30D7\u306F\u3001\u5F0F\u306E\u30BF\u30A4\u30D7\u306B\n\t\t\u57FA\u3065\u304D\u307E\u3059\u3002\n\n\t[Shift]+[Tab]\u3092\u62BC\u3057\u3066\u304B\u3089[i]\n\t\t\u89E3\u6C7A\u3067\u304D\u306A\u3044\u8B58\u5225\u5B50\u306E\u5F8C\u306B\u3001[Shift]\u30AD\u30FC\u3092\u62BC\u3057\u306A\u304C\u3089\n\t\t[Tab]\u30AD\u30FC\u3092\u62BC\u3057\u3001\u6B21\u306B\u96E2\u3057\u3066[i]\u30AD\u30FC\u3092\u62BC\u3059\u3068\u3001\n\t\tjshell\u30C4\u30FC\u30EB\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\n\t\t\u8B58\u5225\u5B50\u304C\u89E3\u6C7A\u3055\u308C\u307E\u3059\u3002\u9069\u5207\u306A\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u5BFE\u5FDC\u3059\u308B\u6570\u5B57\u3092\u5165\u529B\u3057\u307E\u3059\u3002\n\t\t\u307E\u305F\u306F\u3001[0]\u30AD\u30FC\u3092\u62BC\u3059\u3068\u30A4\u30F3\u30DD\u30FC\u30C8\u306F\u8FFD\u52A0\u3055\u308C\u307E\u305B\u3093\u3002\n\n\u4ED6\u306E\u7279\u6B8A\u30AD\u30FC\u306E\u8A73\u7D30\u306F\u3001/help keys\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044
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 =\u3053\u308C\u3089\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u69CB\u6210\u3057\u307E\u3059\u3002\u3053\u308C\u3089\u306F\u3001jshell\u30C4\u30FC\u30EB\u306E\n\u8D77\u52D5\u6642\u306B\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u3001\u307E\u305F\u306Fjshell\u30C4\u30FC\u30EB\u304C\u30B3\u30DE\u30F3\u30C9/env\u3001/reload\u307E\u305F\u306F\n/reset\u3067\u518D\u8D77\u52D5\u3055\u308C\u308B\u3068\u304D\u306B\u30B3\u30DE\u30F3\u30C9\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u3057\u3066\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 <path>\n\t\t<path>\u306F\u3001\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001JAR\u30A2\u30FC\u30AB\u30A4\u30D6\u3001\n\t\tZIP\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u30EA\u30B9\u30C8\u3067\u3059\u3002\n\t\tWindows\u306E\u5834\u5408\u306F\u3001\u30BB\u30DF\u30B3\u30ED\u30F3(;)\u3092\u4F7F\u7528\u3057\u3066\u30D1\u30B9\u306E\u9805\u76EE\u3092\u533A\u5207\u308A\u307E\u3059\u3002\n\t\t\u305D\u306E\u4ED6\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u306F\u3001\u30B3\u30ED\u30F3(:)\u3092\u4F7F\u7528\u3057\u3066\u9805\u76EE\u3092\u533A\u5207\u308A\u307E\u3059\u3002\n\t--module-path <path>...\n\t\t<path>\u306F\u3001\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001JAR\u30A2\u30FC\u30AB\u30A4\u30D6\u3001\n\t\tZIP\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u30EA\u30B9\u30C8\u3067\u3059\u3002\n\t\tWindows\u306E\u5834\u5408\u306F\u3001\u30BB\u30DF\u30B3\u30ED\u30F3(;)\u3092\u4F7F\u7528\u3057\u3066\u30D1\u30B9\u306E\u9805\u76EE\u3092\u533A\u5207\u308A\u307E\u3059\u3002\n\t\t\u305D\u306E\u4ED6\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u306F\u3001\u30B3\u30ED\u30F3(:)\u3092\u4F7F\u7528\u3057\u3066\u9805\u76EE\u3092\u533A\u5207\u308A\u307E\u3059\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\u306FALL-DEFAULT\u3001ALL-SYSTEM\u3001\n\t\tALL-MODULE-PATH\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002\n\t--add-exports <module>/<package>=<target-module>(,<target-module>)*\n\t\t<module>\u3092\u66F4\u65B0\u3057\u3066\u3001\u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u306B\u95A2\u4FC2\u306A\u304F<package>\u3092<target-module>\n\t\t\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\u3092\n\t\t\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3067\u304D\u307E\u3059\u3002jshell\u3067\u306F\u3001<target-module>\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408(\u300C=\u300D\u306A\u3057)\n\t\tALL-UNNAMED\u304C\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002\n\n\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u5165\u529B\u3055\u308C\u308B\u304B\u4EE5\u524D\u306E/reset\u3001/env\u307E\u305F\u306F/reload\u30B3\u30DE\u30F3\u30C9\u3067\n\u6307\u5B9A\u3055\u308C\u305F\u8A55\u4FA1\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u8A2D\u5B9A\u3092\u4E0A\u66F8\u304D\u3059\u308B\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\n\u5165\u529B\u3055\u308C\u306A\u3044\u304B\u304E\u308A\u7DAD\u6301\u3055\u308C\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: \
@@ -279,7 +284,7 @@
help.id =\u5165\u529B\u3057\u305F\u30B3\u30FC\u30C9\u306E\u3059\u3079\u3066\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u306B\u56FA\u6709\u306E\u30B9\u30CB\u30DA\u30C3\u30C8ID\u304C\u3042\u308A\u307E\u3059\u3002\n\u540C\u3058\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u518D\u5EA6\u5165\u529B\u3057\u305F\u5834\u5408\u3067\u3082\u3001\u305D\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u306F\u65B0\u3057\u3044ID\u3092\u6301\u3061\u307E\u3059\u3002\n\u901A\u5E38\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\u5834\u5408\u3001ID\u306F\u5897\u52A0\u3059\u308B\u6570\u5024\u3067\u3059\u3002\u30A8\u30E9\u30FC\u3067\u5931\u6557\u3059\u308B\u30B9\u30CB\u30DA\u30C3\u30C8\u306E\n\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306F'e'\u3067\u59CB\u307E\u308A\u307E\u3059\u3002\u8D77\u52D5\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u306EID\u306F's'\u3067\u59CB\u307E\u308A\u307E\u3059\u3002\n\n\u30B9\u30CB\u30DA\u30C3\u30C8ID\u306F\u3001\u30B3\u30DE\u30F3\u30C9\u5185\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u53C2\u7167\u3059\u308B1\u3064\u306E\u65B9\u6CD5\u3067\u3059\u3002\u305F\u3068\u3048\u3070\u3001\n\u6B21\u306E\u30B3\u30DE\u30F3\u30C9\u306FID '14'\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\u3002\n\n\t/drop 14\n\n1\u3064\u307E\u305F\u306F\u8907\u6570\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u306EID\u3092\u8868\u793A\u3059\u308B\u306B\u306F\u3001'/list'\u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\n\u5931\u6557\u3001\u8D77\u52D5\u3001\u4E0A\u66F8\u304D\u6E08\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u542B\u3080\u3059\u3079\u3066\u306E\u30B9\u30CB\u30DA\u30C3\u30C8\u306EID\u3092\u8868\u793A\u3059\u308B\u306B\u306F\u3001\n'/list -all'\u30B3\u30DE\u30F3\u30C9\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\n\n\u958B\u59CBID\u3068\u7D42\u4E86ID\u3092\u30CF\u30A4\u30D5\u30F3\u3067\u533A\u5207\u3063\u305FID\u306E\u7BC4\u56F2\u3082\u53C2\u7167\u3067\u304D\u307E\u3059\u3002\n\u305F\u3068\u3048\u3070\u3001'1-4'\u306F'1 2 3 4'\u3068\u540C\u3058\u3067\u3059\u3002\u30B9\u30CB\u30DA\u30C3\u30C8\u3092\u53C2\u7167\u3059\u308B\u3059\u3079\u3066\u306E\u30B3\u30DE\u30F3\u30C9\u306F\u3001\nID\u306E\u30EA\u30B9\u30C8\u3001ID\u7BC4\u56F2\u304A\u3088\u3073\u30B9\u30CB\u30DA\u30C3\u30C8\u540D\u3092\u5F15\u6570\u3068\u3057\u3066\u53D7\u3051\u53D6\u308A\u307E\u3059\u3002\n\u3053\u308C\u3089\u306E\u30B3\u30DE\u30F3\u30C9\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059: /list\u3001/edit\u3001/drop\u3001/save\u3001/vars\u3001/methods\u3001\n/types\u3001/<id>\u3002\u4F8B\u3092\u3044\u304F\u3064\u304B\u793A\u3057\u307E\u3059\u3002\n\n\t/edit 7-23\n\n\t/save s1-s4 3-8 foo 12 myfile\n\n\t/9-12 33\n\n\u305D\u308C\u305E\u308C'/help /edit'\u3001'/help /save'\u3001'/help rerun'\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
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'/help id'\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\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.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'/help id'\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\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
--- a/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_zh_CN.properties Tue Jan 08 17:20:28 2019 -0500
+++ b/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_zh_CN.properties Thu Jan 10 13:13:56 2019 -0500
@@ -171,11 +171,11 @@
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
+jshell.console.erroneous = \n\u4E0D\u5B8C\u6574\u6216\u9519\u8BEF\u3002Shift+Tab m \u524D\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 \u524D\u5FC5\u987B\u4E3A\u5355\u4E2A\u6709\u6548\u7684\u8868\u8FBE\u5F0F\u6216\u8BED\u53E5\u3002
-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
+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\uFF0C\u4F7F\u7528 "v" \u8868\u793A\u53D8\u91CF\u521B\u5EFA\uFF0C\u4F7F\u7528 "i" \u8868\u793A\u65B9\u6CD5\u521B\u5EFA\u3002\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u8BF7\u53C2\u9605\uFF1A\n/help \u5FEB\u6377\u65B9\u5F0F
help.usage = \u7528\u6CD5\uFF1A jshell <\u9009\u9879>... <\u52A0\u8F7D\u6587\u4EF6>...\n\u5176\u4E2D\uFF0C\u53EF\u80FD\u7684\u9009\u9879\u5305\u62EC\uFF1A\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\uFF1B\u5982\u679C <\u6A21\u5757> \n \u4E3A ALL-MODULE-PATH\uFF0C\u5219\u4E3A\u6A21\u5757\u8DEF\u5F84\u4E2D\u7684\u6240\u6709\u6A21\u5757\n --enable-preview \u5141\u8BB8\u4EE3\u7801\u4F9D\u8D56\u4E8E\u6B64\u53D1\u884C\u7248\u7684\u9884\u89C8\u529F\u80FD\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\uFF08silent\u3001concise\u3001normal \u6216 verbose\uFF09\uFF0C\n \u4E5F\u53EF\u662F\u4EE5\u524D\u7528\u6237\u5B9A\u4E49\u7684\n -q \u65E0\u63D0\u793A\u53CD\u9988\u3002\u7B49\u540C\u4E8E\uFF1A--feedback concise\n -s \u771F\u6B63\u65E0\u63D0\u793A\u53CD\u9988\u3002\u7B49\u540C\u4E8E\uFF1A--feedback silent\n -v \u8BE6\u7EC6\u53CD\u9988\u3002\u7B49\u540C\u4E8E\uFF1A--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, -?, -h \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\n\u6587\u4EF6\u53C2\u6570\u53EF\u4EE5\u662F\u6587\u4EF6\u540D\uFF0C\u6216\u8005\u662F\u9884\u5B9A\u4E49\u7684\u6587\u4EF6\u540D\u4E4B\u4E00\uFF1ADEFAULT\u3001\nPRINTING \u6216 JAVASE\u3002\n\u52A0\u8F7D\u6587\u4EF6\u4E5F\u53EF\u4EE5\u662F "-"\uFF0C\u7528\u4E8E\u6307\u660E\u6807\u51C6\u8F93\u5165\uFF0C\u6CA1\u6709\u4EA4\u4E92\u5F0F I/O\u3002\n\n\u6709\u5173\u8BC4\u4F30\u4E0A\u4E0B\u6587\u9009\u9879\uFF08--class-path\u3001\n--module-path \u548C --add-modules\uFF09\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u8BF7\u53C2\u89C1\uFF1A\n\t/help context\n\n\u8DEF\u5F84\u5217\u51FA\u8981\u641C\u7D22\u7684\u76EE\u5F55\u548C\u6863\u6848\u3002\u5BF9\u4E8E Windows\uFF0C\u8BF7\u4F7F\u7528\n\u5206\u53F7 (;) \u6765\u5206\u9694\u8DEF\u5F84\u4E2D\u7684\u9879\u3002\u5728\u5176\u4ED6\u5E73\u53F0\u4E0A\uFF0C\u8BF7\u4F7F\u7528\n\u5192\u53F7 (:) \u6765\u5206\u9694\u5404\u9879\u3002\n
help.usage.x = \ --add-exports <\u6A21\u5757>/<\u7A0B\u5E8F\u5305> \u6307\u5B9A\u8981\u8003\u8651\u4ECE\u5176\u5B9A\u4E49\u6A21\u5757\u5BFC\u51FA\n \u7684\u7A0B\u5E8F\u5305\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\uFF0C\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\uFF0C\u5982\u6709\u66F4\u6539\uFF0C\u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n
@@ -267,8 +267,12 @@
help.intro.summary = jshell \u5DE5\u5177\u7684\u7B80\u4ECB
help.intro =\u4F7F\u7528 jshell \u5DE5\u5177\u53EF\u4EE5\u6267\u884C Java \u4EE3\u7801\uFF0C\u4ECE\u800C\u7ACB\u5373\u83B7\u53D6\u7ED3\u679C\u3002\n\u60A8\u53EF\u4EE5\u8F93\u5165 Java \u5B9A\u4E49\uFF08\u53D8\u91CF\u3001\u65B9\u6CD5\u3001\u7C7B\u7B49\u7B49\uFF09\uFF0C\u4F8B\u5982\uFF1Aint x = 8\n\u6216 Java \u8868\u8FBE\u5F0F\uFF0C\u4F8B\u5982\uFF1Ax + x\n\u6216 Java \u8BED\u53E5\u6216\u5BFC\u5165\u3002\n\u8FD9\u4E9B\u5C0F\u5757\u7684 Java \u4EE3\u7801\u79F0\u4E3A\u201C\u7247\u6BB5\u201D\u3002\n\n\u8FD9\u4E9B jshell \u5DE5\u5177\u547D\u4EE4\u8FD8\u53EF\u4EE5\u8BA9\u60A8\u4E86\u89E3\u548C\n\u63A7\u5236\u60A8\u6B63\u5728\u6267\u884C\u7684\u64CD\u4F5C\uFF0C\u4F8B\u5982\uFF1A/list\n\n\u6709\u5173\u547D\u4EE4\u7684\u5217\u8868\uFF0C\u8BF7\u6267\u884C\uFF1A/help
+help.keys.summary = \u7C7B\u4F3C readline \u7684\u8F93\u5165\u7F16\u8F91\u7684\u8BF4\u660E
+help.keys =jshell \u5DE5\u5177\u63D0\u4F9B\u884C\u7F16\u8F91\u652F\u6301\uFF0C\u5141\u8BB8\u60A8\u5728\u7247\u6BB5\u548C\u547D\u4EE4\u4E2D\n\u5BFC\u822A\u5E76\u8FDB\u884C\u7F16\u8F91\u3002\u60A8\u53EF\u4EE5\u7F16\u8F91\u5F53\u524D\u547D\u4EE4/\u7247\u6BB5\uFF0C\u4E5F\u53EF\u4EE5\n\u4ECE\u5386\u53F2\u8BB0\u5F55\u4E2D\u68C0\u7D22\u4EE5\u524D\u7684\u547D\u4EE4/\u7247\u6BB5\uFF0C\u8FDB\u884C\u7F16\u8F91\u5E76\u6267\u884C\u3002\n\u6B64\u652F\u6301\u7C7B\u4F3C\u4E8E readline/editline\uFF0C\u5177\u6709\u4E0E emacs \u76F8\u4F3C\u7684\n\u7B80\u5355\u7ED1\u5B9A\u3002\u8FD8\u6709\u7279\u5B9A\u4E8E jshell \u5DE5\u5177\u7684\u5173\u952E\u5B57\u5E8F\u5217\u3002\n\n\u884C\u548C\u5386\u53F2\u8BB0\u5F55\u5BFC\u822A\uFF1A\n\n\tReturn\n\t\t\u8F93\u5165\u5F53\u524D\u7247\u6BB5\n\t\u5DE6\u7BAD\u5934\u6216 Ctrl+B\n\t\t\u5411\u540E\u79FB\u52A8\u4E00\u4E2A\u5B57\u7B26\n\t\u53F3\u7BAD\u5934\u6216 Ctrl+F\n\t\t\u5411\u524D\u79FB\u52A8\u4E00\u4E2A\u5B57\u7B26\n\t\u4E0A\u7BAD\u5934\u6216 Ctrl+P\n\t\t\u5411\u4E0A\u79FB\u52A8\u4E00\u884C\uFF0C\u5411\u540E\u6D4F\u89C8\u5386\u53F2\u8BB0\u5F55\n\t\u4E0B\u7BAD\u5934\u6216 Ctrl+N\n\t\t\u5411\u4E0B\u79FB\u52A8\u4E00\u884C\uFF0C\u5411\u524D\u6D4F\u89C8\u5386\u53F2\u8BB0\u5F55\n\tCtrl+A\n\t\t\u79FB\u81F3\u884C\u7684\u5F00\u5934\n\tCtrl+E\n\t\t\u79FB\u81F3\u884C\u7684\u7ED3\u5C3E\n\tMeta+B\n\t\t\u5411\u540E\u79FB\u52A8\u4E00\u4E2A\u5355\u8BCD\n\tMeta+F\n\t\t\u5411\u524D\u79FB\u52A8\u4E00\u4E2A\u5355\u8BCD\n\tCtrl+R\n\t\t\u5411\u540E\u641C\u7D22\u5386\u53F2\u8BB0\u5F55\n\n\n\u884C\u548C\u5386\u53F2\u8BB0\u5F55\u57FA\u672C\u7F16\u8F91\uFF1A\n\n\tMeta+Return \u6216 Ctrl+Return\uFF08\u6839\u636E\u5E73\u53F0\uFF09\n\t\t\u5728\u7247\u6BB5\u4E2D\u63D2\u5165\u65B0\u884C\n\tCtrl+_\uFF08\u4E0B\u5212\u7EBF\u53EF\u80FD\u9700\u8981 Shift \u952E\uFF09\u6216 Ctrl+X \u7136\u540E Ctrl+U\n\t\t\u64A4\u6D88\u7F16\u8F91 - \u91CD\u590D\u64CD\u4F5C\u53EF\u64A4\u6D88\u591A\u9879\u7F16\u8F91\n\tDelete\n\t\t\u5220\u9664\u5149\u6807\u5904\u6216\u5176\u540E\u9762\u7684\u5B57\u7B26\uFF0C\u5177\u4F53\u53D6\u51B3\u4E8E\u64CD\u4F5C\u7CFB\u7EDF\n\tBackspace\n\t\t\u5220\u9664\u5149\u6807\u524D\u9762\u7684\u5B57\u7B26\n\tCtrl+K\n\t\t\u5220\u9664\u4ECE\u5149\u6807\u5230\u884C\u7ED3\u5C3E\u7684\u6587\u672C\n\tMeta+D\n\t\t\u5220\u9664\u4ECE\u5149\u6807\u5230\u5355\u8BCD\u7ED3\u5C3E\u7684\u6587\u672C\n\tCtrl+W\n\t\t\u5220\u9664\u4ECE\u5149\u6807\u5230\u524D\u4E00\u4E2A\u7A7A\u683C\u7684\u6587\u672C\n\tCtrl+Y\n\t\t\u5C06\u6700\u8FD1\u5220\u9664\u7684\u6587\u672C\u7C98\u8D34\u5230\u884C\u4E2D\n\tMeta+Y\n\t\t\u5728\u6309 Ctrl+Y \u4E4B\u540E\uFF0C\u6309 Meta+Y \u53EF\u5FAA\u73AF\u6D4F\u89C8\u5148\u524D\u5220\u9664\u7684\u6587\u672C\n\tCtrl+X \u7136\u540E Ctrl+K\n\t\t\u5220\u9664\u6574\u4E2A\u7247\u6BB5\n\n\njshell \u5DE5\u5177\u7684\u5FEB\u6377\u65B9\u5F0F\uFF1A\n\n\t\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u8BF7\u53C2\u9605\uFF1A/help \u5FEB\u6377\u65B9\u5F0F\n\n\tTab\n\t\t\u5B8C\u6210 Java \u6807\u8BC6\u7B26\u6216 jshell \u547D\u4EE4\n\tShift+Tab \u7136\u540E v\n\t\t\u5C06\u8868\u8FBE\u5F0F\u8F6C\u6362\u4E3A\u53D8\u91CF\u58F0\u660E\n\tShift+Tab \u7136\u540E m\n\t\t\u5C06\u8BED\u53E5\u8F6C\u6362\u4E3A\u65B9\u6CD5\u58F0\u660E\n\tShift+Tab \u7136\u540E i\n\t\t\u4E3A\u6B64\u6807\u8BC6\u7B26\u6DFB\u52A0\u5BFC\u5165\n\t\n\n\u591A\u884C\u548C\u5386\u53F2\u8BB0\u5F55\u7F16\u8F91\uFF1A\n\n\tCtrl+L\n\t\t\u6E05\u9664\u5C4F\u5E55\u5E76\u91CD\u65B0\u8F93\u51FA\u7247\u6BB5\n\tCtrl+U\n\t\t\u7EC8\u6B62\u6574\u884C\n\tCtrl+T\n\t\t\u8F6C\u7F6E\u5B57\u7B26\n\tCtrl+X \u7136\u540E Ctrl+B\n\t\t\u5BFC\u822A\u5230\u5339\u914D\u7684\u65B9\u62EC\u53F7\u3001\u62EC\u53F7 ...\n\tCtrl+X \u7136\u540E =\n\t\t\u8FDB\u5165\u663E\u793A\u5F53\u524D\u5B57\u7B26\u4F4D\u7F6E\u7684\u6A21\u5F0F\n\tCtrl+X \u7136\u540E \
+Ctrl+O\n\t\t\u5728\u8986\u76D6\u5B57\u7B26\u4E0E\u63D2\u5165\u5B57\u7B26\u4E4B\u95F4\u5207\u6362\n\tMeta+C\n\t\t\u5355\u8BCD\u9996\u5B57\u6BCD\u5927\u5199\n\tMeta+U\n\t\t\u5C06\u5355\u8BCD\u8F6C\u6362\u4E3A\u5927\u5199\n\tMeta+L\n\t\t\u5C06\u5355\u8BCD\u8F6C\u6362\u4E3A\u5C0F\u5199\n\tMeta+0 \u81F3 Meta+9 \u7136\u540E\u952E\n\t\t\u91CD\u590D\u6307\u5B9A\u6B21\u6570\n\n\u4F8B\u5982 "Ctrl+A" \u8868\u793A\u6309\u4F4F Ctrl \u952E\u5E76\u6309 A\u3002\n\u5176\u4E2D "Meta" \u5728\u8BB8\u591A\u952E\u76D8\u4E0A\u662F "Alt"\u3002\n\u884C\u7F16\u8F91\u652F\u6301\u6E90\u81EA JLine 3\u3002
+
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\uFF1A\n\n<tab>\n\t\t\u5728\u8F93\u5165 Java \u6807\u8BC6\u7B26\u3001jshell \u5DE5\u5177\u547D\u4EE4\u6216 jshell\n\t\t\u5DE5\u5177\u547D\u4EE4\u53C2\u6570\uFF08\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\uFF09\u7684\u524D\u51E0\u4E2A\u5B57\u6BCD\u540E\uFF0C\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\uFF0C\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\uFF0C\u6309\u4F4F <tab> \u7684\u540C\u65F6\u6309\u4E0B <shift>\uFF0C\n\t\t\u7136\u540E\u91CA\u653E\u5E76\u6309 "v"\uFF0C\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\uFF0C\u6309\u4F4F <tab> \u7684\u540C\u65F6\u6309\u4F4F <shift>\uFF0C\n\t\t\u7136\u540E\u91CA\u653E\u5E76\u6309\u4F4F "m"\uFF0C\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\uFF0C\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\uFF0C\u6309\u4F4F <tab> \u7684\u540C\u65F6\u6309\u4E0B <shift>\uFF0C\n\t\t\u7136\u540E\u91CA\u653E\u5E76\u6309 "i"\uFF0C\u6B64\u65F6 jshell \u5DE5\u5177\u5C06\u4F1A\u5EFA\u8BAE\u53EF\u80FD\u7684\u5BFC\u5165\u9879\uFF0C\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\uFF1A\n\n\tTab\n\t\t\u5728\u8F93\u5165 Java \u6807\u8BC6\u7B26\u3001jshell \u5DE5\u5177\u547D\u4EE4\u6216\n\t\t\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\u8F93\u5165 jshell \u5DE5\u5177\u547D\u4EE4\u53C2\u6570\u7684\n\t\t\u524D\u51E0\u4E2A\u5B57\u6BCD\u540E\uFF0C\u6309 Tab \u952E\u53EF\u4EE5\u5B8C\u6210\u8F93\u5165\u3002\n\t\t\u5982\u679C\u6709\u591A\u4E2A\u8F93\u5165\u63D0\u793A\uFF0C\u5C06\u663E\u793A\u53EF\u80FD\u7684\u8F93\u5165\u63D0\u793A\u3002\n\t\t\u518D\u6309\u4E00\u6B21 Tab \u5C06\u663E\u793A\u53EF\u7528\u7684\u9002\u7528\u6587\u6863\u3002\n\n\tShift+Tab \u7136\u540E v\n\t\t\u5728\u5B8C\u6574\u7684\u8868\u8FBE\u5F0F\u540E\u9762\uFF0C\u6309\u4F4F Tab \u952E\u7684\u540C\u65F6\n\t\t\u6309\u4E0B Shift \u952E\uFF0C\u7136\u540E\u91CA\u653E\u5E76\u6309 "v" \u952E\uFF0C\u8868\u8FBE\u5F0F\n\t\t\u5C06\u8F6C\u6362\u4E3A\u7C7B\u578B\u57FA\u4E8E\u8868\u8FBE\u5F0F\u7C7B\u578B\u7684\u53D8\u91CF\u58F0\u660E\u3002\n\n\tShift+Tab \u7136\u540E m\n\t\t\u5B8C\u6210\u8868\u8FBE\u5F0F\u6216\u8BED\u53E5\u4E4B\u540E\uFF0C\u6309\u4F4F Tab \u952E\u7684\u540C\u65F6\n\t\t\u6309\u4E0B Shift \u952E\uFF0C\u7136\u540E\u91CA\u653E\u5E76\u6309\u4F4F "m" \u952E\uFF0C\u8868\u8FBE\u5F0F\u6216\n\t\t\u8BED\u53E5\u5C06\u8F6C\u6362\u4E3A\u65B9\u6CD5\u58F0\u660E\u3002\u5982\u679C\u662F\u8868\u8FBE\u5F0F\uFF0C\n\t\t\u5219\u65B9\u6CD5\u8FD4\u56DE\u7C7B\u578B\u57FA\u4E8E\u8868\u8FBE\u5F0F\u7684\u7C7B\u578B\u3002\n\n\tShift+Tab \u7136\u540E i\n\t\t\u5728\u4E0D\u53EF\u89E3\u6790\u7684\u6807\u8BC6\u7B26\u540E\u9762\uFF0C\u6309\u4F4F Tab \u952E\u7684\u540C\u65F6\n\t\t\u6309\u4E0B Shift \u952E\uFF0C\u7136\u540E\u91CA\u653E\u5E76\u6309 "i" \u952E\uFF0Cjshell \u5DE5\u5177\u4F1A\n\t\t\u63A8\u8350\u53EF\u80FD\u7684\u5BFC\u5165\u9879\uFF0C\u4EE5\u57FA\u4E8E\u6307\u5B9A\u7C7B\u8DEF\u5F84\u7684\u5185\u5BB9\u89E3\u6790\u6807\u8BC6\u7B26\u3002\n\t\t\u8F93\u5165\u4E0E\u6240\u9700\u5BFC\u5165\u5BF9\u5E94\u7684\u6570\u5B57\uFF0C\u6216\u6309 "0" \u952E\u4E0D\u6DFB\u52A0\u5BFC\u5165\u9879\u3002\n\n\u6709\u5173\u7279\u6B8A\u952E\u7684\u4FE1\u606F\uFF0C\u8BF7\u53C2\u9605\uFF1A/help \u952E
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\u3002\u5B83\u4EEC\u53EF\u4EE5\u5728\u542F\u52A8 jshell \u5DE5\u5177\u65F6\n\u5728\u547D\u4EE4\u884C\u4E0A\u6307\u5B9A\uFF0C\u6216\u8005\u5728\u4F7F\u7528\u547D\u4EE4 /env\u3001/reload \u6216 /reset \n\u91CD\u65B0\u542F\u52A8 jshell \u5DE5\u5177\u65F6\u4F5C\u4E3A\u547D\u4EE4\u9009\u9879\u6307\u5B9A\u3002\n\n\u5B83\u4EEC\u662F\uFF1A\n\t--class-path <\u8DEF\u5F84>\n\t\t<\u8DEF\u5F84> \u662F\u7528\u4E8E\u641C\u7D22\u7C7B\u6587\u4EF6\u7684\u76EE\u5F55\u3001\n\t\tJAR \u6863\u6848\u548C ZIP \u6863\u6848\u7684\u5217\u8868\u3002\n\t\t\u5BF9\u4E8E Windows\uFF0C\u4F7F\u7528\u5206\u53F7 (;) \u5206\u9694\u8DEF\u5F84\u4E2D\u7684\u9879\u3002\n\t\t\u5728\u5176\u4ED6\u5E73\u53F0\u4E0A\uFF0C\u4F7F\u7528\u5192\u53F7 (:) \u5206\u9694\u5404\u9879\u3002\n\t--module-path <\u8DEF\u5F84>...\n\t\t<\u8DEF\u5F84> \u662F\u7528\u4E8E\u641C\u7D22\u6A21\u5757\u7684\u76EE\u5F55\u3001\n\t\tJAR \u6863\u6848\u548C ZIP \u6863\u6848\u7684\u5217\u8868\u3002\n\t\t\u5BF9\u4E8E Windows\uFF0C\u4F7F\u7528\u5206\u53F7 (;) \u5206\u9694\u8DEF\u5F84\u4E2D\u7684\u9879\u3002\n\t\t\u5728\u5176\u4ED6\u5E73\u53F0\u4E0A\uFF0C\u4F7F\u7528\u5192\u53F7 (:) \u5206\u9694\u5404\u9879\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\u3001ALL-SYSTEM\u3001\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>\uFF0C\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\uFF0C\u5982\u679C\u672A\u6307\u5B9A \n\t\t<\u76EE\u6807\u6A21\u5757> (no =)\uFF0C\u5219\u4F7F\u7528 ALL-UNNAMED\u3002\n\n\u9664\u975E\u8F93\u5165\u7684\u9009\u9879\u8986\u76D6\u4E86\u8BBE\u7F6E\uFF0C\u5426\u5219\u5728\u547D\u4EE4\u884C\u4E0A\u8F93\u5165\u7684\n\u6216\u8005\u4F7F\u7528\u4EE5\u524D\u7684 /reset\u3001/env \u6216 /reload \u547D\u4EE4\u63D0\u4F9B\u7684\n\u8BC4\u4F30\u4E0A\u4E0B\u6587\u9009\u9879\u5C06\u4F1A\u4FDD\u7559\u3002\n\n\u5728\u547D\u4EE4\u884C\u4E0A\uFF0C\u8FD9\u4E9B\u9009\u9879\u5FC5\u987B\u5177\u6709\u4E24\u4E2A\u77ED\u5212\u7EBF\uFF0C\u4F8B\u5982\uFF1A--module-path\n\u5728 jshell \u5DE5\u5177\u547D\u4EE4\u4E0A\uFF0C\u5B83\u4EEC\u5FC5\u987B\u5177\u6709\u4E00\u4E2A\u6216\u4E24\u4E2A\u77ED\u5212\u7EBF\uFF0C\u4F8B\u5982\uFF1A-module-path
@@ -277,7 +281,7 @@
help.id =\u8F93\u5165\u7684\u6BCF\u4E2A\u4EE3\u7801\u7247\u6BB5\u6709\u81EA\u5DF1\u7684\u552F\u4E00\u7247\u6BB5 ID\u3002\u5373\u4F7F\u518D\u6B21\n\u8F93\u5165\u76F8\u540C\u7684\u7247\u6BB5\uFF0C\u5B83\u90FD\u4F1A\u5177\u6709\u65B0 ID\u3002\u5BF9\u4E8E\u666E\u901A\u7247\u6BB5\uFF0CID\n\u662F\u4E00\u4E2A\u589E\u957F\u7684\u7F16\u53F7\u3002\u5BF9\u4E8E\u5931\u8D25\u4E14\u51FA\u9519\u7684\u7247\u6BB5\uFF0C\u5176\u7247\u6BB5 ID\n\u4EE5 "e" \u5F00\u5934\u3002\u5BF9\u4E8E\u542F\u52A8\u4E2D\u7684\u7247\u6BB5\uFF0C\u5176 ID \u4EE5 "s" \u5F00\u5934\u3002\n\n\u7247\u6BB5 ID \u662F\u5728\u547D\u4EE4\u4E2D\u5F15\u7528\u7247\u6BB5\u7684\u4E00\u79CD\u65B9\u6CD5\u3002\u4F8B\u5982\uFF0C\n\u6B64\u547D\u4EE4\u5220\u9664 ID \u4E3A '14' \u7684\u7247\u6BB5\uFF1A\n\n\t/drop 14\n\n\u8981\u67E5\u770B\u4E00\u4E2A\u6216\u591A\u4E2A\u7247\u6BB5\u7684 ID\uFF0C\u8BF7\u4F7F\u7528 '/list' \u547D\u4EE4\u3002\u8981\u67E5\u770B\u6240\u6709\n\u7247\u6BB5\u7684 ID\uFF0C\u5305\u62EC\u5931\u8D25\u7247\u6BB5\u3001\u542F\u52A8\u7247\u6BB5\u548C\u8986\u76D6\u7247\u6BB5\uFF0C\u8BF7\u4F7F\u7528\n'/list -all' \u547D\u4EE4\u3002\n\n\u60A8\u8FD8\u53EF\u4EE5\u4F7F\u7528\u8FDE\u5B57\u7B26\u5206\u9694\u5F00\u59CB ID \u548C\u7ED3\u675F ID\uFF0C\n\u4EE5\u6B64\u6765\u5F15\u7528 ID \u8303\u56F4\u3002\u4F8B\u5982\uFF0C'1-4' \u4E0E '1 2 3 4' \u76F8\u540C\u3002\n\u5F15\u7528\u7247\u6BB5\u7684\u6240\u6709\u547D\u4EE4\u5C06\u83B7\u53D6 ID\u3001ID \u8303\u56F4\u4EE5\u53CA\u7247\u6BB5\u540D\u79F0\u7684\n\u5217\u8868\u4F5C\u4E3A\u53C2\u6570\u3002\u8FD9\u4E9B\u547D\u4EE4\u5305\u62EC\uFF1A/list\u3001/edit\u3001/drop\u3001/save\u3001/vars\u3001/methods\u3001\n/types \u548C /<id>\u3002\u4E00\u4E9B\u793A\u4F8B\uFF1A\n\n\t/edit 7-23\n\n\t/save s1-s4 3-8 foo 12 myfile\n\n\t/9-12 33\n\n\u5206\u522B\u53C2\u89C1 '/help /edit'\u3001'/help /save' \u548C '/help rerun'\u3002
help.rerun.summary = \u91CD\u65B0\u8BC4\u4F30\u4EE5\u524D\u8F93\u5165\u7247\u6BB5\u7684\u65B9\u6CD5\u7684\u8BF4\u660E
-help.rerun =\u91CD\u65B0\u8BC4\u4F30\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\uFF1A/!\n\u53EF\u4EE5\u4F7F\u7528\u659C\u6760\u52A0\u51CF\u53F7\u52A0\u6570\u5B57 n \u7684\u65B9\u5F0F\u6765\u91CD\u65B0\u8BC4\u4F30\u4E4B\u524D\u7684\u7B2C n \u4E2A\u7247\u6BB5\uFF0C\u4F8B\u5982\uFF1A/-4\n\u4F8B\u5982\uFF1A\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\u4F7F\u7528\u901A\u8FC7\u8FDE\u5B57\u7B26\u5206\u9694\u7684\u4E24\u4E2A ID \u8868\u793A\uFF0C\u4F8B\u5982\uFF1A3-17\n\u53EF\u4EE5\u4F7F\u7528\u542F\u52A8\u548C\u9519\u8BEF\u7247\u6BB5\uFF0C\u4F8B\u5982\uFF1As3-s9 \u6216 e1-e4\n\u53EF\u4EE5\u4F7F\u7528\u4EFB\u610F\u6570\u91CF\u7684 ID \u6216 ID \u8303\u56F4\uFF0C\u4F8B\u5982\uFF1A/3-7 s4 14-16 e2\n\u53E6\u8BF7\u53C2\u89C1 '/help id'\u3002\n\n\u6700\u540E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u8F93\u5165 ctrl-R \u540E\u8DDF\u8981\u641C\u7D22\u7684\u5B57\u7B26\u4E32\uFF0C\u5728\u5386\u53F2\u8BB0\u5F55\u4E2D\u5411\u540E\u641C\u7D22\u3002
+help.rerun =\u91CD\u65B0\u8BC4\u4F30\u4EE5\u524D\u8F93\u5165\u7684\u7247\u6BB5\u6709\u56DB\u79CD\u65B9\u6CD5\u3002\n\u53EF\u4F7F\u7528\u4EE5\u4E0B\u65B9\u6CD5\u91CD\u65B0\u8BC4\u4F30\u4E0A\u4E00\u4E2A\u7247\u6BB5\uFF1A/!\n\u53EF\u4EE5\u4F7F\u7528\u659C\u6760\u52A0\u51CF\u53F7\u52A0\u6570\u5B57 n \u7684\u65B9\u5F0F\u6765\u91CD\u65B0\u8BC4\u4F30\u4E4B\u524D\u7684\u7B2C n \u4E2A\u7247\u6BB5\uFF0C\u4F8B\u5982\uFF1A/-4\n\u4F8B\u5982\uFF1A\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\u4F7F\u7528\u8FDE\u5B57\u7B26\u5206\u9694\u7684\u4E24\u4E2A ID \u8868\u793A\uFF0C\u4F8B\u5982\uFF1A3-17\n\u53EF\u4EE5\u4F7F\u7528\u542F\u52A8\u548C\u9519\u8BEF\u7247\u6BB5\uFF0C\u4F8B\u5982\uFF1As3-s9 \u6216 e1-e4\n\u53EF\u4EE5\u4F7F\u7528\u4EFB\u610F\u6570\u91CF\u7684 ID \u6216 ID \u8303\u56F4\uFF0C\u4F8B\u5982\uFF1A/3-7 s4 14-16 e2\n\u53E6\u8BF7\u53C2\u89C1 '/help id'\u3002\n\n\u6700\u540E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u8F93\u5165 Ctrl+R \u540E\u8DDF\u8981\u641C\u7D22\u7684\u5B57\u7B26\u4E32\uFF0C\u5728\u5386\u53F2\u8BB0\u5F55\u4E2D\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
--- a/test/hotspot/gtest/utilities/test_concurrentHashtable.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/test/hotspot/gtest/utilities/test_concurrentHashtable.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -81,39 +81,34 @@
delete cht;
}
-struct ValVerify {
- uintptr_t _val;
- bool called_get;
- bool called_insert;
- ValVerify(uintptr_t val) : _val(val), called_get(false), called_insert(false) {}
- void operator()(bool inserted, uintptr_t* val) {
- EXPECT_EQ(_val, *val) << "The value inserted is not correct.";
- if (inserted) {
- called_insert = true;
- } else {
- called_get = true;
- }
+struct ValueGet {
+ uintptr_t _return;
+ ValueGet() : _return(0) {}
+ void operator()(uintptr_t* value) {
+ EXPECT_NE(value, (uintptr_t*)NULL) << "expected valid value";
+ _return = *value;
}
- void verify(bool get, bool insert) {
- EXPECT_EQ(called_get, get) << "Get unexpected";
- EXPECT_EQ(called_insert, insert) << "Insert unexpected";
+ uintptr_t get_value() const {
+ return _return;
}
};
-static void cht_get_insert_helper(Thread* thr, SimpleTestTable* cht, uintptr_t val) {
+static void cht_get_helper(Thread* thr, SimpleTestTable* cht, uintptr_t val) {
{
SimpleTestLookup stl(val);
- ValVerify vv(val);
- EXPECT_EQ(cht->get_insert(thr, stl, val, vv), false) << "Inserting an unique value failed.";
- vv.verify(false, true);
+ ValueGet vg;
+ EXPECT_EQ(cht->get(thr, stl, vg), true) << "Getting an old value failed.";
+ EXPECT_EQ(val, vg.get_value()) << "Getting an old value failed.";
+ }
+}
+
+static void cht_insert_helper(Thread* thr, SimpleTestTable* cht, uintptr_t val) {
+ {
+ SimpleTestLookup stl(val);
+ EXPECT_EQ(cht->insert(thr, stl, val), true) << "Inserting an unique value failed.";
}
- {
- SimpleTestLookup stl(val);
- ValVerify vv(val);
- EXPECT_EQ(cht->get_insert(thr, stl, val, vv), true) << "Getting an old value failed.";
- vv.verify(true, false);
- }
+ cht_get_helper(thr, cht, val);
}
static void cht_get_insert(Thread* thr) {
@@ -123,7 +118,7 @@
{
SCOPED_TRACE("First");
- cht_get_insert_helper(thr, cht, val);
+ cht_insert_helper(thr, cht, val);
}
EXPECT_EQ(cht->get_copy(thr, stl), val) << "Get an old value failed";
EXPECT_TRUE(cht->remove(thr, stl)) << "Removing existing value failed.";
@@ -131,7 +126,7 @@
{
SCOPED_TRACE("Second");
- cht_get_insert_helper(thr, cht, val);
+ cht_insert_helper(thr, cht, val);
}
delete cht;
@@ -148,10 +143,13 @@
static void cht_getinsert_bulkdelete_insert_verified(Thread* thr, SimpleTestTable* cht, uintptr_t val,
bool verify_expect_get, bool verify_expect_inserted) {
- ValVerify vv(val);
SimpleTestLookup stl(val);
- EXPECT_EQ(cht->get_insert(thr, stl, val, vv), verify_expect_get) << "Inserting an unique value failed.";
- vv.verify(verify_expect_get, verify_expect_inserted);
+ if (verify_expect_inserted) {
+ cht_insert_helper(thr, cht, val);
+ }
+ if (verify_expect_get) {
+ cht_get_helper(thr, cht, val);
+ }
}
static void cht_getinsert_bulkdelete(Thread* thr) {
@@ -856,10 +854,19 @@
bool grow;
MyDel del(_br);
for (uintptr_t v = _start; v <= _stop; v++) {
- ValVerify vv(v);
- TestLookup tl(v);
- _cht->get_insert(this, tl, v, vv, &grow);
- EXPECT_NE(vv.called_get, vv.called_insert) << "Non or both callbacks was called.";
+ {
+ TestLookup tl(v);
+ ValueGet vg;
+ do {
+ if (_cht->get(this, tl, vg, &grow)) {
+ EXPECT_EQ(v, vg.get_value()) << "Getting an old value failed.";
+ break;
+ }
+ if (_cht->insert(this, tl, v, &grow)) {
+ break;
+ }
+ } while(true);
+ }
if (grow && !_shrink) {
_cht->grow(this);
}
--- a/test/hotspot/jtreg/ProblemList-graal.txt Tue Jan 08 17:20:28 2019 -0500
+++ b/test/hotspot/jtreg/ProblemList-graal.txt Thu Jan 10 13:13:56 2019 -0500
@@ -167,3 +167,5 @@
org.graalvm.compiler.replacements.test.StringCompressInflateTest 8213556
org.graalvm.compiler.debug.test.TimerKeyTest 8213598
+
+org.graalvm.compiler.hotspot.test.ExplicitExceptionTest 8213249
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/compiler/inlining/StringConcatInfiniteLoop.java Thu Jan 10 13:13:56 2019 -0500
@@ -0,0 +1,54 @@
+/*
+ * 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 8214862
+ * @summary Multiple passes of PhaseRemoveUseless causes infinite loop to be optimized out
+ *
+ * @run main/othervm -XX:-TieredCompilation -Xcomp -XX:CompileOnly=StringConcatInfiniteLoop::test -XX:CompileCommand=dontinline,*StringBuilder::* StringConcatInfiniteLoop
+ *
+ */
+
+public class StringConcatInfiniteLoop {
+ public static void main(String[] args) {
+ StringBuilder sb = new StringBuilder();
+ test(sb, "foo", "bar", true);
+ }
+
+ private static void test(Object v, String s1, String s2, boolean flag) {
+ if (flag) {
+ return;
+ }
+ int i = 0;
+ for (; i < 10; i++);
+ if (i == 10) {
+ v = null;
+ }
+ StringBuilder sb = new StringBuilder(s1);
+ sb.append(s2);
+ while (v == null);
+ }
+
+ private static class A {
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/gc/epsilon/TestArraycopyCheckcast.java Thu Jan 10 13:13:56 2019 -0500
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2019, 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 TestArraycopyCheckcast
+ * @key gc
+ * @requires vm.gc.Epsilon & !vm.graal.enabled
+ * @summary Epsilon is able to handle checkcasted array copies
+ * @library /test/lib
+ * @bug 8215724
+ *
+ * @run main/othervm -Xmx1g -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC TestArraycopyCheckcast
+ * @run main/othervm -Xmx1g -Xint -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC TestArraycopyCheckcast
+ * @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC TestArraycopyCheckcast
+ * @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:TieredStopAtLevel=1 -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC TestArraycopyCheckcast
+ * @run main/othervm -Xmx1g -Xbatch -Xcomp -XX:-TieredCompilation -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC TestArraycopyCheckcast
+ */
+
+import java.util.Random;
+
+public class TestArraycopyCheckcast {
+
+ static int COUNT = Integer.getInteger("count", 1000);
+
+ public static void main(String[] args) throws Exception {
+ Object[] src = new Object[COUNT];
+ Object[] dst = new B[COUNT];
+
+ // Test 1. Copy nulls, should succeed
+ try {
+ System.arraycopy(src, 0, dst, 0, COUNT);
+ } catch (ArrayStoreException e) {
+ throw new IllegalStateException("Should have completed");
+ }
+
+ // Test 2. Copying incompatible type, should fail
+ for (int c = 0; c < COUNT; c++) {
+ src[c] = new A();
+ }
+
+ try {
+ System.arraycopy(src, 0, dst, 0, COUNT);
+ throw new IllegalStateException("Should have failed with ArrayStoreException");
+ } catch (ArrayStoreException e) {
+ // Expected
+ }
+
+ // Test 3. Copying compatible type, should succeeded
+ for (int c = 0; c < COUNT; c++) {
+ src[c] = new C();
+ }
+
+ try {
+ System.arraycopy(src, 0, dst, 0, COUNT);
+ } catch (ArrayStoreException e) {
+ throw new IllegalStateException("Should have completed");
+ }
+
+ for (int c = 0; c < COUNT; c++) {
+ if (src[c] != dst[c]) {
+ throw new IllegalStateException("Copy failed at index " + c);
+ }
+ }
+ }
+
+ static class A {}
+ static class B extends A {}
+ static class C extends B {}
+}
--- a/test/hotspot/jtreg/gc/nvdimm/TestAllocateOldGenAt.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/hotspot/jtreg/gc/nvdimm/TestAllocateOldGenAt.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/* @test TestAllocateOldGenAt.java
* @key gc
* @summary Test to check allocation of Java Heap with AllocateOldGenAt option
- * @requires vm.gc=="null"
+ * @requires vm.gc=="null" & os.family != "aix"
* @library /test/lib
* @modules java.base/jdk.internal.misc
*/
--- a/test/hotspot/jtreg/gc/nvdimm/TestAllocateOldGenAtError.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/hotspot/jtreg/gc/nvdimm/TestAllocateOldGenAtError.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/* @test TestAllocateOldGenAtError.java
* @key gc
* @summary Test to check correct handling of non-existent directory passed to AllocateOldGenAt option
- * @requires vm.gc=="null"
+ * @requires vm.gc=="null" & os.family != "aix"
* @library /test/lib
* @modules java.base/jdk.internal.misc
*/
--- a/test/hotspot/jtreg/gc/nvdimm/TestAllocateOldGenAtMultiple.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/hotspot/jtreg/gc/nvdimm/TestAllocateOldGenAtMultiple.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/* @test TestAllocateOldGenAtMultiple.java
* @key gc
* @summary Test to check allocation of Java Heap with AllocateOldGenAt option. Has multiple sub-tests to cover different code paths.
- * @requires vm.gc=="null"
+ * @requires vm.gc=="null" & os.family != "aix"
* @library /test/lib
* @modules java.base/jdk.internal.misc
* @requires vm.bits == "64"
--- a/test/hotspot/jtreg/gc/nvdimm/TestHumongousObjectsOnNvdimm.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/hotspot/jtreg/gc/nvdimm/TestHumongousObjectsOnNvdimm.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
* @test TestHumongousObjectsOnNvdimm
* @summary Check that humongous objects reside in nv-dimm
* @library /test/lib /
- * @requires vm.gc=="null"
+ * @requires vm.gc=="null" & os.family != "aix"
* @build sun.hotspot.WhiteBox
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
* @run main TestHumongousObjectsOnNvdimm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
--- a/test/hotspot/jtreg/gc/nvdimm/TestOldObjectsOnNvdimm.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/hotspot/jtreg/gc/nvdimm/TestOldObjectsOnNvdimm.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/*
* @test TestOldObjectsOnNvdimm
* @summary Check that objects in old generation reside in dram.
- * @requires vm.gc=="null"
+ * @requires vm.gc=="null" & os.family != "aix"
* @library /test/lib
* @build sun.hotspot.WhiteBox
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
--- a/test/hotspot/jtreg/gc/nvdimm/TestYoungObjectsOnDram.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/hotspot/jtreg/gc/nvdimm/TestYoungObjectsOnDram.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
/*
* @test TestYoungObjectsOnDram
* @summary Check that objects in young generation reside in dram.
- * @requires vm.gc=="null"
+ * @requires vm.gc=="null" & os.family != "aix"
* @library /test/lib
* @build sun.hotspot.WhiteBox
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/runtime/StackTrace/StackTraceClassCache.java Thu Jan 10 13:13:56 2019 -0500
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2019, 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 8216302
+ * @summary Check that stack trace contains proper strings even with class caching
+ * @modules java.base/java.lang:open
+ * @compile StackTraceClassCache.java
+ * @run main StackTraceClassCache
+ */
+
+import java.lang.reflect.*;
+
+public class StackTraceClassCache {
+ public static void main(String... args) throws Exception {
+ Outer.Inner o = new Outer().new Inner();
+ Class cl = o.getClass();
+
+ // Check out of the box class name
+ try {
+ o.work();
+ } catch (Exception e) {
+ checkException(e, 42);
+ }
+
+ // Clear and populate class caches via getName
+ clearNameCache(cl);
+ cl.getName();
+ try {
+ o.work();
+ } catch (Exception e) {
+ checkException(e, 51);
+ }
+
+ // Clear and populate class caches via stack trace
+ clearNameCache(cl);
+ try {
+ o.work();
+ } catch (Exception e) {
+ checkException(e, 59);
+ }
+ }
+
+ static void checkException(Exception e, int line) throws Exception {
+ StackTraceElement[] fs = e.getStackTrace();
+
+ if (fs.length < 2) {
+ throw new IllegalStateException("Exception should have at least two frames", e);
+ }
+
+ assertCorrect("StackTraceClassCache$Outer$Inner.work(StackTraceClassCache.java:95)", fs[0].toString(), e);
+ assertCorrect("StackTraceClassCache.main(StackTraceClassCache.java:" + line + ")", fs[1].toString(), e);
+ }
+
+ static void assertCorrect(String expected, String actual, Exception e) throws Exception {
+ if (!expected.equals(actual)) {
+ throw new IllegalStateException("Expected: " + expected + "; Actual: " + actual, e);
+ }
+ }
+
+ static void clearNameCache(Class cl) {
+ try {
+ Field f = Class.class.getDeclaredField("name");
+ f.setAccessible(true);
+ f.set(cl, null);
+ } catch (Exception e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ static class Outer {
+ class Inner {
+ void work() throws Exception {
+ throw new Exception("Sample exception");
+ }
+ }
+ }
+
+}
--- a/test/hotspot/jtreg/runtime/jni/checked/TestCheckedEnsureLocalCapacity.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/hotspot/jtreg/runtime/jni/checked/TestCheckedEnsureLocalCapacity.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,10 +47,13 @@
{ 1, 45 } // bad: copies >> capacity
};
+ // Patterns EXCEED_WARNING and WARNING are not anchored to the beginning
+ // of lines to allow matching interleaved output.
+
private static final String EXCEED_WARNING =
- "^WARNING: JNI local refs: \\d++, exceeds capacity:";
+ "WARNING: JNI local refs: \\d++, exceeds capacity:";
- private static final String WARNING = "^WARNING: ";
+ private static final String WARNING = "WARNING:";
public static void main(String[] args) throws Throwable {
if (args.length == 2) {
--- a/test/hotspot/jtreg/vmTestbase/nsk/jvmti/ThreadStart/threadstart002/threadstart002.cpp Tue Jan 08 17:20:28 2019 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/jvmti/ThreadStart/threadstart002/threadstart002.cpp Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,7 +34,7 @@
#define PASSED 0
#define STATUS_FAILED 2
-#define WAIT_TIME 2000
+#define WAIT_TIME 20000
static jvmtiEnv *jvmti = NULL;
static jvmtiCapabilities caps;
--- a/test/hotspot/jtreg/vmTestbase/nsk/share/test/StressOptions.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/share/test/StressOptions.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -53,7 +53,7 @@
}
/* Execution time in seconds */
- @Option(name = "stressTime", default_value = "60", description = "Stress execution time in seconds")
+ @Option(name = "stressTime", default_value = "30", description = "Stress execution time in seconds")
private long time;
/* Iterations factor */
--- a/test/hotspot/jtreg/vmTestbase/nsk/share/test/Stresser.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/hotspot/jtreg/vmTestbase/nsk/share/test/Stresser.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -48,7 +48,7 @@
* because average execution time of one iteration may be different.
* This is value which is enough to do what test intends to do and it should
* also give average execution time on most configurations less than
- * standard value of stressTime parameter (60 seconds).
+ * standard value of stressTime parameter (30 seconds).
*
* @see nsk.share.test.StressOptions for explanation of stress options.
*/
--- a/test/hotspot/jtreg/vmTestbase/vm/share/options/test/SimpleExampleWithOptionsAnnotation.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/hotspot/jtreg/vmTestbase/vm/share/options/test/SimpleExampleWithOptionsAnnotation.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -68,7 +68,7 @@
class StressOptions
{
- @Option(default_value="60", description="Stress time")
+ @Option(default_value="30", description="Stress time")
private long stressTime;
public long getStressTime()
--- a/test/jdk/java/lang/String/AlignIndent.java Tue Jan 08 17:20:28 2019 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,214 +0,0 @@
-/*
- * 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
- * @summary Unit tests for String#align and String#indent
- * @run main AlignIndent
- */
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-public class AlignIndent {
- static final List<String> ENDS = List.of("", "\n", " \n", "\n\n", "\n\n\n");
- static final List<String> MIDDLES = List.of(
- "",
- "xyz",
- " xyz",
- " xyz",
- "xyz ",
- " xyz ",
- " xyz ",
- "xyz\u2022",
- " xyz\u2022",
- "xyz\u2022 ",
- " xyz\u2022 ",
- " // comment"
- );
-
- public static void main(String[] args) {
- test1();
- test2();
- test3();
- test4();
- }
-
- /*
- * Test String#align() functionality.
- */
- static void test1() {
- for (String prefix : ENDS) {
- for (String suffix : ENDS) {
- for (String middle : MIDDLES) {
- {
- String input = prefix + " abc \n" + middle + "\n def \n" + suffix;
- String output = input.align();
-
- String[] inLines = input.split("\\R");
- String[] outLines = output.split("\\R");
-
- String[] inLinesBody = getBody(inLines);
-
- if (inLinesBody.length < outLines.length) {
- report("String::align()", "Result has more lines than expected", input, output);
- } else if (inLinesBody.length > outLines.length) {
- report("String::align()", "Result has fewer lines than expected", input, output);
- }
-
- int indent = -1;
- for (int i = 0; i < inLinesBody.length; i++) {
- String in = inLinesBody[i];
- String out = outLines[i];
- if (!out.isBlank()) {
- int offset = in.indexOf(out);
- if (offset == -1) {
- report("String::align()", "Portions of line are missing", input, output);
- }
- if (indent == -1) {
- indent = offset;
- } else if (offset != indent) {
- report("String::align()",
- "Inconsistent indentation in result", input, output);
- }
- }
- }
- }
- }
- }
- }
- }
-
- /*
- * Test String#align(int n) functionality.
- */
- static void test2() {
- for (int adjust : new int[] {-8, -7, -4, -3, -2, -1, 0, 1, 2, 3, 4, 7, 8}) {
- for (String prefix : ENDS) {
- for (String suffix : ENDS) {
- for (String middle : MIDDLES) {
- {
- String input = prefix + " abc \n" + middle + "\n def \n" + suffix;
- String output = input.align(adjust);
- String expected = input.align().indent(adjust);
-
- if (!output.equals(expected)) {
- report("String::align(int n)",
- "Result inconsistent with align().indent(n)", expected, output);
- }
- }
- }
- }
- }
- }
- }
-
- /*
- * Test String#indent(int n) functionality.
- */
- static void test3() {
- for (int adjust : new int[] {-8, -7, -4, -3, -2, -1, 0, 1, 2, 3, 4, 7, 8}) {
- for (String prefix : ENDS) {
- for (String suffix : ENDS) {
- for (String middle : MIDDLES) {
- String input = prefix + " abc \n" + middle + "\n def \n" + suffix;
- String output = input.indent(adjust);
-
- Stream<String> stream = input.lines();
- if (adjust > 0) {
- final String spaces = " ".repeat(adjust);
- stream = stream.map(s -> s.isBlank() ? s : spaces + s);
- } else if (adjust < 0) {
- stream = stream.map(s -> s.substring(Math.min(-adjust, indexOfNonWhitespace(s))));
- }
- String expected = stream.collect(Collectors.joining("\n", "", "\n"));
-
- if (!output.equals(expected)) {
- report("String::indent(int n)",
- "Result indentation not as expected", expected, output);
- }
- }
- }
- }
- }
- }
-
- /*
- * JDK-8212694: Using Raw String Literals with align() and Integer.MIN_VALUE causes out of memory error
- */
- static void test4() {
- try {
- String str = "\n A\n".align(Integer.MIN_VALUE);
- } catch (OutOfMemoryError ex) {
- System.err.println("align(Integer.MIN_VALUE) not clipping indentation");
- throw new RuntimeException();
- }
- }
-
- public static int indexOfNonWhitespace(String s) {
- int left = 0;
- while (left < s.length()) {
- char ch = s.charAt(left);
- if (ch != ' ' && ch != '\t' && !Character.isWhitespace(ch)) {
- break;
- }
- left++;
- }
- return left;
- }
-
-
- private static String[] getBody(String[] inLines) {
- int from = -1, to = -1;
- for (int i = 0; i < inLines.length; i++) {
- String line = inLines[i];
- if (!line.isBlank()) {
- if (from == -1) {
- from = i;
- }
- to = i + 1;
- }
- }
- return Arrays.copyOfRange(inLines, from, to);
- }
-
- /*
- * Report difference in result.
- */
- static void report(String test, String message, String input, String output) {
- System.err.println("Testing " + test + ": " + message);
- System.err.println();
- System.err.println("Input: length = " + input.length());
- System.err.println("_".repeat(40));
- System.err.print(input.replaceAll(" ", "."));
- System.err.println("_".repeat(40));
- System.err.println();
- System.err.println("Output: length = " + output.length());
- System.err.println("_".repeat(40));
- System.err.print(output.replaceAll(" ", "."));
- System.err.println("_".repeat(40));
- throw new RuntimeException();
- }
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/lang/String/Indent.java Thu Jan 10 13:13:56 2019 -0500
@@ -0,0 +1,130 @@
+/*
+ * 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
+ * @summary Unit tests for String#indent
+ * @run main Indent
+ */
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+public class Indent {
+ static final List<String> ENDS = List.of("", "\n", " \n", "\n\n", "\n\n\n");
+ static final List<String> MIDDLES = List.of(
+ "",
+ "xyz",
+ " xyz",
+ " xyz",
+ "xyz ",
+ " xyz ",
+ " xyz ",
+ "xyz\u2022",
+ " xyz\u2022",
+ "xyz\u2022 ",
+ " xyz\u2022 ",
+ " // comment"
+ );
+
+ public static void main(String[] args) {
+ test1();
+ }
+
+ /*
+ * Test String#indent(int n) functionality.
+ */
+ static void test1() {
+ for (int adjust : new int[] {-8, -7, -4, -3, -2, -1, 0, 1, 2, 3, 4, 7, 8}) {
+ for (String prefix : ENDS) {
+ for (String suffix : ENDS) {
+ for (String middle : MIDDLES) {
+ String input = prefix + " abc \n" + middle + "\n def \n" + suffix;
+ String output = input.indent(adjust);
+
+ Stream<String> stream = input.lines();
+ if (adjust > 0) {
+ final String spaces = " ".repeat(adjust);
+ stream = stream.map(s -> s.isBlank() ? s : spaces + s);
+ } else if (adjust < 0) {
+ stream = stream.map(s -> s.substring(Math.min(-adjust, indexOfNonWhitespace(s))));
+ }
+ String expected = stream.collect(Collectors.joining("\n", "", "\n"));
+
+ if (!output.equals(expected)) {
+ report("String::indent(int n)",
+ "Result indentation not as expected", expected, output);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public static int indexOfNonWhitespace(String s) {
+ int left = 0;
+ while (left < s.length()) {
+ char ch = s.charAt(left);
+ if (ch != ' ' && ch != '\t' && !Character.isWhitespace(ch)) {
+ break;
+ }
+ left++;
+ }
+ return left;
+ }
+
+
+ private static String[] getBody(String[] inLines) {
+ int from = -1, to = -1;
+ for (int i = 0; i < inLines.length; i++) {
+ String line = inLines[i];
+ if (!line.isBlank()) {
+ if (from == -1) {
+ from = i;
+ }
+ to = i + 1;
+ }
+ }
+ return Arrays.copyOfRange(inLines, from, to);
+ }
+
+ /*
+ * Report difference in result.
+ */
+ static void report(String test, String message, String input, String output) {
+ System.err.println("Testing " + test + ": " + message);
+ System.err.println();
+ System.err.println("Input: length = " + input.length());
+ System.err.println("_".repeat(40));
+ System.err.print(input.replaceAll(" ", "."));
+ System.err.println("_".repeat(40));
+ System.err.println();
+ System.err.println("Output: length = " + output.length());
+ System.err.println("_".repeat(40));
+ System.err.print(output.replaceAll(" ", "."));
+ System.err.println("_".repeat(40));
+ throw new RuntimeException();
+ }
+}
--- a/test/jdk/java/lang/constant/ClassDescTest.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/jdk/java/lang/constant/ClassDescTest.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -42,6 +42,7 @@
/**
* @test
+ * @bug 8215510
* @compile ClassDescTest.java
* @run testng ClassDescTest
* @summary unit tests for java.lang.constant.ClassDesc
@@ -215,7 +216,7 @@
}
public void testBadClassDescs() {
- List<String> badDescriptors = List.of("II", "I;", "Q", "L",
+ List<String> badDescriptors = List.of("II", "I;", "Q", "L", "",
"java.lang.String", "[]", "Ljava/lang/String",
"Ljava.lang.String;", "java/lang/String");
--- a/test/jdk/java/lang/constant/NameValidationTest.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/jdk/java/lang/constant/NameValidationTest.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
/**
* @test
+ * @bug 8215510
* @compile NameValidationTest.java
* @run testng NameValidationTest
* @summary unit tests for verifying member names
@@ -45,8 +46,8 @@
private static final String[] badMemberNames = new String[] {"xx.xx", "zz;zz", "[l", "aa/aa", "<cinit>"};
private static final String[] goodMemberNames = new String[] {"<clinit>", "<init>", "3", "~", "$", "qq"};
- private static final String[] badClassNames = new String[] {"zz;zz", "[l", "aa/aa"};
- private static final String[] goodClassNames = new String[] {"3", "~", "$", "qq", ".", "a.a"};
+ private static final String[] badClassNames = new String[] {"zz;zz", "[l", "aa/aa", ".", "a..b"};
+ private static final String[] goodClassNames = new String[] {"3", "~", "$", "qq", "a.a"};
public void testMemberNames() {
DirectMethodHandleDesc mh = MethodHandleDesc.of(Kind.VIRTUAL, CD_String, "isEmpty", "()Z");
--- a/test/jdk/java/lang/constant/boottest/java.base/java/lang/constant/ConstantUtilsTest.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/jdk/java/lang/constant/boottest/java.base/java/lang/constant/ConstantUtilsTest.java Thu Jan 10 13:13:56 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -43,14 +43,14 @@
public void testValidateMemberName() {
try {
- ConstantUtils.validateMemberName(null);
+ ConstantUtils.validateMemberName(null, false);
fail("");
} catch (NullPointerException e) {
// good
}
try {
- ConstantUtils.validateMemberName("");
+ ConstantUtils.validateMemberName("", false);
fail("");
} catch (IllegalArgumentException e) {
// good
@@ -59,7 +59,7 @@
List<String> badNames = List.of(".", ";", "[", "/", "<", ">");
for (String n : badNames) {
try {
- ConstantUtils.validateMemberName(n);
+ ConstantUtils.validateMemberName(n, true);
fail(n);
} catch (IllegalArgumentException e) {
// good
--- a/test/jdk/tools/launcher/ExecutionEnvironment.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/jdk/tools/launcher/ExecutionEnvironment.java Thu Jan 10 13:13:56 2019 -0500
@@ -241,17 +241,26 @@
*/
@Test
void testVmSelection() {
+ boolean haveSomeVM = false;
if (haveClientVM) {
- TestResult tr = doExec(javaCmd, "-client", "-version");
- if (!tr.matches(".*Client VM.*")) {
- flagError(tr, "the expected vm -client did not launch");
- }
+ tryVmOption("-client", ".*Client VM.*");
+ haveSomeVM = true;
}
if (haveServerVM) {
- TestResult tr = doExec(javaCmd, "-server", "-version");
- if (!tr.matches(".*Server VM.*")) {
- flagError(tr, "the expected vm -server did not launch");
- }
+ tryVmOption("-server", ".*Server VM.*");
+ haveSomeVM = true;
+ }
+ if (!haveSomeVM) {
+ String msg = "Don't have a known VM";
+ System.err.println(msg);
+ throw new RuntimeException(msg);
+ }
+ }
+
+ private void tryVmOption(String opt, String expected) {
+ TestResult tr = doExec(javaCmd, opt, "-version");
+ if (!tr.matches(expected)) {
+ flagError(tr, "the expected vm " + opt + " did not launch");
}
}
--- a/test/jdk/tools/launcher/Test7029048.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/jdk/tools/launcher/Test7029048.java Thu Jan 10 13:13:56 2019 -0500
@@ -59,13 +59,10 @@
private static final File srcLibjvmSo = new File(srcServerDir, LIBJVM);
private static final File dstLibDir = new File("lib");
- private static final File dstLibArchDir =
- new File(dstLibDir, getJreArch());
-
- private static final File dstServerDir = new File(dstLibArchDir, "server");
+ private static final File dstServerDir = new File(dstLibDir, "server");
private static final File dstServerLibjvm = new File(dstServerDir, LIBJVM);
- private static final File dstClientDir = new File(dstLibArchDir, "client");
+ private static final File dstClientDir = new File(dstLibDir, "client");
private static final File dstClientLibjvm = new File(dstClientDir, LIBJVM);
private static final Map<String, String> env = new HashMap<>();
--- a/test/jdk/tools/launcher/TestHelper.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/jdk/tools/launcher/TestHelper.java Thu Jan 10 13:13:56 2019 -0500
@@ -184,8 +184,7 @@
return jvmFile.exists();
} else {
File vmDir = new File(JAVA_LIB, type);
- File vmArchDir = new File(vmDir, getJreArch());
- File jvmFile = new File(vmArchDir, LIBJVM);
+ File jvmFile = new File(vmDir, LIBJVM);
return jvmFile.exists();
}
}
--- a/test/langtools/jdk/jshell/ReplToolTesting.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/langtools/jdk/jshell/ReplToolTesting.java Thu Jan 10 13:13:56 2019 -0500
@@ -22,6 +22,7 @@
*/
import java.io.ByteArrayOutputStream;
+import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
@@ -126,6 +127,14 @@
cmdin.setInput(s);
}
+ public void closeCommandInput() {
+ try {
+ cmdin.close();
+ } catch (IOException ex) {
+ throw new IllegalStateException(ex);
+ }
+ }
+
public final static Pattern idPattern = Pattern.compile("^\\s+(\\d+)");
public Consumer<String> assertList() {
return s -> {
@@ -755,6 +764,8 @@
class WaitingTestingInputStream extends TestingInputStream {
+ private boolean closed;
+
@Override
synchronized void setInput(String s) {
super.setInput(s);
@@ -764,7 +775,7 @@
synchronized void waitForInput() {
boolean interrupted = false;
try {
- while (available() == 0) {
+ while (available() == 0 && !closed) {
try {
wait();
} catch (InterruptedException e) {
@@ -790,6 +801,12 @@
waitForInput();
return super.read(b, off, len);
}
+
+ @Override
+ public synchronized void close() throws IOException {
+ closed = true;
+ notify();
+ }
}
class PromptedCommandOutputStream extends OutputStream {
--- a/test/langtools/jdk/jshell/ToolBasicTest.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/langtools/jdk/jshell/ToolBasicTest.java Thu Jan 10 13:13:56 2019 -0500
@@ -130,6 +130,18 @@
}
}
+ public void testCtrlD() {
+ test(false, new String[]{"--no-startup"},
+ a -> {
+ if (!a) {
+ closeCommandInput();
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+ );
+ }
+
private final Object lock = new Object();
private PrintWriter out;
private boolean isStopped;
--- a/test/langtools/jdk/jshell/ToolSimpleTest.java Tue Jan 08 17:20:28 2019 -0500
+++ b/test/langtools/jdk/jshell/ToolSimpleTest.java Thu Jan 10 13:13:56 2019 -0500
@@ -76,22 +76,6 @@
}
@Test
- public void testRawString() {
- test(false, new String[]{"--enable-preview", "--no-startup"},
- (a) -> assertCommand(a, "String s = `abc`", "s ==> \"abc\""),
- (a) -> assertCommand(a, "String a = `abc", ""),
- (a) -> assertCommand(a, "def`", "a ==> \"abc\\ndef\""),
- (a) -> assertCommand(a, "String bj = ``Hi, `Bob` and ```Jim```.``", "bj ==> \"Hi, `Bob` and ```Jim```.\""),
- (a) -> assertCommand(a, "String hw = ````````````", ""),
- (a) -> assertCommand(a, "Hello, world", ""),
- (a) -> assertCommand(a, "````````````;", "hw ==> \"\\nHello, world\\n\""),
- (a) -> assertCommand(a, "String uc = `\\u000d\\u000a`", "uc ==> \"\\\\u000d\\\\u000a\""),
- (a) -> assertCommand(a, "String es = `\\(.\\)\\1`", "es ==> \"\\\\(.\\\\)\\\\1\""),
- (a) -> assertCommand(a, "String end = `abc`+`def`+`ghi`", "end ==> \"abcdefghi\"")
- );
- }
-
- @Test
public void testSwitchExpression() {
test(false, new String[]{"--enable-preview", "--no-startup"},
(a) -> assertCommand(a, "enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }", "| created enum Day"),
--- a/test/langtools/tools/javac/RawStringLiteralLang.java Tue Jan 08 17:20:28 2019 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
- * 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
- * @summary Unit tests for Raw String Literal language changes
- * @compile --enable-preview -source 13 -encoding utf8 RawStringLiteralLang.java
- * @run main/othervm --enable-preview RawStringLiteralLang
- */
-
-public class RawStringLiteralLang {
- public static void main(String... args) {
- test1();
- test2();
- }
-
- /*
- * Test raw string functionality.
- */
- static void test1() {
- EQ(`abc`, "abc");
- EQ(`can't`, "can\'t");
- EQ(``can`t``, "can`t");
- EQ(`can\\'t`, "can\\\\'t");
- EQ(``can\\`t``, "can\\\\`t");
- EQ(`\t`, "\\t");
- EQ(`•`, "\u2022");
-
- LENGTH("abc``def", 8);
- EQ("abc`\u0020`def", "abc` `def");
- }
-
- /*
- * Test multi-line string functionality.
- */
- static void test2() {
- EQ(`abc
-def
-ghi`, "abc\ndef\nghi");
- EQ(`abc
-def
-ghi
-`, "abc\ndef\nghi\n");
- EQ(`
-abc
-def
-ghi`, "\nabc\ndef\nghi");
- EQ(`
-abc
-def
-ghi
-`, "\nabc\ndef\nghi\n");
- }
-
- /*
- * Raise an exception if the string is not the expected length.
- */
- static void LENGTH(String rawString, int length) {
- if (rawString == null || rawString.length() != length) {
- System.err.println("Failed LENGTH");
- System.err.println(rawString + " " + length);
- throw new RuntimeException("Failed LENGTH");
- }
- }
-
- /*
- * Raise an exception if the two input strings are not equal.
- */
- static void EQ(String input, String expected) {
- if (input == null || expected == null || !expected.equals(input)) {
- System.err.println("Failed EQ");
- System.err.println();
- System.err.println("Input:");
- System.err.println(input.replaceAll(" ", "."));
- System.err.println();
- System.err.println("Expected:");
- System.err.println(expected.replaceAll(" ", "."));
- throw new RuntimeException();
- }
- }
-}
--- a/test/langtools/tools/javac/RawStringLiteralLangAPI.java Tue Jan 08 17:20:28 2019 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-/*
- * 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
- * @summary Unit tests for Raw String Literal language changes
- * @library /tools/lib
- * @modules jdk.compiler/com.sun.tools.javac.api
- * jdk.compiler/com.sun.tools.javac.main
- * @build toolbox.ToolBox toolbox.JavacTask
- * @run main RawStringLiteralLangAPI
- */
-
-import toolbox.JavacTask;
-import toolbox.JavaTask;
-import toolbox.Task;
-import toolbox.ToolBox;
-
-public class RawStringLiteralLangAPI {
- private static ToolBox TOOLBOX = new ToolBox();
-
- public static void main(String... args) {
- test1();
- test2();
- test3();
- test4();
- }
-
- /*
- * Check that correct/incorrect syntax is properly detected
- */
- enum Test {
- t0(false, "`*`*`"),
- t1(false, "`\\u2022`\\u2022`"),
- t2(false, "``*`*`"),
- t3(false, "``\\u2022`\\u2022`"),
- t4(false, "`*`*``"),
- t5(false, "`\\u2022`\\u2022``"),
- t6(true, "``*`*``"),
- t7(true, "``\\u2022`\\u2022``"),
- t8(true, "`*``*`"),
- t9(true, "`\\u2022``\\u2022`"),
- ;
-
- Test(boolean pass, String string) {
- this.pass = pass;
- this.string = string;
- }
-
- boolean pass;
- String string;
- }
- static void test1() {
- for (Test t : Test.values()) {
- String code =
- "public class RawStringLiteralTest {\n" +
- " public static void main(String... args) {\n" +
- " String xxx = " + t.string + ";\n" +
- " }\n" +
- "}\n";
- if (t.pass) {
- compPass(code);
- } else {
- compFail(code);
- }
- }
- }
-
- /*
- * Check that misuse of \u0060 is properly detected
- */
- static void test2() {
- compFail("public class BadDelimiter {\n" +
- " public static void main(String... args) {\n" +
- " String xxx = \\u0060`abc`;\n" +
- " }\n" +
- "}\n");
- }
-
- /*
- * Check edge cases of raw string literal as last token
- */
- static void test3() {
- compFail("public class RawStringLiteralTest {\n" +
- " public static void main(String... args) {\n" +
- " String xxx = `abc`");
- compFail("public class RawStringLiteralTest {\n" +
- " public static void main(String... args) {\n" +
- " String xxx = `abc");
- compFail("public class RawStringLiteralTest {\n" +
- " public static void main(String... args) {\n" +
- " String xxx = `abc\u0000");
- }
-
- /*
- * Check line terminator translation
- */
- static void test4() {
- String[] terminators = new String[] { "\n", "\r\n", "\r" };
- for (String terminator : terminators) {
- String code = "public class LineTerminatorTest {" + terminator +
- " public static void main(String... args) {" + terminator +
- " String s =" + terminator +
- "`" + terminator +
- "abc" + terminator +
- "`;" + terminator +
- " System.out.println(s.equals(\"\\nabc\\n\"));" + terminator +
- " }" + terminator +
- "}" + terminator;
- new JavacTask(TOOLBOX)
- .sources(code)
- .classpath(".")
- .options("--enable-preview", "-source", "13")
- .run();
- String output = new JavaTask(TOOLBOX)
- .vmOptions("--enable-preview")
- .classpath(".")
- .classArgs("LineTerminatorTest")
- .run()
- .writeAll()
- .getOutput(Task.OutputKind.STDOUT);
-
- if (!output.contains("true")) {
- throw new RuntimeException("Error detected");
- }
- }
- }
-
- /*
- * Test source for successful compile.
- */
- static void compPass(String source) {
- String output = new JavacTask(TOOLBOX)
- .sources(source)
- .classpath(".")
- .options("--enable-preview", "-source", "13", "-encoding", "utf8")
- .run()
- .writeAll()
- .getOutput(Task.OutputKind.DIRECT);
-
- if (output.contains("compiler.err")) {
- throw new RuntimeException("Error detected");
- }
- }
-
- /*
- * Test source for unsuccessful compile and specific error.
- */
- static void compFail(String source) {
- String errors = new JavacTask(TOOLBOX)
- .sources(source)
- .classpath(".")
- .options("-XDrawDiagnostics", "--enable-preview", "-source", "13", "-encoding", "utf8")
- .run(Task.Expect.FAIL)
- .writeAll()
- .getOutput(Task.OutputKind.DIRECT);
-
- if (!errors.contains("compiler.err")) {
- throw new RuntimeException("No error detected");
- }
- }
-}
--- a/test/langtools/tools/javac/diags/examples/RawStringLiteral.java Tue Jan 08 17:20:28 2019 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * 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.
- */
-
-// key: compiler.err.unicode.backtick
-// key: compiler.misc.feature.raw.string.literals
-// key: compiler.warn.preview.feature.use.plural
-// options: --enable-preview -source 13 -Xlint:preview
-
-class RawStringLiteral {
- String m() {
- return `abc` + \u0060`def`;
- }
-}
-
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/micro/org/openjdk/bench/java/util/ImmutableColls.java Thu Jan 10 13:13:56 2019 -0500
@@ -0,0 +1,257 @@
+/*
+ * Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.bench.java.util;
+
+import org.openjdk.jmh.annotations.*;
+import org.openjdk.jmh.infra.Blackhole;
+
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Micros for the various collections implemented in
+ * java.util.ImmutableCollections
+ */
+@State(Scope.Benchmark)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+public class ImmutableColls {
+
+ public static String[] STRINGS = {"hi", "all", "of", "you"};
+
+ public static List<String> l0 = List.of();
+ public static List<String> l1 = List.of(Arrays.copyOf(STRINGS, 1));
+ public static List<String> l2 = List.of(Arrays.copyOf(STRINGS, 2));
+ public static List<String> l3 = List.of(Arrays.copyOf(STRINGS, 3));
+ public static List<String> l4 = List.of(Arrays.copyOf(STRINGS, 4));
+
+ public static Set<String> s0 = Set.copyOf(l0);
+ public static Set<String> s1 = Set.copyOf(l1);
+ public static Set<String> s2 = Set.copyOf(l2);
+ public static Set<String> s3 = Set.copyOf(l3);
+ public static Set<String> s4 = Set.copyOf(l4);
+
+ public static Map<String, String> m0 = Map.of();
+ public static Map<String, String> m1 = Map.of(STRINGS[0], STRINGS[0]);
+ public static Map<String, String> m2 = Map.of(STRINGS[0], STRINGS[0],
+ STRINGS[1], STRINGS[1]);
+ public static Map<String, String> m3 = Map.of(STRINGS[0], STRINGS[0],
+ STRINGS[1], STRINGS[1],
+ STRINGS[2], STRINGS[2]);
+ public static Map<String, String> m4 = Map.of(STRINGS[0], STRINGS[0],
+ STRINGS[1], STRINGS[1],
+ STRINGS[2], STRINGS[2],
+ STRINGS[3], STRINGS[3]);
+
+ public static List<String> a0 = new ArrayList<>(l0);
+ public static List<String> a1 = new ArrayList<>(l1);
+ public static List<String> a2 = new ArrayList<>(l2);
+ public static List<String> a3 = new ArrayList<>(l3);
+ public static List<String> a4 = new ArrayList<>(l4);
+
+ public static final List<String> fl0 = List.of();
+ public static final List<String> fl1 = List.copyOf(l1);
+ public static final List<String> fl2 = List.copyOf(l2);
+ public static final List<String> fl3 = List.copyOf(l3);
+ public static final List<String> fl4 = List.copyOf(l4);
+
+ public static final List<String> fsl0 = fl0.subList(0, 0);
+ public static final List<String> fsl1 = fl2.subList(1, 2);
+ public static final List<String> fsl2 = fl3.subList(0, 2);
+ public static final List<String> fsl3 = fl4.subList(0, 3);
+
+ public static final Set<String> fs0 = Set.copyOf(l0);
+ public static final Set<String> fs1 = Set.copyOf(l1);
+ public static final Set<String> fs2 = Set.copyOf(l2);
+ public static final Set<String> fs3 = Set.copyOf(l3);
+ public static final Set<String> fs4 = Set.copyOf(l4);
+
+ public static final Map<String, String> fm0 = Map.copyOf(m0);
+ public static final Map<String, String> fm1 = Map.copyOf(m1);
+ public static final Map<String, String> fm2 = Map.copyOf(m2);
+ public static final Map<String, String> fm3 = Map.copyOf(m3);
+ public static final Map<String, String> fm4 = Map.copyOf(m4);
+
+ public static final List<String> fa0 = new ArrayList<>(l0);
+ public static final List<String> fa1 = new ArrayList<>(l1);
+ public static final List<String> fa2 = new ArrayList<>(l2);
+ public static final List<String> fa3 = new ArrayList<>(l3);
+ public static final List<String> fa4 = new ArrayList<>(l4);
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public int sumSizesList() {
+ return sizeOf(l0) +
+ sizeOf(l1) +
+ sizeOf(l2) +
+ sizeOf(l3) +
+ sizeOf(l4);
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public int finalSumSizesList() {
+ return sizeOf(fl0) +
+ sizeOf(fl1) +
+ sizeOf(fl2) +
+ sizeOf(fl3) +
+ sizeOf(fl4);
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public int sumSizesArrayList() {
+ return sizeOf2(a0) +
+ sizeOf2(a1) +
+ sizeOf2(a2) +
+ sizeOf2(a3) +
+ sizeOf2(a4);
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public int finalSumSizesArrayList() {
+ return sizeOf2(fa0) +
+ sizeOf2(fa1) +
+ sizeOf2(fa2) +
+ sizeOf2(fa3) +
+ sizeOf2(fa4);
+ }
+
+ public int sizeOf2(List<String> list) {
+ return list.size();
+ }
+
+ public int sizeOf(List<String> list) {
+ return list.size();
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public int getFromList() {
+ return get(l1, 0).length() +
+ get(l2, 1).length() +
+ get(l3, 2).length() +
+ get(l4, 3).length();
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public int finalGetFromList() {
+ return get(fl1, 0).length() +
+ get(fl2, 1).length() +
+ get(fl3, 2).length() +
+ get(fl4, 3).length();
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public void toArrayFromSet(Blackhole bh) {
+ bh.consume(fs4.toArray());
+ bh.consume(s1.toArray());
+ bh.consume(s3.toArray());
+ bh.consume(fs2.toArray());
+ bh.consume(s0.toArray());
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public void toArrayFromMap(Blackhole bh) {
+ bh.consume(fm4.entrySet().toArray());
+ bh.consume(m1.entrySet().toArray());
+ bh.consume(m3.entrySet().toArray());
+ bh.consume(fm2.entrySet().toArray());
+ bh.consume(m0.entrySet().toArray());
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public void toArrayFromList(Blackhole bh) {
+ bh.consume(fl4.toArray());
+ bh.consume(fl1.toArray());
+ bh.consume(l3.toArray());
+ bh.consume(l0.toArray());
+ bh.consume(fsl3.toArray());
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public void toTypedArrayFromSet(Blackhole bh) {
+ bh.consume(fs4.toArray(new String[0]));
+ bh.consume(s1.toArray(new String[0]));
+ bh.consume(s3.toArray(new String[0]));
+ bh.consume(fs2.toArray(new String[0]));
+ bh.consume(s0.toArray(new String[0]));
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public void toTypedArrayFromMap(Blackhole bh) {
+ bh.consume(fm4.entrySet().toArray(new Map.Entry[0]));
+ bh.consume(m1.entrySet().toArray(new Map.Entry[0]));
+ bh.consume(m3.entrySet().toArray(new Map.Entry[0]));
+ bh.consume(fm2.entrySet().toArray(new Map.Entry[0]));
+ bh.consume(m0.entrySet().toArray(new Map.Entry[0]));
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public void toTypedArrayFromList(Blackhole bh) {
+ bh.consume(fl4.toArray(new String[0]));
+ bh.consume(fl1.toArray(new String[0]));
+ bh.consume(l3.toArray(new String[0]));
+ bh.consume(l0.toArray(new String[0]));
+ bh.consume(fsl3.toArray(new String[0]));
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public void copyOfLists(Blackhole bh) {
+ bh.consume(List.copyOf(fl1));
+ bh.consume(List.copyOf(fl4));
+ bh.consume(List.copyOf(fsl2));
+ bh.consume(List.copyOf(fsl3));
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public int finalGetFromArrayList() {
+ return get2(fa1, 0).length() +
+ get2(fa2, 1).length() +
+ get2(fa3, 2).length() +
+ get2(fa4, 3).length();
+ }
+
+ public String get2(List<String> list, int idx) {
+ return list.get(idx);
+ }
+
+ public String get(List<String> list, int idx) {
+ return list.get(idx);
+ }
+
+ @Benchmark
+ @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+ public Set<String> createSetOf() {
+ return Set.of(STRINGS);
+ }
+}