# HG changeset patch # User jwilhelm # Date 1547071189 -3600 # Node ID 32c6cc4305261c4c050d37f251254001e6bb4817 # Parent 716c746165b2b8be1738236221f754937a179391# Parent ee1f64096d7c8c943bf1304e6e152d6daa475265 Merge diff -r 716c746165b2 -r 32c6cc430526 make/scripts/pandoc-html-manpage-filter.js --- a/make/scripts/pandoc-html-manpage-filter.js Tue Jan 08 17:37:57 2019 -0800 +++ b/make/scripts/pandoc-html-manpage-filter.js Wed Jan 09 22:59:49 2019 +0100 @@ -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(), diff -r 716c746165b2 -r 32c6cc430526 src/hotspot/os_cpu/linux_x86/gc/z/zArguments_linux_x86.cpp --- a/src/hotspot/os_cpu/linux_x86/gc/z/zArguments_linux_x86.cpp Tue Jan 08 17:37:57 2019 -0800 +++ b/src/hotspot/os_cpu/linux_x86/gc/z/zArguments_linux_x86.cpp Wed Jan 09 22:59:49 2019 +0100 @@ -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 } diff -r 716c746165b2 -r 32c6cc430526 src/hotspot/share/classfile/systemDictionary.cpp --- a/src/hotspot/share/classfile/systemDictionary.cpp Tue Jan 08 17:37:57 2019 -0800 +++ b/src/hotspot/share/classfile/systemDictionary.cpp Wed Jan 09 22:59:49 2019 +0100 @@ -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); } diff -r 716c746165b2 -r 32c6cc430526 src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp --- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Tue Jan 08 17:37:57 2019 -0800 +++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Wed Jan 09 22:59:49 2019 +0100 @@ -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; } diff -r 716c746165b2 -r 32c6cc430526 src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp --- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp Tue Jan 08 17:37:57 2019 -0800 +++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp Wed Jan 09 22:59:49 2019 +0100 @@ -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, diff -r 716c746165b2 -r 32c6cc430526 src/hotspot/share/oops/instanceKlass.cpp --- a/src/hotspot/share/oops/instanceKlass.cpp Tue Jan 08 17:37:57 2019 -0800 +++ b/src/hotspot/share/oops/instanceKlass.cpp Wed Jan 09 22:59:49 2019 +0100 @@ -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 diff -r 716c746165b2 -r 32c6cc430526 src/hotspot/share/oops/instanceKlass.hpp --- a/src/hotspot/share/oops/instanceKlass.hpp Tue Jan 08 17:37:57 2019 -0800 +++ b/src/hotspot/share/oops/instanceKlass.hpp Wed Jan 09 22:59:49 2019 +0100 @@ -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; } diff -r 716c746165b2 -r 32c6cc430526 src/hotspot/share/opto/callnode.cpp --- a/src/hotspot/share/opto/callnode.cpp Tue Jan 08 17:37:57 2019 -0800 +++ b/src/hotspot/share/opto/callnode.cpp Wed Jan 09 22:59:49 2019 +0100 @@ -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, diff -r 716c746165b2 -r 32c6cc430526 src/hotspot/share/opto/callnode.hpp --- a/src/hotspot/share/opto/callnode.hpp Tue Jan 08 17:37:57 2019 -0800 +++ b/src/hotspot/share/opto/callnode.hpp Wed Jan 09 22:59:49 2019 +0100 @@ -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; } diff -r 716c746165b2 -r 32c6cc430526 src/hotspot/share/opto/compile.cpp --- a/src/hotspot/share/opto/compile.cpp Tue Jan 08 17:37:57 2019 -0800 +++ b/src/hotspot/share/opto/compile.cpp Wed Jan 09 22:59:49 2019 +0100 @@ -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; diff -r 716c746165b2 -r 32c6cc430526 src/hotspot/share/opto/compile.hpp --- a/src/hotspot/share/opto/compile.hpp Tue Jan 08 17:37:57 2019 -0800 +++ b/src/hotspot/share/opto/compile.hpp Wed Jan 09 22:59:49 2019 +0100 @@ -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; } diff -r 716c746165b2 -r 32c6cc430526 src/hotspot/share/opto/node.cpp --- a/src/hotspot/share/opto/node.cpp Tue Jan 08 17:37:57 2019 -0800 +++ b/src/hotspot/share/opto/node.cpp Wed Jan 09 22:59:49 2019 +0100 @@ -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); diff -r 716c746165b2 -r 32c6cc430526 src/hotspot/share/opto/phaseX.cpp --- a/src/hotspot/share/opto/phaseX.cpp Tue Jan 08 17:37:57 2019 -0800 +++ b/src/hotspot/share/opto/phaseX.cpp Wed Jan 09 22:59:49 2019 +0100 @@ -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: diff -r 716c746165b2 -r 32c6cc430526 src/hotspot/share/runtime/arguments.cpp --- a/src/hotspot/share/runtime/arguments.cpp Tue Jan 08 17:37:57 2019 -0800 +++ b/src/hotspot/share/runtime/arguments.cpp Wed Jan 09 22:59:49 2019 +0100 @@ -3793,6 +3793,7 @@ #if defined(AIX) UNSUPPORTED_OPTION(AllocateHeapAt); + UNSUPPORTED_OPTION(AllocateOldGenAt); #endif #ifndef PRODUCT diff -r 716c746165b2 -r 32c6cc430526 src/java.base/share/classes/java/lang/String.java --- a/src/java.base/share/classes/java/lang/String.java Tue Jan 08 17:37:57 2019 -0800 +++ b/src/java.base/share/classes/java/lang/String.java Wed Jan 09 22:59:49 2019 +0100 @@ -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. - *
- * This string is first conceptually separated into lines as if by - * {@link String#lines()}. - *
- * Then, the minimum indentation (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 min value is the smallest of these counts. - *
- * For each non-blank line, min 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. - *
- * Leading and trailing blank lines, if any, are removed. Trailing spaces are - * preserved. - *
- * Each line is suffixed with a line feed character {@code "\n"} (U+000A). - *
- * 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: - *
- * - * @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. - *- * ` - * This is the first line - * This is the second line - * `.align(); - * - * returns - * This is the first line - * This is the second line - *
- * Invoking this method is equivalent to: - *
- * {@code this.align().indent(n)} - *- * - * @apiNote - * Examples: - *
- * - * @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. + *- * ` - * 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 - *
+ * Any exception thrown by {@code f()} will be propagated to the
+ * caller.
*
* @param f functional interface to a apply
*
diff -r 716c746165b2 -r 32c6cc430526 src/java.base/share/classes/java/lang/constant/ClassDesc.java
--- a/src/java.base/share/classes/java/lang/constant/ClassDesc.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.base/share/classes/java/lang/constant/ClassDesc.java Wed Jan 09 22:59:49 2019 +0100
@@ -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));
diff -r 716c746165b2 -r 32c6cc430526 src/java.base/share/classes/java/lang/constant/ConstantUtils.java
--- a/src/java.base/share/classes/java/lang/constant/ConstantUtils.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.base/share/classes/java/lang/constant/ConstantUtils.java Wed Jan 09 22:59:49 2019 +0100
@@ -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;
}
}
diff -r 716c746165b2 -r 32c6cc430526 src/java.base/share/classes/java/lang/constant/DirectMethodHandleDescImpl.java
--- a/src/java.base/share/classes/java/lang/constant/DirectMethodHandleDescImpl.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.base/share/classes/java/lang/constant/DirectMethodHandleDescImpl.java Wed Jan 09 22:59:49 2019 +0100
@@ -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) {
diff -r 716c746165b2 -r 32c6cc430526 src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java
--- a/src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java Wed Jan 09 22:59:49 2019 +0100
@@ -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());
diff -r 716c746165b2 -r 32c6cc430526 src/java.base/share/classes/java/lang/constant/DynamicConstantDesc.java
--- a/src/java.base/share/classes/java/lang/constant/DynamicConstantDesc.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.base/share/classes/java/lang/constant/DynamicConstantDesc.java Wed Jan 09 22:59:49 2019 +0100
@@ -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();
diff -r 716c746165b2 -r 32c6cc430526 src/java.base/share/classes/java/lang/constant/ReferenceClassDescImpl.java
--- a/src/java.base/share/classes/java/lang/constant/ReferenceClassDescImpl.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.base/share/classes/java/lang/constant/ReferenceClassDescImpl.java Wed Jan 09 22:59:49 2019 +0100
@@ -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));
diff -r 716c746165b2 -r 32c6cc430526 src/java.base/share/classes/java/time/chrono/JapaneseEra.java
--- a/src/java.base/share/classes/java/time/chrono/JapaneseEra.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.base/share/classes/java/time/chrono/JapaneseEra.java Wed Jan 09 22:59:49 2019 +0100
@@ -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.
*
diff -r 716c746165b2 -r 32c6cc430526 src/java.base/share/classes/sun/security/tools/keytool/Resources_ja.java
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_ja.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_ja.java Wed Jan 09 22:59:49 2019 +0100
@@ -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"},
};
diff -r 716c746165b2 -r 32c6cc430526 src/java.base/share/classes/sun/security/tools/keytool/Resources_zh_CN.java
--- a/src/java.base/share/classes/sun/security/tools/keytool/Resources_zh_CN.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.base/share/classes/sun/security/tools/keytool/Resources_zh_CN.java Wed Jan 09 22:59:49 2019 +0100
@@ -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"},
};
diff -r 716c746165b2 -r 32c6cc430526 src/java.base/share/classes/sun/security/util/AuthResources_ja.java
--- a/src/java.base/share/classes/sun/security/util/AuthResources_ja.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.base/share/classes/sun/security/util/AuthResources_ja.java Wed Jan 09 22:59:49 2019 +0100
@@ -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.",
diff -r 716c746165b2 -r 32c6cc430526 src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor7.java
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor7.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractAnnotationValueVisitor7.java Wed Jan 09 22:59:49 2019 +0100
@@ -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
}
diff -r 716c746165b2 -r 32c6cc430526 src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor7.java
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor7.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractElementVisitor7.java Wed Jan 09 22:59:49 2019 +0100
@@ -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
}
diff -r 716c746165b2 -r 32c6cc430526 src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor7.java
--- a/src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor7.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.compiler/share/classes/javax/lang/model/util/AbstractTypeVisitor7.java Wed Jan 09 22:59:49 2019 +0100
@@ -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
}
diff -r 716c746165b2 -r 32c6cc430526 src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor7.java
--- a/src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor7.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.compiler/share/classes/javax/lang/model/util/ElementKindVisitor7.java Wed Jan 09 22:59:49 2019 +0100
@@ -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
}
diff -r 716c746165b2 -r 32c6cc430526 src/java.compiler/share/classes/javax/lang/model/util/ElementScanner7.java
--- a/src/java.compiler/share/classes/javax/lang/model/util/ElementScanner7.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.compiler/share/classes/javax/lang/model/util/ElementScanner7.java Wed Jan 09 22:59:49 2019 +0100
@@ -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
}
diff -r 716c746165b2 -r 32c6cc430526 src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor7.java
--- a/src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor7.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.compiler/share/classes/javax/lang/model/util/SimpleAnnotationValueVisitor7.java Wed Jan 09 22:59:49 2019 +0100
@@ -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
}
diff -r 716c746165b2 -r 32c6cc430526 src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor7.java
--- a/src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor7.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.compiler/share/classes/javax/lang/model/util/SimpleElementVisitor7.java Wed Jan 09 22:59:49 2019 +0100
@@ -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
}
diff -r 716c746165b2 -r 32c6cc430526 src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor7.java
--- a/src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor7.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.compiler/share/classes/javax/lang/model/util/SimpleTypeVisitor7.java Wed Jan 09 22:59:49 2019 +0100
@@ -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
}
diff -r 716c746165b2 -r 32c6cc430526 src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor7.java
--- a/src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor7.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/java.compiler/share/classes/javax/lang/model/util/TypeKindVisitor7.java Wed Jan 09 22:59:49 2019 +0100
@@ -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
}
diff -r 716c746165b2 -r 32c6cc430526 src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_ja.properties
--- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_ja.properties Tue Jan 08 17:37:57 2019 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_ja.properties Wed Jan 09 22:59:49 2019 +0100
@@ -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 = \u5185\u306E'{@code'}
dc.tag.empty = \u7A7A\u306E<{0}>\u30BF\u30B0
+dc.tag.a.within.a = \u306B\u5C55\u958B\u3055\u308C\u308B\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}>
diff -r 716c746165b2 -r 32c6cc430526 src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_zh_CN.properties
--- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_zh_CN.properties Tue Jan 08 17:37:57 2019 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint_zh_CN.properties Wed Jan 09 22:59:49 2019 +0100
@@ -60,6 +60,7 @@
dc.service.not.found = \u627E\u4E0D\u5230\u670D\u52A1\u7C7B\u578B
dc.tag.code.within.code = '{@code'} \u5728
\u4E2D
dc.tag.empty = <{0}> \u6807\u8BB0\u4E3A\u7A7A
+dc.tag.a.within.a = {0} \u6807\u8BB0\uFF0C\u5176\u6269\u5C55\u5230 \uFF0C\u4F4D\u4E8E \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}>
diff -r 716c746165b2 -r 32c6cc430526 src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Preview.java Wed Jan 09 22:59:49 2019 +0100
@@ -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'
diff -r 716c746165b2 -r 32c6cc430526 src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java Wed Jan 09 22:59:49 2019 +0100
@@ -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,
diff -r 716c746165b2 -r 32c6cc430526 src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java Wed Jan 09 22:59:49 2019 +0100
@@ -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 {
diff -r 716c746165b2 -r 32c6cc430526 src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java Tue Jan 08 17:37:57 2019 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java Wed Jan 09 22:59:49 2019 +0100
@@ -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.
diff -r 716c746165b2 -r 32c6cc430526 src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Tue Jan 08 17:37:57 2019 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Wed Jan 09 22:59:49 2019 +0100
@@ -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
diff -r 716c746165b2 -r 32c6cc430526 src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties Tue Jan 08 17:37:57 2019 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties Wed Jan 09 22:59:49 2019 +0100
@@ -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
\nfor ({0} c : {0}.values())\n System.out.println(c);\n
+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
diff -r 716c746165b2 -r 32c6cc430526 src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties Tue Jan 08 17:37:57 2019 -0800
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties Wed Jan 09 22:59:49 2019 +0100
@@ -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\nfor ({0} c : {0}.values())\n System.out.println(c);\n
+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
diff -r 716c746165b2 -r 32c6cc430526 src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_ja.properties
--- a/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_ja.properties Tue Jan 08 17:37:57 2019 -0800
+++ b/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/jdeps_ja.properties Wed Jan 09 22:59:49 2019 +0100
@@ -20,6 +20,10 @@
main.opt.require=\ --require