--- a/src/hotspot/cpu/x86/x86_64.ad Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/cpu/x86/x86_64.ad Fri Nov 09 11:15:38 2018 -0500
@@ -11925,9 +11925,9 @@
ins_pipe(ialu_cr_reg_mem);
%}
-instruct testB_mem_imm(rFlagsReg cr, memory mem, immI8 imm, immI0 zero)
-%{
- match(Set cr (CmpI (AndI (LoadB mem) imm) zero));
+instruct testUB_mem_imm(rFlagsReg cr, memory mem, immU8 imm, immI0 zero)
+%{
+ match(Set cr (CmpI (AndI (LoadUB mem) imm) zero));
ins_cost(125);
format %{ "testb $mem, $imm" %}
--- a/src/hotspot/share/classfile/systemDictionaryShared.cpp Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/classfile/systemDictionaryShared.cpp Fri Nov 09 11:15:38 2018 -0500
@@ -27,6 +27,7 @@
#include "classfile/classListParser.hpp"
#include "classfile/classLoader.hpp"
#include "classfile/classLoaderData.inline.hpp"
+#include "classfile/classLoaderDataGraph.hpp"
#include "classfile/classLoaderExt.hpp"
#include "classfile/dictionary.hpp"
#include "classfile/javaClasses.hpp"
@@ -782,8 +783,16 @@
}
}
+void SystemDictionaryShared::finalize_verification_constraints_for(InstanceKlass* k) {
+ if (!k->is_unsafe_anonymous()) {
+ SharedDictionaryEntry* entry = ((SharedDictionary*)(k->class_loader_data()->dictionary()))->find_entry_for(k);
+ entry->finalize_verification_constraints();
+ }
+}
+
void SystemDictionaryShared::finalize_verification_constraints() {
- boot_loader_dictionary()->finalize_verification_constraints();
+ MutexLocker mcld(ClassLoaderDataGraph_lock);
+ ClassLoaderDataGraph::dictionary_classes_do(finalize_verification_constraints_for);
}
void SystemDictionaryShared::check_verification_constraints(InstanceKlass* klass,
@@ -810,28 +819,6 @@
return NULL;
}
-void SharedDictionary::finalize_verification_constraints() {
- int bytes = 0, count = 0;
- for (int index = 0; index < table_size(); index++) {
- for (SharedDictionaryEntry *probe = bucket(index);
- probe != NULL;
- probe = probe->next()) {
- int n = probe->finalize_verification_constraints();
- if (n > 0) {
- bytes += n;
- count ++;
- }
- }
- }
- if (log_is_enabled(Info, cds, verification)) {
- double avg = 0;
- if (count > 0) {
- avg = double(bytes) / double(count);
- }
- log_info(cds, verification)("Recorded verification constraints for %d classes = %d bytes (avg = %.2f bytes) ", count, bytes, avg);
- }
-}
-
void SharedDictionaryEntry::add_verification_constraint(Symbol* name,
Symbol* from_name, bool from_field_is_protected, bool from_is_array, bool from_is_object) {
if (_verifier_constraints == NULL) {
--- a/src/hotspot/share/classfile/systemDictionaryShared.hpp Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/classfile/systemDictionaryShared.hpp Fri Nov 09 11:15:38 2018 -0500
@@ -172,7 +172,6 @@
public:
SharedDictionaryEntry* find_entry_for(InstanceKlass* klass);
- void finalize_verification_constraints();
bool add_non_builtin_klass(const Symbol* class_name,
ClassLoaderData* loader_data,
@@ -283,7 +282,7 @@
Handle class_loader,
Handle protection_domain,
TRAPS);
-
+ static void finalize_verification_constraints_for(InstanceKlass* k);
public:
// Called by PLATFORM/APP loader only
static InstanceKlass* find_or_load_shared_class(Symbol* class_name,
--- a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp Fri Nov 09 11:15:38 2018 -0500
@@ -288,6 +288,9 @@
#ifdef ASSERT
virtual bool verify_gc_alias_type(const TypePtr* adr_type, int offset) const { return false; }
#endif
+
+ virtual bool final_graph_reshaping(Compile* compile, Node* n, uint opcode) const { return false; }
+
};
#endif // SHARE_GC_SHARED_C2_BARRIERSETC2_HPP
--- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Fri Nov 09 11:15:38 2018 -0500
@@ -1435,6 +1435,29 @@
return type == T_OBJECT || type == T_ARRAY;
}
+bool ZBarrierSetC2::final_graph_reshaping(Compile* compile, Node* n, uint opcode) const {
+ bool handled;
+ switch (opcode) {
+ case Op_LoadBarrierSlowReg:
+ case Op_LoadBarrierWeakSlowReg:
+#ifdef ASSERT
+ if (VerifyOptoOopOffsets) {
+ MemNode* mem = n->as_Mem();
+ // Check to see if address types have grounded out somehow.
+ const TypeInstPtr* tp = mem->in(MemNode::Address)->bottom_type()->isa_instptr();
+ ciInstanceKlass* k = tp->klass()->as_instance_klass();
+ bool oop_offset_is_sane = k->contains_field_offset(tp->offset());
+ assert(!tp || oop_offset_is_sane, "");
+ }
+#endif
+ handled = true;
+ break;
+ default:
+ handled = false;
+ }
+ return handled;
+}
+
// == Verification ==
#ifdef ASSERT
--- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp Fri Nov 09 11:15:38 2018 -0500
@@ -207,6 +207,8 @@
static void find_dominating_barriers(PhaseIterGVN& igvn);
static void loop_optimize_gc_barrier(PhaseIdealLoop* phase, Node* node, bool last_round);
+ virtual bool final_graph_reshaping(Compile* compile, Node* n, uint opcode) const;
+
#ifdef ASSERT
virtual void verify_gc_barriers(Compile* compile, CompilePhase phase) const;
#endif
--- a/src/hotspot/share/memory/heapShared.cpp Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/memory/heapShared.cpp Fri Nov 09 11:15:38 2018 -0500
@@ -886,6 +886,10 @@
Klass* k = SystemDictionary::resolve_or_null(klass_name, THREAD);
assert(k != NULL && !HAS_PENDING_EXCEPTION, "class must exist");
InstanceKlass* ik = InstanceKlass::cast(k);
+ assert(InstanceKlass::cast(ik)->is_shared_boot_class(),
+ "Only support boot classes");
+ ik->initialize(THREAD);
+ guarantee(!HAS_PENDING_EXCEPTION, "exception in initialize");
ArchivableStaticFieldFinder finder(ik, field_name);
ik->do_local_static_fields(&finder);
--- a/src/hotspot/share/memory/metaspace.cpp Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/memory/metaspace.cpp Fri Nov 09 11:15:38 2018 -0500
@@ -1260,6 +1260,8 @@
MetaWord* Metaspace::allocate(ClassLoaderData* loader_data, size_t word_size,
MetaspaceObj::Type type, TRAPS) {
assert(!_frozen, "sanity");
+ assert(!(DumpSharedSpaces && THREAD->is_VM_thread()), "sanity");
+
if (HAS_PENDING_EXCEPTION) {
assert(false, "Should not allocate with exception pending");
return NULL; // caller does a CHECK_NULL too
@@ -1277,12 +1279,10 @@
tracer()->report_metaspace_allocation_failure(loader_data, word_size, type, mdtype);
// Allocation failed.
- if (is_init_completed() && !(DumpSharedSpaces && THREAD->is_VM_thread())) {
+ if (is_init_completed()) {
// Only start a GC if the bootstrapping has completed.
- // Also, we cannot GC if we are at the end of the CDS dumping stage which runs inside
- // the VM thread.
-
- // Try to clean out some memory and retry.
+ // Try to clean out some heap memory and retry. This can prevent premature
+ // expansion of the metaspace.
result = Universe::heap()->satisfy_failed_metadata_allocation(loader_data, word_size, mdtype);
}
}
@@ -1408,6 +1408,7 @@
}
ClassLoaderMetaspace::~ClassLoaderMetaspace() {
+ Metaspace::assert_not_frozen();
DEBUG_ONLY(Atomic::inc(&g_internal_statistics.num_metaspace_deaths));
delete _vsm;
if (Metaspace::using_class_space()) {
--- a/src/hotspot/share/memory/metaspaceShared.cpp Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/memory/metaspaceShared.cpp Fri Nov 09 11:15:38 2018 -0500
@@ -1207,10 +1207,6 @@
public:
static void copy_and_compact() {
- // We should no longer allocate anything from the metaspace, so that
- // we can have a stable set of MetaspaceObjs to work with.
- Metaspace::freeze();
-
ResourceMark rm;
SortedSymbolClosure the_ssc; // StackObj
_ssc = &the_ssc;
@@ -1356,6 +1352,14 @@
}
void VM_PopulateDumpSharedSpace::doit() {
+ // We should no longer allocate anything from the metaspace, so that:
+ //
+ // (1) Metaspace::allocate might trigger GC if we have run out of
+ // committed metaspace, but we can't GC because we're running
+ // in the VM thread.
+ // (2) ArchiveCompactor needs to work with a stable set of MetaspaceObjs.
+ Metaspace::freeze();
+
Thread* THREAD = VMThread::vm_thread();
FileMapInfo::check_nonempty_dir_in_shared_path_table();
@@ -1420,8 +1424,6 @@
// any dictionaries.
NOT_PRODUCT(assert_no_unsafe_anonymous_classes_in_dictionaries());
- SystemDictionaryShared::finalize_verification_constraints();
-
ArchiveCompactor::initialize();
ArchiveCompactor::copy_and_compact();
@@ -1703,6 +1705,8 @@
log_info(cds)("Shared spaces: preloaded %d classes", class_count);
+ HeapShared::init_subgraph_entry_fields(THREAD);
+
// Rewrite and link classes
tty->print_cr("Rewriting and linking classes ...");
@@ -1714,7 +1718,8 @@
tty->print_cr("Rewriting and linking classes: done");
SystemDictionary::clear_invoke_method_table();
- HeapShared::init_subgraph_entry_fields(THREAD);
+
+ SystemDictionaryShared::finalize_verification_constraints();
VM_PopulateDumpSharedSpace op;
VMThread::execute(&op);
--- a/src/hotspot/share/opto/callnode.cpp Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/opto/callnode.cpp Fri Nov 09 11:15:38 2018 -0500
@@ -26,6 +26,8 @@
#include "compiler/compileLog.hpp"
#include "ci/bcEscapeAnalyzer.hpp"
#include "compiler/oopMap.hpp"
+#include "gc/shared/barrierSet.hpp"
+#include "gc/shared/c2/barrierSetC2.hpp"
#include "interpreter/interpreter.hpp"
#include "opto/callGenerator.hpp"
#include "opto/callnode.hpp"
--- a/src/hotspot/share/opto/compile.cpp Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/opto/compile.cpp Fri Nov 09 11:15:38 2018 -0500
@@ -2792,6 +2792,18 @@
}
#endif
// Count FPU ops and common calls, implements item (3)
+ bool gc_handled = BarrierSet::barrier_set()->barrier_set_c2()->final_graph_reshaping(this, n, nop);
+ if (!gc_handled) {
+ final_graph_reshaping_main_switch(n, frc, nop);
+ }
+
+ // Collect CFG split points
+ if (n->is_MultiBranch() && !n->is_RangeCheck()) {
+ frc._tests.push(n);
+ }
+}
+
+void Compile::final_graph_reshaping_main_switch(Node* n, Final_Reshape_Counts& frc, uint nop) {
switch( nop ) {
// Count all float operations that may use FPU
case Op_AddF:
@@ -2938,18 +2950,13 @@
case Op_LoadL_unaligned:
case Op_LoadPLocked:
case Op_LoadP:
-#if INCLUDE_ZGC
- case Op_LoadBarrierSlowReg:
- case Op_LoadBarrierWeakSlowReg:
-#endif
case Op_LoadN:
case Op_LoadRange:
case Op_LoadS: {
handle_mem:
#ifdef ASSERT
if( VerifyOptoOopOffsets ) {
- assert( n->is_Mem(), "" );
- MemNode *mem = (MemNode*)n;
+ MemNode* mem = n->as_Mem();
// Check to see if address types have grounded out somehow.
const TypeInstPtr *tp = mem->in(MemNode::Address)->bottom_type()->isa_instptr();
assert( !tp || oop_offset_is_sane(tp), "" );
@@ -3467,16 +3474,11 @@
break;
}
default:
- assert( !n->is_Call(), "" );
- assert( !n->is_Mem(), "" );
- assert( nop != Op_ProfileBoolean, "should be eliminated during IGVN");
+ assert(!n->is_Call(), "");
+ assert(!n->is_Mem(), "");
+ assert(nop != Op_ProfileBoolean, "should be eliminated during IGVN");
break;
}
-
- // Collect CFG split points
- if (n->is_MultiBranch() && !n->is_RangeCheck()) {
- frc._tests.push(n);
- }
}
//------------------------------final_graph_reshaping_walk---------------------
--- a/src/hotspot/share/opto/compile.hpp Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/opto/compile.hpp Fri Nov 09 11:15:38 2018 -0500
@@ -1304,6 +1304,7 @@
// Function calls made by the public function final_graph_reshaping.
// No need to be made public as they are not called elsewhere.
void final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &frc);
+ void final_graph_reshaping_main_switch(Node* n, Final_Reshape_Counts& frc, uint nop);
void final_graph_reshaping_walk( Node_Stack &nstack, Node *root, Final_Reshape_Counts &frc );
void eliminate_redundant_card_marks(Node* n);
--- a/src/hotspot/share/runtime/globals.hpp Fri Nov 09 09:48:18 2018 -0500
+++ b/src/hotspot/share/runtime/globals.hpp Fri Nov 09 11:15:38 2018 -0500
@@ -1259,8 +1259,8 @@
"[default: ./hs_err_pid%p.log] (%p replaced with pid)") \
\
product(bool, ExtensiveErrorReports, \
- PRODUCT_ONLY(false) NOT_PRODUCT(true), \
- "Error reports are more extensive.") \
+ PRODUCT_ONLY(false) NOT_PRODUCT(true), \
+ "Error reports are more extensive.") \
\
product(bool, DisplayVMOutputToStderr, false, \
"If DisplayVMOutput is true, display all VM output to stderr") \
--- a/src/java.management/share/classes/java/lang/management/package.html Fri Nov 09 09:48:18 2018 -0500
+++ b/src/java.management/share/classes/java/lang/management/package.html Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
<!--
- Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@@ -69,7 +69,7 @@
this allows interoperation across versions.
A data type used by the MXBean interfaces are mapped to an
open type when being accessed via MBeanServer interface.
-See the <a href="{@docRoot}/javax/management/MXBean.html#MXBean-spec">
+See the <a href="{@docRoot}/java.management/javax/management/MXBean.html#MXBean-spec">
MXBean</a> specification for details.
<h3><a id="examples">Ways to Access MXBeans</a></h3>
--- a/src/java.management/share/classes/javax/management/Query.java Fri Nov 09 09:48:18 2018 -0500
+++ b/src/java.management/share/classes/javax/management/Query.java Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -128,7 +128,7 @@
*
* @return The conjunction of the two arguments. The returned object
* will be serialized as an instance of the non-public class
- * <a href="../../serialized-form.html#javax.management.AndQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.AndQueryExp">
* javax.management.AndQueryExp</a>.
*/
public static QueryExp and(QueryExp q1, QueryExp q2) {
@@ -144,7 +144,7 @@
*
* @return The disjunction of the two arguments. The returned object
* will be serialized as an instance of the non-public class
- * <a href="../../serialized-form.html#javax.management.OrQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.OrQueryExp">
* javax.management.OrQueryExp</a>.
*/
public static QueryExp or(QueryExp q1, QueryExp q2) {
@@ -161,7 +161,7 @@
* @return A "greater than" constraint on the arguments. The
* returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryRelQueryExp">
* javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
* to {@link #GT}.
*/
@@ -179,7 +179,7 @@
* @return A "greater than or equal to" constraint on the
* arguments. The returned object will be serialized as an
* instance of the non-public class
- * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryRelQueryExp">
* javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
* to {@link #GE}.
*/
@@ -197,7 +197,7 @@
* @return A "less than or equal to" constraint on the arguments.
* The returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryRelQueryExp">
* javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
* to {@link #LE}.
*/
@@ -215,7 +215,7 @@
* @return A "less than" constraint on the arguments. The
* returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryRelQueryExp">
* javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
* to {@link #LT}.
*/
@@ -233,7 +233,7 @@
* @return A "equal to" constraint on the arguments. The
* returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryRelQueryExp">
* javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
* to {@link #EQ}.
*/
@@ -252,7 +252,7 @@
* @return The constraint that v1 lies between v2 and v3. The
* returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.BetweenQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.BetweenQueryExp">
* javax.management.BetweenQueryExp</a>.
*/
public static QueryExp between(ValueExp v1, ValueExp v2, ValueExp v3) {
@@ -280,7 +280,7 @@
* @return A query expression that represents the matching
* constraint on the string argument. The returned object will
* be serialized as an instance of the non-public class
- * <a href="../../serialized-form.html#javax.management.MatchQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.MatchQueryExp">
* javax.management.MatchQueryExp</a>.
*/
public static QueryExp match(AttributeValueExp a, StringValueExp s) {
@@ -320,7 +320,7 @@
* @return An attribute expression for the attribute named name.
* The returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.QualifiedAttributeValueExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.QualifiedAttributeValueExp">
* javax.management.QualifiedAttributeValueExp</a>.
*/
public static AttributeValueExp attr(String className, String name) {
@@ -338,7 +338,7 @@
*
* @return A class attribute expression. The returned object
* will be serialized as an instance of the non-public class
- * <a href="../../serialized-form.html#javax.management.ClassAttributeValueExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.ClassAttributeValueExp">
* javax.management.ClassAttributeValueExp</a>.
*/
public static AttributeValueExp classattr() {
@@ -352,7 +352,7 @@
*
* @return A negated constraint. The returned object will be
* serialized as an instance of the non-public class
- * <a href="../../serialized-form.html#javax.management.NotQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.NotQueryExp">
* javax.management.NotQueryExp</a>.
*/
public static QueryExp not(QueryExp queryExp) {
@@ -368,7 +368,7 @@
* @return A QueryExp that represents the constraint. The
* returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.InQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.InQueryExp">
* javax.management.InQueryExp</a>.
*/
public static QueryExp in(ValueExp val, ValueExp valueList[]) {
@@ -395,7 +395,7 @@
* @return A ValueExp object containing the argument. The
* returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.NumericValueExp">
* javax.management.NumericValueExp</a>.
*/
public static ValueExp value(Number val) {
@@ -411,7 +411,7 @@
* @return A ValueExp object containing the argument. The
* returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.NumericValueExp">
* javax.management.NumericValueExp</a>.
*/
public static ValueExp value(int val) {
@@ -427,7 +427,7 @@
* @return A ValueExp object containing the argument. The
* returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.NumericValueExp">
* javax.management.NumericValueExp</a>.
*/
public static ValueExp value(long val) {
@@ -443,7 +443,7 @@
* @return A ValueExp object containing the argument. The
* returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.NumericValueExp">
* javax.management.NumericValueExp</a>.
*/
public static ValueExp value(float val) {
@@ -459,7 +459,7 @@
* @return A ValueExp object containing the argument. The
* returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.NumericValueExp">
* javax.management.NumericValueExp</a>.
*/
public static ValueExp value(double val) {
@@ -475,7 +475,7 @@
* @return A ValueExp object containing the argument. The
* returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.BooleanValueExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.BooleanValueExp">
* javax.management.BooleanValueExp</a>.
*/
public static ValueExp value(boolean val) {
@@ -492,7 +492,7 @@
* @return A ValueExp representing the sum or concatenation of
* the two arguments. The returned object will be serialized as
* an instance of the non-public class
- * <a href="../../serialized-form.html#javax.management.BinaryOpValueExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryOpValueExp">
* javax.management.BinaryOpValueExp</a> with an {@code op} equal to
* {@link #PLUS}.
*/
@@ -510,7 +510,7 @@
* @return A ValueExp representing the product. The returned
* object will be serialized as an instance of the non-public
* class
- * <a href="../../serialized-form.html#javax.management.BinaryOpValueExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryOpValueExp">
* javax.management.BinaryOpValueExp</a> with an {@code op} equal to
* {@link #TIMES}.
*/
@@ -528,7 +528,7 @@
* @return A ValueExp representing the difference between two
* arguments. The returned object will be serialized as an
* instance of the non-public class
- * <a href="../../serialized-form.html#javax.management.BinaryOpValueExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryOpValueExp">
* javax.management.BinaryOpValueExp</a> with an {@code op} equal to
* {@link #MINUS}.
*/
@@ -546,7 +546,7 @@
* @return A ValueExp representing the quotient of two arguments.
* The returned object will be serialized as an instance of the
* non-public class
- * <a href="../../serialized-form.html#javax.management.BinaryOpValueExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.BinaryOpValueExp">
* javax.management.BinaryOpValueExp</a> with an {@code op} equal to
* {@link #DIV}.
*/
@@ -566,7 +566,7 @@
* @return The constraint that a matches s. The returned object
* will be serialized as an instance of the non-public class
*
- * <a href="../../serialized-form.html#javax.management.MatchQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.MatchQueryExp">
* javax.management.MatchQueryExp</a>.
*/
public static QueryExp initialSubString(AttributeValueExp a, StringValueExp s) {
@@ -585,7 +585,7 @@
* @return The constraint that a matches s. The returned object
* will be serialized as an instance of the non-public class
*
- * <a href="../../serialized-form.html#javax.management.MatchQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.MatchQueryExp">
* javax.management.MatchQueryExp</a>.
*/
public static QueryExp anySubString(AttributeValueExp a, StringValueExp s) {
@@ -605,7 +605,7 @@
* @return The constraint that a matches s. The returned object
* will be serialized as an instance of the non-public class
*
- * <a href="../../serialized-form.html#javax.management.MatchQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.MatchQueryExp">
* javax.management.MatchQueryExp</a>.
*/
public static QueryExp finalSubString(AttributeValueExp a, StringValueExp s) {
@@ -630,7 +630,7 @@
* @return a query expression that represents an inheritance
* constraint on an MBean class. The returned object will be
* serialized as an instance of the non-public class
- * <a href="../../serialized-form.html#javax.management.InstanceOfQueryExp">
+ * <a href="{@docRoot}/serialized-form.html#javax.management.InstanceOfQueryExp">
* javax.management.InstanceOfQueryExp</a>.
* @since 1.6
*/
--- a/src/java.management/share/classes/javax/management/remote/JMXConnectorFactory.java Fri Nov 09 09:48:18 2018 -0500
+++ b/src/java.management/share/classes/javax/management/remote/JMXConnectorFactory.java Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -137,7 +137,7 @@
* <code>MalformedURLException</code> if there is none. An
* implementation may choose to find providers by other means. For
* example, it may support <a
- * href="{@docRoot}/java/util/ServiceLoader.html#developing-service-providers">service providers</a>,
+ * href="{@docRoot}/java.base/java/util/ServiceLoader.html#developing-service-providers">service providers</a>,
* where the service interface is <code>JMXConnectorProvider</code>.</p>
*
* <p>Every implementation must support the RMI connector protocol with
--- a/src/java.management/share/classes/javax/management/remote/JMXConnectorServerFactory.java Fri Nov 09 09:48:18 2018 -0500
+++ b/src/java.management/share/classes/javax/management/remote/JMXConnectorServerFactory.java Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -128,7 +128,7 @@
* <code>MalformedURLException</code> if there is none. An
* implementation may choose to find providers by other means. For
* example, it may support <a
- * href="{@docRoot}/java/util/ServiceLoader.html#developing-service-providers">service providers</a>,
+ * href="{@docRoot}/java.base/java/util/ServiceLoader.html#developing-service-providers">service providers</a>,
* where the service interface is <code>JMXConnectorServerProvider</code>.</p>
*
* <p>Every implementation must support the RMI connector protocol with
--- a/src/jdk.management/share/classes/com/sun/management/DiagnosticCommandMBean.java Fri Nov 09 09:48:18 2018 -0500
+++ b/src/jdk.management/share/classes/com/sun/management/DiagnosticCommandMBean.java Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -213,7 +213,7 @@
* Virtual Machine is modified, the {@code DiagnosticCommandMBean} emits
* a {@link javax.management.Notification} with a
* {@linkplain javax.management.Notification#getType() type} of
- * <a href="{@docRoot}/javax/management/MBeanInfo.html#info-changed">
+ * <a href="{@docRoot}/java.management/javax/management/MBeanInfo.html#info-changed">
* {@code "jmx.mbean.info.changed"}</a> and a
* {@linkplain javax.management.Notification#getUserData() userData} that
* is the new {@code MBeanInfo}.
--- a/test/hotspot/jtreg/gc/TestAllocateHeapAtMultiple.java Fri Nov 09 09:48:18 2018 -0500
+++ b/test/hotspot/jtreg/gc/TestAllocateHeapAtMultiple.java Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,6 +27,7 @@
* @library /test/lib
* @modules java.base/jdk.internal.misc
* @requires vm.bits == "64" & vm.gc != "Z" & os.family != "aix"
+ * @run main/timeout=360 TestAllocateHeapAtMultiple
*/
import jdk.test.lib.JDKToolFinder;
--- a/test/jdk/java/nio/channels/SocketChannel/AsyncCloseChannel.java Fri Nov 09 09:48:18 2018 -0500
+++ b/test/jdk/java/nio/channels/SocketChannel/AsyncCloseChannel.java Fri Nov 09 11:15:38 2018 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -24,13 +24,16 @@
/* @test
* @bug 6285901 6501089
* @summary Check no data is written to wrong socket channel during async closing.
- * @author Xueming Shen
+ * @run main/othervm AsyncCloseChannel
*/
-import java.io.*;
-import java.nio.*;
-import java.nio.channels.*;
-import java.net.*;
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.nio.ByteBuffer;
+import java.nio.channels.ClosedChannelException;
+import java.nio.channels.SocketChannel;
public class AsyncCloseChannel {
static volatile boolean failed = false;