--- a/.hgtags-top-repo Thu Nov 14 23:33:06 2013 -0800
+++ b/.hgtags-top-repo Wed Jul 05 19:22:42 2017 +0200
@@ -237,3 +237,4 @@
6ba4c7cb623ec612031e05cf8bf279d8f407bd1e jdk8-b113
4f2011496393a26dcfd7b1f7787a3673ddd32599 jdk8-b114
763ada2a1d8c5962bc8c3d297e57c562d2e95338 jdk8-b115
+cbfe5da942c63ef865cab4a7159e01eff7d7fcf5 jdk8-b116
--- a/hotspot/.hgtags Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/.hgtags Wed Jul 05 19:22:42 2017 +0200
@@ -393,3 +393,5 @@
3b32d287da89a47a45d16f6d9ba5bd3cd9bf4b3e hs25-b57
9ebaac78a8a0061fb9597e07f806498cb626cdeb jdk8-b115
e510dfdec6dd701410f3398ed86ebcdff0cca63a hs25-b58
+52b076e6ffae247c1c7d8b7aba995195be2b6fc2 jdk8-b116
+c78d517c7ea47501b456e707afd4b78e7b5b202e hs25-b59
--- a/hotspot/make/hotspot_version Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/make/hotspot_version Wed Jul 05 19:22:42 2017 +0200
@@ -35,7 +35,7 @@
HS_MAJOR_VER=25
HS_MINOR_VER=0
-HS_BUILD_NUMBER=58
+HS_BUILD_NUMBER=59
JDK_MAJOR_VER=1
JDK_MINOR_VER=8
--- a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -1002,18 +1002,6 @@
// and the vm will find there should this case occur.
Address callee_target_addr(G2_thread, JavaThread::callee_target_offset());
__ st_ptr(G5_method, callee_target_addr);
-
- if (StressNonEntrant) {
- // Open a big window for deopt failure
- __ save_frame(0);
- __ mov(G0, L0);
- Label loop;
- __ bind(loop);
- __ sub(L0, 1, L0);
- __ br_null_short(L0, Assembler::pt, loop);
- __ restore();
- }
-
__ jmpl(G3, 0, G0);
__ delayed()->nop();
}
--- a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -4338,6 +4338,11 @@
#endif // PRODUCT
void GraphBuilder::profile_call(ciMethod* callee, Value recv, ciKlass* known_holder, Values* obj_args, bool inlined) {
+ // A default method's holder is an interface
+ if (known_holder != NULL && known_holder->is_interface()) {
+ assert(known_holder->is_instance_klass() && ((ciInstanceKlass*)known_holder)->has_default_methods(), "should be default method");
+ known_holder = NULL;
+ }
append(new ProfileCall(method(), bci(), callee, recv, known_holder, obj_args, inlined));
}
--- a/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -2574,8 +2574,25 @@
__ jump(x->default_sux());
}
-
-ciKlass* LIRGenerator::profile_arg_type(ciMethodData* md, int md_base_offset, int md_offset, intptr_t profiled_k, Value arg, LIR_Opr& mdp, bool not_null, ciKlass* signature_k) {
+/**
+ * Emit profiling code if needed for arguments, parameters, return value types
+ *
+ * @param md MDO the code will update at runtime
+ * @param md_base_offset common offset in the MDO for this profile and subsequent ones
+ * @param md_offset offset in the MDO (on top of md_base_offset) for this profile
+ * @param profiled_k current profile
+ * @param obj IR node for the object to be profiled
+ * @param mdp register to hold the pointer inside the MDO (md + md_base_offset).
+ * Set once we find an update to make and use for next ones.
+ * @param not_null true if we know obj cannot be null
+ * @param signature_at_call_k signature at call for obj
+ * @param callee_signature_k signature of callee for obj
+ * at call and callee signatures differ at method handle call
+ * @return the only klass we know will ever be seen at this profile point
+ */
+ciKlass* LIRGenerator::profile_type(ciMethodData* md, int md_base_offset, int md_offset, intptr_t profiled_k,
+ Value obj, LIR_Opr& mdp, bool not_null, ciKlass* signature_at_call_k,
+ ciKlass* callee_signature_k) {
ciKlass* result = NULL;
bool do_null = !not_null && !TypeEntries::was_null_seen(profiled_k);
bool do_update = !TypeEntries::is_type_unknown(profiled_k);
@@ -2590,9 +2607,9 @@
if (do_update) {
// try to find exact type, using CHA if possible, so that loading
// the klass from the object can be avoided
- ciType* type = arg->exact_type();
+ ciType* type = obj->exact_type();
if (type == NULL) {
- type = arg->declared_type();
+ type = obj->declared_type();
type = comp->cha_exact_type(type);
}
assert(type == NULL || type->is_klass(), "type should be class");
@@ -2608,23 +2625,33 @@
ciKlass* exact_signature_k = NULL;
if (do_update) {
// Is the type from the signature exact (the only one possible)?
- exact_signature_k = signature_k->exact_klass();
+ exact_signature_k = signature_at_call_k->exact_klass();
if (exact_signature_k == NULL) {
- exact_signature_k = comp->cha_exact_type(signature_k);
+ exact_signature_k = comp->cha_exact_type(signature_at_call_k);
} else {
result = exact_signature_k;
- do_update = false;
// Known statically. No need to emit any code: prevent
// LIR_Assembler::emit_profile_type() from emitting useless code
profiled_k = ciTypeEntries::with_status(result, profiled_k);
}
if (exact_signature_k != NULL && exact_klass != exact_signature_k) {
- assert(exact_klass == NULL, "arg and signature disagree?");
+ assert(exact_klass == NULL, "obj and signature disagree?");
// sometimes the type of the signature is better than the best type
// the compiler has
exact_klass = exact_signature_k;
- do_update = exact_klass == NULL || ciTypeEntries::valid_ciklass(profiled_k) != exact_klass;
}
+ if (callee_signature_k != NULL &&
+ callee_signature_k != signature_at_call_k) {
+ ciKlass* improved_klass = callee_signature_k->exact_klass();
+ if (improved_klass == NULL) {
+ improved_klass = comp->cha_exact_type(callee_signature_k);
+ }
+ if (improved_klass != NULL && exact_klass != improved_klass) {
+ assert(exact_klass == NULL, "obj and signature disagree?");
+ exact_klass = exact_signature_k;
+ }
+ }
+ do_update = exact_klass == NULL || ciTypeEntries::valid_ciklass(profiled_k) != exact_klass;
}
if (!do_null && !do_update) {
@@ -2640,7 +2667,7 @@
__ leal(LIR_OprFact::address(base_type_address), mdp);
}
}
- LIRItem value(arg, this);
+ LIRItem value(obj, this);
value.load_item();
__ profile_type(new LIR_Address(mdp, md_offset, T_METADATA),
value.result(), exact_klass, profiled_k, new_pointer_register(), not_null, exact_signature_k != NULL);
@@ -2665,9 +2692,9 @@
if (t == T_OBJECT || t == T_ARRAY) {
intptr_t profiled_k = parameters->type(j);
Local* local = x->state()->local_at(java_index)->as_Local();
- ciKlass* exact = profile_arg_type(md, md->byte_offset_of_slot(parameters_type_data, ParametersTypeData::type_offset(0)),
- in_bytes(ParametersTypeData::type_offset(j)) - in_bytes(ParametersTypeData::type_offset(0)),
- profiled_k, local, mdp, false, local->declared_type()->as_klass());
+ ciKlass* exact = profile_type(md, md->byte_offset_of_slot(parameters_type_data, ParametersTypeData::type_offset(0)),
+ in_bytes(ParametersTypeData::type_offset(j)) - in_bytes(ParametersTypeData::type_offset(0)),
+ profiled_k, local, mdp, false, local->declared_type()->as_klass(), NULL);
// If the profile is known statically set it once for all and do not emit any code
if (exact != NULL) {
md->set_parameter_type(j, exact);
@@ -3129,19 +3156,28 @@
Bytecodes::Code bc = x->method()->java_code_at_bci(bci);
int start = 0;
int stop = data->is_CallTypeData() ? ((ciCallTypeData*)data)->number_of_arguments() : ((ciVirtualCallTypeData*)data)->number_of_arguments();
- if (x->nb_profiled_args() < stop) {
- // if called through method handle invoke, some arguments may have been popped
- stop = x->nb_profiled_args();
+ if (x->inlined() && x->callee()->is_static() && Bytecodes::has_receiver(bc)) {
+ // first argument is not profiled at call (method handle invoke)
+ assert(x->method()->raw_code_at_bci(bci) == Bytecodes::_invokehandle, "invokehandle expected");
+ start = 1;
}
- ciSignature* sig = x->callee()->signature();
+ ciSignature* callee_signature = x->callee()->signature();
// method handle call to virtual method
bool has_receiver = x->inlined() && !x->callee()->is_static() && !Bytecodes::has_receiver(bc);
- ciSignatureStream sig_stream(sig, has_receiver ? x->callee()->holder() : NULL);
- for (int i = 0; i < stop; i++) {
+ ciSignatureStream callee_signature_stream(callee_signature, has_receiver ? x->callee()->holder() : NULL);
+
+ bool ignored_will_link;
+ ciSignature* signature_at_call = NULL;
+ x->method()->get_method_at_bci(bci, ignored_will_link, &signature_at_call);
+ ciSignatureStream signature_at_call_stream(signature_at_call);
+
+ // if called through method handle invoke, some arguments may have been popped
+ for (int i = 0; i < stop && i+start < x->nb_profiled_args(); i++) {
int off = in_bytes(TypeEntriesAtCall::argument_type_offset(i)) - in_bytes(TypeEntriesAtCall::args_data_offset());
- ciKlass* exact = profile_arg_type(md, base_offset, off,
- args->type(i), x->profiled_arg_at(i+start), mdp,
- !x->arg_needs_null_check(i+start), sig_stream.next_klass());
+ ciKlass* exact = profile_type(md, base_offset, off,
+ args->type(i), x->profiled_arg_at(i+start), mdp,
+ !x->arg_needs_null_check(i+start),
+ signature_at_call_stream.next_klass(), callee_signature_stream.next_klass());
if (exact != NULL) {
md->set_argument_type(bci, i, exact);
}
@@ -3176,8 +3212,8 @@
int bci = x->bci_of_invoke();
Bytecodes::Code bc = x->method()->java_code_at_bci(bci);
// The first parameter is the receiver so that's what we start
- // with if it exists. On exception if method handle call to
- // virtual method has receiver in the args list
+ // with if it exists. One exception is method handle call to
+ // virtual method: the receiver is in the args list
if (arg == NULL || !Bytecodes::has_receiver(bc)) {
i = 1;
arg = x->profiled_arg_at(0);
@@ -3186,9 +3222,9 @@
int k = 0; // to iterate on the profile data
for (;;) {
intptr_t profiled_k = parameters->type(k);
- ciKlass* exact = profile_arg_type(md, md->byte_offset_of_slot(parameters_type_data, ParametersTypeData::type_offset(0)),
- in_bytes(ParametersTypeData::type_offset(k)) - in_bytes(ParametersTypeData::type_offset(0)),
- profiled_k, arg, mdp, not_null, sig_stream.next_klass());
+ ciKlass* exact = profile_type(md, md->byte_offset_of_slot(parameters_type_data, ParametersTypeData::type_offset(0)),
+ in_bytes(ParametersTypeData::type_offset(k)) - in_bytes(ParametersTypeData::type_offset(0)),
+ profiled_k, arg, mdp, not_null, sig_stream.next_klass(), NULL);
// If the profile is known statically set it once for all and do not emit any code
if (exact != NULL) {
md->set_parameter_type(k, exact);
@@ -3247,9 +3283,16 @@
assert(data->is_CallTypeData() || data->is_VirtualCallTypeData(), "wrong profile data type");
ciReturnTypeEntry* ret = data->is_CallTypeData() ? ((ciCallTypeData*)data)->ret() : ((ciVirtualCallTypeData*)data)->ret();
LIR_Opr mdp = LIR_OprFact::illegalOpr;
- ciKlass* exact = profile_arg_type(md, 0, md->byte_offset_of_slot(data, ret->type_offset()),
- ret->type(), x->ret(), mdp,
- !x->needs_null_check(), x->callee()->signature()->return_type()->as_klass());
+
+ bool ignored_will_link;
+ ciSignature* signature_at_call = NULL;
+ x->method()->get_method_at_bci(bci, ignored_will_link, &signature_at_call);
+
+ ciKlass* exact = profile_type(md, 0, md->byte_offset_of_slot(data, ret->type_offset()),
+ ret->type(), x->ret(), mdp,
+ !x->needs_null_check(),
+ signature_at_call->return_type()->as_klass(),
+ x->callee()->signature()->return_type()->as_klass());
if (exact != NULL) {
md->set_return_type(bci, exact);
}
--- a/hotspot/src/share/vm/c1/c1_LIRGenerator.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/c1/c1_LIRGenerator.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -434,7 +434,9 @@
void do_ThreadIDIntrinsic(Intrinsic* x);
void do_ClassIDIntrinsic(Intrinsic* x);
#endif
- ciKlass* profile_arg_type(ciMethodData* md, int md_first_offset, int md_offset, intptr_t profiled_k, Value arg, LIR_Opr& mdp, bool not_null, ciKlass* signature_k);
+ ciKlass* profile_type(ciMethodData* md, int md_first_offset, int md_offset, intptr_t profiled_k,
+ Value arg, LIR_Opr& mdp, bool not_null, ciKlass* signature_at_call_k,
+ ciKlass* callee_signature_k);
void profile_arguments(ProfileCall* x);
void profile_parameters(Base* x);
void profile_parameters_at_call(ProfileCall* x);
--- a/hotspot/src/share/vm/c1/c1_globals.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/c1/c1_globals.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -341,9 +341,6 @@
diagnostic(bool, C1PatchInvokeDynamic, true, \
"Patch invokedynamic appendix not known at compile time") \
\
- develop(intx, MaxForceInlineLevel, 100, \
- "maximum number of nested @ForceInline calls that are inlined") \
- \
// Read default values for c1 globals
--- a/hotspot/src/share/vm/ci/ciEnv.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/ci/ciEnv.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -935,7 +935,9 @@
// Prevent SystemDictionary::add_to_hierarchy from running
// and invalidating our dependencies until we install this method.
+ // No safepoints are allowed. Otherwise, class redefinition can occur in between.
MutexLocker ml(Compile_lock);
+ No_Safepoint_Verifier nsv;
// Change in Jvmti state may invalidate compilation.
if (!failing() &&
@@ -1001,16 +1003,6 @@
// Free codeBlobs
code_buffer->free_blob();
- // stress test 6243940 by immediately making the method
- // non-entrant behind the system's back. This has serious
- // side effects on the code cache and is not meant for
- // general stress testing
- if (nm != NULL && StressNonEntrant) {
- MutexLockerEx pl(Patching_lock, Mutex::_no_safepoint_check_flag);
- NativeJump::patch_verified_entry(nm->entry_point(), nm->verified_entry_point(),
- SharedRuntime::get_handle_wrong_method_stub());
- }
-
if (nm == NULL) {
// The CodeCache is full. Print out warning and disable compilation.
record_failure("code cache is full");
@@ -1036,11 +1028,11 @@
char *method_name = method->name_and_sig_as_C_string();
tty->print_cr("Replacing method %s", method_name);
}
- if (old != NULL ) {
+ if (old != NULL) {
old->make_not_entrant();
}
}
- if (TraceNMethodInstalls ) {
+ if (TraceNMethodInstalls) {
ResourceMark rm;
char *method_name = method->name_and_sig_as_C_string();
ttyLocker ttyl;
@@ -1051,7 +1043,7 @@
// Allow the code to be executed
method->set_code(method, nm);
} else {
- if (TraceNMethodInstalls ) {
+ if (TraceNMethodInstalls) {
ResourceMark rm;
char *method_name = method->name_and_sig_as_C_string();
ttyLocker ttyl;
@@ -1061,7 +1053,6 @@
entry_bci);
}
method->method_holder()->add_osr_nmethod(nm);
-
}
}
}
--- a/hotspot/src/share/vm/ci/ciMethodData.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/ci/ciMethodData.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -77,7 +77,9 @@
static ciKlass* valid_ciklass(intptr_t k) {
if (!TypeEntries::is_type_none(k) &&
!TypeEntries::is_type_unknown(k)) {
- return (ciKlass*)TypeEntries::klass_part(k);
+ ciKlass* res = (ciKlass*)TypeEntries::klass_part(k);
+ assert(res != NULL, "invalid");
+ return res;
} else {
return NULL;
}
--- a/hotspot/src/share/vm/classfile/classFileParser.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/classfile/classFileParser.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -4080,7 +4080,7 @@
// Generate any default methods - default methods are interface methods
// that have a default implementation. This is new with Lambda project.
- if (has_default_methods && !access_flags.is_interface() ) {
+ if (has_default_methods ) {
DefaultMethods::generate_default_methods(
this_klass(), &all_mirandas, CHECK_(nullHandle));
}
--- a/hotspot/src/share/vm/classfile/defaultMethods.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/classfile/defaultMethods.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -171,8 +171,12 @@
}
bool is_cancelled() const { return _cancelled; }
+ // This code used to skip interface classes because their only
+ // superclass was j.l.Object which would be also covered by class
+ // superclass hierarchy walks. Now that the starting point can be
+ // an interface, we must ensure we catch j.l.Object as the super.
static bool has_super(InstanceKlass* cls) {
- return cls->super() != NULL && !cls->is_interface();
+ return cls->super() != NULL;
}
Node* node_at_depth(int i) const {
@@ -391,16 +395,21 @@
return;
}
+ // Qualified methods are maximally-specific methods
+ // These include public, instance concrete (=default) and abstract methods
GrowableArray<Method*> qualified_methods;
int num_defaults = 0;
int default_index = -1;
+ int qualified_index = -1;
for (int i = 0; i < _members.length(); ++i) {
Pair<Method*,QualifiedState> entry = _members.at(i);
if (entry.second == QUALIFIED) {
qualified_methods.append(entry.first);
- default_index++;
+ qualified_index++;
if (entry.first->is_default_method()) {
num_defaults++;
+ default_index = qualified_index;
+
}
}
}
@@ -408,16 +417,10 @@
if (qualified_methods.length() == 0) {
_exception_message = generate_no_defaults_message(CHECK);
_exception_name = vmSymbols::java_lang_AbstractMethodError();
- } else if (qualified_methods.length() == 1) {
- // leave abstract methods alone, they will be found via normal search path
- Method* method = qualified_methods.at(0);
- if (!method->is_abstract()) {
- _selected_target = qualified_methods.at(0);
- }
- // If only one qualified method is default, select that
+ // If only one qualified method is default, select that
} else if (num_defaults == 1) {
_selected_target = qualified_methods.at(default_index);
- } else {
+ } else if (num_defaults > 1) {
_exception_message = generate_conflicts_message(&qualified_methods,CHECK);
_exception_name = vmSymbols::java_lang_IncompatibleClassChangeError();
if (TraceDefaultMethods) {
@@ -425,6 +428,7 @@
tty->print_cr("");
}
}
+ // leave abstract methods alone, they will be found via normal search path
}
bool contains_signature(Symbol* query) {
@@ -704,8 +708,10 @@
Method* m = iklass->find_method(_method_name, _method_signature);
// private interface methods are not candidates for default methods
// invokespecial to private interface methods doesn't use default method logic
+ // The overpasses are your supertypes' errors, we do not include them
// future: take access controls into account for superclass methods
- if (m != NULL && !m->is_static() && (!iklass->is_interface() || m->is_public())) {
+ if (m != NULL && !m->is_static() && !m->is_overpass() &&
+ (!iklass->is_interface() || m->is_public())) {
if (_family == NULL) {
_family = new StatefulMethodFamily();
}
@@ -781,7 +787,8 @@
#ifndef PRODUCT
if (TraceDefaultMethods) {
ResourceMark rm; // be careful with these!
- tty->print_cr("Class %s requires default method processing",
+ tty->print_cr("%s %s requires default method processing",
+ klass->is_interface() ? "Interface" : "Class",
klass->name()->as_klass_external_name());
PrintHierarchy printer;
printer.run(klass);
@@ -806,7 +813,7 @@
}
#ifndef PRODUCT
if (TraceDefaultMethods) {
- tty->print_cr("Creating overpasses...");
+ tty->print_cr("Creating defaults and overpasses...");
}
#endif // ndef PRODUCT
@@ -1076,7 +1083,9 @@
klass->set_initial_method_idnum(new_size);
ClassLoaderData* cld = klass->class_loader_data();
- MetadataFactory::free_array(cld, original_methods);
+ if (original_methods ->length() > 0) {
+ MetadataFactory::free_array(cld, original_methods);
+ }
if (original_ordering->length() > 0) {
klass->set_method_ordering(merged_ordering);
MetadataFactory::free_array(cld, original_ordering);
--- a/hotspot/src/share/vm/code/nmethod.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/code/nmethod.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -618,21 +618,18 @@
// record this nmethod as dependent on this klass
InstanceKlass::cast(klass)->add_dependent_nmethod(nm);
}
- }
- NOT_PRODUCT(if (nm != NULL) nmethod_stats.note_nmethod(nm));
- if (PrintAssembly && nm != NULL) {
- Disassembler::decode(nm);
+ NOT_PRODUCT(nmethod_stats.note_nmethod(nm));
+ if (PrintAssembly) {
+ Disassembler::decode(nm);
+ }
}
}
-
- // verify nmethod
- debug_only(if (nm) nm->verify();) // might block
-
+ // Do verification and logging outside CodeCache_lock.
if (nm != NULL) {
+ // Safepoints in nmethod::verify aren't allowed because nm hasn't been installed yet.
+ DEBUG_ONLY(nm->verify();)
nm->log_new_nmethod();
}
-
- // done
return nm;
}
@@ -1262,7 +1259,7 @@
set_osr_link(NULL);
//set_scavenge_root_link(NULL); // done by prune_scavenge_root_nmethods
- NMethodSweeper::notify();
+ NMethodSweeper::report_state_change(this);
}
void nmethod::invalidate_osr_method() {
@@ -1296,7 +1293,9 @@
}
}
-// Common functionality for both make_not_entrant and make_zombie
+/**
+ * Common functionality for both make_not_entrant and make_zombie
+ */
bool nmethod::make_not_entrant_or_zombie(unsigned int state) {
assert(state == zombie || state == not_entrant, "must be zombie or not_entrant");
assert(!is_zombie(), "should not already be a zombie");
@@ -1420,9 +1419,7 @@
tty->print_cr("nmethod <" INTPTR_FORMAT "> code made %s", this, (state == not_entrant) ? "not entrant" : "zombie");
}
- // Make sweeper aware that there is a zombie method that needs to be removed
- NMethodSweeper::notify();
-
+ NMethodSweeper::report_state_change(this);
return true;
}
@@ -2395,20 +2392,23 @@
void nmethod::verify_interrupt_point(address call_site) {
- // This code does not work in release mode since
- // owns_lock only is available in debug mode.
- CompiledIC* ic = NULL;
- Thread *cur = Thread::current();
- if (CompiledIC_lock->owner() == cur ||
- ((cur->is_VM_thread() || cur->is_ConcurrentGC_thread()) &&
- SafepointSynchronize::is_at_safepoint())) {
- ic = CompiledIC_at(this, call_site);
- CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops());
- } else {
- MutexLocker ml_verify (CompiledIC_lock);
- ic = CompiledIC_at(this, call_site);
+ // Verify IC only when nmethod installation is finished.
+ bool is_installed = (method()->code() == this) // nmethod is in state 'alive' and installed
+ || !this->is_in_use(); // nmethod is installed, but not in 'alive' state
+ if (is_installed) {
+ Thread *cur = Thread::current();
+ if (CompiledIC_lock->owner() == cur ||
+ ((cur->is_VM_thread() || cur->is_ConcurrentGC_thread()) &&
+ SafepointSynchronize::is_at_safepoint())) {
+ CompiledIC_at(this, call_site);
+ CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops());
+ } else {
+ MutexLocker ml_verify (CompiledIC_lock);
+ CompiledIC_at(this, call_site);
+ }
}
- PcDesc* pd = pc_desc_at(ic->end_of_call());
+
+ PcDesc* pd = pc_desc_at(nativeCall_at(call_site)->return_address());
assert(pd != NULL, "PcDesc must exist");
for (ScopeDesc* sd = new ScopeDesc(this, pd->scope_decode_offset(),
pd->obj_decode_offset(), pd->should_reexecute(),
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -126,6 +126,7 @@
bool CompileBroker::_initialized = false;
volatile bool CompileBroker::_should_block = false;
+volatile jint CompileBroker::_print_compilation_warning = 0;
volatile jint CompileBroker::_should_compile_new_jobs = run_compilation;
// The installed compiler(s)
@@ -2027,11 +2028,10 @@
#endif
}
-// ------------------------------------------------------------------
-// CompileBroker::handle_full_code_cache
-//
-// The CodeCache is full. Print out warning and disable compilation or
-// try code cache cleaning so compilation can continue later.
+/**
+ * The CodeCache is full. Print out warning and disable compilation
+ * or try code cache cleaning so compilation can continue later.
+ */
void CompileBroker::handle_full_code_cache() {
UseInterpreter = true;
if (UseCompiler || AlwaysCompileLoopMethods ) {
@@ -2048,12 +2048,9 @@
xtty->stamp();
xtty->end_elem();
}
- warning("CodeCache is full. Compiler has been disabled.");
- warning("Try increasing the code cache size using -XX:ReservedCodeCacheSize=");
CodeCache::report_codemem_full();
-
#ifndef PRODUCT
if (CompileTheWorld || ExitOnFullCodeCache) {
codecache_print(/* detailed= */ true);
@@ -2066,17 +2063,22 @@
// Since code cache is full, immediately stop new compiles
if (CompileBroker::set_should_compile_new_jobs(CompileBroker::stop_compilation)) {
NMethodSweeper::log_sweep("disable_compiler");
-
- // Switch to 'vm_state'. This ensures that possibly_sweep() can be called
- // without having to consider the state in which the current thread is.
- ThreadInVMfromUnknown in_vm;
- NMethodSweeper::possibly_sweep();
}
+ // Switch to 'vm_state'. This ensures that possibly_sweep() can be called
+ // without having to consider the state in which the current thread is.
+ ThreadInVMfromUnknown in_vm;
+ NMethodSweeper::possibly_sweep();
} else {
disable_compilation_forever();
}
+
+ // Print warning only once
+ if (should_print_compiler_warning()) {
+ warning("CodeCache is full. Compiler has been disabled.");
+ warning("Try increasing the code cache size using -XX:ReservedCodeCacheSize=");
+ codecache_print(/* detailed= */ true);
+ }
}
- codecache_print(/* detailed= */ true);
}
// ------------------------------------------------------------------
--- a/hotspot/src/share/vm/compiler/compileBroker.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/compiler/compileBroker.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -315,6 +315,8 @@
static int _sum_nmethod_code_size;
static long _peak_compilation_time;
+ static volatile jint _print_compilation_warning;
+
static CompilerThread* make_compiler_thread(const char* name, CompileQueue* queue, CompilerCounters* counters, AbstractCompiler* comp, TRAPS);
static void init_compiler_threads(int c1_compiler_count, int c2_compiler_count);
static bool compilation_is_complete (methodHandle method, int osr_bci, int comp_level);
@@ -418,7 +420,11 @@
return _should_compile_new_jobs == shutdown_compilaton;
}
static void handle_full_code_cache();
-
+ // Ensures that warning is only printed once.
+ static bool should_print_compiler_warning() {
+ jint old = Atomic::cmpxchg(1, &_print_compilation_warning, 0);
+ return old == 0;
+ }
// Return total compilation ticks
static jlong total_compilation_ticks() {
return _perf_total_compilation != NULL ? _perf_total_compilation->get_value() : 0;
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -47,8 +47,9 @@
// ConcurrentMarkSweepPolicy methods
//
-ConcurrentMarkSweepPolicy::ConcurrentMarkSweepPolicy() {
- initialize_all();
+void ConcurrentMarkSweepPolicy::initialize_alignments() {
+ _space_alignment = _gen_alignment = (uintx)Generation::GenGrain;
+ _heap_alignment = compute_heap_alignment();
}
void ConcurrentMarkSweepPolicy::initialize_generations() {
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -29,10 +29,11 @@
class ConcurrentMarkSweepPolicy : public TwoGenerationCollectorPolicy {
protected:
+ void initialize_alignments();
void initialize_generations();
public:
- ConcurrentMarkSweepPolicy();
+ ConcurrentMarkSweepPolicy() {}
ConcurrentMarkSweepPolicy* as_concurrent_mark_sweep_policy() { return this; }
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -594,9 +594,9 @@
_verification_mark_bm(0, Mutex::leaf + 1, "CMS_verification_mark_bm_lock"),
_completed_initialization(false),
_collector_policy(cp),
- _should_unload_classes(false),
+ _should_unload_classes(CMSClassUnloadingEnabled),
_concurrent_cycles_since_last_unload(0),
- _roots_scanning_options(0),
+ _roots_scanning_options(SharedHeap::SO_None),
_inter_sweep_estimate(CMS_SweepWeight, CMS_SweepPadding),
_intra_sweep_estimate(CMS_SweepWeight, CMS_SweepPadding),
_gc_tracer_cm(new (ResourceObj::C_HEAP, mtGC) CMSTracer()),
@@ -788,14 +788,6 @@
&& _survivor_chunk_index == 0),
"Error");
- // Choose what strong roots should be scanned depending on verification options
- if (!CMSClassUnloadingEnabled) {
- // If class unloading is disabled we want to include all classes into the root set.
- add_root_scanning_option(SharedHeap::SO_AllClasses);
- } else {
- add_root_scanning_option(SharedHeap::SO_SystemClasses);
- }
-
NOT_PRODUCT(_overflow_counter = CMSMarkStackOverflowInterval;)
_gc_counters = new CollectorCounters("CMS", 1);
_completed_initialization = true;
@@ -2532,6 +2524,9 @@
// Snapshot the soft reference policy to be used in this collection cycle.
ref_processor()->setup_policy(clear_all_soft_refs);
+ // Decide if class unloading should be done
+ update_should_unload_classes();
+
bool init_mark_was_synchronous = false; // until proven otherwise
while (_collectorState != Idling) {
if (TraceCMSState) {
@@ -3310,7 +3305,10 @@
|| VerifyBeforeExit;
const int rso = SharedHeap::SO_Strings | SharedHeap::SO_CodeCache;
+ // We set the proper root for this CMS cycle here.
if (should_unload_classes()) { // Should unload classes this cycle
+ remove_root_scanning_option(SharedHeap::SO_AllClasses);
+ add_root_scanning_option(SharedHeap::SO_SystemClasses);
remove_root_scanning_option(rso); // Shrink the root set appropriately
set_verifying(should_verify); // Set verification state for this cycle
return; // Nothing else needs to be done at this time
@@ -3318,6 +3316,9 @@
// Not unloading classes this cycle
assert(!should_unload_classes(), "Inconsitency!");
+ remove_root_scanning_option(SharedHeap::SO_SystemClasses);
+ add_root_scanning_option(SharedHeap::SO_AllClasses);
+
if ((!verifying() || unloaded_classes_last_cycle()) && should_verify) {
// Include symbols, strings and code cache elements to prevent their resurrection.
add_root_scanning_option(rso);
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -2008,7 +2008,7 @@
size_t init_byte_size = collector_policy()->initial_heap_byte_size();
size_t max_byte_size = collector_policy()->max_heap_byte_size();
- size_t heap_alignment = collector_policy()->max_alignment();
+ size_t heap_alignment = collector_policy()->heap_alignment();
// Ensure that the sizes are properly aligned.
Universe::check_alignment(init_byte_size, HeapRegion::GrainBytes, "g1 heap");
@@ -6656,13 +6656,18 @@
if (!oopDesc::is_null(heap_oop)) {
oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
HeapRegion* hr = _g1h->heap_region_containing(obj);
- assert(!hr->isHumongous(), "code root in humongous region?");
+ assert(!hr->continuesHumongous(),
+ err_msg("trying to add code root "PTR_FORMAT" in continuation of humongous region "HR_FORMAT
+ " starting at "HR_FORMAT,
+ _nm, HR_FORMAT_PARAMS(hr), HR_FORMAT_PARAMS(hr->humongous_start_region())));
// HeapRegion::add_strong_code_root() avoids adding duplicate
// entries but having duplicates is OK since we "mark" nmethods
// as visited when we scan the strong code root lists during the GC.
hr->add_strong_code_root(_nm);
- assert(hr->rem_set()->strong_code_roots_list_contains(_nm), "add failed?");
+ assert(hr->rem_set()->strong_code_roots_list_contains(_nm),
+ err_msg("failed to add code root "PTR_FORMAT" to remembered set of region "HR_FORMAT,
+ _nm, HR_FORMAT_PARAMS(hr)));
}
}
@@ -6683,9 +6688,15 @@
if (!oopDesc::is_null(heap_oop)) {
oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
HeapRegion* hr = _g1h->heap_region_containing(obj);
- assert(!hr->isHumongous(), "code root in humongous region?");
+ assert(!hr->continuesHumongous(),
+ err_msg("trying to remove code root "PTR_FORMAT" in continuation of humongous region "HR_FORMAT
+ " starting at "HR_FORMAT,
+ _nm, HR_FORMAT_PARAMS(hr), HR_FORMAT_PARAMS(hr->humongous_start_region())));
+
hr->remove_strong_code_root(_nm);
- assert(!hr->rem_set()->strong_code_roots_list_contains(_nm), "remove failed?");
+ assert(!hr->rem_set()->strong_code_roots_list_contains(_nm),
+ err_msg("failed to remove code root "PTR_FORMAT" of region "HR_FORMAT,
+ _nm, HR_FORMAT_PARAMS(hr)));
}
}
@@ -6716,7 +6727,9 @@
class MigrateCodeRootsHeapRegionClosure: public HeapRegionClosure {
public:
bool doHeapRegion(HeapRegion *hr) {
- assert(!hr->isHumongous(), "humongous region in collection set?");
+ assert(!hr->isHumongous(),
+ err_msg("humongous region "HR_FORMAT" should not have been added to collection set",
+ HR_FORMAT_PARAMS(hr)));
hr->migrate_strong_code_roots();
return false;
}
@@ -6796,9 +6809,13 @@
bool doHeapRegion(HeapRegion *hr) {
HeapRegionRemSet* hrrs = hr->rem_set();
- if (hr->isHumongous()) {
- // Code roots should never be attached to a humongous region
- assert(hrrs->strong_code_roots_list_length() == 0, "sanity");
+ if (hr->continuesHumongous()) {
+ // Code roots should never be attached to a continuation of a humongous region
+ assert(hrrs->strong_code_roots_list_length() == 0,
+ err_msg("code roots should never be attached to continuations of humongous region "HR_FORMAT
+ " starting at "HR_FORMAT", but has "INT32_FORMAT,
+ HR_FORMAT_PARAMS(hr), HR_FORMAT_PARAMS(hr->humongous_start_region()),
+ hrrs->strong_code_roots_list_length()));
return false;
}
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -313,27 +313,38 @@
// for the first time during initialization.
_reserve_regions = 0;
- initialize_all();
_collectionSetChooser = new CollectionSetChooser();
- _young_gen_sizer = new G1YoungGenSizer(); // Must be after call to initialize_flags
+}
+
+void G1CollectorPolicy::initialize_alignments() {
+ _space_alignment = HeapRegion::GrainBytes;
+ size_t card_table_alignment = GenRemSet::max_alignment_constraint(GenRemSet::CardTable);
+ size_t page_size = UseLargePages ? os::large_page_size() : os::vm_page_size();
+ _heap_alignment = MAX3(card_table_alignment, _space_alignment, page_size);
}
void G1CollectorPolicy::initialize_flags() {
- _min_alignment = HeapRegion::GrainBytes;
- size_t card_table_alignment = GenRemSet::max_alignment_constraint(rem_set_name());
- size_t page_size = UseLargePages ? os::large_page_size() : os::vm_page_size();
- _max_alignment = MAX3(card_table_alignment, _min_alignment, page_size);
+ if (G1HeapRegionSize != HeapRegion::GrainBytes) {
+ FLAG_SET_ERGO(uintx, G1HeapRegionSize, HeapRegion::GrainBytes);
+ }
+
if (SurvivorRatio < 1) {
vm_exit_during_initialization("Invalid survivor ratio specified");
}
CollectorPolicy::initialize_flags();
+ _young_gen_sizer = new G1YoungGenSizer(); // Must be after call to initialize_flags
}
-G1YoungGenSizer::G1YoungGenSizer() : _sizer_kind(SizerDefaults), _adaptive_size(true) {
- assert(G1NewSizePercent <= G1MaxNewSizePercent, "Min larger than max");
- assert(G1NewSizePercent > 0 && G1NewSizePercent < 100, "Min out of bounds");
- assert(G1MaxNewSizePercent > 0 && G1MaxNewSizePercent < 100, "Max out of bounds");
+void G1CollectorPolicy::post_heap_initialize() {
+ uintx max_regions = G1CollectedHeap::heap()->max_regions();
+ size_t max_young_size = (size_t)_young_gen_sizer->max_young_length(max_regions) * HeapRegion::GrainBytes;
+ if (max_young_size != MaxNewSize) {
+ FLAG_SET_ERGO(uintx, MaxNewSize, max_young_size);
+ }
+}
+G1YoungGenSizer::G1YoungGenSizer() : _sizer_kind(SizerDefaults), _adaptive_size(true),
+ _min_desired_young_length(0), _max_desired_young_length(0) {
if (FLAG_IS_CMDLINE(NewRatio)) {
if (FLAG_IS_CMDLINE(NewSize) || FLAG_IS_CMDLINE(MaxNewSize)) {
warning("-XX:NewSize and -XX:MaxNewSize override -XX:NewRatio");
@@ -344,8 +355,13 @@
}
}
- if (FLAG_IS_CMDLINE(NewSize) && FLAG_IS_CMDLINE(MaxNewSize) && NewSize > MaxNewSize) {
- vm_exit_during_initialization("Initial young gen size set larger than the maximum young gen size");
+ if (NewSize > MaxNewSize) {
+ if (FLAG_IS_CMDLINE(MaxNewSize)) {
+ warning("NewSize (" SIZE_FORMAT "k) is greater than the MaxNewSize (" SIZE_FORMAT "k). "
+ "A new max generation size of " SIZE_FORMAT "k will be used.",
+ NewSize/K, MaxNewSize/K, NewSize/K);
+ }
+ MaxNewSize = NewSize;
}
if (FLAG_IS_CMDLINE(NewSize)) {
@@ -378,34 +394,48 @@
return MAX2(1U, default_value);
}
-void G1YoungGenSizer::heap_size_changed(uint new_number_of_heap_regions) {
- assert(new_number_of_heap_regions > 0, "Heap must be initialized");
+void G1YoungGenSizer::recalculate_min_max_young_length(uint number_of_heap_regions, uint* min_young_length, uint* max_young_length) {
+ assert(number_of_heap_regions > 0, "Heap must be initialized");
switch (_sizer_kind) {
case SizerDefaults:
- _min_desired_young_length = calculate_default_min_length(new_number_of_heap_regions);
- _max_desired_young_length = calculate_default_max_length(new_number_of_heap_regions);
+ *min_young_length = calculate_default_min_length(number_of_heap_regions);
+ *max_young_length = calculate_default_max_length(number_of_heap_regions);
break;
case SizerNewSizeOnly:
- _max_desired_young_length = calculate_default_max_length(new_number_of_heap_regions);
- _max_desired_young_length = MAX2(_min_desired_young_length, _max_desired_young_length);
+ *max_young_length = calculate_default_max_length(number_of_heap_regions);
+ *max_young_length = MAX2(*min_young_length, *max_young_length);
break;
case SizerMaxNewSizeOnly:
- _min_desired_young_length = calculate_default_min_length(new_number_of_heap_regions);
- _min_desired_young_length = MIN2(_min_desired_young_length, _max_desired_young_length);
+ *min_young_length = calculate_default_min_length(number_of_heap_regions);
+ *min_young_length = MIN2(*min_young_length, *max_young_length);
break;
case SizerMaxAndNewSize:
// Do nothing. Values set on the command line, don't update them at runtime.
break;
case SizerNewRatio:
- _min_desired_young_length = new_number_of_heap_regions / (NewRatio + 1);
- _max_desired_young_length = _min_desired_young_length;
+ *min_young_length = number_of_heap_regions / (NewRatio + 1);
+ *max_young_length = *min_young_length;
break;
default:
ShouldNotReachHere();
}
- assert(_min_desired_young_length <= _max_desired_young_length, "Invalid min/max young gen size values");
+ assert(*min_young_length <= *max_young_length, "Invalid min/max young gen size values");
+}
+
+uint G1YoungGenSizer::max_young_length(uint number_of_heap_regions) {
+ // We need to pass the desired values because recalculation may not update these
+ // values in some cases.
+ uint temp = _min_desired_young_length;
+ uint result = _max_desired_young_length;
+ recalculate_min_max_young_length(number_of_heap_regions, &temp, &result);
+ return result;
+}
+
+void G1YoungGenSizer::heap_size_changed(uint new_number_of_heap_regions) {
+ recalculate_min_max_young_length(new_number_of_heap_regions, &_min_desired_young_length,
+ &_max_desired_young_length);
}
void G1CollectorPolicy::init() {
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -136,8 +136,16 @@
uint calculate_default_min_length(uint new_number_of_heap_regions);
uint calculate_default_max_length(uint new_number_of_heap_regions);
+ // Update the given values for minimum and maximum young gen length in regions
+ // given the number of heap regions depending on the kind of sizing algorithm.
+ void recalculate_min_max_young_length(uint number_of_heap_regions, uint* min_young_length, uint* max_young_length);
+
public:
G1YoungGenSizer();
+ // Calculate the maximum length of the young gen given the number of regions
+ // depending on the sizing algorithm.
+ uint max_young_length(uint number_of_heap_regions);
+
void heap_size_changed(uint new_number_of_heap_regions);
uint min_desired_young_length() {
return _min_desired_young_length;
@@ -165,13 +173,9 @@
G1MMUTracker* _mmu_tracker;
+ void initialize_alignments();
void initialize_flags();
- void initialize_all() {
- initialize_flags();
- initialize_size_info();
- }
-
CollectionSetChooser* _collectionSetChooser;
double _full_collection_start_sec;
@@ -217,7 +221,6 @@
return _during_marking;
}
-private:
enum PredictionConstants {
TruncatedSeqLength = 10
};
@@ -665,8 +668,6 @@
BarrierSet::Name barrier_set_name() { return BarrierSet::G1SATBCTLogging; }
- GenRemSet::Name rem_set_name() { return GenRemSet::CardTable; }
-
bool need_to_start_conc_mark(const char* source, size_t alloc_word_size = 0);
// Record the start and end of an evacuation pause.
@@ -934,6 +935,7 @@
// Calculates survivor space parameters.
void update_survivors_policy();
+ virtual void post_heap_initialize();
};
// This should move to some place more general...
--- a/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -377,11 +377,6 @@
DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();
dcqs.concatenate_logs();
- if (G1CollectedHeap::use_parallel_gc_threads()) {
- // Don't set the number of workers here. It will be set
- // when the task is run
- // _seq_task->set_n_termination((int)n_workers());
- }
guarantee( _cards_scanned == NULL, "invariant" );
_cards_scanned = NEW_C_HEAP_ARRAY(size_t, n_workers(), mtGC);
for (uint i = 0; i < n_workers(); ++i) {
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -174,11 +174,6 @@
region_size = MAX_REGION_SIZE;
}
- if (region_size != G1HeapRegionSize) {
- // Update the flag to make sure that PrintFlagsFinal logs the correct value
- FLAG_SET_ERGO(uintx, G1HeapRegionSize, region_size);
- }
-
// And recalculate the log.
region_size_log = log2_long((jlong) region_size);
@@ -606,7 +601,9 @@
void HeapRegion::migrate_strong_code_roots() {
assert(in_collection_set(), "only collection set regions");
- assert(!isHumongous(), "not humongous regions");
+ assert(!isHumongous(),
+ err_msg("humongous region "HR_FORMAT" should not have been added to collection set",
+ HR_FORMAT_PARAMS(this)));
HeapRegionRemSet* hrrs = rem_set();
hrrs->migrate_strong_code_roots();
@@ -727,12 +724,11 @@
return;
}
- // An H-region should have an empty strong code root list
- if (isHumongous()) {
+ if (continuesHumongous()) {
if (strong_code_roots_length > 0) {
- gclog_or_tty->print_cr("region ["PTR_FORMAT","PTR_FORMAT"] is humongous "
- "but has "INT32_FORMAT" code root entries",
- bottom(), end(), strong_code_roots_length);
+ gclog_or_tty->print_cr("region "HR_FORMAT" is a continuation of a humongous "
+ "region but has "INT32_FORMAT" code root entries",
+ HR_FORMAT_PARAMS(this), strong_code_roots_length);
*failures = true;
}
return;
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -1004,7 +1004,9 @@
void HeapRegionRemSet::migrate_strong_code_roots() {
assert(hr()->in_collection_set(), "only collection set regions");
- assert(!hr()->isHumongous(), "not humongous regions");
+ assert(!hr()->isHumongous(),
+ err_msg("humongous region "HR_FORMAT" should not have been added to the collection set",
+ HR_FORMAT_PARAMS(hr())));
ResourceMark rm;
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -25,6 +25,7 @@
#include "precompiled.hpp"
#include "gc_implementation/parallelScavenge/adjoiningGenerations.hpp"
#include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp"
+#include "gc_implementation/parallelScavenge/generationSizer.hpp"
#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
// If boundary moving is being used, create the young gen and old
@@ -32,15 +33,17 @@
// the old behavior otherwise (with PSYoungGen and PSOldGen).
AdjoiningGenerations::AdjoiningGenerations(ReservedSpace old_young_rs,
- size_t init_low_byte_size,
- size_t min_low_byte_size,
- size_t max_low_byte_size,
- size_t init_high_byte_size,
- size_t min_high_byte_size,
- size_t max_high_byte_size,
+ GenerationSizer* policy,
size_t alignment) :
- _virtual_spaces(old_young_rs, min_low_byte_size,
- min_high_byte_size, alignment) {
+ _virtual_spaces(old_young_rs, policy->min_gen1_size(),
+ policy->min_gen0_size(), alignment) {
+ size_t init_low_byte_size = policy->initial_gen1_size();
+ size_t min_low_byte_size = policy->min_gen1_size();
+ size_t max_low_byte_size = policy->max_gen1_size();
+ size_t init_high_byte_size = policy->initial_gen0_size();
+ size_t min_high_byte_size = policy->min_gen0_size();
+ size_t max_high_byte_size = policy->max_gen0_size();
+
assert(min_low_byte_size <= init_low_byte_size &&
init_low_byte_size <= max_low_byte_size, "Parameter check");
assert(min_high_byte_size <= init_high_byte_size &&
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -28,6 +28,7 @@
#include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp"
#include "gc_implementation/parallelScavenge/asPSOldGen.hpp"
#include "gc_implementation/parallelScavenge/asPSYoungGen.hpp"
+#include "gc_implementation/parallelScavenge/generationSizer.hpp"
// Contains two generations that both use an AdjoiningVirtualSpaces.
@@ -56,14 +57,7 @@
bool request_young_gen_expansion(size_t desired_change_in_bytes);
public:
- AdjoiningGenerations(ReservedSpace rs,
- size_t init_low_byte_size,
- size_t min_low_byte_size,
- size_t max_low_byte_size,
- size_t init_high_byte_size,
- size_t min_high_byte_size,
- size_t max_high_bytes_size,
- size_t alignment);
+ AdjoiningGenerations(ReservedSpace rs, GenerationSizer* policy, size_t alignment);
// Accessors
PSYoungGen* young_gen() { return _young_gen; }
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSOldGen.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -54,7 +54,6 @@
int level) :
PSOldGen(initial_size, min_size, size_limit, gen_name, level),
_gen_size_limit(size_limit)
-
{}
ASPSOldGen::ASPSOldGen(PSVirtualSpace* vs,
@@ -65,13 +64,11 @@
int level) :
PSOldGen(initial_size, min_size, size_limit, gen_name, level),
_gen_size_limit(size_limit)
-
{
_virtual_space = vs;
}
void ASPSOldGen::initialize_work(const char* perf_data_name, int level) {
-
PSOldGen::initialize_work(perf_data_name, level);
// The old gen can grow to gen_size_limit(). _reserve reflects only
@@ -94,7 +91,7 @@
ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
size_t result = gen_size_limit() - virtual_space()->committed_size();
- size_t result_aligned = align_size_down(result, heap->old_gen_alignment());
+ size_t result_aligned = align_size_down(result, heap->generation_alignment());
return result_aligned;
}
@@ -105,7 +102,7 @@
}
ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
- const size_t gen_alignment = heap->old_gen_alignment();
+ const size_t gen_alignment = heap->generation_alignment();
PSAdaptiveSizePolicy* policy = heap->size_policy();
const size_t working_size =
used_in_bytes() + (size_t) policy->avg_promoted()->padded_average();
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -70,13 +70,12 @@
}
size_t ASPSYoungGen::available_for_expansion() {
-
size_t current_committed_size = virtual_space()->committed_size();
assert((gen_size_limit() >= current_committed_size),
"generation size limit is wrong");
ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
size_t result = gen_size_limit() - current_committed_size;
- size_t result_aligned = align_size_down(result, heap->young_gen_alignment());
+ size_t result_aligned = align_size_down(result, heap->generation_alignment());
return result_aligned;
}
@@ -85,7 +84,6 @@
// Future implementations could check the survivors and if to_space is in the
// right place (below from_space), take a chunk from to_space.
size_t ASPSYoungGen::available_for_contraction() {
-
size_t uncommitted_bytes = virtual_space()->uncommitted_size();
if (uncommitted_bytes != 0) {
return uncommitted_bytes;
@@ -94,8 +92,8 @@
if (eden_space()->is_empty()) {
// Respect the minimum size for eden and for the young gen as a whole.
ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
- const size_t eden_alignment = heap->intra_heap_alignment();
- const size_t gen_alignment = heap->young_gen_alignment();
+ const size_t eden_alignment = heap->space_alignment();
+ const size_t gen_alignment = heap->generation_alignment();
assert(eden_space()->capacity_in_bytes() >= eden_alignment,
"Alignment is wrong");
@@ -121,7 +119,6 @@
gclog_or_tty->print_cr(" gen_avail %d K", gen_avail/K);
}
return result_aligned;
-
}
return 0;
@@ -132,7 +129,7 @@
// to_space can be.
size_t ASPSYoungGen::available_to_live() {
ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
- const size_t alignment = heap->intra_heap_alignment();
+ const size_t alignment = heap->space_alignment();
// Include any space that is committed but is not in eden.
size_t available = pointer_delta(eden_space()->bottom(),
@@ -296,7 +293,7 @@
assert(eden_start < from_start, "Cannot push into from_space");
ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
- const size_t alignment = heap->intra_heap_alignment();
+ const size_t alignment = heap->space_alignment();
const bool maintain_minimum =
(requested_eden_size + 2 * requested_survivor_size) <= min_gen_size();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "gc_implementation/parallelScavenge/generationSizer.hpp"
+#include "memory/collectorPolicy.hpp"
+
+void GenerationSizer::trace_gen_sizes(const char* const str) {
+ if (TracePageSizes) {
+ tty->print_cr("%s: " SIZE_FORMAT "," SIZE_FORMAT " "
+ SIZE_FORMAT "," SIZE_FORMAT " "
+ SIZE_FORMAT,
+ str,
+ _min_gen1_size / K, _max_gen1_size / K,
+ _min_gen0_size / K, _max_gen0_size / K,
+ _max_heap_byte_size / K);
+ }
+}
+
+void GenerationSizer::initialize_alignments() {
+ _space_alignment = _gen_alignment = default_gen_alignment();
+ _heap_alignment = compute_heap_alignment();
+}
+
+void GenerationSizer::initialize_flags() {
+ // Do basic sizing work
+ TwoGenerationCollectorPolicy::initialize_flags();
+
+ assert(UseSerialGC ||
+ !FLAG_IS_DEFAULT(ParallelGCThreads) ||
+ (ParallelGCThreads > 0),
+ "ParallelGCThreads should be set before flag initialization");
+
+ // The survivor ratio's are calculated "raw", unlike the
+ // default gc, which adds 2 to the ratio value. We need to
+ // make sure the values are valid before using them.
+ if (MinSurvivorRatio < 3) {
+ FLAG_SET_ERGO(uintx, MinSurvivorRatio, 3);
+ }
+
+ if (InitialSurvivorRatio < 3) {
+ FLAG_SET_ERGO(uintx, InitialSurvivorRatio, 3);
+ }
+}
+
+void GenerationSizer::initialize_size_info() {
+ trace_gen_sizes("ps heap raw");
+ const size_t page_sz = os::page_size_for_region(_min_heap_byte_size,
+ _max_heap_byte_size,
+ 8);
+
+ // Can a page size be something else than a power of two?
+ assert(is_power_of_2((intptr_t)page_sz), "must be a power of 2");
+ size_t new_alignment = round_to(page_sz, _gen_alignment);
+ if (new_alignment != _gen_alignment) {
+ _gen_alignment = new_alignment;
+ _space_alignment = new_alignment;
+ // Redo everything from the start
+ initialize_flags();
+ }
+ TwoGenerationCollectorPolicy::initialize_size_info();
+
+ trace_gen_sizes("ps heap rnd");
+}
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -31,41 +31,17 @@
// TwoGenerationCollectorPolicy. Lets reuse it!
class GenerationSizer : public TwoGenerationCollectorPolicy {
- public:
- GenerationSizer() {
- // Partial init only!
- initialize_flags();
- initialize_size_info();
- }
+ private:
- void initialize_flags() {
- // Do basic sizing work
- TwoGenerationCollectorPolicy::initialize_flags();
+ void trace_gen_sizes(const char* const str);
- assert(UseSerialGC ||
- !FLAG_IS_DEFAULT(ParallelGCThreads) ||
- (ParallelGCThreads > 0),
- "ParallelGCThreads should be set before flag initialization");
+ // The alignment used for boundary between young gen and old gen
+ static size_t default_gen_alignment() { return 64 * K * HeapWordSize; }
- // The survivor ratio's are calculated "raw", unlike the
- // default gc, which adds 2 to the ratio value. We need to
- // make sure the values are valid before using them.
- if (MinSurvivorRatio < 3) {
- MinSurvivorRatio = 3;
- }
+ protected:
- if (InitialSurvivorRatio < 3) {
- InitialSurvivorRatio = 3;
- }
- }
-
- size_t min_young_gen_size() { return _min_gen0_size; }
- size_t young_gen_size() { return _initial_gen0_size; }
- size_t max_young_gen_size() { return _max_gen0_size; }
-
- size_t min_old_gen_size() { return _min_gen1_size; }
- size_t old_gen_size() { return _initial_gen1_size; }
- size_t max_old_gen_size() { return _max_gen1_size; }
+ void initialize_alignments();
+ void initialize_flags();
+ void initialize_size_info();
};
-
#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GENERATIONSIZER_HPP
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -52,76 +52,20 @@
ParallelScavengeHeap* ParallelScavengeHeap::_psh = NULL;
GCTaskManager* ParallelScavengeHeap::_gc_task_manager = NULL;
-static void trace_gen_sizes(const char* const str,
- size_t og_min, size_t og_max,
- size_t yg_min, size_t yg_max)
-{
- if (TracePageSizes) {
- tty->print_cr("%s: " SIZE_FORMAT "," SIZE_FORMAT " "
- SIZE_FORMAT "," SIZE_FORMAT " "
- SIZE_FORMAT,
- str,
- og_min / K, og_max / K,
- yg_min / K, yg_max / K,
- (og_max + yg_max) / K);
- }
-}
-
jint ParallelScavengeHeap::initialize() {
CollectedHeap::pre_initialize();
- // Cannot be initialized until after the flags are parsed
- // GenerationSizer flag_parser;
+ // Initialize collector policy
_collector_policy = new GenerationSizer();
-
- size_t yg_min_size = _collector_policy->min_young_gen_size();
- size_t yg_max_size = _collector_policy->max_young_gen_size();
- size_t og_min_size = _collector_policy->min_old_gen_size();
- size_t og_max_size = _collector_policy->max_old_gen_size();
-
- trace_gen_sizes("ps heap raw",
- og_min_size, og_max_size,
- yg_min_size, yg_max_size);
-
- const size_t og_page_sz = os::page_size_for_region(yg_min_size + og_min_size,
- yg_max_size + og_max_size,
- 8);
-
- const size_t og_align = set_alignment(_old_gen_alignment, og_page_sz);
- const size_t yg_align = set_alignment(_young_gen_alignment, og_page_sz);
+ _collector_policy->initialize_all();
- // Update sizes to reflect the selected page size(s).
- //
- // NEEDS_CLEANUP. The default TwoGenerationCollectorPolicy uses NewRatio; it
- // should check UseAdaptiveSizePolicy. Changes from generationSizer could
- // move to the common code.
- yg_min_size = align_size_up(yg_min_size, yg_align);
- yg_max_size = align_size_up(yg_max_size, yg_align);
- size_t yg_cur_size =
- align_size_up(_collector_policy->young_gen_size(), yg_align);
- yg_cur_size = MAX2(yg_cur_size, yg_min_size);
+ const size_t heap_size = _collector_policy->max_heap_byte_size();
- og_min_size = align_size_up(og_min_size, og_align);
- // Align old gen size down to preserve specified heap size.
- assert(og_align == yg_align, "sanity");
- og_max_size = align_size_down(og_max_size, og_align);
- og_max_size = MAX2(og_max_size, og_min_size);
- size_t og_cur_size =
- align_size_down(_collector_policy->old_gen_size(), og_align);
- og_cur_size = MAX2(og_cur_size, og_min_size);
-
- trace_gen_sizes("ps heap rnd",
- og_min_size, og_max_size,
- yg_min_size, yg_max_size);
-
- const size_t heap_size = og_max_size + yg_max_size;
-
- ReservedSpace heap_rs = Universe::reserve_heap(heap_size, og_align);
-
+ ReservedSpace heap_rs = Universe::reserve_heap(heap_size, _collector_policy->heap_alignment());
MemTracker::record_virtual_memory_type((address)heap_rs.base(), mtJavaHeap);
- os::trace_page_sizes("ps main", og_min_size + yg_min_size,
- og_max_size + yg_max_size, og_page_sz,
+ os::trace_page_sizes("ps main", _collector_policy->min_heap_byte_size(),
+ heap_size, generation_alignment(),
heap_rs.base(),
heap_rs.size());
if (!heap_rs.is_reserved()) {
@@ -142,12 +86,6 @@
return JNI_ENOMEM;
}
- // Initial young gen size is 4 Mb
- //
- // XXX - what about flag_parser.young_gen_size()?
- const size_t init_young_size = align_size_up(4 * M, yg_align);
- yg_cur_size = MAX2(MIN2(init_young_size, yg_max_size), yg_cur_size);
-
// Make up the generations
// Calculate the maximum size that a generation can grow. This
// includes growth into the other generation. Note that the
@@ -157,14 +95,7 @@
double max_gc_pause_sec = ((double) MaxGCPauseMillis)/1000.0;
double max_gc_minor_pause_sec = ((double) MaxGCMinorPauseMillis)/1000.0;
- _gens = new AdjoiningGenerations(heap_rs,
- og_cur_size,
- og_min_size,
- og_max_size,
- yg_cur_size,
- yg_min_size,
- yg_max_size,
- yg_align);
+ _gens = new AdjoiningGenerations(heap_rs, _collector_policy, generation_alignment());
_old_gen = _gens->old_gen();
_young_gen = _gens->young_gen();
@@ -176,7 +107,7 @@
new PSAdaptiveSizePolicy(eden_capacity,
initial_promo_size,
young_gen()->to_space()->capacity_in_bytes(),
- intra_heap_alignment(),
+ _collector_policy->gen_alignment(),
max_gc_pause_sec,
max_gc_minor_pause_sec,
GCTimeRatio
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -25,6 +25,7 @@
#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARALLELSCAVENGEHEAP_HPP
#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARALLELSCAVENGEHEAP_HPP
+#include "gc_implementation/parallelScavenge/generationSizer.hpp"
#include "gc_implementation/parallelScavenge/objectStartArray.hpp"
#include "gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp"
#include "gc_implementation/parallelScavenge/psOldGen.hpp"
@@ -32,14 +33,12 @@
#include "gc_implementation/shared/gcPolicyCounters.hpp"
#include "gc_implementation/shared/gcWhen.hpp"
#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/collectorPolicy.hpp"
#include "utilities/ostream.hpp"
class AdjoiningGenerations;
-class CollectorPolicy;
class GCHeapSummary;
class GCTaskManager;
-class GenerationSizer;
-class CollectorPolicy;
class PSAdaptiveSizePolicy;
class PSHeapSummary;
@@ -50,24 +49,20 @@
static PSOldGen* _old_gen;
// Sizing policy for entire heap
- static PSAdaptiveSizePolicy* _size_policy;
- static PSGCAdaptivePolicyCounters* _gc_policy_counters;
+ static PSAdaptiveSizePolicy* _size_policy;
+ static PSGCAdaptivePolicyCounters* _gc_policy_counters;
static ParallelScavengeHeap* _psh;
- size_t _young_gen_alignment;
- size_t _old_gen_alignment;
-
GenerationSizer* _collector_policy;
- inline size_t set_alignment(size_t& var, size_t val);
-
// Collection of generations that are adjacent in the
// space reserved for the heap.
AdjoiningGenerations* _gens;
unsigned int _death_march_count;
- static GCTaskManager* _gc_task_manager; // The task manager.
+ // The task manager
+ static GCTaskManager* _gc_task_manager;
void trace_heap(GCWhen::Type when, GCTracer* tracer);
@@ -80,16 +75,7 @@
HeapWord* mem_allocate_old_gen(size_t size);
public:
- ParallelScavengeHeap() : CollectedHeap() {
- _death_march_count = 0;
- set_alignment(_young_gen_alignment, intra_heap_alignment());
- set_alignment(_old_gen_alignment, intra_heap_alignment());
- }
-
- // Return the (conservative) maximum heap alignment
- static size_t conservative_max_heap_alignment() {
- return intra_heap_alignment();
- }
+ ParallelScavengeHeap() : CollectedHeap(), _death_march_count(0) { }
// For use by VM operations
enum CollectionType {
@@ -103,8 +89,8 @@
virtual CollectorPolicy* collector_policy() const { return (CollectorPolicy*) _collector_policy; }
- static PSYoungGen* young_gen() { return _young_gen; }
- static PSOldGen* old_gen() { return _old_gen; }
+ static PSYoungGen* young_gen() { return _young_gen; }
+ static PSOldGen* old_gen() { return _old_gen; }
virtual PSAdaptiveSizePolicy* size_policy() { return _size_policy; }
@@ -121,13 +107,15 @@
void post_initialize();
void update_counters();
- // The alignment used for the various generations.
- size_t young_gen_alignment() const { return _young_gen_alignment; }
- size_t old_gen_alignment() const { return _old_gen_alignment; }
+
+ // The alignment used for the various areas
+ size_t space_alignment() { return _collector_policy->space_alignment(); }
+ size_t generation_alignment() { return _collector_policy->gen_alignment(); }
- // The alignment used for eden and survivors within the young gen
- // and for boundary between young gen and old gen.
- static size_t intra_heap_alignment() { return 64 * K * HeapWordSize; }
+ // Return the (conservative) maximum heap alignment
+ static size_t conservative_max_heap_alignment() {
+ return CollectorPolicy::compute_heap_alignment();
+ }
size_t capacity() const;
size_t used() const;
@@ -157,16 +145,15 @@
virtual bool is_in_partial_collection(const void *p);
#endif
- bool is_in_young(oop p); // reserved part
- bool is_in_old(oop p); // reserved part
+ bool is_in_young(oop p); // reserved part
+ bool is_in_old(oop p); // reserved part
// Memory allocation. "gc_time_limit_was_exceeded" will
// be set to true if the adaptive size policy determine that
// an excessive amount of time is being spent doing collections
// and caused a NULL to be returned. If a NULL is not returned,
// "gc_time_limit_was_exceeded" has an undefined meaning.
- HeapWord* mem_allocate(size_t size,
- bool* gc_overhead_limit_was_exceeded);
+ HeapWord* mem_allocate(size_t size, bool* gc_overhead_limit_was_exceeded);
// Allocation attempt(s) during a safepoint. It should never be called
// to allocate a new TLAB as this allocation might be satisfied out
@@ -257,17 +244,10 @@
// Call these in sequential code around the processing of strong roots.
class ParStrongRootsScope : public MarkingCodeBlobClosure::MarkScope {
- public:
+ public:
ParStrongRootsScope();
~ParStrongRootsScope();
};
};
-inline size_t ParallelScavengeHeap::set_alignment(size_t& var, size_t val)
-{
- assert(is_power_of_2((intptr_t)val), "must be a power of 2");
- var = round_to(val, intra_heap_alignment());
- return var;
-}
-
#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARALLELSCAVENGEHEAP_HPP
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -37,7 +37,7 @@
PSAdaptiveSizePolicy::PSAdaptiveSizePolicy(size_t init_eden_size,
size_t init_promo_size,
size_t init_survivor_size,
- size_t intra_generation_alignment,
+ size_t space_alignment,
double gc_pause_goal_sec,
double gc_minor_pause_goal_sec,
uint gc_cost_ratio) :
@@ -46,9 +46,8 @@
init_survivor_size,
gc_pause_goal_sec,
gc_cost_ratio),
- _collection_cost_margin_fraction(AdaptiveSizePolicyCollectionCostMargin/
- 100.0),
- _intra_generation_alignment(intra_generation_alignment),
+ _collection_cost_margin_fraction(AdaptiveSizePolicyCollectionCostMargin / 100.0),
+ _space_alignment(space_alignment),
_live_at_last_full_gc(init_promo_size),
_gc_minor_pause_goal_sec(gc_minor_pause_goal_sec),
_latest_major_mutator_interval_seconds(0),
@@ -353,11 +352,10 @@
}
// Align everything and make a final limit check
- const size_t alignment = _intra_generation_alignment;
- desired_eden_size = align_size_up(desired_eden_size, alignment);
- desired_eden_size = MAX2(desired_eden_size, alignment);
+ desired_eden_size = align_size_up(desired_eden_size, _space_alignment);
+ desired_eden_size = MAX2(desired_eden_size, _space_alignment);
- eden_limit = align_size_down(eden_limit, alignment);
+ eden_limit = align_size_down(eden_limit, _space_alignment);
// And one last limit check, now that we've aligned things.
if (desired_eden_size > eden_limit) {
@@ -561,11 +559,10 @@
}
// Align everything and make a final limit check
- const size_t alignment = _intra_generation_alignment;
- desired_promo_size = align_size_up(desired_promo_size, alignment);
- desired_promo_size = MAX2(desired_promo_size, alignment);
+ desired_promo_size = align_size_up(desired_promo_size, _space_alignment);
+ desired_promo_size = MAX2(desired_promo_size, _space_alignment);
- promo_limit = align_size_down(promo_limit, alignment);
+ promo_limit = align_size_down(promo_limit, _space_alignment);
// And one last limit check, now that we've aligned things.
desired_promo_size = MIN2(desired_promo_size, promo_limit);
@@ -650,7 +647,7 @@
}
// If the desired eden size is as small as it will get,
// try to adjust the old gen size.
- if (*desired_eden_size_ptr <= _intra_generation_alignment) {
+ if (*desired_eden_size_ptr <= _space_alignment) {
// Vary the old gen size to reduce the young gen pause. This
// may not be a good idea. This is just a test.
if (minor_pause_old_estimator()->decrement_will_decrease()) {
@@ -755,7 +752,7 @@
// If the promo size is at the minimum (i.e., the old gen
// size will not actually decrease), consider changing the
// young gen size.
- if (*desired_promo_size_ptr < _intra_generation_alignment) {
+ if (*desired_promo_size_ptr < _space_alignment) {
// If increasing the young generation will decrease the old gen
// pause, do it.
// During startup there is noise in the statistics for deciding
@@ -1066,24 +1063,24 @@
size_t PSAdaptiveSizePolicy::eden_increment_aligned_up(size_t cur_eden) {
size_t result = eden_increment(cur_eden, YoungGenerationSizeIncrement);
- return align_size_up(result, _intra_generation_alignment);
+ return align_size_up(result, _space_alignment);
}
size_t PSAdaptiveSizePolicy::eden_increment_aligned_down(size_t cur_eden) {
size_t result = eden_increment(cur_eden);
- return align_size_down(result, _intra_generation_alignment);
+ return align_size_down(result, _space_alignment);
}
size_t PSAdaptiveSizePolicy::eden_increment_with_supplement_aligned_up(
size_t cur_eden) {
size_t result = eden_increment(cur_eden,
YoungGenerationSizeIncrement + _young_gen_size_increment_supplement);
- return align_size_up(result, _intra_generation_alignment);
+ return align_size_up(result, _space_alignment);
}
size_t PSAdaptiveSizePolicy::eden_decrement_aligned_down(size_t cur_eden) {
size_t eden_heap_delta = eden_decrement(cur_eden);
- return align_size_down(eden_heap_delta, _intra_generation_alignment);
+ return align_size_down(eden_heap_delta, _space_alignment);
}
size_t PSAdaptiveSizePolicy::eden_decrement(size_t cur_eden) {
@@ -1105,24 +1102,24 @@
size_t PSAdaptiveSizePolicy::promo_increment_aligned_up(size_t cur_promo) {
size_t result = promo_increment(cur_promo, TenuredGenerationSizeIncrement);
- return align_size_up(result, _intra_generation_alignment);
+ return align_size_up(result, _space_alignment);
}
size_t PSAdaptiveSizePolicy::promo_increment_aligned_down(size_t cur_promo) {
size_t result = promo_increment(cur_promo, TenuredGenerationSizeIncrement);
- return align_size_down(result, _intra_generation_alignment);
+ return align_size_down(result, _space_alignment);
}
size_t PSAdaptiveSizePolicy::promo_increment_with_supplement_aligned_up(
size_t cur_promo) {
size_t result = promo_increment(cur_promo,
TenuredGenerationSizeIncrement + _old_gen_size_increment_supplement);
- return align_size_up(result, _intra_generation_alignment);
+ return align_size_up(result, _space_alignment);
}
size_t PSAdaptiveSizePolicy::promo_decrement_aligned_down(size_t cur_promo) {
size_t promo_heap_delta = promo_decrement(cur_promo);
- return align_size_down(promo_heap_delta, _intra_generation_alignment);
+ return align_size_down(promo_heap_delta, _space_alignment);
}
size_t PSAdaptiveSizePolicy::promo_decrement(size_t cur_promo) {
@@ -1135,9 +1132,9 @@
bool is_survivor_overflow,
uint tenuring_threshold,
size_t survivor_limit) {
- assert(survivor_limit >= _intra_generation_alignment,
+ assert(survivor_limit >= _space_alignment,
"survivor_limit too small");
- assert((size_t)align_size_down(survivor_limit, _intra_generation_alignment)
+ assert((size_t)align_size_down(survivor_limit, _space_alignment)
== survivor_limit, "survivor_limit not aligned");
// This method is called even if the tenuring threshold and survivor
@@ -1201,8 +1198,8 @@
// We're trying to pad the survivor size as little as possible without
// overflowing the survivor spaces.
size_t target_size = align_size_up((size_t)_avg_survived->padded_average(),
- _intra_generation_alignment);
- target_size = MAX2(target_size, _intra_generation_alignment);
+ _space_alignment);
+ target_size = MAX2(target_size, _space_alignment);
if (target_size > survivor_limit) {
// Target size is bigger than we can handle. Let's also reduce
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -91,7 +91,7 @@
// for making ergonomic decisions.
double _latest_major_mutator_interval_seconds;
- const size_t _intra_generation_alignment; // alignment for eden, survivors
+ const size_t _space_alignment; // alignment for eden, survivors
const double _gc_minor_pause_goal_sec; // goal for maximum minor gc pause
@@ -229,7 +229,7 @@
PSAdaptiveSizePolicy(size_t init_eden_size,
size_t init_promo_size,
size_t init_survivor_size,
- size_t intra_generation_alignment,
+ size_t space_alignment,
double gc_pause_goal_sec,
double gc_minor_pause_goal_sec,
uint gc_time_ratio);
@@ -378,7 +378,7 @@
// remain almost full anyway (top() will be near end(), but there will be a
// large filler object at the bottom).
const size_t sz = gen_size / MinSurvivorRatio;
- const size_t alignment = _intra_generation_alignment;
+ const size_t alignment = _space_alignment;
return sz > alignment ? align_size_down(sz, alignment) : alignment;
}
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -103,7 +103,7 @@
// Compute maximum space sizes for performance counters
ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
- size_t alignment = heap->intra_heap_alignment();
+ size_t alignment = heap->space_alignment();
size_t size = virtual_space()->reserved_size();
size_t max_survivor_size;
@@ -156,8 +156,9 @@
assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
// Compute sizes
- size_t alignment = heap->intra_heap_alignment();
+ size_t alignment = heap->space_alignment();
size_t size = virtual_space()->committed_size();
+ assert(size >= 3 * alignment, "Young space is not large enough for eden + 2 survivors");
size_t survivor_size = size / InitialSurvivorRatio;
survivor_size = align_size_down(survivor_size, alignment);
@@ -207,7 +208,7 @@
#ifndef PRODUCT
void PSYoungGen::space_invariants() {
ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
- const size_t alignment = heap->intra_heap_alignment();
+ const size_t alignment = heap->space_alignment();
// Currently, our eden size cannot shrink to zero
guarantee(eden_space()->capacity_in_bytes() >= alignment, "eden too small");
@@ -491,7 +492,7 @@
char* to_end = (char*)to_space()->end();
ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
- const size_t alignment = heap->intra_heap_alignment();
+ const size_t alignment = heap->space_alignment();
const bool maintain_minimum =
(requested_eden_size + 2 * requested_survivor_size) <= min_gen_size();
@@ -840,8 +841,8 @@
size_t PSYoungGen::available_to_live() {
size_t delta_in_survivor = 0;
ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
- const size_t space_alignment = heap->intra_heap_alignment();
- const size_t gen_alignment = heap->young_gen_alignment();
+ const size_t space_alignment = heap->space_alignment();
+ const size_t gen_alignment = heap->generation_alignment();
MutableSpace* space_shrinking = NULL;
if (from_space()->end() > to_space()->end()) {
--- a/hotspot/src/share/vm/gc_interface/collectedHeap.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -469,6 +469,10 @@
fill_with_object_impl(start, words, zap);
}
+void CollectedHeap::post_initialize() {
+ collector_policy()->post_heap_initialize();
+}
+
HeapWord* CollectedHeap::allocate_new_tlab(size_t size) {
guarantee(false, "thread-local allocation buffers not supported");
return NULL;
--- a/hotspot/src/share/vm/interpreter/linkResolver.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -152,11 +152,13 @@
// Could be an Object method inherited into an interface, but still a vtable call.
kind = CallInfo::vtable_call;
} else if (!resolved_klass->is_interface()) {
- // A miranda method. Compute the vtable index.
+ // A default or miranda method. Compute the vtable index.
ResourceMark rm;
klassVtable* vt = InstanceKlass::cast(resolved_klass)->vtable();
- index = vt->index_of_miranda(resolved_method->name(),
- resolved_method->signature());
+ index = LinkResolver::vtable_index_of_interface_method(resolved_klass,
+ resolved_method);
+ assert(index >= 0 , "we should have valid vtable index at this point");
+
kind = CallInfo::vtable_call;
} else if (resolved_method->has_vtable_index()) {
// Can occur if an interface redeclares a method of Object.
@@ -279,7 +281,7 @@
}
int LinkResolver::vtable_index_of_interface_method(KlassHandle klass,
- methodHandle resolved_method, TRAPS) {
+ methodHandle resolved_method) {
int vtable_index = Method::invalid_vtable_index;
Symbol* name = resolved_method->name();
@@ -295,7 +297,7 @@
}
if (vtable_index == Method::invalid_vtable_index) {
// get vtable_index for miranda methods
- ResourceMark rm(THREAD);
+ ResourceMark rm;
klassVtable *vt = InstanceKlass::cast(klass())->vtable();
vtable_index = vt->index_of_miranda(name, signature);
}
@@ -691,7 +693,7 @@
);
resolved_method->access_flags().print_on(tty);
if (resolved_method->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
if (resolved_method->is_overpass()) {
tty->print("overpass");
@@ -937,7 +939,7 @@
);
resolved_method->access_flags().print_on(tty);
if (resolved_method->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
if (resolved_method->is_overpass()) {
tty->print("overpass");
@@ -1017,7 +1019,7 @@
);
sel_method->access_flags().print_on(tty);
if (sel_method->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
if (sel_method->is_overpass()) {
tty->print("overpass");
@@ -1081,7 +1083,7 @@
);
resolved_method->access_flags().print_on(tty);
if (resolved_method->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
if (resolved_method->is_overpass()) {
tty->print("overpass");
@@ -1118,7 +1120,7 @@
// do lookup based on receiver klass using the vtable index
if (resolved_method->method_holder()->is_interface()) { // miranda method
vtable_index = vtable_index_of_interface_method(resolved_klass,
- resolved_method, CHECK);
+ resolved_method);
assert(vtable_index >= 0 , "we should have valid vtable index at this point");
InstanceKlass* inst = InstanceKlass::cast(recv_klass());
@@ -1175,7 +1177,7 @@
);
selected_method->access_flags().print_on(tty);
if (selected_method->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
if (selected_method->is_overpass()) {
tty->print("overpass");
@@ -1268,14 +1270,6 @@
sel_method->name(),
sel_method->signature()));
}
- // setup result
- if (!resolved_method->has_itable_index()) {
- int vtable_index = resolved_method->vtable_index();
- assert(vtable_index == sel_method->vtable_index(), "sanity check");
- result.set_virtual(resolved_klass, recv_klass, resolved_method, sel_method, vtable_index, CHECK);
- return;
- }
- int itable_index = resolved_method()->itable_index();
if (TraceItables && Verbose) {
ResourceMark rm(THREAD);
@@ -1289,14 +1283,22 @@
);
sel_method->access_flags().print_on(tty);
if (sel_method->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
if (sel_method->is_overpass()) {
tty->print("overpass");
}
tty->cr();
}
- result.set_interface(resolved_klass, recv_klass, resolved_method, sel_method, itable_index, CHECK);
+ // setup result
+ if (!resolved_method->has_itable_index()) {
+ int vtable_index = resolved_method->vtable_index();
+ assert(vtable_index == sel_method->vtable_index(), "sanity check");
+ result.set_virtual(resolved_klass, recv_klass, resolved_method, sel_method, vtable_index, CHECK);
+ } else {
+ int itable_index = resolved_method()->itable_index();
+ result.set_interface(resolved_klass, recv_klass, resolved_method, sel_method, itable_index, CHECK);
+ }
}
--- a/hotspot/src/share/vm/interpreter/linkResolver.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/interpreter/linkResolver.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -130,7 +130,6 @@
static void lookup_polymorphic_method (methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature,
KlassHandle current_klass, Handle *appendix_result_or_null, Handle *method_type_result, TRAPS);
- static int vtable_index_of_interface_method(KlassHandle klass, methodHandle resolved_method, TRAPS);
static void resolve_klass (KlassHandle& result, constantPoolHandle pool, int index, TRAPS);
static void resolve_pool (KlassHandle& resolved_klass, Symbol*& method_name, Symbol*& method_signature, KlassHandle& current_klass, constantPoolHandle pool, int index, TRAPS);
@@ -186,6 +185,7 @@
static methodHandle resolve_interface_call_or_null(KlassHandle receiver_klass, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass);
static methodHandle resolve_static_call_or_null (KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass);
static methodHandle resolve_special_call_or_null (KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass);
+ static int vtable_index_of_interface_method(KlassHandle klass, methodHandle resolved_method);
// same as above for compile-time resolution; returns vtable_index if current_klass if linked
static int resolve_virtual_vtable_index (KlassHandle receiver_klass, KlassHandle resolved_klass, Symbol* method_name, Symbol* method_signature, KlassHandle current_klass);
--- a/hotspot/src/share/vm/interpreter/rewriter.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/interpreter/rewriter.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -70,21 +70,21 @@
}
// Unrewrite the bytecodes if an error occurs.
-void Rewriter::restore_bytecodes() {
+void Rewriter::restore_bytecodes(TRAPS) {
int len = _methods->length();
for (int i = len-1; i >= 0; i--) {
Method* method = _methods->at(i);
- scan_method(method, true);
+ scan_method(method, true, CHECK);
}
}
// Creates a constant pool cache given a CPC map
void Rewriter::make_constant_pool_cache(TRAPS) {
- const int length = _cp_cache_map.length();
ClassLoaderData* loader_data = _pool->pool_holder()->class_loader_data();
ConstantPoolCache* cache =
- ConstantPoolCache::allocate(loader_data, length, _cp_cache_map,
+ ConstantPoolCache::allocate(loader_data, _cp_cache_map,
+ _invokedynamic_cp_cache_map,
_invokedynamic_references_map, CHECK);
// initialize object cache in constant pool
@@ -154,6 +154,31 @@
}
}
+// If the constant pool entry for invokespecial is InterfaceMethodref,
+// we need to add a separate cpCache entry for its resolution, because it is
+// different than the resolution for invokeinterface with InterfaceMethodref.
+// These cannot share cpCache entries. It's unclear if all invokespecial to
+// InterfaceMethodrefs would resolve to the same thing so a new cpCache entry
+// is created for each one. This was added with lambda.
+void Rewriter::rewrite_invokespecial(address bcp, int offset, bool reverse, TRAPS) {
+ static int count = 0;
+ address p = bcp + offset;
+ if (!reverse) {
+ int cp_index = Bytes::get_Java_u2(p);
+ int cache_index = add_invokespecial_cp_cache_entry(cp_index);
+ if (cache_index != (int)(jushort) cache_index) {
+ THROW_MSG(vmSymbols::java_lang_InternalError(),
+ "This classfile overflows invokespecial for interfaces "
+ "and cannot be loaded");
+ }
+ Bytes::put_native_u2(p, cache_index);
+ } else {
+ int cache_index = Bytes::get_native_u2(p);
+ int cp_index = cp_cache_entry_pool_index(cache_index);
+ Bytes::put_Java_u2(p, cp_index);
+ }
+}
+
// Adjust the invocation bytecode for a signature-polymorphic method (MethodHandle.invoke, etc.)
void Rewriter::maybe_rewrite_invokehandle(address opc, int cp_index, int cache_index, bool reverse) {
@@ -203,7 +228,7 @@
if (!reverse) {
int cp_index = Bytes::get_Java_u2(p);
int cache_index = add_invokedynamic_cp_cache_entry(cp_index);
- add_invokedynamic_resolved_references_entries(cp_index, cache_index);
+ int resolved_index = add_invokedynamic_resolved_references_entries(cp_index, cache_index);
// Replace the trailing four bytes with a CPC index for the dynamic
// call site. Unlike other CPC entries, there is one per bytecode,
// not just one per distinct CP entry. In other words, the
@@ -212,13 +237,20 @@
// all these entries. That is the main reason invokedynamic
// must have a five-byte instruction format. (Of course, other JVM
// implementations can use the bytes for other purposes.)
+ // Note: We use native_u4 format exclusively for 4-byte indexes.
Bytes::put_native_u4(p, ConstantPool::encode_invokedynamic_index(cache_index));
- // Note: We use native_u4 format exclusively for 4-byte indexes.
+ // add the bcp in case we need to patch this bytecode if we also find a
+ // invokespecial/InterfaceMethodref in the bytecode stream
+ _patch_invokedynamic_bcps->push(p);
+ _patch_invokedynamic_refs->push(resolved_index);
} else {
- // callsite index
int cache_index = ConstantPool::decode_invokedynamic_index(
Bytes::get_native_u4(p));
- int cp_index = cp_cache_entry_pool_index(cache_index);
+ // We will reverse the bytecode rewriting _after_ adjusting them.
+ // Adjust the cache index by offset to the invokedynamic entries in the
+ // cpCache plus the delta if the invokedynamic bytecodes were adjusted.
+ cache_index = cp_cache_delta() + _first_iteration_cp_cache_limit;
+ int cp_index = invokedynamic_cp_cache_entry_pool_index(cache_index);
assert(_pool->tag_at(cp_index).is_invoke_dynamic(), "wrong index");
// zero out 4 bytes
Bytes::put_Java_u4(p, 0);
@@ -226,6 +258,34 @@
}
}
+void Rewriter::patch_invokedynamic_bytecodes() {
+ // If the end of the cp_cache is the same as after initializing with the
+ // cpool, nothing needs to be done. Invokedynamic bytecodes are at the
+ // correct offsets. ie. no invokespecials added
+ int delta = cp_cache_delta();
+ if (delta > 0) {
+ int length = _patch_invokedynamic_bcps->length();
+ assert(length == _patch_invokedynamic_refs->length(),
+ "lengths should match");
+ for (int i = 0; i < length; i++) {
+ address p = _patch_invokedynamic_bcps->at(i);
+ int cache_index = ConstantPool::decode_invokedynamic_index(
+ Bytes::get_native_u4(p));
+ Bytes::put_native_u4(p, ConstantPool::encode_invokedynamic_index(cache_index + delta));
+
+ // invokedynamic resolved references map also points to cp cache and must
+ // add delta to each.
+ int resolved_index = _patch_invokedynamic_refs->at(i);
+ for (int entry = 0; entry < ConstantPoolCacheEntry::_indy_resolved_references_entries; entry++) {
+ assert(_invokedynamic_references_map[resolved_index+entry] == cache_index,
+ "should be the same index");
+ _invokedynamic_references_map.at_put(resolved_index+entry,
+ cache_index + delta);
+ }
+ }
+ }
+}
+
// Rewrite some ldc bytecodes to _fast_aldc
void Rewriter::maybe_rewrite_ldc(address bcp, int offset, bool is_wide,
@@ -269,7 +329,7 @@
// Rewrites a method given the index_map information
-void Rewriter::scan_method(Method* method, bool reverse) {
+void Rewriter::scan_method(Method* method, bool reverse, TRAPS) {
int nof_jsrs = 0;
bool has_monitor_bytecodes = false;
@@ -329,12 +389,25 @@
#endif
break;
}
+
+ case Bytecodes::_invokespecial : {
+ int offset = prefix_length + 1;
+ address p = bcp + offset;
+ int cp_index = Bytes::get_Java_u2(p);
+ // InterfaceMethodref
+ if (_pool->tag_at(cp_index).is_interface_method()) {
+ rewrite_invokespecial(bcp, offset, reverse, CHECK);
+ } else {
+ rewrite_member_reference(bcp, offset, reverse);
+ }
+ break;
+ }
+
case Bytecodes::_getstatic : // fall through
case Bytecodes::_putstatic : // fall through
case Bytecodes::_getfield : // fall through
case Bytecodes::_putfield : // fall through
case Bytecodes::_invokevirtual : // fall through
- case Bytecodes::_invokespecial : // fall through
case Bytecodes::_invokestatic :
case Bytecodes::_invokeinterface:
case Bytecodes::_invokehandle : // if reverse=true
@@ -426,16 +499,21 @@
for (int i = len-1; i >= 0; i--) {
Method* method = _methods->at(i);
- scan_method(method);
+ scan_method(method, false, CHECK); // If you get an error here,
+ // there is no reversing bytecodes
}
+ // May have to fix invokedynamic bytecodes if invokestatic/InterfaceMethodref
+ // entries had to be added.
+ patch_invokedynamic_bytecodes();
+
// allocate constant pool cache, now that we've seen all the bytecodes
make_constant_pool_cache(THREAD);
// Restore bytecodes to their unrewritten state if there are exceptions
// rewriting bytecodes or allocating the cpCache
if (HAS_PENDING_EXCEPTION) {
- restore_bytecodes();
+ restore_bytecodes(CATCH);
return;
}
@@ -452,7 +530,7 @@
// relocating bytecodes. If some are relocated, that is ok because that
// doesn't affect constant pool to cpCache rewriting.
if (HAS_PENDING_EXCEPTION) {
- restore_bytecodes();
+ restore_bytecodes(CATCH);
return;
}
// Method might have gotten rewritten.
--- a/hotspot/src/share/vm/interpreter/rewriter.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/interpreter/rewriter.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -46,55 +46,102 @@
intArray _method_handle_invokers;
int _resolved_reference_limit;
+ // For mapping invokedynamic bytecodes, which are discovered during method
+ // scanning. The invokedynamic entries are added at the end of the cpCache.
+ // If there are any invokespecial/InterfaceMethodref special case bytecodes,
+ // these entries are added before invokedynamic entries so that the
+ // invokespecial bytecode 16 bit index doesn't overflow.
+ intStack _invokedynamic_cp_cache_map;
+
+ // For patching.
+ GrowableArray<address>* _patch_invokedynamic_bcps;
+ GrowableArray<int>* _patch_invokedynamic_refs;
+
void init_maps(int length) {
_cp_map.initialize(length, -1);
// Choose an initial value large enough that we don't get frequent
// calls to grow().
- _cp_cache_map.initialize(length / 2);
+ _cp_cache_map.initialize(length/2);
// Also cache resolved objects, in another different cache.
_reference_map.initialize(length, -1);
- _resolved_references_map.initialize(length / 2);
- _invokedynamic_references_map.initialize(length / 2);
+ _resolved_references_map.initialize(length/2);
+ _invokedynamic_references_map.initialize(length/2);
_resolved_reference_limit = -1;
- DEBUG_ONLY(_cp_cache_index_limit = -1);
+ _first_iteration_cp_cache_limit = -1;
+
+ // invokedynamic specific fields
+ _invokedynamic_cp_cache_map.initialize(length/4);
+ _patch_invokedynamic_bcps = new GrowableArray<address>(length/4);
+ _patch_invokedynamic_refs = new GrowableArray<int>(length/4);
}
- int _cp_cache_index_limit;
+ int _first_iteration_cp_cache_limit;
void record_map_limits() {
-#ifdef ASSERT
- // Record initial size of the two arrays generated for the CP cache:
- _cp_cache_index_limit = _cp_cache_map.length();
-#endif //ASSERT
+ // Record initial size of the two arrays generated for the CP cache
+ // relative to walking the constant pool.
+ _first_iteration_cp_cache_limit = _cp_cache_map.length();
_resolved_reference_limit = _resolved_references_map.length();
}
+ int cp_cache_delta() {
+ // How many cp cache entries were added since recording map limits after
+ // cp cache initialization?
+ assert(_first_iteration_cp_cache_limit != -1, "only valid after first iteration");
+ return _cp_cache_map.length() - _first_iteration_cp_cache_limit;
+ }
+
int cp_entry_to_cp_cache(int i) { assert(has_cp_cache(i), "oob"); return _cp_map[i]; }
bool has_cp_cache(int i) { return (uint)i < (uint)_cp_map.length() && _cp_map[i] >= 0; }
+ int add_map_entry(int cp_index, intArray* cp_map, intStack* cp_cache_map) {
+ assert(cp_map->at(cp_index) == -1, "not twice on same cp_index");
+ int cache_index = cp_cache_map->append(cp_index);
+ cp_map->at_put(cp_index, cache_index);
+ return cache_index;
+ }
+
int add_cp_cache_entry(int cp_index) {
assert(_pool->tag_at(cp_index).value() != JVM_CONSTANT_InvokeDynamic, "use indy version");
- assert(_cp_map[cp_index] == -1, "not twice on same cp_index");
- assert(_cp_cache_index_limit == -1, "do not add cache entries after first iteration");
- int cache_index = _cp_cache_map.append(cp_index);
- _cp_map.at_put(cp_index, cache_index);
+ assert(_first_iteration_cp_cache_limit == -1, "do not add cache entries after first iteration");
+ int cache_index = add_map_entry(cp_index, &_cp_map, &_cp_cache_map);
assert(cp_entry_to_cp_cache(cp_index) == cache_index, "");
assert(cp_cache_entry_pool_index(cache_index) == cp_index, "");
return cache_index;
}
- // add a new CP cache entry beyond the normal cache (for invokedynamic only)
int add_invokedynamic_cp_cache_entry(int cp_index) {
assert(_pool->tag_at(cp_index).value() == JVM_CONSTANT_InvokeDynamic, "use non-indy version");
- assert(_cp_map[cp_index] == -1, "do not map from cp_index");
- assert(_cp_cache_index_limit >= 0, "add indy cache entries after first iteration");
+ assert(_first_iteration_cp_cache_limit >= 0, "add indy cache entries after first iteration");
+ // add to the invokedynamic index map.
+ int cache_index = _invokedynamic_cp_cache_map.append(cp_index);
+ // do not update _cp_map, since the mapping is one-to-many
+ assert(invokedynamic_cp_cache_entry_pool_index(cache_index) == cp_index, "");
+ // this index starts at one but in the bytecode it's appended to the end.
+ return cache_index + _first_iteration_cp_cache_limit;
+ }
+
+ int invokedynamic_cp_cache_entry_pool_index(int cache_index) {
+ int cp_index = _invokedynamic_cp_cache_map[cache_index];
+ return cp_index;
+ }
+
+ // add a new CP cache entry beyond the normal cache for the special case of
+ // invokespecial with InterfaceMethodref as cpool operand.
+ int add_invokespecial_cp_cache_entry(int cp_index) {
+ assert(_first_iteration_cp_cache_limit >= 0, "add these special cache entries after first iteration");
+ // Don't add InterfaceMethodref if it already exists at the end.
+ for (int i = _first_iteration_cp_cache_limit; i < _cp_cache_map.length(); i++) {
+ if (cp_cache_entry_pool_index(i) == cp_index) {
+ return i;
+ }
+ }
int cache_index = _cp_cache_map.append(cp_index);
- assert(cache_index >= _cp_cache_index_limit, "");
+ assert(cache_index >= _first_iteration_cp_cache_limit, "");
// do not update _cp_map, since the mapping is one-to-many
assert(cp_cache_entry_pool_index(cache_index) == cp_index, "");
return cache_index;
}
- // fix duplicated code later
int cp_entry_to_resolved_references(int cp_index) const {
assert(has_entry_in_resolved_references(cp_index), "oob");
return _reference_map[cp_index];
@@ -105,10 +152,7 @@
// add a new entry to the resolved_references map
int add_resolved_references_entry(int cp_index) {
- assert(_reference_map[cp_index] == -1, "not twice on same cp_index");
- assert(_resolved_reference_limit == -1, "do not add CP refs after first iteration");
- int ref_index = _resolved_references_map.append(cp_index);
- _reference_map.at_put(cp_index, ref_index);
+ int ref_index = add_map_entry(cp_index, &_reference_map, &_resolved_references_map);
assert(cp_entry_to_resolved_references(cp_index) == ref_index, "");
return ref_index;
}
@@ -137,7 +181,7 @@
// Access the contents of _cp_cache_map to determine CP cache layout.
int cp_cache_entry_pool_index(int cache_index) {
int cp_index = _cp_cache_map[cache_index];
- return cp_index;
+ return cp_index;
}
// All the work goes in here:
@@ -145,14 +189,18 @@
void compute_index_maps();
void make_constant_pool_cache(TRAPS);
- void scan_method(Method* m, bool reverse = false);
+ void scan_method(Method* m, bool reverse, TRAPS);
void rewrite_Object_init(methodHandle m, TRAPS);
- void rewrite_member_reference(address bcp, int offset, bool reverse = false);
- void maybe_rewrite_invokehandle(address opc, int cp_index, int cache_index, bool reverse = false);
- void rewrite_invokedynamic(address bcp, int offset, bool reverse = false);
- void maybe_rewrite_ldc(address bcp, int offset, bool is_wide, bool reverse = false);
+ void rewrite_member_reference(address bcp, int offset, bool reverse);
+ void maybe_rewrite_invokehandle(address opc, int cp_index, int cache_index, bool reverse);
+ void rewrite_invokedynamic(address bcp, int offset, bool reverse);
+ void maybe_rewrite_ldc(address bcp, int offset, bool is_wide, bool reverse);
+ void rewrite_invokespecial(address bcp, int offset, bool reverse, TRAPS);
+
+ void patch_invokedynamic_bytecodes();
+
// Revert bytecodes in case of an exception.
- void restore_bytecodes();
+ void restore_bytecodes(TRAPS);
static methodHandle rewrite_jsrs(methodHandle m, TRAPS);
public:
--- a/hotspot/src/share/vm/memory/collectorPolicy.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/memory/collectorPolicy.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -47,54 +47,107 @@
// CollectorPolicy methods.
+CollectorPolicy::CollectorPolicy() :
+ _space_alignment(0),
+ _heap_alignment(0),
+ _initial_heap_byte_size(InitialHeapSize),
+ _max_heap_byte_size(MaxHeapSize),
+ _min_heap_byte_size(Arguments::min_heap_size()),
+ _max_heap_size_cmdline(false),
+ _size_policy(NULL),
+ _should_clear_all_soft_refs(false),
+ _all_soft_refs_clear(false)
+{}
+
+#ifdef ASSERT
+void CollectorPolicy::assert_flags() {
+ assert(InitialHeapSize <= MaxHeapSize, "Ergonomics decided on incompatible initial and maximum heap sizes");
+ assert(InitialHeapSize % _heap_alignment == 0, "InitialHeapSize alignment");
+ assert(MaxHeapSize % _heap_alignment == 0, "MaxHeapSize alignment");
+}
+
+void CollectorPolicy::assert_size_info() {
+ assert(InitialHeapSize == _initial_heap_byte_size, "Discrepancy between InitialHeapSize flag and local storage");
+ assert(MaxHeapSize == _max_heap_byte_size, "Discrepancy between MaxHeapSize flag and local storage");
+ assert(_max_heap_byte_size >= _min_heap_byte_size, "Ergonomics decided on incompatible minimum and maximum heap sizes");
+ assert(_initial_heap_byte_size >= _min_heap_byte_size, "Ergonomics decided on incompatible initial and minimum heap sizes");
+ assert(_max_heap_byte_size >= _initial_heap_byte_size, "Ergonomics decided on incompatible initial and maximum heap sizes");
+ assert(_min_heap_byte_size % _heap_alignment == 0, "min_heap_byte_size alignment");
+ assert(_initial_heap_byte_size % _heap_alignment == 0, "initial_heap_byte_size alignment");
+ assert(_max_heap_byte_size % _heap_alignment == 0, "max_heap_byte_size alignment");
+}
+#endif // ASSERT
+
void CollectorPolicy::initialize_flags() {
- assert(_max_alignment >= _min_alignment,
- err_msg("max_alignment: " SIZE_FORMAT " less than min_alignment: " SIZE_FORMAT,
- _max_alignment, _min_alignment));
- assert(_max_alignment % _min_alignment == 0,
- err_msg("max_alignment: " SIZE_FORMAT " not aligned by min_alignment: " SIZE_FORMAT,
- _max_alignment, _min_alignment));
+ assert(_space_alignment != 0, "Space alignment not set up properly");
+ assert(_heap_alignment != 0, "Heap alignment not set up properly");
+ assert(_heap_alignment >= _space_alignment,
+ err_msg("heap_alignment: " SIZE_FORMAT " less than space_alignment: " SIZE_FORMAT,
+ _heap_alignment, _space_alignment));
+ assert(_heap_alignment % _space_alignment == 0,
+ err_msg("heap_alignment: " SIZE_FORMAT " not aligned by space_alignment: " SIZE_FORMAT,
+ _heap_alignment, _space_alignment));
- if (MaxHeapSize < InitialHeapSize) {
- vm_exit_during_initialization("Incompatible initial and maximum heap sizes specified");
+ if (FLAG_IS_CMDLINE(MaxHeapSize)) {
+ if (FLAG_IS_CMDLINE(InitialHeapSize) && InitialHeapSize > MaxHeapSize) {
+ vm_exit_during_initialization("Initial heap size set to a larger value than the maximum heap size");
+ }
+ if (_min_heap_byte_size != 0 && MaxHeapSize < _min_heap_byte_size) {
+ vm_exit_during_initialization("Incompatible minimum and maximum heap sizes specified");
+ }
+ _max_heap_size_cmdline = true;
}
- MinHeapDeltaBytes = align_size_up(MinHeapDeltaBytes, _min_alignment);
+ // Check heap parameter properties
+ if (InitialHeapSize < M) {
+ vm_exit_during_initialization("Too small initial heap");
+ }
+ if (_min_heap_byte_size < M) {
+ vm_exit_during_initialization("Too small minimum heap");
+ }
+
+ // User inputs from -Xmx and -Xms must be aligned
+ _min_heap_byte_size = align_size_up(_min_heap_byte_size, _heap_alignment);
+ uintx aligned_initial_heap_size = align_size_up(InitialHeapSize, _heap_alignment);
+ uintx aligned_max_heap_size = align_size_up(MaxHeapSize, _heap_alignment);
+
+ // Write back to flags if the values changed
+ if (aligned_initial_heap_size != InitialHeapSize) {
+ FLAG_SET_ERGO(uintx, InitialHeapSize, aligned_initial_heap_size);
+ }
+ if (aligned_max_heap_size != MaxHeapSize) {
+ FLAG_SET_ERGO(uintx, MaxHeapSize, aligned_max_heap_size);
+ }
+
+ if (FLAG_IS_CMDLINE(InitialHeapSize) && _min_heap_byte_size != 0 &&
+ InitialHeapSize < _min_heap_byte_size) {
+ vm_exit_during_initialization("Incompatible minimum and initial heap sizes specified");
+ }
+ if (!FLAG_IS_DEFAULT(InitialHeapSize) && InitialHeapSize > MaxHeapSize) {
+ FLAG_SET_ERGO(uintx, MaxHeapSize, InitialHeapSize);
+ } else if (!FLAG_IS_DEFAULT(MaxHeapSize) && InitialHeapSize > MaxHeapSize) {
+ FLAG_SET_ERGO(uintx, InitialHeapSize, MaxHeapSize);
+ if (InitialHeapSize < _min_heap_byte_size) {
+ _min_heap_byte_size = InitialHeapSize;
+ }
+ }
+
+ _initial_heap_byte_size = InitialHeapSize;
+ _max_heap_byte_size = MaxHeapSize;
+
+ FLAG_SET_ERGO(uintx, MinHeapDeltaBytes, align_size_up(MinHeapDeltaBytes, _space_alignment));
+
+ DEBUG_ONLY(CollectorPolicy::assert_flags();)
}
void CollectorPolicy::initialize_size_info() {
- // User inputs from -mx and ms must be aligned
- _min_heap_byte_size = align_size_up(Arguments::min_heap_size(), _min_alignment);
- _initial_heap_byte_size = align_size_up(InitialHeapSize, _min_alignment);
- _max_heap_byte_size = align_size_up(MaxHeapSize, _max_alignment);
-
- // Check heap parameter properties
- if (_initial_heap_byte_size < M) {
- vm_exit_during_initialization("Too small initial heap");
- }
- // Check heap parameter properties
- if (_min_heap_byte_size < M) {
- vm_exit_during_initialization("Too small minimum heap");
- }
- if (_initial_heap_byte_size <= NewSize) {
- // make sure there is at least some room in old space
- vm_exit_during_initialization("Too small initial heap for new size specified");
- }
- if (_max_heap_byte_size < _min_heap_byte_size) {
- vm_exit_during_initialization("Incompatible minimum and maximum heap sizes specified");
- }
- if (_initial_heap_byte_size < _min_heap_byte_size) {
- vm_exit_during_initialization("Incompatible minimum and initial heap sizes specified");
- }
- if (_max_heap_byte_size < _initial_heap_byte_size) {
- vm_exit_during_initialization("Incompatible initial and maximum heap sizes specified");
- }
-
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr("Minimum heap " SIZE_FORMAT " Initial heap "
SIZE_FORMAT " Maximum heap " SIZE_FORMAT,
_min_heap_byte_size, _initial_heap_byte_size, _max_heap_byte_size);
}
+
+ DEBUG_ONLY(CollectorPolicy::assert_size_info();)
}
bool CollectorPolicy::use_should_clear_all_soft_refs(bool v) {
@@ -105,7 +158,6 @@
GenRemSet* CollectorPolicy::create_rem_set(MemRegion whole_heap,
int max_covered_regions) {
- assert(rem_set_name() == GenRemSet::CardTable, "unrecognized GenRemSet::Name");
return new CardTableRS(whole_heap, max_covered_regions);
}
@@ -119,7 +171,7 @@
_all_soft_refs_clear = true;
}
-size_t CollectorPolicy::compute_max_alignment() {
+size_t CollectorPolicy::compute_heap_alignment() {
// The card marking array and the offset arrays for old generations are
// committed in os pages as well. Make sure they are entirely full (to
// avoid partial page problems), e.g. if 512 bytes heap corresponds to 1
@@ -146,18 +198,21 @@
// GenCollectorPolicy methods.
+GenCollectorPolicy::GenCollectorPolicy() :
+ _min_gen0_size(0),
+ _initial_gen0_size(0),
+ _max_gen0_size(0),
+ _gen_alignment(0),
+ _generations(NULL)
+{}
+
size_t GenCollectorPolicy::scale_by_NewRatio_aligned(size_t base_size) {
- size_t x = base_size / (NewRatio+1);
- size_t new_gen_size = x > _min_alignment ?
- align_size_down(x, _min_alignment) :
- _min_alignment;
- return new_gen_size;
+ return align_size_down_bounded(base_size / (NewRatio + 1), _gen_alignment);
}
size_t GenCollectorPolicy::bound_minus_alignment(size_t desired_size,
size_t maximum_size) {
- size_t alignment = _min_alignment;
- size_t max_minus = maximum_size - alignment;
+ size_t max_minus = maximum_size - _gen_alignment;
return desired_size < max_minus ? desired_size : max_minus;
}
@@ -165,7 +220,7 @@
void GenCollectorPolicy::initialize_size_policy(size_t init_eden_size,
size_t init_promo_size,
size_t init_survivor_size) {
- const double max_gc_pause_sec = ((double) MaxGCPauseMillis)/1000.0;
+ const double max_gc_pause_sec = ((double) MaxGCPauseMillis) / 1000.0;
_size_policy = new AdaptiveSizePolicy(init_eden_size,
init_promo_size,
init_survivor_size,
@@ -173,100 +228,181 @@
GCTimeRatio);
}
+size_t GenCollectorPolicy::young_gen_size_lower_bound() {
+ // The young generation must be aligned and have room for eden + two survivors
+ return align_size_up(3 * _space_alignment, _gen_alignment);
+}
+
+#ifdef ASSERT
+void GenCollectorPolicy::assert_flags() {
+ CollectorPolicy::assert_flags();
+ assert(NewSize >= _min_gen0_size, "Ergonomics decided on a too small young gen size");
+ assert(NewSize <= MaxNewSize, "Ergonomics decided on incompatible initial and maximum young gen sizes");
+ assert(FLAG_IS_DEFAULT(MaxNewSize) || MaxNewSize < MaxHeapSize, "Ergonomics decided on incompatible maximum young gen and heap sizes");
+ assert(NewSize % _gen_alignment == 0, "NewSize alignment");
+ assert(FLAG_IS_DEFAULT(MaxNewSize) || MaxNewSize % _gen_alignment == 0, "MaxNewSize alignment");
+}
+
+void TwoGenerationCollectorPolicy::assert_flags() {
+ GenCollectorPolicy::assert_flags();
+ assert(OldSize + NewSize <= MaxHeapSize, "Ergonomics decided on incompatible generation and heap sizes");
+ assert(OldSize % _gen_alignment == 0, "OldSize alignment");
+}
+
+void GenCollectorPolicy::assert_size_info() {
+ CollectorPolicy::assert_size_info();
+ // GenCollectorPolicy::initialize_size_info may update the MaxNewSize
+ assert(MaxNewSize < MaxHeapSize, "Ergonomics decided on incompatible maximum young and heap sizes");
+ assert(NewSize == _initial_gen0_size, "Discrepancy between NewSize flag and local storage");
+ assert(MaxNewSize == _max_gen0_size, "Discrepancy between MaxNewSize flag and local storage");
+ assert(_min_gen0_size <= _initial_gen0_size, "Ergonomics decided on incompatible minimum and initial young gen sizes");
+ assert(_initial_gen0_size <= _max_gen0_size, "Ergonomics decided on incompatible initial and maximum young gen sizes");
+ assert(_min_gen0_size % _gen_alignment == 0, "_min_gen0_size alignment");
+ assert(_initial_gen0_size % _gen_alignment == 0, "_initial_gen0_size alignment");
+ assert(_max_gen0_size % _gen_alignment == 0, "_max_gen0_size alignment");
+}
+
+void TwoGenerationCollectorPolicy::assert_size_info() {
+ GenCollectorPolicy::assert_size_info();
+ assert(OldSize == _initial_gen1_size, "Discrepancy between OldSize flag and local storage");
+ assert(_min_gen1_size <= _initial_gen1_size, "Ergonomics decided on incompatible minimum and initial old gen sizes");
+ assert(_initial_gen1_size <= _max_gen1_size, "Ergonomics decided on incompatible initial and maximum old gen sizes");
+ assert(_max_gen1_size % _gen_alignment == 0, "_max_gen1_size alignment");
+ assert(_initial_gen1_size % _gen_alignment == 0, "_initial_gen1_size alignment");
+ assert(_max_heap_byte_size <= (_max_gen0_size + _max_gen1_size), "Total maximum heap sizes must be sum of generation maximum sizes");
+}
+#endif // ASSERT
+
void GenCollectorPolicy::initialize_flags() {
- // All sizes must be multiples of the generation granularity.
- _min_alignment = (uintx) Generation::GenGrain;
- _max_alignment = compute_max_alignment();
-
CollectorPolicy::initialize_flags();
- // All generational heaps have a youngest gen; handle those flags here.
+ assert(_gen_alignment != 0, "Generation alignment not set up properly");
+ assert(_heap_alignment >= _gen_alignment,
+ err_msg("heap_alignment: " SIZE_FORMAT " less than gen_alignment: " SIZE_FORMAT,
+ _heap_alignment, _gen_alignment));
+ assert(_gen_alignment % _space_alignment == 0,
+ err_msg("gen_alignment: " SIZE_FORMAT " not aligned by space_alignment: " SIZE_FORMAT,
+ _gen_alignment, _space_alignment));
+ assert(_heap_alignment % _gen_alignment == 0,
+ err_msg("heap_alignment: " SIZE_FORMAT " not aligned by gen_alignment: " SIZE_FORMAT,
+ _heap_alignment, _gen_alignment));
+
+ // All generational heaps have a youngest gen; handle those flags here
- // Adjust max size parameters
- if (NewSize > MaxNewSize) {
- MaxNewSize = NewSize;
+ // Make sure the heap is large enough for two generations
+ uintx smallest_new_size = young_gen_size_lower_bound();
+ uintx smallest_heap_size = align_size_up(smallest_new_size + align_size_up(_space_alignment, _gen_alignment),
+ _heap_alignment);
+ if (MaxHeapSize < smallest_heap_size) {
+ FLAG_SET_ERGO(uintx, MaxHeapSize, smallest_heap_size);
+ _max_heap_byte_size = MaxHeapSize;
}
- NewSize = align_size_down(NewSize, _min_alignment);
- MaxNewSize = align_size_down(MaxNewSize, _min_alignment);
+ // If needed, synchronize _min_heap_byte size and _initial_heap_byte_size
+ if (_min_heap_byte_size < smallest_heap_size) {
+ _min_heap_byte_size = smallest_heap_size;
+ if (InitialHeapSize < _min_heap_byte_size) {
+ FLAG_SET_ERGO(uintx, InitialHeapSize, smallest_heap_size);
+ _initial_heap_byte_size = smallest_heap_size;
+ }
+ }
- // Check validity of heap flags
- assert(NewSize % _min_alignment == 0, "eden space alignment");
- assert(MaxNewSize % _min_alignment == 0, "survivor space alignment");
+ // Now take the actual NewSize into account. We will silently increase NewSize
+ // if the user specified a smaller value.
+ smallest_new_size = MAX2(smallest_new_size, (uintx)align_size_down(NewSize, _gen_alignment));
+ if (smallest_new_size != NewSize) {
+ FLAG_SET_ERGO(uintx, NewSize, smallest_new_size);
+ }
+ _initial_gen0_size = NewSize;
+
+ if (!FLAG_IS_DEFAULT(MaxNewSize)) {
+ uintx min_new_size = MAX2(_gen_alignment, _min_gen0_size);
- if (NewSize < 3 * _min_alignment) {
- // make sure there room for eden and two survivor spaces
- vm_exit_during_initialization("Too small new size specified");
+ if (MaxNewSize >= MaxHeapSize) {
+ // Make sure there is room for an old generation
+ uintx smaller_max_new_size = MaxHeapSize - _gen_alignment;
+ if (FLAG_IS_CMDLINE(MaxNewSize)) {
+ warning("MaxNewSize (" SIZE_FORMAT "k) is equal to or greater than the entire "
+ "heap (" SIZE_FORMAT "k). A new max generation size of " SIZE_FORMAT "k will be used.",
+ MaxNewSize/K, MaxHeapSize/K, smaller_max_new_size/K);
+ }
+ FLAG_SET_ERGO(uintx, MaxNewSize, smaller_max_new_size);
+ if (NewSize > MaxNewSize) {
+ FLAG_SET_ERGO(uintx, NewSize, MaxNewSize);
+ _initial_gen0_size = NewSize;
+ }
+ } else if (MaxNewSize < min_new_size) {
+ FLAG_SET_ERGO(uintx, MaxNewSize, min_new_size);
+ } else if (!is_size_aligned(MaxNewSize, _gen_alignment)) {
+ FLAG_SET_ERGO(uintx, MaxNewSize, align_size_down(MaxNewSize, _gen_alignment));
+ }
+ _max_gen0_size = MaxNewSize;
}
+
+ if (NewSize > MaxNewSize) {
+ // At this point this should only happen if the user specifies a large NewSize and/or
+ // a small (but not too small) MaxNewSize.
+ if (FLAG_IS_CMDLINE(MaxNewSize)) {
+ warning("NewSize (" SIZE_FORMAT "k) is greater than the MaxNewSize (" SIZE_FORMAT "k). "
+ "A new max generation size of " SIZE_FORMAT "k will be used.",
+ NewSize/K, MaxNewSize/K, NewSize/K);
+ }
+ FLAG_SET_ERGO(uintx, MaxNewSize, NewSize);
+ _max_gen0_size = MaxNewSize;
+ }
+
if (SurvivorRatio < 1 || NewRatio < 1) {
vm_exit_during_initialization("Invalid young gen ratio specified");
}
+
+ DEBUG_ONLY(GenCollectorPolicy::assert_flags();)
}
void TwoGenerationCollectorPolicy::initialize_flags() {
GenCollectorPolicy::initialize_flags();
- OldSize = align_size_down(OldSize, _min_alignment);
+ if (!is_size_aligned(OldSize, _gen_alignment)) {
+ FLAG_SET_ERGO(uintx, OldSize, align_size_down(OldSize, _gen_alignment));
+ }
- if (FLAG_IS_CMDLINE(OldSize) && FLAG_IS_DEFAULT(NewSize)) {
+ if (FLAG_IS_CMDLINE(OldSize) && FLAG_IS_DEFAULT(MaxHeapSize)) {
// NewRatio will be used later to set the young generation size so we use
// it to calculate how big the heap should be based on the requested OldSize
// and NewRatio.
assert(NewRatio > 0, "NewRatio should have been set up earlier");
size_t calculated_heapsize = (OldSize / NewRatio) * (NewRatio + 1);
- calculated_heapsize = align_size_up(calculated_heapsize, _max_alignment);
- MaxHeapSize = calculated_heapsize;
- InitialHeapSize = calculated_heapsize;
+ calculated_heapsize = align_size_up(calculated_heapsize, _heap_alignment);
+ FLAG_SET_ERGO(uintx, MaxHeapSize, calculated_heapsize);
+ _max_heap_byte_size = MaxHeapSize;
+ FLAG_SET_ERGO(uintx, InitialHeapSize, calculated_heapsize);
+ _initial_heap_byte_size = InitialHeapSize;
}
- MaxHeapSize = align_size_up(MaxHeapSize, _max_alignment);
// adjust max heap size if necessary
if (NewSize + OldSize > MaxHeapSize) {
- if (FLAG_IS_CMDLINE(MaxHeapSize)) {
+ if (_max_heap_size_cmdline) {
// somebody set a maximum heap size with the intention that we should not
// exceed it. Adjust New/OldSize as necessary.
uintx calculated_size = NewSize + OldSize;
double shrink_factor = (double) MaxHeapSize / calculated_size;
- // align
- NewSize = align_size_down((uintx) (NewSize * shrink_factor), _min_alignment);
+ uintx smaller_new_size = align_size_down((uintx)(NewSize * shrink_factor), _gen_alignment);
+ FLAG_SET_ERGO(uintx, NewSize, MAX2(young_gen_size_lower_bound(), smaller_new_size));
+ _initial_gen0_size = NewSize;
+
// OldSize is already aligned because above we aligned MaxHeapSize to
- // _max_alignment, and we just made sure that NewSize is aligned to
- // _min_alignment. In initialize_flags() we verified that _max_alignment
- // is a multiple of _min_alignment.
- OldSize = MaxHeapSize - NewSize;
+ // _heap_alignment, and we just made sure that NewSize is aligned to
+ // _gen_alignment. In initialize_flags() we verified that _heap_alignment
+ // is a multiple of _gen_alignment.
+ FLAG_SET_ERGO(uintx, OldSize, MaxHeapSize - NewSize);
} else {
- MaxHeapSize = NewSize + OldSize;
+ FLAG_SET_ERGO(uintx, MaxHeapSize, align_size_up(NewSize + OldSize, _heap_alignment));
+ _max_heap_byte_size = MaxHeapSize;
}
}
- // need to do this again
- MaxHeapSize = align_size_up(MaxHeapSize, _max_alignment);
-
- // adjust max heap size if necessary
- if (NewSize + OldSize > MaxHeapSize) {
- if (FLAG_IS_CMDLINE(MaxHeapSize)) {
- // somebody set a maximum heap size with the intention that we should not
- // exceed it. Adjust New/OldSize as necessary.
- uintx calculated_size = NewSize + OldSize;
- double shrink_factor = (double) MaxHeapSize / calculated_size;
- // align
- NewSize = align_size_down((uintx) (NewSize * shrink_factor), _min_alignment);
- // OldSize is already aligned because above we aligned MaxHeapSize to
- // _max_alignment, and we just made sure that NewSize is aligned to
- // _min_alignment. In initialize_flags() we verified that _max_alignment
- // is a multiple of _min_alignment.
- OldSize = MaxHeapSize - NewSize;
- } else {
- MaxHeapSize = NewSize + OldSize;
- }
- }
- // need to do this again
- MaxHeapSize = align_size_up(MaxHeapSize, _max_alignment);
always_do_update_barrier = UseConcMarkSweepGC;
- // Check validity of heap flags
- assert(OldSize % _min_alignment == 0, "old space alignment");
- assert(MaxHeapSize % _max_alignment == 0, "maximum heap alignment");
+ DEBUG_ONLY(TwoGenerationCollectorPolicy::assert_flags();)
}
// Values set on the command line win over any ergonomically
@@ -281,7 +417,7 @@
void GenCollectorPolicy::initialize_size_info() {
CollectorPolicy::initialize_size_info();
- // _min_alignment is used for alignment within a generation.
+ // _space_alignment is used for alignment within a generation.
// There is additional alignment done down stream for some
// collectors that sometimes causes unwanted rounding up of
// generations sizes.
@@ -289,35 +425,8 @@
// Determine maximum size of gen0
size_t max_new_size = 0;
- if (FLAG_IS_CMDLINE(MaxNewSize) || FLAG_IS_ERGO(MaxNewSize)) {
- if (MaxNewSize < _min_alignment) {
- max_new_size = _min_alignment;
- }
- if (MaxNewSize >= _max_heap_byte_size) {
- max_new_size = align_size_down(_max_heap_byte_size - _min_alignment,
- _min_alignment);
- warning("MaxNewSize (" SIZE_FORMAT "k) is equal to or "
- "greater than the entire heap (" SIZE_FORMAT "k). A "
- "new generation size of " SIZE_FORMAT "k will be used.",
- MaxNewSize/K, _max_heap_byte_size/K, max_new_size/K);
- } else {
- max_new_size = align_size_down(MaxNewSize, _min_alignment);
- }
-
- // The case for FLAG_IS_ERGO(MaxNewSize) could be treated
- // specially at this point to just use an ergonomically set
- // MaxNewSize to set max_new_size. For cases with small
- // heaps such a policy often did not work because the MaxNewSize
- // was larger than the entire heap. The interpretation given
- // to ergonomically set flags is that the flags are set
- // by different collectors for their own special needs but
- // are not allowed to badly shape the heap. This allows the
- // different collectors to decide what's best for themselves
- // without having to factor in the overall heap shape. It
- // can be the case in the future that the collectors would
- // only make "wise" ergonomics choices and this policy could
- // just accept those choices. The choices currently made are
- // not always "wise".
+ if (!FLAG_IS_DEFAULT(MaxNewSize)) {
+ max_new_size = MaxNewSize;
} else {
max_new_size = scale_by_NewRatio_aligned(_max_heap_byte_size);
// Bound the maximum size by NewSize below (since it historically
@@ -386,11 +495,22 @@
_min_gen0_size = MIN2(_min_gen0_size, _initial_gen0_size);
}
+ // Write back to flags if necessary
+ if (NewSize != _initial_gen0_size) {
+ FLAG_SET_ERGO(uintx, NewSize, _initial_gen0_size);
+ }
+
+ if (MaxNewSize != _max_gen0_size) {
+ FLAG_SET_ERGO(uintx, MaxNewSize, _max_gen0_size);
+ }
+
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr("1: Minimum gen0 " SIZE_FORMAT " Initial gen0 "
SIZE_FORMAT " Maximum gen0 " SIZE_FORMAT,
_min_gen0_size, _initial_gen0_size, _max_gen0_size);
}
+
+ DEBUG_ONLY(GenCollectorPolicy::assert_size_info();)
}
// Call this method during the sizing of the gen1 to make
@@ -403,23 +523,18 @@
// keeping it simple also seems a worthwhile goal.
bool TwoGenerationCollectorPolicy::adjust_gen0_sizes(size_t* gen0_size_ptr,
size_t* gen1_size_ptr,
- const size_t heap_size,
- const size_t min_gen1_size) {
+ const size_t heap_size) {
bool result = false;
- if ((*gen1_size_ptr + *gen0_size_ptr) > heap_size) {
- if ((heap_size < (*gen0_size_ptr + min_gen1_size)) &&
- (heap_size >= min_gen1_size + _min_alignment)) {
- // Adjust gen0 down to accommodate min_gen1_size
- *gen0_size_ptr = heap_size - min_gen1_size;
- *gen0_size_ptr =
- MAX2((uintx)align_size_down(*gen0_size_ptr, _min_alignment), _min_alignment);
- assert(*gen0_size_ptr > 0, "Min gen0 is too large");
+ if ((*gen0_size_ptr + *gen1_size_ptr) > heap_size) {
+ uintx smallest_new_size = young_gen_size_lower_bound();
+ if ((heap_size < (*gen0_size_ptr + _min_gen1_size)) &&
+ (heap_size >= _min_gen1_size + smallest_new_size)) {
+ // Adjust gen0 down to accommodate _min_gen1_size
+ *gen0_size_ptr = align_size_down_bounded(heap_size - _min_gen1_size, _gen_alignment);
result = true;
} else {
- *gen1_size_ptr = heap_size - *gen0_size_ptr;
- *gen1_size_ptr =
- MAX2((uintx)align_size_down(*gen1_size_ptr, _min_alignment), _min_alignment);
+ *gen1_size_ptr = align_size_down_bounded(heap_size - *gen0_size_ptr, _gen_alignment);
}
}
return result;
@@ -440,41 +555,36 @@
// The maximum gen1 size can be determined from the maximum gen0
// and maximum heap size since no explicit flags exits
// for setting the gen1 maximum.
- _max_gen1_size = _max_heap_byte_size - _max_gen0_size;
- _max_gen1_size =
- MAX2((uintx)align_size_down(_max_gen1_size, _min_alignment), _min_alignment);
+ _max_gen1_size = MAX2(_max_heap_byte_size - _max_gen0_size, _gen_alignment);
+
// If no explicit command line flag has been set for the
// gen1 size, use what is left for gen1.
- if (FLAG_IS_DEFAULT(OldSize) || FLAG_IS_ERGO(OldSize)) {
- // The user has not specified any value or ergonomics
- // has chosen a value (which may or may not be consistent
+ if (!FLAG_IS_CMDLINE(OldSize)) {
+ // The user has not specified any value but the ergonomics
+ // may have chosen a value (which may or may not be consistent
// with the overall heap size). In either case make
// the minimum, maximum and initial sizes consistent
// with the gen0 sizes and the overall heap sizes.
- assert(_min_heap_byte_size > _min_gen0_size,
- "gen0 has an unexpected minimum size");
- _min_gen1_size = _min_heap_byte_size - _min_gen0_size;
- _min_gen1_size =
- MAX2((uintx)align_size_down(_min_gen1_size, _min_alignment), _min_alignment);
- _initial_gen1_size = _initial_heap_byte_size - _initial_gen0_size;
- _initial_gen1_size =
- MAX2((uintx)align_size_down(_initial_gen1_size, _min_alignment), _min_alignment);
+ _min_gen1_size = MAX2(_min_heap_byte_size - _min_gen0_size, _gen_alignment);
+ _initial_gen1_size = MAX2(_initial_heap_byte_size - _initial_gen0_size, _gen_alignment);
+ // _max_gen1_size has already been made consistent above
+ FLAG_SET_ERGO(uintx, OldSize, _initial_gen1_size);
} else {
// It's been explicitly set on the command line. Use the
// OldSize and then determine the consequences.
- _min_gen1_size = OldSize;
+ _min_gen1_size = MIN2(OldSize, _min_heap_byte_size - _min_gen0_size);
_initial_gen1_size = OldSize;
// If the user has explicitly set an OldSize that is inconsistent
// with other command line flags, issue a warning.
// The generation minimums and the overall heap mimimum should
- // be within one heap alignment.
- if ((_min_gen1_size + _min_gen0_size + _min_alignment) < _min_heap_byte_size) {
+ // be within one generation alignment.
+ if ((_min_gen1_size + _min_gen0_size + _gen_alignment) < _min_heap_byte_size) {
warning("Inconsistency between minimum heap size and minimum "
"generation sizes: using minimum heap = " SIZE_FORMAT,
_min_heap_byte_size);
}
- if ((OldSize > _max_gen1_size)) {
+ if (OldSize > _max_gen1_size) {
warning("Inconsistency between maximum heap size and maximum "
"generation sizes: using maximum heap = " SIZE_FORMAT
" -XX:OldSize flag is being ignored",
@@ -482,8 +592,7 @@
}
// If there is an inconsistency between the OldSize and the minimum and/or
// initial size of gen0, since OldSize was explicitly set, OldSize wins.
- if (adjust_gen0_sizes(&_min_gen0_size, &_min_gen1_size,
- _min_heap_byte_size, OldSize)) {
+ if (adjust_gen0_sizes(&_min_gen0_size, &_min_gen1_size, _min_heap_byte_size)) {
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr("2: Minimum gen0 " SIZE_FORMAT " Initial gen0 "
SIZE_FORMAT " Maximum gen0 " SIZE_FORMAT,
@@ -492,7 +601,7 @@
}
// Initial size
if (adjust_gen0_sizes(&_initial_gen0_size, &_initial_gen1_size,
- _initial_heap_byte_size, OldSize)) {
+ _initial_heap_byte_size)) {
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr("3: Minimum gen0 " SIZE_FORMAT " Initial gen0 "
SIZE_FORMAT " Maximum gen0 " SIZE_FORMAT,
@@ -507,11 +616,26 @@
_initial_gen1_size = MAX2(_initial_gen1_size, _min_gen1_size);
_initial_gen1_size = MIN2(_initial_gen1_size, _max_gen1_size);
+ // Write back to flags if necessary
+ if (NewSize != _initial_gen0_size) {
+ FLAG_SET_ERGO(uintx, NewSize, _initial_gen0_size);
+ }
+
+ if (MaxNewSize != _max_gen0_size) {
+ FLAG_SET_ERGO(uintx, MaxNewSize, _max_gen0_size);
+ }
+
+ if (OldSize != _initial_gen1_size) {
+ FLAG_SET_ERGO(uintx, OldSize, _initial_gen1_size);
+ }
+
if (PrintGCDetails && Verbose) {
gclog_or_tty->print_cr("Minimum gen1 " SIZE_FORMAT " Initial gen1 "
SIZE_FORMAT " Maximum gen1 " SIZE_FORMAT,
_min_gen1_size, _initial_gen1_size, _max_gen1_size);
}
+
+ DEBUG_ONLY(TwoGenerationCollectorPolicy::assert_size_info();)
}
HeapWord* GenCollectorPolicy::mem_allocate_work(size_t size,
@@ -605,9 +729,7 @@
gc_count_before = Universe::heap()->total_collections();
}
- VM_GenCollectForAllocation op(size,
- is_tlab,
- gc_count_before);
+ VM_GenCollectForAllocation op(size, is_tlab, gc_count_before);
VMThread::execute(&op);
if (op.prologue_succeeded()) {
result = op.result();
@@ -836,14 +958,16 @@
// MarkSweepPolicy methods
//
-MarkSweepPolicy::MarkSweepPolicy() {
- initialize_all();
+void MarkSweepPolicy::initialize_alignments() {
+ _space_alignment = _gen_alignment = (uintx)Generation::GenGrain;
+ _heap_alignment = compute_heap_alignment();
}
void MarkSweepPolicy::initialize_generations() {
_generations = NEW_C_HEAP_ARRAY3(GenerationSpecPtr, number_of_generations(), mtGC, 0, AllocFailStrategy::RETURN_NULL);
- if (_generations == NULL)
+ if (_generations == NULL) {
vm_exit_during_initialization("Unable to allocate gen spec");
+ }
if (UseParNewGC) {
_generations[0] = new GenerationSpec(Generation::ParNew, _initial_gen0_size, _max_gen0_size);
@@ -852,8 +976,9 @@
}
_generations[1] = new GenerationSpec(Generation::MarkSweepCompact, _initial_gen1_size, _max_gen1_size);
- if (_generations[0] == NULL || _generations[1] == NULL)
+ if (_generations[0] == NULL || _generations[1] == NULL) {
vm_exit_during_initialization("Unable to allocate gen spec");
+ }
}
void MarkSweepPolicy::initialize_gc_policy_counters() {
--- a/hotspot/src/share/vm/memory/collectorPolicy.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/memory/collectorPolicy.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -61,17 +61,23 @@
protected:
GCPolicyCounters* _gc_policy_counters;
- // Requires that the concrete subclass sets the alignment constraints
- // before calling.
+ virtual void initialize_alignments() = 0;
virtual void initialize_flags();
virtual void initialize_size_info();
+ DEBUG_ONLY(virtual void assert_flags();)
+ DEBUG_ONLY(virtual void assert_size_info();)
+
size_t _initial_heap_byte_size;
size_t _max_heap_byte_size;
size_t _min_heap_byte_size;
- size_t _min_alignment;
- size_t _max_alignment;
+ size_t _space_alignment;
+ size_t _heap_alignment;
+
+ // Needed to keep information if MaxHeapSize was set on the command line
+ // when the flag value is aligned etc by ergonomics
+ bool _max_heap_size_cmdline;
// The sizing of the heap are controlled by a sizing policy.
AdaptiveSizePolicy* _size_policy;
@@ -79,6 +85,7 @@
// Set to true when policy wants soft refs cleared.
// Reset to false by gc after it clears all soft refs.
bool _should_clear_all_soft_refs;
+
// Set to true by the GC if the just-completed gc cleared all
// softrefs. This is set to true whenever a gc clears all softrefs, and
// set to false each time gc returns to the mutator. For example, in the
@@ -86,23 +93,20 @@
// mem_allocate() where it returns op.result()
bool _all_soft_refs_clear;
- CollectorPolicy() :
- _min_alignment(1),
- _max_alignment(1),
- _initial_heap_byte_size(0),
- _max_heap_byte_size(0),
- _min_heap_byte_size(0),
- _size_policy(NULL),
- _should_clear_all_soft_refs(false),
- _all_soft_refs_clear(false)
- {}
+ CollectorPolicy();
public:
- // Return maximum heap alignment that may be imposed by the policy
- static size_t compute_max_alignment();
+ virtual void initialize_all() {
+ initialize_alignments();
+ initialize_flags();
+ initialize_size_info();
+ }
- size_t min_alignment() { return _min_alignment; }
- size_t max_alignment() { return _max_alignment; }
+ // Return maximum heap alignment that may be imposed by the policy
+ static size_t compute_heap_alignment();
+
+ size_t space_alignment() { return _space_alignment; }
+ size_t heap_alignment() { return _heap_alignment; }
size_t initial_heap_byte_size() { return _initial_heap_byte_size; }
size_t max_heap_byte_size() { return _max_heap_byte_size; }
@@ -151,7 +155,6 @@
virtual BarrierSet::Name barrier_set_name() = 0;
- virtual GenRemSet::Name rem_set_name() = 0;
// Create the remembered set (to cover the given reserved region,
// allowing breaking up into at most "max_covered_regions").
@@ -195,6 +198,9 @@
return false;
}
+ // Do any updates required to global flags that are due to heap initialization
+ // changes
+ virtual void post_heap_initialize() = 0;
};
class ClearedAllSoftRefs : public StackObj {
@@ -219,6 +225,10 @@
size_t _initial_gen0_size;
size_t _max_gen0_size;
+ // _gen_alignment and _space_alignment will have the same value most of the
+ // time. When using large pages they can differ.
+ size_t _gen_alignment;
+
GenerationSpec **_generations;
// Return true if an allocation should be attempted in the older
@@ -229,41 +239,50 @@
void initialize_flags();
void initialize_size_info();
+ DEBUG_ONLY(void assert_flags();)
+ DEBUG_ONLY(void assert_size_info();)
+
// Try to allocate space by expanding the heap.
virtual HeapWord* expand_heap_and_allocate(size_t size, bool is_tlab);
- // Scale the base_size by NewRation according to
+ // Compute max heap alignment
+ size_t compute_max_alignment();
+
+ // Scale the base_size by NewRatio according to
// result = base_size / (NewRatio + 1)
// and align by min_alignment()
size_t scale_by_NewRatio_aligned(size_t base_size);
- // Bound the value by the given maximum minus the
- // min_alignment.
+ // Bound the value by the given maximum minus the min_alignment
size_t bound_minus_alignment(size_t desired_size, size_t maximum_size);
public:
+ GenCollectorPolicy();
+
// Accessors
size_t min_gen0_size() { return _min_gen0_size; }
size_t initial_gen0_size() { return _initial_gen0_size; }
size_t max_gen0_size() { return _max_gen0_size; }
+ size_t gen_alignment() { return _gen_alignment; }
virtual int number_of_generations() = 0;
- virtual GenerationSpec **generations() {
+ virtual GenerationSpec **generations() {
assert(_generations != NULL, "Sanity check");
return _generations;
}
virtual GenCollectorPolicy* as_generation_policy() { return this; }
- virtual void initialize_generations() = 0;
+ virtual void initialize_generations() { };
virtual void initialize_all() {
- initialize_flags();
- initialize_size_info();
+ CollectorPolicy::initialize_all();
initialize_generations();
}
+ size_t young_gen_size_lower_bound();
+
HeapWord* mem_allocate_work(size_t size,
bool is_tlab,
bool* gc_overhead_limit_was_exceeded);
@@ -274,6 +293,10 @@
virtual void initialize_size_policy(size_t init_eden_size,
size_t init_promo_size,
size_t init_survivor_size);
+
+ virtual void post_heap_initialize() {
+ assert(_max_gen0_size == MaxNewSize, "Should be taken care of by initialize_size_info");
+ }
};
// All of hotspot's current collectors are subtypes of this
@@ -290,9 +313,14 @@
void initialize_flags();
void initialize_size_info();
- void initialize_generations() { ShouldNotReachHere(); }
+
+ DEBUG_ONLY(void assert_flags();)
+ DEBUG_ONLY(void assert_size_info();)
public:
+ TwoGenerationCollectorPolicy() : GenCollectorPolicy(), _min_gen1_size(0),
+ _initial_gen1_size(0), _max_gen1_size(0) {}
+
// Accessors
size_t min_gen1_size() { return _min_gen1_size; }
size_t initial_gen1_size() { return _initial_gen1_size; }
@@ -301,25 +329,25 @@
// Inherited methods
TwoGenerationCollectorPolicy* as_two_generation_policy() { return this; }
- int number_of_generations() { return 2; }
- BarrierSet::Name barrier_set_name() { return BarrierSet::CardTableModRef; }
- GenRemSet::Name rem_set_name() { return GenRemSet::CardTable; }
+ int number_of_generations() { return 2; }
+ BarrierSet::Name barrier_set_name() { return BarrierSet::CardTableModRef; }
virtual CollectorPolicy::Name kind() {
return CollectorPolicy::TwoGenerationCollectorPolicyKind;
}
- // Returns true is gen0 sizes were adjusted
+ // Returns true if gen0 sizes were adjusted
bool adjust_gen0_sizes(size_t* gen0_size_ptr, size_t* gen1_size_ptr,
- const size_t heap_size, const size_t min_gen1_size);
+ const size_t heap_size);
};
class MarkSweepPolicy : public TwoGenerationCollectorPolicy {
protected:
+ void initialize_alignments();
void initialize_generations();
public:
- MarkSweepPolicy();
+ MarkSweepPolicy() {}
MarkSweepPolicy* as_mark_sweep_policy() { return this; }
--- a/hotspot/src/share/vm/memory/defNewGeneration.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/memory/defNewGeneration.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -204,7 +204,7 @@
// Compute the maximum eden and survivor space sizes. These sizes
// are computed assuming the entire reserved space is committed.
// These values are exported as performance counters.
- uintx alignment = GenCollectedHeap::heap()->collector_policy()->min_alignment();
+ uintx alignment = GenCollectedHeap::heap()->collector_policy()->space_alignment();
uintx size = _virtual_space.reserved_size();
_max_survivor_size = compute_survivor_size(size, alignment);
_max_eden_size = size - (2*_max_survivor_size);
@@ -235,7 +235,7 @@
bool clear_space,
bool mangle_space) {
uintx alignment =
- GenCollectedHeap::heap()->collector_policy()->min_alignment();
+ GenCollectedHeap::heap()->collector_policy()->space_alignment();
// If the spaces are being cleared (only done at heap initialization
// currently), the survivor spaces need not be empty.
@@ -473,7 +473,7 @@
}
size_t DefNewGeneration::max_capacity() const {
- const size_t alignment = GenCollectedHeap::heap()->collector_policy()->min_alignment();
+ const size_t alignment = GenCollectedHeap::heap()->collector_policy()->space_alignment();
const size_t reserved_bytes = reserved().byte_size();
return reserved_bytes - compute_survivor_size(reserved_bytes, alignment);
}
--- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -111,7 +111,7 @@
int n_covered_regions = 0;
ReservedSpace heap_rs;
- size_t heap_alignment = collector_policy()->max_alignment();
+ size_t heap_alignment = collector_policy()->heap_alignment();
heap_address = allocate(heap_alignment, &total_reserved,
&n_covered_regions, &heap_rs);
@@ -1053,12 +1053,6 @@
}
}
-void GenCollectedHeap::compute_new_generation_sizes(int collectedGen) {
- for (int i = 0; i <= collectedGen; i++) {
- _gens[i]->compute_new_size();
- }
-}
-
GenCollectedHeap* GenCollectedHeap::heap() {
assert(_gch != NULL, "Uninitialized access to GenCollectedHeap::heap()");
assert(_gch->kind() == CollectedHeap::GenCollectedHeap, "not a generational heap");
--- a/hotspot/src/share/vm/memory/genCollectedHeap.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -86,10 +86,6 @@
NOT_PRODUCT(static size_t _skip_header_HeapWords;)
protected:
- // Directs each generation up to and including "collectedGen" to recompute
- // its desired size.
- void compute_new_generation_sizes(int collectedGen);
-
// Helper functions for allocation
HeapWord* attempt_allocation(size_t size,
bool is_tlab,
--- a/hotspot/src/share/vm/memory/metaspace.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/memory/metaspace.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -2975,11 +2975,6 @@
#endif
-// Align down. If the aligning result in 0, return 'alignment'.
-static size_t restricted_align_down(size_t size, size_t alignment) {
- return MAX2(alignment, align_size_down_(size, alignment));
-}
-
void Metaspace::ergo_initialize() {
if (DumpSharedSpaces) {
// Using large pages when dumping the shared archive is currently not implemented.
@@ -3002,13 +2997,13 @@
// Ideally, we would be able to set the default value of MaxMetaspaceSize in
// globals.hpp to the aligned value, but this is not possible, since the
// alignment depends on other flags being parsed.
- MaxMetaspaceSize = restricted_align_down(MaxMetaspaceSize, _reserve_alignment);
+ MaxMetaspaceSize = align_size_down_bounded(MaxMetaspaceSize, _reserve_alignment);
if (MetaspaceSize > MaxMetaspaceSize) {
MetaspaceSize = MaxMetaspaceSize;
}
- MetaspaceSize = restricted_align_down(MetaspaceSize, _commit_alignment);
+ MetaspaceSize = align_size_down_bounded(MetaspaceSize, _commit_alignment);
assert(MetaspaceSize <= MaxMetaspaceSize, "MetaspaceSize should be limited by MaxMetaspaceSize");
@@ -3016,10 +3011,10 @@
vm_exit_during_initialization("Too small initial Metaspace size");
}
- MinMetaspaceExpansion = restricted_align_down(MinMetaspaceExpansion, _commit_alignment);
- MaxMetaspaceExpansion = restricted_align_down(MaxMetaspaceExpansion, _commit_alignment);
-
- CompressedClassSpaceSize = restricted_align_down(CompressedClassSpaceSize, _reserve_alignment);
+ MinMetaspaceExpansion = align_size_down_bounded(MinMetaspaceExpansion, _commit_alignment);
+ MaxMetaspaceExpansion = align_size_down_bounded(MaxMetaspaceExpansion, _commit_alignment);
+
+ CompressedClassSpaceSize = align_size_down_bounded(CompressedClassSpaceSize, _reserve_alignment);
set_compressed_class_space_size(CompressedClassSpaceSize);
}
--- a/hotspot/src/share/vm/memory/sharedHeap.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/memory/sharedHeap.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -247,6 +247,7 @@
}
void SharedHeap::post_initialize() {
+ CollectedHeap::post_initialize();
ref_processing_init();
}
--- a/hotspot/src/share/vm/memory/universe.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/memory/universe.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -785,6 +785,7 @@
} else if (UseG1GC) {
#if INCLUDE_ALL_GCS
G1CollectorPolicy* g1p = new G1CollectorPolicy();
+ g1p->initialize_all();
G1CollectedHeap* g1h = new G1CollectedHeap(g1p);
Universe::_collectedHeap = g1h;
#else // INCLUDE_ALL_GCS
@@ -809,6 +810,7 @@
} else { // default old generation
gc_policy = new MarkSweepPolicy();
}
+ gc_policy->initialize_all();
Universe::_collectedHeap = new GenCollectedHeap(gc_policy);
}
@@ -1041,7 +1043,7 @@
Universe::_virtual_machine_error_instance =
InstanceKlass::cast(k)->allocate_instance(CHECK_false);
- Universe::_vm_exception = InstanceKlass::cast(k)->allocate_instance(CHECK_false);
+ Universe::_vm_exception = InstanceKlass::cast(k)->allocate_instance(CHECK_false);
if (!DumpSharedSpaces) {
// These are the only Java fields that are currently set during shared space dumping.
--- a/hotspot/src/share/vm/oops/cpCache.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/oops/cpCache.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -554,24 +554,37 @@
// Implementation of ConstantPoolCache
ConstantPoolCache* ConstantPoolCache::allocate(ClassLoaderData* loader_data,
- int length,
const intStack& index_map,
+ const intStack& invokedynamic_index_map,
const intStack& invokedynamic_map, TRAPS) {
+
+ const int length = index_map.length() + invokedynamic_index_map.length();
int size = ConstantPoolCache::size(length);
return new (loader_data, size, false, MetaspaceObj::ConstantPoolCacheType, THREAD)
- ConstantPoolCache(length, index_map, invokedynamic_map);
+ ConstantPoolCache(length, index_map, invokedynamic_index_map, invokedynamic_map);
}
void ConstantPoolCache::initialize(const intArray& inverse_index_map,
+ const intArray& invokedynamic_inverse_index_map,
const intArray& invokedynamic_references_map) {
- assert(inverse_index_map.length() == length(), "inverse index map must have same length as cache");
- for (int i = 0; i < length(); i++) {
+ for (int i = 0; i < inverse_index_map.length(); i++) {
ConstantPoolCacheEntry* e = entry_at(i);
int original_index = inverse_index_map[i];
e->initialize_entry(original_index);
assert(entry_at(i) == e, "sanity");
}
+
+ // Append invokedynamic entries at the end
+ int invokedynamic_offset = inverse_index_map.length();
+ for (int i = 0; i < invokedynamic_inverse_index_map.length(); i++) {
+ int offset = i + invokedynamic_offset;
+ ConstantPoolCacheEntry* e = entry_at(offset);
+ int original_index = invokedynamic_inverse_index_map[i];
+ e->initialize_entry(original_index);
+ assert(entry_at(offset) == e, "sanity");
+ }
+
for (int ref = 0; ref < invokedynamic_references_map.length(); ref++) {
const int cpci = invokedynamic_references_map[ref];
if (cpci >= 0) {
--- a/hotspot/src/share/vm/oops/cpCache.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/oops/cpCache.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -31,6 +31,10 @@
class PSPromotionManager;
+// The ConstantPoolCache is not a cache! It is the resolution table that the
+// interpreter uses to avoid going into the runtime and a way to access resolved
+// values.
+
// A ConstantPoolCacheEntry describes an individual entry of the constant
// pool cache. There's 2 principal kinds of entries: field entries for in-
// stance & static field access, and method entries for invokes. Some of
@@ -392,26 +396,33 @@
friend class MetadataFactory;
private:
int _length;
- ConstantPool* _constant_pool; // the corresponding constant pool
+ ConstantPool* _constant_pool; // the corresponding constant pool
// Sizing
debug_only(friend class ClassVerifier;)
// Constructor
- ConstantPoolCache(int length, const intStack& inverse_index_map,
+ ConstantPoolCache(int length,
+ const intStack& inverse_index_map,
+ const intStack& invokedynamic_inverse_index_map,
const intStack& invokedynamic_references_map) :
- _length(length), _constant_pool(NULL) {
- initialize(inverse_index_map, invokedynamic_references_map);
+ _length(length),
+ _constant_pool(NULL) {
+ initialize(inverse_index_map, invokedynamic_inverse_index_map,
+ invokedynamic_references_map);
for (int i = 0; i < length; i++) {
assert(entry_at(i)->is_f1_null(), "Failed to clear?");
}
}
// Initialization
- void initialize(const intArray& inverse_index_map, const intArray& invokedynamic_references_map);
+ void initialize(const intArray& inverse_index_map,
+ const intArray& invokedynamic_inverse_index_map,
+ const intArray& invokedynamic_references_map);
public:
- static ConstantPoolCache* allocate(ClassLoaderData* loader_data, int length,
- const intStack& inverse_index_map,
+ static ConstantPoolCache* allocate(ClassLoaderData* loader_data,
+ const intStack& cp_cache_map,
+ const intStack& invokedynamic_cp_cache_map,
const intStack& invokedynamic_references_map, TRAPS);
bool is_constantPoolCache() const { return true; }
--- a/hotspot/src/share/vm/oops/instanceKlass.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/oops/instanceKlass.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -2211,6 +2211,10 @@
data = mdo->next_data(data)) {
data->clean_weak_klass_links(is_alive);
}
+ ParametersTypeData* parameters = mdo->parameters_type_data();
+ if (parameters != NULL) {
+ parameters->clean_weak_klass_links(is_alive);
+ }
}
}
}
--- a/hotspot/src/share/vm/oops/klassVtable.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/oops/klassVtable.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -86,7 +86,11 @@
get_mirandas(&new_mirandas, all_mirandas, super, methods, NULL, local_interfaces);
*num_new_mirandas = new_mirandas.length();
- vtable_length += *num_new_mirandas * vtableEntry::size();
+ // Interfaces do not need interface methods in their vtables
+ // This includes miranda methods and during later processing, default methods
+ if (!class_flags.is_interface()) {
+ vtable_length += *num_new_mirandas * vtableEntry::size();
+ }
if (Universe::is_bootstrapping() && vtable_length == 0) {
// array classes don't have their superclass set correctly during
@@ -224,7 +228,11 @@
}
// add miranda methods; it will also return the updated initialized
- initialized = fill_in_mirandas(initialized);
+ // Interfaces do not need interface methods in their vtables
+ // This includes miranda methods and during later processing, default methods
+ if (!ik()->is_interface()) {
+ initialized = fill_in_mirandas(initialized);
+ }
// In class hierarchies where the accessibility is not increasing (i.e., going from private ->
// package_private -> public/protected), the vtable might actually be smaller than our initial
@@ -264,12 +272,12 @@
_klass->internal_name(), sig, vtable_index);
super_method->access_flags().print_on(tty);
if (super_method->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
tty->print("overriders flags: ");
target_method->access_flags().print_on(tty);
if (target_method->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
}
#endif /*PRODUCT*/
@@ -332,9 +340,15 @@
// An interface never allocates new vtable slots, only inherits old ones.
// This method will either be assigned its own itable index later,
// or be assigned an inherited vtable index in the loop below.
- // default methods store their vtable indices in the inheritors default_vtable_indices
- assert (default_index == -1, "interfaces don't store resolved default methods");
- target_method()->set_vtable_index(Method::pending_itable_index);
+ // default methods inherited by classes store their vtable indices
+ // in the inheritor's default_vtable_indices
+ // default methods inherited by interfaces may already have a
+ // valid itable index, if so, don't change it
+ // overpass methods in an interface will be assigned an itable index later
+ // by an inheriting class
+ if (!is_default || !target_method()->has_itable_index()) {
+ target_method()->set_vtable_index(Method::pending_itable_index);
+ }
}
// we need a new entry if there is no superclass
@@ -441,7 +455,7 @@
target_klass->internal_name(), sig, i);
super_method->access_flags().print_on(tty);
if (super_method->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
if (super_method->is_overpass()) {
tty->print("overpass");
@@ -449,7 +463,7 @@
tty->print("overriders flags: ");
target_method->access_flags().print_on(tty);
if (target_method->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
if (target_method->is_overpass()) {
tty->print("overpass");
@@ -468,7 +482,7 @@
target_klass->internal_name(), sig,i);
super_method->access_flags().print_on(tty);
if (super_method->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
if (super_method->is_overpass()) {
tty->print("overpass");
@@ -476,7 +490,7 @@
tty->print("overriders flags: ");
target_method->access_flags().print_on(tty);
if (target_method->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
if (target_method->is_overpass()) {
tty->print("overpass");
@@ -494,8 +508,18 @@
#ifndef PRODUCT
if (PrintVtables && Verbose) {
ResourceMark rm;
- tty->print_cr("adding %s::%s at index %d", _klass->internal_name(),
- (m != NULL) ? m->name()->as_C_string() : "<NULL>", index);
+ const char* sig = (m != NULL) ? m->name_and_sig_as_C_string() : "<NULL>";
+ tty->print("adding %s at index %d, flags: ", sig, index);
+ if (m != NULL) {
+ m->access_flags().print_on(tty);
+ if (m->is_default_method()) {
+ tty->print("default ");
+ }
+ if (m->is_overpass()) {
+ tty->print("overpass");
+ }
+ }
+ tty->cr();
}
#endif
table()[index].set(m);
@@ -631,8 +655,10 @@
if (mhk->is_interface()) {
assert(m->is_public(), "should be public");
assert(ik()->implements_interface(method_holder) , "this class should implement the interface");
- assert(is_miranda(m, ik()->methods(), ik()->default_methods(), ik()->super()), "should be a miranda_method");
- return true;
+ // the search could find a miranda or a default method
+ if (is_miranda(m, ik()->methods(), ik()->default_methods(), ik()->super())) {
+ return true;
+ }
}
return false;
}
@@ -644,9 +670,10 @@
// the caller must make sure that the method belongs to an interface implemented by the class
// Miranda methods only include public interface instance methods
// Not private methods, not static methods, not default == concrete abstract
+// Miranda methods also do not include overpass methods in interfaces
bool klassVtable::is_miranda(Method* m, Array<Method*>* class_methods,
Array<Method*>* default_methods, Klass* super) {
- if (m->is_static() || m->is_private()) {
+ if (m->is_static() || m->is_private() || m->is_overpass()) {
return false;
}
Symbol* name = m->name();
@@ -744,6 +771,8 @@
// Discover miranda methods ("miranda" = "interface abstract, no binding"),
// and append them into the vtable starting at index initialized,
// return the new value of initialized.
+// Miranda methods use vtable entries, but do not get assigned a vtable_index
+// The vtable_index is discovered by searching from the end of the vtable
int klassVtable::fill_in_mirandas(int initialized) {
GrowableArray<Method*> mirandas(20);
get_mirandas(&mirandas, NULL, ik()->super(), ik()->methods(),
@@ -758,7 +787,7 @@
sig, initialized);
meth->access_flags().print_on(tty);
if (meth->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
tty->cr();
}
@@ -858,7 +887,7 @@
tty->print(" (%5d) ", i);
m->access_flags().print_on(tty);
if (m->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
if (m->is_overpass()) {
tty->print("overpass");
@@ -977,6 +1006,25 @@
if (interface_method_needs_itable_index(m)) {
assert(!m->is_final_method(), "no final interface methods");
// If m is already assigned a vtable index, do not disturb it.
+ if (TraceItables && Verbose) {
+ ResourceMark rm;
+ const char* sig = (m != NULL) ? m->name_and_sig_as_C_string() : "<NULL>";
+ if (m->has_vtable_index()) {
+ tty->print("itable index %d for method: %s, flags: ", m->vtable_index(), sig);
+ } else {
+ tty->print("itable index %d for method: %s, flags: ", ime_num, sig);
+ }
+ if (m != NULL) {
+ m->access_flags().print_on(tty);
+ if (m->is_default_method()) {
+ tty->print("default ");
+ }
+ if (m->is_overpass()) {
+ tty->print("overpass");
+ }
+ }
+ tty->cr();
+ }
if (!m->has_vtable_index()) {
assert(m->vtable_index() == Method::pending_itable_index, "set by initialize_vtable");
m->set_itable_index(ime_num);
@@ -1079,7 +1127,7 @@
tty->print("target_method flags: ");
target()->access_flags().print_on(tty);
if (target()->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
tty->cr();
}
@@ -1158,7 +1206,7 @@
tty->print(" (%5d) ", i);
m->access_flags().print_on(tty);
if (m->is_default_method()) {
- tty->print("default");
+ tty->print("default ");
}
tty->print(" -- ");
m->print_name(tty);
--- a/hotspot/src/share/vm/oops/methodData.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/oops/methodData.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -275,23 +275,23 @@
}
bool TypeEntries::is_loader_alive(BoolObjectClosure* is_alive_cl, intptr_t p) {
- return !is_type_none(p) &&
- !((Klass*)klass_part(p))->is_loader_alive(is_alive_cl);
+ Klass* k = (Klass*)klass_part(p);
+ return k != NULL && k->is_loader_alive(is_alive_cl);
}
void TypeStackSlotEntries::clean_weak_klass_links(BoolObjectClosure* is_alive_cl) {
for (int i = 0; i < _number_of_entries; i++) {
intptr_t p = type(i);
- if (is_loader_alive(is_alive_cl, p)) {
- set_type(i, type_none());
+ if (!is_loader_alive(is_alive_cl, p)) {
+ set_type(i, with_status((Klass*)NULL, p));
}
}
}
void ReturnTypeEntry::clean_weak_klass_links(BoolObjectClosure* is_alive_cl) {
intptr_t p = type();
- if (is_loader_alive(is_alive_cl, p)) {
- set_type(type_none());
+ if (!is_loader_alive(is_alive_cl, p)) {
+ set_type(with_status((Klass*)NULL, p));
}
}
--- a/hotspot/src/share/vm/oops/methodData.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/oops/methodData.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -690,7 +690,6 @@
// recorded type: cell without bit 0 and 1
static intptr_t klass_part(intptr_t v) {
intptr_t r = v & type_klass_mask;
- assert (r != 0, "invalid");
return r;
}
@@ -698,7 +697,9 @@
static Klass* valid_klass(intptr_t k) {
if (!is_type_none(k) &&
!is_type_unknown(k)) {
- return (Klass*)klass_part(k);
+ Klass* res = (Klass*)klass_part(k);
+ assert(res != NULL, "invalid");
+ return res;
} else {
return NULL;
}
--- a/hotspot/src/share/vm/opto/bytecodeInfo.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/opto/bytecodeInfo.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -389,6 +389,10 @@
return false;
}
if (inline_level() > _max_inline_level) {
+ if (callee_method->force_inline() && inline_level() > MaxForceInlineLevel) {
+ set_msg("MaxForceInlineLevel");
+ return false;
+ }
if (!callee_method->force_inline() || !IncrementalInline) {
set_msg("inlining too deep");
return false;
--- a/hotspot/src/share/vm/opto/callGenerator.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/opto/callGenerator.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -776,7 +776,7 @@
guarantee(!target->is_method_handle_intrinsic(), "should not happen"); // XXX remove
const int vtable_index = Method::invalid_vtable_index;
CallGenerator* cg = C->call_generator(target, vtable_index, false, jvms, true, PROB_ALWAYS, NULL, true, true);
- assert(!cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here");
+ assert(cg == NULL || !cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here");
if (cg != NULL && cg->is_inline())
return cg;
}
@@ -846,7 +846,7 @@
}
CallGenerator* cg = C->call_generator(target, vtable_index, call_does_dispatch, jvms, true, PROB_ALWAYS, speculative_receiver_type, true, true);
- assert(!cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here");
+ assert(cg == NULL || !cg->is_late_inline() || cg->is_mh_late_inline(), "no late inline here");
if (cg != NULL && cg->is_inline())
return cg;
}
--- a/hotspot/src/share/vm/opto/loopopts.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/opto/loopopts.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -42,6 +42,13 @@
// so disable this for now
return NULL;
}
+
+ if (n->is_MathExact()) {
+ // MathExact has projections that are not correctly handled in the code
+ // below.
+ return NULL;
+ }
+
int wins = 0;
assert(!n->is_CFG(), "");
assert(region->is_Region(), "");
--- a/hotspot/src/share/vm/opto/matcher.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/opto/matcher.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -464,17 +464,17 @@
C->FIRST_STACK_mask().Clear();
// Add in the incoming argument area
- OptoReg::Name init = OptoReg::add(_old_SP, C->out_preserve_stack_slots());
- for (i = init; i < _in_arg_limit; i = OptoReg::add(i,1))
+ OptoReg::Name init_in = OptoReg::add(_old_SP, C->out_preserve_stack_slots());
+ for (i = init_in; i < _in_arg_limit; i = OptoReg::add(i,1)) {
C->FIRST_STACK_mask().Insert(i);
-
+ }
// Add in all bits past the outgoing argument area
guarantee(RegMask::can_represent_arg(OptoReg::add(_out_arg_limit,-1)),
"must be able to represent all call arguments in reg mask");
- init = _out_arg_limit;
- for (i = init; RegMask::can_represent(i); i = OptoReg::add(i,1))
+ OptoReg::Name init = _out_arg_limit;
+ for (i = init; RegMask::can_represent(i); i = OptoReg::add(i,1)) {
C->FIRST_STACK_mask().Insert(i);
-
+ }
// Finally, set the "infinite stack" bit.
C->FIRST_STACK_mask().set_AllStack();
@@ -506,16 +506,36 @@
idealreg2spillmask[Op_VecS]->OR(C->FIRST_STACK_mask());
}
if (Matcher::vector_size_supported(T_FLOAT,2)) {
+ // For VecD we need dual alignment and 8 bytes (2 slots) for spills.
+ // RA guarantees such alignment since it is needed for Double and Long values.
*idealreg2spillmask[Op_VecD] = *idealreg2regmask[Op_VecD];
idealreg2spillmask[Op_VecD]->OR(aligned_stack_mask);
}
if (Matcher::vector_size_supported(T_FLOAT,4)) {
+ // For VecX we need quadro alignment and 16 bytes (4 slots) for spills.
+ //
+ // RA can use input arguments stack slots for spills but until RA
+ // we don't know frame size and offset of input arg stack slots.
+ //
+ // Exclude last input arg stack slots to avoid spilling vectors there
+ // otherwise vector spills could stomp over stack slots in caller frame.
+ OptoReg::Name in = OptoReg::add(_in_arg_limit, -1);
+ for (int k = 1; (in >= init_in) && (k < RegMask::SlotsPerVecX); k++) {
+ aligned_stack_mask.Remove(in);
+ in = OptoReg::add(in, -1);
+ }
aligned_stack_mask.clear_to_sets(RegMask::SlotsPerVecX);
assert(aligned_stack_mask.is_AllStack(), "should be infinite stack");
*idealreg2spillmask[Op_VecX] = *idealreg2regmask[Op_VecX];
idealreg2spillmask[Op_VecX]->OR(aligned_stack_mask);
}
if (Matcher::vector_size_supported(T_FLOAT,8)) {
+ // For VecY we need octo alignment and 32 bytes (8 slots) for spills.
+ OptoReg::Name in = OptoReg::add(_in_arg_limit, -1);
+ for (int k = 1; (in >= init_in) && (k < RegMask::SlotsPerVecY); k++) {
+ aligned_stack_mask.Remove(in);
+ in = OptoReg::add(in, -1);
+ }
aligned_stack_mask.clear_to_sets(RegMask::SlotsPerVecY);
assert(aligned_stack_mask.is_AllStack(), "should be infinite stack");
*idealreg2spillmask[Op_VecY] = *idealreg2regmask[Op_VecY];
--- a/hotspot/src/share/vm/opto/mathexactnode.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/opto/mathexactnode.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -49,7 +49,7 @@
virtual Node* Identity(PhaseTransform* phase) { return this; }
virtual Node* Ideal(PhaseGVN* phase, bool can_reshape) { return NULL; }
virtual const Type* Value(PhaseTransform* phase) const { return bottom_type(); }
- virtual uint hash() const { return Node::hash(); }
+ virtual uint hash() const { return NO_HASH; }
virtual bool is_CFG() const { return false; }
virtual uint ideal_reg() const { return NotAMachineReg; }
--- a/hotspot/src/share/vm/prims/whitebox.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/prims/whitebox.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -53,6 +53,8 @@
#include "compiler/compileBroker.hpp"
#include "runtime/compilationPolicy.hpp"
+#define SIZE_T_MAX_VALUE ((size_t) -1)
+
bool WhiteBox::_used = false;
WB_ENTRY(jlong, WB_GetObjectAddress(JNIEnv* env, jobject o, jobject obj))
@@ -105,10 +107,116 @@
gclog_or_tty->print_cr("Minimum heap "SIZE_FORMAT" Initial heap "
SIZE_FORMAT" Maximum heap "SIZE_FORMAT" Min alignment "SIZE_FORMAT" Max alignment "SIZE_FORMAT,
p->min_heap_byte_size(), p->initial_heap_byte_size(), p->max_heap_byte_size(),
- p->min_alignment(), p->max_alignment());
+ p->space_alignment(), p->heap_alignment());
}
WB_END
+#ifndef PRODUCT
+// Forward declaration
+void TestReservedSpace_test();
+void TestReserveMemorySpecial_test();
+void TestVirtualSpace_test();
+void TestMetaspaceAux_test();
+#endif
+
+WB_ENTRY(void, WB_RunMemoryUnitTests(JNIEnv* env, jobject o))
+#ifndef PRODUCT
+ TestReservedSpace_test();
+ TestReserveMemorySpecial_test();
+ TestVirtualSpace_test();
+ TestMetaspaceAux_test();
+#endif
+WB_END
+
+WB_ENTRY(void, WB_ReadFromNoaccessArea(JNIEnv* env, jobject o))
+ size_t granularity = os::vm_allocation_granularity();
+ ReservedHeapSpace rhs(100 * granularity, granularity, false, NULL);
+ VirtualSpace vs;
+ vs.initialize(rhs, 50 * granularity);
+
+ //Check if constraints are complied
+ if (!( UseCompressedOops && rhs.base() != NULL &&
+ Universe::narrow_oop_base() != NULL &&
+ Universe::narrow_oop_use_implicit_null_checks() )) {
+ tty->print_cr("WB_ReadFromNoaccessArea method is useless:\n "
+ "\tUseCompressedOops is %d\n"
+ "\trhs.base() is "PTR_FORMAT"\n"
+ "\tUniverse::narrow_oop_base() is "PTR_FORMAT"\n"
+ "\tUniverse::narrow_oop_use_implicit_null_checks() is %d",
+ UseCompressedOops,
+ rhs.base(),
+ Universe::narrow_oop_base(),
+ Universe::narrow_oop_use_implicit_null_checks());
+ return;
+ }
+ tty->print_cr("Reading from no access area... ");
+ tty->print_cr("*(vs.low_boundary() - rhs.noaccess_prefix() / 2 ) = %c",
+ *(vs.low_boundary() - rhs.noaccess_prefix() / 2 ));
+WB_END
+
+static jint wb_stress_virtual_space_resize(size_t reserved_space_size,
+ size_t magnitude, size_t iterations) {
+ size_t granularity = os::vm_allocation_granularity();
+ ReservedHeapSpace rhs(reserved_space_size * granularity, granularity, false, NULL);
+ VirtualSpace vs;
+ if (!vs.initialize(rhs, 0)) {
+ tty->print_cr("Failed to initialize VirtualSpace. Can't proceed.");
+ return 3;
+ }
+
+ long seed = os::random();
+ tty->print_cr("Random seed is %ld", seed);
+ os::init_random(seed);
+
+ for (size_t i = 0; i < iterations; i++) {
+
+ // Whether we will shrink or grow
+ bool shrink = os::random() % 2L == 0;
+
+ // Get random delta to resize virtual space
+ size_t delta = (size_t)os::random() % magnitude;
+
+ // If we are about to shrink virtual space below zero, then expand instead
+ if (shrink && vs.committed_size() < delta) {
+ shrink = false;
+ }
+
+ // Resizing by delta
+ if (shrink) {
+ vs.shrink_by(delta);
+ } else {
+ // If expanding fails expand_by will silently return false
+ vs.expand_by(delta, true);
+ }
+ }
+ return 0;
+}
+
+WB_ENTRY(jint, WB_StressVirtualSpaceResize(JNIEnv* env, jobject o,
+ jlong reserved_space_size, jlong magnitude, jlong iterations))
+ tty->print_cr("reservedSpaceSize="JLONG_FORMAT", magnitude="JLONG_FORMAT", "
+ "iterations="JLONG_FORMAT"\n", reserved_space_size, magnitude,
+ iterations);
+ if (reserved_space_size < 0 || magnitude < 0 || iterations < 0) {
+ tty->print_cr("One of variables printed above is negative. Can't proceed.\n");
+ return 1;
+ }
+
+ // sizeof(size_t) depends on whether OS is 32bit or 64bit. sizeof(jlong) is
+ // always 8 byte. That's why we should avoid overflow in case of 32bit platform.
+ if (sizeof(size_t) < sizeof(jlong)) {
+ jlong size_t_max_value = (jlong) SIZE_T_MAX_VALUE;
+ if (reserved_space_size > size_t_max_value || magnitude > size_t_max_value
+ || iterations > size_t_max_value) {
+ tty->print_cr("One of variables printed above overflows size_t. Can't proceed.\n");
+ return 2;
+ }
+ }
+
+ return wb_stress_virtual_space_resize((size_t) reserved_space_size,
+ (size_t) magnitude, (size_t) iterations);
+WB_END
+
#if INCLUDE_ALL_GCS
WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj))
G1CollectedHeap* g1 = G1CollectedHeap::heap();
@@ -445,6 +553,9 @@
{CC"getCompressedOopsMaxHeapSize", CC"()J",
(void*)&WB_GetCompressedOopsMaxHeapSize},
{CC"printHeapSizes", CC"()V", (void*)&WB_PrintHeapSizes },
+ {CC"runMemoryUnitTests", CC"()V", (void*)&WB_RunMemoryUnitTests},
+ {CC"readFromNoaccessArea",CC"()V", (void*)&WB_ReadFromNoaccessArea},
+ {CC"stressVirtualSpaceResize",CC"(JJJ)I", (void*)&WB_StressVirtualSpaceResize},
#if INCLUDE_ALL_GCS
{CC"g1InConcurrentMark", CC"()Z", (void*)&WB_G1InConcurrentMark},
{CC"g1IsHumongous", CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous },
--- a/hotspot/src/share/vm/runtime/arguments.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -1132,9 +1132,6 @@
Tier3InvokeNotifyFreqLog = 0;
Tier4InvocationThreshold = 0;
}
- if (FLAG_IS_DEFAULT(NmethodSweepFraction)) {
- FLAG_SET_DEFAULT(NmethodSweepFraction, 1 + ReservedCodeCacheSize / (16 * M));
- }
}
#if INCLUDE_ALL_GCS
@@ -1408,7 +1405,7 @@
// NULL page is located before the heap, we pad the NULL page to the conservative
// maximum alignment that the GC may ever impose upon the heap.
size_t displacement_due_to_null_page = align_size_up_(os::vm_page_size(),
- Arguments::conservative_max_heap_alignment());
+ _conservative_max_heap_alignment);
LP64_ONLY(return OopEncodingHeapMax - displacement_due_to_null_page);
NOT_LP64(ShouldNotReachHere(); return 0);
@@ -1505,7 +1502,7 @@
}
#endif // INCLUDE_ALL_GCS
_conservative_max_heap_alignment = MAX3(heap_alignment, os::max_page_size(),
- CollectorPolicy::compute_max_alignment());
+ CollectorPolicy::compute_heap_alignment());
}
void Arguments::set_ergonomics_flags() {
@@ -2165,6 +2162,10 @@
#if INCLUDE_ALL_GCS
if (UseG1GC) {
+ status = status && verify_percentage(G1NewSizePercent, "G1NewSizePercent");
+ status = status && verify_percentage(G1MaxNewSizePercent, "G1MaxNewSizePercent");
+ status = status && verify_interval(G1NewSizePercent, 0, G1MaxNewSizePercent, "G1NewSizePercent");
+
status = status && verify_percentage(InitiatingHeapOccupancyPercent,
"InitiatingHeapOccupancyPercent");
status = status && verify_min_value(G1RefProcDrainInterval, 1,
@@ -2681,9 +2682,10 @@
describe_range_error(errcode);
return JNI_EINVAL;
}
- FLAG_SET_CMDLINE(uintx, InitialHeapSize, (uintx)long_initial_heap_size);
+ set_min_heap_size((uintx)long_initial_heap_size);
// Currently the minimum size and the initial heap sizes are the same.
- set_min_heap_size(InitialHeapSize);
+ // Can be overridden with -XX:InitialHeapSize.
+ FLAG_SET_CMDLINE(uintx, InitialHeapSize, (uintx)long_initial_heap_size);
// -Xmx
} else if (match_option(option, "-Xmx", &tail) || match_option(option, "-XX:MaxHeapSize=", &tail)) {
julong long_max_heap_size = 0;
@@ -3643,6 +3645,11 @@
"Incompatible compilation policy selected", NULL);
}
}
+ // Set NmethodSweepFraction after the size of the code cache is adapted (in case of tiered)
+ if (FLAG_IS_DEFAULT(NmethodSweepFraction)) {
+ FLAG_SET_DEFAULT(NmethodSweepFraction, 1 + ReservedCodeCacheSize / (16 * M));
+ }
+
// Set heap size based on available physical memory
set_heap_size();
--- a/hotspot/src/share/vm/runtime/globals.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/runtime/globals.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -2954,6 +2954,9 @@
product(intx, MaxRecursiveInlineLevel, 1, \
"maximum number of nested recursive calls that are inlined") \
\
+ develop(intx, MaxForceInlineLevel, 100, \
+ "maximum number of nested @ForceInline calls that are inlined") \
+ \
product_pd(intx, InlineSmallCode, \
"Only inline already compiled methods if their code size is " \
"less than this") \
@@ -3019,9 +3022,6 @@
notproduct(intx, ZombieALotInterval, 5, \
"Number of exits until ZombieALot kicks in") \
\
- develop(bool, StressNonEntrant, false, \
- "Mark nmethods non-entrant at registration") \
- \
diagnostic(intx, MallocVerifyInterval, 0, \
"If non-zero, verify C heap after every N calls to " \
"malloc/realloc/free") \
@@ -3289,7 +3289,7 @@
"Exit the VM if we fill the code cache") \
\
product(bool, UseCodeCacheFlushing, true, \
- "Attempt to clean the code cache before shutting off compiler") \
+ "Remove cold/old nmethods from the code cache") \
\
/* interpreter debugging */ \
develop(intx, BinarySwitchThreshold, 5, \
--- a/hotspot/src/share/vm/runtime/sweeper.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/runtime/sweeper.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -112,14 +112,13 @@
if (_records != NULL) {
_records[_sweep_index].traversal = _traversals;
_records[_sweep_index].traversal_mark = nm->_stack_traversal_mark;
- _records[_sweep_index].invocation = _invocations;
+ _records[_sweep_index].invocation = _sweep_fractions_left;
_records[_sweep_index].compile_id = nm->compile_id();
_records[_sweep_index].kind = nm->compile_kind();
_records[_sweep_index].state = nm->_state;
_records[_sweep_index].vep = nm->verified_entry_point();
_records[_sweep_index].uep = nm->entry_point();
_records[_sweep_index].line = line;
-
_sweep_index = (_sweep_index + 1) % SweeperLogEntries;
}
}
@@ -127,26 +126,29 @@
#define SWEEP(nm)
#endif
-nmethod* NMethodSweeper::_current = NULL; // Current nmethod
-long NMethodSweeper::_traversals = 0; // Nof. stack traversals performed
-int NMethodSweeper::_seen = 0; // Nof. nmethods we have currently processed in current pass of CodeCache
-int NMethodSweeper::_flushed_count = 0; // Nof. nmethods flushed in current sweep
-int NMethodSweeper::_zombified_count = 0; // Nof. nmethods made zombie in current sweep
-int NMethodSweeper::_marked_count = 0; // Nof. nmethods marked for reclaim in current sweep
-
-volatile int NMethodSweeper::_invocations = 0; // Nof. invocations left until we are completed with this pass
-volatile int NMethodSweeper::_sweep_started = 0; // Whether a sweep is in progress.
+nmethod* NMethodSweeper::_current = NULL; // Current nmethod
+long NMethodSweeper::_traversals = 0; // Stack scan count, also sweep ID.
+long NMethodSweeper::_time_counter = 0; // Virtual time used to periodically invoke sweeper
+long NMethodSweeper::_last_sweep = 0; // Value of _time_counter when the last sweep happened
+int NMethodSweeper::_seen = 0; // Nof. nmethod we have currently processed in current pass of CodeCache
+int NMethodSweeper::_flushed_count = 0; // Nof. nmethods flushed in current sweep
+int NMethodSweeper::_zombified_count = 0; // Nof. nmethods made zombie in current sweep
+int NMethodSweeper::_marked_for_reclamation_count = 0; // Nof. nmethods marked for reclaim in current sweep
-jint NMethodSweeper::_locked_seen = 0;
-jint NMethodSweeper::_not_entrant_seen_on_stack = 0;
-bool NMethodSweeper::_request_mark_phase = false;
+volatile bool NMethodSweeper::_should_sweep = true; // Indicates if we should invoke the sweeper
+volatile int NMethodSweeper::_sweep_fractions_left = 0; // Nof. invocations left until we are completed with this pass
+volatile int NMethodSweeper::_sweep_started = 0; // Flag to control conc sweeper
+volatile int NMethodSweeper::_bytes_changed = 0; // Counts the total nmethod size if the nmethod changed from:
+ // 1) alive -> not_entrant
+ // 2) not_entrant -> zombie
+ // 3) zombie -> marked_for_reclamation
-int NMethodSweeper::_total_nof_methods_reclaimed = 0;
-jlong NMethodSweeper::_total_time_sweeping = 0;
-jlong NMethodSweeper::_total_time_this_sweep = 0;
-jlong NMethodSweeper::_peak_sweep_time = 0;
-jlong NMethodSweeper::_peak_sweep_fraction_time = 0;
-int NMethodSweeper::_hotness_counter_reset_val = 0;
+int NMethodSweeper::_total_nof_methods_reclaimed = 0; // Accumulated nof methods flushed
+jlong NMethodSweeper::_total_time_sweeping = 0; // Accumulated time sweeping
+jlong NMethodSweeper::_total_time_this_sweep = 0; // Total time this sweep
+jlong NMethodSweeper::_peak_sweep_time = 0; // Peak time for a full sweep
+jlong NMethodSweeper::_peak_sweep_fraction_time = 0; // Peak time sweeping one fraction
+int NMethodSweeper::_hotness_counter_reset_val = 0;
class MarkActivationClosure: public CodeBlobClosure {
@@ -197,13 +199,16 @@
return;
}
+ // Increase time so that we can estimate when to invoke the sweeper again.
+ _time_counter++;
+
// Check for restart
assert(CodeCache::find_blob_unsafe(_current) == _current, "Sweeper nmethod cached state invalid");
- if (!sweep_in_progress() && need_marking_phase()) {
- _seen = 0;
- _invocations = NmethodSweepFraction;
- _current = CodeCache::first_nmethod();
- _traversals += 1;
+ if (!sweep_in_progress()) {
+ _seen = 0;
+ _sweep_fractions_left = NmethodSweepFraction;
+ _current = CodeCache::first_nmethod();
+ _traversals += 1;
_total_time_this_sweep = 0;
if (PrintMethodFlushing) {
@@ -211,10 +216,6 @@
}
Threads::nmethods_do(&mark_activation_closure);
- // reset the flags since we started a scan from the beginning.
- reset_nmethod_marking();
- _locked_seen = 0;
- _not_entrant_seen_on_stack = 0;
} else {
// Only set hotness counter
Threads::nmethods_do(&set_hotness_closure);
@@ -222,14 +223,48 @@
OrderAccess::storestore();
}
-
+/**
+ * This function invokes the sweeper if at least one of the three conditions is met:
+ * (1) The code cache is getting full
+ * (2) There are sufficient state changes in/since the last sweep.
+ * (3) We have not been sweeping for 'some time'
+ */
void NMethodSweeper::possibly_sweep() {
assert(JavaThread::current()->thread_state() == _thread_in_vm, "must run in vm mode");
if (!MethodFlushing || !sweep_in_progress()) {
return;
}
- if (_invocations > 0) {
+ // If there was no state change while nmethod sweeping, 'should_sweep' will be false.
+ // This is one of the two places where should_sweep can be set to true. The general
+ // idea is as follows: If there is enough free space in the code cache, there is no
+ // need to invoke the sweeper. The following formula (which determines whether to invoke
+ // the sweeper or not) depends on the assumption that for larger ReservedCodeCacheSizes
+ // we need less frequent sweeps than for smaller ReservedCodecCacheSizes. Furthermore,
+ // the formula considers how much space in the code cache is currently used. Here are
+ // some examples that will (hopefully) help in understanding.
+ //
+ // Small ReservedCodeCacheSizes: (e.g., < 16M) We invoke the sweeper every time, since
+ // the result of the division is 0. This
+ // keeps the used code cache size small
+ // (important for embedded Java)
+ // Large ReservedCodeCacheSize : (e.g., 256M + code cache is 10% full). The formula
+ // computes: (256 / 16) - 1 = 15
+ // As a result, we invoke the sweeper after
+ // 15 invocations of 'mark_active_nmethods.
+ // Large ReservedCodeCacheSize: (e.g., 256M + code Cache is 90% full). The formula
+ // computes: (256 / 16) - 10 = 6.
+ if (!_should_sweep) {
+ int time_since_last_sweep = _time_counter - _last_sweep;
+ double wait_until_next_sweep = (ReservedCodeCacheSize / (16 * M)) - time_since_last_sweep -
+ CodeCache::reverse_free_ratio();
+
+ if ((wait_until_next_sweep <= 0.0) || !CompileBroker::should_compile_new_jobs()) {
+ _should_sweep = true;
+ }
+ }
+
+ if (_should_sweep && _sweep_fractions_left > 0) {
// Only one thread at a time will sweep
jint old = Atomic::cmpxchg( 1, &_sweep_started, 0 );
if (old != 0) {
@@ -242,31 +277,46 @@
memset(_records, 0, sizeof(SweeperRecord) * SweeperLogEntries);
}
#endif
- if (_invocations > 0) {
+
+ if (_sweep_fractions_left > 0) {
sweep_code_cache();
- _invocations--;
+ _sweep_fractions_left--;
+ }
+
+ // We are done with sweeping the code cache once.
+ if (_sweep_fractions_left == 0) {
+ _last_sweep = _time_counter;
+ // Reset flag; temporarily disables sweeper
+ _should_sweep = false;
+ // If there was enough state change, 'possibly_enable_sweeper()'
+ // sets '_should_sweep' to true
+ possibly_enable_sweeper();
+ // Reset _bytes_changed only if there was enough state change. _bytes_changed
+ // can further increase by calls to 'report_state_change'.
+ if (_should_sweep) {
+ _bytes_changed = 0;
+ }
}
_sweep_started = 0;
}
}
void NMethodSweeper::sweep_code_cache() {
-
jlong sweep_start_counter = os::elapsed_counter();
- _flushed_count = 0;
- _zombified_count = 0;
- _marked_count = 0;
+ _flushed_count = 0;
+ _zombified_count = 0;
+ _marked_for_reclamation_count = 0;
if (PrintMethodFlushing && Verbose) {
- tty->print_cr("### Sweep at %d out of %d. Invocations left: %d", _seen, CodeCache::nof_nmethods(), _invocations);
+ tty->print_cr("### Sweep at %d out of %d. Invocations left: %d", _seen, CodeCache::nof_nmethods(), _sweep_fractions_left);
}
if (!CompileBroker::should_compile_new_jobs()) {
// If we have turned off compilations we might as well do full sweeps
// in order to reach the clean state faster. Otherwise the sleeping compiler
// threads will slow down sweeping.
- _invocations = 1;
+ _sweep_fractions_left = 1;
}
// We want to visit all nmethods after NmethodSweepFraction
@@ -274,7 +324,7 @@
// remaining number of invocations. This is only an estimate since
// the number of nmethods changes during the sweep so the final
// stage must iterate until it there are no more nmethods.
- int todo = (CodeCache::nof_nmethods() - _seen) / _invocations;
+ int todo = (CodeCache::nof_nmethods() - _seen) / _sweep_fractions_left;
int swept_count = 0;
@@ -286,11 +336,11 @@
MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
// The last invocation iterates until there are no more nmethods
- for (int i = 0; (i < todo || _invocations == 1) && _current != NULL; i++) {
+ for (int i = 0; (i < todo || _sweep_fractions_left == 1) && _current != NULL; i++) {
swept_count++;
if (SafepointSynchronize::is_synchronizing()) { // Safepoint request
if (PrintMethodFlushing && Verbose) {
- tty->print_cr("### Sweep at %d out of %d, invocation: %d, yielding to safepoint", _seen, CodeCache::nof_nmethods(), _invocations);
+ tty->print_cr("### Sweep at %d out of %d, invocation: %d, yielding to safepoint", _seen, CodeCache::nof_nmethods(), _sweep_fractions_left);
}
MutexUnlockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
@@ -314,19 +364,7 @@
}
}
- assert(_invocations > 1 || _current == NULL, "must have scanned the whole cache");
-
- if (!sweep_in_progress() && !need_marking_phase() && (_locked_seen || _not_entrant_seen_on_stack)) {
- // we've completed a scan without making progress but there were
- // nmethods we were unable to process either because they were
- // locked or were still on stack. We don't have to aggressively
- // clean them up so just stop scanning. We could scan once more
- // but that complicates the control logic and it's unlikely to
- // matter much.
- if (PrintMethodFlushing) {
- tty->print_cr("### Couldn't make progress on some nmethods so stopping sweep");
- }
- }
+ assert(_sweep_fractions_left > 1 || _current == NULL, "must have scanned the whole cache");
jlong sweep_end_counter = os::elapsed_counter();
jlong sweep_time = sweep_end_counter - sweep_start_counter;
@@ -340,21 +378,21 @@
event.set_starttime(sweep_start_counter);
event.set_endtime(sweep_end_counter);
event.set_sweepIndex(_traversals);
- event.set_sweepFractionIndex(NmethodSweepFraction - _invocations + 1);
+ event.set_sweepFractionIndex(NmethodSweepFraction - _sweep_fractions_left + 1);
event.set_sweptCount(swept_count);
event.set_flushedCount(_flushed_count);
- event.set_markedCount(_marked_count);
+ event.set_markedCount(_marked_for_reclamation_count);
event.set_zombifiedCount(_zombified_count);
event.commit();
}
#ifdef ASSERT
if(PrintMethodFlushing) {
- tty->print_cr("### sweeper: sweep time(%d): " INT64_FORMAT, _invocations, (jlong)sweep_time);
+ tty->print_cr("### sweeper: sweep time(%d): " INT64_FORMAT, _sweep_fractions_left, (jlong)sweep_time);
}
#endif
- if (_invocations == 1) {
+ if (_sweep_fractions_left == 1) {
_peak_sweep_time = MAX2(_peak_sweep_time, _total_time_this_sweep);
log_sweep("finished");
}
@@ -368,12 +406,37 @@
// it only makes sense to re-enable compilation if we have actually freed memory.
// Note that typically several kB are released for sweeping 16MB of the code
// cache. As a result, 'freed_memory' > 0 to restart the compiler.
- if (UseCodeCacheFlushing && (!CompileBroker::should_compile_new_jobs() && (freed_memory > 0))) {
+ if (!CompileBroker::should_compile_new_jobs() && (freed_memory > 0)) {
CompileBroker::set_should_compile_new_jobs(CompileBroker::run_compilation);
log_sweep("restart_compiler");
}
}
+/**
+ * This function updates the sweeper statistics that keep track of nmethods
+ * state changes. If there is 'enough' state change, the sweeper is invoked
+ * as soon as possible. There can be data races on _bytes_changed. The data
+ * races are benign, since it does not matter if we loose a couple of bytes.
+ * In the worst case we call the sweeper a little later. Also, we are guaranteed
+ * to invoke the sweeper if the code cache gets full.
+ */
+void NMethodSweeper::report_state_change(nmethod* nm) {
+ _bytes_changed += nm->total_size();
+ possibly_enable_sweeper();
+}
+
+/**
+ * Function determines if there was 'enough' state change in the code cache to invoke
+ * the sweeper again. Currently, we determine 'enough' as more than 1% state change in
+ * the code cache since the last sweep.
+ */
+void NMethodSweeper::possibly_enable_sweeper() {
+ double percent_changed = ((double)_bytes_changed / (double)ReservedCodeCacheSize) * 100;
+ if (percent_changed > 1.0) {
+ _should_sweep = true;
+ }
+}
+
class NMethodMarker: public StackObj {
private:
CompilerThread* _thread;
@@ -424,9 +487,6 @@
MutexLocker cl(CompiledIC_lock);
nm->cleanup_inline_caches();
SWEEP(nm);
- } else {
- _locked_seen++;
- SWEEP(nm);
}
return freed_memory;
}
@@ -448,8 +508,9 @@
tty->print_cr("### Nmethod %3d/" PTR_FORMAT " (zombie) being marked for reclamation", nm->compile_id(), nm);
}
nm->mark_for_reclamation();
- request_nmethod_marking();
- _marked_count++;
+ // Keep track of code cache state change
+ _bytes_changed += nm->total_size();
+ _marked_for_reclamation_count++;
SWEEP(nm);
}
} else if (nm->is_not_entrant()) {
@@ -459,18 +520,14 @@
if (PrintMethodFlushing && Verbose) {
tty->print_cr("### Nmethod %3d/" PTR_FORMAT " (not entrant) being made zombie", nm->compile_id(), nm);
}
+ // Code cache state change is tracked in make_zombie()
nm->make_zombie();
- request_nmethod_marking();
_zombified_count++;
SWEEP(nm);
} else {
// Still alive, clean up its inline caches
MutexLocker cl(CompiledIC_lock);
nm->cleanup_inline_caches();
- // we coudn't transition this nmethod so don't immediately
- // request a rescan. If this method stays on the stack for a
- // long time we don't want to keep rescanning the code cache.
- _not_entrant_seen_on_stack++;
SWEEP(nm);
}
} else if (nm->is_unloaded()) {
@@ -485,8 +542,8 @@
release_nmethod(nm);
_flushed_count++;
} else {
+ // Code cache state change is tracked in make_zombie()
nm->make_zombie();
- request_nmethod_marking();
_zombified_count++;
SWEEP(nm);
}
@@ -514,7 +571,11 @@
// The second condition ensures that methods are not immediately made not-entrant
// after compilation.
nm->make_not_entrant();
- request_nmethod_marking();
+ // Code cache state change is tracked in make_not_entrant()
+ if (PrintMethodFlushing && Verbose) {
+ tty->print_cr("### Nmethod %d/" PTR_FORMAT "made not-entrant: hotness counter %d/%d threshold %f",
+ nm->compile_id(), nm, nm->hotness_counter(), reset_val, threshold);
+ }
}
}
}
--- a/hotspot/src/share/vm/runtime/sweeper.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/runtime/sweeper.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -53,22 +53,22 @@
// is full.
class NMethodSweeper : public AllStatic {
- static long _traversals; // Stack scan count, also sweep ID.
- static nmethod* _current; // Current nmethod
- static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache
- static int _flushed_count; // Nof. nmethods flushed in current sweep
- static int _zombified_count; // Nof. nmethods made zombie in current sweep
- static int _marked_count; // Nof. nmethods marked for reclaim in current sweep
+ static long _traversals; // Stack scan count, also sweep ID.
+ static long _time_counter; // Virtual time used to periodically invoke sweeper
+ static long _last_sweep; // Value of _time_counter when the last sweep happened
+ static nmethod* _current; // Current nmethod
+ static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache
+ static int _flushed_count; // Nof. nmethods flushed in current sweep
+ static int _zombified_count; // Nof. nmethods made zombie in current sweep
+ static int _marked_for_reclamation_count; // Nof. nmethods marked for reclaim in current sweep
- static volatile int _invocations; // No. of invocations left until we are completed with this pass
- static volatile int _sweep_started; // Flag to control conc sweeper
-
- //The following are reset in mark_active_nmethods and synchronized by the safepoint
- static bool _request_mark_phase; // Indicates that a change has happend and we need another mark pahse,
- // always checked and reset at a safepoint so memory will be in sync.
- static int _locked_seen; // Number of locked nmethods encountered during the scan
- static int _not_entrant_seen_on_stack; // Number of not entrant nmethod were are still on stack
-
+ static volatile int _sweep_fractions_left; // Nof. invocations left until we are completed with this pass
+ static volatile int _sweep_started; // Flag to control conc sweeper
+ static volatile bool _should_sweep; // Indicates if we should invoke the sweeper
+ static volatile int _bytes_changed; // Counts the total nmethod size if the nmethod changed from:
+ // 1) alive -> not_entrant
+ // 2) not_entrant -> zombie
+ // 3) zombie -> marked_for_reclamation
// Stat counters
static int _total_nof_methods_reclaimed; // Accumulated nof methods flushed
static jlong _total_time_sweeping; // Accumulated time sweeping
@@ -81,9 +81,6 @@
static bool sweep_in_progress();
static void sweep_code_cache();
- static void request_nmethod_marking() { _request_mark_phase = true; }
- static void reset_nmethod_marking() { _request_mark_phase = false; }
- static bool need_marking_phase() { return _request_mark_phase; }
static int _hotness_counter_reset_val;
@@ -109,13 +106,8 @@
static int sort_nmethods_by_hotness(nmethod** nm1, nmethod** nm2);
static int hotness_counter_reset_val();
-
- static void notify() {
- // Request a new sweep of the code cache from the beginning. No
- // need to synchronize the setting of this flag since it only
- // changes to false at safepoint so we can never overwrite it with false.
- request_nmethod_marking();
- }
+ static void report_state_change(nmethod* nm);
+ static void possibly_enable_sweeper();
};
#endif // SHARE_VM_RUNTIME_SWEEPER_HPP
--- a/hotspot/src/share/vm/utilities/globalDefinitions.hpp Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/src/share/vm/utilities/globalDefinitions.hpp Wed Jul 05 19:22:42 2017 +0200
@@ -456,6 +456,13 @@
return (void*) align_size_up_((uintptr_t)addr, size);
}
+// Align down with a lower bound. If the aligning results in 0, return 'alignment'.
+
+inline size_t align_size_down_bounded(size_t size, size_t alignment) {
+ size_t aligned_size = align_size_down_(size, alignment);
+ return aligned_size > 0 ? aligned_size : alignment;
+}
+
// Clamp an address to be within a specific page
// 1. If addr is on the page it is returned as is
// 2. If addr is above the page_address the start of the *next* page will be returned
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/GVNTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8028207
+ * @summary Verify that GVN doesn't mess up the two addExacts
+ * @compile GVNTest.java
+ * @run main GVNTest
+ *
+ */
+
+public class GVNTest {
+ public static int result = 0;
+ public static int value = 93;
+ public static void main(String[] args) {
+ for (int i = 0; i < 50000; ++i) {
+ result = runTest(value + i);
+ result = runTest(value + i);
+ result = runTest(value + i);
+ result = runTest(value + i);
+ result = runTest(value + i);
+ }
+ }
+
+ public static int runTest(int value) {
+ int v = value + value;
+ int sum = 0;
+ if (v < 4032) {
+ for (int i = 0; i < 1023; ++i) {
+ sum += Math.addExact(value, value);
+ }
+ } else {
+ for (int i = 0; i < 321; ++i) {
+ sum += Math.addExact(value, value);
+ }
+ }
+ return sum + v;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/intrinsics/mathexact/SplitThruPhiTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8028198
+ * @summary Verify that split through phi does the right thing
+ * @compile SplitThruPhiTest.java
+ * @run main SplitThruPhiTest
+ *
+ */
+
+public class SplitThruPhiTest {
+ public static volatile int value = 19;
+ public static int store = 0;
+ public static void main(String[] args) {
+ for (int i = 0; i < 150000; ++i) {
+ store = runTest(value);
+ }
+ }
+
+ public static int runTest(int val) {
+ int result = Math.addExact(val, 1);
+ int total = 0;
+ for (int i = val; i < 200; i = Math.addExact(i, 1)) {
+ total += i;
+ }
+ return total;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/profiling/TestUnexpectedProfilingMismatch.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8027631
+ * @summary profiling of arguments at calls cannot rely on signature of callee for types
+ * @run main/othervm -XX:-BackgroundCompilation -XX:TieredStopAtLevel=3 -XX:TypeProfileLevel=111 -XX:Tier3InvocationThreshold=200 -XX:Tier0InvokeNotifyFreqLog=7 TestUnexpectedProfilingMismatch
+ *
+ */
+
+import java.lang.invoke.*;
+
+public class TestUnexpectedProfilingMismatch {
+
+ static class A {
+ }
+
+ static class B {
+ }
+
+ static void mA(A a) {
+ }
+
+ static void mB(B b) {
+ }
+
+ static final MethodHandle mhA;
+ static final MethodHandle mhB;
+ static {
+ MethodHandles.Lookup lookup = MethodHandles.lookup();
+ MethodType mt = MethodType.methodType(void.class, A.class);
+ MethodHandle res = null;
+ try {
+ res = lookup.findStatic(TestUnexpectedProfilingMismatch.class, "mA", mt);
+ } catch(NoSuchMethodException ex) {
+ } catch(IllegalAccessException ex) {
+ }
+ mhA = res;
+ mt = MethodType.methodType(void.class, B.class);
+ try {
+ res = lookup.findStatic(TestUnexpectedProfilingMismatch.class, "mB", mt);
+ } catch(NoSuchMethodException ex) {
+ } catch(IllegalAccessException ex) {
+ }
+ mhB = res;
+ }
+
+ void m1(A a, boolean doit) throws Throwable {
+ if (doit) {
+ mhA.invoke(a);
+ }
+ }
+
+ void m2(B b) throws Throwable {
+ mhB.invoke(b);
+ }
+
+ static public void main(String[] args) {
+ TestUnexpectedProfilingMismatch tih = new TestUnexpectedProfilingMismatch();
+ A a = new A();
+ B b = new B();
+ try {
+ for (int i = 0; i < 256 - 1; i++) {
+ tih.m1(a, true);
+ }
+ // Will trigger the compilation but will also run once
+ // more interpreted with a non null MDO which it will
+ // update. Make it skip the body of the method.
+ tih.m1(a, false);
+ // Compile this one as well and do the profiling
+ for (int i = 0; i < 256; i++) {
+ tih.m2(b);
+ }
+ // Will run and see a conflict
+ tih.m1(a, true);
+ } catch(Throwable ex) {
+ ex.printStackTrace();
+ }
+ System.out.println("TEST PASSED");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/profiling/unloadingconflict/B.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+public class B {
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/profiling/unloadingconflict/TestProfileConflictClassUnloading.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8027572
+ * @summary class unloading resets profile, method compiled after the profile is first set and before class loading sets unknown bit with not recorded class
+ * @build B
+ * @run main/othervm -XX:TypeProfileLevel=222 -XX:-BackgroundCompilation TestProfileConflictClassUnloading
+ *
+ */
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.nio.file.Paths;
+
+public class TestProfileConflictClassUnloading {
+ static class A {
+ }
+
+
+ static void m1(Object o) {
+ }
+
+ static void m2(Object o) {
+ m1(o);
+ }
+
+ static void m3(A a, boolean do_call) {
+ if (!do_call) {
+ return;
+ }
+ m2(a);
+ }
+
+ public static ClassLoader newClassLoader() {
+ try {
+ return new URLClassLoader(new URL[] {
+ Paths.get(System.getProperty("test.classes",".")).toUri().toURL(),
+ }, null);
+ } catch (MalformedURLException e){
+ throw new RuntimeException("Unexpected URL conversion failure", e);
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ ClassLoader loader = newClassLoader();
+ Object o = loader.loadClass("B").newInstance();
+ // collect conflicting profiles
+ for (int i = 0; i < 5000; i++) {
+ m2(o);
+ }
+ // prepare for conflict
+ A a = new A();
+ for (int i = 0; i < 5000; i++) {
+ m3(a, false);
+ }
+ // unload class in profile
+ o = null;
+ loader = null;
+ System.gc();
+ // record the conflict
+ m3(a, true);
+ // trigger another GC
+ System.gc();
+ }
+}
--- a/hotspot/test/gc/arguments/TestMaxHeapSizeTools.java Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/test/gc/arguments/TestMaxHeapSizeTools.java Wed Jul 05 19:22:42 2017 +0200
@@ -64,32 +64,29 @@
long newPlusOldSize = values[0] + values[1];
long smallValue = newPlusOldSize / 2;
long largeValue = newPlusOldSize * 2;
+ long maxHeapSize = largeValue + (2 * 1024 * 1024);
// -Xms is not set
- checkErgonomics(new String[] { gcflag, "-Xmx16M" }, values, -1, -1);
- checkErgonomics(new String[] { gcflag, "-Xmx16M", "-XX:InitialHeapSize=" + smallValue }, values, smallValue, smallValue);
- checkErgonomics(new String[] { gcflag, "-Xmx16M", "-XX:InitialHeapSize=" + largeValue }, values, -1, largeValue);
- checkErgonomics(new String[] { gcflag, "-Xmx16M", "-XX:InitialHeapSize=0" }, values, -1, -1);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize }, values, -1, -1);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-XX:InitialHeapSize=" + smallValue }, values, -1, smallValue);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-XX:InitialHeapSize=" + largeValue }, values, -1, largeValue);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-XX:InitialHeapSize=0" }, values, -1, -1);
// -Xms is set to zero
- checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms0" }, values, -1, -1);
- checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms0", "-XX:InitialHeapSize=" + smallValue }, values, smallValue, smallValue);
- checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms0", "-XX:InitialHeapSize=" + largeValue }, values, -1, largeValue);
- checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms0", "-XX:InitialHeapSize=0" }, values, -1, -1);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms0" }, values, -1, -1);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms0", "-XX:InitialHeapSize=" + smallValue }, values, -1, smallValue);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms0", "-XX:InitialHeapSize=" + largeValue }, values, -1, largeValue);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms0", "-XX:InitialHeapSize=0" }, values, -1, -1);
// -Xms is set to small value
- checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + smallValue }, values, -1, -1);
- checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + smallValue, "-XX:InitialHeapSize=" + smallValue }, values, smallValue, smallValue);
- checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + smallValue, "-XX:InitialHeapSize=" + largeValue }, values, smallValue, largeValue);
- checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + smallValue, "-XX:InitialHeapSize=0" }, values, smallValue, -1);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms" + smallValue }, values, -1, -1);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms" + smallValue, "-XX:InitialHeapSize=" + smallValue }, values, smallValue, smallValue);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms" + smallValue, "-XX:InitialHeapSize=" + largeValue }, values, smallValue, largeValue);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms" + smallValue, "-XX:InitialHeapSize=0" }, values, smallValue, -1);
// -Xms is set to large value
- checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + largeValue }, values, largeValue, largeValue);
- // the next case has already been checked elsewhere and gives an error
- // checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + largeValue, "-XX:InitialHeapSize=" + smallValue }, values, smallValue, smallValue);
- // the next case has already been checked elsewhere too
- // checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + largeValue, "-XX:InitialHeapSize=" + largeValue }, values, values[0], largeValue);
- checkErgonomics(new String[] { gcflag, "-Xmx16M", "-Xms" + largeValue, "-XX:InitialHeapSize=0" }, values, largeValue, -1);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms" + largeValue }, values, largeValue, largeValue);
+ checkErgonomics(new String[] { gcflag, "-Xmx" + maxHeapSize, "-Xms" + largeValue, "-XX:InitialHeapSize=0" }, values, largeValue, -1);
}
private static long align_up(long value, long alignment) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/gc/arguments/TestMaxNewSize.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,122 @@
+/*
+* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* This code is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License version 2 only, as
+* published by the Free Software Foundation.
+*
+* This code is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+* version 2 for more details (a copy is included in the LICENSE file that
+* accompanied this code).
+*
+* You should have received a copy of the GNU General Public License version
+* 2 along with this work; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+*
+* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+* or visit www.oracle.com if you need additional information or have any
+* questions.
+*/
+
+/*
+ * @test TestMaxNewSize
+ * @key gc
+ * @bug 7057939
+ * @summary Make sure that MaxNewSize always has a useful value after argument
+ * processing.
+ * @library /testlibrary
+ * @build TestMaxNewSize
+ * @run main TestMaxNewSize -XX:+UseSerialGC
+ * @run main TestMaxNewSize -XX:+UseParallelGC
+ * @run main TestMaxNewSize -XX:+UseConcMarkSweepGC
+ * @run main TestMaxNewSize -XX:+UseG1GC
+ * @author thomas.schatzl@oracle.com, jesper.wilhelmsson@oracle.com
+ */
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import java.math.BigInteger;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import com.oracle.java.testlibrary.*;
+
+public class TestMaxNewSize {
+
+ private static void checkMaxNewSize(String[] flags, int heapsize) throws Exception {
+ BigInteger actual = new BigInteger(getMaxNewSize(flags));
+ System.out.println(actual);
+ if (actual.compareTo(new BigInteger((new Long(heapsize)).toString())) == 1) {
+ throw new RuntimeException("MaxNewSize value set to \"" + actual +
+ "\", expected otherwise when running with the following flags: " + Arrays.asList(flags).toString());
+ }
+ }
+
+ private static void checkIncompatibleNewSize(String[] flags) throws Exception {
+ ArrayList<String> finalargs = new ArrayList<String>();
+ finalargs.addAll(Arrays.asList(flags));
+ finalargs.add("-version");
+
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(finalargs.toArray(new String[0]));
+ OutputAnalyzer output = new OutputAnalyzer(pb.start());
+ output.shouldContain("Initial young gen size set larger than the maximum young gen size");
+ }
+
+ private static boolean isRunningG1(String[] args) {
+ for (int i = 0; i < args.length; i++) {
+ if (args[i].contains("+UseG1GC")) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static String getMaxNewSize(String[] flags) throws Exception {
+ ArrayList<String> finalargs = new ArrayList<String>();
+ finalargs.addAll(Arrays.asList(flags));
+ if (isRunningG1(flags)) {
+ finalargs.add("-XX:G1HeapRegionSize=1M");
+ }
+ finalargs.add("-XX:+PrintFlagsFinal");
+ finalargs.add("-version");
+
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(finalargs.toArray(new String[0]));
+ OutputAnalyzer output = new OutputAnalyzer(pb.start());
+ output.shouldHaveExitValue(0);
+ String stdout = output.getStdout();
+ //System.out.println(stdout);
+ return getFlagValue("MaxNewSize", stdout);
+ }
+
+ private static String getFlagValue(String flag, String where) {
+ Matcher m = Pattern.compile(flag + "\\s+:?=\\s+\\d+").matcher(where);
+ if (!m.find()) {
+ throw new RuntimeException("Could not find value for flag " + flag + " in output string");
+ }
+ String match = m.group();
+ return match.substring(match.lastIndexOf(" ") + 1, match.length());
+ }
+
+ public static void main(String args[]) throws Exception {
+ String gcName = args[0];
+ final int M32 = 32 * 1024 * 1024;
+ final int M64 = 64 * 1024 * 1024;
+ final int M96 = 96 * 1024 * 1024;
+ final int M128 = 128 * 1024 * 1024;
+ checkMaxNewSize(new String[] { gcName, "-Xmx128M" }, M128);
+ checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:NewRatio=5" }, M128);
+ checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:NewSize=32M" }, M128);
+ checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:OldSize=96M" }, M128);
+ checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:MaxNewSize=32M" }, M32);
+ checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:NewSize=32M", "-XX:MaxNewSize=32M" }, M32);
+ checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:NewRatio=6", "-XX:MaxNewSize=32M" }, M32);
+ checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-Xms96M" }, M128);
+ checkMaxNewSize(new String[] { gcName, "-Xmx96M", "-Xms96M" }, M96);
+ checkMaxNewSize(new String[] { gcName, "-XX:NewSize=128M", "-XX:MaxNewSize=50M"}, M128);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/gc/g1/TestHumongousCodeCacheRoots.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,143 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @key regression
+ * @key gc
+ * @bug 8027756
+ * @library /testlibrary /testlibrary/whitebox
+ * @build TestHumongousCodeCacheRoots
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @summary Humongous objects may have references from the code cache
+ * @run main TestHumongousCodeCacheRoots
+*/
+
+import com.oracle.java.testlibrary.*;
+import sun.hotspot.WhiteBox;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+class TestHumongousCodeCacheRootsHelper {
+
+ static final int n = 1000000;
+ static final int[] AA = new int[n];
+ static final int[] BB = new int[n];
+
+ public static void main(String args[]) throws Exception {
+ // do some work so that the compiler compiles this method, inlining the
+ // reference to the integer array (which is a humonguous object) into
+ // the code cache.
+ for(int i = 0; i < n; i++) {
+ AA[i] = 0;
+ BB[i] = 0;
+ }
+ // trigger a GC that checks that the verification code allows humongous
+ // objects with code cache roots; objects should be all live here.
+ System.gc();
+
+ // deoptimize everyhing: this should make all compiled code zombies.
+ WhiteBox wb = WhiteBox.getWhiteBox();
+ wb.deoptimizeAll();
+
+ // trigger a GC that checks that the verification code allows humongous
+ // objects with code cache roots; objects should be all live here.
+ System.gc();
+
+ // wait a little for the code cache sweeper to try to clean up zombie nmethods
+ // and unregister the code roots.
+ try { Thread.sleep(5000); } catch (InterruptedException ex) { }
+
+ // do some work on the arrays to make sure that they need to be live after the GCs
+ for(int i = 0; i < n; i++) {
+ AA[i] = 1;
+ BB[i] = 10;
+ }
+
+ System.out.println();
+ }
+}
+
+public class TestHumongousCodeCacheRoots {
+
+ /**
+ * Executes a class in a new VM process with the given parameters.
+ * @param vmargs Arguments to the VM to run
+ * @param classname Name of the class to run
+ * @param arguments Arguments to the class
+ * @param useTestDotJavaDotOpts Use test.java.opts as part of the VM argument string
+ * @return The OutputAnalyzer with the results for the invocation.
+ */
+ public static OutputAnalyzer runWhiteBoxTest(String[] vmargs, String classname, String[] arguments, boolean useTestDotJavaDotOpts) throws Exception {
+ ArrayList<String> finalargs = new ArrayList<String>();
+
+ String[] whiteboxOpts = new String[] {
+ "-Xbootclasspath/a:.",
+ "-XX:+UnlockDiagnosticVMOptions", "-XX:+WhiteBoxAPI",
+ "-cp", System.getProperty("java.class.path"),
+ };
+
+ if (useTestDotJavaDotOpts) {
+ // System.getProperty("test.java.opts") is '' if no options is set,
+ // we need to skip such a result
+ String[] externalVMOpts = new String[0];
+ if (System.getProperty("test.java.opts") != null && System.getProperty("test.java.opts").length() != 0) {
+ externalVMOpts = System.getProperty("test.java.opts").split(" ");
+ }
+ finalargs.addAll(Arrays.asList(externalVMOpts));
+ }
+
+ finalargs.addAll(Arrays.asList(vmargs));
+ finalargs.addAll(Arrays.asList(whiteboxOpts));
+ finalargs.add(classname);
+ finalargs.addAll(Arrays.asList(arguments));
+
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(finalargs.toArray(new String[0]));
+ OutputAnalyzer output = new OutputAnalyzer(pb.start());
+ output.shouldHaveExitValue(0);
+
+ return output;
+ }
+
+ public static void runTest(String compiler, String[] other) throws Exception {
+ ArrayList<String> joined = new ArrayList<String>();
+ joined.add(compiler);
+ joined.addAll(Arrays.asList(other));
+ runWhiteBoxTest(joined.toArray(new String[0]), TestHumongousCodeCacheRootsHelper.class.getName(),
+ new String[] {}, false);
+ }
+
+ public static void main(String[] args) throws Exception {
+ final String[] baseArguments = new String[] {
+ "-XX:+UseG1GC", "-XX:G1HeapRegionSize=1M", "-Xmx100M", // make sure we get a humongous region
+ "-XX:+UnlockDiagnosticVMOptions",
+ "-XX:InitiatingHeapOccupancyPercent=1", // strong code root marking
+ "-XX:+G1VerifyHeapRegionCodeRoots", "-XX:+VerifyAfterGC", // make sure that verification is run
+ "-XX:NmethodSweepFraction=1", "-XX:NmethodSweepCheckInterval=1", // make the code cache sweep more predictable
+ };
+ runTest("-client", baseArguments);
+ runTest("-server", baseArguments);
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/memory/ReadFromNoaccessArea.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @summary Test that touching noaccess area in class ReservedHeapSpace results in SIGSEGV/ACCESS_VIOLATION
+ * @library /testlibrary /testlibrary/whitebox
+ * @build ReadFromNoaccessArea
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main ReadFromNoaccessArea
+ */
+
+import com.oracle.java.testlibrary.*;
+import sun.hotspot.WhiteBox;
+
+public class ReadFromNoaccessArea {
+
+ public static void main(String args[]) throws Exception {
+ if (!Platform.is64bit()) {
+ System.out.println("ReadFromNoaccessArea tests is useful only on 64bit architecture. Passing silently.");
+ return;
+ }
+
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+ "-Xbootclasspath/a:.",
+ "-XX:+UnlockDiagnosticVMOptions",
+ "-XX:+WhiteBoxAPI",
+ "-XX:+UseCompressedOops",
+ "-XX:HeapBaseMinAddress=33G",
+ DummyClassWithMainTryingToReadFromNoaccessArea.class.getName());
+
+ OutputAnalyzer output = new OutputAnalyzer(pb.start());
+ System.out.println("******* Printing stdout for analysis in case of failure *******");
+ System.out.println(output.getStdout());
+ System.out.println("******* Printing stderr for analysis in case of failure *******");
+ System.out.println(output.getStderr());
+ System.out.println("***************************************************************");
+ if (output.getStdout() != null && output.getStdout().contains("WB_ReadFromNoaccessArea method is useless")) {
+ // Test conditions broken. There is no protected page in ReservedHeapSpace in these circumstances. Silently passing test.
+ return;
+ }
+ if (Platform.isWindows()) {
+ output.shouldContain("EXCEPTION_ACCESS_VIOLATION");
+ } else if (Platform.isOSX()) {
+ output.shouldContain("SIGBUS");
+ } else {
+ output.shouldContain("SIGSEGV");
+ }
+ }
+
+ public static class DummyClassWithMainTryingToReadFromNoaccessArea {
+
+ // This method calls whitebox method reading from noaccess area
+ public static void main(String args[]) throws Exception {
+ WhiteBox.getWhiteBox().readFromNoaccessArea();
+ throw new Exception("Call of readFromNoaccessArea succeeded! This is wrong. Crash expected. Test failed.");
+ }
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/memory/RunUnitTestsConcurrently.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @summary Test launches unit tests inside vm concurrently
+ * @library /testlibrary /testlibrary/whitebox
+ * @build RunUnitTestsConcurrently
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI RunUnitTestsConcurrently 30 15000
+ */
+
+import com.oracle.java.testlibrary.*;
+import sun.hotspot.WhiteBox;
+
+public class RunUnitTestsConcurrently {
+
+ private static WhiteBox wb;
+ private static long timeout;
+ private static long timeStamp;
+
+ public static class Worker implements Runnable {
+ @Override
+ public void run() {
+ while (System.currentTimeMillis() - timeStamp < timeout) {
+ WhiteBox.getWhiteBox().runMemoryUnitTests();
+ }
+ }
+ }
+
+ public static void main(String[] args) throws InterruptedException {
+ if (!Platform.isDebugBuild() || !Platform.is64bit()) {
+ return;
+ }
+ wb = WhiteBox.getWhiteBox();
+ System.out.println("Starting threads");
+
+ int threads = Integer.valueOf(args[0]);
+ timeout = Long.valueOf(args[1]);
+
+ timeStamp = System.currentTimeMillis();
+
+ Thread[] threadsArray = new Thread[threads];
+ for (int i = 0; i < threads; i++) {
+ threadsArray[i] = new Thread(new Worker());
+ threadsArray[i].start();
+ }
+ for (int i = 0; i < threads; i++) {
+ threadsArray[i].join();
+ }
+
+ System.out.println("Quitting test.");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/memory/StressVirtualSpaceResize.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @summary Stress test that expands/shrinks VirtualSpace
+ * @library /testlibrary /testlibrary/whitebox
+ * @build StressVirtualSpaceResize
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI StressVirtualSpaceResize
+ */
+
+import sun.hotspot.WhiteBox;
+
+public class StressVirtualSpaceResize {
+
+ public static void main(String args[]) throws Exception {
+ if (WhiteBox.getWhiteBox().stressVirtualSpaceResize(1000, 0xffffL, 0xffffL) != 0)
+ throw new RuntimeException("Whitebox method stressVirtualSpaceResize returned non zero exit code");
+ }
+}
--- a/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Thu Nov 14 23:33:06 2013 -0800
+++ b/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Wed Jul 05 19:22:42 2017 +0200
@@ -144,4 +144,10 @@
// force Full GC
public native void fullGC();
+
+ // Tests on ReservedSpace/VirtualSpace classes
+ public native int stressVirtualSpaceResize(long reservedSpaceSize, long magnitude, long iterations);
+ public native void runMemoryUnitTests();
+ public native void readFromNoaccessArea();
+
}
--- a/jdk/.hgignore Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/.hgignore Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,6 @@
^build/
^dist/
+^testoutput/
/nbproject/private/
^make/netbeans/.*/build/
^make/netbeans/.*/dist/
--- a/jdk/.hgtags Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/.hgtags Wed Jul 05 19:22:42 2017 +0200
@@ -237,3 +237,4 @@
5b4261b4b72af53e8e178933ef6bc6c7f8cdbc60 jdk8-b113
f26a0c8071bde1e3b923713c75156e4a58955623 jdk8-b114
f82b730c798b6bf38946baaba8a7d80fd5efaa70 jdk8-b115
+0dc0067f3b8efb299a4c23f76ee26ea64df9e1d7 jdk8-b116
--- a/jdk/make/java/management/mapfile-vers Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/make/java/management/mapfile-vers Wed Jul 05 19:22:42 2017 +0200
@@ -103,6 +103,7 @@
Java_sun_management_VMManagementImpl_getSafepointCount;
Java_sun_management_VMManagementImpl_getSafepointSyncTime;
Java_sun_management_VMManagementImpl_getStartupTime;
+ Java_sun_management_VMManagementImpl_getUptime0;
Java_sun_management_VMManagementImpl_getTotalApplicationNonStoppedTime;
Java_sun_management_VMManagementImpl_getTotalClassCount;
Java_sun_management_VMManagementImpl_getTotalCompileTime;
--- a/jdk/make/tools/sharing/classlist.linux Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/make/tools/sharing/classlist.linux Wed Jul 05 19:22:42 2017 +0200
@@ -1,2327 +1,2454 @@
-java/lang/Object
-java/lang/String
+com/sun/java/swing/SwingUtilities3
+com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
+com/sun/swing/internal/plaf/basic/resources/basic
+com/sun/swing/internal/plaf/metal/resources/metal
+java/applet/Applet
+java/awt/AWTEvent
+java/awt/AWTEvent$1
+java/awt/AWTEventMulticaster
+java/awt/AWTKeyStroke
+java/awt/AWTKeyStroke$1
+java/awt/ActiveEvent
+java/awt/Adjustable
+java/awt/AlphaComposite
+java/awt/BasicStroke
+java/awt/BorderLayout
+java/awt/BufferCapabilities
+java/awt/Canvas
+java/awt/CardLayout
+java/awt/CardLayout$Card
+java/awt/Color
+java/awt/Component
+java/awt/Component$1
+java/awt/Component$3
+java/awt/Component$AWTTreeLock
+java/awt/Component$AccessibleAWTComponent
+java/awt/Component$BaselineResizeBehavior
+java/awt/Component$BltBufferStrategy
+java/awt/Component$BltSubRegionBufferStrategy
+java/awt/Component$DummyRequestFocusController
+java/awt/Component$FlipBufferStrategy
+java/awt/ComponentOrientation
+java/awt/Composite
+java/awt/Conditional
+java/awt/Container
+java/awt/Container$1
+java/awt/Container$AccessibleAWTContainer
+java/awt/ContainerOrderFocusTraversalPolicy
+java/awt/Cursor
+java/awt/Cursor$1
+java/awt/DefaultFocusTraversalPolicy
+java/awt/DefaultKeyboardFocusManager
+java/awt/DefaultKeyboardFocusManager$1
+java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
+java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
+java/awt/Dialog
+java/awt/Dialog$ModalExclusionType
+java/awt/Dialog$ModalityType
+java/awt/Dimension
+java/awt/Event
+java/awt/EventDispatchThread
+java/awt/EventDispatchThread$1
+java/awt/EventDispatchThread$HierarchyEventFilter
+java/awt/EventFilter
+java/awt/EventFilter$FilterAction
+java/awt/EventQueue
+java/awt/EventQueue$1
+java/awt/EventQueue$1AWTInvocationLock
+java/awt/EventQueue$2
+java/awt/EventQueue$3
+java/awt/EventQueue$4
+java/awt/EventQueue$5
+java/awt/FlowLayout
+java/awt/FocusTraversalPolicy
+java/awt/Font
+java/awt/Font$FontAccessImpl
+java/awt/FontFormatException
+java/awt/FontMetrics
+java/awt/Frame
+java/awt/Frame$1
+java/awt/Graphics
+java/awt/Graphics2D
+java/awt/GraphicsCallback
+java/awt/GraphicsCallback$PaintCallback
+java/awt/GraphicsConfiguration
+java/awt/GraphicsDevice
+java/awt/GraphicsEnvironment
+java/awt/GraphicsEnvironment$1
+java/awt/GridLayout
+java/awt/Image
+java/awt/Image$1
+java/awt/ImageCapabilities
+java/awt/ImageMediaEntry
+java/awt/Insets
+java/awt/ItemSelectable
+java/awt/KeyEventDispatcher
+java/awt/KeyEventPostProcessor
+java/awt/KeyboardFocusManager
+java/awt/KeyboardFocusManager$1
+java/awt/KeyboardFocusManager$3
+java/awt/KeyboardFocusManager$HeavyweightFocusRequest
+java/awt/KeyboardFocusManager$LightweightFocusRequest
+java/awt/Label
+java/awt/LayoutManager
+java/awt/LayoutManager2
+java/awt/LightweightDispatcher
+java/awt/LightweightDispatcher$2
+java/awt/MediaEntry
+java/awt/MediaTracker
+java/awt/MenuBar
+java/awt/MenuComponent
+java/awt/MenuContainer
+java/awt/ModalEventFilter
+java/awt/Paint
+java/awt/Panel
+java/awt/Point
+java/awt/PrintGraphics
+java/awt/Queue
+java/awt/Rectangle
+java/awt/RenderingHints
+java/awt/RenderingHints$Key
+java/awt/SentEvent
+java/awt/SequencedEvent
+java/awt/SequencedEvent$1
+java/awt/Shape
+java/awt/SplashScreen
+java/awt/Stroke
+java/awt/SystemColor
+java/awt/Toolkit
+java/awt/Toolkit$1
+java/awt/Toolkit$2
+java/awt/Toolkit$3
+java/awt/Toolkit$4
+java/awt/Toolkit$5
+java/awt/Toolkit$DesktopPropertyChangeSupport
+java/awt/Toolkit$DesktopPropertyChangeSupport$1
+java/awt/Toolkit$SelectiveAWTEventListener
+java/awt/Toolkit$ToolkitEventMulticaster
+java/awt/Transparency
+java/awt/TrayIcon
+java/awt/VKCollection
+java/awt/Window
+java/awt/Window$1
+java/awt/Window$1DisposeAction
+java/awt/Window$Type
+java/awt/Window$WindowDisposerRecord
+java/awt/color/ColorSpace
+java/awt/color/ICC_ColorSpace
+java/awt/color/ICC_Profile
+java/awt/color/ICC_Profile$1
+java/awt/color/ICC_ProfileRGB
+java/awt/datatransfer/Clipboard
+java/awt/datatransfer/ClipboardOwner
+java/awt/datatransfer/FlavorMap
+java/awt/datatransfer/FlavorTable
+java/awt/datatransfer/SystemFlavorMap
+java/awt/datatransfer/Transferable
+java/awt/dnd/DropTarget
+java/awt/dnd/DropTargetContext
+java/awt/dnd/DropTargetListener
+java/awt/dnd/peer/DragSourceContextPeer
+java/awt/dnd/peer/DropTargetContextPeer
+java/awt/dnd/peer/DropTargetPeer
+java/awt/event/AWTEventListener
+java/awt/event/AWTEventListenerProxy
+java/awt/event/ActionEvent
+java/awt/event/ActionListener
+java/awt/event/AdjustmentEvent
+java/awt/event/AdjustmentListener
+java/awt/event/ComponentAdapter
+java/awt/event/ComponentEvent
+java/awt/event/ComponentListener
+java/awt/event/ContainerEvent
+java/awt/event/ContainerListener
+java/awt/event/FocusAdapter
+java/awt/event/FocusEvent
+java/awt/event/FocusListener
+java/awt/event/HierarchyBoundsListener
+java/awt/event/HierarchyListener
+java/awt/event/InputEvent
+java/awt/event/InputEvent$1
+java/awt/event/InputMethodEvent
+java/awt/event/InputMethodListener
+java/awt/event/InvocationEvent
+java/awt/event/InvocationEvent$1
+java/awt/event/ItemEvent
+java/awt/event/ItemListener
+java/awt/event/KeyAdapter
+java/awt/event/KeyEvent
+java/awt/event/KeyEvent$1
+java/awt/event/KeyListener
+java/awt/event/MouseAdapter
+java/awt/event/MouseEvent
+java/awt/event/MouseListener
+java/awt/event/MouseMotionAdapter
+java/awt/event/MouseMotionListener
+java/awt/event/MouseWheelListener
+java/awt/event/NativeLibLoader
+java/awt/event/NativeLibLoader$1
+java/awt/event/PaintEvent
+java/awt/event/TextListener
+java/awt/event/WindowAdapter
+java/awt/event/WindowEvent
+java/awt/event/WindowFocusListener
+java/awt/event/WindowListener
+java/awt/event/WindowStateListener
+java/awt/font/FontRenderContext
+java/awt/font/GlyphVector
+java/awt/font/LineMetrics
+java/awt/font/TextAttribute
+java/awt/geom/AffineTransform
+java/awt/geom/Dimension2D
+java/awt/geom/GeneralPath
+java/awt/geom/Line2D
+java/awt/geom/Line2D$Float
+java/awt/geom/Path2D
+java/awt/geom/Path2D$Float
+java/awt/geom/PathIterator
+java/awt/geom/Point2D
+java/awt/geom/Point2D$Float
+java/awt/geom/RectIterator
+java/awt/geom/Rectangle2D
+java/awt/geom/Rectangle2D$Float
+java/awt/geom/RectangularShape
+java/awt/im/InputContext
+java/awt/im/InputMethodRequests
+java/awt/im/spi/InputMethod
+java/awt/im/spi/InputMethodContext
+java/awt/im/spi/InputMethodDescriptor
+java/awt/image/BufferStrategy
+java/awt/image/BufferedImage
+java/awt/image/BufferedImage$1
+java/awt/image/ColorModel
+java/awt/image/ColorModel$1
+java/awt/image/ComponentSampleModel
+java/awt/image/DataBuffer
+java/awt/image/DataBuffer$1
+java/awt/image/DataBufferByte
+java/awt/image/DataBufferInt
+java/awt/image/DirectColorModel
+java/awt/image/FilteredImageSource
+java/awt/image/ImageConsumer
+java/awt/image/ImageFilter
+java/awt/image/ImageObserver
+java/awt/image/ImageProducer
+java/awt/image/IndexColorModel
+java/awt/image/PackedColorModel
+java/awt/image/PixelInterleavedSampleModel
+java/awt/image/RGBImageFilter
+java/awt/image/Raster
+java/awt/image/RenderedImage
+java/awt/image/SampleModel
+java/awt/image/SinglePixelPackedSampleModel
+java/awt/image/VolatileImage
+java/awt/image/WritableRaster
+java/awt/image/WritableRenderedImage
+java/awt/peer/CanvasPeer
+java/awt/peer/ComponentPeer
+java/awt/peer/ContainerPeer
+java/awt/peer/FramePeer
+java/awt/peer/KeyboardFocusManagerPeer
+java/awt/peer/LabelPeer
+java/awt/peer/LightweightPeer
+java/awt/peer/PanelPeer
+java/awt/peer/SystemTrayPeer
+java/awt/peer/WindowPeer
+java/awt/print/PrinterGraphics
+java/beans/ChangeListenerMap
+java/beans/PropertyChangeEvent
+java/beans/PropertyChangeListener
+java/beans/PropertyChangeListenerProxy
+java/beans/PropertyChangeSupport
+java/beans/PropertyChangeSupport$PropertyChangeListenerMap
+java/beans/VetoableChangeListener
+java/io/Bits
+java/io/BufferedInputStream
+java/io/BufferedOutputStream
+java/io/BufferedReader
+java/io/BufferedWriter
+java/io/ByteArrayInputStream
+java/io/ByteArrayOutputStream
+java/io/Closeable
+java/io/DataInput
+java/io/DataInputStream
+java/io/DataOutput
+java/io/DataOutputStream
+java/io/DefaultFileSystem
+java/io/EOFException
+java/io/ExpiringCache
+java/io/ExpiringCache$1
+java/io/ExpiringCache$Entry
+java/io/Externalizable
+java/io/File
+java/io/File$PathStatus
+java/io/FileDescriptor
+java/io/FileDescriptor$1
+java/io/FileInputStream
+java/io/FileInputStream$1
+java/io/FileNotFoundException
+java/io/FileOutputStream
+java/io/FileOutputStream$1
+java/io/FilePermission
+java/io/FilePermission$1
+java/io/FilePermissionCollection
+java/io/FileReader
+java/io/FileSystem
+java/io/FileWriter
+java/io/FilenameFilter
+java/io/FilterInputStream
+java/io/FilterOutputStream
+java/io/FilterReader
+java/io/Flushable
+java/io/IOException
+java/io/InputStream
+java/io/InputStreamReader
+java/io/InterruptedIOException
+java/io/ObjectInput
+java/io/ObjectInputStream
+java/io/ObjectInputStream$BlockDataInputStream
+java/io/ObjectInputStream$GetField
+java/io/ObjectInputStream$GetFieldImpl
+java/io/ObjectInputStream$HandleTable
+java/io/ObjectInputStream$HandleTable$HandleList
+java/io/ObjectInputStream$PeekInputStream
+java/io/ObjectInputStream$ValidationList
+java/io/ObjectOutput
+java/io/ObjectOutputStream
+java/io/ObjectOutputStream$BlockDataOutputStream
+java/io/ObjectOutputStream$HandleTable
+java/io/ObjectOutputStream$ReplaceTable
+java/io/ObjectStreamClass
+java/io/ObjectStreamClass$1
+java/io/ObjectStreamClass$2
+java/io/ObjectStreamClass$3
+java/io/ObjectStreamClass$4
+java/io/ObjectStreamClass$5
+java/io/ObjectStreamClass$Caches
+java/io/ObjectStreamClass$ClassDataSlot
+java/io/ObjectStreamClass$EntryFuture
+java/io/ObjectStreamClass$ExceptionInfo
+java/io/ObjectStreamClass$FieldReflector
+java/io/ObjectStreamClass$FieldReflectorKey
+java/io/ObjectStreamClass$MemberSignature
+java/io/ObjectStreamClass$WeakClassKey
+java/io/ObjectStreamConstants
+java/io/ObjectStreamField
+java/io/OutputStream
+java/io/OutputStreamWriter
+java/io/PrintStream
+java/io/PushbackInputStream
+java/io/RandomAccessFile
+java/io/RandomAccessFile$1
+java/io/Reader
+java/io/SerialCallbackContext
java/io/Serializable
-java/lang/Comparable
-java/lang/CharSequence
-java/lang/Class
-java/lang/reflect/GenericDeclaration
-java/lang/reflect/Type
-java/lang/reflect/AnnotatedElement
-java/lang/Cloneable
-java/lang/ClassLoader
-java/lang/System
-java/lang/Throwable
-java/lang/Error
-java/lang/ThreadDeath
-java/lang/Exception
-java/lang/RuntimeException
-java/security/ProtectionDomain
-java/security/AccessControlContext
-java/lang/ClassNotFoundException
-java/lang/NoClassDefFoundError
-java/lang/LinkageError
-java/lang/ClassCastException
-java/lang/ArrayStoreException
-java/lang/VirtualMachineError
-java/lang/OutOfMemoryError
-java/lang/StackOverflowError
-java/lang/IllegalMonitorStateException
-java/lang/ref/Reference
-java/lang/ref/SoftReference
-java/lang/ref/WeakReference
-java/lang/ref/FinalReference
-java/lang/ref/PhantomReference
-java/lang/ref/Finalizer
-java/lang/Thread
-java/lang/Runnable
-java/lang/ThreadGroup
-java/lang/Thread$UncaughtExceptionHandler
-java/util/Properties
-java/util/Hashtable
-java/util/Map
-java/util/Dictionary
-java/lang/reflect/AccessibleObject
-java/lang/reflect/Field
-java/lang/reflect/Member
-java/lang/reflect/Method
-java/lang/reflect/Constructor
-sun/reflect/MagicAccessorImpl
-sun/reflect/MethodAccessorImpl
-sun/reflect/MethodAccessor
-sun/reflect/ConstructorAccessorImpl
-sun/reflect/ConstructorAccessor
-sun/reflect/DelegatingClassLoader
-sun/reflect/ConstantPool
-sun/reflect/UnsafeStaticFieldAccessorImpl
-sun/reflect/UnsafeFieldAccessorImpl
-sun/reflect/FieldAccessorImpl
-sun/reflect/FieldAccessor
-java/util/Vector
-java/util/List
-java/util/Collection
-java/lang/Iterable
-java/util/RandomAccess
-java/util/AbstractList
-java/util/AbstractCollection
-java/lang/StringBuffer
+java/io/StreamTokenizer
+java/io/StringReader
+java/io/StringWriter
+java/io/UnixFileSystem
+java/io/UnsupportedEncodingException
+java/io/Writer
java/lang/AbstractStringBuilder
java/lang/Appendable
-java/lang/StackTraceElement
-java/nio/Buffer
+java/lang/ApplicationShutdownHooks
+java/lang/ApplicationShutdownHooks$1
+java/lang/ArithmeticException
+java/lang/ArrayIndexOutOfBoundsException
+java/lang/ArrayStoreException
+java/lang/AutoCloseable
java/lang/Boolean
-java/lang/Character
-java/lang/Float
-java/lang/Number
-java/lang/Double
+java/lang/BootstrapMethodError
java/lang/Byte
-java/lang/Short
+java/lang/CharSequence
+java/lang/Character
+java/lang/Character$CharacterCache
+java/lang/CharacterData
+java/lang/CharacterData00
+java/lang/CharacterDataLatin1
+java/lang/Class
+java/lang/Class$1
+java/lang/Class$3
+java/lang/Class$4
+java/lang/Class$AnnotationData
+java/lang/Class$Atomic
+java/lang/Class$ReflectionData
+java/lang/ClassCastException
+java/lang/ClassFormatError
+java/lang/ClassLoader
+java/lang/ClassLoader$2
+java/lang/ClassLoader$3
+java/lang/ClassLoader$NativeLibrary
+java/lang/ClassLoader$ParallelLoaders
+java/lang/ClassNotFoundException
+java/lang/ClassValue$ClassValueMap
+java/lang/CloneNotSupportedException
+java/lang/Cloneable
+java/lang/Comparable
+java/lang/Compiler
+java/lang/Compiler$1
+java/lang/Double
+java/lang/Enum
+java/lang/Error
+java/lang/Exception
+java/lang/ExceptionInInitializerError
+java/lang/Float
+java/lang/IllegalAccessError
+java/lang/IllegalAccessException
+java/lang/IllegalArgumentException
+java/lang/IllegalMonitorStateException
+java/lang/IllegalStateException
+java/lang/IncompatibleClassChangeError
+java/lang/IndexOutOfBoundsException
+java/lang/InheritableThreadLocal
+java/lang/InstantiationException
java/lang/Integer
+java/lang/Integer$IntegerCache
+java/lang/InternalError
+java/lang/InterruptedException
+java/lang/Iterable
+java/lang/LinkageError
java/lang/Long
+java/lang/Long$LongCache
+java/lang/Math
+java/lang/NoClassDefFoundError
+java/lang/NoSuchFieldException
+java/lang/NoSuchMethodError
+java/lang/NoSuchMethodException
java/lang/NullPointerException
-java/lang/ArithmeticException
-java/io/ObjectStreamField
-java/lang/String$CaseInsensitiveComparator
-java/util/Comparator
+java/lang/Number
+java/lang/NumberFormatException
+java/lang/Object
+java/lang/OutOfMemoryError
+java/lang/Package
+java/lang/Process
+java/lang/ProcessBuilder
+java/lang/ProcessBuilder$NullOutputStream
+java/lang/ProcessEnvironment
+java/lang/ProcessEnvironment$ExternalData
+java/lang/ProcessEnvironment$StringEnvironment
+java/lang/ProcessEnvironment$Value
+java/lang/ProcessEnvironment$Variable
+java/lang/ProcessImpl
+java/lang/Readable
+java/lang/ReflectiveOperationException
+java/lang/Runnable
+java/lang/Runtime
+java/lang/RuntimeException
java/lang/RuntimePermission
-java/security/BasicPermission
-java/security/Permission
-java/security/Guard
-sun/misc/SoftCache
-java/util/AbstractMap
-java/lang/ref/ReferenceQueue
-java/lang/ref/ReferenceQueue$Null
-java/lang/ref/ReferenceQueue$Lock
-java/util/HashMap
+java/lang/SecurityException
+java/lang/SecurityManager
+java/lang/Short
+java/lang/Shutdown
+java/lang/Shutdown$Lock
+java/lang/StackOverflowError
+java/lang/StackTraceElement
+java/lang/StrictMath
+java/lang/String
+java/lang/String$CaseInsensitiveComparator
+java/lang/StringBuffer
+java/lang/StringBuilder
+java/lang/StringCoding
+java/lang/StringCoding$StringDecoder
+java/lang/StringCoding$StringEncoder
+java/lang/StringIndexOutOfBoundsException
+java/lang/System
+java/lang/System$2
+java/lang/SystemClassLoaderAction
+java/lang/Terminator
+java/lang/Terminator$1
+java/lang/Thread
+java/lang/Thread$State
+java/lang/Thread$UncaughtExceptionHandler
+java/lang/ThreadDeath
+java/lang/ThreadGroup
+java/lang/ThreadLocal
+java/lang/ThreadLocal$ThreadLocalMap
+java/lang/ThreadLocal$ThreadLocalMap$Entry
+java/lang/Throwable
+java/lang/Throwable$PrintStreamOrWriter
+java/lang/Throwable$WrappedPrintStream
+java/lang/UNIXProcess
+java/lang/UNIXProcess$1
+java/lang/UNIXProcess$2
+java/lang/UNIXProcess$3
+java/lang/UNIXProcess$4
+java/lang/UNIXProcess$LaunchMechanism
+java/lang/UNIXProcess$ProcessPipeInputStream
+java/lang/UNIXProcess$ProcessPipeOutputStream
+java/lang/UNIXProcess$ProcessReaperThreadFactory
+java/lang/UNIXProcess$ProcessReaperThreadFactory$1
+java/lang/UnsatisfiedLinkError
+java/lang/UnsupportedOperationException
+java/lang/VirtualMachineError
+java/lang/Void
java/lang/annotation/Annotation
-java/util/HashMap$Entry
-java/util/Map$Entry
-java/security/AccessController
-java/lang/reflect/ReflectPermission
-sun/reflect/ReflectionFactory$GetReflectionFactoryAction
-java/security/PrivilegedAction
-java/util/Stack
-sun/reflect/ReflectionFactory
+java/lang/invoke/CallSite
+java/lang/invoke/ConstantCallSite
+java/lang/invoke/DirectMethodHandle
+java/lang/invoke/Invokers
+java/lang/invoke/LambdaForm
+java/lang/invoke/LambdaForm$NamedFunction
+java/lang/invoke/MemberName
+java/lang/invoke/MemberName$Factory
+java/lang/invoke/MethodHandle
+java/lang/invoke/MethodHandleImpl
+java/lang/invoke/MethodHandleNatives
+java/lang/invoke/MethodHandleStatics
+java/lang/invoke/MethodHandleStatics$1
+java/lang/invoke/MethodType
+java/lang/invoke/MethodType$ConcurrentWeakInternSet
+java/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry
+java/lang/invoke/MethodTypeForm
+java/lang/invoke/MutableCallSite
+java/lang/invoke/VolatileCallSite
+java/lang/ref/FinalReference
+java/lang/ref/Finalizer
+java/lang/ref/Finalizer$FinalizerThread
+java/lang/ref/PhantomReference
+java/lang/ref/Reference
java/lang/ref/Reference$Lock
java/lang/ref/Reference$ReferenceHandler
-java/lang/ref/Finalizer$FinalizerThread
-java/util/Enumeration
-java/util/Iterator
-java/util/Hashtable$Entry
-java/nio/charset/Charset
-sun/nio/cs/StandardCharsets
-sun/nio/cs/FastCharsetProvider
-java/nio/charset/spi/CharsetProvider
-sun/nio/cs/StandardCharsets$Aliases
-sun/util/PreHashedMap
-sun/nio/cs/StandardCharsets$Classes
-sun/nio/cs/StandardCharsets$Cache
-java/lang/ThreadLocal
-java/util/concurrent/atomic/AtomicInteger
-sun/misc/Unsafe
-java/lang/NoSuchMethodError
-java/lang/IncompatibleClassChangeError
-sun/reflect/Reflection
-java/util/Collections
-java/util/Collections$EmptySet
-java/util/AbstractSet
-java/util/Set
-java/util/Collections$EmptyList
-java/util/Collections$EmptyMap
-java/util/Collections$ReverseComparator
-java/util/Collections$SynchronizedMap
-java/lang/Class$3
+java/lang/ref/ReferenceQueue
+java/lang/ref/ReferenceQueue$Lock
+java/lang/ref/ReferenceQueue$Null
+java/lang/ref/SoftReference
+java/lang/ref/WeakReference
+java/lang/reflect/AccessibleObject
+java/lang/reflect/AnnotatedElement
+java/lang/reflect/Array
+java/lang/reflect/Constructor
+java/lang/reflect/Executable
+java/lang/reflect/Field
+java/lang/reflect/GenericDeclaration
+java/lang/reflect/InvocationHandler
+java/lang/reflect/InvocationTargetException
+java/lang/reflect/Member
+java/lang/reflect/Method
java/lang/reflect/Modifier
+java/lang/reflect/Parameter
+java/lang/reflect/Proxy
+java/lang/reflect/Proxy$KeyFactory
+java/lang/reflect/Proxy$ProxyClassFactory
java/lang/reflect/ReflectAccess
-sun/reflect/LangReflectAccess
-java/util/Arrays
-java/lang/Math
-sun/nio/cs/US_ASCII
-sun/nio/cs/HistoricallyNamedCharset
-sun/misc/VM
-java/lang/StringCoding
-java/lang/ThreadLocal$ThreadLocalMap
-java/lang/ThreadLocal$ThreadLocalMap$Entry
-java/lang/StringCoding$StringDecoder
-sun/nio/cs/US_ASCII$Decoder
-java/nio/charset/CharsetDecoder
-java/nio/charset/CodingErrorAction
+java/lang/reflect/ReflectPermission
+java/lang/reflect/Type
+java/lang/reflect/WeakCache
+java/math/BigInteger
+java/math/BigInteger$UnsafeHolder
+java/math/MutableBigInteger
+java/math/RoundingMode
+java/math/SignedMutableBigInteger
+java/net/AbstractPlainDatagramSocketImpl
+java/net/AbstractPlainDatagramSocketImpl$1
+java/net/AbstractPlainSocketImpl
+java/net/AbstractPlainSocketImpl$1
+java/net/Authenticator
+java/net/BindException
+java/net/ConnectException
+java/net/DatagramPacket
+java/net/DatagramPacket$1
+java/net/DatagramSocket
+java/net/DatagramSocket$1
+java/net/DatagramSocketImpl
+java/net/DefaultDatagramSocketImplFactory
+java/net/DefaultInterface
+java/net/FileNameMap
+java/net/HttpURLConnection
+java/net/Inet4Address
+java/net/Inet4AddressImpl
+java/net/Inet6Address
+java/net/Inet6Address$Inet6AddressHolder
+java/net/Inet6AddressImpl
+java/net/InetAddress
+java/net/InetAddress$1
+java/net/InetAddress$2
+java/net/InetAddress$Cache
+java/net/InetAddress$Cache$Type
+java/net/InetAddress$CacheEntry
+java/net/InetAddress$InetAddressHolder
+java/net/InetAddressImpl
+java/net/InetAddressImplFactory
+java/net/InetSocketAddress
+java/net/InetSocketAddress$InetSocketAddressHolder
+java/net/InterfaceAddress
+java/net/JarURLConnection
+java/net/MalformedURLException
+java/net/MulticastSocket
+java/net/NetworkInterface
+java/net/NetworkInterface$1
+java/net/NoRouteToHostException
+java/net/Parts
+java/net/PlainDatagramSocketImpl
+java/net/PlainSocketImpl
+java/net/Proxy
+java/net/Proxy$Type
+java/net/ProxySelector
+java/net/ServerSocket
+java/net/Socket
+java/net/SocketAddress
+java/net/SocketException
+java/net/SocketImpl
+java/net/SocketImplFactory
+java/net/SocketOptions
+java/net/SocksConsts
+java/net/SocksSocketImpl
+java/net/SocksSocketImpl$3
+java/net/URI
+java/net/URI$Parser
+java/net/URL
+java/net/URLClassLoader
+java/net/URLClassLoader$1
+java/net/URLClassLoader$2
+java/net/URLClassLoader$3
+java/net/URLClassLoader$3$1
+java/net/URLClassLoader$7
+java/net/URLConnection
+java/net/URLConnection$1
+java/net/URLStreamHandler
+java/net/URLStreamHandlerFactory
+java/net/UnknownHostException
+java/nio/Bits
+java/nio/Bits$1
+java/nio/Buffer
java/nio/ByteBuffer
-java/nio/HeapByteBuffer
-java/nio/Bits
+java/nio/ByteBufferAsIntBufferB
+java/nio/ByteBufferAsShortBufferB
java/nio/ByteOrder
java/nio/CharBuffer
-java/lang/Readable
+java/nio/DirectByteBuffer
+java/nio/DirectByteBuffer$Deallocator
+java/nio/DirectByteBufferR
+java/nio/DirectLongBufferU
+java/nio/HeapByteBuffer
java/nio/HeapCharBuffer
+java/nio/IntBuffer
+java/nio/LongBuffer
+java/nio/MappedByteBuffer
+java/nio/ShortBuffer
+java/nio/channels/ByteChannel
+java/nio/channels/Channel
+java/nio/channels/FileChannel
+java/nio/channels/FileChannel$MapMode
+java/nio/channels/GatheringByteChannel
+java/nio/channels/InterruptibleChannel
+java/nio/channels/NetworkChannel
+java/nio/channels/ReadableByteChannel
+java/nio/channels/ScatteringByteChannel
+java/nio/channels/SeekableByteChannel
+java/nio/channels/SelectableChannel
+java/nio/channels/SocketChannel
+java/nio/channels/WritableByteChannel
+java/nio/channels/spi/AbstractInterruptibleChannel
+java/nio/channels/spi/AbstractInterruptibleChannel$1
+java/nio/channels/spi/AbstractSelectableChannel
+java/nio/charset/Charset
+java/nio/charset/CharsetDecoder
+java/nio/charset/CharsetEncoder
java/nio/charset/CoderResult
java/nio/charset/CoderResult$1
+java/nio/charset/CoderResult$2
java/nio/charset/CoderResult$Cache
-java/nio/charset/CoderResult$2
-sun/misc/Version
-java/io/FileInputStream
-java/io/InputStream
-java/io/Closeable
-java/io/FileDescriptor
-java/io/FileOutputStream
-java/io/OutputStream
-java/io/Flushable
-java/io/BufferedInputStream
-java/io/FilterInputStream
-java/util/concurrent/atomic/AtomicReferenceFieldUpdater
-java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
-sun/reflect/misc/ReflectUtil
-java/io/PrintStream
-java/io/FilterOutputStream
-java/io/BufferedOutputStream
-java/io/OutputStreamWriter
-java/io/Writer
-sun/nio/cs/StreamEncoder
-sun/security/action/GetPropertyAction
-sun/nio/cs/US_ASCII$Encoder
-java/nio/charset/CharsetEncoder
-sun/nio/cs/Surrogate$Parser
-sun/nio/cs/Surrogate
-java/io/BufferedWriter
-java/lang/Runtime
-java/io/File
-java/io/FileSystem
-java/io/UnixFileSystem
-java/io/ExpiringCache
-java/io/ExpiringCache$1
+java/nio/charset/CodingErrorAction
+java/nio/charset/StandardCharsets
+java/nio/charset/spi/CharsetProvider
+java/nio/file/Path
+java/nio/file/Watchable
+java/nio/file/attribute/FileAttribute
+java/security/AccessControlContext
+java/security/AccessController
+java/security/AlgorithmParameters
+java/security/AlgorithmParametersSpi
+java/security/AllPermission
+java/security/AllPermissionCollection
+java/security/BasicPermission
+java/security/BasicPermissionCollection
+java/security/CodeSigner
+java/security/CodeSource
+java/security/GeneralSecurityException
+java/security/Guard
+java/security/InvalidKeyException
+java/security/Key
+java/security/KeyException
+java/security/MessageDigest
+java/security/MessageDigest$Delegate
+java/security/MessageDigestSpi
+java/security/NoSuchAlgorithmException
+java/security/Permission
+java/security/PermissionCollection
+java/security/Permissions
+java/security/Principal
+java/security/PrivateKey
+java/security/PrivilegedAction
+java/security/PrivilegedActionException
+java/security/PrivilegedExceptionAction
+java/security/ProtectionDomain
+java/security/ProtectionDomain$1
+java/security/ProtectionDomain$3
+java/security/ProtectionDomain$Key
+java/security/Provider
+java/security/Provider$EngineDescription
+java/security/Provider$Service
+java/security/Provider$ServiceKey
+java/security/Provider$UString
+java/security/PublicKey
+java/security/SecureClassLoader
+java/security/SecureRandomSpi
+java/security/Security
+java/security/Security$1
+java/security/Signature
+java/security/Signature$Delegate
+java/security/SignatureException
+java/security/SignatureSpi
+java/security/UnresolvedPermission
+java/security/cert/Certificate
+java/security/interfaces/DSAKey
+java/security/interfaces/DSAParams
+java/security/interfaces/DSAPrivateKey
+java/security/interfaces/DSAPublicKey
+java/security/spec/AlgorithmParameterSpec
+java/security/spec/DSAParameterSpec
+java/text/AttributedCharacterIterator$Attribute
+java/text/CharacterIterator
+java/text/Collator
+java/text/DateFormat
+java/text/DateFormat$Field
+java/text/DateFormatSymbols
+java/text/DecimalFormat
+java/text/DecimalFormatSymbols
+java/text/DigitList
+java/text/DontCareFieldPosition
+java/text/DontCareFieldPosition$1
+java/text/EntryPair
+java/text/FieldPosition
+java/text/Format
+java/text/Format$Field
+java/text/Format$FieldDelegate
+java/text/MergeCollation
+java/text/MessageFormat
+java/text/MessageFormat$Field
+java/text/NumberFormat
+java/text/NumberFormat$Field
+java/text/ParseException
+java/text/PatternEntry
+java/text/PatternEntry$Parser
+java/text/RBCollationTables
+java/text/RBCollationTables$BuildAPI
+java/text/RBTableBuilder
+java/text/RuleBasedCollator
+java/text/SimpleDateFormat
+java/text/spi/BreakIteratorProvider
+java/text/spi/CollatorProvider
+java/text/spi/DateFormatProvider
+java/text/spi/DateFormatSymbolsProvider
+java/text/spi/DecimalFormatSymbolsProvider
+java/text/spi/NumberFormatProvider
+java/util/AbstractCollection
+java/util/AbstractList
+java/util/AbstractList$Itr
+java/util/AbstractList$ListItr
+java/util/AbstractMap
+java/util/AbstractQueue
+java/util/AbstractSequentialList
+java/util/AbstractSet
+java/util/ArrayDeque
+java/util/ArrayList
+java/util/ArrayList$Itr
+java/util/ArrayList$ListItr
+java/util/ArrayList$SubList
+java/util/ArrayList$SubList$1
+java/util/Arrays
+java/util/Arrays$ArrayList
+java/util/Arrays$LegacyMergeSort
+java/util/BitSet
+java/util/Calendar
+java/util/Calendar$Builder
+java/util/Collection
+java/util/Collections
+java/util/Collections$3
+java/util/Collections$EmptyEnumeration
+java/util/Collections$EmptyIterator
+java/util/Collections$EmptyList
+java/util/Collections$EmptyMap
+java/util/Collections$EmptySet
+java/util/Collections$SetFromMap
+java/util/Collections$SynchronizedCollection
+java/util/Collections$SynchronizedMap
+java/util/Collections$SynchronizedSet
+java/util/Collections$UnmodifiableCollection
+java/util/Collections$UnmodifiableCollection$1
+java/util/Collections$UnmodifiableList
+java/util/Collections$UnmodifiableList$1
+java/util/Collections$UnmodifiableMap
+java/util/Collections$UnmodifiableRandomAccessList
+java/util/Collections$UnmodifiableSet
+java/util/ComparableTimSort
+java/util/Comparator
+java/util/Currency
+java/util/Currency$1
+java/util/Currency$CurrencyNameGetter
+java/util/Date
+java/util/Deque
+java/util/Dictionary
+java/util/Enumeration
+java/util/EventListener
+java/util/EventListenerProxy
+java/util/EventObject
+java/util/GregorianCalendar
+java/util/HashMap
+java/util/HashMap$EntryIterator
+java/util/HashMap$EntrySet
+java/util/HashMap$HashIterator
+java/util/HashMap$KeyIterator
+java/util/HashMap$KeySet
+java/util/HashMap$Node
+java/util/HashMap$TreeNode
+java/util/HashMap$ValueIterator
+java/util/HashMap$Values
+java/util/HashSet
+java/util/Hashtable
+java/util/Hashtable$Entry
+java/util/Hashtable$EntrySet
+java/util/Hashtable$Enumerator
+java/util/Hashtable$ValueCollection
+java/util/IdentityHashMap
+java/util/IdentityHashMap$IdentityHashMapIterator
+java/util/IdentityHashMap$KeyIterator
+java/util/IdentityHashMap$KeySet
+java/util/IdentityHashMap$ValueIterator
+java/util/IdentityHashMap$Values
+java/util/Iterator
java/util/LinkedHashMap
java/util/LinkedHashMap$Entry
-java/lang/StringBuilder
-sun/misc/SharedSecrets
-java/lang/ClassLoader$3
-java/lang/StringCoding$StringEncoder
-java/io/ExpiringCache$Entry
-java/lang/ClassLoader$NativeLibrary
-java/lang/Terminator
-java/lang/Terminator$1
-sun/misc/SignalHandler
-sun/misc/Signal
-sun/misc/NativeSignalHandler
-java/io/Console
-java/io/Console$1
-sun/misc/JavaIOAccess
-java/lang/Shutdown
-java/util/ArrayList
-java/lang/Shutdown$Lock
-java/lang/ApplicationShutdownHooks
-java/util/IdentityHashMap
-sun/misc/OSEnvironment
-java/lang/System$2
-sun/misc/JavaLangAccess
-java/lang/Compiler
-java/lang/Compiler$1
-sun/misc/Launcher
-sun/misc/Launcher$Factory
-java/net/URLStreamHandlerFactory
-sun/misc/Launcher$ExtClassLoader
-java/net/URLClassLoader
-java/security/SecureClassLoader
-sun/security/util/Debug
-java/net/URLClassLoader$7
-sun/misc/JavaNetAccess
-java/util/StringTokenizer
-sun/misc/Launcher$ExtClassLoader$1
-java/security/PrivilegedExceptionAction
-sun/misc/MetaIndex
-java/io/BufferedReader
-java/io/Reader
-java/io/FileReader
-java/io/InputStreamReader
-sun/nio/cs/StreamDecoder
-java/lang/reflect/Array
-sun/net/www/ParseUtil
-java/util/BitSet
-java/io/ObjectStreamClass
-java/net/URL
+java/util/LinkedHashMap$LinkedEntryIterator
+java/util/LinkedHashMap$LinkedEntrySet
+java/util/LinkedHashMap$LinkedHashIterator
+java/util/LinkedHashMap$LinkedKeyIterator
+java/util/LinkedHashMap$LinkedKeySet
+java/util/LinkedList
+java/util/LinkedList$ListItr
+java/util/LinkedList$Node
+java/util/List
+java/util/ListIterator
+java/util/ListResourceBundle
java/util/Locale
-java/util/concurrent/ConcurrentHashMap
-java/util/concurrent/ConcurrentMap
-java/util/concurrent/ConcurrentHashMap$Segment
-java/util/concurrent/locks/ReentrantLock
-java/util/concurrent/locks/Lock
-java/util/concurrent/locks/ReentrantLock$NonfairSync
-java/util/concurrent/locks/ReentrantLock$Sync
-java/util/concurrent/locks/AbstractQueuedSynchronizer
-java/util/concurrent/locks/AbstractOwnableSynchronizer
-java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
-java/util/concurrent/ConcurrentHashMap$HashEntry
-java/lang/CharacterDataLatin1
-java/net/Parts
-sun/net/www/protocol/file/Handler
-java/net/URLStreamHandler
-java/lang/Class$1
-sun/reflect/ReflectionFactory$1
-sun/reflect/NativeConstructorAccessorImpl
-sun/reflect/DelegatingConstructorAccessorImpl
-java/util/HashSet
-sun/misc/URLClassPath
-sun/net/www/protocol/jar/Handler
-sun/misc/Launcher$AppClassLoader
-sun/misc/Launcher$AppClassLoader$1
-java/lang/SystemClassLoaderAction
-java/net/URLClassLoader$1
-sun/misc/URLClassPath$3
-sun/misc/URLClassPath$JarLoader
-sun/misc/URLClassPath$Loader
-java/security/PrivilegedActionException
-sun/misc/URLClassPath$FileLoader
-sun/misc/URLClassPath$FileLoader$1
-sun/misc/Resource
-sun/nio/ByteBuffered
-java/security/CodeSource
-java/security/Permissions
-java/security/PermissionCollection
-sun/net/www/protocol/file/FileURLConnection
-sun/net/www/URLConnection
-java/net/URLConnection
-java/net/UnknownContentHandler
-java/net/ContentHandler
-sun/net/www/MessageHeader
-java/io/FilePermission
-java/io/FilePermission$1
-sun/security/provider/PolicyFile
-java/security/Policy
-java/security/Policy$UnsupportedEmptyCollection
-java/io/FilePermissionCollection
-java/security/AllPermission
-java/security/UnresolvedPermission
-java/security/BasicPermissionCollection
-java/security/Principal
-java/security/cert/Certificate
-java/util/AbstractList$Itr
-java/util/IdentityHashMap$KeySet
-java/util/IdentityHashMap$KeyIterator
-java/util/IdentityHashMap$IdentityHashMapIterator
-java/io/DeleteOnExitHook
-java/util/LinkedHashSet
-java/util/HashMap$KeySet
-java/util/LinkedHashMap$KeyIterator
-java/util/LinkedHashMap$LinkedHashIterator
-java/awt/Frame
-java/awt/MenuContainer
-java/awt/Window
-javax/accessibility/Accessible
-java/awt/Container
-java/awt/Component
-java/awt/image/ImageObserver
-java/lang/InterruptedException
-java/awt/Label
-java/util/logging/Logger
-java/util/logging/Handler
-java/util/logging/Level
-java/util/logging/LogManager
-java/util/logging/LogManager$1
-java/beans/PropertyChangeSupport
-java/util/logging/LogManager$LogNode
-java/util/logging/LoggingPermission
-java/util/logging/LogManager$Cleaner
-java/util/logging/LogManager$RootLogger
-java/util/logging/LogManager$2
+java/util/Locale$1
+java/util/Locale$Cache
+java/util/Locale$Category
+java/util/Locale$LocaleKey
+java/util/Map
+java/util/Map$Entry
+java/util/MissingResourceException
+java/util/NavigableMap
+java/util/Objects
+java/util/PriorityQueue
+java/util/Properties
java/util/Properties$LineReader
-java/util/Hashtable$Enumerator
-java/beans/PropertyChangeEvent
-java/util/EventObject
-java/awt/Component$AWTTreeLock
-sun/awt/NativeLibLoader
-sun/security/action/LoadLibraryAction
-java/awt/GraphicsEnvironment
-java/awt/GraphicsEnvironment$1
-java/lang/ProcessEnvironment
-java/lang/ProcessEnvironment$Variable
-java/lang/ProcessEnvironment$ExternalData
-java/lang/ProcessEnvironment$Value
-java/lang/ProcessEnvironment$StringEnvironment
-java/util/Collections$UnmodifiableMap
-java/awt/Toolkit
-java/awt/Toolkit$3
-sun/util/CoreResourceBundleControl
-java/util/ResourceBundle$Control
-java/util/Arrays$ArrayList
-java/util/Collections$UnmodifiableRandomAccessList
-java/util/Collections$UnmodifiableList
-java/util/Collections$UnmodifiableCollection
+java/util/PropertyResourceBundle
+java/util/Queue
+java/util/Random
+java/util/RandomAccess
java/util/ResourceBundle
java/util/ResourceBundle$1
+java/util/ResourceBundle$BundleReference
+java/util/ResourceBundle$CacheKey
+java/util/ResourceBundle$CacheKeyReference
+java/util/ResourceBundle$Control
+java/util/ResourceBundle$Control$1
+java/util/ResourceBundle$Control$CandidateListCache
+java/util/ResourceBundle$LoaderReference
java/util/ResourceBundle$RBClassLoader
java/util/ResourceBundle$RBClassLoader$1
-java/util/ResourceBundle$CacheKey
-java/util/ResourceBundle$LoaderReference
-java/util/ResourceBundle$CacheKeyReference
java/util/ResourceBundle$SingleFormatControl
-sun/awt/resources/awt
-java/util/ListResourceBundle
-java/awt/Toolkit$1
-java/io/FileNotFoundException
-java/io/IOException
-java/awt/event/KeyEvent
-java/awt/event/InputEvent
-java/awt/event/ComponentEvent
-java/awt/AWTEvent
-java/awt/event/NativeLibLoader
+java/util/ServiceLoader
+java/util/ServiceLoader$1
+java/util/ServiceLoader$LazyIterator
+java/util/Set
+java/util/SortedMap
+java/util/Stack
+java/util/StringTokenizer
+java/util/TimSort
+java/util/TimeZone
+java/util/TimeZone$1
+java/util/TreeMap
+java/util/TreeMap$Entry
+java/util/Vector
+java/util/Vector$1
+java/util/Vector$Itr
+java/util/Vector$ListItr
java/util/WeakHashMap
java/util/WeakHashMap$Entry
-java/awt/Component$DummyRequestFocusController
-sun/awt/RequestFocusController
-java/awt/LayoutManager
-java/awt/LightweightDispatcher
-java/awt/event/AWTEventListener
-java/util/EventListener
-java/awt/Dimension
-java/awt/geom/Dimension2D
+java/util/WeakHashMap$KeySet
+java/util/concurrent/AbstractExecutorService
+java/util/concurrent/BlockingQueue
+java/util/concurrent/ConcurrentHashMap
+java/util/concurrent/ConcurrentHashMap$BaseIterator
+java/util/concurrent/ConcurrentHashMap$CollectionView
+java/util/concurrent/ConcurrentHashMap$CounterCell
+java/util/concurrent/ConcurrentHashMap$EntrySetView
+java/util/concurrent/ConcurrentHashMap$ForwardingNode
+java/util/concurrent/ConcurrentHashMap$KeyIterator
+java/util/concurrent/ConcurrentHashMap$KeySetView
+java/util/concurrent/ConcurrentHashMap$Node
+java/util/concurrent/ConcurrentHashMap$Segment
+java/util/concurrent/ConcurrentHashMap$Traverser
+java/util/concurrent/ConcurrentHashMap$ValueIterator
+java/util/concurrent/ConcurrentHashMap$ValuesView
+java/util/concurrent/ConcurrentMap
+java/util/concurrent/CopyOnWriteArrayList
+java/util/concurrent/DelayQueue
+java/util/concurrent/Delayed
+java/util/concurrent/Executor
+java/util/concurrent/ExecutorService
+java/util/concurrent/Executors
+java/util/concurrent/RejectedExecutionHandler
+java/util/concurrent/SynchronousQueue
+java/util/concurrent/SynchronousQueue$TransferStack
+java/util/concurrent/SynchronousQueue$TransferStack$SNode
+java/util/concurrent/SynchronousQueue$Transferer
+java/util/concurrent/ThreadFactory
+java/util/concurrent/ThreadPoolExecutor
+java/util/concurrent/ThreadPoolExecutor$AbortPolicy
+java/util/concurrent/ThreadPoolExecutor$Worker
+java/util/concurrent/TimeUnit
+java/util/concurrent/TimeUnit$1
+java/util/concurrent/TimeUnit$2
+java/util/concurrent/TimeUnit$3
+java/util/concurrent/TimeUnit$4
+java/util/concurrent/TimeUnit$5
+java/util/concurrent/TimeUnit$6
+java/util/concurrent/TimeUnit$7
java/util/concurrent/atomic/AtomicBoolean
-java/awt/ComponentOrientation
-java/awt/Component$2
-java/lang/NoSuchMethodException
-sun/awt/AppContext
-sun/awt/AppContext$1
-sun/awt/AppContext$2
-sun/awt/MostRecentKeyValue
-java/awt/Cursor
-sun/awt/X11GraphicsEnvironment
-sun/java2d/SunGraphicsEnvironment
-sun/java2d/FontSupport
-sun/awt/DisplayChangedListener
-java/io/FilenameFilter
-sun/awt/X11GraphicsEnvironment$1
-sun/awt/SunToolkit
-sun/awt/WindowClosingSupport
-sun/awt/WindowClosingListener
-sun/awt/ComponentFactory
-sun/awt/InputMethodSupport
+java/util/concurrent/atomic/AtomicInteger
+java/util/concurrent/atomic/AtomicLong
+java/util/concurrent/atomic/AtomicMarkableReference
+java/util/concurrent/atomic/AtomicMarkableReference$Pair
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl$1
+java/util/concurrent/locks/AbstractOwnableSynchronizer
+java/util/concurrent/locks/AbstractQueuedSynchronizer
java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
+java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
java/util/concurrent/locks/Condition
-sun/awt/AWTAutoShutdown
-sun/awt/SunToolkit$6
-java/awt/Dialog$ModalExclusionType
-java/lang/Enum
-java/awt/Dialog
-java/awt/Dialog$ModalityType
-java/awt/ModalEventFilter
-java/awt/EventFilter
-sun/reflect/UnsafeFieldAccessorFactory
-sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
-sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
-sun/awt/SunDisplayChanger
-sun/java2d/SunGraphicsEnvironment$1
-java/io/StreamTokenizer
-sun/font/FontManager
-sun/font/FileFont
-sun/font/PhysicalFont
-sun/font/Font2D
-sun/font/CompositeFont
-java/util/HashMap$Values
-java/util/HashMap$ValueIterator
-java/util/HashMap$HashIterator
-java/awt/Font
-java/awt/geom/AffineTransform
-sun/font/AttributeValues
-sun/font/EAttribute
-java/text/AttributedCharacterIterator$Attribute
-java/lang/Class$4
-sun/reflect/NativeMethodAccessorImpl
-sun/reflect/DelegatingMethodAccessorImpl
-java/awt/font/TextAttribute
-java/lang/Integer$IntegerCache
-sun/font/TrueTypeFont
-java/awt/font/FontRenderContext
-java/awt/RenderingHints
-sun/awt/SunHints
-sun/awt/SunHints$Key
-java/awt/RenderingHints$Key
-sun/awt/SunHints$Value
-sun/awt/SunHints$LCDContrastKey
-sun/font/Type1Font
-java/awt/geom/Point2D$Float
-java/awt/geom/Point2D
-sun/font/StrikeMetrics
-java/awt/geom/Rectangle2D$Float
-java/awt/geom/Rectangle2D
-java/awt/geom/RectangularShape
-java/awt/Shape
-java/awt/geom/GeneralPath
-java/awt/geom/Path2D$Float
-java/awt/geom/Path2D
-sun/font/CharToGlyphMapper
-sun/font/PhysicalStrike
-sun/font/FontStrike
-sun/font/GlyphList
-sun/font/StrikeCache
-sun/java2d/Disposer
-sun/java2d/Disposer$1
-sun/font/StrikeCache$1
-sun/awt/motif/MFontConfiguration
-sun/awt/FontConfiguration
-sun/awt/FontDescriptor
-java/util/Scanner
-java/util/regex/Pattern
-java/util/regex/Pattern$Node
-java/util/regex/Pattern$LastNode
-java/util/regex/Pattern$GroupHead
-java/util/regex/Pattern$CharPropertyNames
-java/util/regex/Pattern$CharPropertyNames$1
-java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory
-java/util/regex/Pattern$CharPropertyNames$2
-java/util/regex/Pattern$CharPropertyNames$5
-java/util/regex/Pattern$CharPropertyNames$3
-java/util/regex/Pattern$CharPropertyNames$6
-java/util/regex/Pattern$CharPropertyNames$CloneableProperty
-java/util/regex/Pattern$CharProperty
-java/util/regex/Pattern$CharPropertyNames$4
-java/util/regex/Pattern$CharPropertyNames$7
-java/util/regex/Pattern$CharPropertyNames$8
-java/util/regex/Pattern$CharPropertyNames$9
-java/util/regex/Pattern$CharPropertyNames$10
-java/util/regex/Pattern$CharPropertyNames$11
-java/util/regex/Pattern$CharPropertyNames$12
-java/util/regex/Pattern$CharPropertyNames$13
-java/util/regex/Pattern$CharPropertyNames$14
-java/util/regex/Pattern$CharPropertyNames$15
-java/util/regex/Pattern$CharPropertyNames$16
-java/util/regex/Pattern$CharPropertyNames$17
-java/util/regex/Pattern$CharPropertyNames$18
-java/util/regex/Pattern$CharPropertyNames$19
-java/util/regex/Pattern$CharPropertyNames$20
-java/util/regex/Pattern$CharPropertyNames$21
-java/util/regex/Pattern$Curly
-java/util/regex/Pattern$Slice
-java/util/regex/Pattern$Begin
-java/util/regex/Pattern$First
-java/util/regex/Pattern$Start
-java/util/regex/Pattern$TreeInfo
-java/util/regex/Pattern$All
-java/util/regex/Pattern$BitClass
-java/util/regex/Pattern$BmpCharProperty
-java/util/regex/Pattern$6
-java/util/regex/Pattern$CharProperty$1
-sun/nio/ch/FileChannelImpl
-java/nio/channels/FileChannel
-java/nio/channels/ByteChannel
-java/nio/channels/ReadableByteChannel
-java/nio/channels/Channel
-java/nio/channels/WritableByteChannel
-java/nio/channels/GatheringByteChannel
-java/nio/channels/ScatteringByteChannel
-java/nio/channels/spi/AbstractInterruptibleChannel
-java/nio/channels/InterruptibleChannel
-sun/nio/ch/Util
-sun/nio/ch/IOUtil
-sun/nio/ch/FileDispatcher
-sun/nio/ch/NativeDispatcher
-sun/nio/ch/Reflect
-java/nio/MappedByteBuffer
-sun/nio/ch/Reflect$1
-sun/nio/ch/NativeThreadSet
-java/nio/channels/Channels
-java/util/Scanner$1
-sun/misc/LRUCache
-java/util/regex/Matcher
-java/util/regex/MatchResult
-java/text/NumberFormat
-java/text/Format
-java/text/spi/NumberFormatProvider
-java/util/spi/LocaleServiceProvider
-sun/util/LocaleServiceProviderPool
-sun/util/LocaleServiceProviderPool$1
-java/util/ServiceLoader
-java/util/ServiceLoader$LazyIterator
-java/util/ServiceLoader$1
-java/util/HashMap$EntrySet
-java/util/LinkedHashMap$EntryIterator
-sun/misc/Launcher$1
-sun/misc/URLClassPath$2
-java/lang/ClassLoader$2
-sun/misc/URLClassPath$1
-java/net/URLClassLoader$3
-sun/misc/CompoundEnumeration
-sun/misc/URLClassPath$JarLoader$1
-sun/misc/FileURLMapper
-java/net/URLClassLoader$3$1
-sun/util/resources/LocaleData
-sun/util/resources/LocaleData$1
-sun/util/resources/LocaleData$LocaleDataResourceBundleControl
-sun/util/LocaleDataMetaInfo
-sun/text/resources/FormatData
-java/util/ResourceBundle$BundleReference
-sun/text/resources/FormatData_en
-sun/text/resources/FormatData_en_US
-java/text/DecimalFormatSymbols
-java/text/spi/DecimalFormatSymbolsProvider
-java/util/Currency
-java/util/Currency$1
+java/util/concurrent/locks/Lock
+java/util/concurrent/locks/LockSupport
+java/util/concurrent/locks/ReentrantLock
+java/util/concurrent/locks/ReentrantLock$NonfairSync
+java/util/concurrent/locks/ReentrantLock$Sync
+java/util/function/BiFunction
+java/util/jar/Attributes
+java/util/jar/Attributes$Name
+java/util/jar/JarEntry
+java/util/jar/JarFile
+java/util/jar/JarFile$JarEntryIterator
+java/util/jar/JarFile$JarFileEntry
+java/util/jar/JarVerifier
+java/util/jar/JarVerifier$3
+java/util/jar/JavaUtilJarAccessImpl
+java/util/jar/Manifest
+java/util/jar/Manifest$FastInputStream
+java/util/logging/Handler
+java/util/logging/Level
+java/util/logging/Level$KnownLevel
+java/util/logging/LogManager
+java/util/logging/LogManager$1
+java/util/logging/LogManager$2
+java/util/logging/LogManager$3
+java/util/logging/LogManager$5
+java/util/logging/LogManager$Cleaner
+java/util/logging/LogManager$LogNode
+java/util/logging/LogManager$LoggerContext
+java/util/logging/LogManager$LoggerContext$1
+java/util/logging/LogManager$LoggerWeakRef
+java/util/logging/LogManager$RootLogger
+java/util/logging/LogManager$SystemLoggerContext
+java/util/logging/Logger
+java/util/logging/Logger$1
+java/util/logging/LoggingPermission
+java/util/logging/LoggingProxyImpl
+java/util/spi/CalendarDataProvider
java/util/spi/CurrencyNameProvider
-sun/util/resources/CurrencyNames
-sun/util/resources/LocaleNamesBundle
-sun/util/resources/OpenListResourceBundle
-sun/util/resources/CurrencyNames_en_US
-java/text/DecimalFormat
-java/text/FieldPosition
-java/text/DigitList
-java/math/RoundingMode
-java/util/regex/Pattern$GroupTail
-java/util/regex/Pattern$Ctype
-java/util/regex/Pattern$Ques
-java/util/regex/Pattern$GroupCurly
-java/util/regex/Pattern$5
-java/util/regex/Pattern$Loop
-java/util/regex/Pattern$Prolog
-java/util/regex/Pattern$BranchConn
-java/util/regex/Pattern$Branch
-java/nio/channels/spi/AbstractInterruptibleChannel$1
-sun/nio/ch/Interruptible
-sun/nio/ch/NativeThread
-sun/nio/ch/DirectBuffer
-java/nio/DirectByteBuffer
-java/nio/DirectByteBuffer$Deallocator
-sun/misc/Cleaner
-sun/nio/ch/IOStatus
-java/util/regex/ASCII
-java/io/DataInputStream
-java/io/DataInput
-java/lang/Short$ShortCache
-java/util/HashMap$KeyIterator
-sun/font/CompositeFontDescriptor
-sun/font/Font2DHandle
-sun/font/FontFamily
-java/awt/GraphicsDevice
-sun/awt/X11GraphicsDevice
-sun/awt/X11GraphicsConfig
-java/awt/GraphicsConfiguration
-java/awt/ImageCapabilities
-sun/java2d/x11/X11SurfaceData
-sun/java2d/SurfaceData
-java/awt/Transparency
-sun/java2d/DisposerTarget
-sun/java2d/InvalidPipeException
-java/lang/IllegalStateException
-sun/java2d/NullSurfaceData
-sun/java2d/loops/SurfaceType
-sun/awt/image/PixelConverter
-sun/awt/image/PixelConverter$Xrgb
-sun/awt/image/PixelConverter$Argb
-sun/awt/image/PixelConverter$ArgbPre
-sun/awt/image/PixelConverter$Xbgr
-sun/awt/image/PixelConverter$Rgba
-sun/awt/image/PixelConverter$RgbaPre
-sun/awt/image/PixelConverter$Ushort565Rgb
-sun/awt/image/PixelConverter$Ushort555Rgb
-sun/awt/image/PixelConverter$Ushort555Rgbx
-sun/awt/image/PixelConverter$Ushort4444Argb
-sun/awt/image/PixelConverter$ByteGray
-sun/awt/image/PixelConverter$UshortGray
-sun/awt/image/PixelConverter$Rgbx
-sun/awt/image/PixelConverter$Bgrx
-sun/awt/image/PixelConverter$ArgbBm
-java/awt/image/ColorModel
-java/awt/image/DirectColorModel
-java/awt/image/PackedColorModel
-java/awt/color/ColorSpace
-java/awt/color/ICC_Profile
-java/awt/color/ICC_ProfileRGB
-java/awt/color/ICC_Profile$1
-java/awt/color/ICC_ColorSpace
-sun/java2d/pipe/NullPipe
-sun/java2d/pipe/PixelDrawPipe
-sun/java2d/pipe/PixelFillPipe
-sun/java2d/pipe/ShapeDrawPipe
-sun/java2d/pipe/TextPipe
-sun/java2d/pipe/DrawImagePipe
-java/awt/image/IndexColorModel
-sun/java2d/pipe/LoopPipe
-sun/java2d/pipe/OutlineTextRenderer
-sun/java2d/pipe/SolidTextRenderer
-sun/java2d/pipe/GlyphListLoopPipe
-sun/java2d/pipe/GlyphListPipe
-sun/java2d/pipe/AATextRenderer
-sun/java2d/pipe/LCDTextRenderer
-sun/java2d/pipe/AlphaColorPipe
-sun/java2d/pipe/CompositePipe
-sun/java2d/pipe/PixelToShapeConverter
-sun/java2d/pipe/TextRenderer
-sun/java2d/pipe/SpanClipRenderer
-sun/java2d/pipe/Region
-sun/java2d/pipe/RegionIterator
-sun/java2d/pipe/AlphaPaintPipe
-sun/java2d/pipe/SpanShapeRenderer$Composite
-sun/java2d/pipe/SpanShapeRenderer
-sun/java2d/pipe/GeneralCompositePipe
-sun/java2d/pipe/DrawImage
-sun/java2d/loops/RenderCache
-sun/java2d/loops/RenderCache$Entry
-sun/java2d/loops/XORComposite
-java/awt/Composite
-sun/font/X11TextRenderer
-sun/java2d/loops/GraphicsPrimitive
-sun/java2d/x11/X11PMBlitLoops
-sun/java2d/loops/Blit
-sun/java2d/loops/GraphicsPrimitiveMgr
-sun/java2d/loops/CompositeType
-sun/java2d/SunGraphics2D
-sun/awt/ConstrainableGraphics
-java/awt/Graphics2D
-java/awt/Graphics
-java/awt/Color
-java/awt/Paint
-java/awt/AlphaComposite
-sun/java2d/loops/BlitBg
-sun/java2d/loops/ScaledBlit
-sun/java2d/loops/FillRect
-sun/java2d/loops/FillSpans
-sun/java2d/loops/DrawLine
-sun/java2d/loops/DrawRect
-sun/java2d/loops/DrawPolygons
-sun/java2d/loops/DrawPath
-sun/java2d/loops/FillPath
-sun/java2d/loops/MaskBlit
-sun/java2d/loops/MaskFill
-sun/java2d/loops/DrawGlyphList
-sun/java2d/loops/DrawGlyphListAA
-sun/java2d/loops/DrawGlyphListLCD
-sun/java2d/loops/TransformHelper
-java/awt/BasicStroke
-java/awt/Stroke
-sun/misc/PerformanceLogger
-sun/misc/PerformanceLogger$TimeData
-sun/java2d/pipe/ValidatePipe
-sun/java2d/loops/CustomComponent
-sun/java2d/loops/GraphicsPrimitiveProxy
-sun/java2d/loops/GeneralRenderer
-sun/java2d/loops/GraphicsPrimitiveMgr$1
-sun/java2d/loops/GraphicsPrimitiveMgr$2
-sun/java2d/x11/X11PMBlitLoops$DelegateBlitLoop
-sun/java2d/x11/X11PMBlitBgLoops
-sun/java2d/x11/X11SurfaceData$LazyPipe
-sun/awt/X11GraphicsConfig$X11GCDisposerRecord
-sun/java2d/DisposerRecord
-java/awt/BorderLayout
-java/awt/LayoutManager2
-java/awt/Rectangle
-java/awt/Toolkit$2
-sun/awt/X11/XToolkit
-sun/awt/X11/XConstants
-sun/awt/UNIXToolkit
-java/util/TreeMap
-java/util/NavigableMap
-java/util/SortedMap
-sun/awt/X11/XlibWrapper
-sun/awt/X11/XUtilConstants
-sun/awt/X11/XProtocolConstants
-sun/awt/X11/XCursorFontConstants
-sun/awt/X11/XlibWrapper$1
-sun/awt/X11/XToolkit$4
-sun/awt/X11/XModifierKeymap
-sun/awt/X11/XWrapperBase
-sun/awt/X11/Native
-sun/awt/X11/Native$1
-java/awt/EventQueue
-java/util/EmptyStackException
-java/lang/reflect/InvocationTargetException
-java/awt/EventDispatchThread
-java/awt/event/PaintEvent
-java/awt/event/MouseEvent
-sun/awt/PeerEvent
-java/awt/event/InvocationEvent
-java/awt/ActiveEvent
-sun/awt/X11/XToolkit$1
-sun/awt/X11/XEventDispatcher
-sun/awt/SunToolkit$ModalityListenerList
-sun/awt/ModalityListener
-sun/awt/SunToolkit$1
-java/util/MissingResourceException
-java/awt/Queue
-sun/awt/PostEventQueue
-java/util/LinkedList
-java/util/Deque
-java/util/Queue
-java/util/AbstractSequentialList
-sun/awt/X11/AwtScreenData
-sun/awt/X11/XWM
-sun/awt/X11/MWMConstants
-sun/awt/X11/XAtom
-java/awt/Insets
-sun/awt/X11/XWM$1
-sun/awt/X11/XSetWindowAttributes
-sun/awt/X11/XErrorEvent
-sun/awt/X11/XNETProtocol
-sun/awt/X11/XStateProtocol
-sun/awt/X11/XLayerProtocol
-sun/awt/X11/XProtocol
-sun/awt/X11/WindowPropertyGetter
-sun/awt/X11/UnsafeXDisposerRecord
-sun/awt/X11/XPropertyCache
-sun/awt/X11/XWINProtocol
-sun/awt/X11/XAtomList
-sun/awt/X11/XToolkit$3
-sun/awt/X11/XAnyEvent
-java/awt/Window$WindowDisposerRecord
-java/awt/KeyboardFocusManager
-java/awt/KeyEventDispatcher
-java/awt/KeyEventPostProcessor
-java/awt/AWTKeyStroke
-java/awt/AWTKeyStroke$1
-java/awt/DefaultKeyboardFocusManager
-java/awt/DefaultFocusTraversalPolicy
-java/awt/ContainerOrderFocusTraversalPolicy
-java/awt/FocusTraversalPolicy
-java/util/Collections$UnmodifiableSet
-sun/awt/HeadlessToolkit
-sun/awt/X11/XKeyboardFocusManagerPeer
-java/awt/peer/KeyboardFocusManagerPeer
-sun/awt/X11/XKeyboardFocusManagerPeer$1
-sun/awt/X11/XFramePeer
-java/awt/peer/FramePeer
-java/awt/peer/WindowPeer
-java/awt/peer/ContainerPeer
-java/awt/peer/ComponentPeer
-sun/awt/X11/XDecoratedPeer
-sun/awt/X11/XWindowPeer
-sun/awt/X11/XPanelPeer
-java/awt/peer/PanelPeer
-sun/awt/X11/XCanvasPeer
-java/awt/peer/CanvasPeer
-sun/awt/X11/XComponentPeer
-java/awt/dnd/peer/DropTargetPeer
-sun/awt/X11/XWindow
-sun/awt/X11ComponentPeer
-sun/awt/X11/XBaseWindow
-sun/awt/X11/XCreateWindowParams
-java/lang/Long$LongCache
-sun/awt/X11/XBaseWindow$InitialiseState
-sun/awt/X11/XBaseWindow$StateLock
-sun/awt/X11/AwtGraphicsConfigData
-sun/awt/X11/XVisualInfo
-java/awt/SystemColor
-sun/awt/X11/MotifColorUtilities
-java/lang/StrictMath
-sun/awt/X11/XRepaintArea
-sun/awt/RepaintArea
-sun/awt/X11/XWindowAttributesData
-java/util/concurrent/locks/LockSupport
-sun/awt/X11/WindowDimensions
-java/awt/Point
-java/util/TreeMap$Entry
-sun/nio/cs/UTF_8
-sun/nio/cs/Unicode
-sun/nio/cs/UTF_8$Encoder
-sun/nio/cs/UTF_8$Decoder
-sun/nio/cs/Surrogate$Generator
-sun/awt/X11/XPropertyEvent
-sun/awt/X11/XDropTargetEventProcessor
-sun/awt/X11/XDragSourceContextPeer
-sun/awt/X11/XDragSourceProtocolListener
-sun/awt/dnd/SunDragSourceContextPeer
-java/awt/dnd/peer/DragSourceContextPeer
-sun/awt/X11/XAwtState
-sun/awt/X11/XBaseWindow$1
-sun/awt/X11/XRootWindow
-sun/nio/cs/ISO_8859_1
-sun/nio/cs/ISO_8859_1$Encoder
-sun/nio/cs/ISO_8859_1$Decoder
-sun/java2d/x11/X11SurfaceData$X11WindowSurfaceData
-sun/java2d/loops/RenderLoops
-sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
-sun/java2d/DefaultDisposerRecord
-sun/java2d/x11/X11Renderer
-sun/awt/X11/XGlobalCursorManager
-sun/awt/GlobalCursorManager
-java/awt/Cursor$CursorDisposer
-java/awt/AWTException
-java/awt/HeadlessException
-java/lang/UnsupportedOperationException
-sun/reflect/UnsafeLongFieldAccessorImpl
-sun/reflect/UnsafeIntegerFieldAccessorImpl
-sun/awt/X11/XClientMessageEvent
-sun/awt/X11/XIconInfo
-sun/awt/X11/XAWTIcon32_java_icon16_png
-sun/awt/X11/XAWTIcon32_java_icon24_png
-sun/awt/X11/XAWTIcon32_java_icon32_png
-sun/awt/X11/XAWTIcon32_java_icon48_png
-sun/awt/X11/XSizeHints
-sun/awt/X11/XContentWindow
-sun/awt/X11/XFocusProxyWindow
-sun/awt/X11/XWMHints
-java/util/LinkedList$ListItr
-java/util/ListIterator
-sun/awt/SunToolkit$2
-java/awt/image/BufferStrategy
-java/awt/dnd/DropTarget
-java/awt/dnd/DropTargetListener
-java/awt/event/ComponentListener
-java/awt/event/FocusListener
-java/awt/event/HierarchyListener
-java/awt/event/HierarchyBoundsListener
-java/awt/event/KeyListener
-java/awt/event/MouseListener
-java/awt/event/MouseMotionListener
-java/awt/event/MouseWheelListener
-java/awt/event/InputMethodListener
-java/awt/event/ContainerListener
+java/util/spi/LocaleNameProvider
+java/util/spi/LocaleServiceProvider
+java/util/spi/ResourceBundleControlProvider
+java/util/spi/TimeZoneNameProvider
+java/util/zip/CRC32
+java/util/zip/Checksum
+java/util/zip/DeflaterOutputStream
+java/util/zip/GZIPInputStream
+java/util/zip/Inflater
+java/util/zip/InflaterInputStream
+java/util/zip/ZStreamRef
+java/util/zip/ZipCoder
+java/util/zip/ZipConstants
+java/util/zip/ZipEntry
+java/util/zip/ZipFile
+java/util/zip/ZipFile$1
+java/util/zip/ZipFile$ZipEntryIterator
+java/util/zip/ZipFile$ZipFileInflaterInputStream
+java/util/zip/ZipFile$ZipFileInputStream
+java/util/zip/ZipInputStream
+java/util/zip/ZipUtils
+javax/accessibility/Accessible
+javax/accessibility/AccessibleAction
+javax/accessibility/AccessibleBundle
+javax/accessibility/AccessibleComponent
javax/accessibility/AccessibleContext
-sun/reflect/UnsafeObjectFieldAccessorImpl
-java/awt/peer/LightweightPeer
-sun/awt/X11/XLabelPeer
-java/awt/peer/LabelPeer
-sun/awt/X11/XMapEvent
-sun/awt/X11/XQueryTree
-sun/awt/X11/XConfigureEvent
-sun/awt/X11/PropMwmHints
-sun/awt/GlobalCursorManager$NativeUpdater
-javax/swing/JFrame
-javax/swing/WindowConstants
-javax/swing/RootPaneContainer
-javax/swing/TransferHandler$HasGetTransferHandler
-javax/swing/JLabel
-javax/swing/SwingConstants
+javax/accessibility/AccessibleExtendedComponent
+javax/accessibility/AccessibleRelationSet
+javax/accessibility/AccessibleState
+javax/accessibility/AccessibleText
+javax/accessibility/AccessibleValue
+javax/security/auth/Destroyable
+javax/sound/sampled/Control$Type
+javax/sound/sampled/DataLine
+javax/sound/sampled/DataLine$Info
+javax/sound/sampled/FloatControl$Type
+javax/sound/sampled/Line
+javax/sound/sampled/Line$Info
+javax/sound/sampled/LineUnavailableException
+javax/sound/sampled/UnsupportedAudioFileException
+javax/swing/AbstractAction
+javax/swing/AbstractButton
+javax/swing/AbstractButton$AccessibleAbstractButton
+javax/swing/AbstractButton$Handler
+javax/swing/AbstractCellEditor
+javax/swing/AbstractListModel
+javax/swing/Action
+javax/swing/ActionMap
+javax/swing/AncestorNotifier
+javax/swing/ArrayTable
+javax/swing/BorderFactory
+javax/swing/BoundedRangeModel
+javax/swing/Box
+javax/swing/Box$Filler
+javax/swing/BoxLayout
+javax/swing/BufferStrategyPaintManager
+javax/swing/BufferStrategyPaintManager$BufferInfo
+javax/swing/ButtonGroup
+javax/swing/ButtonModel
+javax/swing/CellEditor
+javax/swing/CellRendererPane
+javax/swing/ClientPropertyKey
+javax/swing/ClientPropertyKey$1
+javax/swing/ComboBoxEditor
+javax/swing/ComboBoxModel
+javax/swing/ComponentInputMap
+javax/swing/DefaultBoundedRangeModel
+javax/swing/DefaultButtonModel
+javax/swing/DefaultCellEditor
+javax/swing/DefaultCellEditor$1
+javax/swing/DefaultCellEditor$EditorDelegate
+javax/swing/DefaultComboBoxModel
+javax/swing/DefaultListCellRenderer
+javax/swing/DefaultListCellRenderer$UIResource
+javax/swing/DefaultListModel
+javax/swing/DefaultListSelectionModel
+javax/swing/DefaultSingleSelectionModel
+javax/swing/DropMode
+javax/swing/FocusManager
+javax/swing/GrayFilter
+javax/swing/Icon
+javax/swing/ImageIcon
+javax/swing/ImageIcon$1
+javax/swing/ImageIcon$2
+javax/swing/ImageIcon$2$1
+javax/swing/ImageIcon$3
+javax/swing/InputMap
+javax/swing/InternalFrameFocusTraversalPolicy
+javax/swing/JButton
+javax/swing/JCheckBox
+javax/swing/JCheckBoxMenuItem
+javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem
+javax/swing/JComboBox
+javax/swing/JComboBox$1
+javax/swing/JComboBox$KeySelectionManager
javax/swing/JComponent
javax/swing/JComponent$1
-javax/swing/SwingUtilities
-javax/swing/JRootPane
-sun/security/action/GetBooleanAction
-javax/swing/event/EventListenerList
+javax/swing/JComponent$2
+javax/swing/JComponent$AccessibleJComponent
+javax/swing/JDialog
+javax/swing/JEditorPane
+javax/swing/JFrame
+javax/swing/JInternalFrame
+javax/swing/JLabel
+javax/swing/JLayer
+javax/swing/JLayeredPane
+javax/swing/JList
+javax/swing/JList$3
+javax/swing/JList$ListSelectionHandler
+javax/swing/JMenu
+javax/swing/JMenu$MenuChangeListener
+javax/swing/JMenu$WinListener
+javax/swing/JMenuBar
+javax/swing/JMenuItem
+javax/swing/JMenuItem$AccessibleJMenuItem
+javax/swing/JMenuItem$MenuItemFocusListener
javax/swing/JPanel
-java/awt/FlowLayout
-javax/swing/UIManager
-javax/swing/UIManager$LookAndFeelInfo
-sun/swing/SwingUtilities2
-sun/swing/SwingUtilities2$LSBCacheEntry
-javax/swing/UIManager$LAFState
+javax/swing/JPopupMenu
+javax/swing/JPopupMenu$Separator
+javax/swing/JProgressBar
+javax/swing/JProgressBar$ModelListener
+javax/swing/JRadioButton
+javax/swing/JRadioButtonMenuItem
+javax/swing/JRootPane
+javax/swing/JRootPane$1
+javax/swing/JRootPane$RootLayout
+javax/swing/JScrollBar
+javax/swing/JScrollBar$ModelListener
+javax/swing/JScrollPane
+javax/swing/JScrollPane$ScrollBar
+javax/swing/JSeparator
+javax/swing/JSlider
+javax/swing/JSlider$ModelListener
+javax/swing/JSplitPane
+javax/swing/JTabbedPane
+javax/swing/JTabbedPane$ModelListener
+javax/swing/JTabbedPane$Page
+javax/swing/JTable
+javax/swing/JTable$2
+javax/swing/JTable$5
+javax/swing/JTable$Resizable2
+javax/swing/JTable$Resizable3
+javax/swing/JTextArea
+javax/swing/JTextField
+javax/swing/JTextField$NotifyAction
+javax/swing/JTextField$ScrollRepainter
+javax/swing/JToggleButton
+javax/swing/JToggleButton$ToggleButtonModel
+javax/swing/JToolBar
+javax/swing/JToolBar$DefaultToolBarLayout
+javax/swing/JToolBar$Separator
+javax/swing/JToolTip
+javax/swing/JTree
+javax/swing/JTree$TreeModelHandler
+javax/swing/JTree$TreeSelectionRedirector
+javax/swing/JViewport
+javax/swing/JViewport$ViewListener
+javax/swing/JWindow
+javax/swing/KeyStroke
+javax/swing/KeyboardManager
+javax/swing/KeyboardManager$ComponentKeyStrokePair
+javax/swing/LayoutComparator
+javax/swing/LayoutFocusTraversalPolicy
+javax/swing/ListCellRenderer
+javax/swing/ListModel
+javax/swing/ListSelectionModel
+javax/swing/LookAndFeel
+javax/swing/MenuElement
+javax/swing/MenuSelectionManager
+javax/swing/MultiUIDefaults
+javax/swing/MutableComboBoxModel
+javax/swing/RepaintManager
+javax/swing/RepaintManager$2
+javax/swing/RepaintManager$3
+javax/swing/RepaintManager$DisplayChangedHandler
+javax/swing/RepaintManager$PaintManager
+javax/swing/RepaintManager$ProcessingRunnable
+javax/swing/RootPaneContainer
+javax/swing/ScrollPaneConstants
+javax/swing/ScrollPaneLayout
+javax/swing/ScrollPaneLayout$UIResource
+javax/swing/Scrollable
+javax/swing/SingleSelectionModel
+javax/swing/SizeRequirements
+javax/swing/SortingFocusTraversalPolicy
+javax/swing/SwingConstants
+javax/swing/SwingContainerOrderFocusTraversalPolicy
+javax/swing/SwingDefaultFocusTraversalPolicy
+javax/swing/SwingPaintEventDispatcher
+javax/swing/SwingUtilities
+javax/swing/SwingUtilities$SharedOwnerFrame
+javax/swing/Timer
+javax/swing/Timer$DoPostEvent
+javax/swing/TimerQueue
+javax/swing/TimerQueue$1
+javax/swing/TimerQueue$DelayedTimer
+javax/swing/ToolTipManager
+javax/swing/ToolTipManager$AccessibilityKeyListener
+javax/swing/ToolTipManager$MoveBeforeEnterListener
+javax/swing/ToolTipManager$insideTimerAction
+javax/swing/ToolTipManager$outsideTimerAction
+javax/swing/ToolTipManager$stillInsideTimerAction
+javax/swing/TransferHandler
+javax/swing/TransferHandler$DropHandler
+javax/swing/TransferHandler$HasGetTransferHandler
+javax/swing/TransferHandler$SwingDropTarget
+javax/swing/TransferHandler$TransferAction
+javax/swing/TransferHandler$TransferSupport
javax/swing/UIDefaults
-javax/swing/MultiUIDefaults
+javax/swing/UIDefaults$ActiveValue
+javax/swing/UIDefaults$LazyInputMap
+javax/swing/UIDefaults$LazyValue
+javax/swing/UIDefaults$TextAndMnemonicHashMap
+javax/swing/UIManager
javax/swing/UIManager$1
-javax/swing/plaf/metal/MetalLookAndFeel
+javax/swing/UIManager$2
+javax/swing/UIManager$LAFState
+javax/swing/UIManager$LookAndFeelInfo
+javax/swing/UnsupportedLookAndFeelException
+javax/swing/ViewportLayout
+javax/swing/WindowConstants
+javax/swing/border/AbstractBorder
+javax/swing/border/BevelBorder
+javax/swing/border/Border
+javax/swing/border/CompoundBorder
+javax/swing/border/EmptyBorder
+javax/swing/border/EtchedBorder
+javax/swing/border/LineBorder
+javax/swing/border/MatteBorder
+javax/swing/border/TitledBorder
+javax/swing/event/AncestorEvent
+javax/swing/event/AncestorListener
+javax/swing/event/CaretEvent
+javax/swing/event/CaretListener
+javax/swing/event/CellEditorListener
+javax/swing/event/ChangeEvent
+javax/swing/event/ChangeListener
+javax/swing/event/DocumentEvent
+javax/swing/event/DocumentEvent$ElementChange
+javax/swing/event/DocumentEvent$EventType
+javax/swing/event/DocumentListener
+javax/swing/event/EventListenerList
+javax/swing/event/ListDataEvent
+javax/swing/event/ListDataListener
+javax/swing/event/ListSelectionEvent
+javax/swing/event/ListSelectionListener
+javax/swing/event/MenuDragMouseListener
+javax/swing/event/MenuEvent
+javax/swing/event/MenuKeyListener
+javax/swing/event/MenuListener
+javax/swing/event/MouseInputAdapter
+javax/swing/event/MouseInputListener
+javax/swing/event/PopupMenuListener
+javax/swing/event/RowSorterListener
+javax/swing/event/SwingPropertyChangeSupport
+javax/swing/event/TableColumnModelEvent
+javax/swing/event/TableColumnModelListener
+javax/swing/event/TableModelEvent
+javax/swing/event/TableModelListener
+javax/swing/event/TreeExpansionListener
+javax/swing/event/TreeModelEvent
+javax/swing/event/TreeModelListener
+javax/swing/event/TreeSelectionEvent
+javax/swing/event/TreeSelectionListener
+javax/swing/event/UndoableEditEvent
+javax/swing/event/UndoableEditListener
+javax/swing/filechooser/FileFilter
+javax/swing/plaf/ActionMapUIResource
+javax/swing/plaf/BorderUIResource
+javax/swing/plaf/BorderUIResource$CompoundBorderUIResource
+javax/swing/plaf/BorderUIResource$EmptyBorderUIResource
+javax/swing/plaf/BorderUIResource$LineBorderUIResource
+javax/swing/plaf/ButtonUI
+javax/swing/plaf/ColorUIResource
+javax/swing/plaf/ComboBoxUI
+javax/swing/plaf/ComponentInputMapUIResource
+javax/swing/plaf/ComponentUI
+javax/swing/plaf/DimensionUIResource
+javax/swing/plaf/FontUIResource
+javax/swing/plaf/InputMapUIResource
+javax/swing/plaf/InsetsUIResource
+javax/swing/plaf/LabelUI
+javax/swing/plaf/ListUI
+javax/swing/plaf/MenuBarUI
+javax/swing/plaf/MenuItemUI
+javax/swing/plaf/PanelUI
+javax/swing/plaf/PopupMenuUI
+javax/swing/plaf/ProgressBarUI
+javax/swing/plaf/RootPaneUI
+javax/swing/plaf/ScrollBarUI
+javax/swing/plaf/ScrollPaneUI
+javax/swing/plaf/SeparatorUI
+javax/swing/plaf/SliderUI
+javax/swing/plaf/SplitPaneUI
+javax/swing/plaf/TabbedPaneUI
+javax/swing/plaf/TableHeaderUI
+javax/swing/plaf/TableUI
+javax/swing/plaf/TextUI
+javax/swing/plaf/ToolBarUI
+javax/swing/plaf/TreeUI
+javax/swing/plaf/UIResource
+javax/swing/plaf/ViewportUI
+javax/swing/plaf/basic/BasicArrowButton
+javax/swing/plaf/basic/BasicBorders
+javax/swing/plaf/basic/BasicBorders$ButtonBorder
+javax/swing/plaf/basic/BasicBorders$MarginBorder
+javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
+javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
+javax/swing/plaf/basic/BasicBorders$SplitPaneBorder
+javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder
+javax/swing/plaf/basic/BasicButtonListener
+javax/swing/plaf/basic/BasicButtonUI
+javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
+javax/swing/plaf/basic/BasicComboBoxEditor
+javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
+javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
+javax/swing/plaf/basic/BasicComboBoxRenderer
+javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource
+javax/swing/plaf/basic/BasicComboBoxUI
+javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
+javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
+javax/swing/plaf/basic/BasicComboBoxUI$Handler
+javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicComboPopup
+javax/swing/plaf/basic/BasicComboPopup$1
+javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
+javax/swing/plaf/basic/BasicComboPopup$Handler
+javax/swing/plaf/basic/BasicGraphicsUtils
+javax/swing/plaf/basic/BasicHTML
+javax/swing/plaf/basic/BasicLabelUI
+javax/swing/plaf/basic/BasicListUI
+javax/swing/plaf/basic/BasicListUI$Handler
+javax/swing/plaf/basic/BasicListUI$ListTransferHandler
javax/swing/plaf/basic/BasicLookAndFeel
-javax/swing/LookAndFeel
-sun/swing/DefaultLookup
-javax/swing/plaf/metal/OceanTheme
+javax/swing/plaf/basic/BasicLookAndFeel$1
+javax/swing/plaf/basic/BasicLookAndFeel$2
+javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
+javax/swing/plaf/basic/BasicMenuBarUI
+javax/swing/plaf/basic/BasicMenuBarUI$Handler
+javax/swing/plaf/basic/BasicMenuItemUI
+javax/swing/plaf/basic/BasicMenuItemUI$Handler
+javax/swing/plaf/basic/BasicMenuUI
+javax/swing/plaf/basic/BasicMenuUI$Handler
+javax/swing/plaf/basic/BasicPanelUI
+javax/swing/plaf/basic/BasicPopupMenuUI
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1
+javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
+javax/swing/plaf/basic/BasicProgressBarUI
+javax/swing/plaf/basic/BasicProgressBarUI$Handler
+javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
+javax/swing/plaf/basic/BasicRadioButtonUI
+javax/swing/plaf/basic/BasicRootPaneUI
+javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
+javax/swing/plaf/basic/BasicScrollBarUI
+javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener
+javax/swing/plaf/basic/BasicScrollBarUI$Handler
+javax/swing/plaf/basic/BasicScrollBarUI$ModelListener
+javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener
+javax/swing/plaf/basic/BasicScrollBarUI$TrackListener
+javax/swing/plaf/basic/BasicScrollPaneUI
+javax/swing/plaf/basic/BasicScrollPaneUI$Handler
+javax/swing/plaf/basic/BasicSeparatorUI
+javax/swing/plaf/basic/BasicSliderUI
+javax/swing/plaf/basic/BasicSliderUI$Actions
+javax/swing/plaf/basic/BasicSliderUI$Handler
+javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicSliderUI$ScrollListener
+javax/swing/plaf/basic/BasicSliderUI$TrackListener
+javax/swing/plaf/basic/BasicSplitPaneDivider
+javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout
+javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler
+javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler
+javax/swing/plaf/basic/BasicSplitPaneUI
+javax/swing/plaf/basic/BasicSplitPaneUI$1
+javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager
+javax/swing/plaf/basic/BasicSplitPaneUI$Handler
+javax/swing/plaf/basic/BasicTabbedPaneUI
+javax/swing/plaf/basic/BasicTabbedPaneUI$Handler
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout
+javax/swing/plaf/basic/BasicTableHeaderUI
+javax/swing/plaf/basic/BasicTableHeaderUI$1
+javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler
+javax/swing/plaf/basic/BasicTableUI
+javax/swing/plaf/basic/BasicTableUI$Handler
+javax/swing/plaf/basic/BasicTableUI$TableTransferHandler
+javax/swing/plaf/basic/BasicTextAreaUI
+javax/swing/plaf/basic/BasicTextFieldUI
+javax/swing/plaf/basic/BasicTextUI
+javax/swing/plaf/basic/BasicTextUI$BasicCaret
+javax/swing/plaf/basic/BasicTextUI$BasicCursor
+javax/swing/plaf/basic/BasicTextUI$BasicHighlighter
+javax/swing/plaf/basic/BasicTextUI$DragListener
+javax/swing/plaf/basic/BasicTextUI$FocusAction
+javax/swing/plaf/basic/BasicTextUI$RootView
+javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
+javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
+javax/swing/plaf/basic/BasicTextUI$UpdateHandler
+javax/swing/plaf/basic/BasicToggleButtonUI
+javax/swing/plaf/basic/BasicToolBarSeparatorUI
+javax/swing/plaf/basic/BasicToolBarUI
+javax/swing/plaf/basic/BasicToolBarUI$DockingListener
+javax/swing/plaf/basic/BasicToolBarUI$Handler
+javax/swing/plaf/basic/BasicTreeUI
+javax/swing/plaf/basic/BasicTreeUI$Actions
+javax/swing/plaf/basic/BasicTreeUI$Handler
+javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler
+javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler
+javax/swing/plaf/basic/BasicViewportUI
+javax/swing/plaf/basic/ComboPopup
+javax/swing/plaf/basic/DefaultMenuLayout
+javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
+javax/swing/plaf/basic/LazyActionMap
javax/swing/plaf/metal/DefaultMetalTheme
-javax/swing/plaf/metal/MetalTheme
-javax/swing/plaf/ColorUIResource
-javax/swing/plaf/UIResource
-sun/swing/PrintColorUIResource
javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
-javax/swing/plaf/FontUIResource
-sun/swing/SwingLazyValue
-javax/swing/UIDefaults$LazyValue
-javax/swing/UIDefaults$ActiveValue
-javax/swing/plaf/InsetsUIResource
-sun/swing/SwingUtilities2$2
-javax/swing/plaf/basic/BasicLookAndFeel$2
-javax/swing/plaf/DimensionUIResource
-javax/swing/UIDefaults$LazyInputMap
-java/lang/Character$CharacterCache
-javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
+javax/swing/plaf/metal/MetalBorders
+javax/swing/plaf/metal/MetalBorders$ButtonBorder
+javax/swing/plaf/metal/MetalBorders$Flush3DBorder
+javax/swing/plaf/metal/MetalBorders$MenuBarBorder
+javax/swing/plaf/metal/MetalBorders$MenuItemBorder
+javax/swing/plaf/metal/MetalBorders$PopupMenuBorder
+javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder
+javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder
+javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder
+javax/swing/plaf/metal/MetalBorders$TextFieldBorder
+javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder
+javax/swing/plaf/metal/MetalBorders$ToolBarBorder
+javax/swing/plaf/metal/MetalBumps
+javax/swing/plaf/metal/MetalButtonUI
+javax/swing/plaf/metal/MetalCheckBoxUI
+javax/swing/plaf/metal/MetalComboBoxButton
+javax/swing/plaf/metal/MetalComboBoxButton$1
+javax/swing/plaf/metal/MetalComboBoxEditor
+javax/swing/plaf/metal/MetalComboBoxEditor$1
+javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder
+javax/swing/plaf/metal/MetalComboBoxEditor$UIResource
+javax/swing/plaf/metal/MetalComboBoxIcon
+javax/swing/plaf/metal/MetalComboBoxUI
+javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager
+javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener
+javax/swing/plaf/metal/MetalIconFactory
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon
+javax/swing/plaf/metal/MetalIconFactory$FolderIcon16
+javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon
+javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon
+javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon
+javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon
+javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon
+javax/swing/plaf/metal/MetalLabelUI
+javax/swing/plaf/metal/MetalLookAndFeel
+javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue
-java/awt/print/PrinterJob
-sun/swing/SwingUtilities2$AATextInfo
-sun/awt/X11/XAWTXSettings
-sun/awt/X11/XMSelectionListener
-sun/awt/XSettings
-sun/awt/X11/XMSelection
-sun/awt/X11/XMSelection$1
-javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
-java/beans/PropertyChangeListener
-java/beans/PropertyChangeListenerProxy
-java/util/EventListenerProxy
-sun/awt/EventListenerAggregate
-javax/swing/UIDefaults$ProxyLazyValue
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
+javax/swing/plaf/metal/MetalPopupMenuSeparatorUI
+javax/swing/plaf/metal/MetalProgressBarUI
+javax/swing/plaf/metal/MetalRadioButtonUI
+javax/swing/plaf/metal/MetalRootPaneUI
+javax/swing/plaf/metal/MetalScrollBarUI
+javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener
+javax/swing/plaf/metal/MetalScrollButton
+javax/swing/plaf/metal/MetalScrollPaneUI
+javax/swing/plaf/metal/MetalScrollPaneUI$1
+javax/swing/plaf/metal/MetalSeparatorUI
+javax/swing/plaf/metal/MetalSliderUI
+javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
+javax/swing/plaf/metal/MetalSplitPaneDivider
+javax/swing/plaf/metal/MetalSplitPaneDivider$1
+javax/swing/plaf/metal/MetalSplitPaneDivider$2
+javax/swing/plaf/metal/MetalSplitPaneUI
+javax/swing/plaf/metal/MetalTabbedPaneUI
+javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/metal/MetalTextFieldUI
+javax/swing/plaf/metal/MetalTheme
+javax/swing/plaf/metal/MetalToggleButtonUI
+javax/swing/plaf/metal/MetalToolBarUI
+javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener
+javax/swing/plaf/metal/MetalTreeUI
+javax/swing/plaf/metal/MetalTreeUI$LineListener
+javax/swing/plaf/metal/OceanTheme
javax/swing/plaf/metal/OceanTheme$1
javax/swing/plaf/metal/OceanTheme$2
javax/swing/plaf/metal/OceanTheme$3
javax/swing/plaf/metal/OceanTheme$4
javax/swing/plaf/metal/OceanTheme$5
javax/swing/plaf/metal/OceanTheme$6
-javax/swing/RepaintManager
-javax/swing/RepaintManager$DisplayChangedHandler
-javax/swing/SwingPaintEventDispatcher
-sun/awt/PaintEventDispatcher
-javax/swing/UIManager$2
-java/awt/PopupMenu
-java/awt/Menu
-java/awt/MenuItem
-java/awt/MenuComponent
-java/io/ObjectOutputStream
-java/io/ObjectOutput
-java/io/DataOutput
-java/io/ObjectStreamConstants
-java/io/PrintWriter
-java/io/ObjectInputStream
-java/io/ObjectInput
-java/awt/Event
-java/awt/im/InputContext
-java/awt/event/MouseWheelEvent
-java/awt/BufferCapabilities
-sun/awt/CausedFocusEvent$Cause
-java/awt/PointerInfo
-java/awt/Component$BaselineResizeBehavior
-java/awt/FontMetrics
-java/awt/Image
-java/awt/image/ImageProducer
-java/awt/image/VolatileImage
-java/awt/im/InputMethodRequests
-java/awt/event/FocusEvent
-java/awt/event/InputMethodEvent
-java/awt/event/HierarchyEvent
-javax/accessibility/AccessibleStateSet
-com/sun/swing/internal/plaf/metal/resources/metal
-sun/util/ResourceBundleEnumeration
-com/sun/swing/internal/plaf/basic/resources/basic
-javax/swing/plaf/basic/BasicPanelUI
-javax/swing/plaf/PanelUI
-javax/swing/plaf/ComponentUI
-sun/reflect/misc/MethodUtil
-sun/reflect/misc/MethodUtil$1
-java/util/jar/JarFile
-java/util/zip/ZipFile
-java/util/zip/ZipConstants
-java/util/jar/JavaUtilJarAccessImpl
-sun/misc/JavaUtilJarAccess
-sun/misc/JarIndex
-java/util/zip/ZipEntry
-java/util/jar/JarFile$JarFileEntry
-java/util/jar/JarEntry
-sun/misc/URLClassPath$JarLoader$2
-sun/net/www/protocol/jar/JarURLConnection
-java/net/JarURLConnection
-sun/net/www/protocol/jar/JarFileFactory
-sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
-java/net/HttpURLConnection
-sun/net/www/protocol/jar/URLJarFile
-sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
-sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
-java/util/zip/ZipFile$ZipFileInputStream
-java/security/AllPermissionCollection
-java/lang/IllegalAccessException
-javax/swing/JPasswordField
-javax/swing/JTextField
+javax/swing/plaf/synth/SynthConstants
+javax/swing/plaf/synth/SynthUI
+javax/swing/table/AbstractTableModel
+javax/swing/table/DefaultTableCellRenderer
+javax/swing/table/DefaultTableColumnModel
+javax/swing/table/DefaultTableModel
+javax/swing/table/JTableHeader
+javax/swing/table/TableCellEditor
+javax/swing/table/TableCellRenderer
+javax/swing/table/TableColumn
+javax/swing/table/TableColumnModel
+javax/swing/table/TableModel
+javax/swing/text/AbstractDocument
+javax/swing/text/AbstractDocument$1
+javax/swing/text/AbstractDocument$AbstractElement
+javax/swing/text/AbstractDocument$AttributeContext
+javax/swing/text/AbstractDocument$BidiElement
+javax/swing/text/AbstractDocument$BidiRootElement
+javax/swing/text/AbstractDocument$BranchElement
+javax/swing/text/AbstractDocument$Content
+javax/swing/text/AbstractDocument$DefaultDocumentEvent
+javax/swing/text/AbstractDocument$ElementEdit
+javax/swing/text/AbstractDocument$InsertStringResult
+javax/swing/text/AbstractDocument$LeafElement
+javax/swing/text/AttributeSet
+javax/swing/text/AttributeSet$CharacterAttribute
+javax/swing/text/AttributeSet$ColorAttribute
+javax/swing/text/AttributeSet$FontAttribute
+javax/swing/text/AttributeSet$ParagraphAttribute
+javax/swing/text/Caret
+javax/swing/text/DefaultCaret
+javax/swing/text/DefaultCaret$Handler
+javax/swing/text/DefaultEditorKit
+javax/swing/text/DefaultEditorKit$BeepAction
+javax/swing/text/DefaultEditorKit$BeginAction
+javax/swing/text/DefaultEditorKit$BeginLineAction
+javax/swing/text/DefaultEditorKit$BeginParagraphAction
+javax/swing/text/DefaultEditorKit$BeginWordAction
+javax/swing/text/DefaultEditorKit$CopyAction
+javax/swing/text/DefaultEditorKit$CutAction
+javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
+javax/swing/text/DefaultEditorKit$DeleteNextCharAction
+javax/swing/text/DefaultEditorKit$DeletePrevCharAction
+javax/swing/text/DefaultEditorKit$DeleteWordAction
+javax/swing/text/DefaultEditorKit$DumpModelAction
+javax/swing/text/DefaultEditorKit$EndAction
+javax/swing/text/DefaultEditorKit$EndLineAction
+javax/swing/text/DefaultEditorKit$EndParagraphAction
+javax/swing/text/DefaultEditorKit$EndWordAction
+javax/swing/text/DefaultEditorKit$InsertBreakAction
+javax/swing/text/DefaultEditorKit$InsertContentAction
+javax/swing/text/DefaultEditorKit$InsertTabAction
+javax/swing/text/DefaultEditorKit$NextVisualPositionAction
+javax/swing/text/DefaultEditorKit$NextWordAction
+javax/swing/text/DefaultEditorKit$PageAction
+javax/swing/text/DefaultEditorKit$PasteAction
+javax/swing/text/DefaultEditorKit$PreviousWordAction
+javax/swing/text/DefaultEditorKit$ReadOnlyAction
+javax/swing/text/DefaultEditorKit$SelectAllAction
+javax/swing/text/DefaultEditorKit$SelectLineAction
+javax/swing/text/DefaultEditorKit$SelectParagraphAction
+javax/swing/text/DefaultEditorKit$SelectWordAction
+javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction
+javax/swing/text/DefaultEditorKit$UnselectAction
+javax/swing/text/DefaultEditorKit$VerticalPageAction
+javax/swing/text/DefaultEditorKit$WritableAction
+javax/swing/text/DefaultHighlighter
+javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
+javax/swing/text/DefaultHighlighter$SafeDamager
+javax/swing/text/Document
+javax/swing/text/EditorKit
+javax/swing/text/Element
+javax/swing/text/FieldView
+javax/swing/text/GapContent
+javax/swing/text/GapContent$InsertUndo
+javax/swing/text/GapContent$MarkData
+javax/swing/text/GapContent$MarkVector
+javax/swing/text/GapContent$StickyPosition
+javax/swing/text/GapVector
+javax/swing/text/Highlighter
+javax/swing/text/Highlighter$Highlight
+javax/swing/text/Highlighter$HighlightPainter
javax/swing/text/JTextComponent
-javax/swing/Scrollable
-javax/swing/JLayeredPane
-javax/swing/JRootPane$1
-javax/swing/ArrayTable
-javax/swing/JInternalFrame
-javax/swing/JRootPane$RootLayout
-javax/swing/BufferStrategyPaintManager
-javax/swing/RepaintManager$PaintManager
-javax/swing/plaf/metal/MetalRootPaneUI
-javax/swing/plaf/basic/BasicRootPaneUI
-javax/swing/plaf/RootPaneUI
-javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
-javax/swing/plaf/ComponentInputMapUIResource
-javax/swing/ComponentInputMap
-javax/swing/InputMap
-javax/swing/plaf/InputMapUIResource
-javax/swing/KeyStroke
-java/awt/VKCollection
-sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
-javax/swing/plaf/basic/LazyActionMap
-javax/swing/plaf/ActionMapUIResource
-javax/swing/ActionMap
-javax/swing/LayoutFocusTraversalPolicy
-javax/swing/SortingFocusTraversalPolicy
-javax/swing/InternalFrameFocusTraversalPolicy
-javax/swing/SwingContainerOrderFocusTraversalPolicy
-javax/swing/SwingDefaultFocusTraversalPolicy
-javax/swing/LayoutComparator
-javax/swing/plaf/metal/MetalLabelUI
-javax/swing/plaf/basic/BasicLabelUI
-javax/swing/plaf/LabelUI
-javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
-javax/swing/plaf/basic/BasicHTML
-sun/awt/NullComponentPeer
-java/awt/event/WindowEvent
-java/awt/EventQueue$1
-java/awt/EventDispatchThread$1
-java/awt/Conditional
-java/awt/EventDispatchThread$HierarchyEventFilter
-java/awt/EventFilter$FilterAction
-sun/awt/dnd/SunDropTargetEvent
-java/awt/event/ActionEvent
-java/util/jar/Manifest
-java/io/ByteArrayInputStream
-java/util/jar/Attributes
-java/util/jar/Manifest$FastInputStream
-java/util/jar/Attributes$Name
-sun/misc/ASCIICaseInsensitiveComparator
-java/util/jar/JarVerifier
-java/io/ByteArrayOutputStream
-sun/misc/ExtensionDependency
-java/lang/Package
-sun/security/util/ManifestEntryVerifier
-java/security/Provider
-java/security/Provider$ServiceKey
-java/security/Provider$EngineDescription
-java/security/Security
-java/security/Security$1
-sun/misc/FloatingDecimal
-sun/misc/FloatingDecimal$1
-sun/security/provider/NativePRNG
-java/security/SecureRandomSpi
-sun/security/provider/NativePRNG$1
-sun/security/provider/NativePRNG$RandomIO
-sun/misc/BASE64Decoder
-sun/misc/CharacterDecoder
-sun/security/util/SignatureFileVerifier
-java/awt/event/KeyAdapter
-java/lang/NumberFormatException
-java/lang/IllegalArgumentException
-java/io/FileWriter
-java/net/Authenticator
-java/net/MalformedURLException
-javax/swing/text/Element
-javax/swing/text/Document
+javax/swing/text/JTextComponent$1
+javax/swing/text/JTextComponent$DefaultKeymap
+javax/swing/text/JTextComponent$KeymapActionMap
+javax/swing/text/JTextComponent$KeymapWrapper
+javax/swing/text/JTextComponent$MutableCaretEvent
+javax/swing/text/Keymap
+javax/swing/text/LayeredHighlighter
+javax/swing/text/LayeredHighlighter$LayerPainter
+javax/swing/text/MutableAttributeSet
javax/swing/text/PlainDocument
-javax/swing/text/AbstractDocument
-javax/swing/text/GapContent
-javax/swing/text/AbstractDocument$Content
-javax/swing/text/GapVector
-javax/swing/text/GapContent$MarkVector
-javax/swing/text/GapContent$MarkData
-javax/swing/text/StyleContext
-javax/swing/text/AbstractDocument$AttributeContext
+javax/swing/text/PlainView
+javax/swing/text/Position
+javax/swing/text/Position$Bias
+javax/swing/text/Segment
+javax/swing/text/SegmentCache
+javax/swing/text/SegmentCache$CachedSegment
+javax/swing/text/SimpleAttributeSet
+javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
+javax/swing/text/Style
javax/swing/text/StyleConstants
javax/swing/text/StyleConstants$CharacterConstants
-javax/swing/text/AttributeSet$CharacterAttribute
+javax/swing/text/StyleConstants$ColorConstants
javax/swing/text/StyleConstants$FontConstants
-javax/swing/text/AttributeSet$FontAttribute
-javax/swing/text/StyleConstants$ColorConstants
-javax/swing/text/AttributeSet$ColorAttribute
javax/swing/text/StyleConstants$ParagraphConstants
-javax/swing/text/AttributeSet$ParagraphAttribute
+javax/swing/text/StyleContext
javax/swing/text/StyleContext$FontKey
-javax/swing/text/SimpleAttributeSet
-javax/swing/text/MutableAttributeSet
-javax/swing/text/AttributeSet
-javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
+javax/swing/text/StyleContext$KeyEnumeration
javax/swing/text/StyleContext$NamedStyle
-javax/swing/text/Style
javax/swing/text/StyleContext$SmallAttributeSet
-javax/swing/text/AbstractDocument$BidiRootElement
-javax/swing/text/AbstractDocument$BranchElement
-javax/swing/text/AbstractDocument$AbstractElement
-javax/swing/tree/TreeNode
-javax/swing/text/AbstractDocument$1
-javax/swing/text/AbstractDocument$BidiElement
-javax/swing/text/AbstractDocument$LeafElement
-javax/swing/text/GapContent$StickyPosition
-javax/swing/text/Position
-javax/swing/text/StyleContext$KeyEnumeration
-javax/swing/text/GapContent$InsertUndo
-javax/swing/undo/AbstractUndoableEdit
-javax/swing/undo/UndoableEdit
-javax/swing/text/AbstractDocument$DefaultDocumentEvent
-javax/swing/event/DocumentEvent
-javax/swing/undo/CompoundEdit
-javax/swing/event/DocumentEvent$EventType
-javax/swing/text/Segment
-java/text/CharacterIterator
+javax/swing/text/TabExpander
+javax/swing/text/TextAction
javax/swing/text/Utilities
-javax/swing/text/SegmentCache
-javax/swing/text/SegmentCache$CachedSegment
-javax/swing/event/UndoableEditEvent
-javax/swing/text/AbstractDocument$ElementEdit
-javax/swing/event/DocumentEvent$ElementChange
-java/net/Socket
-java/net/InetAddress
-java/net/InetAddress$Cache
-java/net/InetAddress$Cache$Type
-java/net/InetAddressImplFactory
-java/net/Inet4AddressImpl
-java/net/InetAddressImpl
-java/net/InetAddress$1
-sun/net/spi/nameservice/NameService
-sun/net/util/IPAddressUtil
-java/util/RandomAccessSubList
-java/util/SubList
-java/util/SubList$1
-java/util/AbstractList$ListItr
-java/net/Inet4Address
-java/net/InetSocketAddress
-java/net/SocketAddress
-java/net/SocksSocketImpl
-java/net/SocksConsts
-java/net/PlainSocketImpl
-java/net/SocketImpl
-java/net/SocketOptions
-java/net/SocketException
-java/net/SocksSocketImpl$5
-java/net/ProxySelector
-sun/net/spi/DefaultProxySelector
-sun/net/spi/DefaultProxySelector$1
-sun/net/NetProperties
-sun/net/NetProperties$1
-sun/net/spi/DefaultProxySelector$NonProxyInfo
-java/net/Inet6Address
-java/net/URI
-java/net/URI$Parser
-java/net/Proxy
-java/net/Proxy$Type
-java/net/ConnectException
-javax/swing/JMenu
-javax/swing/MenuElement
-javax/swing/JMenuItem
-javax/swing/AbstractButton
-java/awt/ItemSelectable
-javax/swing/event/MenuListener
-javax/swing/JCheckBoxMenuItem
-javax/swing/Icon
-javax/swing/JButton
-java/awt/event/WindowListener
-java/net/URLClassLoader$2
-javax/swing/ImageIcon
-javax/swing/ImageIcon$1
-java/awt/MediaTracker
-sun/misc/SoftCache$ValueCell
-sun/awt/image/URLImageSource
-sun/awt/image/InputStreamImageSource
+javax/swing/text/View
+javax/swing/text/ViewFactory
+javax/swing/tree/AbstractLayoutCache
+javax/swing/tree/AbstractLayoutCache$NodeDimensions
+javax/swing/tree/DefaultMutableTreeNode
+javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
+javax/swing/tree/DefaultTreeCellEditor
+javax/swing/tree/DefaultTreeCellEditor$1
+javax/swing/tree/DefaultTreeCellEditor$DefaultTextField
+javax/swing/tree/DefaultTreeCellEditor$EditorContainer
+javax/swing/tree/DefaultTreeCellRenderer
+javax/swing/tree/DefaultTreeModel
+javax/swing/tree/DefaultTreeSelectionModel
+javax/swing/tree/MutableTreeNode
+javax/swing/tree/PathPlaceHolder
+javax/swing/tree/RowMapper
+javax/swing/tree/TreeCellEditor
+javax/swing/tree/TreeCellRenderer
+javax/swing/tree/TreeModel
+javax/swing/tree/TreeNode
+javax/swing/tree/TreePath
+javax/swing/tree/TreeSelectionModel
+javax/swing/tree/VariableHeightLayoutCache
+javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
+javax/swing/undo/AbstractUndoableEdit
+javax/swing/undo/CompoundEdit
+javax/swing/undo/UndoableEdit
+javax/xml/parsers/DocumentBuilder
+javax/xml/parsers/DocumentBuilderFactory
+javax/xml/parsers/FactoryFinder
+javax/xml/parsers/FactoryFinder$1
+javax/xml/parsers/ParserConfigurationException
+javax/xml/parsers/SecuritySupport
+javax/xml/parsers/SecuritySupport$2
+javax/xml/parsers/SecuritySupport$5
+org/w3c/dom/Attr
+org/w3c/dom/CDATASection
+org/w3c/dom/CharacterData
+org/w3c/dom/Comment
+org/w3c/dom/DOMException
+org/w3c/dom/Document
+org/w3c/dom/DocumentFragment
+org/w3c/dom/DocumentType
+org/w3c/dom/Element
+org/w3c/dom/Entity
+org/w3c/dom/EntityReference
+org/w3c/dom/NamedNodeMap
+org/w3c/dom/Node
+org/w3c/dom/NodeList
+org/w3c/dom/Notation
+org/w3c/dom/ProcessingInstruction
+org/w3c/dom/Text
+org/w3c/dom/events/DocumentEvent
+org/w3c/dom/events/Event
+org/w3c/dom/events/EventException
+org/w3c/dom/events/EventTarget
+org/w3c/dom/events/MutationEvent
+org/w3c/dom/ranges/DocumentRange
+org/w3c/dom/ranges/Range
+org/w3c/dom/traversal/DocumentTraversal
+org/w3c/dom/traversal/NodeIterator
+org/w3c/dom/traversal/TreeWalker
+org/xml/sax/AttributeList
+org/xml/sax/ContentHandler
+org/xml/sax/DTDHandler
+org/xml/sax/EntityResolver
+org/xml/sax/ErrorHandler
+org/xml/sax/InputSource
+org/xml/sax/Locator
+org/xml/sax/SAXException
+org/xml/sax/SAXNotRecognizedException
+org/xml/sax/SAXNotSupportedException
+org/xml/sax/SAXParseException
+org/xml/sax/helpers/DefaultHandler
+sun/awt/AWTAccessor
+sun/awt/AWTAccessor$AWTEventAccessor
+sun/awt/AWTAccessor$ClientPropertyKeyAccessor
+sun/awt/AWTAccessor$ComponentAccessor
+sun/awt/AWTAccessor$ContainerAccessor
+sun/awt/AWTAccessor$CursorAccessor
+sun/awt/AWTAccessor$DefaultKeyboardFocusManagerAccessor
+sun/awt/AWTAccessor$EventQueueAccessor
+sun/awt/AWTAccessor$FrameAccessor
+sun/awt/AWTAccessor$InputEventAccessor
+sun/awt/AWTAccessor$InvocationEventAccessor
+sun/awt/AWTAccessor$KeyEventAccessor
+sun/awt/AWTAccessor$KeyboardFocusManagerAccessor
+sun/awt/AWTAccessor$SequencedEventAccessor
+sun/awt/AWTAccessor$ToolkitAccessor
+sun/awt/AWTAccessor$WindowAccessor
+sun/awt/AWTAutoShutdown
+sun/awt/AWTIcon32_java_icon16_png
+sun/awt/AWTIcon32_java_icon24_png
+sun/awt/AWTIcon32_java_icon32_png
+sun/awt/AWTIcon32_java_icon48_png
+sun/awt/AppContext
+sun/awt/AppContext$1
+sun/awt/AppContext$2
+sun/awt/AppContext$3
+sun/awt/AppContext$6
+sun/awt/AppContext$GetAppContextLock
+sun/awt/AppContext$State
+sun/awt/CausedFocusEvent
+sun/awt/CausedFocusEvent$Cause
+sun/awt/ComponentFactory
+sun/awt/ConstrainableGraphics
+sun/awt/DisplayChangedListener
+sun/awt/EmbeddedFrame
+sun/awt/EventQueueDelegate
+sun/awt/EventQueueItem
+sun/awt/FontConfiguration
+sun/awt/FontDescriptor
+sun/awt/GlobalCursorManager
+sun/awt/GlobalCursorManager$NativeUpdater
+sun/awt/HeadlessToolkit
+sun/awt/IconInfo
+sun/awt/InputMethodSupport
+sun/awt/KeyboardFocusManagerPeerImpl
+sun/awt/KeyboardFocusManagerPeerProvider
+sun/awt/LightweightFrame
+sun/awt/ModalityListener
+sun/awt/MostRecentKeyValue
+sun/awt/NullComponentPeer
+sun/awt/OSInfo
+sun/awt/OSInfo$1
+sun/awt/OSInfo$OSType
+sun/awt/OSInfo$WindowsVersion
+sun/awt/PaintEventDispatcher
+sun/awt/PeerEvent
+sun/awt/PostEventQueue
+sun/awt/RepaintArea
+sun/awt/RequestFocusController
+sun/awt/SubRegionShowable
+sun/awt/SunDisplayChanger
+sun/awt/SunGraphicsCallback
+sun/awt/SunHints
+sun/awt/SunHints$Key
+sun/awt/SunHints$LCDContrastKey
+sun/awt/SunHints$Value
+sun/awt/SunToolkit
+sun/awt/SunToolkit$ModalityListenerList
+sun/awt/TimedWindowEvent
+sun/awt/UNIXToolkit
+sun/awt/WindowClosingListener
+sun/awt/WindowClosingSupport
+sun/awt/X11/AwtGraphicsConfigData
+sun/awt/X11/AwtScreenData
+sun/awt/X11/MotifColorUtilities
+sun/awt/X11/MotifDnDConstants
+sun/awt/X11/MotifDnDDragSourceProtocol
+sun/awt/X11/MotifDnDDropTargetProtocol
+sun/awt/X11/Native
+sun/awt/X11/Native$1
+sun/awt/X11/OwnershipListener
+sun/awt/X11/PropMwmHints
+sun/awt/X11/UnsafeXDisposerRecord
+sun/awt/X11/WindowDimensions
+sun/awt/X11/WindowPropertyGetter
+sun/awt/X11/XAWTXSettings
+sun/awt/X11/XAnyEvent
+sun/awt/X11/XAtom
+sun/awt/X11/XAtomList
+sun/awt/X11/XAwtState
+sun/awt/X11/XBaseWindow
+sun/awt/X11/XBaseWindow$1
+sun/awt/X11/XBaseWindow$InitialiseState
+sun/awt/X11/XBaseWindow$StateLock
+sun/awt/X11/XCanvasPeer
+sun/awt/X11/XClientMessageEvent
+sun/awt/X11/XClipboard
+sun/awt/X11/XComponentPeer
+sun/awt/X11/XComponentPeer$1
+sun/awt/X11/XConfigureEvent
+sun/awt/X11/XContentWindow
+sun/awt/X11/XCreateWindowParams
+sun/awt/X11/XDecoratedPeer
+sun/awt/X11/XDnDConstants
+sun/awt/X11/XDnDDragSourceProtocol
+sun/awt/X11/XDnDDropTargetProtocol
+sun/awt/X11/XDragAndDropProtocols
+sun/awt/X11/XDragSourceContextPeer
+sun/awt/X11/XDragSourceProtocol
+sun/awt/X11/XDragSourceProtocolListener
+sun/awt/X11/XDropTargetContextPeer
+sun/awt/X11/XDropTargetContextPeer$XDropTargetProtocolListenerImpl
+sun/awt/X11/XDropTargetEventProcessor
+sun/awt/X11/XDropTargetProtocol
+sun/awt/X11/XDropTargetProtocolListener
+sun/awt/X11/XDropTargetRegistry
+sun/awt/X11/XEmbeddedFramePeer
+sun/awt/X11/XErrorEvent
+sun/awt/X11/XErrorHandler
+sun/awt/X11/XErrorHandler$IgnoreBadWindowHandler
+sun/awt/X11/XErrorHandler$VerifyChangePropertyHandler
+sun/awt/X11/XErrorHandler$XBaseErrorHandler
+sun/awt/X11/XErrorHandler$XErrorHandlerWithFlag
+sun/awt/X11/XErrorHandler$XShmAttachHandler
+sun/awt/X11/XErrorHandlerUtil
+sun/awt/X11/XEvent
+sun/awt/X11/XEventDispatcher
+sun/awt/X11/XExposeEvent
+sun/awt/X11/XFocusChangeEvent
+sun/awt/X11/XFocusProxyWindow
+sun/awt/X11/XFramePeer
+sun/awt/X11/XGlobalCursorManager
+sun/awt/X11/XInputMethod
+sun/awt/X11/XInputMethodDescriptor
+sun/awt/X11/XKeyboardFocusManagerPeer
+sun/awt/X11/XLabelPeer
+sun/awt/X11/XLayerProtocol
+sun/awt/X11/XMSelection
+sun/awt/X11/XMSelection$1
+sun/awt/X11/XMSelection$3
+sun/awt/X11/XMSelectionListener
+sun/awt/X11/XModifierKeymap
+sun/awt/X11/XNETProtocol
+sun/awt/X11/XPanelPeer
+sun/awt/X11/XPropertyCache
+sun/awt/X11/XPropertyEvent
+sun/awt/X11/XProtocol
+sun/awt/X11/XRepaintArea
+sun/awt/X11/XReparentEvent
+sun/awt/X11/XRootWindow
+sun/awt/X11/XSelection
+sun/awt/X11/XSelection$IncrementalTransferHandler
+sun/awt/X11/XSelection$SelectionEventHandler
+sun/awt/X11/XSetWindowAttributes
+sun/awt/X11/XSizeHints
+sun/awt/X11/XStateProtocol
+sun/awt/X11/XSystemTrayPeer
+sun/awt/X11/XToolkit
+sun/awt/X11/XToolkit$1
+sun/awt/X11/XToolkit$2
+sun/awt/X11/XToolkit$2$1
+sun/awt/X11/XToolkit$3
+sun/awt/X11/XToolkit$4
+sun/awt/X11/XToolkit$5
+sun/awt/X11/XUnmapEvent
+sun/awt/X11/XVisibilityEvent
+sun/awt/X11/XVisualInfo
+sun/awt/X11/XWINProtocol
+sun/awt/X11/XWM
+sun/awt/X11/XWM$1
+sun/awt/X11/XWMHints
+sun/awt/X11/XWindow
+sun/awt/X11/XWindowAttributes
+sun/awt/X11/XWindowAttributesData
+sun/awt/X11/XWindowPeer
+sun/awt/X11/XWindowPeer$2
+sun/awt/X11/XWindowPeer$4
+sun/awt/X11/XWrapperBase
+sun/awt/X11/XlibUtil
+sun/awt/X11/XlibWrapper
+sun/awt/X11ComponentPeer
+sun/awt/X11FontManager
+sun/awt/X11GraphicsConfig
+sun/awt/X11GraphicsConfig$X11GCDisposerRecord
+sun/awt/X11GraphicsDevice
+sun/awt/X11GraphicsEnvironment
+sun/awt/X11GraphicsEnvironment$1
+sun/awt/X11InputMethod
+sun/awt/X11InputMethodDescriptor
+sun/awt/XSettings
+sun/awt/XSettings$Update
+sun/awt/datatransfer/SunClipboard
+sun/awt/dnd/SunDragSourceContextPeer
+sun/awt/dnd/SunDropTargetContextPeer
+sun/awt/dnd/SunDropTargetEvent
+sun/awt/event/IgnorePaintEvent
+sun/awt/geom/PathConsumer2D
+sun/awt/im/ExecutableInputMethodManager
+sun/awt/im/ExecutableInputMethodManager$3
+sun/awt/im/InputContext
+sun/awt/im/InputMethodAdapter
+sun/awt/im/InputMethodContext
+sun/awt/im/InputMethodLocator
+sun/awt/im/InputMethodManager
+sun/awt/image/BufImgSurfaceData
+sun/awt/image/BufImgSurfaceData$ICMColorData
+sun/awt/image/BufImgSurfaceManager
+sun/awt/image/BufferedImageGraphicsConfig
+sun/awt/image/ByteComponentRaster
+sun/awt/image/ByteInterleavedRaster
+sun/awt/image/BytePackedRaster
+sun/awt/image/FetcherInfo
+sun/awt/image/GifFrame
+sun/awt/image/GifImageDecoder
+sun/awt/image/ImageConsumerQueue
+sun/awt/image/ImageDecoder
+sun/awt/image/ImageDecoder$1
sun/awt/image/ImageFetchable
-sun/awt/image/ToolkitImage
-java/awt/Image$1
-sun/awt/image/SurfaceManager$ImageAccessor
-sun/awt/image/SurfaceManager
-sun/awt/image/NativeLibLoader
-java/awt/ImageMediaEntry
-java/awt/MediaEntry
+sun/awt/image/ImageFetcher
+sun/awt/image/ImageFetcher$1
sun/awt/image/ImageRepresentation
-java/awt/image/ImageConsumer
sun/awt/image/ImageWatched
sun/awt/image/ImageWatched$Link
sun/awt/image/ImageWatched$WeakLink
-sun/awt/image/ImageConsumerQueue
-sun/awt/image/ImageFetcher
-sun/awt/image/FetcherInfo
-sun/awt/image/ImageFetcher$1
-sun/awt/image/GifImageDecoder
-sun/awt/image/ImageDecoder
-sun/awt/image/GifFrame
-java/awt/image/Raster
-java/awt/image/DataBufferByte
-java/awt/image/DataBuffer
-java/awt/image/PixelInterleavedSampleModel
-java/awt/image/ComponentSampleModel
-java/awt/image/SampleModel
-sun/awt/image/ByteInterleavedRaster
-sun/awt/image/ByteComponentRaster
+sun/awt/image/InputStreamImageSource
+sun/awt/image/IntegerComponentRaster
+sun/awt/image/IntegerInterleavedRaster
+sun/awt/image/NativeLibLoader
+sun/awt/image/NativeLibLoader$1
+sun/awt/image/OffScreenImage
+sun/awt/image/PNGFilterInputStream
+sun/awt/image/PNGImageDecoder
+sun/awt/image/PixelConverter
+sun/awt/image/PixelConverter$Argb
+sun/awt/image/PixelConverter$ArgbBm
+sun/awt/image/PixelConverter$ArgbPre
+sun/awt/image/PixelConverter$Bgrx
+sun/awt/image/PixelConverter$ByteGray
+sun/awt/image/PixelConverter$Rgba
+sun/awt/image/PixelConverter$RgbaPre
+sun/awt/image/PixelConverter$Rgbx
+sun/awt/image/PixelConverter$Ushort4444Argb
+sun/awt/image/PixelConverter$Ushort555Rgb
+sun/awt/image/PixelConverter$Ushort555Rgbx
+sun/awt/image/PixelConverter$Ushort565Rgb
+sun/awt/image/PixelConverter$UshortGray
+sun/awt/image/PixelConverter$Xbgr
+sun/awt/image/PixelConverter$Xrgb
+sun/awt/image/SunVolatileImage
sun/awt/image/SunWritableRaster
-java/awt/image/WritableRaster
-java/awt/image/BufferedImage
-java/awt/image/WritableRenderedImage
-java/awt/image/RenderedImage
-sun/awt/image/IntegerComponentRaster
-sun/awt/image/BytePackedRaster
-java/awt/Canvas
+sun/awt/image/SunWritableRaster$DataStealer
+sun/awt/image/SurfaceManager
+sun/awt/image/SurfaceManager$ImageAccessor
+sun/awt/image/SurfaceManager$ProxiedGraphicsConfig
+sun/awt/image/ToolkitImage
+sun/awt/image/URLImageSource
+sun/awt/image/VolatileSurfaceManager
+sun/awt/motif/MFontConfiguration
+sun/awt/resources/awt
+sun/awt/util/IdentityArrayList
+sun/dc/DuctusRenderingEngine
+sun/dc/path/PathConsumer
+sun/dc/pr/PathDasher
+sun/dc/pr/PathDasher$1
+sun/dc/pr/PathStroker
+sun/dc/pr/PathStroker$1
+sun/font/AttributeValues
+sun/font/CMap
+sun/font/CMap$CMapFormat12
+sun/font/CMap$NullCMapClass
+sun/font/CharToGlyphMapper
+sun/font/CompositeFont
+sun/font/CompositeFontDescriptor
+sun/font/CompositeGlyphMapper
+sun/font/CompositeStrike
+sun/font/CoreMetrics
+sun/font/EAttribute
+sun/font/FcFontConfiguration
+sun/font/FileFont
+sun/font/FileFontStrike
+sun/font/Font2D
+sun/font/Font2DHandle
+sun/font/FontAccess
+sun/font/FontConfigManager
+sun/font/FontConfigManager$FcCompFont
+sun/font/FontConfigManager$FontConfigFont
+sun/font/FontConfigManager$FontConfigInfo
sun/font/FontDesignMetrics
+sun/font/FontDesignMetrics$KeyReference
+sun/font/FontDesignMetrics$MetricsKey
+sun/font/FontFamily
+sun/font/FontLineMetrics
+sun/font/FontManager
+sun/font/FontManagerFactory
+sun/font/FontManagerFactory$1
+sun/font/FontManagerForSGE
+sun/font/FontManagerNativeLibrary
+sun/font/FontManagerNativeLibrary$1
+sun/font/FontScaler
+sun/font/FontStrike
sun/font/FontStrikeDesc
-sun/font/CompositeStrike
sun/font/FontStrikeDisposer
-sun/font/StrikeCache$SoftDisposerRef
+sun/font/FontUtilities
+sun/font/FontUtilities$1
+sun/font/GlyphList
+sun/font/PhysicalFont
+sun/font/PhysicalStrike
+sun/font/StandardGlyphVector
+sun/font/StandardGlyphVector$GlyphStrike
+sun/font/StrikeCache
+sun/font/StrikeCache$1
sun/font/StrikeCache$DisposableStrike
-sun/font/TrueTypeFont$TTDisposerRecord
+sun/font/StrikeCache$SoftDisposerRef
+sun/font/StrikeMetrics
+sun/font/SunFontManager
+sun/font/SunFontManager$1
+sun/font/SunFontManager$11
+sun/font/SunFontManager$2
+sun/font/SunFontManager$3
+sun/font/SunFontManager$FontRegistrationInfo
+sun/font/SunFontManager$T1Filter
+sun/font/SunFontManager$TTFilter
+sun/font/T2KFontScaler
+sun/font/T2KFontScaler$1
+sun/font/TrueTypeFont
sun/font/TrueTypeFont$1
-java/io/RandomAccessFile
-java/nio/ByteBufferAsIntBufferB
-java/nio/IntBuffer
sun/font/TrueTypeFont$DirectoryEntry
-java/nio/ByteBufferAsShortBufferB
-java/nio/ShortBuffer
+sun/font/TrueTypeFont$TTDisposerRecord
+sun/font/TrueTypeGlyphMapper
+sun/font/Type1Font
+sun/font/Type1Font$1
+sun/font/X11TextRenderer
+sun/java2d/BackBufferCapsProvider
+sun/java2d/DefaultDisposerRecord
+sun/java2d/DestSurfaceProvider
+sun/java2d/Disposer
+sun/java2d/Disposer$1
+sun/java2d/Disposer$2
+sun/java2d/Disposer$PollDisposable
+sun/java2d/DisposerRecord
+sun/java2d/DisposerTarget
+sun/java2d/FontSupport
+sun/java2d/InvalidPipeException
+sun/java2d/NullSurfaceData
+sun/java2d/StateTrackable
+sun/java2d/StateTrackable$State
+sun/java2d/StateTrackableDelegate
+sun/java2d/StateTrackableDelegate$2
+sun/java2d/SunGraphics2D
+sun/java2d/SunGraphicsEnvironment
+sun/java2d/SunGraphicsEnvironment$1
+sun/java2d/Surface
+sun/java2d/SurfaceData
+sun/java2d/SurfaceData$PixelToPgramLoopConverter
+sun/java2d/SurfaceData$PixelToShapeLoopConverter
+sun/java2d/SurfaceManagerFactory
+sun/java2d/UnixSurfaceManagerFactory
+sun/java2d/cmm/CMSManager
+sun/java2d/cmm/ProfileActivator
+sun/java2d/cmm/ProfileDeferralInfo
+sun/java2d/cmm/ProfileDeferralMgr
+sun/java2d/loops/Blit
+sun/java2d/loops/BlitBg
+sun/java2d/loops/CompositeType
+sun/java2d/loops/CustomComponent
+sun/java2d/loops/DrawGlyphList
+sun/java2d/loops/DrawGlyphListAA
+sun/java2d/loops/DrawGlyphListLCD
+sun/java2d/loops/DrawLine
+sun/java2d/loops/DrawParallelogram
+sun/java2d/loops/DrawPath
+sun/java2d/loops/DrawPolygons
+sun/java2d/loops/DrawRect
+sun/java2d/loops/FillParallelogram
+sun/java2d/loops/FillPath
+sun/java2d/loops/FillRect
+sun/java2d/loops/FillSpans
+sun/java2d/loops/FontInfo
+sun/java2d/loops/GeneralRenderer
+sun/java2d/loops/GraphicsPrimitive
+sun/java2d/loops/GraphicsPrimitiveMgr
+sun/java2d/loops/GraphicsPrimitiveMgr$1
+sun/java2d/loops/GraphicsPrimitiveMgr$2
+sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
+sun/java2d/loops/GraphicsPrimitiveProxy
+sun/java2d/loops/MaskBlit
+sun/java2d/loops/MaskFill
+sun/java2d/loops/RenderCache
+sun/java2d/loops/RenderCache$Entry
+sun/java2d/loops/RenderLoops
+sun/java2d/loops/ScaledBlit
+sun/java2d/loops/SurfaceType
+sun/java2d/loops/TransformHelper
+sun/java2d/loops/XORComposite
+sun/java2d/opengl/GLXGraphicsConfig
+sun/java2d/opengl/OGLGraphicsConfig
+sun/java2d/pipe/AAShapePipe
+sun/java2d/pipe/AATextRenderer
+sun/java2d/pipe/AlphaColorPipe
+sun/java2d/pipe/AlphaPaintPipe
+sun/java2d/pipe/CompositePipe
+sun/java2d/pipe/DrawImage
+sun/java2d/pipe/DrawImagePipe
+sun/java2d/pipe/GeneralCompositePipe
+sun/java2d/pipe/GlyphListLoopPipe
+sun/java2d/pipe/GlyphListPipe
+sun/java2d/pipe/LCDTextRenderer
+sun/java2d/pipe/LoopBasedPipe
+sun/java2d/pipe/LoopPipe
+sun/java2d/pipe/NullPipe
+sun/java2d/pipe/OutlineTextRenderer
+sun/java2d/pipe/ParallelogramPipe
+sun/java2d/pipe/PixelDrawPipe
+sun/java2d/pipe/PixelFillPipe
+sun/java2d/pipe/PixelToParallelogramConverter
+sun/java2d/pipe/PixelToShapeConverter
+sun/java2d/pipe/Region
+sun/java2d/pipe/Region$ImmutableRegion
+sun/java2d/pipe/RegionIterator
+sun/java2d/pipe/RenderingEngine
+sun/java2d/pipe/RenderingEngine$1
+sun/java2d/pipe/ShapeDrawPipe
+sun/java2d/pipe/ShapeSpanIterator
+sun/java2d/pipe/SolidTextRenderer
+sun/java2d/pipe/SpanClipRenderer
+sun/java2d/pipe/SpanIterator
+sun/java2d/pipe/SpanShapeRenderer
+sun/java2d/pipe/SpanShapeRenderer$Composite
+sun/java2d/pipe/TextPipe
+sun/java2d/pipe/TextRenderer
+sun/java2d/pipe/ValidatePipe
+sun/java2d/pipe/hw/AccelGraphicsConfig
+sun/java2d/pipe/hw/BufferedContextProvider
+sun/java2d/x11/X11Renderer
+sun/java2d/x11/X11SurfaceData
+sun/java2d/x11/X11SurfaceData$LazyPipe
+sun/java2d/x11/X11SurfaceData$X11WindowSurfaceData
+sun/java2d/x11/X11VolatileSurfaceManager
+sun/java2d/x11/XSurfaceData
+sun/java2d/xr/XRGraphicsConfig
+sun/launcher/LauncherHelper
+sun/launcher/LauncherHelper$FXHelper
+sun/misc/ASCIICaseInsensitiveComparator
+sun/misc/Cleaner
+sun/misc/CompoundEnumeration
+sun/misc/ExtensionDependency
+sun/misc/FDBigInteger
+sun/misc/FileURLMapper
+sun/misc/FloatingDecimal
+sun/misc/FloatingDecimal$1
+sun/misc/FloatingDecimal$ASCIIToBinaryBuffer
+sun/misc/FloatingDecimal$ASCIIToBinaryConverter
+sun/misc/FloatingDecimal$BinaryToASCIIBuffer
+sun/misc/FloatingDecimal$BinaryToASCIIConverter
+sun/misc/FloatingDecimal$ExceptionalBinaryToASCIIBuffer
+sun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer
+sun/misc/IOUtils
+sun/misc/JarIndex
+sun/misc/JavaAWTAccess
+sun/misc/JavaIOFileDescriptorAccess
+sun/misc/JavaLangAccess
+sun/misc/JavaNetAccess
+sun/misc/JavaNioAccess
+sun/misc/JavaSecurityAccess
+sun/misc/JavaSecurityProtectionDomainAccess
+sun/misc/JavaUtilJarAccess
+sun/misc/JavaUtilZipFileAccess
+sun/misc/Launcher
+sun/misc/Launcher$AppClassLoader
+sun/misc/Launcher$AppClassLoader$1
+sun/misc/Launcher$BootClassPathHolder
+sun/misc/Launcher$BootClassPathHolder$1
+sun/misc/Launcher$ExtClassLoader
+sun/misc/Launcher$ExtClassLoader$1
+sun/misc/Launcher$Factory
+sun/misc/MetaIndex
+sun/misc/NativeSignalHandler
+sun/misc/OSEnvironment
+sun/misc/Perf
+sun/misc/Perf$GetPerfAction
+sun/misc/PerfCounter
+sun/misc/PerfCounter$CoreCounters
+sun/misc/PerformanceLogger
+sun/misc/PerformanceLogger$TimeData
+sun/misc/PostVMInitHook
+sun/misc/Resource
+sun/misc/SharedSecrets
+sun/misc/Signal
+sun/misc/SignalHandler
+sun/misc/SoftCache
+sun/misc/SoftCache$ValueCell
+sun/misc/URLClassPath
+sun/misc/URLClassPath$1
+sun/misc/URLClassPath$2
+sun/misc/URLClassPath$3
+sun/misc/URLClassPath$FileLoader
+sun/misc/URLClassPath$JarLoader
+sun/misc/URLClassPath$JarLoader$1
+sun/misc/URLClassPath$JarLoader$2
+sun/misc/URLClassPath$Loader
+sun/misc/Unsafe
+sun/misc/VM
+sun/misc/Version
+sun/net/DefaultProgressMeteringPolicy
+sun/net/InetAddressCachePolicy
+sun/net/InetAddressCachePolicy$1
+sun/net/InetAddressCachePolicy$2
+sun/net/NetHooks
+sun/net/NetHooks$Provider
+sun/net/NetProperties
+sun/net/NetProperties$1
+sun/net/ProgressMeteringPolicy
+sun/net/ProgressMonitor
+sun/net/ResourceManager
+sun/net/sdp/SdpProvider
+sun/net/spi/DefaultProxySelector
+sun/net/spi/DefaultProxySelector$1
+sun/net/spi/DefaultProxySelector$3
+sun/net/spi/DefaultProxySelector$NonProxyInfo
+sun/net/spi/nameservice/NameService
+sun/net/util/IPAddressUtil
+sun/net/util/URLUtil
+sun/net/www/MessageHeader
+sun/net/www/MimeEntry
+sun/net/www/MimeTable
+sun/net/www/MimeTable$1
+sun/net/www/MimeTable$DefaultInstanceHolder
+sun/net/www/MimeTable$DefaultInstanceHolder$1
+sun/net/www/ParseUtil
+sun/net/www/URLConnection
+sun/net/www/protocol/file/FileURLConnection
+sun/net/www/protocol/file/Handler
+sun/net/www/protocol/http/Handler
+sun/net/www/protocol/jar/Handler
+sun/net/www/protocol/jar/JarFileFactory
+sun/net/www/protocol/jar/JarURLConnection
+sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
+sun/net/www/protocol/jar/URLJarFile
+sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
+sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
+sun/nio/ByteBuffered
+sun/nio/ch/DirectBuffer
+sun/nio/ch/FileChannelImpl
+sun/nio/ch/FileChannelImpl$Unmapper
+sun/nio/ch/FileDispatcher
+sun/nio/ch/FileDispatcherImpl
+sun/nio/ch/IOStatus
+sun/nio/ch/IOUtil
+sun/nio/ch/IOUtil$1
+sun/nio/ch/Interruptible
+sun/nio/ch/NativeDispatcher
+sun/nio/ch/NativeThread
+sun/nio/ch/NativeThreadSet
+sun/nio/ch/Util
+sun/nio/ch/Util$1
+sun/nio/ch/Util$4
+sun/nio/ch/Util$BufferCache
+sun/nio/cs/ArrayDecoder
+sun/nio/cs/ArrayEncoder
+sun/nio/cs/FastCharsetProvider
+sun/nio/cs/HistoricallyNamedCharset
+sun/nio/cs/ISO_8859_1
+sun/nio/cs/ISO_8859_1$Encoder
+sun/nio/cs/StandardCharsets
+sun/nio/cs/StandardCharsets$Aliases
+sun/nio/cs/StandardCharsets$Cache
+sun/nio/cs/StandardCharsets$Classes
+sun/nio/cs/StreamDecoder
+sun/nio/cs/StreamEncoder
+sun/nio/cs/Surrogate
+sun/nio/cs/Surrogate$Parser
+sun/nio/cs/US_ASCII
+sun/nio/cs/US_ASCII$Decoder
sun/nio/cs/UTF_16
sun/nio/cs/UTF_16$Decoder
+sun/nio/cs/UTF_16BE
+sun/nio/cs/UTF_16LE
+sun/nio/cs/UTF_8
+sun/nio/cs/UTF_8$Decoder
+sun/nio/cs/UTF_8$Encoder
+sun/nio/cs/Unicode
sun/nio/cs/UnicodeDecoder
-sun/font/FileFontStrike
-sun/font/TrueTypeGlyphMapper
-sun/font/CMap
-sun/font/CMap$NullCMapClass
-sun/font/CMap$CMapFormat4
-java/nio/ByteBufferAsCharBufferB
-sun/font/FontDesignMetrics$KeyReference
-sun/awt/image/PNGImageDecoder
-sun/awt/image/PNGFilterInputStream
-java/util/zip/InflaterInputStream
-java/util/zip/Inflater
-sun/awt/EventQueueItem
-sun/awt/SunToolkit$3
-sun/awt/X11/XExposeEvent
-sun/reflect/UnsafeBooleanFieldAccessorImpl
-sun/awt/event/IgnorePaintEvent
-java/awt/image/DataBufferInt
-java/awt/image/SinglePixelPackedSampleModel
-sun/awt/image/IntegerInterleavedRaster
-sun/awt/image/OffScreenImage
-sun/awt/image/BufImgSurfaceData
-sun/java2d/opengl/GLXGraphicsConfig
-sun/java2d/opengl/OGLGraphicsConfig
-sun/java2d/x11/X11SurfaceData$X11PixmapSurfaceData
-sun/awt/image/WritableRasterNative
-sun/awt/image/DataBufferNative
-sun/java2d/SurfaceManagerFactory
-sun/java2d/opengl/GLXSurfaceData
-sun/java2d/opengl/OGLSurfaceData
-sun/font/CompositeGlyphMapper
-sun/java2d/loops/FontInfo
-java/util/Date
+sun/print/PrinterGraphicsConfig
+sun/reflect/AccessorGenerator
+sun/reflect/BootstrapConstructorAccessorImpl
+sun/reflect/ByteVector
+sun/reflect/ByteVectorFactory
+sun/reflect/ByteVectorImpl
+sun/reflect/CallerSensitive
+sun/reflect/ClassDefiner
+sun/reflect/ClassDefiner$1
+sun/reflect/ClassFileAssembler
+sun/reflect/ClassFileConstants
+sun/reflect/ConstantPool
+sun/reflect/ConstructorAccessor
+sun/reflect/ConstructorAccessorImpl
+sun/reflect/DelegatingClassLoader
+sun/reflect/DelegatingConstructorAccessorImpl
+sun/reflect/DelegatingMethodAccessorImpl
+sun/reflect/FieldAccessor
+sun/reflect/FieldAccessorImpl
+sun/reflect/Label
+sun/reflect/Label$PatchInfo
+sun/reflect/LangReflectAccess
+sun/reflect/MagicAccessorImpl
+sun/reflect/MethodAccessor
+sun/reflect/MethodAccessorGenerator
+sun/reflect/MethodAccessorGenerator$1
+sun/reflect/MethodAccessorImpl
+sun/reflect/NativeConstructorAccessorImpl
+sun/reflect/NativeMethodAccessorImpl
+sun/reflect/Reflection
+sun/reflect/ReflectionFactory
+sun/reflect/ReflectionFactory$1
+sun/reflect/ReflectionFactory$GetReflectionFactoryAction
+sun/reflect/SerializationConstructorAccessorImpl
+sun/reflect/UTF8
+sun/reflect/UnsafeFieldAccessorFactory
+sun/reflect/UnsafeFieldAccessorImpl
+sun/reflect/UnsafeObjectFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
+sun/reflect/UnsafeStaticFieldAccessorImpl
+sun/reflect/annotation/AnnotationType
+sun/reflect/generics/repository/AbstractRepository
+sun/reflect/generics/repository/ClassRepository
+sun/reflect/generics/repository/GenericDeclRepository
+sun/reflect/misc/MethodUtil
+sun/reflect/misc/MethodUtil$1
+sun/reflect/misc/ReflectUtil
+sun/security/action/GetBooleanAction
+sun/security/action/GetIntegerAction
+sun/security/action/GetPropertyAction
+sun/security/jca/GetInstance
+sun/security/jca/GetInstance$Instance
+sun/security/jca/ProviderConfig
+sun/security/jca/ProviderConfig$2
+sun/security/jca/ProviderList
+sun/security/jca/ProviderList$1
+sun/security/jca/ProviderList$2
+sun/security/jca/ProviderList$3
+sun/security/jca/ProviderList$ServiceList
+sun/security/jca/ProviderList$ServiceList$1
+sun/security/jca/Providers
+sun/security/jca/ServiceId
+sun/security/provider/ByteArrayAccess
+sun/security/provider/DSA
+sun/security/provider/DSA$LegacyDSA
+sun/security/provider/DSA$SHA1withDSA
+sun/security/provider/DSAParameters
+sun/security/provider/DSAPublicKey
+sun/security/provider/DigestBase
+sun/security/provider/NativePRNG
+sun/security/provider/NativePRNG$1
+sun/security/provider/NativePRNG$2
+sun/security/provider/NativePRNG$Blocking
+sun/security/provider/NativePRNG$NonBlocking
+sun/security/provider/NativePRNG$RandomIO
+sun/security/provider/NativePRNG$Variant
+sun/security/provider/SHA
+sun/security/provider/Sun
+sun/security/provider/SunEntries
+sun/security/provider/SunEntries$1
+sun/security/util/BitArray
+sun/security/util/ByteArrayLexOrder
+sun/security/util/Debug
+sun/security/util/DerEncoder
+sun/security/util/DerIndefLenConverter
+sun/security/util/DerInputBuffer
+sun/security/util/DerInputStream
+sun/security/util/DerOutputStream
+sun/security/util/DerValue
+sun/security/util/ManifestEntryVerifier
+sun/security/util/ObjectIdentifier
+sun/security/util/SignatureFileVerifier
+sun/security/x509/AlgorithmId
+sun/security/x509/X509Key
+sun/swing/DefaultLookup
+sun/swing/ImageIconUIResource
+sun/swing/JLightweightFrame
+sun/swing/MenuItemLayoutHelper
+sun/swing/MenuItemLayoutHelper$ColumnAlignment
+sun/swing/MenuItemLayoutHelper$LayoutResult
+sun/swing/MenuItemLayoutHelper$RectSize
+sun/swing/PrintColorUIResource
+sun/swing/StringUIClientPropertyKey
+sun/swing/SwingAccessor
+sun/swing/SwingAccessor$JTextComponentAccessor
+sun/swing/SwingLazyValue
+sun/swing/SwingLazyValue$1
+sun/swing/SwingUtilities2
+sun/swing/SwingUtilities2$2
+sun/swing/SwingUtilities2$AATextInfo
+sun/swing/SwingUtilities2$LSBCacheEntry
+sun/swing/UIAction
+sun/swing/UIClientPropertyKey
+sun/swing/table/DefaultTableCellHeaderRenderer
+sun/swing/table/DefaultTableCellHeaderRenderer$EmptyIcon
+sun/text/ComposedCharIter
+sun/text/IntHashtable
+sun/text/UCompactIntArray
+sun/text/normalizer/CharTrie
+sun/text/normalizer/CharTrie$FriendAgent
+sun/text/normalizer/ICUBinary
+sun/text/normalizer/ICUBinary$Authenticate
+sun/text/normalizer/ICUData
+sun/text/normalizer/IntTrie
+sun/text/normalizer/NormalizerDataReader
+sun/text/normalizer/NormalizerImpl
+sun/text/normalizer/NormalizerImpl$AuxTrieImpl
+sun/text/normalizer/NormalizerImpl$DecomposeArgs
+sun/text/normalizer/NormalizerImpl$FCDTrieImpl
+sun/text/normalizer/NormalizerImpl$NormTrieImpl
+sun/text/normalizer/Trie
+sun/text/normalizer/Trie$DataManipulate
+sun/text/normalizer/UTF16
+sun/text/normalizer/UnicodeMatcher
+sun/text/normalizer/UnicodeSet
+sun/text/resources/CollationData
+sun/text/resources/FormatData
+sun/text/resources/en/FormatData_en
+sun/text/resources/en/FormatData_en_US
+sun/util/CoreResourceBundleControl
+sun/util/PreHashedMap
+sun/util/ResourceBundleEnumeration
+sun/util/calendar/AbstractCalendar
+sun/util/calendar/BaseCalendar
+sun/util/calendar/BaseCalendar$Date
+sun/util/calendar/CalendarDate
sun/util/calendar/CalendarSystem
+sun/util/calendar/CalendarUtils
sun/util/calendar/Gregorian
-sun/util/calendar/BaseCalendar
-sun/util/calendar/AbstractCalendar
-java/util/TimeZone
-java/lang/InheritableThreadLocal
+sun/util/calendar/Gregorian$Date
sun/util/calendar/ZoneInfo
sun/util/calendar/ZoneInfoFile
sun/util/calendar/ZoneInfoFile$1
-java/util/TimeZone$1
-sun/util/calendar/Gregorian$Date
-sun/util/calendar/BaseCalendar$Date
-sun/util/calendar/CalendarDate
-sun/util/calendar/CalendarUtils
-java/util/TimeZone$DisplayNames
-sun/util/TimeZoneNameUtility
+sun/util/calendar/ZoneInfoFile$Checksum
+sun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule
+sun/util/locale/BaseLocale
+sun/util/locale/BaseLocale$Cache
+sun/util/locale/BaseLocale$Key
+sun/util/locale/LanguageTag
+sun/util/locale/LocaleObjectCache
+sun/util/locale/LocaleObjectCache$CacheEntry
+sun/util/locale/LocaleUtils
+sun/util/locale/provider/AuxLocaleProviderAdapter
+sun/util/locale/provider/AuxLocaleProviderAdapter$NullProvider
+sun/util/locale/provider/AvailableLanguageTags
+sun/util/locale/provider/CalendarDataProviderImpl
+sun/util/locale/provider/CalendarDataUtility
+sun/util/locale/provider/CalendarDataUtility$CalendarWeekParameterGetter
+sun/util/locale/provider/CalendarProviderImpl
+sun/util/locale/provider/CollatorProviderImpl
+sun/util/locale/provider/CurrencyNameProviderImpl
+sun/util/locale/provider/DateFormatSymbolsProviderImpl
+sun/util/locale/provider/DecimalFormatSymbolsProviderImpl
+sun/util/locale/provider/JRELocaleProviderAdapter
+sun/util/locale/provider/JRELocaleProviderAdapter$1
+sun/util/locale/provider/LocaleDataMetaInfo
+sun/util/locale/provider/LocaleProviderAdapter
+sun/util/locale/provider/LocaleProviderAdapter$1
+sun/util/locale/provider/LocaleProviderAdapter$Type
+sun/util/locale/provider/LocaleResources
+sun/util/locale/provider/LocaleResources$ResourceReference
+sun/util/locale/provider/LocaleServiceProviderPool
+sun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter
+sun/util/locale/provider/NumberFormatProviderImpl
+sun/util/locale/provider/ResourceBundleBasedAdapter
+sun/util/locale/provider/SPILocaleProviderAdapter
+sun/util/locale/provider/SPILocaleProviderAdapter$1
+sun/util/locale/provider/TimeZoneNameProviderImpl
+sun/util/locale/provider/TimeZoneNameUtility
+sun/util/locale/provider/TimeZoneNameUtility$TimeZoneNameGetter
+sun/util/logging/LoggingProxy
+sun/util/logging/LoggingSupport
+sun/util/logging/LoggingSupport$1
+sun/util/logging/LoggingSupport$2
+sun/util/logging/PlatformLogger
+sun/util/logging/PlatformLogger$1
+sun/util/logging/PlatformLogger$DefaultLoggerProxy
+sun/util/logging/PlatformLogger$JavaLoggerProxy
+sun/util/logging/PlatformLogger$Level
+sun/util/logging/PlatformLogger$LoggerProxy
+sun/util/logging/resources/logging
+sun/util/resources/CalendarData
+sun/util/resources/CurrencyNames
+sun/util/resources/LocaleData
+sun/util/resources/LocaleData$1
+sun/util/resources/LocaleData$LocaleDataResourceBundleControl
+sun/util/resources/LocaleNamesBundle
+sun/util/resources/OpenListResourceBundle
+sun/util/resources/ParallelListResourceBundle
+sun/util/resources/ParallelListResourceBundle$KeySet
sun/util/resources/TimeZoneNames
sun/util/resources/TimeZoneNamesBundle
-sun/util/resources/TimeZoneNames_en
-java/util/spi/TimeZoneNameProvider
-java/lang/ProcessBuilder
-java/lang/ProcessImpl
-java/lang/UNIXProcess
-java/lang/Process
-java/lang/UNIXProcess$1
-java/net/ServerSocket
-java/util/Random
-java/util/concurrent/atomic/AtomicLong
-java/lang/InternalError
-java/io/StringReader
-java/lang/SecurityException
-java/io/FilterReader
-java/lang/reflect/Proxy
-java/lang/reflect/InvocationHandler
-java/lang/NoSuchFieldException
-java/lang/InstantiationException
-java/lang/ArrayIndexOutOfBoundsException
-java/lang/IndexOutOfBoundsException
-javax/swing/JDialog
-sun/awt/X11/XClipboard
-sun/awt/datatransfer/SunClipboard
-java/awt/datatransfer/Clipboard
-java/awt/datatransfer/SystemFlavorMap
-java/awt/datatransfer/FlavorMap
-java/awt/datatransfer/FlavorTable
-java/awt/datatransfer/SystemFlavorMap$1
-sun/net/ProgressMonitor
-sun/net/DefaultProgressMeteringPolicy
-sun/net/ProgressMeteringPolicy
-java/awt/datatransfer/SystemFlavorMap$2
-java/awt/datatransfer/MimeType
-java/io/Externalizable
-java/awt/datatransfer/MimeTypeParameterList
-sun/awt/datatransfer/DataTransferer
-java/util/Collections$SynchronizedSet
-java/util/Collections$SynchronizedCollection
-java/awt/datatransfer/DataFlavor
-java/awt/datatransfer/DataFlavor$1
-sun/awt/datatransfer/DataTransferer$CharsetComparator
-sun/awt/datatransfer/DataTransferer$IndexedComparator
-sun/nio/cs/UTF_16LE
-sun/nio/cs/UTF_16BE
-sun/awt/datatransfer/DataTransferer$DataFlavorComparator
-java/rmi/Remote
-sun/awt/datatransfer/DataTransferer$1
-sun/awt/X11/XDataTransferer
-sun/awt/datatransfer/ToolkitThreadBlockedHandler
-javax/imageio/ImageTypeSpecifier
-sun/awt/X11/XSelection
-sun/security/action/GetIntegerAction
-sun/awt/X11/XSelection$IncrementalTransferHandler
-sun/awt/X11/XSelection$SelectionEventHandler
-java/awt/datatransfer/Transferable
-java/io/EOFException
-java/util/Vector$1
-java/util/zip/ZipFile$1
-java/util/zip/ZipFile$2
-java/util/jar/JarFile$1
-java/util/PropertyResourceBundle
-java/util/ResourceBundle$Control$1
-java/util/Hashtable$EntrySet
-java/lang/IllegalAccessError
-java/text/MessageFormat
-java/text/MessageFormat$Field
-java/text/Format$Field
-java/lang/CloneNotSupportedException
-sun/reflect/MethodAccessorGenerator
-sun/reflect/AccessorGenerator
-sun/reflect/ClassFileConstants
-java/lang/Void
-sun/reflect/ByteVectorFactory
-sun/reflect/ByteVectorImpl
-sun/reflect/ByteVector
-sun/reflect/ClassFileAssembler
-sun/reflect/UTF8
-sun/reflect/Label
-sun/reflect/Label$PatchInfo
-sun/reflect/MethodAccessorGenerator$1
-sun/reflect/ClassDefiner
-sun/reflect/ClassDefiner$1
-sun/reflect/BootstrapConstructorAccessorImpl
-java/awt/event/ActionListener
-javax/swing/Timer
-javax/swing/Timer$DoPostEvent
-javax/swing/TimerQueue
-javax/swing/TimerQueue$1
-javax/swing/ToolTipManager
-java/awt/event/MouseAdapter
-javax/swing/ToolTipManager$insideTimerAction
-javax/swing/ToolTipManager$outsideTimerAction
-javax/swing/ToolTipManager$stillInsideTimerAction
-sun/swing/UIAction
-javax/swing/Action
-javax/swing/ToolTipManager$MoveBeforeEnterListener
-java/awt/event/MouseMotionAdapter
-java/util/Hashtable$ValueCollection
-javax/swing/event/CaretListener
-javax/swing/JToolBar
-javax/swing/JSplitPane
-javax/swing/border/Border
-javax/swing/JToggleButton
-javax/swing/border/EmptyBorder
-javax/swing/border/AbstractBorder
-javax/swing/DefaultButtonModel
-javax/swing/ButtonModel
-javax/swing/AbstractButton$Handler
-javax/swing/event/ChangeListener
-java/awt/event/ItemListener
-javax/swing/plaf/metal/MetalButtonUI
-javax/swing/plaf/basic/BasicButtonUI
-javax/swing/plaf/ButtonUI
-javax/swing/plaf/metal/MetalBorders
-javax/swing/plaf/BorderUIResource$CompoundBorderUIResource
-javax/swing/border/CompoundBorder
-javax/swing/plaf/metal/MetalBorders$ButtonBorder
-javax/swing/plaf/basic/BasicBorders$MarginBorder
-javax/swing/plaf/basic/BasicButtonListener
-java/awt/AWTEventMulticaster
-java/awt/event/WindowFocusListener
-java/awt/event/WindowStateListener
-java/awt/event/AdjustmentListener
-java/awt/event/TextListener
-javax/swing/event/AncestorListener
-java/beans/VetoableChangeListener
-javax/swing/ButtonGroup
-javax/swing/JToggleButton$ToggleButtonModel
-javax/swing/plaf/metal/MetalToggleButtonUI
-javax/swing/plaf/basic/BasicToggleButtonUI
-javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder
-java/awt/CardLayout
-javax/swing/Box
-javax/swing/plaf/metal/MetalBorders$TextFieldBorder
-javax/swing/plaf/metal/MetalBorders$Flush3DBorder
-javax/swing/BoxLayout
-javax/swing/JMenuBar
-javax/swing/DefaultSingleSelectionModel
-javax/swing/SingleSelectionModel
-javax/swing/plaf/basic/BasicMenuBarUI
-javax/swing/plaf/MenuBarUI
-javax/swing/plaf/basic/DefaultMenuLayout
-javax/swing/plaf/metal/MetalBorders$MenuBarBorder
-javax/swing/plaf/basic/BasicMenuBarUI$Handler
-javax/swing/KeyboardManager
-javax/swing/event/MenuEvent
-javax/swing/JMenu$MenuChangeListener
-javax/swing/JMenuItem$MenuItemFocusListener
-javax/swing/plaf/basic/BasicMenuUI
-javax/swing/plaf/basic/BasicMenuItemUI
-javax/swing/plaf/MenuItemUI
-javax/swing/plaf/metal/MetalBorders$MenuItemBorder
-javax/swing/plaf/metal/MetalIconFactory
-javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon
-javax/swing/plaf/basic/BasicMenuUI$Handler
-javax/swing/event/MenuKeyListener
-javax/swing/plaf/basic/BasicMenuItemUI$Handler
-javax/swing/event/MenuDragMouseListener
-javax/swing/event/MouseInputListener
-javax/swing/event/ChangeEvent
-java/awt/event/ContainerEvent
-javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon
-javax/swing/JPopupMenu
-javax/swing/plaf/basic/BasicPopupMenuUI
-javax/swing/plaf/PopupMenuUI
-javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
-java/awt/event/AWTEventListenerProxy
-java/awt/Toolkit$SelectiveAWTEventListener
-java/awt/Toolkit$ToolkitEventMulticaster
-javax/swing/plaf/basic/BasicLookAndFeel$1
-javax/swing/plaf/metal/MetalBorders$PopupMenuBorder
-javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener
-javax/swing/event/PopupMenuListener
-javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
-javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
-javax/swing/MenuSelectionManager
-javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper
-javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1
-java/awt/event/FocusAdapter
-javax/swing/JMenu$WinListener
-java/awt/event/WindowAdapter
-javax/swing/JPopupMenu$Separator
-javax/swing/JSeparator
-javax/swing/plaf/metal/MetalPopupMenuSeparatorUI
-javax/swing/plaf/metal/MetalSeparatorUI
-javax/swing/plaf/basic/BasicSeparatorUI
-javax/swing/plaf/SeparatorUI
-javax/swing/JComboBox
-javax/swing/event/ListDataListener
-javax/swing/event/CaretEvent
-javax/swing/text/TabExpander
-javax/swing/JScrollBar
-java/awt/Adjustable
-javax/swing/event/MouseInputAdapter
-javax/swing/JScrollBar$ModelListener
-javax/swing/DefaultBoundedRangeModel
-javax/swing/BoundedRangeModel
-javax/swing/plaf/metal/MetalScrollBarUI
-javax/swing/plaf/basic/BasicScrollBarUI
-javax/swing/plaf/ScrollBarUI
-javax/swing/plaf/metal/MetalBumps
-javax/swing/plaf/metal/MetalScrollButton
-javax/swing/plaf/basic/BasicArrowButton
-javax/swing/plaf/basic/BasicScrollBarUI$TrackListener
-javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener
-javax/swing/plaf/basic/BasicScrollBarUI$ModelListener
-javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener
-javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler
-javax/swing/plaf/basic/BasicScrollBarUI$Handler
-javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener
-javax/swing/CellRendererPane
-java/util/HashMap$EntryIterator
-javax/swing/border/MatteBorder
-sun/font/StandardGlyphVector
-java/awt/font/GlyphVector
-sun/font/StandardGlyphVector$GlyphStrike
-sun/font/CoreMetrics
-sun/font/FontLineMetrics
-java/awt/font/LineMetrics
-javax/swing/ComboBoxModel
-javax/swing/ListModel
-javax/swing/ListCellRenderer
-javax/swing/DefaultComboBoxModel
-javax/swing/MutableComboBoxModel
-javax/swing/AbstractListModel
-javax/swing/JComboBox$1
-javax/swing/AncestorNotifier
-javax/swing/plaf/metal/MetalComboBoxUI
-javax/swing/plaf/basic/BasicComboBoxUI
-javax/swing/plaf/ComboBoxUI
-javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager
-javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
-javax/swing/plaf/basic/BasicComboPopup
-javax/swing/plaf/basic/ComboPopup
-javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
-javax/swing/border/LineBorder
-javax/swing/plaf/basic/BasicComboPopup$1
-javax/swing/JList
-javax/swing/DropMode
-javax/swing/DefaultListSelectionModel
-javax/swing/ListSelectionModel
-javax/swing/plaf/basic/BasicListUI
-javax/swing/plaf/ListUI
-javax/swing/plaf/basic/BasicListUI$ListTransferHandler
-javax/swing/TransferHandler
-javax/swing/TransferHandler$TransferAction
-javax/swing/DefaultListCellRenderer$UIResource
-javax/swing/DefaultListCellRenderer
-javax/swing/TransferHandler$SwingDropTarget
-java/awt/dnd/DropTargetContext
-javax/swing/TransferHandler$DropHandler
-javax/swing/TransferHandler$TransferSupport
-javax/swing/plaf/basic/BasicListUI$Handler
-javax/swing/event/ListSelectionListener
-javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
-javax/swing/plaf/basic/BasicComboPopup$Handler
-javax/swing/JScrollPane
-javax/swing/ScrollPaneConstants
-javax/swing/ScrollPaneLayout$UIResource
-javax/swing/ScrollPaneLayout
-javax/swing/JViewport
-javax/swing/ViewportLayout
-javax/swing/plaf/basic/BasicViewportUI
-javax/swing/plaf/ViewportUI
-javax/swing/JScrollPane$ScrollBar
-javax/swing/JViewport$ViewListener
-java/awt/event/ComponentAdapter
-javax/swing/plaf/metal/MetalScrollPaneUI
-javax/swing/plaf/basic/BasicScrollPaneUI
-javax/swing/plaf/ScrollPaneUI
-javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder
-javax/swing/plaf/basic/BasicScrollPaneUI$Handler
-javax/swing/plaf/metal/MetalScrollPaneUI$1
-javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource
-javax/swing/plaf/basic/BasicComboBoxRenderer
-javax/swing/plaf/metal/MetalComboBoxEditor$UIResource
-javax/swing/plaf/metal/MetalComboBoxEditor
-javax/swing/plaf/basic/BasicComboBoxEditor
-javax/swing/ComboBoxEditor
-javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
-javax/swing/JTextField$NotifyAction
-javax/swing/text/TextAction
-javax/swing/AbstractAction
-javax/swing/text/JTextComponent$MutableCaretEvent
-javax/swing/plaf/metal/MetalTextFieldUI
-javax/swing/plaf/basic/BasicTextFieldUI
-javax/swing/plaf/basic/BasicTextUI
-javax/swing/text/ViewFactory
-javax/swing/plaf/TextUI
-javax/swing/plaf/basic/BasicTextUI$BasicCursor
-javax/swing/text/DefaultEditorKit
-javax/swing/text/EditorKit
-javax/swing/text/DefaultEditorKit$InsertContentAction
-javax/swing/text/DefaultEditorKit$DeletePrevCharAction
-javax/swing/text/DefaultEditorKit$DeleteNextCharAction
-javax/swing/text/DefaultEditorKit$ReadOnlyAction
-javax/swing/text/DefaultEditorKit$DeleteWordAction
-javax/swing/text/DefaultEditorKit$WritableAction
-javax/swing/text/DefaultEditorKit$CutAction
-javax/swing/text/DefaultEditorKit$CopyAction
-javax/swing/text/DefaultEditorKit$PasteAction
-javax/swing/text/DefaultEditorKit$VerticalPageAction
-javax/swing/text/DefaultEditorKit$PageAction
-javax/swing/text/DefaultEditorKit$InsertBreakAction
-javax/swing/text/DefaultEditorKit$BeepAction
-javax/swing/text/DefaultEditorKit$NextVisualPositionAction
-javax/swing/text/DefaultEditorKit$BeginWordAction
-javax/swing/text/DefaultEditorKit$EndWordAction
-javax/swing/text/DefaultEditorKit$PreviousWordAction
-javax/swing/text/DefaultEditorKit$NextWordAction
-javax/swing/text/DefaultEditorKit$BeginLineAction
-javax/swing/text/DefaultEditorKit$EndLineAction
-javax/swing/text/DefaultEditorKit$BeginParagraphAction
-javax/swing/text/DefaultEditorKit$EndParagraphAction
-javax/swing/text/DefaultEditorKit$BeginAction
-javax/swing/text/DefaultEditorKit$EndAction
-javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
-javax/swing/text/DefaultEditorKit$InsertTabAction
-javax/swing/text/DefaultEditorKit$SelectWordAction
-javax/swing/text/DefaultEditorKit$SelectLineAction
-javax/swing/text/DefaultEditorKit$SelectParagraphAction
-javax/swing/text/DefaultEditorKit$SelectAllAction
-javax/swing/text/DefaultEditorKit$UnselectAction
-javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction
-javax/swing/text/DefaultEditorKit$DumpModelAction
-javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
-javax/swing/text/Position$Bias
-javax/swing/plaf/basic/BasicTextUI$RootView
-javax/swing/text/View
-javax/swing/plaf/basic/BasicTextUI$UpdateHandler
-javax/swing/event/DocumentListener
-javax/swing/plaf/basic/BasicTextUI$DragListener
-javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
-javax/swing/plaf/basic/BasicTextUI$BasicCaret
-javax/swing/text/DefaultCaret
-javax/swing/text/Caret
-javax/swing/text/DefaultCaret$Handler
-java/awt/datatransfer/ClipboardOwner
-javax/swing/plaf/basic/BasicTextUI$BasicHighlighter
-javax/swing/text/DefaultHighlighter
-javax/swing/text/LayeredHighlighter
-javax/swing/text/Highlighter
-javax/swing/text/Highlighter$Highlight
-javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
-javax/swing/text/LayeredHighlighter$LayerPainter
-javax/swing/text/Highlighter$HighlightPainter
-javax/swing/text/DefaultHighlighter$SafeDamager
-javax/swing/text/FieldView
-javax/swing/text/PlainView
-javax/swing/text/JTextComponent$DefaultKeymap
-javax/swing/text/Keymap
-javax/swing/text/JTextComponent$KeymapWrapper
-javax/swing/text/JTextComponent$KeymapActionMap
-javax/swing/plaf/basic/BasicTextUI$FocusAction
-javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
-javax/swing/JTextArea
-javax/swing/JEditorPane
-javax/swing/JTextField$ScrollRepainter
-javax/swing/plaf/metal/MetalComboBoxEditor$1
-javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder
-javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener
-javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler
-javax/swing/plaf/basic/BasicComboBoxUI$Handler
-javax/swing/plaf/metal/MetalComboBoxButton
-javax/swing/plaf/metal/MetalComboBoxIcon
-javax/swing/plaf/metal/MetalComboBoxButton$1
-javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
-javax/swing/JComboBox$KeySelectionManager
-javax/swing/JToolBar$DefaultToolBarLayout
-javax/swing/plaf/metal/MetalToolBarUI
-javax/swing/plaf/basic/BasicToolBarUI
-javax/swing/plaf/ToolBarUI
-javax/swing/plaf/metal/MetalBorders$ToolBarBorder
-javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
-javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder
-javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder
-javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
-javax/swing/plaf/basic/BasicBorders$ButtonBorder
-javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
-javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener
-javax/swing/plaf/basic/BasicToolBarUI$DockingListener
-javax/swing/plaf/basic/BasicToolBarUI$Handler
-javax/swing/border/EtchedBorder
-javax/swing/JToolBar$Separator
-javax/swing/plaf/basic/BasicToolBarSeparatorUI
-java/applet/Applet
-java/awt/Panel
-com/sun/awt/AWTUtilities
-javax/swing/KeyboardManager$ComponentKeyStrokePair
-sun/awt/EmbeddedFrame
-sun/awt/im/InputMethodContext
-java/awt/im/spi/InputMethodContext
-sun/awt/im/InputContext
-sun/awt/im/InputMethodManager
-sun/awt/im/ExecutableInputMethodManager
-sun/awt/X11/XInputMethodDescriptor
-sun/awt/X11InputMethodDescriptor
-java/awt/im/spi/InputMethodDescriptor
-sun/awt/im/InputMethodLocator
-sun/awt/im/ExecutableInputMethodManager$2
-sun/misc/Service
-sun/misc/Service$LazyIterator
-java/util/TreeSet
-java/util/NavigableSet
-java/util/SortedSet
-javax/swing/SizeRequirements
-javax/swing/plaf/basic/BasicGraphicsUtils
-java/awt/event/AdjustmentEvent
-java/awt/MenuBar
-sun/awt/X11/XComponentPeer$2
-java/awt/SequencedEvent
-java/beans/PropertyVetoException
-java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
-java/awt/KeyboardFocusManager$HeavyweightFocusRequest
-java/awt/KeyboardFocusManager$LightweightFocusRequest
-sun/awt/KeyboardFocusManagerPeerImpl
-sun/awt/SunToolkit$7
-java/awt/Window$1DisposeAction
-java/awt/LightweightDispatcher$2
-sun/awt/X11/XReparentEvent
-sun/awt/X11/XWindowAttributes
-sun/awt/X11/XFocusChangeEvent
-sun/awt/X11/XComponentPeer$1
-sun/awt/X11/XUnmapEvent
-java/io/StringWriter
-javax/swing/JWindow
-java/io/UnsupportedEncodingException
-java/net/UnknownHostException
-java/nio/channels/SocketChannel
-java/nio/channels/spi/AbstractSelectableChannel
-java/nio/channels/SelectableChannel
-java/net/SocketImplFactory
-javax/swing/UnsupportedLookAndFeelException
-java/lang/UnsatisfiedLinkError
-javax/swing/Box$Filler
-javax/swing/JComponent$2
-sun/net/www/MimeTable
-java/net/FileNameMap
-sun/net/www/MimeTable$1
-sun/net/www/MimeEntry
-java/net/URLConnection$1
-java/text/SimpleDateFormat
-java/text/DateFormat
-java/text/DateFormat$Field
-java/util/Calendar
-java/util/GregorianCalendar
-sun/util/resources/CalendarData
-sun/util/resources/CalendarData_en
-java/text/DateFormatSymbols
-java/text/spi/DateFormatSymbolsProvider
-java/text/DontCareFieldPosition
-java/text/DontCareFieldPosition$1
-java/text/Format$FieldDelegate
-javax/swing/plaf/BorderUIResource
-javax/swing/BorderFactory
-javax/swing/border/BevelBorder
-javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon
-javax/swing/plaf/metal/MetalIconFactory$FolderIcon16
-java/util/zip/ZipInputStream
-java/io/PushbackInputStream
-java/util/zip/CRC32
-java/util/zip/Checksum
-java/lang/Thread$State
-javax/swing/SwingUtilities$SharedOwnerFrame
-javax/swing/JTable
-javax/swing/event/TableModelListener
-javax/swing/event/TableColumnModelListener
-javax/swing/event/CellEditorListener
-javax/swing/event/RowSorterListener
-javax/swing/BufferStrategyPaintManager$BufferInfo
-java/awt/Component$BltSubRegionBufferStrategy
-sun/awt/SubRegionShowable
-java/awt/Component$BltBufferStrategy
-sun/awt/image/SunVolatileImage
-sun/awt/image/BufferedImageGraphicsConfig
-sun/print/PrinterGraphicsConfig
-sun/java2d/x11/X11VolatileSurfaceManager
-sun/awt/image/VolatileSurfaceManager
-java/awt/print/PrinterGraphics
-java/awt/PrintGraphics
-java/awt/GraphicsCallback$PaintCallback
-java/awt/GraphicsCallback
-sun/awt/SunGraphicsCallback
-javax/swing/JRadioButton
-java/lang/ClassFormatError
-javax/swing/JTabbedPane
-javax/swing/JTabbedPane$ModelListener
-javax/swing/plaf/metal/MetalTabbedPaneUI
-javax/swing/plaf/basic/BasicTabbedPaneUI
-javax/swing/plaf/TabbedPaneUI
-javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout
-javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout
-javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout
-javax/swing/plaf/basic/BasicTabbedPaneUI$Handler
-sun/swing/ImageIconUIResource
-javax/swing/GrayFilter
-java/awt/image/RGBImageFilter
-java/awt/image/ImageFilter
-java/awt/image/FilteredImageSource
-org/w3c/dom/Node
-org/xml/sax/SAXException
-javax/xml/parsers/ParserConfigurationException
-org/xml/sax/EntityResolver
-java/security/NoSuchAlgorithmException
-java/security/GeneralSecurityException
-java/util/zip/GZIPInputStream
-java/util/zip/DeflaterOutputStream
-org/xml/sax/InputSource
-javax/xml/parsers/DocumentBuilderFactory
-javax/xml/parsers/FactoryFinder
-javax/xml/parsers/SecuritySupport
-javax/xml/parsers/SecuritySupport$2
-javax/xml/parsers/SecuritySupport$5
-javax/xml/parsers/SecuritySupport$1
-javax/xml/parsers/SecuritySupport$4
-javax/xml/parsers/DocumentBuilder
-org/w3c/dom/Document
-org/xml/sax/helpers/DefaultHandler
-org/xml/sax/DTDHandler
-org/xml/sax/ContentHandler
-org/xml/sax/ErrorHandler
-org/xml/sax/SAXNotSupportedException
-org/xml/sax/Locator
-org/xml/sax/SAXNotRecognizedException
-org/xml/sax/SAXParseException
-org/w3c/dom/NodeList
-org/w3c/dom/events/EventTarget
-org/w3c/dom/traversal/DocumentTraversal
-org/w3c/dom/events/DocumentEvent
-org/w3c/dom/ranges/DocumentRange
-org/w3c/dom/Entity
-org/w3c/dom/Element
-org/w3c/dom/CharacterData
-org/w3c/dom/CDATASection
-org/w3c/dom/Text
-org/xml/sax/AttributeList
-org/w3c/dom/DOMException
-org/w3c/dom/Notation
-org/w3c/dom/DocumentType
-org/w3c/dom/Attr
-org/w3c/dom/EntityReference
-org/w3c/dom/ProcessingInstruction
-org/w3c/dom/Comment
-org/w3c/dom/DocumentFragment
-org/w3c/dom/events/Event
-org/w3c/dom/events/MutationEvent
-org/w3c/dom/traversal/TreeWalker
-org/w3c/dom/ranges/Range
-org/w3c/dom/traversal/NodeIterator
-org/w3c/dom/events/EventException
-org/w3c/dom/NamedNodeMap
-java/lang/StringIndexOutOfBoundsException
-java/awt/GridLayout
-javax/swing/plaf/metal/MetalRadioButtonUI
-javax/swing/plaf/basic/BasicRadioButtonUI
-javax/swing/plaf/basic/BasicBorders
-javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon
-java/awt/event/ItemEvent
-java/awt/CardLayout$Card
-javax/swing/JCheckBox
-javax/swing/event/ListSelectionEvent
-javax/swing/plaf/metal/MetalCheckBoxUI
-javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon
-java/lang/ExceptionInInitializerError
-com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
-javax/swing/JProgressBar
-javax/swing/JProgressBar$ModelListener
-javax/swing/plaf/metal/MetalProgressBarUI
-javax/swing/plaf/basic/BasicProgressBarUI
-javax/swing/plaf/ProgressBarUI
-javax/swing/plaf/BorderUIResource$LineBorderUIResource
-javax/swing/plaf/basic/BasicProgressBarUI$Handler
-javax/swing/tree/TreeModel
-javax/swing/table/TableCellRenderer
-javax/swing/table/JTableHeader
-javax/swing/event/TreeExpansionListener
-javax/swing/table/AbstractTableModel
-javax/swing/table/TableModel
-javax/swing/table/DefaultTableCellRenderer
-javax/swing/JTree
-javax/swing/tree/TreeSelectionModel
-javax/swing/tree/DefaultTreeCellRenderer
-javax/swing/tree/TreeCellRenderer
-javax/swing/table/TableCellEditor
-javax/swing/CellEditor
-javax/swing/JToolTip
-javax/swing/table/TableColumn
-javax/swing/table/DefaultTableColumnModel
-javax/swing/table/TableColumnModel
-javax/swing/table/DefaultTableModel
-javax/swing/event/TableModelEvent
-sun/swing/table/DefaultTableCellHeaderRenderer
-javax/swing/plaf/basic/BasicTableHeaderUI
-javax/swing/plaf/TableHeaderUI
-javax/swing/plaf/basic/BasicTableHeaderUI$1
-javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler
-javax/swing/DefaultCellEditor
-javax/swing/tree/TreeCellEditor
-javax/swing/AbstractCellEditor
-javax/swing/plaf/basic/BasicTableUI
-javax/swing/plaf/TableUI
-javax/swing/plaf/basic/BasicTableUI$TableTransferHandler
-javax/swing/plaf/basic/BasicTableUI$Handler
-javax/swing/tree/DefaultTreeSelectionModel
-javax/swing/tree/TreePath
-javax/swing/plaf/metal/MetalTreeUI
-javax/swing/plaf/basic/BasicTreeUI
-javax/swing/plaf/TreeUI
-javax/swing/plaf/basic/BasicTreeUI$Actions
-javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler
-javax/swing/plaf/metal/MetalTreeUI$LineListener
-javax/swing/plaf/basic/BasicTreeUI$Handler
-javax/swing/event/TreeModelListener
-javax/swing/event/TreeSelectionListener
-javax/swing/event/SwingPropertyChangeSupport
-javax/swing/tree/VariableHeightLayoutCache
-javax/swing/tree/AbstractLayoutCache
-javax/swing/tree/RowMapper
-javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler
-javax/swing/tree/AbstractLayoutCache$NodeDimensions
-javax/swing/JTree$TreeModelHandler
-javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
-javax/swing/tree/DefaultMutableTreeNode
-javax/swing/tree/MutableTreeNode
-javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
-javax/swing/event/TableColumnModelEvent
-java/text/ParseException
-java/text/NumberFormat$Field
-javax/swing/event/UndoableEditListener
-javax/swing/filechooser/FileFilter
-javax/swing/tree/DefaultTreeModel
-javax/swing/tree/DefaultTreeCellEditor
-javax/swing/tree/DefaultTreeCellEditor$1
-javax/swing/tree/DefaultTreeCellEditor$DefaultTextField
-javax/swing/DefaultCellEditor$1
-javax/swing/DefaultCellEditor$EditorDelegate
-javax/swing/tree/DefaultTreeCellEditor$EditorContainer
-javax/swing/JTree$TreeSelectionRedirector
-javax/swing/event/TreeModelEvent
-javax/swing/plaf/metal/MetalSplitPaneUI
-javax/swing/plaf/basic/BasicSplitPaneUI
-javax/swing/plaf/SplitPaneUI
-javax/swing/plaf/basic/BasicSplitPaneDivider
-javax/swing/plaf/basic/BasicBorders$SplitPaneBorder
-javax/swing/plaf/metal/MetalSplitPaneDivider
-javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout
-javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler
-javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder
-javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager
-javax/swing/plaf/basic/BasicSplitPaneUI$1
-javax/swing/plaf/basic/BasicSplitPaneUI$Handler
-javax/swing/plaf/metal/MetalSplitPaneDivider$1
-javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler
-javax/swing/plaf/metal/MetalSplitPaneDivider$2
-javax/swing/border/TitledBorder
-javax/swing/plaf/basic/BasicTextAreaUI
-java/util/Collections$UnmodifiableCollection$1
-java/io/InterruptedIOException
-java/net/NoRouteToHostException
-java/net/BindException
-javax/swing/tree/PathPlaceHolder
-javax/swing/event/TreeSelectionEvent
-javax/swing/JList$3
-javax/swing/JList$ListSelectionHandler
-javax/swing/JSlider
-javax/swing/JSlider$ModelListener
-javax/swing/plaf/metal/MetalSliderUI
-javax/swing/plaf/basic/BasicSliderUI
-javax/swing/plaf/SliderUI
-javax/swing/plaf/basic/BasicSliderUI$Actions
-javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon
-javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon
-javax/swing/plaf/basic/BasicSliderUI$TrackListener
-javax/swing/plaf/basic/BasicSliderUI$Handler
-javax/swing/plaf/basic/BasicSliderUI$ScrollListener
-javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
-javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
-sun/java2d/HeadlessGraphicsEnvironment
-java/util/Hashtable$KeySet
-java/awt/FontFormatException
-sun/font/Type1Font$1
-java/nio/channels/FileChannel$MapMode
-sun/nio/ch/FileChannelImpl$Unmapper
-sun/nio/ch/Util$3
-java/nio/DirectByteBufferR
-java/nio/charset/Charset$3
-sun/nio/cs/AbstractCharsetProvider
-sun/nio/cs/SingleByteDecoder
-java/lang/CharacterData00
-javax/swing/DefaultListModel
-javax/swing/event/ListDataEvent
-javax/sound/sampled/DataLine
-javax/sound/sampled/Line
-javax/sound/sampled/Line$Info
-javax/sound/sampled/DataLine$Info
-javax/sound/sampled/Control$Type
-javax/sound/sampled/FloatControl$Type
-javax/sound/sampled/LineUnavailableException
-javax/sound/sampled/UnsupportedAudioFileException
-javax/swing/JRadioButtonMenuItem
-javax/swing/JMenuItem$AccessibleJMenuItem
-javax/swing/AbstractButton$AccessibleAbstractButton
-javax/accessibility/AccessibleAction
-javax/accessibility/AccessibleValue
-javax/accessibility/AccessibleText
-javax/accessibility/AccessibleExtendedComponent
-javax/accessibility/AccessibleComponent
-javax/swing/JComponent$AccessibleJComponent
-java/awt/Container$AccessibleAWTContainer
-java/awt/Component$AccessibleAWTComponent
-javax/accessibility/AccessibleRelationSet
-javax/accessibility/AccessibleState
-javax/accessibility/AccessibleBundle
-javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
-javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon
-javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem
-javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
-javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon
-sun/awt/image/ImageDecoder$1
-javax/swing/JTabbedPane$Page
-java/net/DatagramSocket
-java/net/MulticastSocket
-java/net/DatagramPacket
-sun/net/InetAddressCachePolicy
-sun/net/InetAddressCachePolicy$1
-sun/net/InetAddressCachePolicy$2
-java/net/InetAddress$CacheEntry
-java/net/PlainDatagramSocketImpl
-java/net/DatagramSocketImpl
-java/net/NetworkInterface
-java/net/InterfaceAddress
-java/text/Collator
-java/text/spi/CollatorProvider
-sun/text/resources/CollationData
-sun/text/resources/CollationData_en
-sun/util/EmptyListResourceBundle
-java/text/RuleBasedCollator
-java/text/CollationRules
-java/text/RBCollationTables
-java/text/RBTableBuilder
-java/text/RBCollationTables$BuildAPI
-sun/text/IntHashtable
-sun/text/UCompactIntArray
-sun/text/normalizer/NormalizerImpl
-sun/text/normalizer/ICUData
-sun/text/normalizer/NormalizerDataReader
-sun/text/normalizer/ICUBinary$Authenticate
-sun/text/normalizer/ICUBinary
-sun/text/normalizer/NormalizerImpl$FCDTrieImpl
-sun/text/normalizer/Trie$DataManipulate
-sun/text/normalizer/NormalizerImpl$NormTrieImpl
-sun/text/normalizer/NormalizerImpl$AuxTrieImpl
-sun/text/normalizer/IntTrie
-sun/text/normalizer/Trie
-sun/text/normalizer/CharTrie
-sun/text/normalizer/CharTrie$FriendAgent
-sun/text/normalizer/UnicodeSet
-sun/text/normalizer/UnicodeMatcher
-sun/text/normalizer/NormalizerImpl$DecomposeArgs
-java/text/MergeCollation
-java/text/PatternEntry$Parser
-java/text/PatternEntry
-java/text/EntryPair
-sun/text/ComposedCharIter
-sun/text/normalizer/UTF16
-sun/net/www/protocol/http/Handler
-java/io/ObjectInputStream$BlockDataInputStream
-java/io/ObjectInputStream$PeekInputStream
-java/io/ObjectInputStream$HandleTable
-java/io/ObjectInputStream$ValidationList
-java/io/Bits
-java/io/ObjectStreamClass$Caches
-java/io/ObjectStreamClass$WeakClassKey
-java/io/ObjectStreamClass$EntryFuture
-java/io/ObjectStreamClass$2
-sun/reflect/SerializationConstructorAccessorImpl
-java/io/ObjectStreamClass$FieldReflectorKey
-java/io/ObjectStreamClass$FieldReflector
-java/io/ObjectStreamClass$1
-java/io/DataOutputStream
-java/io/ObjectStreamClass$MemberSignature
-java/io/ObjectStreamClass$3
-java/io/ObjectStreamClass$4
-java/io/ObjectStreamClass$5
-java/security/MessageDigest
-java/security/MessageDigestSpi
-sun/security/jca/GetInstance
-sun/security/jca/Providers
-sun/security/jca/ProviderList
-sun/security/jca/ProviderConfig
-sun/security/jca/ProviderList$3
-sun/security/jca/ProviderList$1
-sun/security/jca/ProviderList$2
-sun/security/jca/ProviderConfig$1
-sun/security/jca/ProviderConfig$3
-java/security/Provider$Service
-java/security/Provider$UString
-sun/security/provider/SHA
-sun/security/provider/DigestBase
-sun/security/jca/GetInstance$Instance
-java/security/MessageDigest$Delegate
-sun/security/provider/ByteArrayAccess
-java/io/ObjectStreamClass$ClassDataSlot
-sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
-java/security/SignatureException
-java/security/InvalidKeyException
-java/security/KeyException
-java/security/Signature
-java/security/SignatureSpi
-java/io/ObjectOutputStream$BlockDataOutputStream
-sun/security/provider/DSAPublicKey
-java/security/interfaces/DSAPublicKey
-java/security/interfaces/DSAKey
-java/security/PublicKey
-java/security/Key
-sun/security/x509/X509Key
-java/io/ObjectOutputStream$HandleTable
-java/io/ObjectOutputStream$ReplaceTable
-sun/security/x509/AlgorithmId
-sun/security/util/DerEncoder
-sun/security/util/BitArray
-sun/security/util/DerOutputStream
-sun/security/util/DerValue
-java/math/BigInteger
-java/security/interfaces/DSAParams
-sun/security/util/DerInputStream
-sun/security/util/DerInputBuffer
-sun/security/util/ObjectIdentifier
-java/security/AlgorithmParameters
-java/security/AlgorithmParametersSpi
-sun/security/provider/DSAParameters
-sun/security/util/ByteArrayLexOrder
-sun/security/util/ByteArrayTagOrder
-sun/security/util/DerIndefLenConverter
-java/io/InvalidClassException
-java/io/ObjectStreamException
-java/io/ObjectInputStream$GetFieldImpl
-java/io/ObjectInputStream$GetField
-sun/security/jca/ServiceId
-sun/security/jca/ProviderList$ServiceList
-sun/security/jca/ProviderList$ServiceList$1
-java/security/Signature$Delegate
-java/security/interfaces/DSAPrivateKey
-java/security/PrivateKey
-sun/security/provider/DSA$SHA1withDSA
-sun/security/provider/DSA
-java/security/spec/DSAParameterSpec
-java/security/spec/AlgorithmParameterSpec
-java/math/MutableBigInteger
-java/math/SignedMutableBigInteger
-java/awt/EventQueue$1AWTInvocationLock
-java/awt/Component$FlipBufferStrategy
-java/awt/SentEvent
-sun/awt/X11/XDestroyWindowEvent
-sun/awt/X11/XDropTargetRegistry
-sun/awt/X11/XEmbeddedFramePeer
-sun/awt/X11/XDragAndDropProtocols
-sun/awt/X11/XDropTargetContextPeer
-sun/awt/dnd/SunDropTargetContextPeer
-java/awt/dnd/peer/DropTargetContextPeer
-sun/awt/X11/XDropTargetContextPeer$XDropTargetProtocolListenerImpl
-sun/awt/X11/XDropTargetProtocolListener
-sun/awt/X11/XDnDDragSourceProtocol
-sun/awt/X11/XDragSourceProtocol
-sun/awt/X11/MotifDnDDragSourceProtocol
-sun/awt/X11/XDnDDropTargetProtocol
-sun/awt/X11/XDropTargetProtocol
-sun/awt/X11/MotifDnDDropTargetProtocol
-sun/awt/X11/XDnDConstants
-sun/awt/X11/MotifDnDConstants
-javax/swing/JTable$2
-javax/swing/JTable$Resizable3
-javax/swing/JTable$Resizable2
-javax/swing/JTable$5
-javax/swing/event/AncestorEvent
-sun/font/FontDesignMetrics$MetricsKey
-java/awt/geom/Line2D$Float
-java/awt/geom/Line2D
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel
-javax/swing/plaf/synth/SynthLookAndFeel
-javax/swing/plaf/synth/DefaultSynthStyleFactory
-javax/swing/plaf/synth/SynthStyleFactory
-sun/swing/BakedArrayList
-javax/swing/plaf/synth/SynthLookAndFeel$Handler
-javax/swing/plaf/synth/SynthDefaultLookup
-com/sun/java/swing/plaf/gtk/GTKEngine
-com/sun/java/swing/plaf/gtk/GTKEngine$Settings
-com/sun/java/swing/plaf/gtk/GTKStyleFactory
-com/sun/java/swing/plaf/gtk/PangoFonts
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel$WeakPCL
-javax/swing/plaf/synth/Region
-javax/swing/plaf/synth/SynthLookAndFeel$AATextListener
-com/sun/java/swing/plaf/gtk/GTKRegion
-com/sun/java/swing/plaf/gtk/GTKStyle
-com/sun/java/swing/plaf/gtk/GTKConstants
-javax/swing/plaf/synth/SynthStyle
-javax/swing/plaf/synth/SynthGraphicsUtils
-com/sun/java/swing/plaf/gtk/GTKGraphicsUtils
-com/sun/java/swing/plaf/gtk/GTKStyle$GTKStockIcon
-sun/swing/plaf/synth/SynthIcon
-com/sun/java/swing/plaf/gtk/GTKColorType
-javax/swing/plaf/synth/ColorType
-com/sun/java/swing/plaf/gtk/resources/gtk
-com/sun/swing/internal/plaf/synth/resources/synth
-com/sun/java/swing/plaf/gtk/GTKStyle$GTKLazyValue
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel$1FontLazyValue
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel$2
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel$3
-javax/swing/plaf/synth/SynthPanelUI
-javax/swing/plaf/synth/SynthConstants
-javax/swing/plaf/synth/SynthContext
-javax/swing/plaf/synth/SynthBorder
-javax/swing/plaf/synth/SynthRootPaneUI
-javax/swing/plaf/synth/SynthLabelUI
-javax/swing/plaf/synth/SynthButtonUI
-javax/swing/plaf/synth/SynthToggleButtonUI
-javax/swing/plaf/basic/BasicBorders$FieldBorder
-javax/swing/plaf/synth/SynthMenuBarUI
-javax/swing/plaf/synth/SynthMenuUI
-javax/swing/plaf/synth/SynthUI
-com/sun/java/swing/plaf/gtk/GTKIconFactory
-com/sun/java/swing/plaf/gtk/GTKIconFactory$MenuArrowIcon
-com/sun/java/swing/plaf/gtk/GTKIconFactory$DelegatingIcon
-com/sun/java/swing/plaf/gtk/GTKConstants$ArrowType
-javax/swing/plaf/basic/BasicIconFactory
-javax/swing/plaf/basic/BasicIconFactory$MenuItemCheckIcon
-javax/swing/plaf/synth/SynthMenuItemUI
-javax/swing/plaf/synth/SynthPopupMenuUI
-javax/swing/plaf/synth/SynthSeparatorUI
-javax/swing/plaf/synth/SynthScrollBarUI
-javax/swing/plaf/synth/SynthArrowButton
-javax/swing/plaf/synth/SynthArrowButton$SynthArrowButtonUI
-javax/swing/plaf/synth/SynthComboBoxUI
-javax/swing/plaf/synth/SynthComboPopup
-javax/swing/plaf/synth/SynthListUI
-javax/swing/plaf/synth/SynthListUI$SynthListCellRenderer
-javax/swing/plaf/synth/SynthViewportUI
-javax/swing/plaf/synth/SynthScrollPaneUI
-javax/swing/plaf/synth/SynthScrollPaneUI$ViewportBorder
-javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxRenderer
-javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxEditor
-javax/swing/plaf/synth/SynthTextFieldUI
-javax/swing/plaf/synth/SynthToolBarUI
-javax/swing/plaf/synth/SynthToolBarUI$SynthToolBarLayoutManager
-com/sun/java/swing/plaf/gtk/GTKIconFactory$ToolBarHandleIcon
-com/sun/java/swing/plaf/gtk/GTKConstants$Orientation
-sun/awt/X11/XTranslateCoordinates
-com/sun/java/swing/plaf/gtk/GTKPainter
-javax/swing/plaf/synth/SynthPainter
-javax/swing/plaf/synth/SynthPainter$1
-com/sun/java/swing/plaf/gtk/GTKConstants$PositionType
-com/sun/java/swing/plaf/gtk/GTKConstants$ShadowType
-java/io/ObjectInputStream$HandleTable$HandleList
-sun/java2d/pipe/ShapeSpanIterator
-sun/java2d/pipe/SpanIterator
-sun/dc/path/PathConsumer
-sun/dc/pr/PathStroker
-sun/dc/pr/PathDasher
-java/awt/geom/LineIterator
-java/awt/geom/PathIterator
-sun/applet/Main
-sun/applet/AppletMessageHandler
-sun/applet/resources/MsgAppletViewer
-sun/applet/AppletSecurity
-sun/awt/AWTSecurityManager
-java/lang/SecurityManager
-java/security/DomainCombiner
-sun/applet/AppletSecurity$1
-java/lang/SecurityManager$1
-java/security/SecurityPermission
-java/util/PropertyPermission
-sun/applet/AppletViewer
-java/applet/AppletContext
-java/awt/print/Printable
-sun/security/util/SecurityConstants
-java/awt/AWTPermission
-java/net/NetPermission
-java/net/SocketPermission
-javax/security/auth/AuthPermission
-java/lang/Thread$1
-java/util/logging/LogManager$5
-sun/applet/StdAppletViewerFactory
-sun/applet/AppletViewerFactory
-sun/applet/AppletViewer$UserActionListener
-sun/applet/AppletViewerPanel
-sun/applet/AppletPanel
-java/applet/AppletStub
-sun/misc/MessageUtils
-sun/applet/AppletPanel$10
-java/security/Policy$1
-sun/security/provider/PolicyFile$1
-sun/security/provider/PolicyFile$3
-sun/security/util/PropertyExpander
-sun/security/provider/PolicyParser
-sun/security/util/PolicyUtil
-sun/security/provider/PolicyParser$GrantEntry
-sun/security/provider/PolicyParser$PermissionEntry
-sun/security/provider/PolicyFile$PolicyEntry
-sun/security/provider/PolicyFile$6
-sun/security/provider/PolicyFile$7
-java/net/SocketPermissionCollection
-java/util/PropertyPermissionCollection
-sun/applet/AppletPanel$9
-sun/applet/AppletClassLoader
-sun/applet/AppletThreadGroup
-sun/applet/AppContextCreator
-sun/applet/AppletPanel$1
-sun/awt/X11/XMenuBarPeer
-java/awt/peer/MenuBarPeer
-java/awt/peer/MenuComponentPeer
-sun/awt/X11/XBaseMenuWindow
-sun/awt/X11/XMenuPeer
-java/awt/peer/MenuPeer
-java/awt/peer/MenuItemPeer
-sun/awt/X11/XMenuItemPeer
-java/awt/MenuShortcut
-sun/awt/X11/XMenuWindow
-sun/awt/X11/XMenuItemPeer$TextMetrics
-sun/awt/AppContext$3
-sun/awt/X11/XMenuBarPeer$MappingData
-sun/awt/X11/XBaseMenuWindow$MappingData
-sun/applet/AppletViewer$1
-sun/applet/AppletViewer$1AppletEventListener
-sun/applet/AppletListener
-sun/applet/AppletEventMulticaster
-sun/misc/Queue
-sun/misc/QueueElement
-sun/applet/AppletEvent
-sun/applet/AppletClassLoader$1
-sun/awt/X11/XBaseMenuWindow$3
-java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
-sun/awt/CausedFocusEvent
-sun/awt/X11/XWindow$1
-java/net/URLClassLoader$4
-sun/applet/AppletClassLoader$2
-javax/swing/JApplet
-java/lang/ClassLoader$1
-sun/security/provider/PolicyFile$5
-java/security/PermissionsEnumerator
-java/util/Collections$1
-sun/applet/AppletPanel$11
-sun/applet/AppletPanel$8
-sun/applet/AppletPanel$2
-sun/applet/AppletPanel$3
-sun/applet/AppletPanel$6
-javax/swing/BufferStrategyPaintManager$1
-# f3ac8b467e7f8c49
+sun/util/resources/en/CalendarData_en
+sun/util/resources/en/CurrencyNames_en_US
+sun/util/resources/en/TimeZoneNames_en
+sun/util/spi/CalendarProvider
+# e4fe875988768cf5
--- a/jdk/make/tools/sharing/classlist.macosx Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/make/tools/sharing/classlist.macosx Wed Jul 05 19:22:42 2017 +0200
@@ -1,2406 +1,2208 @@
-java/lang/Object
-java/lang/String
-java/io/Serializable
-java/lang/Comparable
-java/lang/CharSequence
-java/lang/Class
-java/lang/reflect/GenericDeclaration
-java/lang/reflect/Type
-java/lang/reflect/AnnotatedElement
-java/lang/Cloneable
-java/lang/ClassLoader
-java/lang/System
-java/lang/Throwable
-java/lang/Error
-java/lang/ThreadDeath
-java/lang/Exception
-java/lang/RuntimeException
-java/security/ProtectionDomain
-java/security/AccessControlContext
-java/lang/ClassNotFoundException
-java/lang/NoClassDefFoundError
-java/lang/LinkageError
-java/lang/ClassCastException
-java/lang/ArrayStoreException
-java/lang/VirtualMachineError
-java/lang/OutOfMemoryError
-java/lang/StackOverflowError
-java/lang/IllegalMonitorStateException
-java/lang/ref/Reference
-java/lang/ref/SoftReference
-java/lang/ref/WeakReference
-java/lang/ref/FinalReference
-java/lang/ref/PhantomReference
-java/lang/ref/Finalizer
-java/lang/Thread
-java/lang/Runnable
-java/lang/ThreadGroup
-java/lang/Thread$UncaughtExceptionHandler
-java/util/Properties
-java/util/Hashtable
-java/util/Map
-java/util/Dictionary
-java/lang/reflect/AccessibleObject
-java/lang/reflect/Field
-java/lang/reflect/Member
-java/lang/reflect/Method
-java/lang/reflect/Constructor
-sun/reflect/MagicAccessorImpl
-sun/reflect/MethodAccessorImpl
-sun/reflect/MethodAccessor
-sun/reflect/ConstructorAccessorImpl
-sun/reflect/ConstructorAccessor
-sun/reflect/DelegatingClassLoader
-sun/reflect/ConstantPool
-sun/reflect/UnsafeStaticFieldAccessorImpl
-sun/reflect/UnsafeFieldAccessorImpl
-sun/reflect/FieldAccessorImpl
-sun/reflect/FieldAccessor
-java/util/Vector
-java/util/List
-java/util/Collection
-java/lang/Iterable
-java/util/RandomAccess
-java/util/AbstractList
-java/util/AbstractCollection
-java/lang/StringBuffer
-java/lang/AbstractStringBuilder
-java/lang/Appendable
-java/lang/StackTraceElement
-java/nio/Buffer
-java/lang/Boolean
-java/lang/Character
-java/lang/Float
-java/lang/Number
-java/lang/Double
-java/lang/Byte
-java/lang/Short
-java/lang/Integer
-java/lang/Long
-java/lang/NullPointerException
-java/lang/ArithmeticException
-java/io/ObjectStreamField
-java/lang/String$CaseInsensitiveComparator
-java/util/Comparator
-java/lang/RuntimePermission
-java/security/BasicPermission
-java/security/Permission
-java/security/Guard
-sun/misc/SoftCache
-java/util/AbstractMap
-java/lang/ref/ReferenceQueue
-java/lang/ref/ReferenceQueue$Null
-java/lang/ref/ReferenceQueue$Lock
-java/util/HashMap
-java/lang/annotation/Annotation
-java/util/HashMap$Entry
-java/util/Map$Entry
-java/security/AccessController
-java/lang/reflect/ReflectPermission
-sun/reflect/ReflectionFactory$GetReflectionFactoryAction
-java/security/PrivilegedAction
-java/util/Stack
-sun/reflect/ReflectionFactory
-java/lang/ref/Reference$Lock
-java/lang/ref/Reference$ReferenceHandler
-java/lang/ref/Finalizer$FinalizerThread
-java/util/Hashtable$EmptyEnumerator
-java/util/Enumeration
-java/util/Hashtable$EmptyIterator
-java/util/Iterator
-java/util/Hashtable$Entry
-java/nio/charset/Charset
-sun/nio/cs/StandardCharsets
-sun/nio/cs/FastCharsetProvider
-java/nio/charset/spi/CharsetProvider
-sun/nio/cs/StandardCharsets$Aliases
-sun/util/PreHashedMap
-sun/nio/cs/StandardCharsets$Classes
-sun/nio/cs/StandardCharsets$Cache
-java/lang/ThreadLocal
-java/util/concurrent/atomic/AtomicInteger
-sun/misc/Unsafe
-java/lang/NoSuchMethodError
-java/lang/IncompatibleClassChangeError
-sun/reflect/Reflection
-java/util/Collections
-java/util/Collections$EmptySet
-java/util/AbstractSet
-java/util/Set
-java/util/Collections$EmptyList
-java/util/Collections$EmptyMap
-java/util/Collections$ReverseComparator
-java/util/Collections$SynchronizedMap
-java/lang/Class$3
-java/lang/reflect/Modifier
-java/lang/reflect/ReflectAccess
-sun/reflect/LangReflectAccess
-java/util/Arrays
-java/lang/Math
-sun/nio/cs/US_ASCII
-sun/nio/cs/HistoricallyNamedCharset
-sun/misc/VM
-java/lang/StringCoding
-java/lang/ThreadLocal$ThreadLocalMap
-java/lang/ThreadLocal$ThreadLocalMap$Entry
-java/lang/StringCoding$StringDecoder
-sun/nio/cs/US_ASCII$Decoder
-java/nio/charset/CharsetDecoder
-java/nio/charset/CodingErrorAction
-java/nio/ByteBuffer
-java/nio/HeapByteBuffer
-java/nio/Bits
-java/nio/ByteOrder
-java/nio/CharBuffer
-java/lang/Readable
-java/nio/HeapCharBuffer
-java/nio/charset/CoderResult
-java/nio/charset/CoderResult$1
-java/nio/charset/CoderResult$Cache
-java/nio/charset/CoderResult$2
-sun/misc/Version
-java/io/FileInputStream
-java/io/InputStream
+apple/laf/JRSUIConstants
+apple/laf/JRSUIConstants$AlignmentHorizontal
+apple/laf/JRSUIConstants$AlignmentVertical
+apple/laf/JRSUIConstants$Animating
+apple/laf/JRSUIConstants$DoubleValue
+apple/laf/JRSUIConstants$Focused
+apple/laf/JRSUIConstants$FrameOnly
+apple/laf/JRSUIConstants$Hit
+apple/laf/JRSUIConstants$IndicatorOnly
+apple/laf/JRSUIConstants$Key
+apple/laf/JRSUIConstants$NothingToScroll
+apple/laf/JRSUIConstants$Orientation
+apple/laf/JRSUIConstants$Property
+apple/laf/JRSUIConstants$PropertyEncoding
+apple/laf/JRSUIConstants$ScrollBarPart
+apple/laf/JRSUIConstants$SegmentPosition
+apple/laf/JRSUIConstants$SegmentTrailingSeparator
+apple/laf/JRSUIConstants$ShowArrows
+apple/laf/JRSUIConstants$Size
+apple/laf/JRSUIConstants$State
+apple/laf/JRSUIConstants$Widget
+apple/laf/JRSUIControl
+apple/laf/JRSUIControl$BufferState
+apple/laf/JRSUIControl$ThreadLocalByteBuffer
+apple/laf/JRSUIState
+apple/laf/JRSUIState$ScrollBarState
+apple/laf/JRSUIState$ValueState
+apple/laf/JRSUIStateFactory
+apple/laf/JRSUIUtils
+apple/laf/JRSUIUtils$NineSliceMetricsProvider
+apple/laf/JRSUIUtils$TabbedPane
+com/apple/eawt/AboutHandler
+com/apple/eawt/AppEventListener
+com/apple/eawt/AppReOpenedListener
+com/apple/eawt/OpenFilesHandler
+com/apple/eawt/PreferencesHandler
+com/apple/eawt/PrintFilesHandler
+com/apple/eawt/QuitHandler
+com/apple/eawt/QuitStrategy
+com/apple/eawt/_AppEventHandler
+com/apple/eawt/_AppEventHandler$_AboutDispatcher
+com/apple/eawt/_AppEventHandler$_AppEventDispatcher
+com/apple/eawt/_AppEventHandler$_AppEventMultiplexor
+com/apple/eawt/_AppEventHandler$_AppForegroundDispatcher
+com/apple/eawt/_AppEventHandler$_AppReOpenedDispatcher
+com/apple/eawt/_AppEventHandler$_BooleanAppEventMultiplexor
+com/apple/eawt/_AppEventHandler$_HiddenAppDispatcher
+com/apple/eawt/_AppEventHandler$_NativeEvent
+com/apple/eawt/_AppEventHandler$_OpenAppDispatcher
+com/apple/eawt/_AppEventHandler$_OpenFileDispatcher
+com/apple/eawt/_AppEventHandler$_OpenURIDispatcher
+com/apple/eawt/_AppEventHandler$_PreferencesDispatcher
+com/apple/eawt/_AppEventHandler$_PrintFileDispatcher
+com/apple/eawt/_AppEventHandler$_QueuingAppEventDispatcher
+com/apple/eawt/_AppEventHandler$_QuitDispatcher
+com/apple/eawt/_AppEventHandler$_ScreenSleepDispatcher
+com/apple/eawt/_AppEventHandler$_SystemSleepDispatcher
+com/apple/eawt/_AppEventHandler$_UserSessionDispatcher
+com/apple/eawt/_AppEventLegacyHandler
+com/apple/eawt/_AppMenuBarHandler
+com/apple/eawt/_OpenAppHandler
+com/apple/laf/AquaBorder
+com/apple/laf/AquaButtonBorder
+com/apple/laf/AquaButtonBorder$1
+com/apple/laf/AquaButtonBorder$Dynamic
+com/apple/laf/AquaButtonBorder$Dynamic$1
+com/apple/laf/AquaButtonBorder$Named
+com/apple/laf/AquaButtonBorder$Toggle
+com/apple/laf/AquaButtonBorder$Toolbar
+com/apple/laf/AquaButtonExtendedTypes
+com/apple/laf/AquaButtonExtendedTypes$1
+com/apple/laf/AquaButtonExtendedTypes$2
+com/apple/laf/AquaButtonExtendedTypes$3
+com/apple/laf/AquaButtonExtendedTypes$4
+com/apple/laf/AquaButtonExtendedTypes$5
+com/apple/laf/AquaButtonExtendedTypes$6
+com/apple/laf/AquaButtonExtendedTypes$7
+com/apple/laf/AquaButtonExtendedTypes$8
+com/apple/laf/AquaButtonExtendedTypes$BorderDefinedTypeSpecifier
+com/apple/laf/AquaButtonExtendedTypes$BorderDefinedTypeSpecifier$1
+com/apple/laf/AquaButtonExtendedTypes$SegmentedBorderDefinedTypeSpecifier
+com/apple/laf/AquaButtonExtendedTypes$SegmentedNamedBorder
+com/apple/laf/AquaButtonExtendedTypes$TypeSpecifier
+com/apple/laf/AquaButtonToggleUI
+com/apple/laf/AquaButtonUI
+com/apple/laf/AquaButtonUI$AquaButtonListener
+com/apple/laf/AquaButtonUI$AquaHierarchyButtonListener
+com/apple/laf/AquaCaret
+com/apple/laf/AquaComboBoxButton
+com/apple/laf/AquaComboBoxButton$1
+com/apple/laf/AquaComboBoxPopup
+com/apple/laf/AquaComboBoxPopup$1
+com/apple/laf/AquaComboBoxRenderer
+com/apple/laf/AquaComboBoxRendererInternal
+com/apple/laf/AquaComboBoxUI
+com/apple/laf/AquaComboBoxUI$1
+com/apple/laf/AquaComboBoxUI$10
+com/apple/laf/AquaComboBoxUI$11
+com/apple/laf/AquaComboBoxUI$12
+com/apple/laf/AquaComboBoxUI$12$1
+com/apple/laf/AquaComboBoxUI$12$2
+com/apple/laf/AquaComboBoxUI$12$3
+com/apple/laf/AquaComboBoxUI$12$4
+com/apple/laf/AquaComboBoxUI$12$5
+com/apple/laf/AquaComboBoxUI$12$6
+com/apple/laf/AquaComboBoxUI$12$7
+com/apple/laf/AquaComboBoxUI$2
+com/apple/laf/AquaComboBoxUI$3
+com/apple/laf/AquaComboBoxUI$4
+com/apple/laf/AquaComboBoxUI$5
+com/apple/laf/AquaComboBoxUI$6
+com/apple/laf/AquaComboBoxUI$7
+com/apple/laf/AquaComboBoxUI$8
+com/apple/laf/AquaComboBoxUI$9
+com/apple/laf/AquaComboBoxUI$AquaComboBoxEditor
+com/apple/laf/AquaComboBoxUI$AquaComboBoxLayoutManager
+com/apple/laf/AquaComboBoxUI$AquaCustomComboTextField
+com/apple/laf/AquaComboBoxUI$AquaCustomComboTextField$1
+com/apple/laf/AquaComboBoxUI$ComboBoxAction
+com/apple/laf/AquaFocusHandler
+com/apple/laf/AquaFocusHandler$1
+com/apple/laf/AquaFonts
+com/apple/laf/AquaFonts$1
+com/apple/laf/AquaFonts$2
+com/apple/laf/AquaFonts$3
+com/apple/laf/AquaFonts$4
+com/apple/laf/AquaFonts$5
+com/apple/laf/AquaFonts$6
+com/apple/laf/AquaFonts$7
+com/apple/laf/AquaFonts$DerivedUIResourceFont
+com/apple/laf/AquaHighlighter
+com/apple/laf/AquaHighlighter$1
+com/apple/laf/AquaHighlighter$AquaHighlightPainter
+com/apple/laf/AquaIcon$CachingScalingIcon
+com/apple/laf/AquaIcon$InvertableIcon
+com/apple/laf/AquaIcon$SystemIcon
+com/apple/laf/AquaIcon$SystemIconSingleton
+com/apple/laf/AquaIcon$SystemIconUIResourceSingleton
+com/apple/laf/AquaImageFactory
+com/apple/laf/AquaImageFactory$IconUIResourceSingleton
+com/apple/laf/AquaImageFactory$InvertableImageIcon
+com/apple/laf/AquaImageFactory$NamedImageSingleton
+com/apple/laf/AquaImageFactory$SystemColorProxy
+com/apple/laf/AquaKeyBindings
+com/apple/laf/AquaKeyBindings$AquaMultilineAction
+com/apple/laf/AquaKeyBindings$BindingsProvider
+com/apple/laf/AquaKeyBindings$LateBoundInputMap
+com/apple/laf/AquaKeyBindings$SimpleBinding
+com/apple/laf/AquaLabelUI
+com/apple/laf/AquaListUI
+com/apple/laf/AquaListUI$AquaHomeEndAction
+com/apple/laf/AquaListUI$AquaPropertyChangeHandler
+com/apple/laf/AquaListUI$FocusHandler
+com/apple/laf/AquaListUI$MouseInputHandler
+com/apple/laf/AquaLookAndFeel
+com/apple/laf/AquaLookAndFeel$1
+com/apple/laf/AquaLookAndFeel$2
+com/apple/laf/AquaLookAndFeel$3
+com/apple/laf/AquaMenuBarBorder
+com/apple/laf/AquaMenuBarUI
+com/apple/laf/AquaMenuBorder
+com/apple/laf/AquaMenuItemUI
+com/apple/laf/AquaMenuItemUI$IndeterminateListener
+com/apple/laf/AquaMenuPainter
+com/apple/laf/AquaMenuPainter$Client
+com/apple/laf/AquaMenuPainter$RecyclableBorder
+com/apple/laf/AquaMenuUI
+com/apple/laf/AquaMenuUI$AquaMouseInputHandler
+com/apple/laf/AquaMenuUI$MenuDragMouseHandler
+com/apple/laf/AquaMnemonicHandler
+com/apple/laf/AquaMnemonicHandler$AltProcessor
+com/apple/laf/AquaPainter
+com/apple/laf/AquaPainter$1
+com/apple/laf/AquaPainter$AquaNineSlicingImagePainter
+com/apple/laf/AquaPainter$AquaSingleImagePainter
+com/apple/laf/AquaPanelUI
+com/apple/laf/AquaPopupMenuSeparatorUI
+com/apple/laf/AquaPopupMenuUI
+com/apple/laf/AquaRootPaneUI
+com/apple/laf/AquaScrollBarUI
+com/apple/laf/AquaScrollBarUI$1
+com/apple/laf/AquaScrollBarUI$ModelListener
+com/apple/laf/AquaScrollBarUI$PropertyChangeHandler
+com/apple/laf/AquaScrollBarUI$ScrollListener
+com/apple/laf/AquaScrollBarUI$TrackListener
+com/apple/laf/AquaScrollPaneUI
+com/apple/laf/AquaScrollPaneUI$XYMouseWheelHandler
+com/apple/laf/AquaScrollRegionBorder
+com/apple/laf/AquaTableHeaderBorder
+com/apple/laf/AquaTableHeaderBorder$1
+com/apple/laf/AquaTextAreaUI
+com/apple/laf/AquaTextFieldBorder
+com/apple/laf/AquaTextFieldSearch
+com/apple/laf/AquaTextFieldSearch$SearchFieldBorder
+com/apple/laf/AquaTextFieldSearch$SearchFieldPropertyListener
+com/apple/laf/AquaTextFieldUI
+com/apple/laf/AquaToolBarSeparatorUI
+com/apple/laf/AquaToolBarUI
+com/apple/laf/AquaToolBarUI$ToolBarBorder
+com/apple/laf/AquaUtilControlSize
+com/apple/laf/AquaUtilControlSize$PropertySizeListener
+com/apple/laf/AquaUtilControlSize$SizeDescriptor
+com/apple/laf/AquaUtilControlSize$SizeVariant
+com/apple/laf/AquaUtilControlSize$Sizeable
+com/apple/laf/AquaUtils
+com/apple/laf/AquaUtils$2
+com/apple/laf/AquaUtils$5
+com/apple/laf/AquaUtils$6
+com/apple/laf/AquaUtils$JComponentPainter
+com/apple/laf/AquaUtils$RecyclableSingleton
+com/apple/laf/AquaUtils$RecyclableSingletonFromDefaultConstructor
+com/apple/laf/ClientPropertyApplicator
+com/apple/laf/ClientPropertyApplicator$Property
+com/apple/laf/ImageCache
+com/apple/laf/ImageCache$1
+com/apple/laf/ImageCache$PixelCountSoftReference
+com/apple/laf/ScreenMenuBar
+com/apple/laf/ScreenMenuBarProvider
+com/apple/laf/ScreenMenuPropertyHandler
+com/apple/laf/ScreenPopupFactory
+com/apple/laf/ScreenPopupFactory$1
+com/apple/laf/resources/aqua
+com/sun/java/swing/SwingUtilities3
+com/sun/swing/internal/plaf/basic/resources/basic
+java/applet/Applet
+java/awt/AWTEvent
+java/awt/AWTEvent$1
+java/awt/AWTEvent$2
+java/awt/AWTEventMulticaster
+java/awt/AWTKeyStroke
+java/awt/AWTKeyStroke$1
+java/awt/ActiveEvent
+java/awt/Adjustable
+java/awt/AlphaComposite
+java/awt/BasicStroke
+java/awt/BorderLayout
+java/awt/Canvas
+java/awt/CardLayout
+java/awt/Color
+java/awt/Component
+java/awt/Component$1
+java/awt/Component$3
+java/awt/Component$AWTTreeLock
+java/awt/Component$DummyRequestFocusController
+java/awt/ComponentOrientation
+java/awt/Composite
+java/awt/Conditional
+java/awt/Container
+java/awt/Container$1
+java/awt/Container$EventTargetFilter
+java/awt/Container$MouseEventTargetFilter
+java/awt/ContainerOrderFocusTraversalPolicy
+java/awt/Cursor
+java/awt/Cursor$1
+java/awt/DefaultFocusTraversalPolicy
+java/awt/DefaultKeyboardFocusManager
+java/awt/DefaultKeyboardFocusManager$1
+java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
+java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
+java/awt/Dialog
+java/awt/Dialog$1
+java/awt/Dialog$3
+java/awt/Dialog$ModalExclusionType
+java/awt/Dialog$ModalityType
+java/awt/Dimension
+java/awt/Event
+java/awt/EventDispatchThread
+java/awt/EventDispatchThread$1
+java/awt/EventDispatchThread$HierarchyEventFilter
+java/awt/EventFilter
+java/awt/EventFilter$FilterAction
+java/awt/EventQueue
+java/awt/EventQueue$1
+java/awt/EventQueue$2
+java/awt/EventQueue$3
+java/awt/EventQueue$4
+java/awt/EventQueue$5
+java/awt/FlowLayout
+java/awt/FocusTraversalPolicy
+java/awt/Font
+java/awt/Font$FontAccessImpl
+java/awt/FontMetrics
+java/awt/Frame
+java/awt/Frame$1
+java/awt/Graphics
+java/awt/Graphics2D
+java/awt/GraphicsCallback
+java/awt/GraphicsCallback$PaintCallback
+java/awt/GraphicsConfiguration
+java/awt/GraphicsDevice
+java/awt/GraphicsEnvironment
+java/awt/GraphicsEnvironment$1
+java/awt/Image
+java/awt/Image$1
+java/awt/ImageCapabilities
+java/awt/ImageMediaEntry
+java/awt/Insets
+java/awt/ItemSelectable
+java/awt/KeyEventDispatcher
+java/awt/KeyEventPostProcessor
+java/awt/KeyboardFocusManager
+java/awt/KeyboardFocusManager$1
+java/awt/KeyboardFocusManager$2
+java/awt/KeyboardFocusManager$3
+java/awt/KeyboardFocusManager$HeavyweightFocusRequest
+java/awt/KeyboardFocusManager$LightweightFocusRequest
+java/awt/Label
+java/awt/LayoutManager
+java/awt/LayoutManager2
+java/awt/LightweightDispatcher
+java/awt/LightweightDispatcher$1
+java/awt/LightweightDispatcher$2
+java/awt/MediaEntry
+java/awt/MediaTracker
+java/awt/MenuBar
+java/awt/MenuComponent
+java/awt/MenuContainer
+java/awt/ModalEventFilter
+java/awt/ModalEventFilter$1
+java/awt/ModalEventFilter$ApplicationModalEventFilter
+java/awt/Paint
+java/awt/Panel
+java/awt/Point
+java/awt/PrintGraphics
+java/awt/Queue
+java/awt/Rectangle
+java/awt/RenderingHints
+java/awt/RenderingHints$Key
+java/awt/SecondaryLoop
+java/awt/SentEvent
+java/awt/SequencedEvent
+java/awt/Shape
+java/awt/SplashScreen
+java/awt/Stroke
+java/awt/SystemColor
+java/awt/Toolkit
+java/awt/Toolkit$1
+java/awt/Toolkit$2
+java/awt/Toolkit$3
+java/awt/Toolkit$4
+java/awt/Toolkit$5
+java/awt/Toolkit$DesktopPropertyChangeSupport
+java/awt/Toolkit$SelectiveAWTEventListener
+java/awt/Toolkit$ToolkitEventMulticaster
+java/awt/Transparency
+java/awt/TrayIcon
+java/awt/VKCollection
+java/awt/WaitDispatchSupport
+java/awt/WaitDispatchSupport$1
+java/awt/WaitDispatchSupport$2
+java/awt/WaitDispatchSupport$5
+java/awt/Window
+java/awt/Window$1
+java/awt/Window$1DisposeAction
+java/awt/Window$Type
+java/awt/Window$WindowDisposerRecord
+java/awt/color/ColorSpace
+java/awt/color/ICC_ColorSpace
+java/awt/color/ICC_Profile
+java/awt/color/ICC_Profile$1
+java/awt/color/ICC_ProfileRGB
+java/awt/datatransfer/Clipboard
+java/awt/datatransfer/ClipboardOwner
+java/awt/datatransfer/DataFlavor
+java/awt/datatransfer/FlavorMap
+java/awt/datatransfer/FlavorTable
+java/awt/datatransfer/MimeType
+java/awt/datatransfer/MimeTypeParameterList
+java/awt/datatransfer/MimeTypeParseException
+java/awt/datatransfer/SystemFlavorMap
+java/awt/datatransfer/SystemFlavorMap$1
+java/awt/datatransfer/SystemFlavorMap$2
+java/awt/datatransfer/Transferable
+java/awt/dnd/DropTarget
+java/awt/dnd/DropTargetContext
+java/awt/dnd/DropTargetListener
+java/awt/dnd/peer/DragSourceContextPeer
+java/awt/dnd/peer/DropTargetPeer
+java/awt/event/AWTEventListener
+java/awt/event/AWTEventListenerProxy
+java/awt/event/ActionEvent
+java/awt/event/ActionListener
+java/awt/event/AdjustmentEvent
+java/awt/event/AdjustmentListener
+java/awt/event/ComponentAdapter
+java/awt/event/ComponentEvent
+java/awt/event/ComponentListener
+java/awt/event/ContainerEvent
+java/awt/event/ContainerListener
+java/awt/event/FocusAdapter
+java/awt/event/FocusEvent
+java/awt/event/FocusListener
+java/awt/event/HierarchyBoundsListener
+java/awt/event/HierarchyEvent
+java/awt/event/HierarchyListener
+java/awt/event/InputEvent
+java/awt/event/InputEvent$1
+java/awt/event/InputMethodEvent
+java/awt/event/InputMethodListener
+java/awt/event/InvocationEvent
+java/awt/event/ItemListener
+java/awt/event/KeyAdapter
+java/awt/event/KeyEvent
+java/awt/event/KeyEvent$1
+java/awt/event/KeyListener
+java/awt/event/MouseAdapter
+java/awt/event/MouseEvent
+java/awt/event/MouseListener
+java/awt/event/MouseMotionAdapter
+java/awt/event/MouseMotionListener
+java/awt/event/MouseWheelEvent
+java/awt/event/MouseWheelListener
+java/awt/event/NativeLibLoader
+java/awt/event/NativeLibLoader$1
+java/awt/event/PaintEvent
+java/awt/event/TextListener
+java/awt/event/WindowAdapter
+java/awt/event/WindowEvent
+java/awt/event/WindowFocusListener
+java/awt/event/WindowListener
+java/awt/event/WindowStateListener
+java/awt/font/FontRenderContext
+java/awt/font/GlyphVector
+java/awt/font/LineMetrics
+java/awt/font/TextAttribute
+java/awt/geom/AffineTransform
+java/awt/geom/Dimension2D
+java/awt/geom/GeneralPath
+java/awt/geom/Path2D
+java/awt/geom/Path2D$Float
+java/awt/geom/Point2D
+java/awt/geom/Point2D$Double
+java/awt/geom/Point2D$Float
+java/awt/geom/Rectangle2D
+java/awt/geom/Rectangle2D$Double
+java/awt/geom/Rectangle2D$Float
+java/awt/geom/RectangularShape
+java/awt/im/InputContext
+java/awt/im/InputMethodRequests
+java/awt/im/spi/InputMethod
+java/awt/im/spi/InputMethodContext
+java/awt/im/spi/InputMethodDescriptor
+java/awt/image/BufferStrategy
+java/awt/image/BufferedImage
+java/awt/image/BufferedImage$1
+java/awt/image/ColorModel
+java/awt/image/ColorModel$1
+java/awt/image/ComponentSampleModel
+java/awt/image/DataBuffer
+java/awt/image/DataBuffer$1
+java/awt/image/DataBufferByte
+java/awt/image/DataBufferInt
+java/awt/image/DirectColorModel
+java/awt/image/FilteredImageSource
+java/awt/image/ImageConsumer
+java/awt/image/ImageFilter
+java/awt/image/ImageObserver
+java/awt/image/ImageProducer
+java/awt/image/IndexColorModel
+java/awt/image/PackedColorModel
+java/awt/image/PixelInterleavedSampleModel
+java/awt/image/RGBImageFilter
+java/awt/image/Raster
+java/awt/image/RenderedImage
+java/awt/image/SampleModel
+java/awt/image/SinglePixelPackedSampleModel
+java/awt/image/VolatileImage
+java/awt/image/WritableRaster
+java/awt/image/WritableRenderedImage
+java/awt/peer/CanvasPeer
+java/awt/peer/ComponentPeer
+java/awt/peer/ContainerPeer
+java/awt/peer/DialogPeer
+java/awt/peer/FramePeer
+java/awt/peer/KeyboardFocusManagerPeer
+java/awt/peer/LabelPeer
+java/awt/peer/LightweightPeer
+java/awt/peer/PanelPeer
+java/awt/peer/WindowPeer
+java/awt/print/PrinterGraphics
+java/beans/ChangeListenerMap
+java/beans/PropertyChangeEvent
+java/beans/PropertyChangeListener
+java/beans/PropertyChangeListenerProxy
+java/beans/PropertyChangeSupport
+java/beans/PropertyChangeSupport$PropertyChangeListenerMap
+java/io/Bits
+java/io/BufferedInputStream
+java/io/BufferedOutputStream
+java/io/BufferedReader
+java/io/BufferedWriter
+java/io/ByteArrayInputStream
+java/io/ByteArrayOutputStream
java/io/Closeable
-java/io/FileDescriptor
-java/io/FileOutputStream
-java/io/OutputStream
-java/io/Flushable
-java/io/BufferedInputStream
-java/io/FilterInputStream
-java/util/concurrent/atomic/AtomicReferenceFieldUpdater
-java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
-sun/reflect/misc/ReflectUtil
-java/io/PrintStream
-java/io/FilterOutputStream
-java/io/BufferedOutputStream
-java/io/OutputStreamWriter
-java/io/Writer
-sun/nio/cs/StreamEncoder
-sun/security/action/GetPropertyAction
-sun/nio/cs/US_ASCII$Encoder
-java/nio/charset/CharsetEncoder
-sun/nio/cs/Surrogate$Parser
-sun/nio/cs/Surrogate
-java/io/BufferedWriter
-java/lang/Runtime
-java/io/File
-java/io/FileSystem
-java/io/UnixFileSystem
+java/io/DataInput
+java/io/DataInputStream
+java/io/DataOutput
+java/io/DataOutputStream
+java/io/DefaultFileSystem
+java/io/EOFException
java/io/ExpiringCache
java/io/ExpiringCache$1
-java/util/LinkedHashMap
-java/util/LinkedHashMap$Entry
-java/lang/StringBuilder
-java/io/File$1
-sun/misc/JavaIODeleteOnExitAccess
-sun/misc/SharedSecrets
-java/lang/ClassLoader$3
-java/lang/StringCoding$StringEncoder
java/io/ExpiringCache$Entry
-java/lang/ClassLoader$NativeLibrary
-java/lang/Terminator
-java/lang/Terminator$1
-sun/misc/SignalHandler
-sun/misc/Signal
-sun/misc/NativeSignalHandler
-java/io/Console
-java/io/Console$1
-sun/misc/JavaIOAccess
-java/io/Console$1$1
-java/lang/Shutdown
-java/util/ArrayList
-java/lang/Shutdown$Lock
-java/lang/ApplicationShutdownHooks
-java/util/IdentityHashMap
-sun/misc/OSEnvironment
-java/lang/System$2
-sun/misc/JavaLangAccess
-java/lang/Compiler
-java/lang/Compiler$1
-sun/misc/Launcher
-sun/misc/Launcher$Factory
-java/net/URLStreamHandlerFactory
-sun/misc/Launcher$ExtClassLoader
-java/net/URLClassLoader
-java/security/SecureClassLoader
-sun/security/util/Debug
-java/net/URLClassLoader$7
-sun/misc/JavaNetAccess
-java/util/StringTokenizer
-sun/misc/Launcher$ExtClassLoader$1
-java/security/PrivilegedExceptionAction
-sun/misc/MetaIndex
-java/io/BufferedReader
-java/io/Reader
-java/io/FileReader
-java/io/InputStreamReader
-sun/nio/cs/StreamDecoder
-java/lang/reflect/Array
-sun/net/www/ParseUtil
-java/util/BitSet
-java/io/ObjectStreamClass
-java/net/URL
-java/util/Locale
-java/util/concurrent/ConcurrentHashMap
-java/util/concurrent/ConcurrentMap
-java/util/concurrent/ConcurrentHashMap$Segment
-java/util/concurrent/locks/ReentrantLock
-java/util/concurrent/locks/Lock
-java/util/concurrent/locks/ReentrantLock$NonfairSync
-java/util/concurrent/locks/ReentrantLock$Sync
-java/util/concurrent/locks/AbstractQueuedSynchronizer
-java/util/concurrent/locks/AbstractOwnableSynchronizer
-java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
-java/util/concurrent/ConcurrentHashMap$HashEntry
-java/lang/CharacterDataLatin1
-java/net/Parts
-sun/net/www/protocol/file/Handler
-java/net/URLStreamHandler
-java/lang/Class$1
-sun/reflect/ReflectionFactory$1
-sun/reflect/NativeConstructorAccessorImpl
-sun/reflect/DelegatingConstructorAccessorImpl
-java/util/HashSet
-sun/misc/URLClassPath
-sun/net/www/protocol/jar/Handler
-sun/misc/Launcher$AppClassLoader
-sun/misc/Launcher$AppClassLoader$1
-java/lang/SystemClassLoaderAction
-java/net/URLClassLoader$1
-sun/misc/URLClassPath$3
-sun/misc/URLClassPath$JarLoader
-sun/misc/URLClassPath$Loader
-java/security/PrivilegedActionException
-sun/misc/URLClassPath$FileLoader
-sun/misc/URLClassPath$FileLoader$1
-sun/misc/Resource
-sun/nio/ByteBuffered
-java/security/CodeSource
-java/security/Permissions
-java/security/PermissionCollection
-sun/net/www/protocol/file/FileURLConnection
-sun/net/www/URLConnection
-java/net/URLConnection
-java/net/UnknownContentHandler
-java/net/ContentHandler
-sun/net/www/MessageHeader
+java/io/Externalizable
+java/io/File
+java/io/File$PathStatus
+java/io/FileDescriptor
+java/io/FileDescriptor$1
+java/io/FileInputStream
+java/io/FileInputStream$1
+java/io/FileNotFoundException
+java/io/FileOutputStream
+java/io/FileOutputStream$1
java/io/FilePermission
java/io/FilePermission$1
-sun/security/provider/PolicyFile
-java/security/Policy
-java/security/Policy$UnsupportedEmptyCollection
java/io/FilePermissionCollection
-java/security/AllPermission
-java/security/UnresolvedPermission
-java/security/BasicPermissionCollection
-java/security/Principal
-java/security/cert/Certificate
-java/util/AbstractList$Itr
-java/util/IdentityHashMap$KeySet
-java/util/IdentityHashMap$KeyIterator
-java/util/IdentityHashMap$IdentityHashMapIterator
-java/io/DeleteOnExitHook
-java/util/LinkedHashSet
-java/util/HashMap$KeySet
-java/util/LinkedHashMap$KeyIterator
-java/util/LinkedHashMap$LinkedHashIterator
-java/awt/Frame
-java/awt/MenuContainer
-java/awt/Window
-javax/accessibility/Accessible
-java/awt/Container
-java/awt/Component
-java/awt/image/ImageObserver
-java/lang/InterruptedException
-java/awt/Label
-java/util/logging/Logger
-java/util/logging/Handler
-java/util/logging/Level
-java/util/logging/LogManager
-java/util/logging/LogManager$1
-java/beans/PropertyChangeSupport
-java/util/logging/LogManager$LogNode
-java/util/logging/LoggingPermission
-java/util/logging/LogManager$Cleaner
-java/util/logging/LogManager$RootLogger
-java/util/logging/LogManager$2
-java/util/Properties$LineReader
-java/util/Hashtable$Enumerator
-java/beans/PropertyChangeEvent
-java/util/EventObject
-java/awt/Component$AWTTreeLock
-sun/awt/DebugHelper
-sun/awt/NativeLibLoader
-sun/security/action/LoadLibraryAction
-java/awt/GraphicsEnvironment
-java/awt/GraphicsEnvironment$1
-java/lang/ProcessEnvironment
-java/lang/ProcessEnvironment$Variable
-java/lang/ProcessEnvironment$ExternalData
-java/lang/ProcessEnvironment$Value
-java/lang/ProcessEnvironment$StringEnvironment
-java/util/Collections$UnmodifiableMap
-sun/awt/DebugHelperStub
-java/awt/Toolkit
-java/awt/Toolkit$3
-sun/util/CoreResourceBundleControl
-java/util/ResourceBundle$Control
-java/util/Arrays$ArrayList
-java/util/Collections$UnmodifiableRandomAccessList
-java/util/Collections$UnmodifiableList
-java/util/Collections$UnmodifiableCollection
-java/util/ResourceBundle
-java/util/ResourceBundle$1
-java/util/ResourceBundle$RBClassLoader
-java/util/ResourceBundle$RBClassLoader$1
-java/util/ResourceBundle$CacheKey
-java/util/ResourceBundle$LoaderReference
-java/util/ResourceBundle$CacheKeyReference
-java/util/ResourceBundle$SingleFormatControl
-sun/awt/resources/awt
-java/util/ListResourceBundle
-java/awt/Toolkit$1
-java/io/FileNotFoundException
+java/io/FileReader
+java/io/FileSystem
+java/io/FileWriter
+java/io/FilenameFilter
+java/io/FilterInputStream
+java/io/FilterOutputStream
+java/io/FilterReader
+java/io/Flushable
java/io/IOException
-java/awt/event/KeyEvent
-java/awt/event/InputEvent
-java/awt/event/ComponentEvent
-java/awt/AWTEvent
-java/awt/event/NativeLibLoader
-java/util/WeakHashMap
-java/util/WeakHashMap$Entry
-java/awt/Component$DummyRequestFocusController
-sun/awt/RequestFocusController
-java/awt/LayoutManager
-java/awt/LightweightDispatcher
-java/awt/event/AWTEventListener
-java/util/EventListener
-java/awt/Dimension
-java/awt/geom/Dimension2D
-java/util/concurrent/atomic/AtomicBoolean
-java/awt/ComponentOrientation
-java/awt/Component$2
-java/lang/NoSuchMethodException
-sun/awt/AppContext
-sun/awt/AppContext$1
-sun/awt/AppContext$2
-sun/awt/MostRecentKeyValue
-java/awt/Cursor
-sun/awt/X11GraphicsEnvironment
-sun/java2d/SunGraphicsEnvironment
-sun/java2d/FontSupport
-sun/awt/DisplayChangedListener
-sun/java2d/SunGraphicsEnvironment$TTFilter
-java/io/FilenameFilter
-sun/java2d/SunGraphicsEnvironment$T1Filter
-sun/awt/X11GraphicsEnvironment$1
-sun/awt/SunToolkit
-sun/awt/WindowClosingSupport
-sun/awt/WindowClosingListener
-sun/awt/ComponentFactory
-sun/awt/InputMethodSupport
-java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
-java/util/concurrent/locks/Condition
-sun/awt/AWTAutoShutdown
-sun/awt/AWTAutoShutdown$PeerMap
-sun/awt/SunToolkit$6
-java/awt/Dialog$ModalExclusionType
+java/io/InputStream
+java/io/InputStreamReader
+java/io/ObjectInput
+java/io/ObjectInputStream
+java/io/ObjectOutput
+java/io/ObjectOutputStream
+java/io/ObjectOutputStream$BlockDataOutputStream
+java/io/ObjectOutputStream$HandleTable
+java/io/ObjectOutputStream$ReplaceTable
+java/io/ObjectStreamClass
+java/io/ObjectStreamClass$2
+java/io/ObjectStreamClass$Caches
+java/io/ObjectStreamClass$EntryFuture
+java/io/ObjectStreamClass$FieldReflector
+java/io/ObjectStreamClass$FieldReflectorKey
+java/io/ObjectStreamClass$WeakClassKey
+java/io/ObjectStreamConstants
+java/io/ObjectStreamField
+java/io/OutputStream
+java/io/OutputStreamWriter
+java/io/PrintStream
+java/io/PrintWriter
+java/io/RandomAccessFile
+java/io/Reader
+java/io/Serializable
+java/io/StringReader
+java/io/StringWriter
+java/io/UnixFileSystem
+java/io/UnsupportedEncodingException
+java/io/Writer
+java/lang/AbstractStringBuilder
+java/lang/Appendable
+java/lang/ApplicationShutdownHooks
+java/lang/ApplicationShutdownHooks$1
+java/lang/ArithmeticException
+java/lang/ArrayIndexOutOfBoundsException
+java/lang/ArrayStoreException
+java/lang/AutoCloseable
+java/lang/Boolean
+java/lang/BootstrapMethodError
+java/lang/Byte
+java/lang/CharSequence
+java/lang/Character
+java/lang/Character$CharacterCache
+java/lang/CharacterData
+java/lang/CharacterDataLatin1
+java/lang/Class
+java/lang/Class$1
+java/lang/Class$3
+java/lang/Class$4
+java/lang/Class$AnnotationData
+java/lang/Class$Atomic
+java/lang/Class$ReflectionData
+java/lang/ClassCastException
+java/lang/ClassLoader
+java/lang/ClassLoader$2
+java/lang/ClassLoader$3
+java/lang/ClassLoader$NativeLibrary
+java/lang/ClassLoader$ParallelLoaders
+java/lang/ClassLoaderHelper
+java/lang/ClassNotFoundException
+java/lang/ClassValue$ClassValueMap
+java/lang/CloneNotSupportedException
+java/lang/Cloneable
+java/lang/Comparable
+java/lang/Compiler
+java/lang/Compiler$1
+java/lang/Double
java/lang/Enum
-java/awt/Dialog
-java/awt/Dialog$ModalityType
-java/awt/ModalEventFilter
-java/awt/EventFilter
-sun/reflect/UnsafeFieldAccessorFactory
-sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
-sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
-sun/awt/SunDisplayChanger
-sun/java2d/SunGraphicsEnvironment$1
-java/io/StreamTokenizer
-sun/font/FontManager
-sun/font/FileFont
-sun/font/PhysicalFont
-sun/font/Font2D
-sun/font/CompositeFont
-java/util/HashMap$Values
-java/util/HashMap$ValueIterator
-java/util/HashMap$HashIterator
-sun/font/FontManager$1
-java/awt/Font
-java/awt/geom/AffineTransform
-sun/font/AttributeValues
-sun/font/EAttribute
-java/text/AttributedCharacterIterator$Attribute
-java/lang/Class$4
-sun/reflect/NativeMethodAccessorImpl
-sun/reflect/DelegatingMethodAccessorImpl
-java/awt/font/TextAttribute
+java/lang/Error
+java/lang/Exception
+java/lang/ExceptionInInitializerError
+java/lang/Float
+java/lang/IllegalAccessError
+java/lang/IllegalAccessException
+java/lang/IllegalArgumentException
+java/lang/IllegalMonitorStateException
+java/lang/IllegalStateException
+java/lang/IncompatibleClassChangeError
+java/lang/IndexOutOfBoundsException
+java/lang/InstantiationException
+java/lang/Integer
java/lang/Integer$IntegerCache
-sun/font/TrueTypeFont
-java/awt/font/FontRenderContext
-java/awt/RenderingHints
-sun/awt/SunHints
-sun/awt/SunHints$Key
-java/awt/RenderingHints$Key
-sun/awt/SunHints$Value
-sun/awt/SunHints$LCDContrastKey
-sun/font/Type1Font
-java/awt/geom/Point2D$Float
-java/awt/geom/Point2D
-sun/font/StrikeMetrics
-java/awt/geom/Rectangle2D$Float
-java/awt/geom/Rectangle2D
-java/awt/geom/RectangularShape
-java/awt/Shape
-java/awt/geom/GeneralPath
-java/awt/geom/Path2D$Float
-java/awt/geom/Path2D
-sun/font/CharToGlyphMapper
-sun/font/PhysicalStrike
-sun/font/FontStrike
-sun/font/GlyphList
-sun/font/StrikeCache
-sun/java2d/Disposer
-sun/java2d/Disposer$1
-sun/font/StrikeCache$1
-sun/font/FontManager$FontRegistrationInfo
-sun/awt/motif/MFontConfiguration
-sun/awt/FontConfiguration
-sun/awt/FontDescriptor
-java/util/Scanner
-java/util/regex/Pattern
-java/util/regex/Pattern$8
-java/util/regex/Pattern$Node
-java/util/regex/Pattern$LastNode
-java/util/regex/Pattern$GroupHead
-java/util/regex/Pattern$CharPropertyNames
-java/util/regex/Pattern$CharPropertyNames$1
-java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory
-java/util/regex/Pattern$CharPropertyNames$2
-java/util/regex/Pattern$CharPropertyNames$5
-java/util/regex/Pattern$CharPropertyNames$3
-java/util/regex/Pattern$CharPropertyNames$6
-java/util/regex/Pattern$CharPropertyNames$CloneableProperty
-java/util/regex/Pattern$CharProperty
-java/util/regex/Pattern$CharPropertyNames$4
-java/util/regex/Pattern$CharPropertyNames$7
-java/util/regex/Pattern$CharPropertyNames$8
-java/util/regex/Pattern$CharPropertyNames$9
-java/util/regex/Pattern$CharPropertyNames$10
-java/util/regex/Pattern$CharPropertyNames$11
-java/util/regex/Pattern$CharPropertyNames$12
-java/util/regex/Pattern$CharPropertyNames$13
-java/util/regex/Pattern$CharPropertyNames$14
-java/util/regex/Pattern$CharPropertyNames$15
-java/util/regex/Pattern$CharPropertyNames$16
-java/util/regex/Pattern$CharPropertyNames$17
-java/util/regex/Pattern$CharPropertyNames$18
-java/util/regex/Pattern$CharPropertyNames$19
-java/util/regex/Pattern$CharPropertyNames$20
-java/util/regex/Pattern$CharPropertyNames$21
-java/util/regex/Pattern$Curly
-java/util/regex/Pattern$Slice
-java/util/regex/Pattern$Begin
-java/util/regex/Pattern$First
-java/util/regex/Pattern$Start
-java/util/regex/Pattern$TreeInfo
-java/util/regex/Pattern$All
-java/util/regex/Pattern$BitClass
-java/util/regex/Pattern$BmpCharProperty
-java/util/regex/Pattern$6
-java/util/regex/Pattern$CharProperty$1
-java/util/regex/Pattern$10
-sun/nio/ch/FileChannelImpl
-java/nio/channels/FileChannel
-java/nio/channels/ByteChannel
-java/nio/channels/ReadableByteChannel
-java/nio/channels/Channel
-java/nio/channels/WritableByteChannel
-java/nio/channels/GatheringByteChannel
-java/nio/channels/ScatteringByteChannel
-java/nio/channels/spi/AbstractInterruptibleChannel
-java/nio/channels/InterruptibleChannel
-sun/nio/ch/Util
-sun/nio/ch/IOUtil
-sun/nio/ch/FileDispatcher
-sun/nio/ch/NativeDispatcher
-sun/nio/ch/Reflect
-java/nio/MappedByteBuffer
-sun/nio/ch/Reflect$1
-sun/nio/ch/NativeThreadSet
-java/nio/channels/Channels
-java/util/Scanner$1
-sun/misc/LRUCache
-java/util/regex/Matcher
-java/util/regex/MatchResult
-java/text/NumberFormat
-java/text/Format
-java/text/spi/NumberFormatProvider
-java/util/spi/LocaleServiceProvider
-sun/util/LocaleServiceProviderPool
-sun/util/LocaleServiceProviderPool$1
-java/util/ServiceLoader
-java/util/ServiceLoader$LazyIterator
-java/util/ServiceLoader$1
-java/util/HashMap$EntrySet
-java/util/LinkedHashMap$EntryIterator
-sun/misc/Launcher$1
-sun/misc/URLClassPath$2
-java/lang/ClassLoader$2
-sun/misc/URLClassPath$1
+java/lang/InternalError
+java/lang/InterruptedException
+java/lang/Iterable
+java/lang/LinkageError
+java/lang/Long
+java/lang/Long$LongCache
+java/lang/Math
+java/lang/NoClassDefFoundError
+java/lang/NoSuchFieldException
+java/lang/NoSuchMethodError
+java/lang/NoSuchMethodException
+java/lang/NullPointerException
+java/lang/Number
+java/lang/NumberFormatException
+java/lang/Object
+java/lang/OutOfMemoryError
+java/lang/Package
+java/lang/Process
+java/lang/ProcessBuilder
+java/lang/ProcessBuilder$NullInputStream
+java/lang/ProcessBuilder$NullOutputStream
+java/lang/ProcessEnvironment
+java/lang/ProcessEnvironment$ExternalData
+java/lang/ProcessEnvironment$StringEnvironment
+java/lang/ProcessEnvironment$Value
+java/lang/ProcessEnvironment$Variable
+java/lang/ProcessImpl
+java/lang/Readable
+java/lang/ReflectiveOperationException
+java/lang/Runnable
+java/lang/Runtime
+java/lang/RuntimeException
+java/lang/RuntimePermission
+java/lang/SecurityException
+java/lang/SecurityManager
+java/lang/Short
+java/lang/Short$ShortCache
+java/lang/Shutdown
+java/lang/Shutdown$Lock
+java/lang/StackOverflowError
+java/lang/StackTraceElement
+java/lang/StrictMath
+java/lang/String
+java/lang/String$CaseInsensitiveComparator
+java/lang/StringBuffer
+java/lang/StringBuilder
+java/lang/StringCoding
+java/lang/StringCoding$StringDecoder
+java/lang/StringCoding$StringEncoder
+java/lang/StringIndexOutOfBoundsException
+java/lang/System
+java/lang/System$2
+java/lang/SystemClassLoaderAction
+java/lang/Terminator
+java/lang/Terminator$1
+java/lang/Thread
+java/lang/Thread$UncaughtExceptionHandler
+java/lang/ThreadDeath
+java/lang/ThreadGroup
+java/lang/ThreadLocal
+java/lang/ThreadLocal$ThreadLocalMap
+java/lang/ThreadLocal$ThreadLocalMap$Entry
+java/lang/Throwable
+java/lang/Throwable$PrintStreamOrWriter
+java/lang/Throwable$WrappedPrintStream
+java/lang/Throwable$WrappedPrintWriter
+java/lang/UNIXProcess
+java/lang/UNIXProcess$1
+java/lang/UNIXProcess$2
+java/lang/UNIXProcess$3
+java/lang/UNIXProcess$4
+java/lang/UNIXProcess$LaunchMechanism
+java/lang/UNIXProcess$ProcessPipeInputStream
+java/lang/UNIXProcess$ProcessPipeOutputStream
+java/lang/UNIXProcess$ProcessReaperThreadFactory
+java/lang/UNIXProcess$ProcessReaperThreadFactory$1
+java/lang/UnsatisfiedLinkError
+java/lang/UnsupportedOperationException
+java/lang/VirtualMachineError
+java/lang/Void
+java/lang/annotation/Annotation
+java/lang/invoke/CallSite
+java/lang/invoke/ConstantCallSite
+java/lang/invoke/DirectMethodHandle
+java/lang/invoke/Invokers
+java/lang/invoke/LambdaForm
+java/lang/invoke/LambdaForm$NamedFunction
+java/lang/invoke/MagicLambdaImpl
+java/lang/invoke/MemberName
+java/lang/invoke/MemberName$Factory
+java/lang/invoke/MethodHandle
+java/lang/invoke/MethodHandleImpl
+java/lang/invoke/MethodHandleNatives
+java/lang/invoke/MethodHandleStatics
+java/lang/invoke/MethodHandleStatics$1
+java/lang/invoke/MethodType
+java/lang/invoke/MethodType$ConcurrentWeakInternSet
+java/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry
+java/lang/invoke/MethodTypeForm
+java/lang/invoke/MutableCallSite
+java/lang/invoke/VolatileCallSite
+java/lang/ref/FinalReference
+java/lang/ref/Finalizer
+java/lang/ref/Finalizer$FinalizerThread
+java/lang/ref/PhantomReference
+java/lang/ref/Reference
+java/lang/ref/Reference$Lock
+java/lang/ref/Reference$ReferenceHandler
+java/lang/ref/ReferenceQueue
+java/lang/ref/ReferenceQueue$Lock
+java/lang/ref/ReferenceQueue$Null
+java/lang/ref/SoftReference
+java/lang/ref/WeakReference
+java/lang/reflect/AccessibleObject
+java/lang/reflect/AnnotatedElement
+java/lang/reflect/Array
+java/lang/reflect/Constructor
+java/lang/reflect/Executable
+java/lang/reflect/Field
+java/lang/reflect/GenericDeclaration
+java/lang/reflect/InvocationHandler
+java/lang/reflect/InvocationTargetException
+java/lang/reflect/Member
+java/lang/reflect/Method
+java/lang/reflect/Modifier
+java/lang/reflect/Parameter
+java/lang/reflect/Proxy
+java/lang/reflect/Proxy$KeyFactory
+java/lang/reflect/Proxy$ProxyClassFactory
+java/lang/reflect/ReflectAccess
+java/lang/reflect/ReflectPermission
+java/lang/reflect/Type
+java/lang/reflect/WeakCache
+java/net/AbstractPlainSocketImpl
+java/net/AbstractPlainSocketImpl$1
+java/net/Authenticator
+java/net/ConnectException
+java/net/DefaultInterface
+java/net/HttpURLConnection
+java/net/Inet4Address
+java/net/Inet6Address
+java/net/Inet6Address$Inet6AddressHolder
+java/net/Inet6AddressImpl
+java/net/InetAddress
+java/net/InetAddress$1
+java/net/InetAddress$2
+java/net/InetAddress$Cache
+java/net/InetAddress$Cache$Type
+java/net/InetAddress$InetAddressHolder
+java/net/InetAddressImpl
+java/net/InetAddressImplFactory
+java/net/InetSocketAddress
+java/net/InetSocketAddress$InetSocketAddressHolder
+java/net/InterfaceAddress
+java/net/JarURLConnection
+java/net/MalformedURLException
+java/net/NetworkInterface
+java/net/NetworkInterface$1
+java/net/NetworkInterface$2
+java/net/Parts
+java/net/PlainSocketImpl
+java/net/Proxy
+java/net/Proxy$Type
+java/net/ProxySelector
+java/net/ServerSocket
+java/net/Socket
+java/net/SocketAddress
+java/net/SocketException
+java/net/SocketImpl
+java/net/SocketOptions
+java/net/SocksConsts
+java/net/SocksSocketImpl
+java/net/SocksSocketImpl$3
+java/net/URI
+java/net/URI$Parser
+java/net/URL
+java/net/URLClassLoader
+java/net/URLClassLoader$1
+java/net/URLClassLoader$2
java/net/URLClassLoader$3
-sun/misc/CompoundEnumeration
-sun/misc/URLClassPath$JarLoader$1
-sun/misc/FileURLMapper
java/net/URLClassLoader$3$1
-sun/util/resources/LocaleData
-sun/util/resources/LocaleData$1
-sun/util/resources/LocaleData$LocaleDataResourceBundleControl
-sun/util/LocaleDataMetaInfo
-sun/text/resources/FormatData
-java/util/ResourceBundle$BundleReference
-sun/text/resources/FormatData_en
-sun/text/resources/FormatData_en_US
-java/text/DecimalFormatSymbols
-java/text/spi/DecimalFormatSymbolsProvider
-java/util/Currency
-java/util/Currency$1
-java/util/CurrencyData
-java/util/spi/CurrencyNameProvider
-sun/util/resources/CurrencyNames
-sun/util/resources/LocaleNamesBundle
-sun/util/resources/OpenListResourceBundle
-sun/util/resources/CurrencyNames_en_US
-java/text/DecimalFormat
-java/text/FieldPosition
-java/text/DigitList
-java/math/RoundingMode
-java/util/regex/Pattern$GroupTail
-java/util/regex/Pattern$Ctype
-java/util/regex/Pattern$Ques
-java/util/regex/Pattern$GroupCurly
-java/util/regex/Pattern$5
-java/util/regex/Pattern$Loop
-java/util/regex/Pattern$Prolog
-java/util/regex/Pattern$9
-java/util/regex/Pattern$BranchConn
-java/util/regex/Pattern$Branch
-java/nio/channels/spi/AbstractInterruptibleChannel$1
-sun/nio/ch/Interruptible
-sun/nio/ch/NativeThread
-sun/nio/ch/DirectBuffer
+java/net/URLClassLoader$7
+java/net/URLConnection
+java/net/URLStreamHandler
+java/net/URLStreamHandlerFactory
+java/nio/Bits
+java/nio/Bits$1
+java/nio/Buffer
+java/nio/ByteBuffer
+java/nio/ByteBufferAsIntBufferB
+java/nio/ByteBufferAsShortBufferB
+java/nio/ByteOrder
+java/nio/CharBuffer
java/nio/DirectByteBuffer
java/nio/DirectByteBuffer$Deallocator
-sun/misc/Cleaner
-sun/nio/ch/IOStatus
-java/util/regex/ASCII
-java/io/DataInputStream
-java/io/DataInput
-java/lang/Short$ShortCache
+java/nio/DirectLongBufferU
+java/nio/HeapByteBuffer
+java/nio/HeapCharBuffer
+java/nio/IntBuffer
+java/nio/LongBuffer
+java/nio/MappedByteBuffer
+java/nio/ShortBuffer
+java/nio/channels/ByteChannel
+java/nio/channels/Channel
+java/nio/channels/FileChannel
+java/nio/channels/GatheringByteChannel
+java/nio/channels/InterruptibleChannel
+java/nio/channels/ReadableByteChannel
+java/nio/channels/ScatteringByteChannel
+java/nio/channels/SeekableByteChannel
+java/nio/channels/WritableByteChannel
+java/nio/channels/spi/AbstractInterruptibleChannel
+java/nio/channels/spi/AbstractInterruptibleChannel$1
+java/nio/charset/Charset
+java/nio/charset/CharsetDecoder
+java/nio/charset/CharsetEncoder
+java/nio/charset/CoderResult
+java/nio/charset/CoderResult$1
+java/nio/charset/CoderResult$2
+java/nio/charset/CoderResult$Cache
+java/nio/charset/CodingErrorAction
+java/nio/charset/StandardCharsets
+java/nio/charset/spi/CharsetProvider
+java/nio/file/Path
+java/nio/file/Watchable
+java/nio/file/attribute/FileAttribute
+java/rmi/MarshalledObject
+java/rmi/Remote
+java/security/AccessControlContext
+java/security/AccessController
+java/security/AllPermission
+java/security/AllPermissionCollection
+java/security/BasicPermission
+java/security/BasicPermissionCollection
+java/security/CodeSigner
+java/security/CodeSource
+java/security/Guard
+java/security/Permission
+java/security/PermissionCollection
+java/security/Permissions
+java/security/Principal
+java/security/PrivilegedAction
+java/security/PrivilegedActionException
+java/security/PrivilegedExceptionAction
+java/security/ProtectionDomain
+java/security/ProtectionDomain$1
+java/security/ProtectionDomain$3
+java/security/ProtectionDomain$Key
+java/security/SecureClassLoader
+java/security/UnresolvedPermission
+java/security/cert/Certificate
+java/text/AttributedCharacterIterator
+java/text/AttributedCharacterIterator$Attribute
+java/text/AttributedString
+java/text/AttributedString$AttributedStringIterator
+java/text/CharacterIterator
+java/text/FieldPosition
+java/text/Format
+java/text/Format$Field
+java/text/MessageFormat
+java/text/MessageFormat$Field
+java/text/spi/BreakIteratorProvider
+java/text/spi/CollatorProvider
+java/text/spi/DateFormatProvider
+java/text/spi/DateFormatSymbolsProvider
+java/text/spi/DecimalFormatSymbolsProvider
+java/text/spi/NumberFormatProvider
+java/util/AbstractCollection
+java/util/AbstractList
+java/util/AbstractList$Itr
+java/util/AbstractMap
+java/util/AbstractQueue
+java/util/AbstractSequentialList
+java/util/AbstractSet
+java/util/ArrayDeque
+java/util/ArrayList
+java/util/ArrayList$Itr
+java/util/ArrayList$ListItr
+java/util/ArrayList$SubList
+java/util/ArrayList$SubList$1
+java/util/Arrays
+java/util/Arrays$ArrayList
+java/util/Arrays$LegacyMergeSort
+java/util/BitSet
+java/util/Collection
+java/util/Collections
+java/util/Collections$EmptyEnumeration
+java/util/Collections$EmptyList
+java/util/Collections$EmptyMap
+java/util/Collections$EmptySet
+java/util/Collections$SetFromMap
+java/util/Collections$SynchronizedCollection
+java/util/Collections$SynchronizedMap
+java/util/Collections$SynchronizedSet
+java/util/Collections$UnmodifiableCollection
+java/util/Collections$UnmodifiableCollection$1
+java/util/Collections$UnmodifiableList
+java/util/Collections$UnmodifiableMap
+java/util/Collections$UnmodifiableRandomAccessList
+java/util/Collections$UnmodifiableSet
+java/util/Collections$UnmodifiableSortedSet
+java/util/ComparableTimSort
+java/util/Comparator
+java/util/Date
+java/util/Deque
+java/util/Dictionary
+java/util/Enumeration
+java/util/EventListener
+java/util/EventListenerProxy
+java/util/EventObject
+java/util/HashMap
+java/util/HashMap$EntryIterator
+java/util/HashMap$EntrySet
+java/util/HashMap$HashIterator
java/util/HashMap$KeyIterator
-sun/font/CompositeFontDescriptor
-sun/font/Font2DHandle
-sun/font/FontFamily
-java/awt/GraphicsDevice
-sun/awt/X11GraphicsDevice
-sun/awt/X11GraphicsConfig
-java/awt/GraphicsConfiguration
-java/awt/ImageCapabilities
-sun/java2d/x11/X11SurfaceData
-sun/java2d/SurfaceData
-java/awt/Transparency
-sun/java2d/DisposerTarget
-sun/java2d/InvalidPipeException
-java/lang/IllegalStateException
-sun/java2d/NullSurfaceData
-sun/java2d/loops/SurfaceType
-sun/awt/image/PixelConverter
-sun/awt/image/PixelConverter$Xrgb
-sun/awt/image/PixelConverter$Argb
-sun/awt/image/PixelConverter$ArgbPre
-sun/awt/image/PixelConverter$Xbgr
-sun/awt/image/PixelConverter$Rgba
-sun/awt/image/PixelConverter$RgbaPre
-sun/awt/image/PixelConverter$Ushort565Rgb
-sun/awt/image/PixelConverter$Ushort555Rgb
-sun/awt/image/PixelConverter$Ushort555Rgbx
-sun/awt/image/PixelConverter$Ushort4444Argb
-sun/awt/image/PixelConverter$ByteGray
-sun/awt/image/PixelConverter$UshortGray
-sun/awt/image/PixelConverter$Rgbx
-sun/awt/image/PixelConverter$Bgrx
-sun/awt/image/PixelConverter$ArgbBm
-java/awt/image/ColorModel
-java/awt/image/DirectColorModel
-java/awt/image/PackedColorModel
-java/awt/color/ColorSpace
-java/awt/color/ICC_Profile
-sun/awt/color/ProfileDeferralInfo
-sun/awt/color/ProfileDeferralMgr
-java/awt/color/ICC_ProfileRGB
-java/awt/color/ICC_Profile$1
-sun/awt/color/ProfileActivator
-java/awt/color/ICC_ColorSpace
-sun/java2d/pipe/NullPipe
-sun/java2d/pipe/PixelDrawPipe
-sun/java2d/pipe/PixelFillPipe
-sun/java2d/pipe/ShapeDrawPipe
-sun/java2d/pipe/TextPipe
-sun/java2d/pipe/DrawImagePipe
-java/awt/image/IndexColorModel
-sun/java2d/pipe/LoopPipe
-sun/java2d/pipe/OutlineTextRenderer
-sun/java2d/pipe/SolidTextRenderer
-sun/java2d/pipe/GlyphListLoopPipe
-sun/java2d/pipe/GlyphListPipe
-sun/java2d/pipe/AATextRenderer
-sun/java2d/pipe/LCDTextRenderer
-sun/java2d/pipe/AlphaColorPipe
-sun/java2d/pipe/CompositePipe
-sun/java2d/pipe/PixelToShapeConverter
-sun/java2d/pipe/TextRenderer
-sun/java2d/pipe/SpanClipRenderer
-sun/java2d/pipe/Region
-sun/java2d/pipe/RegionIterator
-sun/java2d/pipe/DuctusShapeRenderer
-sun/java2d/pipe/DuctusRenderer
-sun/java2d/pipe/AlphaPaintPipe
-sun/java2d/pipe/SpanShapeRenderer$Composite
-sun/java2d/pipe/SpanShapeRenderer
-sun/java2d/pipe/GeneralCompositePipe
-sun/java2d/pipe/DrawImage
-sun/java2d/loops/RenderCache
-sun/java2d/loops/RenderCache$Entry
-sun/java2d/loops/XORComposite
-java/awt/Composite
-sun/font/X11TextRenderer
-sun/java2d/loops/GraphicsPrimitive
-sun/java2d/x11/X11PMBlitLoops
-sun/java2d/loops/Blit
-sun/java2d/loops/GraphicsPrimitiveMgr
-sun/java2d/loops/CompositeType
-sun/java2d/SunGraphics2D
-sun/awt/ConstrainableGraphics
-java/awt/Graphics2D
-java/awt/Graphics
-java/awt/Color
-java/awt/Paint
-java/awt/AlphaComposite
-sun/java2d/loops/BlitBg
-sun/java2d/loops/ScaledBlit
-sun/java2d/loops/FillRect
-sun/java2d/loops/FillSpans
-sun/java2d/loops/DrawLine
-sun/java2d/loops/DrawRect
-sun/java2d/loops/DrawPolygons
-sun/java2d/loops/DrawPath
-sun/java2d/loops/FillPath
-sun/java2d/loops/MaskBlit
-sun/java2d/loops/MaskFill
-sun/java2d/loops/DrawGlyphList
-sun/java2d/loops/DrawGlyphListAA
-sun/java2d/loops/DrawGlyphListLCD
-sun/java2d/loops/TransformHelper
-java/awt/BasicStroke
-java/awt/Stroke
-sun/misc/PerformanceLogger
-sun/misc/PerformanceLogger$TimeData
-sun/java2d/pipe/ValidatePipe
-sun/java2d/loops/CustomComponent
-sun/java2d/loops/GraphicsPrimitiveProxy
-sun/java2d/loops/GeneralRenderer
-sun/java2d/loops/GraphicsPrimitiveMgr$1
-sun/java2d/loops/GraphicsPrimitiveMgr$2
-sun/java2d/x11/X11PMBlitLoops$DelegateBlitLoop
-sun/java2d/x11/X11PMBlitBgLoops
-sun/java2d/x11/X11SurfaceData$LazyPipe
-sun/awt/X11GraphicsConfig$X11GCDisposerRecord
-sun/java2d/DisposerRecord
-java/awt/BorderLayout
-java/awt/LayoutManager2
-java/awt/Rectangle
-java/awt/Toolkit$2
-sun/awt/X11/XToolkit
-sun/awt/X11/XConstants
-sun/awt/UNIXToolkit
-java/util/TreeMap
+java/util/HashMap$KeySet
+java/util/HashMap$Node
+java/util/HashMap$TreeNode
+java/util/HashMap$ValueIterator
+java/util/HashMap$Values
+java/util/HashSet
+java/util/Hashtable
+java/util/Hashtable$Entry
+java/util/Hashtable$EntrySet
+java/util/Hashtable$Enumerator
+java/util/Hashtable$ValueCollection
+java/util/IdentityHashMap
+java/util/IdentityHashMap$IdentityHashMapIterator
+java/util/IdentityHashMap$KeyIterator
+java/util/IdentityHashMap$KeySet
+java/util/Iterator
+java/util/LinkedHashMap
+java/util/LinkedHashMap$Entry
+java/util/LinkedHashMap$LinkedEntryIterator
+java/util/LinkedHashMap$LinkedEntrySet
+java/util/LinkedHashMap$LinkedHashIterator
+java/util/LinkedHashMap$LinkedKeyIterator
+java/util/LinkedHashMap$LinkedKeySet
+java/util/LinkedHashSet
+java/util/LinkedList
+java/util/LinkedList$ListItr
+java/util/LinkedList$Node
+java/util/List
+java/util/ListIterator
+java/util/ListResourceBundle
+java/util/Locale
+java/util/Locale$1
+java/util/Locale$Cache
+java/util/Locale$Category
+java/util/Locale$LocaleKey
+java/util/Map
+java/util/Map$Entry
+java/util/MissingResourceException
java/util/NavigableMap
+java/util/NavigableSet
+java/util/Objects
+java/util/PriorityQueue
+java/util/Properties
+java/util/Properties$LineReader
+java/util/PropertyResourceBundle
+java/util/Queue
+java/util/Random
+java/util/RandomAccess
+java/util/ResourceBundle
+java/util/ResourceBundle$1
+java/util/ResourceBundle$BundleReference
+java/util/ResourceBundle$CacheKey
+java/util/ResourceBundle$CacheKeyReference
+java/util/ResourceBundle$Control
+java/util/ResourceBundle$Control$1
+java/util/ResourceBundle$Control$CandidateListCache
+java/util/ResourceBundle$LoaderReference
+java/util/ResourceBundle$RBClassLoader
+java/util/ResourceBundle$RBClassLoader$1
+java/util/ResourceBundle$SingleFormatControl
+java/util/ServiceLoader
+java/util/ServiceLoader$1
+java/util/ServiceLoader$LazyIterator
+java/util/Set
java/util/SortedMap
-sun/awt/X11/XlibWrapper
-sun/awt/X11/XUtilConstants
-sun/awt/X11/XProtocolConstants
-sun/awt/X11/XCursorFontConstants
-sun/awt/X11/XlibWrapper$1
-sun/awt/X11/XToolkit$4
-sun/awt/X11/XModifierKeymap
-sun/awt/X11/XWrapperBase
-sun/awt/X11/Native
-sun/awt/X11/Native$1
-java/awt/EventQueue
-sun/awt/X11/XToolkit$7
-java/util/EmptyStackException
-java/lang/reflect/InvocationTargetException
-java/awt/EventDispatchThread
-java/awt/event/PaintEvent
-java/awt/event/MouseEvent
-sun/awt/PeerEvent
-java/awt/event/InvocationEvent
-java/awt/ActiveEvent
-java/awt/EventQueueItem
-sun/awt/X11/XToolkit$1
-sun/awt/X11/XToolkit$XErrorHandler
-sun/awt/X11/XToolkit$5
-sun/awt/X11/XEventDispatcher
-sun/awt/SunToolkit$ModalityListenerList
-sun/awt/ModalityListener
-sun/awt/SunToolkit$1
-java/util/MissingResourceException
-java/awt/Queue
-sun/awt/PostEventQueue
-java/util/LinkedList
-java/util/Deque
-java/util/Queue
-java/util/AbstractSequentialList
-java/util/LinkedList$Entry
-sun/awt/X11/AwtScreenData
-sun/awt/X11/XWM
-sun/awt/X11/MWMConstants
-sun/awt/X11/XAtom
-java/awt/Insets
-sun/awt/X11/XWM$1
-sun/awt/X11/XWM$2
-sun/awt/X11/XSetWindowAttributes
-sun/awt/X11/XErrorEvent
-sun/awt/X11/XNETProtocol
-sun/awt/X11/XStateProtocol
-sun/awt/X11/XLayerProtocol
-sun/awt/X11/XProtocol
-sun/awt/X11/XProtocol$1
-sun/awt/X11/WindowPropertyGetter
-sun/awt/X11/UnsafeXDisposerRecord
-sun/awt/X11/XPropertyCache
-sun/awt/X11/XWINProtocol
-sun/awt/X11/XAtomList
-sun/awt/X11/XToolkit$3
-sun/awt/X11/XAnyEvent
-sun/awt/X11/IXAnyEvent
-java/awt/Window$WindowDisposerRecord
-java/awt/KeyboardFocusManager
-java/awt/KeyEventDispatcher
-java/awt/KeyEventPostProcessor
-java/awt/AWTKeyStroke
-java/awt/AWTKeyStroke$1
-java/awt/DefaultKeyboardFocusManager
-java/awt/DefaultFocusTraversalPolicy
-java/awt/ContainerOrderFocusTraversalPolicy
-java/awt/FocusTraversalPolicy
-java/awt/MutableBoolean
-java/util/Collections$UnmodifiableSet
-sun/awt/HeadlessToolkit
-sun/awt/X11/XKeyboardFocusManagerPeer
-java/awt/peer/KeyboardFocusManagerPeer
-sun/awt/X11/XKeyboardFocusManagerPeer$1
-sun/awt/X11/XFramePeer
-java/awt/peer/FramePeer
-java/awt/peer/WindowPeer
-java/awt/peer/ContainerPeer
-java/awt/peer/ComponentPeer
-sun/awt/X11/XDecoratedPeer
-sun/awt/X11/XWindowPeer
-sun/awt/X11/XPanelPeer
-java/awt/peer/PanelPeer
-sun/awt/X11/XCanvasPeer
-java/awt/peer/CanvasPeer
-sun/awt/X11/XComponentPeer
-java/awt/dnd/peer/DropTargetPeer
-sun/awt/X11/XWindow
-sun/awt/X11ComponentPeer
-sun/awt/X11/XBaseWindow
-sun/awt/X11/XCreateWindowParams
-java/lang/Long$LongCache
-sun/awt/X11/XBaseWindow$InitialiseState
-sun/awt/X11/XBaseWindow$StateLock
-sun/awt/X11/AwtGraphicsConfigData
-sun/awt/X11/XVisualInfo
-java/awt/SystemColor
-sun/awt/X11/MotifColorUtilities
-java/lang/StrictMath
-sun/awt/X11/XRepaintArea
-sun/awt/RepaintArea
-sun/awt/X11/XWindowAttributesData
+java/util/SortedSet
+java/util/Stack
+java/util/StringTokenizer
+java/util/TimSort
+java/util/TimeZone
+java/util/TimeZone$1
+java/util/TreeMap
+java/util/TreeMap$Entry
+java/util/TreeMap$KeyIterator
+java/util/TreeMap$KeySet
+java/util/TreeMap$PrivateEntryIterator
+java/util/TreeSet
+java/util/Vector
+java/util/Vector$1
+java/util/Vector$Itr
+java/util/Vector$ListItr
+java/util/WeakHashMap
+java/util/WeakHashMap$Entry
+java/util/WeakHashMap$HashIterator
+java/util/WeakHashMap$KeyIterator
+java/util/WeakHashMap$KeySet
+java/util/concurrent/AbstractExecutorService
+java/util/concurrent/BlockingQueue
+java/util/concurrent/ConcurrentHashMap
+java/util/concurrent/ConcurrentHashMap$BaseIterator
+java/util/concurrent/ConcurrentHashMap$CollectionView
+java/util/concurrent/ConcurrentHashMap$CounterCell
+java/util/concurrent/ConcurrentHashMap$EntrySetView
+java/util/concurrent/ConcurrentHashMap$ForwardingNode
+java/util/concurrent/ConcurrentHashMap$KeyIterator
+java/util/concurrent/ConcurrentHashMap$KeySetView
+java/util/concurrent/ConcurrentHashMap$Node
+java/util/concurrent/ConcurrentHashMap$Segment
+java/util/concurrent/ConcurrentHashMap$Traverser
+java/util/concurrent/ConcurrentHashMap$ValuesView
+java/util/concurrent/ConcurrentMap
+java/util/concurrent/CopyOnWriteArrayList
+java/util/concurrent/DelayQueue
+java/util/concurrent/Delayed
+java/util/concurrent/Executor
+java/util/concurrent/ExecutorService
+java/util/concurrent/Executors
+java/util/concurrent/RejectedExecutionHandler
+java/util/concurrent/SynchronousQueue
+java/util/concurrent/SynchronousQueue$TransferStack
+java/util/concurrent/SynchronousQueue$TransferStack$SNode
+java/util/concurrent/SynchronousQueue$Transferer
+java/util/concurrent/ThreadFactory
+java/util/concurrent/ThreadPoolExecutor
+java/util/concurrent/ThreadPoolExecutor$AbortPolicy
+java/util/concurrent/ThreadPoolExecutor$Worker
+java/util/concurrent/TimeUnit
+java/util/concurrent/TimeUnit$1
+java/util/concurrent/TimeUnit$2
+java/util/concurrent/TimeUnit$3
+java/util/concurrent/TimeUnit$4
+java/util/concurrent/TimeUnit$5
+java/util/concurrent/TimeUnit$6
+java/util/concurrent/TimeUnit$7
+java/util/concurrent/atomic/AtomicBoolean
+java/util/concurrent/atomic/AtomicInteger
+java/util/concurrent/atomic/AtomicLong
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl$1
+java/util/concurrent/locks/AbstractOwnableSynchronizer
+java/util/concurrent/locks/AbstractQueuedSynchronizer
+java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
+java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
+java/util/concurrent/locks/Condition
+java/util/concurrent/locks/Lock
java/util/concurrent/locks/LockSupport
-sun/awt/X11/WindowDimensions
-java/awt/Point
-java/util/TreeMap$Entry
-sun/nio/cs/UTF_8
-sun/nio/cs/Unicode
-sun/nio/cs/UTF_8$Encoder
-sun/nio/cs/UTF_8$Decoder
-sun/nio/cs/Surrogate$Generator
-sun/awt/X11/XPropertyEvent
-sun/awt/X11/XDropTargetEventProcessor
-sun/awt/X11/XDragSourceContextPeer
-sun/awt/X11/XDragSourceProtocolListener
-sun/awt/dnd/SunDragSourceContextPeer
-java/awt/dnd/peer/DragSourceContextPeer
-sun/awt/X11/XAwtState
-sun/awt/X11/XBaseWindow$1
-sun/awt/X11/XRootWindow
-sun/nio/cs/ISO_8859_1
-sun/nio/cs/ISO_8859_1$Encoder
-sun/nio/cs/ISO_8859_1$Decoder
-sun/java2d/x11/X11SurfaceData$X11WindowSurfaceData
-sun/java2d/loops/RenderLoops
-sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
-sun/java2d/DefaultDisposerRecord
-sun/java2d/x11/X11Renderer
-sun/awt/X11/XGlobalCursorManager
-sun/awt/GlobalCursorManager
-sun/awt/X11/XToolkit$6
-java/awt/Cursor$CursorDisposer
-java/awt/AWTException
-java/awt/HeadlessException
-java/lang/UnsupportedOperationException
-sun/reflect/UnsafeLongFieldAccessorImpl
-sun/reflect/UnsafeIntegerFieldAccessorImpl
-sun/awt/X11/XClientMessageEvent
-sun/awt/X11/XIconInfo
-sun/awt/X11/XAWTIcon32_java_icon16_png
-sun/awt/X11/XAWTIcon32_java_icon24_png
-sun/awt/X11/XAWTIcon32_java_icon32_png
-sun/awt/X11/XAWTIcon32_java_icon48_png
-sun/awt/X11/XSizeHints
-sun/awt/X11/XContentWindow
-sun/awt/X11/XFocusProxyWindow
-sun/awt/X11/XWMHints
-java/util/LinkedList$ListItr
-java/util/ListIterator
-sun/awt/SunToolkit$2
-java/awt/image/BufferStrategy
-java/awt/dnd/DropTarget
-java/awt/dnd/DropTargetListener
-java/awt/event/ComponentListener
-java/awt/event/FocusListener
-java/awt/event/HierarchyListener
-java/awt/event/HierarchyBoundsListener
-java/awt/event/KeyListener
-java/awt/event/MouseListener
-java/awt/event/MouseMotionListener
-java/awt/event/MouseWheelListener
-java/awt/event/InputMethodListener
-java/awt/Component$NativeInLightFixer
-java/awt/event/ContainerListener
+java/util/concurrent/locks/ReadWriteLock
+java/util/concurrent/locks/ReentrantLock
+java/util/concurrent/locks/ReentrantLock$NonfairSync
+java/util/concurrent/locks/ReentrantLock$Sync
+java/util/concurrent/locks/ReentrantReadWriteLock
+java/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync
+java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock
+java/util/concurrent/locks/ReentrantReadWriteLock$Sync
+java/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter
+java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock
+java/util/function/BiFunction
+java/util/jar/Attributes
+java/util/jar/Attributes$Name
+java/util/jar/JarEntry
+java/util/jar/JarFile
+java/util/jar/JarFile$JarEntryIterator
+java/util/jar/JarFile$JarFileEntry
+java/util/jar/JarVerifier
+java/util/jar/JarVerifier$3
+java/util/jar/JavaUtilJarAccessImpl
+java/util/jar/Manifest
+java/util/jar/Manifest$FastInputStream
+java/util/logging/Handler
+java/util/logging/Level
+java/util/logging/Level$KnownLevel
+java/util/logging/LogManager
+java/util/logging/LogManager$1
+java/util/logging/LogManager$2
+java/util/logging/LogManager$3
+java/util/logging/LogManager$5
+java/util/logging/LogManager$Cleaner
+java/util/logging/LogManager$LogNode
+java/util/logging/LogManager$LoggerContext
+java/util/logging/LogManager$LoggerContext$1
+java/util/logging/LogManager$LoggerWeakRef
+java/util/logging/LogManager$RootLogger
+java/util/logging/LogManager$SystemLoggerContext
+java/util/logging/Logger
+java/util/logging/Logger$1
+java/util/logging/LoggingPermission
+java/util/logging/LoggingProxyImpl
+java/util/spi/CalendarDataProvider
+java/util/spi/CurrencyNameProvider
+java/util/spi/LocaleNameProvider
+java/util/spi/LocaleServiceProvider
+java/util/spi/ResourceBundleControlProvider
+java/util/spi/TimeZoneNameProvider
+java/util/zip/CRC32
+java/util/zip/Checksum
+java/util/zip/Inflater
+java/util/zip/InflaterInputStream
+java/util/zip/ZStreamRef
+java/util/zip/ZipCoder
+java/util/zip/ZipConstants
+java/util/zip/ZipEntry
+java/util/zip/ZipException
+java/util/zip/ZipFile
+java/util/zip/ZipFile$1
+java/util/zip/ZipFile$ZipEntryIterator
+java/util/zip/ZipFile$ZipFileInflaterInputStream
+java/util/zip/ZipFile$ZipFileInputStream
+java/util/zip/ZipUtils
+javax/accessibility/Accessible
javax/accessibility/AccessibleContext
-sun/reflect/UnsafeObjectFieldAccessorImpl
-java/awt/peer/LightweightPeer
-sun/awt/X11/XLabelPeer
-java/awt/peer/LabelPeer
-sun/awt/X11/XMapEvent
-sun/awt/X11/XQueryTree
-sun/awt/X11/XConfigureEvent
-sun/awt/X11/PropMwmHints
-sun/awt/GlobalCursorManager$NativeUpdater
-javax/swing/JFrame
-javax/swing/WindowConstants
-javax/swing/RootPaneContainer
-javax/swing/TransferHandler$HasGetTransferHandler
-javax/swing/JLabel
-javax/swing/SwingConstants
+javax/swing/AbstractAction
+javax/swing/AbstractButton
+javax/swing/AbstractButton$Handler
+javax/swing/AbstractListModel
+javax/swing/Action
+javax/swing/ActionMap
+javax/swing/AncestorNotifier
+javax/swing/ArrayTable
+javax/swing/Autoscroller
+javax/swing/BorderFactory
+javax/swing/BoundedRangeModel
+javax/swing/Box
+javax/swing/Box$Filler
+javax/swing/BoxLayout
+javax/swing/ButtonGroup
+javax/swing/ButtonModel
+javax/swing/CellRendererPane
+javax/swing/ClientPropertyKey
+javax/swing/ClientPropertyKey$1
+javax/swing/ComboBoxEditor
+javax/swing/ComboBoxModel
+javax/swing/ComponentInputMap
+javax/swing/DefaultBoundedRangeModel
+javax/swing/DefaultButtonModel
+javax/swing/DefaultComboBoxModel
+javax/swing/DefaultListCellRenderer
+javax/swing/DefaultListCellRenderer$UIResource
+javax/swing/DefaultListSelectionModel
+javax/swing/DefaultSingleSelectionModel
+javax/swing/DropMode
+javax/swing/FocusManager
+javax/swing/GrayFilter
+javax/swing/Icon
+javax/swing/ImageIcon
+javax/swing/ImageIcon$1
+javax/swing/ImageIcon$2
+javax/swing/ImageIcon$2$1
+javax/swing/ImageIcon$3
+javax/swing/InputMap
+javax/swing/InternalFrameFocusTraversalPolicy
+javax/swing/JButton
+javax/swing/JCheckBox
+javax/swing/JCheckBoxMenuItem
+javax/swing/JComboBox
+javax/swing/JComboBox$1
+javax/swing/JComboBox$KeySelectionManager
javax/swing/JComponent
javax/swing/JComponent$1
-javax/swing/SwingUtilities
-javax/swing/JRootPane
-sun/security/action/GetBooleanAction
-javax/swing/event/EventListenerList
+javax/swing/JComponent$2
+javax/swing/JDialog
+javax/swing/JEditorPane
+javax/swing/JFrame
+javax/swing/JInternalFrame
+javax/swing/JLabel
+javax/swing/JLayer
+javax/swing/JLayeredPane
+javax/swing/JList
+javax/swing/JMenu
+javax/swing/JMenu$MenuChangeListener
+javax/swing/JMenu$WinListener
+javax/swing/JMenuBar
+javax/swing/JMenuItem
+javax/swing/JMenuItem$MenuItemFocusListener
javax/swing/JPanel
-java/awt/FlowLayout
-javax/swing/UIManager
-javax/swing/UIManager$LookAndFeelInfo
-sun/swing/SwingUtilities2
-sun/swing/SwingUtilities2$LSBCacheEntry
-javax/swing/UIManager$LAFState
-javax/swing/UIDefaults
-javax/swing/MultiUIDefaults
-javax/swing/UIManager$1
-javax/swing/plaf/metal/MetalLookAndFeel
-javax/swing/plaf/basic/BasicLookAndFeel
+javax/swing/JPasswordField
+javax/swing/JPopupMenu
+javax/swing/JPopupMenu$Separator
+javax/swing/JRadioButton
+javax/swing/JRadioButtonMenuItem
+javax/swing/JRootPane
+javax/swing/JRootPane$1
+javax/swing/JRootPane$RootLayout
+javax/swing/JScrollBar
+javax/swing/JScrollBar$ModelListener
+javax/swing/JScrollPane
+javax/swing/JScrollPane$ScrollBar
+javax/swing/JSeparator
+javax/swing/JSplitPane
+javax/swing/JTextArea
+javax/swing/JTextField
+javax/swing/JTextField$NotifyAction
+javax/swing/JTextField$ScrollRepainter
+javax/swing/JToggleButton
+javax/swing/JToggleButton$ToggleButtonModel
+javax/swing/JToolBar
+javax/swing/JToolBar$DefaultToolBarLayout
+javax/swing/JToolBar$Separator
+javax/swing/JViewport
+javax/swing/JViewport$ViewListener
+javax/swing/JWindow
+javax/swing/KeyStroke
+javax/swing/KeyboardManager
+javax/swing/KeyboardManager$ComponentKeyStrokePair
+javax/swing/LayoutComparator
+javax/swing/LayoutFocusTraversalPolicy
+javax/swing/ListCellRenderer
+javax/swing/ListModel
+javax/swing/ListSelectionModel
javax/swing/LookAndFeel
-sun/swing/DefaultLookup
-javax/swing/plaf/metal/OceanTheme
-javax/swing/plaf/metal/DefaultMetalTheme
-javax/swing/plaf/metal/MetalTheme
-javax/swing/plaf/ColorUIResource
-javax/swing/plaf/UIResource
-sun/swing/PrintColorUIResource
-javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
-javax/swing/plaf/FontUIResource
-sun/swing/SwingLazyValue
-javax/swing/UIDefaults$LazyValue
-javax/swing/UIDefaults$ActiveValue
-javax/swing/plaf/InsetsUIResource
-sun/swing/SwingUtilities2$2
-javax/swing/plaf/basic/BasicLookAndFeel$2
-javax/swing/plaf/DimensionUIResource
-javax/swing/UIDefaults$LazyInputMap
-java/lang/Character$CharacterCache
-javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
-javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue
-java/awt/print/PrinterJob
-sun/swing/SwingUtilities2$AATextInfo
-sun/awt/X11/XAWTXSettings
-sun/awt/X11/XMSelectionListener
-sun/awt/XSettings
-sun/awt/X11/XMSelection
-sun/awt/X11/XMSelection$1
-javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
-java/beans/PropertyChangeListener
-java/beans/PropertyChangeListenerProxy
-java/util/EventListenerProxy
-sun/awt/EventListenerAggregate
-javax/swing/UIDefaults$ProxyLazyValue
-javax/swing/plaf/metal/OceanTheme$1
-javax/swing/plaf/metal/OceanTheme$2
-javax/swing/plaf/metal/OceanTheme$3
-javax/swing/plaf/metal/OceanTheme$4
-javax/swing/plaf/metal/OceanTheme$5
-javax/swing/plaf/metal/OceanTheme$6
+javax/swing/MenuElement
+javax/swing/MenuSelectionManager
+javax/swing/MultiUIDefaults
+javax/swing/MutableComboBoxModel
+javax/swing/PopupFactory
javax/swing/RepaintManager
+javax/swing/RepaintManager$2
+javax/swing/RepaintManager$3
javax/swing/RepaintManager$DisplayChangedHandler
-javax/swing/SwingPaintEventDispatcher
-sun/awt/PaintEventDispatcher
-javax/swing/UIManager$2
-javax/swing/UIManager$3
-java/awt/PopupMenu
-java/awt/Menu
-java/awt/MenuItem
-java/awt/MenuComponent
-java/io/ObjectOutputStream
-java/io/ObjectOutput
-java/io/DataOutput
-java/io/ObjectStreamConstants
-java/io/PrintWriter
-java/io/ObjectInputStream
-java/io/ObjectInput
-java/awt/Event
-java/awt/im/InputContext
-java/awt/event/MouseWheelEvent
-java/awt/BufferCapabilities
-sun/awt/CausedFocusEvent$Cause
-java/awt/PointerInfo
-java/awt/Component$BaselineResizeBehavior
-java/awt/FontMetrics
-java/awt/Image
-java/awt/image/ImageProducer
-java/awt/image/VolatileImage
-java/awt/im/InputMethodRequests
-java/awt/event/FocusEvent
-java/awt/event/InputMethodEvent
-java/awt/event/HierarchyEvent
-javax/accessibility/AccessibleStateSet
-com/sun/swing/internal/plaf/metal/resources/metal
-sun/util/ResourceBundleEnumeration
-com/sun/swing/internal/plaf/basic/resources/basic
-javax/swing/plaf/basic/BasicPanelUI
-javax/swing/plaf/PanelUI
-javax/swing/plaf/ComponentUI
-sun/reflect/misc/MethodUtil
-sun/reflect/misc/MethodUtil$1
-java/util/jar/JarFile
-java/util/zip/ZipFile
-java/util/zip/ZipConstants
-java/util/jar/JavaUtilJarAccessImpl
-sun/misc/JavaUtilJarAccess
-sun/misc/JarIndex
-java/util/zip/ZipEntry
-java/util/jar/JarFile$JarFileEntry
-java/util/jar/JarEntry
-sun/misc/URLClassPath$JarLoader$2
-sun/net/www/protocol/jar/JarURLConnection
-java/net/JarURLConnection
-sun/net/www/protocol/jar/JarFileFactory
-sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
-java/net/HttpURLConnection
-sun/net/www/protocol/jar/URLJarFile
-sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
-sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
-java/util/zip/ZipFile$ZipFileInputStream
-java/security/AllPermissionCollection
-java/lang/IllegalAccessException
-javax/swing/JPasswordField
-javax/swing/JTextField
-javax/swing/text/JTextComponent
+javax/swing/RepaintManager$PaintManager
+javax/swing/RepaintManager$ProcessingRunnable
+javax/swing/RootPaneContainer
+javax/swing/ScrollPaneConstants
+javax/swing/ScrollPaneLayout
+javax/swing/ScrollPaneLayout$UIResource
javax/swing/Scrollable
-javax/swing/JLayeredPane
-javax/swing/JRootPane$1
-javax/swing/ArrayTable
-javax/swing/JInternalFrame
-javax/swing/JRootPane$RootLayout
-javax/swing/BufferStrategyPaintManager
-javax/swing/RepaintManager$PaintManager
-javax/swing/plaf/metal/MetalRootPaneUI
-javax/swing/plaf/basic/BasicRootPaneUI
-javax/swing/plaf/RootPaneUI
-javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
-javax/swing/plaf/ComponentInputMapUIResource
-javax/swing/ComponentInputMap
-javax/swing/InputMap
-javax/swing/plaf/InputMapUIResource
-javax/swing/KeyStroke
-java/awt/VKCollection
-sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
-javax/swing/plaf/basic/LazyActionMap
-javax/swing/plaf/ActionMapUIResource
-javax/swing/ActionMap
-javax/swing/LayoutFocusTraversalPolicy
+javax/swing/SingleSelectionModel
+javax/swing/SizeRequirements
javax/swing/SortingFocusTraversalPolicy
-javax/swing/InternalFrameFocusTraversalPolicy
+javax/swing/SwingConstants
javax/swing/SwingContainerOrderFocusTraversalPolicy
javax/swing/SwingDefaultFocusTraversalPolicy
-javax/swing/LayoutComparator
-javax/swing/plaf/metal/MetalLabelUI
-javax/swing/plaf/basic/BasicLabelUI
-javax/swing/plaf/LabelUI
-javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
-javax/swing/plaf/basic/BasicHTML
-javax/swing/SystemEventQueueUtilities
-javax/swing/SystemEventQueueUtilities$SystemEventQueue
-sun/awt/NullComponentPeer
-java/awt/event/WindowEvent
-java/awt/EventQueue$1
-java/awt/EventDispatchThread$1
-java/awt/Conditional
-java/awt/EventDispatchThread$HierarchyEventFilter
-java/awt/EventFilter$FilterAction
-sun/awt/dnd/SunDropTargetEvent
-java/awt/event/ActionEvent
-java/util/jar/Manifest
-java/io/ByteArrayInputStream
-java/util/jar/Attributes
-java/util/jar/Manifest$FastInputStream
-java/util/jar/Attributes$Name
-sun/misc/ASCIICaseInsensitiveComparator
-java/util/jar/JarVerifier
-java/io/ByteArrayOutputStream
-sun/misc/ExtensionDependency
-java/lang/Package
-sun/security/util/ManifestEntryVerifier
-sun/security/provider/Sun
-java/security/Provider
-java/security/Provider$ServiceKey
-java/security/Provider$EngineDescription
-sun/security/provider/Sun$1
-java/security/Security
-java/security/Security$1
-sun/misc/FloatingDecimal
-sun/misc/FloatingDecimal$1
-sun/security/provider/NativePRNG
-java/security/SecureRandomSpi
-sun/security/provider/NativePRNG$1
-sun/security/provider/NativePRNG$RandomIO
-sun/misc/BASE64Decoder
-sun/misc/CharacterDecoder
-sun/security/util/SignatureFileVerifier
-java/awt/event/KeyAdapter
-java/lang/NumberFormatException
-java/lang/IllegalArgumentException
-java/io/FileWriter
-java/net/Authenticator
-java/net/MalformedURLException
-javax/swing/text/Element
-javax/swing/text/Document
-javax/swing/text/PlainDocument
-javax/swing/text/AbstractDocument
-javax/swing/text/GapContent
-javax/swing/text/AbstractDocument$Content
-javax/swing/text/GapVector
-javax/swing/text/GapContent$MarkVector
-javax/swing/text/GapContent$MarkData
-javax/swing/text/StyleContext
-javax/swing/text/AbstractDocument$AttributeContext
-javax/swing/text/StyleConstants
-javax/swing/text/StyleConstants$CharacterConstants
-javax/swing/text/AttributeSet$CharacterAttribute
-javax/swing/text/StyleConstants$FontConstants
-javax/swing/text/AttributeSet$FontAttribute
-javax/swing/text/StyleConstants$ColorConstants
-javax/swing/text/AttributeSet$ColorAttribute
-javax/swing/text/StyleConstants$ParagraphConstants
-javax/swing/text/AttributeSet$ParagraphAttribute
-javax/swing/text/StyleContext$FontKey
-javax/swing/text/SimpleAttributeSet
-javax/swing/text/MutableAttributeSet
-javax/swing/text/AttributeSet
-javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
-javax/swing/text/StyleContext$NamedStyle
-javax/swing/text/Style
-javax/swing/text/SimpleAttributeSet$1
-javax/swing/text/StyleContext$SmallAttributeSet
-javax/swing/text/AbstractDocument$BidiRootElement
-javax/swing/text/AbstractDocument$BranchElement
-javax/swing/text/AbstractDocument$AbstractElement
-javax/swing/tree/TreeNode
-javax/swing/text/AbstractDocument$1
-javax/swing/text/AbstractDocument$BidiElement
-javax/swing/text/AbstractDocument$LeafElement
-javax/swing/text/GapContent$StickyPosition
-javax/swing/text/Position
-javax/swing/text/StyleContext$KeyEnumeration
-javax/swing/text/GapContent$InsertUndo
-javax/swing/undo/AbstractUndoableEdit
-javax/swing/undo/UndoableEdit
-javax/swing/text/AbstractDocument$DefaultDocumentEvent
-javax/swing/event/DocumentEvent
-javax/swing/undo/CompoundEdit
-javax/swing/event/DocumentEvent$EventType
-javax/swing/text/Segment
-java/text/CharacterIterator
-javax/swing/text/Utilities
-javax/swing/text/SegmentCache
-javax/swing/text/SegmentCache$CachedSegment
-javax/swing/event/UndoableEditEvent
-javax/swing/text/AbstractDocument$ElementEdit
-javax/swing/event/DocumentEvent$ElementChange
-java/net/Socket
-java/net/InetAddress
-java/net/InetAddress$Cache
-java/net/InetAddress$Cache$Type
-java/net/InetAddressImplFactory
-java/net/Inet4AddressImpl
-java/net/InetAddressImpl
-java/net/InetAddress$1
-sun/net/spi/nameservice/NameService
-sun/net/util/IPAddressUtil
-java/util/RandomAccessSubList
-java/util/SubList
-java/util/SubList$1
-java/util/AbstractList$ListItr
-java/net/Inet4Address
-java/net/InetSocketAddress
-java/net/SocketAddress
-java/net/SocksSocketImpl
-java/net/SocksConsts
-java/net/PlainSocketImpl
-java/net/SocketImpl
-java/net/SocketOptions
-java/net/SocketException
-java/net/SocksSocketImpl$5
-java/net/ProxySelector
-sun/net/spi/DefaultProxySelector
-sun/net/spi/DefaultProxySelector$1
-sun/net/NetProperties
-sun/net/NetProperties$1
-sun/net/spi/DefaultProxySelector$NonProxyInfo
-java/net/Inet6Address
-java/net/URI
-java/net/URI$Parser
-java/net/Proxy
-java/net/Proxy$Type
-java/net/ConnectException
-javax/swing/JMenu
-javax/swing/MenuElement
-javax/swing/JMenuItem
-javax/swing/AbstractButton
-java/awt/ItemSelectable
-javax/swing/event/MenuListener
-javax/swing/JCheckBoxMenuItem
-javax/swing/Icon
-javax/swing/JButton
-java/awt/event/WindowListener
-java/net/URLClassLoader$2
-javax/swing/ImageIcon
-javax/swing/ImageIcon$1
-java/awt/MediaTracker
-sun/misc/SoftCache$ValueCell
-sun/awt/image/URLImageSource
-sun/awt/image/InputStreamImageSource
-sun/awt/image/ImageFetchable
-sun/awt/image/ToolkitImage
-java/awt/Image$1
-sun/awt/image/SurfaceManager$ImageAccessor
-sun/awt/image/SurfaceManager
-sun/awt/image/NativeLibLoader
-java/awt/ImageMediaEntry
-java/awt/MediaEntry
-sun/awt/image/ImageRepresentation
-java/awt/image/ImageConsumer
-sun/awt/image/ImageWatched
-sun/awt/image/ImageWatched$Link
-sun/awt/image/ImageWatched$WeakLink
-sun/awt/image/ImageConsumerQueue
-sun/awt/image/ImageFetcher
-sun/awt/image/FetcherInfo
-sun/awt/image/ImageFetcher$1
-sun/awt/image/GifImageDecoder
-sun/awt/image/ImageDecoder
-sun/awt/image/GifFrame
-java/awt/image/Raster
-java/awt/image/DataBufferByte
-java/awt/image/DataBuffer
-java/awt/image/PixelInterleavedSampleModel
-java/awt/image/ComponentSampleModel
-java/awt/image/SampleModel
-sun/awt/image/ByteInterleavedRaster
-sun/awt/image/ByteComponentRaster
-sun/awt/image/SunWritableRaster
-java/awt/image/WritableRaster
-java/awt/image/BufferedImage
-java/awt/image/WritableRenderedImage
-java/awt/image/RenderedImage
-sun/awt/image/IntegerComponentRaster
-sun/awt/image/BytePackedRaster
-java/awt/Canvas
-sun/font/FontDesignMetrics
-sun/font/FontStrikeDesc
-sun/font/CompositeStrike
-sun/font/FontStrikeDisposer
-sun/font/StrikeCache$SoftDisposerRef
-sun/font/StrikeCache$DisposableStrike
-sun/font/TrueTypeFont$TTDisposerRecord
-sun/font/TrueTypeFont$1
-java/io/RandomAccessFile
-java/nio/ByteBufferAsIntBufferB
-java/nio/IntBuffer
-sun/font/TrueTypeFont$DirectoryEntry
-java/nio/ByteBufferAsShortBufferB
-java/nio/ShortBuffer
-sun/nio/cs/UTF_16
-sun/nio/cs/UTF_16$Decoder
-sun/nio/cs/UnicodeDecoder
-sun/font/FileFontStrike
-sun/font/FileFont$FileFontDisposer
-sun/font/TrueTypeGlyphMapper
-sun/font/CMap
-sun/font/CMap$NullCMapClass
-sun/font/CMap$CMapFormat4
-java/nio/ByteBufferAsCharBufferB
-sun/font/FontDesignMetrics$KeyReference
-sun/awt/image/PNGImageDecoder
-sun/awt/image/PNGFilterInputStream
-java/util/zip/InflaterInputStream
-java/util/zip/Inflater
-sun/awt/EventQueueItem
-sun/awt/SunToolkit$3
-sun/awt/X11/XExposeEvent
-sun/awt/X11/ComponentAccessor
-sun/awt/X11/ComponentAccessor$1
-sun/reflect/UnsafeBooleanFieldAccessorImpl
-sun/awt/event/IgnorePaintEvent
-java/awt/image/DataBufferInt
-java/awt/image/SinglePixelPackedSampleModel
-sun/awt/image/IntegerInterleavedRaster
-sun/java2d/x11/X11RemoteOffScreenImage
-sun/awt/image/RemoteOffScreenImage
-sun/awt/image/OffScreenImage
-sun/java2d/x11/X11RemoteOffScreenImage$X11RemoteSurfaceManager
-sun/awt/image/OffScreenSurfaceManager
-sun/awt/image/CachingSurfaceManager
-sun/awt/image/RasterListener
-sun/awt/image/BufImgSurfaceData
-sun/java2d/opengl/GLXGraphicsConfig
-sun/java2d/opengl/OGLGraphicsConfig
-sun/java2d/x11/X11SurfaceData$X11PixmapSurfaceData
-sun/awt/image/WritableRasterNative
-sun/awt/image/DataBufferNative
-sun/java2d/SurfaceManagerFactory
-sun/java2d/x11/X11CachingSurfaceManager
-sun/java2d/opengl/GLXSurfaceData
-sun/java2d/opengl/OGLSurfaceData
-sun/font/CompositeGlyphMapper
-sun/java2d/loops/FontInfo
-java/util/Date
-sun/util/calendar/CalendarSystem
-sun/util/calendar/Gregorian
-sun/util/calendar/BaseCalendar
-sun/util/calendar/AbstractCalendar
-java/util/TimeZone
-java/lang/InheritableThreadLocal
-sun/util/calendar/ZoneInfo
-sun/util/calendar/ZoneInfoFile
-sun/util/calendar/ZoneInfoFile$1
-java/util/TimeZone$1
-sun/util/calendar/Gregorian$Date
-sun/util/calendar/BaseCalendar$Date
-sun/util/calendar/CalendarDate
-sun/util/calendar/CalendarUtils
-java/util/TimeZone$DisplayNames
-sun/util/TimeZoneNameUtility
-sun/util/resources/TimeZoneNames
-sun/util/resources/TimeZoneNamesBundle
-sun/util/resources/TimeZoneNames_en
-java/util/spi/TimeZoneNameProvider
-java/lang/ProcessBuilder
-java/lang/ProcessImpl
-java/lang/UNIXProcess
-java/lang/Process
-java/lang/UNIXProcess$Gate
-java/lang/UNIXProcess$1
-java/lang/UNIXProcess$1$1
-java/lang/UNIXProcess$1$1$1
-java/net/ServerSocket
-java/util/Random
-java/util/concurrent/atomic/AtomicLong
-java/lang/InternalError
-java/io/StringReader
-java/lang/SecurityException
-java/io/FilterReader
-java/lang/reflect/Proxy
-java/lang/reflect/InvocationHandler
-java/lang/NoSuchFieldException
-java/lang/InstantiationException
-java/lang/ArrayIndexOutOfBoundsException
-java/lang/IndexOutOfBoundsException
-javax/swing/JDialog
-sun/awt/X11/XClipboard
-sun/awt/datatransfer/SunClipboard
-java/awt/datatransfer/Clipboard
-java/awt/datatransfer/SystemFlavorMap
-java/awt/datatransfer/FlavorMap
-java/awt/datatransfer/FlavorTable
-java/awt/datatransfer/SystemFlavorMap$1
-sun/net/ProgressMonitor
-sun/net/DefaultProgressMeteringPolicy
-sun/net/ProgressMeteringPolicy
-java/awt/datatransfer/SystemFlavorMap$2
-java/awt/datatransfer/MimeType
-java/io/Externalizable
-java/awt/datatransfer/MimeTypeParameterList
-sun/awt/datatransfer/DataTransferer
-java/util/Collections$SynchronizedSet
-java/util/Collections$SynchronizedCollection
-java/awt/datatransfer/DataFlavor
-java/awt/datatransfer/DataFlavor$1
-sun/awt/datatransfer/DataTransferer$CharsetComparator
-sun/awt/datatransfer/DataTransferer$IndexedComparator
-sun/nio/cs/UTF_16LE
-sun/nio/cs/UTF_16BE
-sun/awt/datatransfer/DataTransferer$DataFlavorComparator
-java/rmi/Remote
-sun/awt/datatransfer/DataTransferer$1
-sun/awt/X11/XDataTransferer
-sun/awt/datatransfer/ToolkitThreadBlockedHandler
-javax/imageio/ImageTypeSpecifier
-sun/awt/X11/XSelection
-sun/security/action/GetIntegerAction
-sun/awt/X11/XSelection$IncrementalTransferHandler
-sun/awt/X11/XSelection$SelectionEventHandler
-java/awt/datatransfer/Transferable
-java/io/EOFException
-java/util/Vector$1
-java/util/zip/ZipFile$1
-java/util/zip/ZipFile$2
-java/util/jar/JarFile$1
-java/util/PropertyResourceBundle
-java/util/ResourceBundle$Control$1
-java/util/Hashtable$EntrySet
-java/lang/IllegalAccessError
-java/text/MessageFormat
-java/text/MessageFormat$Field
-java/text/Format$Field
-java/lang/CloneNotSupportedException
-sun/reflect/MethodAccessorGenerator
-sun/reflect/AccessorGenerator
-sun/reflect/ClassFileConstants
-java/lang/Void
-sun/reflect/ByteVectorFactory
-sun/reflect/ByteVectorImpl
-sun/reflect/ByteVector
-sun/reflect/ClassFileAssembler
-sun/reflect/UTF8
-sun/reflect/Label
-sun/reflect/Label$PatchInfo
-sun/reflect/MethodAccessorGenerator$1
-sun/reflect/ClassDefiner
-sun/reflect/ClassDefiner$1
-sun/reflect/BootstrapConstructorAccessorImpl
-java/awt/event/ActionListener
+javax/swing/SwingHeavyWeight
+javax/swing/SwingPaintEventDispatcher
+javax/swing/SwingUtilities
+javax/swing/SwingUtilities$SharedOwnerFrame
javax/swing/Timer
javax/swing/Timer$DoPostEvent
javax/swing/TimerQueue
javax/swing/TimerQueue$1
+javax/swing/TimerQueue$DelayedTimer
javax/swing/ToolTipManager
-java/awt/event/MouseAdapter
+javax/swing/ToolTipManager$AccessibilityKeyListener
+javax/swing/ToolTipManager$MoveBeforeEnterListener
javax/swing/ToolTipManager$insideTimerAction
javax/swing/ToolTipManager$outsideTimerAction
javax/swing/ToolTipManager$stillInsideTimerAction
-javax/swing/ToolTipManager$Actions
-sun/swing/UIAction
-javax/swing/Action
-javax/swing/ToolTipManager$MoveBeforeEnterListener
-java/awt/event/MouseMotionAdapter
-java/util/Hashtable$ValueCollection
-javax/swing/event/CaretListener
-javax/swing/JToolBar
-javax/swing/JSplitPane
-javax/swing/border/Border
-javax/swing/JToggleButton
-javax/swing/border/EmptyBorder
+javax/swing/TransferHandler
+javax/swing/TransferHandler$DropHandler
+javax/swing/TransferHandler$HasGetTransferHandler
+javax/swing/TransferHandler$SwingDropTarget
+javax/swing/TransferHandler$TransferAction
+javax/swing/TransferHandler$TransferAction$1
+javax/swing/TransferHandler$TransferAction$2
+javax/swing/TransferHandler$TransferSupport
+javax/swing/UIDefaults
+javax/swing/UIDefaults$ActiveValue
+javax/swing/UIDefaults$LazyInputMap
+javax/swing/UIDefaults$LazyValue
+javax/swing/UIDefaults$TextAndMnemonicHashMap
+javax/swing/UIManager
+javax/swing/UIManager$1
+javax/swing/UIManager$2
+javax/swing/UIManager$LAFState
+javax/swing/UIManager$LookAndFeelInfo
+javax/swing/ViewportLayout
+javax/swing/WindowConstants
javax/swing/border/AbstractBorder
-javax/swing/DefaultButtonModel
-javax/swing/ButtonModel
-javax/swing/AbstractButton$Handler
-javax/swing/event/ChangeListener
-java/awt/event/ItemListener
-javax/swing/plaf/metal/MetalButtonUI
-javax/swing/plaf/basic/BasicButtonUI
-javax/swing/plaf/ButtonUI
-javax/swing/plaf/metal/MetalBorders
-javax/swing/plaf/BorderUIResource$CompoundBorderUIResource
+javax/swing/border/BevelBorder
+javax/swing/border/Border
javax/swing/border/CompoundBorder
-javax/swing/plaf/metal/MetalBorders$ButtonBorder
-javax/swing/plaf/basic/BasicBorders$MarginBorder
-javax/swing/plaf/basic/BasicButtonListener
-java/awt/AWTEventMulticaster
-java/awt/event/WindowFocusListener
-java/awt/event/WindowStateListener
-java/awt/event/AdjustmentListener
-java/awt/event/TextListener
+javax/swing/border/EmptyBorder
+javax/swing/border/EtchedBorder
+javax/swing/border/LineBorder
+javax/swing/border/MatteBorder
+javax/swing/event/AncestorEvent
javax/swing/event/AncestorListener
-java/beans/VetoableChangeListener
-javax/swing/ButtonGroup
-javax/swing/JToggleButton$ToggleButtonModel
-javax/swing/plaf/metal/MetalToggleButtonUI
-javax/swing/plaf/basic/BasicToggleButtonUI
-javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder
-java/awt/CardLayout
-javax/swing/Box
-javax/swing/plaf/metal/MetalBorders$TextFieldBorder
-javax/swing/plaf/metal/MetalBorders$Flush3DBorder
-javax/swing/BoxLayout
-javax/swing/JMenuBar
-javax/swing/DefaultSingleSelectionModel
-javax/swing/SingleSelectionModel
-javax/swing/plaf/basic/BasicMenuBarUI
+javax/swing/event/CaretEvent
+javax/swing/event/CaretListener
+javax/swing/event/ChangeEvent
+javax/swing/event/ChangeListener
+javax/swing/event/DocumentEvent
+javax/swing/event/DocumentEvent$ElementChange
+javax/swing/event/DocumentEvent$EventType
+javax/swing/event/DocumentListener
+javax/swing/event/EventListenerList
+javax/swing/event/ListDataListener
+javax/swing/event/ListSelectionListener
+javax/swing/event/MenuDragMouseListener
+javax/swing/event/MenuEvent
+javax/swing/event/MenuKeyListener
+javax/swing/event/MenuListener
+javax/swing/event/MouseInputAdapter
+javax/swing/event/MouseInputListener
+javax/swing/event/PopupMenuListener
+javax/swing/event/UndoableEditEvent
+javax/swing/event/UndoableEditListener
+javax/swing/plaf/ActionMapUIResource
+javax/swing/plaf/BorderUIResource
+javax/swing/plaf/BorderUIResource$EmptyBorderUIResource
+javax/swing/plaf/BorderUIResource$LineBorderUIResource
+javax/swing/plaf/ButtonUI
+javax/swing/plaf/ColorUIResource
+javax/swing/plaf/ComboBoxUI
+javax/swing/plaf/ComponentInputMapUIResource
+javax/swing/plaf/ComponentUI
+javax/swing/plaf/DimensionUIResource
+javax/swing/plaf/FontUIResource
+javax/swing/plaf/IconUIResource
+javax/swing/plaf/InputMapUIResource
+javax/swing/plaf/InsetsUIResource
+javax/swing/plaf/LabelUI
+javax/swing/plaf/ListUI
javax/swing/plaf/MenuBarUI
-javax/swing/plaf/basic/DefaultMenuLayout
-javax/swing/plaf/metal/MetalBorders$MenuBarBorder
-javax/swing/plaf/basic/BasicMenuBarUI$Handler
-javax/swing/KeyboardManager
-javax/swing/event/MenuEvent
-javax/swing/JMenu$MenuChangeListener
-javax/swing/JMenuItem$MenuItemFocusListener
-javax/swing/plaf/basic/BasicMenuUI
-javax/swing/plaf/basic/BasicMenuItemUI
javax/swing/plaf/MenuItemUI
-javax/swing/plaf/metal/MetalBorders$MenuItemBorder
-javax/swing/plaf/metal/MetalIconFactory
-javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon
-javax/swing/plaf/basic/BasicMenuUI$Handler
-javax/swing/event/MenuKeyListener
+javax/swing/plaf/PanelUI
+javax/swing/plaf/PopupMenuUI
+javax/swing/plaf/RootPaneUI
+javax/swing/plaf/ScrollBarUI
+javax/swing/plaf/ScrollPaneUI
+javax/swing/plaf/SeparatorUI
+javax/swing/plaf/TextUI
+javax/swing/plaf/ToolBarUI
+javax/swing/plaf/UIResource
+javax/swing/plaf/ViewportUI
+javax/swing/plaf/basic/BasicBorders$ButtonBorder
+javax/swing/plaf/basic/BasicBorders$MarginBorder
+javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
+javax/swing/plaf/basic/BasicBorders$RolloverButtonBorder
+javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
+javax/swing/plaf/basic/BasicButtonListener
+javax/swing/plaf/basic/BasicButtonUI
+javax/swing/plaf/basic/BasicComboBoxEditor
+javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
+javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
+javax/swing/plaf/basic/BasicComboBoxUI
+javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
+javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
+javax/swing/plaf/basic/BasicComboBoxUI$FocusHandler
+javax/swing/plaf/basic/BasicComboBoxUI$Handler
+javax/swing/plaf/basic/BasicComboPopup
+javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
+javax/swing/plaf/basic/BasicComboPopup$Handler
+javax/swing/plaf/basic/BasicGraphicsUtils
+javax/swing/plaf/basic/BasicHTML
+javax/swing/plaf/basic/BasicIconFactory
+javax/swing/plaf/basic/BasicIconFactory$MenuItemArrowIcon
+javax/swing/plaf/basic/BasicIconFactory$MenuItemCheckIcon
+javax/swing/plaf/basic/BasicLabelUI
+javax/swing/plaf/basic/BasicListUI
+javax/swing/plaf/basic/BasicListUI$FocusHandler
+javax/swing/plaf/basic/BasicListUI$Handler
+javax/swing/plaf/basic/BasicListUI$ListTransferHandler
+javax/swing/plaf/basic/BasicListUI$MouseInputHandler
+javax/swing/plaf/basic/BasicListUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicLookAndFeel
+javax/swing/plaf/basic/BasicLookAndFeel$1
+javax/swing/plaf/basic/BasicLookAndFeel$2
+javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
+javax/swing/plaf/basic/BasicMenuBarUI
+javax/swing/plaf/basic/BasicMenuBarUI$Handler
+javax/swing/plaf/basic/BasicMenuItemUI
javax/swing/plaf/basic/BasicMenuItemUI$Handler
-javax/swing/event/MenuDragMouseListener
-javax/swing/event/MouseInputListener
-javax/swing/event/ChangeEvent
-java/awt/event/ContainerEvent
-javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon
-javax/swing/JPopupMenu
+javax/swing/plaf/basic/BasicMenuUI
+javax/swing/plaf/basic/BasicMenuUI$ChangeHandler
+javax/swing/plaf/basic/BasicMenuUI$Handler
+javax/swing/plaf/basic/BasicMenuUI$MouseInputHandler
+javax/swing/plaf/basic/BasicPanelUI
javax/swing/plaf/basic/BasicPopupMenuUI
-javax/swing/plaf/PopupMenuUI
-javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
-java/awt/event/AWTEventListenerProxy
-java/awt/Toolkit$SelectiveAWTEventListener
-java/awt/Toolkit$ToolkitEventMulticaster
-javax/swing/plaf/basic/BasicLookAndFeel$1
-javax/swing/plaf/metal/MetalBorders$PopupMenuBorder
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener
-javax/swing/event/PopupMenuListener
-javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
-javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
-javax/swing/MenuSelectionManager
javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper
javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1
-java/awt/event/FocusAdapter
-javax/swing/JMenu$WinListener
-java/awt/event/WindowAdapter
-javax/swing/JPopupMenu$Separator
-javax/swing/JSeparator
-javax/swing/plaf/metal/MetalPopupMenuSeparatorUI
-javax/swing/plaf/metal/MetalSeparatorUI
+javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
+javax/swing/plaf/basic/BasicRootPaneUI
+javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
+javax/swing/plaf/basic/BasicScrollPaneUI
+javax/swing/plaf/basic/BasicScrollPaneUI$Handler
+javax/swing/plaf/basic/BasicScrollPaneUI$MouseWheelHandler
javax/swing/plaf/basic/BasicSeparatorUI
-javax/swing/plaf/SeparatorUI
-javax/swing/JComboBox
-javax/swing/event/ListDataListener
-javax/swing/event/CaretEvent
-javax/swing/text/TabExpander
-javax/swing/JScrollBar
-java/awt/Adjustable
-javax/swing/event/MouseInputAdapter
-javax/swing/JScrollBar$ModelListener
-javax/swing/DefaultBoundedRangeModel
-javax/swing/BoundedRangeModel
-javax/swing/plaf/metal/MetalScrollBarUI
-javax/swing/plaf/basic/BasicScrollBarUI
-javax/swing/plaf/ScrollBarUI
-javax/swing/plaf/metal/MetalBumps
-javax/swing/plaf/metal/MetalScrollButton
-javax/swing/plaf/basic/BasicArrowButton
-javax/swing/plaf/basic/BasicScrollBarUI$TrackListener
-javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener
-javax/swing/plaf/basic/BasicScrollBarUI$ModelListener
-javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener
-javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler
-javax/swing/plaf/basic/BasicScrollBarUI$Handler
-javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener
-javax/swing/CellRendererPane
-java/util/HashMap$EntryIterator
-javax/swing/border/MatteBorder
-sun/font/StandardGlyphVector
-java/awt/font/GlyphVector
-sun/font/StandardGlyphVector$GlyphStrike
-sun/font/CoreMetrics
-sun/font/FontLineMetrics
-java/awt/font/LineMetrics
-javax/swing/ComboBoxModel
-javax/swing/ListModel
-javax/swing/ListCellRenderer
-javax/swing/DefaultComboBoxModel
-javax/swing/MutableComboBoxModel
-javax/swing/AbstractListModel
-javax/swing/JComboBox$1
-javax/swing/AncestorNotifier
-javax/swing/plaf/metal/MetalComboBoxUI
-javax/swing/plaf/basic/BasicComboBoxUI
-javax/swing/plaf/ComboBoxUI
-javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager
-javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
-javax/swing/plaf/basic/BasicComboPopup
-javax/swing/plaf/basic/ComboPopup
-javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
-javax/swing/border/LineBorder
-javax/swing/plaf/basic/BasicComboPopup$1
-javax/swing/JList
-javax/swing/DropMode
-javax/swing/DefaultListSelectionModel
-javax/swing/ListSelectionModel
-javax/swing/plaf/basic/BasicListUI
-javax/swing/plaf/ListUI
-javax/swing/plaf/basic/BasicListUI$ListTransferHandler
-javax/swing/TransferHandler
-javax/swing/TransferHandler$TransferAction
-javax/swing/DefaultListCellRenderer$UIResource
-javax/swing/DefaultListCellRenderer
-javax/swing/TransferHandler$SwingDropTarget
-java/awt/dnd/DropTargetContext
-javax/swing/TransferHandler$DropHandler
-javax/swing/TransferHandler$TransferSupport
-javax/swing/plaf/basic/BasicListUI$Handler
-javax/swing/event/ListSelectionListener
-javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
-javax/swing/plaf/basic/BasicComboPopup$Handler
-javax/swing/JScrollPane
-javax/swing/ScrollPaneConstants
-javax/swing/ScrollPaneLayout$UIResource
-javax/swing/ScrollPaneLayout
-javax/swing/JViewport
-javax/swing/ViewportLayout
-javax/swing/plaf/basic/BasicViewportUI
-javax/swing/plaf/ViewportUI
-javax/swing/JScrollPane$ScrollBar
-javax/swing/JViewport$ViewListener
-java/awt/event/ComponentAdapter
-javax/swing/plaf/metal/MetalScrollPaneUI
-javax/swing/plaf/basic/BasicScrollPaneUI
-javax/swing/plaf/ScrollPaneUI
-javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder
-javax/swing/plaf/basic/BasicScrollPaneUI$Handler
-javax/swing/plaf/metal/MetalScrollPaneUI$1
-javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource
-javax/swing/plaf/basic/BasicComboBoxRenderer
-javax/swing/plaf/metal/MetalComboBoxEditor$UIResource
-javax/swing/plaf/metal/MetalComboBoxEditor
-javax/swing/plaf/basic/BasicComboBoxEditor
-javax/swing/ComboBoxEditor
-javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
-javax/swing/JTextField$NotifyAction
-javax/swing/text/TextAction
-javax/swing/AbstractAction
-javax/swing/text/JTextComponent$MutableCaretEvent
-javax/swing/plaf/metal/MetalTextFieldUI
+javax/swing/plaf/basic/BasicTextAreaUI
javax/swing/plaf/basic/BasicTextFieldUI
javax/swing/plaf/basic/BasicTextUI
-javax/swing/text/ViewFactory
-javax/swing/plaf/TextUI
javax/swing/plaf/basic/BasicTextUI$BasicCursor
+javax/swing/plaf/basic/BasicTextUI$DragListener
+javax/swing/plaf/basic/BasicTextUI$FocusAction
+javax/swing/plaf/basic/BasicTextUI$RootView
+javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
+javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
+javax/swing/plaf/basic/BasicTextUI$TextTransferHandler$TextTransferable
+javax/swing/plaf/basic/BasicTextUI$UpdateHandler
+javax/swing/plaf/basic/BasicToolBarSeparatorUI
+javax/swing/plaf/basic/BasicToolBarUI
+javax/swing/plaf/basic/BasicToolBarUI$Handler
+javax/swing/plaf/basic/BasicTransferable
+javax/swing/plaf/basic/BasicViewportUI
+javax/swing/plaf/basic/ComboPopup
+javax/swing/plaf/basic/DefaultMenuLayout
+javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
+javax/swing/plaf/basic/LazyActionMap
+javax/swing/plaf/metal/DefaultMetalTheme
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
+javax/swing/plaf/metal/MetalLookAndFeel
+javax/swing/plaf/metal/MetalTheme
+javax/swing/plaf/synth/SynthConstants
+javax/swing/plaf/synth/SynthUI
+javax/swing/text/AbstractDocument
+javax/swing/text/AbstractDocument$1
+javax/swing/text/AbstractDocument$AbstractElement
+javax/swing/text/AbstractDocument$AttributeContext
+javax/swing/text/AbstractDocument$BidiElement
+javax/swing/text/AbstractDocument$BidiRootElement
+javax/swing/text/AbstractDocument$BranchElement
+javax/swing/text/AbstractDocument$Content
+javax/swing/text/AbstractDocument$DefaultDocumentEvent
+javax/swing/text/AbstractDocument$ElementEdit
+javax/swing/text/AbstractDocument$InsertStringResult
+javax/swing/text/AbstractDocument$LeafElement
+javax/swing/text/AttributeSet
+javax/swing/text/AttributeSet$CharacterAttribute
+javax/swing/text/AttributeSet$ColorAttribute
+javax/swing/text/AttributeSet$FontAttribute
+javax/swing/text/AttributeSet$ParagraphAttribute
+javax/swing/text/Caret
+javax/swing/text/DefaultCaret
+javax/swing/text/DefaultCaret$1
+javax/swing/text/DefaultCaret$Handler
javax/swing/text/DefaultEditorKit
-javax/swing/text/EditorKit
-javax/swing/text/DefaultEditorKit$InsertContentAction
-javax/swing/text/DefaultEditorKit$DeletePrevCharAction
+javax/swing/text/DefaultEditorKit$BeepAction
+javax/swing/text/DefaultEditorKit$BeginAction
+javax/swing/text/DefaultEditorKit$BeginLineAction
+javax/swing/text/DefaultEditorKit$BeginParagraphAction
+javax/swing/text/DefaultEditorKit$BeginWordAction
+javax/swing/text/DefaultEditorKit$CopyAction
+javax/swing/text/DefaultEditorKit$CutAction
+javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
javax/swing/text/DefaultEditorKit$DeleteNextCharAction
-javax/swing/text/DefaultEditorKit$ReadOnlyAction
+javax/swing/text/DefaultEditorKit$DeletePrevCharAction
javax/swing/text/DefaultEditorKit$DeleteWordAction
-javax/swing/text/DefaultEditorKit$WritableAction
-javax/swing/text/DefaultEditorKit$CutAction
-javax/swing/text/DefaultEditorKit$CopyAction
-javax/swing/text/DefaultEditorKit$PasteAction
-javax/swing/text/DefaultEditorKit$VerticalPageAction
+javax/swing/text/DefaultEditorKit$DumpModelAction
+javax/swing/text/DefaultEditorKit$EndAction
+javax/swing/text/DefaultEditorKit$EndLineAction
+javax/swing/text/DefaultEditorKit$EndParagraphAction
+javax/swing/text/DefaultEditorKit$EndWordAction
+javax/swing/text/DefaultEditorKit$InsertBreakAction
+javax/swing/text/DefaultEditorKit$InsertContentAction
+javax/swing/text/DefaultEditorKit$InsertTabAction
+javax/swing/text/DefaultEditorKit$NextVisualPositionAction
+javax/swing/text/DefaultEditorKit$NextWordAction
javax/swing/text/DefaultEditorKit$PageAction
-javax/swing/text/DefaultEditorKit$InsertBreakAction
-javax/swing/text/DefaultEditorKit$BeepAction
-javax/swing/text/DefaultEditorKit$NextVisualPositionAction
-javax/swing/text/DefaultEditorKit$BeginWordAction
-javax/swing/text/DefaultEditorKit$EndWordAction
+javax/swing/text/DefaultEditorKit$PasteAction
javax/swing/text/DefaultEditorKit$PreviousWordAction
-javax/swing/text/DefaultEditorKit$NextWordAction
-javax/swing/text/DefaultEditorKit$BeginLineAction
-javax/swing/text/DefaultEditorKit$EndLineAction
-javax/swing/text/DefaultEditorKit$BeginParagraphAction
-javax/swing/text/DefaultEditorKit$EndParagraphAction
-javax/swing/text/DefaultEditorKit$BeginAction
-javax/swing/text/DefaultEditorKit$EndAction
-javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
-javax/swing/text/DefaultEditorKit$InsertTabAction
-javax/swing/text/DefaultEditorKit$SelectWordAction
+javax/swing/text/DefaultEditorKit$ReadOnlyAction
+javax/swing/text/DefaultEditorKit$SelectAllAction
javax/swing/text/DefaultEditorKit$SelectLineAction
javax/swing/text/DefaultEditorKit$SelectParagraphAction
-javax/swing/text/DefaultEditorKit$SelectAllAction
-javax/swing/text/DefaultEditorKit$UnselectAction
+javax/swing/text/DefaultEditorKit$SelectWordAction
javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction
-javax/swing/text/DefaultEditorKit$DumpModelAction
-javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
-javax/swing/text/Position$Bias
-javax/swing/plaf/basic/BasicTextUI$RootView
-javax/swing/text/View
-javax/swing/plaf/basic/BasicTextUI$UpdateHandler
-javax/swing/event/DocumentListener
-javax/swing/plaf/basic/BasicTextUI$DragListener
-javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
-javax/swing/plaf/basic/BasicTextUI$BasicCaret
-javax/swing/text/DefaultCaret
-javax/swing/text/Caret
-javax/swing/text/DefaultCaret$Handler
-java/awt/datatransfer/ClipboardOwner
-javax/swing/plaf/basic/BasicTextUI$BasicHighlighter
+javax/swing/text/DefaultEditorKit$UnselectAction
+javax/swing/text/DefaultEditorKit$VerticalPageAction
+javax/swing/text/DefaultEditorKit$WritableAction
javax/swing/text/DefaultHighlighter
-javax/swing/text/LayeredHighlighter
+javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
+javax/swing/text/DefaultHighlighter$HighlightInfo
+javax/swing/text/DefaultHighlighter$LayeredHighlightInfo
+javax/swing/text/DefaultHighlighter$SafeDamager
+javax/swing/text/Document
+javax/swing/text/EditorKit
+javax/swing/text/Element
+javax/swing/text/FieldView
+javax/swing/text/GapContent
+javax/swing/text/GapContent$InsertUndo
+javax/swing/text/GapContent$MarkData
+javax/swing/text/GapContent$MarkVector
+javax/swing/text/GapContent$StickyPosition
+javax/swing/text/GapVector
javax/swing/text/Highlighter
javax/swing/text/Highlighter$Highlight
-javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
-javax/swing/text/LayeredHighlighter$LayerPainter
javax/swing/text/Highlighter$HighlightPainter
-javax/swing/text/DefaultHighlighter$SafeDamager
-javax/swing/text/FieldView
-javax/swing/text/PlainView
+javax/swing/text/JTextComponent
+javax/swing/text/JTextComponent$1
javax/swing/text/JTextComponent$DefaultKeymap
-javax/swing/text/Keymap
-javax/swing/text/JTextComponent$KeymapWrapper
javax/swing/text/JTextComponent$KeymapActionMap
-javax/swing/plaf/basic/BasicTextUI$FocusAction
-javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
-javax/swing/JTextArea
-javax/swing/JEditorPane
-javax/swing/JTextField$ScrollRepainter
-javax/swing/plaf/metal/MetalComboBoxEditor$1
-javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder
-javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener
-javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler
-javax/swing/plaf/basic/BasicComboBoxUI$Handler
-javax/swing/plaf/metal/MetalComboBoxButton
-javax/swing/plaf/metal/MetalComboBoxIcon
-javax/swing/plaf/metal/MetalComboBoxButton$1
-javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
-javax/swing/JComboBox$KeySelectionManager
-javax/swing/JToolBar$DefaultToolBarLayout
-javax/swing/plaf/metal/MetalToolBarUI
-javax/swing/plaf/basic/BasicToolBarUI
-javax/swing/plaf/ToolBarUI
-javax/swing/plaf/metal/MetalBorders$ToolBarBorder
-javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
-javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder
-javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder
-javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
-javax/swing/plaf/basic/BasicBorders$ButtonBorder
-javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
-javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener
-javax/swing/plaf/basic/BasicToolBarUI$DockingListener
-javax/swing/plaf/basic/BasicToolBarUI$Handler
-javax/swing/border/EtchedBorder
-javax/swing/JToolBar$Separator
-javax/swing/plaf/basic/BasicToolBarSeparatorUI
-sun/awt/color/CMM
-java/applet/Applet
-java/awt/Panel
-com/sun/awt/AWTUtilities
-javax/swing/KeyboardManager$ComponentKeyStrokePair
+javax/swing/text/JTextComponent$KeymapWrapper
+javax/swing/text/JTextComponent$MutableCaretEvent
+javax/swing/text/Keymap
+javax/swing/text/LayeredHighlighter
+javax/swing/text/LayeredHighlighter$LayerPainter
+javax/swing/text/MutableAttributeSet
+javax/swing/text/PlainDocument
+javax/swing/text/PlainView
+javax/swing/text/Position
+javax/swing/text/Position$Bias
+javax/swing/text/Segment
+javax/swing/text/SegmentCache
+javax/swing/text/SegmentCache$CachedSegment
+javax/swing/text/SimpleAttributeSet
+javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
+javax/swing/text/Style
+javax/swing/text/StyleConstants
+javax/swing/text/StyleConstants$CharacterConstants
+javax/swing/text/StyleConstants$ColorConstants
+javax/swing/text/StyleConstants$FontConstants
+javax/swing/text/StyleConstants$ParagraphConstants
+javax/swing/text/StyleContext
+javax/swing/text/StyleContext$FontKey
+javax/swing/text/StyleContext$KeyEnumeration
+javax/swing/text/StyleContext$NamedStyle
+javax/swing/text/StyleContext$SmallAttributeSet
+javax/swing/text/TabExpander
+javax/swing/text/TextAction
+javax/swing/text/Utilities
+javax/swing/text/View
+javax/swing/text/ViewFactory
+javax/swing/tree/TreeNode
+javax/swing/undo/AbstractUndoableEdit
+javax/swing/undo/CompoundEdit
+javax/swing/undo/UndoableEdit
+sun/awt/AWTAccessor
+sun/awt/AWTAccessor$AWTEventAccessor
+sun/awt/AWTAccessor$ClientPropertyKeyAccessor
+sun/awt/AWTAccessor$ComponentAccessor
+sun/awt/AWTAccessor$ContainerAccessor
+sun/awt/AWTAccessor$CursorAccessor
+sun/awt/AWTAccessor$DefaultKeyboardFocusManagerAccessor
+sun/awt/AWTAccessor$EventQueueAccessor
+sun/awt/AWTAccessor$FrameAccessor
+sun/awt/AWTAccessor$InputEventAccessor
+sun/awt/AWTAccessor$KeyEventAccessor
+sun/awt/AWTAccessor$KeyboardFocusManagerAccessor
+sun/awt/AWTAccessor$ToolkitAccessor
+sun/awt/AWTAccessor$WindowAccessor
+sun/awt/AWTAutoShutdown
+sun/awt/AppContext
+sun/awt/AppContext$1
+sun/awt/AppContext$2
+sun/awt/AppContext$3
+sun/awt/AppContext$6
+sun/awt/AppContext$State
+sun/awt/CGraphicsConfig
+sun/awt/CGraphicsDevice
+sun/awt/CGraphicsEnvironment
+sun/awt/CGraphicsEnvironment$1
+sun/awt/CGraphicsEnvironment$2
+sun/awt/CausedFocusEvent
+sun/awt/CausedFocusEvent$Cause
+sun/awt/ComponentFactory
+sun/awt/ConstrainableGraphics
+sun/awt/DisplayChangedListener
sun/awt/EmbeddedFrame
-sun/awt/im/InputMethodContext
-java/awt/im/spi/InputMethodContext
-sun/awt/im/InputContext
-sun/awt/im/InputMethodManager
-sun/awt/im/ExecutableInputMethodManager
-sun/awt/X11/XInputMethodDescriptor
-sun/awt/X11InputMethodDescriptor
-java/awt/im/spi/InputMethodDescriptor
-sun/awt/im/InputMethodLocator
-sun/awt/im/ExecutableInputMethodManager$2
-sun/misc/Service
-sun/misc/Service$LazyIterator
-java/util/TreeSet
-java/util/NavigableSet
-java/util/SortedSet
-javax/swing/SizeRequirements
-javax/swing/plaf/basic/BasicGraphicsUtils
-java/awt/event/AdjustmentEvent
-java/awt/MenuBar
-sun/awt/X11/XComponentPeer$2
-java/awt/SequencedEvent
-java/beans/PropertyVetoException
-java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
-java/awt/KeyboardFocusManager$HeavyweightFocusRequest
-java/awt/KeyboardFocusManager$LightweightFocusRequest
+sun/awt/EventQueueDelegate
+sun/awt/EventQueueItem
+sun/awt/FontConfiguration
+sun/awt/FontDescriptor
+sun/awt/FullScreenCapable
+sun/awt/HeadlessToolkit
+sun/awt/InputMethodSupport
sun/awt/KeyboardFocusManagerPeerImpl
-sun/awt/SunToolkit$7
-java/awt/Window$1DisposeAction
-java/awt/LightweightDispatcher$2
-sun/awt/X11/XReparentEvent
-sun/awt/X11/XWindowAttributes
-javax/swing/SystemEventQueueUtilities$ComponentWorkRequest
-sun/awt/X11/XFocusChangeEvent
-sun/awt/X11/XComponentPeer$1
-sun/awt/X11/XUnmapEvent
-java/io/StringWriter
-javax/swing/JWindow
-java/io/UnsupportedEncodingException
-java/net/UnknownHostException
-java/nio/channels/SocketChannel
-java/nio/channels/spi/AbstractSelectableChannel
-java/nio/channels/SelectableChannel
-java/net/SocketImplFactory
-javax/swing/UnsupportedLookAndFeelException
-java/lang/UnsatisfiedLinkError
-javax/swing/Box$Filler
-javax/swing/JComponent$2
-sun/net/www/MimeTable
-java/net/FileNameMap
-sun/net/www/MimeTable$1
-sun/net/www/MimeTable$2
-sun/net/www/MimeEntry
-java/net/URLConnection$1
-java/text/SimpleDateFormat
-java/text/DateFormat
-java/text/DateFormat$Field
-java/util/Calendar
-java/util/GregorianCalendar
-sun/util/resources/CalendarData
-sun/util/resources/CalendarData_en
-java/text/DateFormatSymbols
-java/text/spi/DateFormatSymbolsProvider
-java/text/DontCareFieldPosition
-java/text/DontCareFieldPosition$1
-java/text/Format$FieldDelegate
-javax/swing/plaf/BorderUIResource
-javax/swing/BorderFactory
-javax/swing/border/BevelBorder
-javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon
-javax/swing/plaf/metal/MetalIconFactory$FolderIcon16
-java/util/zip/ZipInputStream
-java/io/PushbackInputStream
-java/util/zip/CRC32
-java/util/zip/Checksum
-java/lang/Thread$State
-javax/swing/SwingUtilities$SharedOwnerFrame
-javax/swing/JTable
-javax/swing/event/TableModelListener
-javax/swing/event/TableColumnModelListener
-javax/swing/event/CellEditorListener
-javax/swing/event/RowSorterListener
-javax/swing/BufferStrategyPaintManager$BufferInfo
-java/awt/Component$BltSubRegionBufferStrategy
-sun/awt/SubRegionShowable
-java/awt/Component$BltBufferStrategy
-sun/awt/image/SunVolatileImage
-sun/awt/image/BufferedImageGraphicsConfig
-sun/print/PrinterGraphicsConfig
-sun/java2d/x11/X11VolatileSurfaceManager
-sun/awt/image/VolatileSurfaceManager
-java/awt/print/PrinterGraphics
-java/awt/PrintGraphics
-java/awt/GraphicsCallback$PaintCallback
-java/awt/GraphicsCallback
+sun/awt/KeyboardFocusManagerPeerProvider
+sun/awt/LightweightFrame
+sun/awt/ModalExclude
+sun/awt/ModalityEvent
+sun/awt/ModalityListener
+sun/awt/MostRecentKeyValue
+sun/awt/Mutex
+sun/awt/NullComponentPeer
+sun/awt/OSInfo
+sun/awt/OSInfo$1
+sun/awt/OSInfo$OSType
+sun/awt/OSInfo$WindowsVersion
+sun/awt/PaintEventDispatcher
+sun/awt/PeerEvent
+sun/awt/PostEventQueue
+sun/awt/RepaintArea
+sun/awt/RequestFocusController
+sun/awt/SunDisplayChanger
sun/awt/SunGraphicsCallback
-javax/swing/JRadioButton
-java/lang/ClassFormatError
-javax/swing/JTabbedPane
-javax/swing/JTabbedPane$ModelListener
-javax/swing/plaf/metal/MetalTabbedPaneUI
-javax/swing/plaf/basic/BasicTabbedPaneUI
-javax/swing/plaf/TabbedPaneUI
-javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout
-javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout
-javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout
-javax/swing/plaf/basic/BasicTabbedPaneUI$Handler
-sun/swing/ImageIconUIResource
-javax/swing/GrayFilter
-java/awt/image/RGBImageFilter
-java/awt/image/ImageFilter
-java/awt/image/FilteredImageSource
-org/w3c/dom/Node
-org/xml/sax/SAXException
-javax/xml/parsers/ParserConfigurationException
-org/xml/sax/EntityResolver
-java/security/NoSuchAlgorithmException
-java/security/GeneralSecurityException
-java/util/zip/GZIPInputStream
-java/util/zip/DeflaterOutputStream
-org/xml/sax/InputSource
-javax/xml/parsers/DocumentBuilderFactory
-javax/xml/parsers/FactoryFinder
-javax/xml/parsers/SecuritySupport
-javax/xml/parsers/SecuritySupport$2
-javax/xml/parsers/SecuritySupport$5
-javax/xml/parsers/SecuritySupport$1
-javax/xml/parsers/SecuritySupport$4
-javax/xml/parsers/DocumentBuilder
-org/w3c/dom/Document
-org/xml/sax/helpers/DefaultHandler
-org/xml/sax/DTDHandler
-org/xml/sax/ContentHandler
-org/xml/sax/ErrorHandler
-org/xml/sax/SAXNotSupportedException
-org/xml/sax/Locator
-org/xml/sax/SAXNotRecognizedException
-org/xml/sax/SAXParseException
-org/w3c/dom/NodeList
-org/w3c/dom/events/EventTarget
-org/w3c/dom/traversal/DocumentTraversal
-org/w3c/dom/events/DocumentEvent
-org/w3c/dom/ranges/DocumentRange
-org/w3c/dom/Entity
-org/w3c/dom/Element
-org/w3c/dom/CharacterData
-org/w3c/dom/CDATASection
-org/w3c/dom/Text
-org/xml/sax/AttributeList
-org/w3c/dom/DOMException
-org/w3c/dom/Notation
-org/w3c/dom/DocumentType
-org/w3c/dom/Attr
-org/w3c/dom/EntityReference
-org/w3c/dom/ProcessingInstruction
-org/w3c/dom/Comment
-org/w3c/dom/DocumentFragment
-org/w3c/dom/events/Event
-org/w3c/dom/events/MutationEvent
-org/w3c/dom/traversal/TreeWalker
-org/w3c/dom/ranges/Range
-org/w3c/dom/traversal/NodeIterator
-org/w3c/dom/events/EventException
-org/w3c/dom/NamedNodeMap
-java/lang/StringIndexOutOfBoundsException
-java/awt/GridLayout
-javax/swing/plaf/metal/MetalRadioButtonUI
-javax/swing/plaf/basic/BasicRadioButtonUI
-javax/swing/plaf/basic/BasicBorders
-javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon
-java/awt/event/ItemEvent
-java/awt/CardLayout$Card
-javax/swing/JCheckBox
-javax/swing/event/ListSelectionEvent
-javax/swing/plaf/metal/MetalCheckBoxUI
-javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon
-java/lang/ExceptionInInitializerError
-com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
-javax/swing/JProgressBar
-javax/swing/JProgressBar$ModelListener
-javax/swing/plaf/metal/MetalProgressBarUI
-javax/swing/plaf/basic/BasicProgressBarUI
-javax/swing/plaf/ProgressBarUI
-javax/swing/plaf/BorderUIResource$LineBorderUIResource
-javax/swing/plaf/basic/BasicProgressBarUI$Handler
-javax/swing/tree/TreeModel
-javax/swing/table/TableCellRenderer
-javax/swing/table/JTableHeader
-javax/swing/event/TreeExpansionListener
-javax/swing/table/AbstractTableModel
-javax/swing/table/TableModel
-javax/swing/table/DefaultTableCellRenderer
-javax/swing/JTree
-javax/swing/tree/TreeSelectionModel
-javax/swing/tree/DefaultTreeCellRenderer
-javax/swing/tree/TreeCellRenderer
-javax/swing/table/TableCellEditor
-javax/swing/CellEditor
-javax/swing/JToolTip
-javax/swing/table/TableColumn
-javax/swing/table/DefaultTableColumnModel
-javax/swing/table/TableColumnModel
-javax/swing/table/DefaultTableModel
-javax/swing/event/TableModelEvent
-sun/swing/table/DefaultTableCellHeaderRenderer
-javax/swing/plaf/basic/BasicTableHeaderUI
-javax/swing/plaf/TableHeaderUI
-javax/swing/plaf/basic/BasicTableHeaderUI$1
-javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler
-javax/swing/DefaultCellEditor
-javax/swing/tree/TreeCellEditor
-javax/swing/AbstractCellEditor
-javax/swing/plaf/basic/BasicTableUI
-javax/swing/plaf/TableUI
-javax/swing/plaf/basic/BasicTableUI$TableTransferHandler
-javax/swing/plaf/basic/BasicTableUI$Handler
-javax/swing/tree/DefaultTreeSelectionModel
-javax/swing/tree/TreePath
-javax/swing/plaf/metal/MetalTreeUI
-javax/swing/plaf/basic/BasicTreeUI
-javax/swing/plaf/TreeUI
-javax/swing/plaf/basic/BasicTreeUI$Actions
-javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler
-javax/swing/plaf/metal/MetalTreeUI$LineListener
-javax/swing/plaf/basic/BasicTreeUI$Handler
-javax/swing/event/TreeModelListener
-javax/swing/event/TreeSelectionListener
-javax/swing/event/SwingPropertyChangeSupport
-javax/swing/tree/VariableHeightLayoutCache
-javax/swing/tree/AbstractLayoutCache
-javax/swing/tree/RowMapper
-javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler
-javax/swing/tree/AbstractLayoutCache$NodeDimensions
-javax/swing/JTree$TreeModelHandler
-javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
-javax/swing/tree/DefaultMutableTreeNode
-javax/swing/tree/MutableTreeNode
-javax/swing/tree/DefaultMutableTreeNode$1
-javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
-javax/swing/event/TableColumnModelEvent
-java/text/ParseException
-java/text/NumberFormat$Field
-javax/swing/event/UndoableEditListener
-javax/swing/filechooser/FileFilter
-javax/swing/tree/DefaultTreeModel
-javax/swing/tree/DefaultTreeCellEditor
-javax/swing/tree/DefaultTreeCellEditor$1
-javax/swing/tree/DefaultTreeCellEditor$DefaultTextField
-javax/swing/DefaultCellEditor$1
-javax/swing/DefaultCellEditor$EditorDelegate
-javax/swing/tree/DefaultTreeCellEditor$EditorContainer
-javax/swing/JTree$TreeSelectionRedirector
-javax/swing/event/TreeModelEvent
-javax/swing/plaf/metal/MetalSplitPaneUI
-javax/swing/plaf/basic/BasicSplitPaneUI
-javax/swing/plaf/SplitPaneUI
-javax/swing/plaf/basic/BasicSplitPaneDivider
-javax/swing/plaf/basic/BasicBorders$SplitPaneBorder
-javax/swing/plaf/metal/MetalSplitPaneDivider
-javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout
-javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler
-javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder
-javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager
-javax/swing/plaf/basic/BasicSplitPaneUI$1
-javax/swing/plaf/basic/BasicSplitPaneUI$Handler
-javax/swing/plaf/metal/MetalSplitPaneDivider$1
-javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler
-javax/swing/plaf/metal/MetalSplitPaneDivider$2
-javax/swing/border/TitledBorder
-javax/swing/plaf/basic/BasicTextAreaUI
-java/util/Collections$UnmodifiableCollection$1
-java/io/InterruptedIOException
-java/net/NoRouteToHostException
-java/net/BindException
-javax/swing/tree/PathPlaceHolder
-javax/swing/event/TreeSelectionEvent
-javax/swing/JList$3
-javax/swing/JList$ListSelectionHandler
-javax/swing/JSlider
-javax/swing/JSlider$ModelListener
-javax/swing/plaf/metal/MetalSliderUI
-javax/swing/plaf/basic/BasicSliderUI
-javax/swing/plaf/SliderUI
-javax/swing/plaf/basic/BasicSliderUI$Actions
-javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon
-javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon
-javax/swing/plaf/basic/BasicSliderUI$TrackListener
-javax/swing/plaf/basic/BasicSliderUI$Handler
-javax/swing/plaf/basic/BasicSliderUI$ScrollListener
-javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
-javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
-sun/java2d/HeadlessGraphicsEnvironment
-java/util/Hashtable$KeySet
-java/awt/FontFormatException
-sun/java2d/SunGraphicsEnvironment$2
-sun/font/Type1Font$1
-java/nio/channels/FileChannel$MapMode
-sun/nio/ch/FileChannelImpl$Unmapper
-sun/nio/ch/Util$3
-java/nio/DirectByteBufferR
-java/nio/charset/Charset$3
-sun/nio/cs/ext/ExtendedCharsets
-sun/nio/cs/AbstractCharsetProvider
-sun/nio/cs/ext/SJIS
-sun/nio/cs/ext/SJIS$Decoder
-sun/nio/cs/ext/DelegatableDecoder
-sun/nio/cs/ext/JIS_X_0208_Decoder
-sun/nio/cs/ext/DoubleByteDecoder
-sun/nio/cs/ext/JIS_X_0201$Decoder
-sun/nio/cs/SingleByteDecoder
-java/lang/CharacterData00
-javax/swing/DefaultListModel
-javax/swing/event/ListDataEvent
-javax/sound/sampled/DataLine
-javax/sound/sampled/Line
-javax/sound/sampled/Line$Info
-javax/sound/sampled/DataLine$Info
-javax/sound/sampled/Control$Type
-javax/sound/sampled/FloatControl$Type
-javax/sound/sampled/LineUnavailableException
-javax/sound/sampled/UnsupportedAudioFileException
-javax/swing/JRadioButtonMenuItem
-javax/swing/JMenuItem$AccessibleJMenuItem
-javax/swing/AbstractButton$AccessibleAbstractButton
-javax/accessibility/AccessibleAction
-javax/accessibility/AccessibleValue
-javax/accessibility/AccessibleText
-javax/accessibility/AccessibleExtendedComponent
-javax/accessibility/AccessibleComponent
-javax/swing/JComponent$AccessibleJComponent
-java/awt/Container$AccessibleAWTContainer
-java/awt/Component$AccessibleAWTComponent
-javax/accessibility/AccessibleRelationSet
-javax/accessibility/AccessibleState
-javax/accessibility/AccessibleBundle
-javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
-javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon
-javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem
-javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
-javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon
-sun/awt/image/ImageDecoder$1
-javax/swing/JTabbedPane$Page
-java/net/DatagramSocket
-java/net/MulticastSocket
-java/net/DatagramPacket
-sun/net/InetAddressCachePolicy
-sun/net/InetAddressCachePolicy$1
-sun/net/InetAddressCachePolicy$2
-java/net/InetAddress$CacheEntry
-java/net/PlainDatagramSocketImpl
-java/net/DatagramSocketImpl
-java/net/NetworkInterface
-java/net/InterfaceAddress
-java/text/Collator
-java/text/spi/CollatorProvider
-sun/text/resources/CollationData
-sun/text/resources/CollationData_en
-sun/util/EmptyListResourceBundle
-java/text/RuleBasedCollator
-java/text/CollationRules
-java/text/RBCollationTables
-java/text/RBTableBuilder
-java/text/RBCollationTables$BuildAPI
-sun/text/IntHashtable
-sun/text/UCompactIntArray
-sun/text/normalizer/NormalizerImpl
-sun/text/normalizer/ICUData
-sun/text/normalizer/NormalizerDataReader
-sun/text/normalizer/ICUBinary$Authenticate
-sun/text/normalizer/ICUBinary
-sun/text/normalizer/NormalizerImpl$FCDTrieImpl
-sun/text/normalizer/Trie$DataManipulate
-sun/text/normalizer/NormalizerImpl$NormTrieImpl
-sun/text/normalizer/NormalizerImpl$AuxTrieImpl
-sun/text/normalizer/IntTrie
-sun/text/normalizer/Trie
-sun/text/normalizer/CharTrie
-sun/text/normalizer/CharTrie$FriendAgent
-sun/text/normalizer/UnicodeSet
-sun/text/normalizer/UnicodeMatcher
-sun/text/normalizer/NormalizerImpl$DecomposeArgs
-java/text/MergeCollation
-java/text/PatternEntry$Parser
-java/text/PatternEntry
-java/text/EntryPair
-sun/text/ComposedCharIter
-sun/text/normalizer/UTF16
-sun/net/www/protocol/http/Handler
-java/io/ObjectInputStream$BlockDataInputStream
-java/io/ObjectInputStream$PeekInputStream
-java/io/ObjectInputStream$HandleTable
-java/io/ObjectInputStream$ValidationList
-java/io/Bits
-java/io/ObjectStreamClass$Caches
-java/io/ObjectStreamClass$WeakClassKey
-java/io/ObjectStreamClass$EntryFuture
-java/io/ObjectStreamClass$2
+sun/awt/SunHints
+sun/awt/SunHints$Key
+sun/awt/SunHints$LCDContrastKey
+sun/awt/SunHints$Value
+sun/awt/SunToolkit
+sun/awt/SunToolkit$1
+sun/awt/SunToolkit$ModalityListenerList
+sun/awt/TimedWindowEvent
+sun/awt/WindowClosingListener
+sun/awt/WindowClosingSupport
+sun/awt/datatransfer/DataTransferer
+sun/awt/datatransfer/DataTransferer$1
+sun/awt/datatransfer/DataTransferer$CharsetComparator
+sun/awt/datatransfer/DataTransferer$IndexOrderComparator
+sun/awt/datatransfer/DataTransferer$IndexedComparator
+sun/awt/datatransfer/DataTransferer$RMI
+sun/awt/datatransfer/DataTransferer$StandardEncodingsHolder
+sun/awt/datatransfer/SunClipboard
+sun/awt/datatransfer/ToolkitThreadBlockedHandler
+sun/awt/datatransfer/TransferableProxy
+sun/awt/dnd/SunDragSourceContextPeer
+sun/awt/dnd/SunDropTargetEvent
+sun/awt/event/IgnorePaintEvent
+sun/awt/im/CompositionAreaHandler
+sun/awt/im/ExecutableInputMethodManager
+sun/awt/im/ExecutableInputMethodManager$3
+sun/awt/im/InputContext
+sun/awt/im/InputMethodAdapter
+sun/awt/im/InputMethodContext
+sun/awt/im/InputMethodLocator
+sun/awt/im/InputMethodManager
+sun/awt/im/InputMethodWindow
+sun/awt/image/BufImgSurfaceData
+sun/awt/image/BufImgSurfaceData$ICMColorData
+sun/awt/image/BufImgSurfaceManager
+sun/awt/image/BufferedImageGraphicsConfig
+sun/awt/image/ByteComponentRaster
+sun/awt/image/ByteInterleavedRaster
+sun/awt/image/BytePackedRaster
+sun/awt/image/FetcherInfo
+sun/awt/image/GifFrame
+sun/awt/image/GifImageDecoder
+sun/awt/image/ImageConsumerQueue
+sun/awt/image/ImageDecoder
+sun/awt/image/ImageFetchable
+sun/awt/image/ImageFetcher
+sun/awt/image/ImageFetcher$1
+sun/awt/image/ImageRepresentation
+sun/awt/image/ImageWatched
+sun/awt/image/ImageWatched$Link
+sun/awt/image/ImageWatched$WeakLink
+sun/awt/image/InputStreamImageSource
+sun/awt/image/IntegerComponentRaster
+sun/awt/image/IntegerInterleavedRaster
+sun/awt/image/NativeLibLoader
+sun/awt/image/NativeLibLoader$1
+sun/awt/image/OffScreenImage
+sun/awt/image/OffScreenImageSource
+sun/awt/image/PNGFilterInputStream
+sun/awt/image/PNGImageDecoder
+sun/awt/image/PixelConverter
+sun/awt/image/PixelConverter$Argb
+sun/awt/image/PixelConverter$ArgbBm
+sun/awt/image/PixelConverter$ArgbPre
+sun/awt/image/PixelConverter$Bgrx
+sun/awt/image/PixelConverter$ByteGray
+sun/awt/image/PixelConverter$Rgba
+sun/awt/image/PixelConverter$RgbaPre
+sun/awt/image/PixelConverter$Rgbx
+sun/awt/image/PixelConverter$Ushort4444Argb
+sun/awt/image/PixelConverter$Ushort555Rgb
+sun/awt/image/PixelConverter$Ushort555Rgbx
+sun/awt/image/PixelConverter$Ushort565Rgb
+sun/awt/image/PixelConverter$UshortGray
+sun/awt/image/PixelConverter$Xbgr
+sun/awt/image/PixelConverter$Xrgb
+sun/awt/image/SunVolatileImage
+sun/awt/image/SunWritableRaster
+sun/awt/image/SunWritableRaster$DataStealer
+sun/awt/image/SurfaceManager
+sun/awt/image/SurfaceManager$FlushableCacheData
+sun/awt/image/SurfaceManager$ImageAccessor
+sun/awt/image/SurfaceManager$ProxiedGraphicsConfig
+sun/awt/image/ToolkitImage
+sun/awt/image/URLImageSource
+sun/awt/image/VolatileSurfaceManager
+sun/awt/resources/awt
+sun/awt/resources/awtosx
+sun/awt/util/IdentityArrayList
+sun/awt/util/IdentityLinkedList
+sun/awt/util/IdentityLinkedList$Entry
+sun/awt/util/IdentityLinkedList$ListItr
+sun/dc/DuctusRenderingEngine
+sun/font/AttributeValues
+sun/font/CCharToGlyphMapper
+sun/font/CCharToGlyphMapper$Cache
+sun/font/CFont
+sun/font/CFontConfiguration
+sun/font/CFontManager
+sun/font/CFontManager$4
+sun/font/CStrike
+sun/font/CStrike$GlyphAdvanceCache
+sun/font/CStrike$GlyphInfoCache
+sun/font/CStrikeDisposer
+sun/font/CharToGlyphMapper
+sun/font/CompositeFont
+sun/font/CompositeFontDescriptor
+sun/font/CoreMetrics
+sun/font/EAttribute
+sun/font/FileFont
+sun/font/Font2D
+sun/font/Font2DHandle
+sun/font/FontAccess
+sun/font/FontDesignMetrics
+sun/font/FontDesignMetrics$KeyReference
+sun/font/FontDesignMetrics$MetricsKey
+sun/font/FontFamily
+sun/font/FontLineMetrics
+sun/font/FontManager
+sun/font/FontManagerFactory
+sun/font/FontManagerFactory$1
+sun/font/FontManagerForSGE
+sun/font/FontManagerNativeLibrary
+sun/font/FontManagerNativeLibrary$1
+sun/font/FontStrike
+sun/font/FontStrikeDesc
+sun/font/FontStrikeDisposer
+sun/font/FontUtilities
+sun/font/FontUtilities$1
+sun/font/GlyphList
+sun/font/PhysicalFont
+sun/font/PhysicalStrike
+sun/font/StandardGlyphVector
+sun/font/StandardGlyphVector$GlyphStrike
+sun/font/StrikeCache
+sun/font/StrikeCache$1
+sun/font/StrikeCache$DisposableStrike
+sun/font/StrikeCache$SoftDisposerRef
+sun/font/StrikeMetrics
+sun/font/SunFontManager
+sun/font/SunFontManager$1
+sun/font/SunFontManager$11
+sun/font/SunFontManager$2
+sun/font/SunFontManager$3
+sun/font/SunFontManager$FontRegistrationInfo
+sun/font/SunFontManager$T1Filter
+sun/font/SunFontManager$TTFilter
+sun/font/TrueTypeFont
+sun/font/TrueTypeFont$1
+sun/font/TrueTypeFont$DirectoryEntry
+sun/font/TrueTypeFont$TTDisposerRecord
+sun/font/Type1Font
+sun/java2d/DefaultDisposerRecord
+sun/java2d/DestSurfaceProvider
+sun/java2d/Disposer
+sun/java2d/Disposer$1
+sun/java2d/Disposer$2
+sun/java2d/Disposer$PollDisposable
+sun/java2d/DisposerRecord
+sun/java2d/DisposerTarget
+sun/java2d/FontSupport
+sun/java2d/InvalidPipeException
+sun/java2d/MacosxSurfaceManagerFactory
+sun/java2d/NullSurfaceData
+sun/java2d/StateTrackable
+sun/java2d/StateTrackable$State
+sun/java2d/StateTrackableDelegate
+sun/java2d/StateTrackableDelegate$1
+sun/java2d/StateTrackableDelegate$2
+sun/java2d/StateTracker
+sun/java2d/StateTracker$1
+sun/java2d/StateTracker$2
+sun/java2d/SunGraphics2D
+sun/java2d/SunGraphicsEnvironment
+sun/java2d/SunGraphicsEnvironment$1
+sun/java2d/Surface
+sun/java2d/SurfaceData
+sun/java2d/SurfaceData$PixelToPgramLoopConverter
+sun/java2d/SurfaceData$PixelToShapeLoopConverter
+sun/java2d/SurfaceDataProxy
+sun/java2d/SurfaceDataProxy$1
+sun/java2d/SurfaceManagerFactory
+sun/java2d/cmm/CMSManager
+sun/java2d/cmm/ProfileActivator
+sun/java2d/cmm/ProfileDeferralInfo
+sun/java2d/cmm/ProfileDeferralMgr
+sun/java2d/loops/Blit
+sun/java2d/loops/BlitBg
+sun/java2d/loops/CompositeType
+sun/java2d/loops/CustomComponent
+sun/java2d/loops/DrawGlyphList
+sun/java2d/loops/DrawGlyphListAA
+sun/java2d/loops/DrawGlyphListLCD
+sun/java2d/loops/DrawLine
+sun/java2d/loops/DrawParallelogram
+sun/java2d/loops/DrawPath
+sun/java2d/loops/DrawPolygons
+sun/java2d/loops/DrawRect
+sun/java2d/loops/FillParallelogram
+sun/java2d/loops/FillPath
+sun/java2d/loops/FillRect
+sun/java2d/loops/FillSpans
+sun/java2d/loops/FontInfo
+sun/java2d/loops/GeneralRenderer
+sun/java2d/loops/GraphicsPrimitive
+sun/java2d/loops/GraphicsPrimitiveMgr
+sun/java2d/loops/GraphicsPrimitiveMgr$1
+sun/java2d/loops/GraphicsPrimitiveMgr$2
+sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
+sun/java2d/loops/GraphicsPrimitiveProxy
+sun/java2d/loops/MaskBlit
+sun/java2d/loops/MaskFill
+sun/java2d/loops/ProcessPath$DrawHandler
+sun/java2d/loops/RenderCache
+sun/java2d/loops/RenderCache$Entry
+sun/java2d/loops/RenderLoops
+sun/java2d/loops/ScaledBlit
+sun/java2d/loops/SurfaceType
+sun/java2d/loops/TransformBlit
+sun/java2d/loops/TransformHelper
+sun/java2d/loops/XORComposite
+sun/java2d/opengl/CGLGraphicsConfig
+sun/java2d/opengl/CGLGraphicsConfig$1
+sun/java2d/opengl/CGLGraphicsConfig$CGLGCDisposerRecord
+sun/java2d/opengl/CGLGraphicsConfig$CGLImageCaps
+sun/java2d/opengl/CGLLayer
+sun/java2d/opengl/CGLSurfaceData
+sun/java2d/opengl/CGLSurfaceData$CGLLayerSurfaceData
+sun/java2d/opengl/CGLSurfaceData$CGLOffScreenSurfaceData
+sun/java2d/opengl/CGLVolatileSurfaceManager
+sun/java2d/opengl/OGLAnyCompositeBlit
+sun/java2d/opengl/OGLBlitLoops
+sun/java2d/opengl/OGLContext
+sun/java2d/opengl/OGLContext$OGLContextCaps
+sun/java2d/opengl/OGLDrawImage
+sun/java2d/opengl/OGLGeneralBlit
+sun/java2d/opengl/OGLGraphicsConfig
+sun/java2d/opengl/OGLMaskBlit
+sun/java2d/opengl/OGLMaskFill
+sun/java2d/opengl/OGLRTTSurfaceToSurfaceBlit
+sun/java2d/opengl/OGLRTTSurfaceToSurfaceScale
+sun/java2d/opengl/OGLRTTSurfaceToSurfaceTransform
+sun/java2d/opengl/OGLRenderQueue
+sun/java2d/opengl/OGLRenderQueue$1
+sun/java2d/opengl/OGLRenderQueue$QueueFlusher
+sun/java2d/opengl/OGLRenderer
+sun/java2d/opengl/OGLSurfaceData
+sun/java2d/opengl/OGLSurfaceData$1
+sun/java2d/opengl/OGLSurfaceDataProxy
+sun/java2d/opengl/OGLSurfaceToSurfaceBlit
+sun/java2d/opengl/OGLSurfaceToSurfaceScale
+sun/java2d/opengl/OGLSurfaceToSurfaceTransform
+sun/java2d/opengl/OGLSurfaceToSwBlit
+sun/java2d/opengl/OGLSwToSurfaceBlit
+sun/java2d/opengl/OGLSwToSurfaceScale
+sun/java2d/opengl/OGLSwToSurfaceTransform
+sun/java2d/opengl/OGLSwToTextureBlit
+sun/java2d/opengl/OGLTextRenderer
+sun/java2d/opengl/OGLTextureToSurfaceBlit
+sun/java2d/opengl/OGLTextureToSurfaceScale
+sun/java2d/opengl/OGLTextureToSurfaceTransform
+sun/java2d/pipe/AAShapePipe
+sun/java2d/pipe/AATextRenderer
+sun/java2d/pipe/AlphaColorPipe
+sun/java2d/pipe/AlphaPaintPipe
+sun/java2d/pipe/BufferedContext
+sun/java2d/pipe/BufferedMaskBlit
+sun/java2d/pipe/BufferedMaskFill
+sun/java2d/pipe/BufferedPaints
+sun/java2d/pipe/BufferedRenderPipe
+sun/java2d/pipe/BufferedRenderPipe$AAParallelogramPipe
+sun/java2d/pipe/BufferedRenderPipe$BufferedDrawHandler
+sun/java2d/pipe/BufferedTextPipe
+sun/java2d/pipe/CompositePipe
+sun/java2d/pipe/DrawImage
+sun/java2d/pipe/DrawImagePipe
+sun/java2d/pipe/GeneralCompositePipe
+sun/java2d/pipe/GlyphListLoopPipe
+sun/java2d/pipe/GlyphListPipe
+sun/java2d/pipe/LCDTextRenderer
+sun/java2d/pipe/LoopBasedPipe
+sun/java2d/pipe/LoopPipe
+sun/java2d/pipe/NullPipe
+sun/java2d/pipe/OutlineTextRenderer
+sun/java2d/pipe/ParallelogramPipe
+sun/java2d/pipe/PixelDrawPipe
+sun/java2d/pipe/PixelFillPipe
+sun/java2d/pipe/PixelToParallelogramConverter
+sun/java2d/pipe/PixelToShapeConverter
+sun/java2d/pipe/Region
+sun/java2d/pipe/Region$ImmutableRegion
+sun/java2d/pipe/RegionIterator
+sun/java2d/pipe/RenderBuffer
+sun/java2d/pipe/RenderQueue
+sun/java2d/pipe/RenderingEngine
+sun/java2d/pipe/RenderingEngine$1
+sun/java2d/pipe/ShapeDrawPipe
+sun/java2d/pipe/SolidTextRenderer
+sun/java2d/pipe/SpanClipRenderer
+sun/java2d/pipe/SpanShapeRenderer
+sun/java2d/pipe/SpanShapeRenderer$Composite
+sun/java2d/pipe/TextPipe
+sun/java2d/pipe/TextRenderer
+sun/java2d/pipe/ValidatePipe
+sun/java2d/pipe/hw/AccelGraphicsConfig
+sun/java2d/pipe/hw/AccelSurface
+sun/java2d/pipe/hw/BufferedContextProvider
+sun/java2d/pipe/hw/ContextCapabilities
+sun/launcher/LauncherHelper
+sun/launcher/LauncherHelper$FXHelper
+sun/lwawt/LWCanvasPeer
+sun/lwawt/LWComponentPeer
+sun/lwawt/LWComponentPeer$1
+sun/lwawt/LWComponentPeer$2
+sun/lwawt/LWComponentPeer$3
+sun/lwawt/LWComponentPeer$DelegateContainer
+sun/lwawt/LWContainerPeer
+sun/lwawt/LWCursorManager
+sun/lwawt/LWCursorManager$1
+sun/lwawt/LWGraphicsConfig
+sun/lwawt/LWKeyboardFocusManagerPeer
+sun/lwawt/LWLabelPeer
+sun/lwawt/LWRepaintArea
+sun/lwawt/LWToolkit
+sun/lwawt/LWWindowPeer
+sun/lwawt/LWWindowPeer$PeerType
+sun/lwawt/PlatformComponent
+sun/lwawt/PlatformEventNotifier
+sun/lwawt/PlatformWindow
+sun/lwawt/macosx/CClipboard
+sun/lwawt/macosx/CCursorManager
+sun/lwawt/macosx/CCustomCursor
+sun/lwawt/macosx/CDataTransferer
+sun/lwawt/macosx/CDropTarget
+sun/lwawt/macosx/CFRetainedResource
+sun/lwawt/macosx/CImage
+sun/lwawt/macosx/CImage$Creator
+sun/lwawt/macosx/CInputMethod
+sun/lwawt/macosx/CInputMethodDescriptor
+sun/lwawt/macosx/CPlatformComponent
+sun/lwawt/macosx/CPlatformResponder
+sun/lwawt/macosx/CPlatformView
+sun/lwawt/macosx/CPlatformWindow
+sun/lwawt/macosx/CPlatformWindow$1
+sun/lwawt/macosx/CPlatformWindow$10
+sun/lwawt/macosx/CPlatformWindow$11
+sun/lwawt/macosx/CPlatformWindow$12
+sun/lwawt/macosx/CPlatformWindow$14
+sun/lwawt/macosx/CPlatformWindow$2
+sun/lwawt/macosx/CPlatformWindow$3
+sun/lwawt/macosx/CPlatformWindow$4
+sun/lwawt/macosx/CPlatformWindow$5
+sun/lwawt/macosx/CPlatformWindow$6
+sun/lwawt/macosx/CPlatformWindow$7
+sun/lwawt/macosx/CPlatformWindow$8
+sun/lwawt/macosx/CPlatformWindow$9
+sun/lwawt/macosx/CPrinterDialog
+sun/lwawt/macosx/CThreading
+sun/lwawt/macosx/CToolkitThreadBlockedHandler
+sun/lwawt/macosx/CWrapper$NSWindow
+sun/lwawt/macosx/LWCToolkit
+sun/lwawt/macosx/LWCToolkit$1
+sun/lwawt/macosx/LWCToolkit$2
+sun/lwawt/macosx/LWCToolkit$5
+sun/lwawt/macosx/LWCToolkit$AppleSpecificColor
+sun/lwawt/macosx/NamedCursor
+sun/lwawt/macosx/event/NSEvent
+sun/misc/ASCIICaseInsensitiveComparator
+sun/misc/Cleaner
+sun/misc/CompoundEnumeration
+sun/misc/ExtensionDependency
+sun/misc/FileURLMapper
+sun/misc/FloatingDecimal
+sun/misc/FloatingDecimal$1
+sun/misc/FloatingDecimal$ASCIIToBinaryConverter
+sun/misc/FloatingDecimal$BinaryToASCIIBuffer
+sun/misc/FloatingDecimal$BinaryToASCIIConverter
+sun/misc/FloatingDecimal$ExceptionalBinaryToASCIIBuffer
+sun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer
+sun/misc/IOUtils
+sun/misc/JarIndex
+sun/misc/JavaAWTAccess
+sun/misc/JavaIOFileDescriptorAccess
+sun/misc/JavaLangAccess
+sun/misc/JavaNetAccess
+sun/misc/JavaNioAccess
+sun/misc/JavaSecurityAccess
+sun/misc/JavaSecurityProtectionDomainAccess
+sun/misc/JavaUtilJarAccess
+sun/misc/JavaUtilZipFileAccess
+sun/misc/Launcher
+sun/misc/Launcher$AppClassLoader
+sun/misc/Launcher$AppClassLoader$1
+sun/misc/Launcher$BootClassPathHolder
+sun/misc/Launcher$BootClassPathHolder$1
+sun/misc/Launcher$ExtClassLoader
+sun/misc/Launcher$ExtClassLoader$1
+sun/misc/Launcher$Factory
+sun/misc/MetaIndex
+sun/misc/NativeSignalHandler
+sun/misc/OSEnvironment
+sun/misc/Perf
+sun/misc/Perf$GetPerfAction
+sun/misc/PerfCounter
+sun/misc/PerfCounter$CoreCounters
+sun/misc/PerformanceLogger
+sun/misc/PerformanceLogger$TimeData
+sun/misc/PostVMInitHook
+sun/misc/Resource
+sun/misc/SharedSecrets
+sun/misc/Signal
+sun/misc/SignalHandler
+sun/misc/SoftCache
+sun/misc/SoftCache$ValueCell
+sun/misc/URLClassPath
+sun/misc/URLClassPath$1
+sun/misc/URLClassPath$2
+sun/misc/URLClassPath$3
+sun/misc/URLClassPath$FileLoader
+sun/misc/URLClassPath$JarLoader
+sun/misc/URLClassPath$JarLoader$1
+sun/misc/URLClassPath$JarLoader$2
+sun/misc/URLClassPath$Loader
+sun/misc/Unsafe
+sun/misc/VM
+sun/misc/Version
+sun/net/DefaultProgressMeteringPolicy
+sun/net/NetHooks
+sun/net/NetHooks$Provider
+sun/net/NetProperties
+sun/net/NetProperties$1
+sun/net/ProgressMeteringPolicy
+sun/net/ProgressMonitor
+sun/net/sdp/SdpProvider
+sun/net/spi/DefaultProxySelector
+sun/net/spi/DefaultProxySelector$1
+sun/net/spi/DefaultProxySelector$3
+sun/net/spi/DefaultProxySelector$NonProxyInfo
+sun/net/spi/nameservice/NameService
+sun/net/util/IPAddressUtil
+sun/net/util/URLUtil
+sun/net/www/MessageHeader
+sun/net/www/ParseUtil
+sun/net/www/URLConnection
+sun/net/www/protocol/file/FileURLConnection
+sun/net/www/protocol/file/Handler
+sun/net/www/protocol/jar/Handler
+sun/net/www/protocol/jar/JarFileFactory
+sun/net/www/protocol/jar/JarURLConnection
+sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
+sun/net/www/protocol/jar/URLJarFile
+sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
+sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
+sun/nio/ByteBuffered
+sun/nio/ch/DirectBuffer
+sun/nio/ch/FileChannelImpl
+sun/nio/ch/FileDispatcher
+sun/nio/ch/FileDispatcherImpl
+sun/nio/ch/IOStatus
+sun/nio/ch/IOUtil
+sun/nio/ch/IOUtil$1
+sun/nio/ch/Interruptible
+sun/nio/ch/NativeDispatcher
+sun/nio/ch/NativeThread
+sun/nio/ch/NativeThreadSet
+sun/nio/ch/Util
+sun/nio/ch/Util$1
+sun/nio/ch/Util$BufferCache
+sun/nio/cs/ArrayDecoder
+sun/nio/cs/ArrayEncoder
+sun/nio/cs/FastCharsetProvider
+sun/nio/cs/HistoricallyNamedCharset
+sun/nio/cs/ISO_8859_1
+sun/nio/cs/ISO_8859_1$Decoder
+sun/nio/cs/StandardCharsets
+sun/nio/cs/StandardCharsets$Aliases
+sun/nio/cs/StandardCharsets$Cache
+sun/nio/cs/StandardCharsets$Classes
+sun/nio/cs/StreamDecoder
+sun/nio/cs/StreamEncoder
+sun/nio/cs/US_ASCII
+sun/nio/cs/UTF_16
+sun/nio/cs/UTF_16$Decoder
+sun/nio/cs/UTF_16BE
+sun/nio/cs/UTF_16LE
+sun/nio/cs/UTF_8
+sun/nio/cs/UTF_8$Decoder
+sun/nio/cs/UTF_8$Encoder
+sun/nio/cs/Unicode
+sun/nio/cs/UnicodeDecoder
+sun/print/PrinterGraphicsConfig
+sun/reflect/AccessorGenerator
+sun/reflect/BootstrapConstructorAccessorImpl
+sun/reflect/ByteVector
+sun/reflect/ByteVectorFactory
+sun/reflect/ByteVectorImpl
+sun/reflect/CallerSensitive
+sun/reflect/ClassDefiner
+sun/reflect/ClassDefiner$1
+sun/reflect/ClassFileAssembler
+sun/reflect/ClassFileConstants
+sun/reflect/ConstantPool
+sun/reflect/ConstructorAccessor
+sun/reflect/ConstructorAccessorImpl
+sun/reflect/DelegatingClassLoader
+sun/reflect/DelegatingConstructorAccessorImpl
+sun/reflect/DelegatingMethodAccessorImpl
+sun/reflect/FieldAccessor
+sun/reflect/FieldAccessorImpl
+sun/reflect/Label
+sun/reflect/Label$PatchInfo
+sun/reflect/LangReflectAccess
+sun/reflect/MagicAccessorImpl
+sun/reflect/MethodAccessor
+sun/reflect/MethodAccessorGenerator
+sun/reflect/MethodAccessorGenerator$1
+sun/reflect/MethodAccessorImpl
+sun/reflect/NativeConstructorAccessorImpl
+sun/reflect/NativeMethodAccessorImpl
+sun/reflect/Reflection
+sun/reflect/ReflectionFactory
+sun/reflect/ReflectionFactory$1
+sun/reflect/ReflectionFactory$GetReflectionFactoryAction
sun/reflect/SerializationConstructorAccessorImpl
-java/io/ObjectStreamClass$FieldReflectorKey
-java/io/ObjectStreamClass$FieldReflector
-java/io/ObjectStreamClass$1
-java/io/DataOutputStream
-java/io/ObjectStreamClass$MemberSignature
-java/io/ObjectStreamClass$3
-java/io/ObjectStreamClass$4
-java/io/ObjectStreamClass$5
-java/security/MessageDigest
-java/security/MessageDigestSpi
-sun/security/jca/GetInstance
-sun/security/jca/Providers
-sun/security/jca/ProviderList
-sun/security/jca/ProviderConfig
-sun/security/jca/ProviderList$3
-sun/security/jca/ProviderList$1
-sun/security/jca/ProviderList$2
-sun/security/jca/ProviderConfig$1
-sun/security/jca/ProviderConfig$3
-java/security/Provider$Service
-java/security/Provider$UString
-sun/security/provider/SHA
-sun/security/provider/DigestBase
-sun/security/jca/GetInstance$Instance
-java/security/MessageDigest$Delegate
-sun/security/provider/ByteArrayAccess
-java/io/ObjectStreamClass$ClassDataSlot
-java/io/ObjectInputStream$CallbackContext
+sun/reflect/UTF8
+sun/reflect/UnsafeBooleanFieldAccessorImpl
+sun/reflect/UnsafeFieldAccessorFactory
+sun/reflect/UnsafeFieldAccessorImpl
+sun/reflect/UnsafeObjectFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
-java/security/SignatureException
-java/security/InvalidKeyException
-java/security/KeyException
-java/security/Signature
-java/security/SignatureSpi
-java/io/ObjectOutputStream$BlockDataOutputStream
-sun/security/provider/DSAPublicKey
-java/security/interfaces/DSAPublicKey
-java/security/interfaces/DSAKey
-java/security/PublicKey
-java/security/Key
-sun/security/x509/X509Key
-java/io/ObjectOutputStream$HandleTable
-java/io/ObjectOutputStream$ReplaceTable
-sun/security/x509/AlgorithmId
-sun/security/util/DerEncoder
-sun/security/util/BitArray
-sun/security/util/DerOutputStream
-sun/security/util/DerValue
-java/math/BigInteger
-java/security/interfaces/DSAParams
-sun/security/util/DerInputStream
-sun/security/util/DerInputBuffer
-sun/security/util/ObjectIdentifier
-java/security/AlgorithmParameters
-java/security/AlgorithmParametersSpi
-sun/security/provider/DSAParameters
-sun/security/util/ByteArrayLexOrder
-sun/security/util/ByteArrayTagOrder
-sun/security/util/DerIndefLenConverter
-java/io/InvalidClassException
-java/io/ObjectStreamException
-java/io/ObjectInputStream$GetFieldImpl
-java/io/ObjectInputStream$GetField
-sun/security/jca/ServiceId
-sun/security/jca/ProviderList$ServiceList
-sun/security/jca/ProviderList$ServiceList$1
-java/security/Signature$Delegate
-java/security/interfaces/DSAPrivateKey
-java/security/PrivateKey
-sun/security/provider/DSA$SHA1withDSA
-sun/security/provider/DSA
-java/security/spec/DSAParameterSpec
-java/security/spec/AlgorithmParameterSpec
-java/math/MutableBigInteger
-java/math/SignedMutableBigInteger
-java/awt/EventQueue$1AWTInvocationLock
-javax/swing/SystemEventQueueUtilities$RunnableCanvas
-javax/swing/SystemEventQueueUtilities$RunnableCanvasGraphics
-java/awt/Component$FlipBufferStrategy
-java/awt/SentEvent
-sun/awt/X11/XDestroyWindowEvent
-sun/awt/X11/XDropTargetRegistry
-sun/awt/X11/XEmbeddedFramePeer
-sun/awt/X11/XDragAndDropProtocols
-sun/awt/X11/XDropTargetContextPeer
-sun/awt/dnd/SunDropTargetContextPeer
-java/awt/dnd/peer/DropTargetContextPeer
-sun/awt/X11/XDropTargetContextPeer$XDropTargetProtocolListenerImpl
-sun/awt/X11/XDropTargetProtocolListener
-sun/awt/X11/XDnDDragSourceProtocol
-sun/awt/X11/XDragSourceProtocol
-sun/awt/X11/MotifDnDDragSourceProtocol
-sun/awt/X11/XDnDDropTargetProtocol
-sun/awt/X11/XDropTargetProtocol
-sun/awt/X11/MotifDnDDropTargetProtocol
-sun/awt/X11/XDnDConstants
-sun/awt/X11/MotifDnDConstants
-javax/swing/JTable$2
-javax/swing/JTable$Resizable3
-javax/swing/JTable$Resizable2
-javax/swing/JTable$5
-javax/swing/event/AncestorEvent
-sun/font/FontDesignMetrics$MetricsKey
-java/awt/geom/Line2D$Float
-java/awt/geom/Line2D
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel
-javax/swing/plaf/synth/SynthLookAndFeel
-javax/swing/plaf/synth/DefaultSynthStyleFactory
-javax/swing/plaf/synth/SynthStyleFactory
-sun/swing/BakedArrayList
-javax/swing/plaf/synth/SynthLookAndFeel$Handler
-javax/swing/plaf/synth/SynthDefaultLookup
-com/sun/java/swing/plaf/gtk/GTKEngine
-com/sun/java/swing/plaf/gtk/GTKDefaultEngine
-com/sun/java/swing/plaf/gtk/GTKEngine$Settings
-com/sun/java/swing/plaf/gtk/GTKStyleFactory
-com/sun/java/swing/plaf/gtk/PangoFonts
-sun/font/FontManager$FontConfigInfo
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel$WeakPCL
-javax/swing/plaf/synth/Region
-javax/swing/plaf/synth/SynthLookAndFeel$AATextListener
-com/sun/java/swing/plaf/gtk/GTKNativeEngine
-com/sun/java/swing/plaf/gtk/GTKNativeEngine$WidgetType
-com/sun/java/swing/plaf/gtk/GTKRegion
-com/sun/java/swing/plaf/gtk/GTKDefaultStyle
-com/sun/java/swing/plaf/gtk/GTKStyle
-com/sun/java/swing/plaf/gtk/GTKConstants
-javax/swing/plaf/synth/SynthStyle
-javax/swing/plaf/synth/SynthGraphicsUtils
-com/sun/java/swing/plaf/gtk/GTKGraphicsUtils
-com/sun/java/swing/plaf/gtk/GTKStyle$GTKStockIcon
-sun/swing/plaf/synth/SynthIcon
-com/sun/java/swing/plaf/gtk/GTKColorType
-javax/swing/plaf/synth/ColorType
-com/sun/java/swing/plaf/gtk/resources/gtk
-com/sun/swing/internal/plaf/synth/resources/synth
-com/sun/java/swing/plaf/gtk/GTKStyle$GTKLazyValue
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel$1FontLazyValue
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel$2
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel$3
-javax/swing/plaf/synth/SynthPanelUI
-javax/swing/plaf/synth/SynthConstants
-javax/swing/plaf/synth/SynthContext
-javax/swing/plaf/synth/SynthBorder
-javax/swing/plaf/synth/SynthRootPaneUI
-javax/swing/plaf/synth/SynthLabelUI
-javax/swing/plaf/synth/SynthButtonUI
-javax/swing/plaf/synth/SynthToggleButtonUI
-javax/swing/plaf/basic/BasicBorders$FieldBorder
-javax/swing/plaf/synth/SynthMenuBarUI
-javax/swing/plaf/synth/DefaultMenuLayout
-javax/swing/plaf/synth/SynthMenuUI
-javax/swing/plaf/synth/SynthUI
-com/sun/java/swing/plaf/gtk/GTKIconFactory
-com/sun/java/swing/plaf/gtk/GTKIconFactory$MenuArrowIcon
-com/sun/java/swing/plaf/gtk/GTKIconFactory$DelegatingIcon
-com/sun/java/swing/plaf/gtk/GTKConstants$ArrowType
-javax/swing/plaf/basic/BasicIconFactory
-javax/swing/plaf/basic/BasicIconFactory$MenuItemCheckIcon
-javax/swing/plaf/synth/SynthMenuItemUI
-javax/swing/plaf/synth/SynthPopupMenuUI
-javax/swing/plaf/synth/SynthSeparatorUI
-javax/swing/plaf/synth/SynthScrollBarUI
-javax/swing/plaf/synth/SynthArrowButton
-javax/swing/plaf/synth/SynthArrowButton$SynthArrowButtonUI
-javax/swing/plaf/synth/SynthComboBoxUI
-javax/swing/plaf/synth/SynthComboPopup
-javax/swing/plaf/synth/SynthListUI
-javax/swing/plaf/synth/SynthListUI$SynthListCellRenderer
-javax/swing/plaf/synth/SynthViewportUI
-javax/swing/plaf/synth/SynthScrollPaneUI
-javax/swing/plaf/synth/SynthScrollPaneUI$ViewportBorder
-javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxRenderer
-javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxEditor
-javax/swing/plaf/synth/SynthTextFieldUI
-javax/swing/plaf/synth/SynthToolBarUI
-javax/swing/plaf/synth/SynthToolBarUI$SynthToolBarLayoutManager
-com/sun/java/swing/plaf/gtk/GTKIconFactory$ToolBarHandleIcon
-com/sun/java/swing/plaf/gtk/GTKConstants$Orientation
-sun/awt/X11/XTranslateCoordinates
-com/sun/java/swing/plaf/gtk/GTKPainter
-javax/swing/plaf/synth/SynthPainter
-javax/swing/plaf/synth/SynthPainter$1
-com/sun/java/swing/plaf/gtk/GTKConstants$PositionType
-com/sun/java/swing/plaf/gtk/GTKConstants$ShadowType
-java/io/ObjectInputStream$HandleTable$HandleList
-sun/java2d/pipe/ShapeSpanIterator
-sun/java2d/pipe/SpanIterator
-sun/dc/path/PathConsumer
-sun/dc/pr/PathStroker
-sun/dc/pr/PathDasher
-java/awt/geom/LineIterator
-java/awt/geom/PathIterator
-sun/applet/Main
-sun/applet/AppletMessageHandler
-sun/applet/resources/MsgAppletViewer
-sun/applet/AppletSecurity
-sun/awt/AWTSecurityManager
-java/lang/SecurityManager
-java/security/DomainCombiner
-sun/applet/AppletSecurity$1
-java/lang/SecurityManager$1
-java/security/SecurityPermission
-java/util/PropertyPermission
-sun/applet/AppletViewer
-java/applet/AppletContext
-java/awt/print/Printable
-sun/security/util/SecurityConstants
-java/awt/AWTPermission
-java/net/NetPermission
-java/net/SocketPermission
-javax/security/auth/AuthPermission
-java/lang/Thread$1
-java/util/logging/LogManager$5
-java/util/logging/LogManager$6
-sun/applet/StdAppletViewerFactory
-sun/applet/AppletViewerFactory
-sun/applet/AppletViewer$UserActionListener
-sun/applet/AppletViewerPanel
-sun/applet/AppletPanel
-java/applet/AppletStub
-sun/misc/MessageUtils
-sun/applet/AppletPanel$10
-java/security/Policy$1
-sun/security/provider/PolicyFile$1
-sun/security/provider/PolicyInfo
-sun/security/provider/PolicyFile$3
-sun/security/util/PropertyExpander
-sun/security/provider/PolicyParser
-sun/security/util/PolicyUtil
-sun/security/provider/PolicyParser$GrantEntry
-sun/security/provider/PolicyParser$PermissionEntry
-sun/security/provider/PolicyFile$PolicyEntry
-sun/security/provider/PolicyFile$6
-sun/security/provider/PolicyFile$7
-sun/security/provider/SelfPermission
-java/net/SocketPermissionCollection
-java/util/PropertyPermissionCollection
-sun/applet/AppletPanel$9
-sun/applet/AppletClassLoader
-sun/applet/AppletClassLoader$4
-sun/applet/AppletThreadGroup
-sun/applet/AppContextCreator
-sun/applet/AppletPanel$1
-sun/awt/X11/XMenuBarPeer
-java/awt/peer/MenuBarPeer
-java/awt/peer/MenuComponentPeer
-sun/awt/X11/XBaseMenuWindow
-sun/awt/X11/XMenuPeer
-java/awt/peer/MenuPeer
-java/awt/peer/MenuItemPeer
-sun/awt/X11/XMenuItemPeer
-java/awt/MenuShortcut
-sun/awt/X11/XMenuWindow
-sun/awt/X11/XMenuBarPeer$1
-sun/awt/X11/XMenuItemPeer$TextMetrics
-sun/awt/AppContext$3
-sun/awt/MostRecentThreadAppContext
-sun/awt/X11/XMenuBarPeer$MappingData
-sun/awt/X11/XBaseMenuWindow$MappingData
-sun/applet/AppletViewer$1
-sun/applet/AppletViewer$1AppletEventListener
-sun/applet/AppletListener
-sun/applet/AppletEventMulticaster
-sun/misc/Queue
-sun/misc/QueueElement
-sun/applet/AppletEvent
-sun/applet/AppletClassLoader$1
-sun/awt/X11/XBaseMenuWindow$3
-java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
-sun/awt/CausedFocusEvent
-sun/awt/X11/XWindow$1
-java/net/URLClassLoader$4
-sun/applet/AppletClassLoader$2
-javax/swing/JApplet
-java/lang/ClassLoader$1
-sun/security/provider/PolicyFile$5
-java/security/PermissionsEnumerator
-java/util/Collections$1
-sun/applet/AppletPanel$11
-sun/applet/AppletPanel$8
-sun/applet/AppletPanel$2
-sun/applet/AppletPanel$3
-sun/applet/AppletPanel$6
-javax/swing/BufferStrategyPaintManager$1
-# f3ac8b467e7f8c49
+sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
+sun/reflect/UnsafeStaticFieldAccessorImpl
+sun/reflect/annotation/AnnotationType
+sun/reflect/generics/repository/AbstractRepository
+sun/reflect/generics/repository/ClassRepository
+sun/reflect/generics/repository/GenericDeclRepository
+sun/reflect/misc/MethodUtil
+sun/reflect/misc/MethodUtil$1
+sun/reflect/misc/ReflectUtil
+sun/security/action/GetBooleanAction
+sun/security/action/GetPropertyAction
+sun/security/util/Debug
+sun/security/util/ManifestEntryVerifier
+sun/swing/DefaultLookup
+sun/swing/JLightweightFrame
+sun/swing/MenuItemLayoutHelper
+sun/swing/StringUIClientPropertyKey
+sun/swing/SwingAccessor
+sun/swing/SwingAccessor$JTextComponentAccessor
+sun/swing/SwingLazyValue
+sun/swing/SwingLazyValue$1
+sun/swing/SwingUtilities2
+sun/swing/SwingUtilities2$2
+sun/swing/SwingUtilities2$AATextInfo
+sun/swing/SwingUtilities2$LSBCacheEntry
+sun/swing/UIAction
+sun/swing/UIClientPropertyKey
+sun/util/CoreResourceBundleControl
+sun/util/PreHashedMap
+sun/util/ResourceBundleEnumeration
+sun/util/calendar/AbstractCalendar
+sun/util/calendar/BaseCalendar
+sun/util/calendar/BaseCalendar$Date
+sun/util/calendar/CalendarDate
+sun/util/calendar/CalendarSystem
+sun/util/calendar/CalendarUtils
+sun/util/calendar/Gregorian
+sun/util/calendar/Gregorian$Date
+sun/util/calendar/ZoneInfo
+sun/util/calendar/ZoneInfoFile
+sun/util/calendar/ZoneInfoFile$1
+sun/util/calendar/ZoneInfoFile$Checksum
+sun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule
+sun/util/locale/BaseLocale
+sun/util/locale/BaseLocale$Cache
+sun/util/locale/BaseLocale$Key
+sun/util/locale/LocaleObjectCache
+sun/util/locale/LocaleObjectCache$CacheEntry
+sun/util/locale/LocaleUtils
+sun/util/locale/provider/AuxLocaleProviderAdapter
+sun/util/locale/provider/AuxLocaleProviderAdapter$NullProvider
+sun/util/locale/provider/JRELocaleProviderAdapter
+sun/util/locale/provider/JRELocaleProviderAdapter$1
+sun/util/locale/provider/LocaleDataMetaInfo
+sun/util/locale/provider/LocaleProviderAdapter
+sun/util/locale/provider/LocaleProviderAdapter$1
+sun/util/locale/provider/LocaleProviderAdapter$Type
+sun/util/locale/provider/LocaleResources
+sun/util/locale/provider/LocaleResources$ResourceReference
+sun/util/locale/provider/LocaleServiceProviderPool
+sun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter
+sun/util/locale/provider/ResourceBundleBasedAdapter
+sun/util/locale/provider/SPILocaleProviderAdapter
+sun/util/locale/provider/SPILocaleProviderAdapter$1
+sun/util/locale/provider/TimeZoneNameProviderImpl
+sun/util/locale/provider/TimeZoneNameUtility$TimeZoneNameGetter
+sun/util/logging/LoggingProxy
+sun/util/logging/LoggingSupport
+sun/util/logging/LoggingSupport$1
+sun/util/logging/LoggingSupport$2
+sun/util/logging/PlatformLogger
+sun/util/logging/PlatformLogger$1
+sun/util/logging/PlatformLogger$DefaultLoggerProxy
+sun/util/logging/PlatformLogger$JavaLoggerProxy
+sun/util/logging/PlatformLogger$Level
+sun/util/logging/PlatformLogger$LoggerProxy
+sun/util/logging/resources/logging
+sun/util/resources/LocaleData
+sun/util/resources/LocaleData$1
+sun/util/resources/LocaleData$LocaleDataResourceBundleControl
+sun/util/resources/OpenListResourceBundle
+sun/util/resources/TimeZoneNames
+sun/util/resources/TimeZoneNamesBundle
+sun/util/resources/en/TimeZoneNames_en
+# 32aa76348b93579f
--- a/jdk/make/tools/sharing/classlist.solaris Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/make/tools/sharing/classlist.solaris Wed Jul 05 19:22:42 2017 +0200
@@ -1,2419 +1,2644 @@
-java/lang/Object
-java/lang/String
+com/sun/java/swing/SwingUtilities3
+com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
+com/sun/swing/internal/plaf/basic/resources/basic
+com/sun/swing/internal/plaf/metal/resources/metal
+java/applet/Applet
+java/awt/AWTEvent
+java/awt/AWTEvent$1
+java/awt/AWTEventMulticaster
+java/awt/AWTKeyStroke
+java/awt/AWTKeyStroke$1
+java/awt/ActiveEvent
+java/awt/Adjustable
+java/awt/AlphaComposite
+java/awt/BasicStroke
+java/awt/BorderLayout
+java/awt/BufferCapabilities
+java/awt/Canvas
+java/awt/CardLayout
+java/awt/CardLayout$Card
+java/awt/Color
+java/awt/Component
+java/awt/Component$1
+java/awt/Component$3
+java/awt/Component$AWTTreeLock
+java/awt/Component$AccessibleAWTComponent
+java/awt/Component$BaselineResizeBehavior
+java/awt/Component$BltBufferStrategy
+java/awt/Component$BltSubRegionBufferStrategy
+java/awt/Component$DummyRequestFocusController
+java/awt/Component$FlipBufferStrategy
+java/awt/ComponentOrientation
+java/awt/Composite
+java/awt/Conditional
+java/awt/Container
+java/awt/Container$1
+java/awt/Container$AccessibleAWTContainer
+java/awt/ContainerOrderFocusTraversalPolicy
+java/awt/Cursor
+java/awt/Cursor$1
+java/awt/DefaultFocusTraversalPolicy
+java/awt/DefaultKeyboardFocusManager
+java/awt/DefaultKeyboardFocusManager$1
+java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
+java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
+java/awt/Dialog
+java/awt/Dialog$ModalExclusionType
+java/awt/Dialog$ModalityType
+java/awt/Dimension
+java/awt/Event
+java/awt/EventDispatchThread
+java/awt/EventDispatchThread$1
+java/awt/EventDispatchThread$HierarchyEventFilter
+java/awt/EventFilter
+java/awt/EventFilter$FilterAction
+java/awt/EventQueue
+java/awt/EventQueue$1
+java/awt/EventQueue$1AWTInvocationLock
+java/awt/EventQueue$2
+java/awt/EventQueue$3
+java/awt/EventQueue$4
+java/awt/EventQueue$5
+java/awt/FlowLayout
+java/awt/FocusTraversalPolicy
+java/awt/Font
+java/awt/Font$FontAccessImpl
+java/awt/FontFormatException
+java/awt/FontMetrics
+java/awt/Frame
+java/awt/Frame$1
+java/awt/Graphics
+java/awt/Graphics2D
+java/awt/GraphicsCallback
+java/awt/GraphicsCallback$PaintCallback
+java/awt/GraphicsConfiguration
+java/awt/GraphicsDevice
+java/awt/GraphicsEnvironment
+java/awt/GraphicsEnvironment$1
+java/awt/GridLayout
+java/awt/Image
+java/awt/Image$1
+java/awt/ImageCapabilities
+java/awt/ImageMediaEntry
+java/awt/Insets
+java/awt/ItemSelectable
+java/awt/KeyEventDispatcher
+java/awt/KeyEventPostProcessor
+java/awt/KeyboardFocusManager
+java/awt/KeyboardFocusManager$1
+java/awt/KeyboardFocusManager$3
+java/awt/KeyboardFocusManager$HeavyweightFocusRequest
+java/awt/KeyboardFocusManager$LightweightFocusRequest
+java/awt/Label
+java/awt/LayoutManager
+java/awt/LayoutManager2
+java/awt/LightweightDispatcher
+java/awt/LightweightDispatcher$2
+java/awt/MediaEntry
+java/awt/MediaTracker
+java/awt/MenuBar
+java/awt/MenuComponent
+java/awt/MenuContainer
+java/awt/ModalEventFilter
+java/awt/Paint
+java/awt/Panel
+java/awt/Point
+java/awt/PrintGraphics
+java/awt/Queue
+java/awt/Rectangle
+java/awt/RenderingHints
+java/awt/RenderingHints$Key
+java/awt/SentEvent
+java/awt/SequencedEvent
+java/awt/SequencedEvent$1
+java/awt/Shape
+java/awt/SplashScreen
+java/awt/Stroke
+java/awt/SystemColor
+java/awt/Toolkit
+java/awt/Toolkit$1
+java/awt/Toolkit$2
+java/awt/Toolkit$3
+java/awt/Toolkit$4
+java/awt/Toolkit$5
+java/awt/Toolkit$DesktopPropertyChangeSupport
+java/awt/Toolkit$DesktopPropertyChangeSupport$1
+java/awt/Toolkit$SelectiveAWTEventListener
+java/awt/Toolkit$ToolkitEventMulticaster
+java/awt/Transparency
+java/awt/TrayIcon
+java/awt/VKCollection
+java/awt/Window
+java/awt/Window$1
+java/awt/Window$1DisposeAction
+java/awt/Window$Type
+java/awt/Window$WindowDisposerRecord
+java/awt/color/ColorSpace
+java/awt/color/ICC_ColorSpace
+java/awt/color/ICC_Profile
+java/awt/color/ICC_Profile$1
+java/awt/color/ICC_ProfileRGB
+java/awt/datatransfer/Clipboard
+java/awt/datatransfer/ClipboardOwner
+java/awt/datatransfer/FlavorMap
+java/awt/datatransfer/FlavorTable
+java/awt/datatransfer/SystemFlavorMap
+java/awt/datatransfer/Transferable
+java/awt/dnd/DropTarget
+java/awt/dnd/DropTargetContext
+java/awt/dnd/DropTargetListener
+java/awt/dnd/peer/DragSourceContextPeer
+java/awt/dnd/peer/DropTargetContextPeer
+java/awt/dnd/peer/DropTargetPeer
+java/awt/event/AWTEventListener
+java/awt/event/AWTEventListenerProxy
+java/awt/event/ActionEvent
+java/awt/event/ActionListener
+java/awt/event/AdjustmentEvent
+java/awt/event/AdjustmentListener
+java/awt/event/ComponentAdapter
+java/awt/event/ComponentEvent
+java/awt/event/ComponentListener
+java/awt/event/ContainerEvent
+java/awt/event/ContainerListener
+java/awt/event/FocusAdapter
+java/awt/event/FocusEvent
+java/awt/event/FocusListener
+java/awt/event/HierarchyBoundsListener
+java/awt/event/HierarchyListener
+java/awt/event/InputEvent
+java/awt/event/InputEvent$1
+java/awt/event/InputMethodEvent
+java/awt/event/InputMethodListener
+java/awt/event/InvocationEvent
+java/awt/event/InvocationEvent$1
+java/awt/event/ItemEvent
+java/awt/event/ItemListener
+java/awt/event/KeyAdapter
+java/awt/event/KeyEvent
+java/awt/event/KeyEvent$1
+java/awt/event/KeyListener
+java/awt/event/MouseAdapter
+java/awt/event/MouseEvent
+java/awt/event/MouseListener
+java/awt/event/MouseMotionAdapter
+java/awt/event/MouseMotionListener
+java/awt/event/MouseWheelListener
+java/awt/event/NativeLibLoader
+java/awt/event/NativeLibLoader$1
+java/awt/event/PaintEvent
+java/awt/event/TextListener
+java/awt/event/WindowAdapter
+java/awt/event/WindowEvent
+java/awt/event/WindowFocusListener
+java/awt/event/WindowListener
+java/awt/event/WindowStateListener
+java/awt/font/FontRenderContext
+java/awt/font/GlyphVector
+java/awt/font/LineMetrics
+java/awt/font/TextAttribute
+java/awt/geom/AffineTransform
+java/awt/geom/Dimension2D
+java/awt/geom/GeneralPath
+java/awt/geom/Path2D
+java/awt/geom/Path2D$Float
+java/awt/geom/Path2D$Float$CopyIterator
+java/awt/geom/Path2D$Iterator
+java/awt/geom/PathIterator
+java/awt/geom/Point2D
+java/awt/geom/Point2D$Float
+java/awt/geom/RectIterator
+java/awt/geom/Rectangle2D
+java/awt/geom/Rectangle2D$Float
+java/awt/geom/RectangularShape
+java/awt/im/InputContext
+java/awt/im/InputMethodRequests
+java/awt/im/spi/InputMethod
+java/awt/im/spi/InputMethodContext
+java/awt/im/spi/InputMethodDescriptor
+java/awt/image/BufferStrategy
+java/awt/image/BufferedImage
+java/awt/image/BufferedImage$1
+java/awt/image/ColorModel
+java/awt/image/ColorModel$1
+java/awt/image/ComponentSampleModel
+java/awt/image/DataBuffer
+java/awt/image/DataBuffer$1
+java/awt/image/DataBufferByte
+java/awt/image/DataBufferInt
+java/awt/image/DirectColorModel
+java/awt/image/FilteredImageSource
+java/awt/image/ImageConsumer
+java/awt/image/ImageFilter
+java/awt/image/ImageObserver
+java/awt/image/ImageProducer
+java/awt/image/IndexColorModel
+java/awt/image/PackedColorModel
+java/awt/image/PixelInterleavedSampleModel
+java/awt/image/RGBImageFilter
+java/awt/image/Raster
+java/awt/image/RenderedImage
+java/awt/image/SampleModel
+java/awt/image/SinglePixelPackedSampleModel
+java/awt/image/VolatileImage
+java/awt/image/WritableRaster
+java/awt/image/WritableRenderedImage
+java/awt/peer/CanvasPeer
+java/awt/peer/ComponentPeer
+java/awt/peer/ContainerPeer
+java/awt/peer/FramePeer
+java/awt/peer/KeyboardFocusManagerPeer
+java/awt/peer/LabelPeer
+java/awt/peer/LightweightPeer
+java/awt/peer/PanelPeer
+java/awt/peer/SystemTrayPeer
+java/awt/peer/WindowPeer
+java/awt/print/PrinterGraphics
+java/beans/ChangeListenerMap
+java/beans/PropertyChangeEvent
+java/beans/PropertyChangeListener
+java/beans/PropertyChangeListenerProxy
+java/beans/PropertyChangeSupport
+java/beans/PropertyChangeSupport$PropertyChangeListenerMap
+java/beans/VetoableChangeListener
+java/io/Bits
+java/io/BufferedInputStream
+java/io/BufferedOutputStream
+java/io/BufferedReader
+java/io/BufferedWriter
+java/io/ByteArrayInputStream
+java/io/ByteArrayOutputStream
+java/io/Closeable
+java/io/DataInput
+java/io/DataInputStream
+java/io/DataOutput
+java/io/DataOutputStream
+java/io/DefaultFileSystem
+java/io/EOFException
+java/io/ExpiringCache
+java/io/ExpiringCache$1
+java/io/ExpiringCache$Entry
+java/io/Externalizable
+java/io/File
+java/io/File$PathStatus
+java/io/FileDescriptor
+java/io/FileDescriptor$1
+java/io/FileInputStream
+java/io/FileInputStream$1
+java/io/FileNotFoundException
+java/io/FileOutputStream
+java/io/FileOutputStream$1
+java/io/FilePermission
+java/io/FilePermission$1
+java/io/FilePermissionCollection
+java/io/FileReader
+java/io/FileSystem
+java/io/FileWriter
+java/io/FilenameFilter
+java/io/FilterInputStream
+java/io/FilterOutputStream
+java/io/FilterReader
+java/io/Flushable
+java/io/IOException
+java/io/InputStream
+java/io/InputStreamReader
+java/io/InterruptedIOException
+java/io/NotSerializableException
+java/io/ObjectInput
+java/io/ObjectInputStream
+java/io/ObjectInputStream$BlockDataInputStream
+java/io/ObjectInputStream$GetField
+java/io/ObjectInputStream$GetFieldImpl
+java/io/ObjectInputStream$HandleTable
+java/io/ObjectInputStream$HandleTable$HandleList
+java/io/ObjectInputStream$PeekInputStream
+java/io/ObjectInputStream$ValidationList
+java/io/ObjectOutput
+java/io/ObjectOutputStream
+java/io/ObjectOutputStream$BlockDataOutputStream
+java/io/ObjectOutputStream$HandleTable
+java/io/ObjectOutputStream$ReplaceTable
+java/io/ObjectStreamClass
+java/io/ObjectStreamClass$1
+java/io/ObjectStreamClass$2
+java/io/ObjectStreamClass$3
+java/io/ObjectStreamClass$4
+java/io/ObjectStreamClass$5
+java/io/ObjectStreamClass$Caches
+java/io/ObjectStreamClass$ClassDataSlot
+java/io/ObjectStreamClass$EntryFuture
+java/io/ObjectStreamClass$ExceptionInfo
+java/io/ObjectStreamClass$FieldReflector
+java/io/ObjectStreamClass$FieldReflectorKey
+java/io/ObjectStreamClass$MemberSignature
+java/io/ObjectStreamClass$WeakClassKey
+java/io/ObjectStreamConstants
+java/io/ObjectStreamException
+java/io/ObjectStreamField
+java/io/OutputStream
+java/io/OutputStreamWriter
+java/io/PrintStream
+java/io/PushbackInputStream
+java/io/RandomAccessFile
+java/io/RandomAccessFile$1
+java/io/Reader
+java/io/SerialCallbackContext
java/io/Serializable
-java/lang/Comparable
-java/lang/CharSequence
-java/lang/Class
-java/lang/reflect/GenericDeclaration
-java/lang/reflect/Type
-java/lang/reflect/AnnotatedElement
-java/lang/Cloneable
-java/lang/ClassLoader
-java/lang/System
-java/lang/Throwable
-java/lang/Error
-java/lang/ThreadDeath
-java/lang/Exception
-java/lang/RuntimeException
-java/security/ProtectionDomain
-java/security/AccessControlContext
-java/lang/ClassNotFoundException
-java/lang/NoClassDefFoundError
-java/lang/LinkageError
-java/lang/ClassCastException
-java/lang/ArrayStoreException
-java/lang/VirtualMachineError
-java/lang/OutOfMemoryError
-java/lang/StackOverflowError
-java/lang/IllegalMonitorStateException
-java/lang/ref/Reference
-java/lang/ref/SoftReference
-java/lang/ref/WeakReference
-java/lang/ref/FinalReference
-java/lang/ref/PhantomReference
-java/lang/ref/Finalizer
-java/lang/Thread
-java/lang/Runnable
-java/lang/ThreadGroup
-java/lang/Thread$UncaughtExceptionHandler
-java/util/Properties
-java/util/Hashtable
-java/util/Map
-java/util/Dictionary
-java/lang/reflect/AccessibleObject
-java/lang/reflect/Field
-java/lang/reflect/Member
-java/lang/reflect/Method
-java/lang/reflect/Constructor
-sun/reflect/MagicAccessorImpl
-sun/reflect/MethodAccessorImpl
-sun/reflect/MethodAccessor
-sun/reflect/ConstructorAccessorImpl
-sun/reflect/ConstructorAccessor
-sun/reflect/DelegatingClassLoader
-sun/reflect/ConstantPool
-sun/reflect/UnsafeStaticFieldAccessorImpl
-sun/reflect/UnsafeFieldAccessorImpl
-sun/reflect/FieldAccessorImpl
-sun/reflect/FieldAccessor
-java/util/Vector
-java/util/List
-java/util/Collection
-java/lang/Iterable
-java/util/RandomAccess
-java/util/AbstractList
-java/util/AbstractCollection
-java/lang/StringBuffer
+java/io/StreamTokenizer
+java/io/StringReader
+java/io/StringWriter
+java/io/UnixFileSystem
+java/io/UnsupportedEncodingException
+java/io/Writer
java/lang/AbstractStringBuilder
java/lang/Appendable
-java/lang/StackTraceElement
-java/nio/Buffer
+java/lang/ApplicationShutdownHooks
+java/lang/ApplicationShutdownHooks$1
+java/lang/ArithmeticException
+java/lang/ArrayIndexOutOfBoundsException
+java/lang/ArrayStoreException
+java/lang/AssertionError
+java/lang/AutoCloseable
java/lang/Boolean
-java/lang/Character
-java/lang/Float
-java/lang/Number
-java/lang/Double
+java/lang/BootstrapMethodError
java/lang/Byte
-java/lang/Short
+java/lang/CharSequence
+java/lang/Character
+java/lang/Character$CharacterCache
+java/lang/CharacterData
+java/lang/CharacterData00
+java/lang/CharacterDataLatin1
+java/lang/Class
+java/lang/Class$1
+java/lang/Class$3
+java/lang/Class$4
+java/lang/Class$AnnotationData
+java/lang/Class$Atomic
+java/lang/Class$ReflectionData
+java/lang/ClassCastException
+java/lang/ClassFormatError
+java/lang/ClassLoader
+java/lang/ClassLoader$2
+java/lang/ClassLoader$3
+java/lang/ClassLoader$NativeLibrary
+java/lang/ClassLoader$ParallelLoaders
+java/lang/ClassLoaderHelper
+java/lang/ClassNotFoundException
+java/lang/ClassValue$ClassValueMap
+java/lang/CloneNotSupportedException
+java/lang/Cloneable
+java/lang/Comparable
+java/lang/Compiler
+java/lang/Compiler$1
+java/lang/Double
+java/lang/Enum
+java/lang/Error
+java/lang/Exception
+java/lang/ExceptionInInitializerError
+java/lang/Float
+java/lang/IllegalAccessError
+java/lang/IllegalAccessException
+java/lang/IllegalArgumentException
+java/lang/IllegalMonitorStateException
+java/lang/IllegalStateException
+java/lang/IncompatibleClassChangeError
+java/lang/IndexOutOfBoundsException
+java/lang/InheritableThreadLocal
+java/lang/InstantiationException
java/lang/Integer
+java/lang/Integer$IntegerCache
+java/lang/InternalError
+java/lang/InterruptedException
+java/lang/Iterable
+java/lang/LinkageError
java/lang/Long
+java/lang/Long$LongCache
+java/lang/Math
+java/lang/NoClassDefFoundError
+java/lang/NoSuchFieldException
+java/lang/NoSuchMethodError
+java/lang/NoSuchMethodException
java/lang/NullPointerException
-java/lang/ArithmeticException
-java/io/ObjectStreamField
-java/lang/String$CaseInsensitiveComparator
-java/util/Comparator
+java/lang/Number
+java/lang/NumberFormatException
+java/lang/Object
+java/lang/OutOfMemoryError
+java/lang/Package
+java/lang/Process
+java/lang/ProcessBuilder
+java/lang/ProcessEnvironment
+java/lang/ProcessEnvironment$ExternalData
+java/lang/ProcessEnvironment$StringEnvironment
+java/lang/ProcessEnvironment$Value
+java/lang/ProcessEnvironment$Variable
+java/lang/ProcessImpl
+java/lang/Readable
+java/lang/ReflectiveOperationException
+java/lang/Runnable
+java/lang/Runtime
+java/lang/RuntimeException
java/lang/RuntimePermission
-java/security/BasicPermission
-java/security/Permission
-java/security/Guard
-sun/misc/SoftCache
-java/util/AbstractMap
-java/lang/ref/ReferenceQueue
-java/lang/ref/ReferenceQueue$Null
-java/lang/ref/ReferenceQueue$Lock
-java/util/HashMap
+java/lang/SecurityException
+java/lang/SecurityManager
+java/lang/Short
+java/lang/Short$ShortCache
+java/lang/Shutdown
+java/lang/Shutdown$Lock
+java/lang/StackOverflowError
+java/lang/StackTraceElement
+java/lang/StrictMath
+java/lang/String
+java/lang/String$CaseInsensitiveComparator
+java/lang/StringBuffer
+java/lang/StringBuilder
+java/lang/StringCoding
+java/lang/StringCoding$StringDecoder
+java/lang/StringCoding$StringEncoder
+java/lang/StringIndexOutOfBoundsException
+java/lang/System
+java/lang/System$2
+java/lang/SystemClassLoaderAction
+java/lang/Terminator
+java/lang/Terminator$1
+java/lang/Thread
+java/lang/Thread$State
+java/lang/Thread$UncaughtExceptionHandler
+java/lang/ThreadDeath
+java/lang/ThreadGroup
+java/lang/ThreadLocal
+java/lang/ThreadLocal$ThreadLocalMap
+java/lang/ThreadLocal$ThreadLocalMap$Entry
+java/lang/Throwable
+java/lang/Throwable$PrintStreamOrWriter
+java/lang/Throwable$WrappedPrintStream
+java/lang/UNIXProcess
+java/lang/UNIXProcess$1
+java/lang/UNIXProcess$2
+java/lang/UNIXProcess$3
+java/lang/UNIXProcess$3$1
+java/lang/UNIXProcess$DeferredCloseInputStream
+java/lang/UNIXProcess$LaunchMechanism
+java/lang/UnsatisfiedLinkError
+java/lang/UnsupportedOperationException
+java/lang/VirtualMachineError
+java/lang/Void
java/lang/annotation/Annotation
-java/util/HashMap$Entry
-java/util/Map$Entry
-java/security/AccessController
-java/lang/reflect/ReflectPermission
-sun/reflect/ReflectionFactory$GetReflectionFactoryAction
-java/security/PrivilegedAction
-java/util/Stack
-sun/reflect/ReflectionFactory
+java/lang/invoke/CallSite
+java/lang/invoke/ConstantCallSite
+java/lang/invoke/DirectMethodHandle
+java/lang/invoke/Invokers
+java/lang/invoke/LambdaForm
+java/lang/invoke/LambdaForm$NamedFunction
+java/lang/invoke/MemberName
+java/lang/invoke/MemberName$Factory
+java/lang/invoke/MethodHandle
+java/lang/invoke/MethodHandleImpl
+java/lang/invoke/MethodHandleNatives
+java/lang/invoke/MethodHandleStatics
+java/lang/invoke/MethodHandleStatics$1
+java/lang/invoke/MethodType
+java/lang/invoke/MethodType$ConcurrentWeakInternSet
+java/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry
+java/lang/invoke/MethodTypeForm
+java/lang/invoke/MutableCallSite
+java/lang/invoke/VolatileCallSite
+java/lang/ref/FinalReference
+java/lang/ref/Finalizer
+java/lang/ref/Finalizer$FinalizerThread
+java/lang/ref/PhantomReference
+java/lang/ref/Reference
java/lang/ref/Reference$Lock
java/lang/ref/Reference$ReferenceHandler
-java/lang/ref/Finalizer$FinalizerThread
-java/util/Enumeration
-java/util/Iterator
-java/util/Hashtable$Entry
-java/nio/charset/Charset
-sun/nio/cs/StandardCharsets
-sun/nio/cs/FastCharsetProvider
-java/nio/charset/spi/CharsetProvider
-sun/nio/cs/StandardCharsets$Aliases
-sun/util/PreHashedMap
-sun/nio/cs/StandardCharsets$Classes
-sun/nio/cs/StandardCharsets$Cache
-java/lang/ThreadLocal
-java/util/concurrent/atomic/AtomicInteger
-sun/misc/Unsafe
-java/lang/NoSuchMethodError
-java/lang/IncompatibleClassChangeError
-sun/reflect/Reflection
-java/util/Collections
-java/util/Collections$EmptySet
-java/util/AbstractSet
-java/util/Set
-java/util/Collections$EmptyList
-java/util/Collections$EmptyMap
-java/util/Collections$ReverseComparator
-java/util/Collections$SynchronizedMap
-java/lang/Class$3
+java/lang/ref/ReferenceQueue
+java/lang/ref/ReferenceQueue$Lock
+java/lang/ref/ReferenceQueue$Null
+java/lang/ref/SoftReference
+java/lang/ref/WeakReference
+java/lang/reflect/AccessibleObject
+java/lang/reflect/AnnotatedElement
+java/lang/reflect/Array
+java/lang/reflect/Constructor
+java/lang/reflect/Executable
+java/lang/reflect/Field
+java/lang/reflect/GenericDeclaration
+java/lang/reflect/InvocationHandler
+java/lang/reflect/InvocationTargetException
+java/lang/reflect/Member
+java/lang/reflect/Method
java/lang/reflect/Modifier
+java/lang/reflect/Parameter
+java/lang/reflect/Proxy
+java/lang/reflect/Proxy$KeyFactory
+java/lang/reflect/Proxy$ProxyClassFactory
java/lang/reflect/ReflectAccess
-sun/reflect/LangReflectAccess
-java/util/Arrays
-java/lang/Math
-java/lang/StringBuilder
-sun/nio/cs/UTF_8
-sun/nio/cs/Unicode
-sun/nio/cs/HistoricallyNamedCharset
-java/lang/Class$1
-sun/reflect/ReflectionFactory$1
-sun/reflect/NativeConstructorAccessorImpl
-sun/reflect/DelegatingConstructorAccessorImpl
-sun/misc/VM
-java/lang/StringCoding
-java/lang/ThreadLocal$ThreadLocalMap
-java/lang/ThreadLocal$ThreadLocalMap$Entry
-java/lang/StringCoding$StringDecoder
-sun/nio/cs/UTF_8$Decoder
-java/nio/charset/CharsetDecoder
-java/nio/charset/CodingErrorAction
-sun/nio/cs/Surrogate$Generator
-sun/nio/cs/Surrogate
-java/nio/charset/CoderResult
-java/nio/charset/CoderResult$1
-java/nio/charset/CoderResult$Cache
-java/nio/charset/CoderResult$2
+java/lang/reflect/ReflectPermission
+java/lang/reflect/Type
+java/lang/reflect/WeakCache
+java/math/BigInteger
+java/math/BigInteger$UnsafeHolder
+java/math/MutableBigInteger
+java/math/RoundingMode
+java/net/AbstractPlainDatagramSocketImpl
+java/net/AbstractPlainDatagramSocketImpl$1
+java/net/AbstractPlainSocketImpl
+java/net/AbstractPlainSocketImpl$1
+java/net/Authenticator
+java/net/BindException
+java/net/ConnectException
+java/net/DatagramPacket
+java/net/DatagramPacket$1
+java/net/DatagramSocket
+java/net/DatagramSocket$1
+java/net/DatagramSocketImpl
+java/net/DefaultDatagramSocketImplFactory
+java/net/DefaultInterface
+java/net/FileNameMap
+java/net/HttpURLConnection
+java/net/Inet4Address
+java/net/Inet4AddressImpl
+java/net/Inet6Address
+java/net/Inet6Address$Inet6AddressHolder
+java/net/Inet6AddressImpl
+java/net/InetAddress
+java/net/InetAddress$1
+java/net/InetAddress$2
+java/net/InetAddress$Cache
+java/net/InetAddress$Cache$Type
+java/net/InetAddress$CacheEntry
+java/net/InetAddress$InetAddressHolder
+java/net/InetAddressImpl
+java/net/InetAddressImplFactory
+java/net/InetSocketAddress
+java/net/InetSocketAddress$InetSocketAddressHolder
+java/net/InterfaceAddress
+java/net/JarURLConnection
+java/net/MalformedURLException
+java/net/MulticastSocket
+java/net/NetworkInterface
+java/net/NetworkInterface$1
+java/net/NetworkInterface$2
+java/net/NoRouteToHostException
+java/net/Parts
+java/net/PlainDatagramSocketImpl
+java/net/PlainSocketImpl
+java/net/Proxy
+java/net/Proxy$Type
+java/net/ProxySelector
+java/net/ServerSocket
+java/net/Socket
+java/net/SocketAddress
+java/net/SocketException
+java/net/SocketImpl
+java/net/SocketImplFactory
+java/net/SocketOptions
+java/net/SocksConsts
+java/net/SocksSocketImpl
+java/net/SocksSocketImpl$3
+java/net/URI
+java/net/URI$Parser
+java/net/URL
+java/net/URLClassLoader
+java/net/URLClassLoader$1
+java/net/URLClassLoader$2
+java/net/URLClassLoader$3
+java/net/URLClassLoader$3$1
+java/net/URLClassLoader$7
+java/net/URLConnection
+java/net/URLConnection$1
+java/net/URLStreamHandler
+java/net/URLStreamHandlerFactory
+java/net/UnknownHostException
+java/nio/Bits
+java/nio/Bits$1
+java/nio/Buffer
+java/nio/BufferUnderflowException
java/nio/ByteBuffer
-java/nio/HeapByteBuffer
-java/nio/Bits
+java/nio/ByteBufferAsIntBufferB
+java/nio/ByteBufferAsShortBufferB
java/nio/ByteOrder
java/nio/CharBuffer
-java/lang/Readable
+java/nio/DirectByteBuffer
+java/nio/DirectByteBuffer$Deallocator
+java/nio/DirectByteBufferR
+java/nio/DirectLongBufferU
+java/nio/HeapByteBuffer
java/nio/HeapCharBuffer
-sun/misc/Version
-java/io/FileInputStream
-java/io/InputStream
-java/io/Closeable
-java/io/FileDescriptor
-java/io/FileOutputStream
-java/io/OutputStream
-java/io/Flushable
-java/io/BufferedInputStream
-java/io/FilterInputStream
-java/util/concurrent/atomic/AtomicReferenceFieldUpdater
-java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
-sun/reflect/misc/ReflectUtil
-java/io/PrintStream
-java/io/FilterOutputStream
-java/io/BufferedOutputStream
-java/io/OutputStreamWriter
-java/io/Writer
-sun/nio/cs/StreamEncoder
-sun/security/action/GetPropertyAction
-sun/nio/cs/UTF_8$Encoder
+java/nio/IntBuffer
+java/nio/LongBuffer
+java/nio/MappedByteBuffer
+java/nio/ShortBuffer
+java/nio/channels/ByteChannel
+java/nio/channels/Channel
+java/nio/channels/FileChannel
+java/nio/channels/FileChannel$MapMode
+java/nio/channels/GatheringByteChannel
+java/nio/channels/InterruptibleChannel
+java/nio/channels/NetworkChannel
+java/nio/channels/ReadableByteChannel
+java/nio/channels/ScatteringByteChannel
+java/nio/channels/SeekableByteChannel
+java/nio/channels/SelectableChannel
+java/nio/channels/SocketChannel
+java/nio/channels/WritableByteChannel
+java/nio/channels/spi/AbstractInterruptibleChannel
+java/nio/channels/spi/AbstractInterruptibleChannel$1
+java/nio/channels/spi/AbstractSelectableChannel
+java/nio/charset/Charset
+java/nio/charset/Charset$ExtendedProviderHolder
+java/nio/charset/Charset$ExtendedProviderHolder$1
+java/nio/charset/CharsetDecoder
java/nio/charset/CharsetEncoder
-sun/nio/cs/Surrogate$Parser
-java/io/BufferedWriter
-java/lang/Runtime
-java/io/File
-java/io/FileSystem
-java/io/UnixFileSystem
-java/io/ExpiringCache
-java/io/ExpiringCache$1
+java/nio/charset/CoderResult
+java/nio/charset/CoderResult$1
+java/nio/charset/CoderResult$2
+java/nio/charset/CoderResult$Cache
+java/nio/charset/CodingErrorAction
+java/nio/charset/StandardCharsets
+java/nio/charset/spi/CharsetProvider
+java/nio/file/Path
+java/nio/file/Watchable
+java/nio/file/attribute/FileAttribute
+java/security/AccessControlContext
+java/security/AccessControlException
+java/security/AccessController
+java/security/AlgorithmParameters
+java/security/AlgorithmParametersSpi
+java/security/AllPermission
+java/security/AllPermissionCollection
+java/security/AuthProvider
+java/security/BasicPermission
+java/security/BasicPermissionCollection
+java/security/CodeSigner
+java/security/CodeSource
+java/security/DigestException
+java/security/GeneralSecurityException
+java/security/Guard
+java/security/InvalidAlgorithmParameterException
+java/security/InvalidKeyException
+java/security/InvalidParameterException
+java/security/Key
+java/security/KeyException
+java/security/KeyFactory
+java/security/KeyFactorySpi
+java/security/MessageDigest
+java/security/MessageDigest$Delegate
+java/security/MessageDigestSpi
+java/security/NoSuchAlgorithmException
+java/security/Permission
+java/security/PermissionCollection
+java/security/Permissions
+java/security/Principal
+java/security/PrivateKey
+java/security/PrivilegedAction
+java/security/PrivilegedActionException
+java/security/PrivilegedExceptionAction
+java/security/ProtectionDomain
+java/security/ProtectionDomain$1
+java/security/ProtectionDomain$3
+java/security/ProtectionDomain$Key
+java/security/Provider
+java/security/Provider$EngineDescription
+java/security/Provider$Service
+java/security/Provider$ServiceKey
+java/security/Provider$UString
+java/security/ProviderException
+java/security/PublicKey
+java/security/SecureClassLoader
+java/security/SecureRandomSpi
+java/security/Security
+java/security/Security$1
+java/security/SecurityPermission
+java/security/Signature
+java/security/Signature$Delegate
+java/security/SignatureException
+java/security/SignatureSpi
+java/security/UnresolvedPermission
+java/security/cert/CertPath
+java/security/cert/Certificate
+java/security/cert/CertificateFactory
+java/security/cert/CertificateFactorySpi
+java/security/cert/Extension
+java/security/cert/X509Certificate
+java/security/cert/X509Extension
+java/security/interfaces/DSAKey
+java/security/interfaces/DSAParams
+java/security/interfaces/DSAPrivateKey
+java/security/interfaces/DSAPublicKey
+java/security/interfaces/RSAKey
+java/security/interfaces/RSAPrivateCrtKey
+java/security/interfaces/RSAPrivateKey
+java/security/interfaces/RSAPublicKey
+java/security/spec/AlgorithmParameterSpec
+java/security/spec/DSAParameterSpec
+java/security/spec/DSAPublicKeySpec
+java/security/spec/EncodedKeySpec
+java/security/spec/InvalidKeySpecException
+java/security/spec/KeySpec
+java/security/spec/PKCS8EncodedKeySpec
+java/security/spec/RSAPrivateCrtKeySpec
+java/security/spec/RSAPrivateKeySpec
+java/security/spec/RSAPublicKeySpec
+java/security/spec/X509EncodedKeySpec
+java/text/AttributedCharacterIterator$Attribute
+java/text/CharacterIterator
+java/text/Collator
+java/text/DateFormat
+java/text/DateFormat$Field
+java/text/DateFormatSymbols
+java/text/DecimalFormat
+java/text/DecimalFormatSymbols
+java/text/DigitList
+java/text/DontCareFieldPosition
+java/text/DontCareFieldPosition$1
+java/text/EntryPair
+java/text/FieldPosition
+java/text/Format
+java/text/Format$Field
+java/text/Format$FieldDelegate
+java/text/MergeCollation
+java/text/MessageFormat
+java/text/MessageFormat$Field
+java/text/Normalizer
+java/text/Normalizer$Form
+java/text/NumberFormat
+java/text/NumberFormat$Field
+java/text/ParseException
+java/text/PatternEntry
+java/text/PatternEntry$Parser
+java/text/RBCollationTables
+java/text/RBCollationTables$BuildAPI
+java/text/RBTableBuilder
+java/text/RuleBasedCollator
+java/text/SimpleDateFormat
+java/text/spi/BreakIteratorProvider
+java/text/spi/CollatorProvider
+java/text/spi/DateFormatProvider
+java/text/spi/DateFormatSymbolsProvider
+java/text/spi/DecimalFormatSymbolsProvider
+java/text/spi/NumberFormatProvider
+java/util/AbstractCollection
+java/util/AbstractList
+java/util/AbstractList$Itr
+java/util/AbstractList$ListItr
+java/util/AbstractMap
+java/util/AbstractQueue
+java/util/AbstractSequentialList
+java/util/AbstractSet
+java/util/ArrayDeque
+java/util/ArrayList
+java/util/ArrayList$1
+java/util/ArrayList$Itr
+java/util/ArrayList$ListItr
+java/util/ArrayList$SubList
+java/util/ArrayList$SubList$1
+java/util/Arrays
+java/util/Arrays$ArrayList
+java/util/Arrays$LegacyMergeSort
+java/util/Base64
+java/util/Base64$Decoder
+java/util/Base64$Encoder
+java/util/BitSet
+java/util/Calendar
+java/util/Calendar$Builder
+java/util/Collection
+java/util/Collections
+java/util/Collections$3
+java/util/Collections$EmptyEnumeration
+java/util/Collections$EmptyIterator
+java/util/Collections$EmptyList
+java/util/Collections$EmptyMap
+java/util/Collections$EmptySet
+java/util/Collections$SetFromMap
+java/util/Collections$SynchronizedCollection
+java/util/Collections$SynchronizedMap
+java/util/Collections$SynchronizedSet
+java/util/Collections$SynchronizedSortedSet
+java/util/Collections$UnmodifiableCollection
+java/util/Collections$UnmodifiableCollection$1
+java/util/Collections$UnmodifiableList
+java/util/Collections$UnmodifiableList$1
+java/util/Collections$UnmodifiableMap
+java/util/Collections$UnmodifiableRandomAccessList
+java/util/Collections$UnmodifiableSet
+java/util/ComparableTimSort
+java/util/Comparator
+java/util/Currency
+java/util/Currency$1
+java/util/Currency$CurrencyNameGetter
+java/util/Date
+java/util/Deque
+java/util/Dictionary
+java/util/Enumeration
+java/util/EventListener
+java/util/EventListenerProxy
+java/util/EventObject
+java/util/GregorianCalendar
+java/util/HashMap
+java/util/HashMap$EntryIterator
+java/util/HashMap$EntrySet
+java/util/HashMap$HashIterator
+java/util/HashMap$KeyIterator
+java/util/HashMap$KeySet
+java/util/HashMap$Node
+java/util/HashMap$TreeNode
+java/util/HashMap$ValueIterator
+java/util/HashMap$Values
+java/util/HashSet
+java/util/Hashtable
+java/util/Hashtable$Entry
+java/util/Hashtable$EntrySet
+java/util/Hashtable$Enumerator
+java/util/Hashtable$ValueCollection
+java/util/IdentityHashMap
+java/util/IdentityHashMap$IdentityHashMapIterator
+java/util/IdentityHashMap$KeyIterator
+java/util/IdentityHashMap$KeySet
+java/util/IdentityHashMap$ValueIterator
+java/util/IdentityHashMap$Values
+java/util/Iterator
java/util/LinkedHashMap
java/util/LinkedHashMap$Entry
-sun/misc/SharedSecrets
-java/lang/ClassLoader$3
-java/lang/StringCoding$StringEncoder
-java/io/ExpiringCache$Entry
-java/lang/ClassLoader$NativeLibrary
-java/lang/Terminator
-java/lang/Terminator$1
-sun/misc/SignalHandler
-sun/misc/Signal
-sun/misc/NativeSignalHandler
-java/io/Console
-java/io/Console$1
-sun/misc/JavaIOAccess
-java/lang/Shutdown
-java/util/ArrayList
-java/lang/Shutdown$Lock
-java/lang/ApplicationShutdownHooks
-java/util/IdentityHashMap
-sun/misc/OSEnvironment
-java/lang/System$2
-sun/misc/JavaLangAccess
-java/lang/Compiler
-java/lang/Compiler$1
-sun/misc/Launcher
-sun/misc/Launcher$Factory
-java/net/URLStreamHandlerFactory
-sun/misc/Launcher$ExtClassLoader
-java/net/URLClassLoader
-java/security/SecureClassLoader
-sun/security/util/Debug
-java/net/URLClassLoader$7
-sun/misc/JavaNetAccess
-java/util/StringTokenizer
-sun/misc/Launcher$ExtClassLoader$1
-java/security/PrivilegedExceptionAction
-sun/misc/MetaIndex
-java/io/BufferedReader
-java/io/Reader
-java/io/FileReader
-java/io/InputStreamReader
-sun/nio/cs/StreamDecoder
-java/lang/reflect/Array
-sun/net/www/ParseUtil
-java/util/BitSet
-java/io/ObjectStreamClass
-java/net/URL
+java/util/LinkedHashMap$LinkedEntryIterator
+java/util/LinkedHashMap$LinkedEntrySet
+java/util/LinkedHashMap$LinkedHashIterator
+java/util/LinkedHashMap$LinkedKeyIterator
+java/util/LinkedHashMap$LinkedKeySet
+java/util/LinkedList
+java/util/LinkedList$ListItr
+java/util/LinkedList$Node
+java/util/List
+java/util/ListIterator
+java/util/ListResourceBundle
java/util/Locale
-java/util/concurrent/ConcurrentHashMap
-java/util/concurrent/ConcurrentMap
-java/util/concurrent/ConcurrentHashMap$Segment
-java/util/concurrent/locks/ReentrantLock
-java/util/concurrent/locks/Lock
-java/util/concurrent/locks/ReentrantLock$NonfairSync
-java/util/concurrent/locks/ReentrantLock$Sync
-java/util/concurrent/locks/AbstractQueuedSynchronizer
-java/util/concurrent/locks/AbstractOwnableSynchronizer
-java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
-java/util/concurrent/ConcurrentHashMap$HashEntry
-java/lang/CharacterDataLatin1
-java/net/Parts
-sun/net/www/protocol/file/Handler
-java/net/URLStreamHandler
-java/util/HashSet
-sun/misc/URLClassPath
-sun/net/www/protocol/jar/Handler
-sun/misc/Launcher$AppClassLoader
-sun/misc/Launcher$AppClassLoader$1
-java/lang/SystemClassLoaderAction
-java/net/URLClassLoader$1
-sun/misc/URLClassPath$3
-sun/misc/URLClassPath$JarLoader
-sun/misc/URLClassPath$Loader
-java/security/PrivilegedActionException
-sun/misc/URLClassPath$FileLoader
-sun/misc/URLClassPath$FileLoader$1
-sun/misc/Resource
-sun/nio/ByteBuffered
-java/security/CodeSource
-java/security/Permissions
-java/security/PermissionCollection
-sun/net/www/protocol/file/FileURLConnection
-sun/net/www/URLConnection
-java/net/URLConnection
-java/net/UnknownContentHandler
-java/net/ContentHandler
-sun/net/www/MessageHeader
-java/io/FilePermission
-java/io/FilePermission$1
-sun/security/provider/PolicyFile
-java/security/Policy
-java/security/Policy$UnsupportedEmptyCollection
-java/io/FilePermissionCollection
-java/security/AllPermission
-java/security/UnresolvedPermission
-java/security/BasicPermissionCollection
-java/security/Principal
-java/security/cert/Certificate
-java/util/AbstractList$Itr
-java/util/IdentityHashMap$KeySet
-java/util/IdentityHashMap$KeyIterator
-java/util/IdentityHashMap$IdentityHashMapIterator
-java/io/DeleteOnExitHook
-java/util/LinkedHashSet
-java/util/HashMap$KeySet
-java/util/LinkedHashMap$KeyIterator
-java/util/LinkedHashMap$LinkedHashIterator
-java/awt/Frame
-java/awt/MenuContainer
-java/awt/Window
-javax/accessibility/Accessible
-java/awt/Container
-java/awt/Component
-java/awt/image/ImageObserver
-java/lang/InterruptedException
-java/awt/Label
-java/util/logging/Logger
-java/util/logging/Handler
-java/util/logging/Level
-java/util/logging/LogManager
-java/util/logging/LogManager$1
-java/beans/PropertyChangeSupport
-java/util/logging/LogManager$LogNode
-java/util/logging/LoggingPermission
-java/util/logging/LogManager$Cleaner
-java/util/logging/LogManager$RootLogger
-java/util/logging/LogManager$2
+java/util/Locale$1
+java/util/Locale$Cache
+java/util/Locale$Category
+java/util/Locale$LocaleKey
+java/util/Map
+java/util/Map$Entry
+java/util/MissingResourceException
+java/util/NavigableMap
+java/util/NavigableSet
+java/util/Objects
+java/util/PriorityQueue
+java/util/Properties
java/util/Properties$LineReader
-java/util/Hashtable$Enumerator
-java/beans/PropertyChangeEvent
-java/util/EventObject
-java/awt/Component$AWTTreeLock
-sun/awt/NativeLibLoader
-sun/security/action/LoadLibraryAction
-java/awt/GraphicsEnvironment
-java/awt/GraphicsEnvironment$1
-java/lang/ProcessEnvironment
-java/lang/ProcessEnvironment$Variable
-java/lang/ProcessEnvironment$ExternalData
-java/lang/ProcessEnvironment$Value
-java/lang/ProcessEnvironment$StringEnvironment
-java/util/Collections$UnmodifiableMap
-java/awt/Toolkit
-java/awt/Toolkit$3
-sun/util/CoreResourceBundleControl
-java/util/ResourceBundle$Control
-java/util/Arrays$ArrayList
-java/util/Collections$UnmodifiableRandomAccessList
-java/util/Collections$UnmodifiableList
-java/util/Collections$UnmodifiableCollection
+java/util/PropertyResourceBundle
+java/util/Queue
+java/util/Random
+java/util/RandomAccess
java/util/ResourceBundle
java/util/ResourceBundle$1
+java/util/ResourceBundle$BundleReference
+java/util/ResourceBundle$CacheKey
+java/util/ResourceBundle$CacheKeyReference
+java/util/ResourceBundle$Control
+java/util/ResourceBundle$Control$1
+java/util/ResourceBundle$Control$CandidateListCache
+java/util/ResourceBundle$LoaderReference
java/util/ResourceBundle$RBClassLoader
java/util/ResourceBundle$RBClassLoader$1
-java/util/ResourceBundle$CacheKey
-java/util/ResourceBundle$LoaderReference
-java/util/ResourceBundle$CacheKeyReference
java/util/ResourceBundle$SingleFormatControl
-sun/awt/resources/awt
-java/util/ListResourceBundle
-java/awt/Toolkit$1
-java/io/FileNotFoundException
-java/io/IOException
-java/awt/event/KeyEvent
-java/awt/event/InputEvent
-java/awt/event/ComponentEvent
-java/awt/AWTEvent
-java/awt/event/NativeLibLoader
+java/util/ServiceLoader
+java/util/ServiceLoader$1
+java/util/ServiceLoader$LazyIterator
+java/util/Set
+java/util/SortedMap
+java/util/SortedSet
+java/util/Stack
+java/util/StringTokenizer
+java/util/TimSort
+java/util/TimeZone
+java/util/TimeZone$1
+java/util/TreeMap
+java/util/TreeMap$Entry
+java/util/TreeSet
+java/util/Vector
+java/util/Vector$1
+java/util/Vector$Itr
+java/util/Vector$ListItr
java/util/WeakHashMap
java/util/WeakHashMap$Entry
-java/awt/Component$DummyRequestFocusController
-sun/awt/RequestFocusController
-java/awt/LayoutManager
-java/awt/LightweightDispatcher
-java/awt/event/AWTEventListener
-java/util/EventListener
-java/awt/Dimension
-java/awt/geom/Dimension2D
+java/util/WeakHashMap$KeySet
+java/util/concurrent/BlockingQueue
+java/util/concurrent/ConcurrentHashMap
+java/util/concurrent/ConcurrentHashMap$BaseIterator
+java/util/concurrent/ConcurrentHashMap$CollectionView
+java/util/concurrent/ConcurrentHashMap$CounterCell
+java/util/concurrent/ConcurrentHashMap$EntrySetView
+java/util/concurrent/ConcurrentHashMap$ForwardingNode
+java/util/concurrent/ConcurrentHashMap$KeyIterator
+java/util/concurrent/ConcurrentHashMap$KeySetView
+java/util/concurrent/ConcurrentHashMap$Node
+java/util/concurrent/ConcurrentHashMap$Segment
+java/util/concurrent/ConcurrentHashMap$Traverser
+java/util/concurrent/ConcurrentHashMap$ValueIterator
+java/util/concurrent/ConcurrentHashMap$ValuesView
+java/util/concurrent/ConcurrentMap
+java/util/concurrent/ConcurrentNavigableMap
+java/util/concurrent/ConcurrentSkipListMap
+java/util/concurrent/ConcurrentSkipListMap$EntrySet
+java/util/concurrent/ConcurrentSkipListMap$HeadIndex
+java/util/concurrent/ConcurrentSkipListMap$Index
+java/util/concurrent/ConcurrentSkipListMap$KeySet
+java/util/concurrent/ConcurrentSkipListMap$Node
+java/util/concurrent/ConcurrentSkipListMap$Values
+java/util/concurrent/ConcurrentSkipListSet
+java/util/concurrent/CopyOnWriteArrayList
+java/util/concurrent/DelayQueue
+java/util/concurrent/Delayed
+java/util/concurrent/ThreadLocalRandom
+java/util/concurrent/TimeUnit
+java/util/concurrent/TimeUnit$1
+java/util/concurrent/TimeUnit$2
+java/util/concurrent/TimeUnit$3
+java/util/concurrent/TimeUnit$4
+java/util/concurrent/TimeUnit$5
+java/util/concurrent/TimeUnit$6
+java/util/concurrent/TimeUnit$7
java/util/concurrent/atomic/AtomicBoolean
-java/awt/ComponentOrientation
-java/awt/Component$2
-java/lang/NoSuchMethodException
-sun/awt/AppContext
-sun/awt/AppContext$1
-sun/awt/AppContext$2
-sun/awt/MostRecentKeyValue
-java/awt/Cursor
-sun/awt/X11GraphicsEnvironment
-sun/java2d/SunGraphicsEnvironment
-sun/java2d/FontSupport
-sun/awt/DisplayChangedListener
-java/io/FilenameFilter
-sun/awt/X11GraphicsEnvironment$1
-sun/awt/SunToolkit
-sun/awt/WindowClosingSupport
-sun/awt/WindowClosingListener
-sun/awt/ComponentFactory
-sun/awt/InputMethodSupport
+java/util/concurrent/atomic/AtomicInteger
+java/util/concurrent/atomic/AtomicLong
+java/util/concurrent/atomic/AtomicMarkableReference
+java/util/concurrent/atomic/AtomicMarkableReference$Pair
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl$1
+java/util/concurrent/locks/AbstractOwnableSynchronizer
+java/util/concurrent/locks/AbstractQueuedSynchronizer
java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
+java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
java/util/concurrent/locks/Condition
-sun/awt/AWTAutoShutdown
-sun/awt/SunToolkit$6
-java/awt/Dialog$ModalExclusionType
-java/lang/Enum
-java/awt/Dialog
-java/awt/Dialog$ModalityType
-java/awt/ModalEventFilter
-java/awt/EventFilter
-sun/reflect/UnsafeFieldAccessorFactory
-sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
-sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
-sun/awt/SunDisplayChanger
-sun/java2d/SunGraphicsEnvironment$1
-sun/font/FontManager
-sun/font/FileFont
-sun/font/PhysicalFont
-sun/font/Font2D
-sun/font/CompositeFont
-java/util/HashMap$Values
-java/util/HashMap$ValueIterator
-java/util/HashMap$HashIterator
-java/awt/Font
-java/awt/geom/AffineTransform
-sun/font/AttributeValues
-sun/font/EAttribute
-java/text/AttributedCharacterIterator$Attribute
-java/lang/Class$4
-sun/reflect/NativeMethodAccessorImpl
-sun/reflect/DelegatingMethodAccessorImpl
-java/awt/font/TextAttribute
-java/lang/Integer$IntegerCache
-sun/font/TrueTypeFont
-java/awt/font/FontRenderContext
-java/awt/RenderingHints
-sun/awt/SunHints
-sun/awt/SunHints$Key
-java/awt/RenderingHints$Key
-sun/awt/SunHints$Value
-sun/awt/SunHints$LCDContrastKey
-sun/font/Type1Font
-java/awt/geom/Point2D$Float
-java/awt/geom/Point2D
-sun/font/StrikeMetrics
-java/awt/geom/Rectangle2D$Float
-java/awt/geom/Rectangle2D
-java/awt/geom/RectangularShape
-java/awt/Shape
-java/awt/geom/GeneralPath
-java/awt/geom/Path2D$Float
-java/awt/geom/Path2D
-sun/font/CharToGlyphMapper
-sun/font/PhysicalStrike
-sun/font/FontStrike
-sun/font/GlyphList
-sun/font/StrikeCache
-sun/java2d/Disposer
-sun/java2d/Disposer$1
-sun/font/StrikeCache$1
-sun/awt/motif/MFontConfiguration
-sun/awt/FontConfiguration
-sun/awt/FontDescriptor
-java/io/DataInputStream
-java/io/DataInput
-java/lang/Short$ShortCache
-java/util/HashMap$KeyIterator
-sun/font/CompositeFontDescriptor
-sun/font/Font2DHandle
-sun/font/FontFamily
-java/awt/GraphicsDevice
-sun/awt/X11GraphicsDevice
-sun/awt/X11GraphicsConfig
-java/awt/GraphicsConfiguration
-java/awt/ImageCapabilities
-sun/java2d/x11/X11SurfaceData
-sun/java2d/SurfaceData
-java/awt/Transparency
-sun/java2d/DisposerTarget
-sun/java2d/InvalidPipeException
-java/lang/IllegalStateException
-sun/java2d/NullSurfaceData
-sun/java2d/loops/SurfaceType
-sun/awt/image/PixelConverter
-sun/awt/image/PixelConverter$Xrgb
-sun/awt/image/PixelConverter$Argb
-sun/awt/image/PixelConverter$ArgbPre
-sun/awt/image/PixelConverter$Xbgr
-sun/awt/image/PixelConverter$Rgba
-sun/awt/image/PixelConverter$RgbaPre
-sun/awt/image/PixelConverter$Ushort565Rgb
-sun/awt/image/PixelConverter$Ushort555Rgb
-sun/awt/image/PixelConverter$Ushort555Rgbx
-sun/awt/image/PixelConverter$Ushort4444Argb
-sun/awt/image/PixelConverter$ByteGray
-sun/awt/image/PixelConverter$UshortGray
-sun/awt/image/PixelConverter$Rgbx
-sun/awt/image/PixelConverter$Bgrx
-sun/awt/image/PixelConverter$ArgbBm
-java/awt/image/ColorModel
-java/awt/image/DirectColorModel
-java/awt/image/PackedColorModel
-java/awt/color/ColorSpace
-java/awt/color/ICC_Profile
-java/awt/color/ICC_ProfileRGB
-java/awt/color/ICC_Profile$1
-java/awt/color/ICC_ColorSpace
-sun/java2d/pipe/NullPipe
-sun/java2d/pipe/PixelDrawPipe
-sun/java2d/pipe/PixelFillPipe
-sun/java2d/pipe/ShapeDrawPipe
-sun/java2d/pipe/TextPipe
-sun/java2d/pipe/DrawImagePipe
-java/awt/image/IndexColorModel
-sun/java2d/pipe/LoopPipe
-sun/java2d/pipe/OutlineTextRenderer
-sun/java2d/pipe/SolidTextRenderer
-sun/java2d/pipe/GlyphListLoopPipe
-sun/java2d/pipe/GlyphListPipe
-sun/java2d/pipe/AATextRenderer
-sun/java2d/pipe/LCDTextRenderer
-sun/java2d/pipe/AlphaColorPipe
-sun/java2d/pipe/CompositePipe
-sun/java2d/pipe/PixelToShapeConverter
-sun/java2d/pipe/TextRenderer
-sun/java2d/pipe/SpanClipRenderer
-sun/java2d/pipe/Region
-sun/java2d/pipe/RegionIterator
-sun/java2d/pipe/AlphaPaintPipe
-sun/java2d/pipe/SpanShapeRenderer$Composite
-sun/java2d/pipe/SpanShapeRenderer
-sun/java2d/pipe/GeneralCompositePipe
-sun/java2d/pipe/DrawImage
-sun/java2d/loops/RenderCache
-sun/java2d/loops/RenderCache$Entry
-sun/java2d/loops/XORComposite
-java/awt/Composite
-sun/font/X11TextRenderer
-sun/java2d/loops/GraphicsPrimitive
-sun/java2d/x11/X11PMBlitLoops
-sun/java2d/loops/Blit
-sun/java2d/loops/GraphicsPrimitiveMgr
-sun/java2d/loops/CompositeType
-sun/java2d/SunGraphics2D
-sun/awt/ConstrainableGraphics
-java/awt/Graphics2D
-java/awt/Graphics
-java/awt/Color
-java/awt/Paint
-java/awt/AlphaComposite
-sun/java2d/loops/BlitBg
-sun/java2d/loops/ScaledBlit
-sun/java2d/loops/FillRect
-sun/java2d/loops/FillSpans
-sun/java2d/loops/DrawLine
-sun/java2d/loops/DrawRect
-sun/java2d/loops/DrawPolygons
-sun/java2d/loops/DrawPath
-sun/java2d/loops/FillPath
-sun/java2d/loops/MaskBlit
-sun/java2d/loops/MaskFill
-sun/java2d/loops/DrawGlyphList
-sun/java2d/loops/DrawGlyphListAA
-sun/java2d/loops/DrawGlyphListLCD
-sun/java2d/loops/TransformHelper
-java/awt/BasicStroke
-java/awt/Stroke
-sun/misc/PerformanceLogger
-sun/misc/PerformanceLogger$TimeData
-sun/java2d/pipe/ValidatePipe
-sun/java2d/loops/CustomComponent
-sun/java2d/loops/GraphicsPrimitiveProxy
-sun/java2d/loops/GeneralRenderer
-sun/java2d/loops/GraphicsPrimitiveMgr$1
-sun/java2d/loops/GraphicsPrimitiveMgr$2
-sun/java2d/x11/X11PMBlitLoops$DelegateBlitLoop
-sun/java2d/x11/X11PMBlitBgLoops
-sun/java2d/x11/X11SurfaceData$LazyPipe
-sun/awt/X11GraphicsConfig$X11GCDisposerRecord
-sun/java2d/DisposerRecord
-java/awt/BorderLayout
-java/awt/LayoutManager2
-java/awt/Rectangle
-java/awt/Toolkit$2
-sun/awt/X11/XToolkit
-sun/awt/X11/XConstants
-sun/awt/UNIXToolkit
-java/util/TreeMap
-java/util/NavigableMap
-java/util/SortedMap
-sun/awt/X11/XlibWrapper
-sun/awt/X11/XUtilConstants
-sun/awt/X11/XProtocolConstants
-sun/awt/X11/XCursorFontConstants
-sun/awt/X11/XlibWrapper$1
-sun/awt/X11/XToolkit$4
-sun/awt/X11/XModifierKeymap
-sun/awt/X11/XWrapperBase
-sun/awt/X11/Native
-sun/awt/X11/Native$1
-java/awt/EventQueue
-java/util/EmptyStackException
-java/lang/reflect/InvocationTargetException
-java/awt/EventDispatchThread
-java/awt/event/PaintEvent
-java/awt/event/MouseEvent
-sun/awt/PeerEvent
-java/awt/event/InvocationEvent
-java/awt/ActiveEvent
-sun/awt/X11/XToolkit$1
-sun/awt/X11/XEventDispatcher
-sun/awt/SunToolkit$ModalityListenerList
-sun/awt/ModalityListener
-sun/awt/SunToolkit$1
-java/util/MissingResourceException
-java/awt/Queue
-sun/awt/PostEventQueue
-java/util/LinkedList
-java/util/Deque
-java/util/Queue
-java/util/AbstractSequentialList
-sun/awt/X11/AwtScreenData
-sun/awt/X11/XWM
-sun/awt/X11/MWMConstants
-sun/awt/X11/XAtom
-java/awt/Insets
-sun/awt/X11/XWM$1
-sun/awt/X11/XSetWindowAttributes
-sun/awt/X11/XErrorEvent
-sun/awt/X11/XNETProtocol
-sun/awt/X11/XStateProtocol
-sun/awt/X11/XLayerProtocol
-sun/awt/X11/XProtocol
-java/lang/Long$LongCache
-sun/awt/X11/WindowPropertyGetter
-sun/awt/X11/UnsafeXDisposerRecord
-sun/awt/X11/XPropertyCache
-sun/awt/X11/XWINProtocol
-sun/awt/X11/XAtomList
-sun/awt/X11/XToolkit$3
-java/awt/Window$WindowDisposerRecord
-sun/awt/X11/XAnyEvent
-java/awt/KeyboardFocusManager
-java/awt/KeyEventDispatcher
-java/awt/KeyEventPostProcessor
-java/awt/AWTKeyStroke
-java/awt/AWTKeyStroke$1
-java/awt/DefaultKeyboardFocusManager
-java/awt/DefaultFocusTraversalPolicy
-java/awt/ContainerOrderFocusTraversalPolicy
-java/awt/FocusTraversalPolicy
-java/util/Collections$UnmodifiableSet
-sun/awt/HeadlessToolkit
-sun/awt/X11/XKeyboardFocusManagerPeer
-java/awt/peer/KeyboardFocusManagerPeer
-sun/awt/X11/XKeyboardFocusManagerPeer$1
-sun/awt/X11/XFramePeer
-java/awt/peer/FramePeer
-java/awt/peer/WindowPeer
-java/awt/peer/ContainerPeer
-java/awt/peer/ComponentPeer
-sun/awt/X11/XDecoratedPeer
-sun/awt/X11/XWindowPeer
-sun/awt/X11/XPanelPeer
-java/awt/peer/PanelPeer
-sun/awt/X11/XCanvasPeer
-java/awt/peer/CanvasPeer
-sun/awt/X11/XComponentPeer
-java/awt/dnd/peer/DropTargetPeer
-sun/awt/X11/XWindow
-sun/awt/X11ComponentPeer
-sun/awt/X11/XBaseWindow
-sun/awt/X11/XCreateWindowParams
-sun/awt/X11/XBaseWindow$InitialiseState
-sun/awt/X11/XBaseWindow$StateLock
-sun/awt/X11/AwtGraphicsConfigData
-sun/awt/X11/XVisualInfo
-java/awt/SystemColor
-sun/awt/X11/MotifColorUtilities
+java/util/concurrent/locks/Lock
java/util/concurrent/locks/LockSupport
-sun/nio/ch/Interruptible
-java/lang/StringIndexOutOfBoundsException
-java/lang/IndexOutOfBoundsException
-java/lang/StrictMath
-sun/awt/X11/XRepaintArea
-sun/awt/RepaintArea
-sun/awt/X11/XWindowAttributesData
-sun/awt/X11/WindowDimensions
-java/awt/Point
-java/util/TreeMap$Entry
-sun/awt/X11/XRootWindow
-sun/nio/cs/ISO_8859_1
-sun/nio/cs/ISO_8859_1$Encoder
-sun/nio/cs/ISO_8859_1$Decoder
-sun/awt/X11/XPropertyEvent
-sun/awt/X11/XDropTargetEventProcessor
-sun/awt/X11/XDragSourceContextPeer
-sun/awt/X11/XDragSourceProtocolListener
-sun/awt/dnd/SunDragSourceContextPeer
-java/awt/dnd/peer/DragSourceContextPeer
-sun/awt/X11/XAwtState
-sun/awt/X11/XBaseWindow$1
-sun/java2d/x11/X11SurfaceData$X11WindowSurfaceData
-sun/java2d/loops/RenderLoops
-sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
-sun/java2d/DefaultDisposerRecord
-sun/java2d/x11/X11Renderer
-sun/awt/X11/XGlobalCursorManager
-sun/awt/GlobalCursorManager
-java/awt/Cursor$CursorDisposer
-java/awt/AWTException
-java/awt/HeadlessException
-java/lang/UnsupportedOperationException
-sun/reflect/UnsafeLongFieldAccessorImpl
-sun/reflect/UnsafeIntegerFieldAccessorImpl
-sun/awt/X11/XClientMessageEvent
-sun/awt/X11/XIconInfo
-sun/awt/X11/XAWTIcon32_java_icon16_png
-sun/awt/X11/XAWTIcon32_java_icon24_png
-sun/awt/X11/XAWTIcon32_java_icon32_png
-sun/awt/X11/XAWTIcon32_java_icon48_png
-sun/awt/X11/XSizeHints
-sun/awt/X11/XContentWindow
-sun/awt/X11/XFocusProxyWindow
-sun/awt/X11/XWMHints
-java/util/LinkedList$ListItr
-java/util/ListIterator
-sun/awt/SunToolkit$2
-java/awt/image/BufferStrategy
-java/awt/dnd/DropTarget
-java/awt/dnd/DropTargetListener
-java/awt/event/ComponentListener
-java/awt/event/FocusListener
-java/awt/event/HierarchyListener
-java/awt/event/HierarchyBoundsListener
-java/awt/event/KeyListener
-java/awt/event/MouseListener
-java/awt/event/MouseMotionListener
-java/awt/event/MouseWheelListener
-java/awt/event/InputMethodListener
-java/awt/event/ContainerListener
+java/util/concurrent/locks/ReentrantLock
+java/util/concurrent/locks/ReentrantLock$NonfairSync
+java/util/concurrent/locks/ReentrantLock$Sync
+java/util/function/BiFunction
+java/util/jar/Attributes
+java/util/jar/Attributes$Name
+java/util/jar/JarEntry
+java/util/jar/JarFile
+java/util/jar/JarFile$JarEntryIterator
+java/util/jar/JarFile$JarFileEntry
+java/util/jar/JarVerifier
+java/util/jar/JarVerifier$3
+java/util/jar/JarVerifier$VerifierStream
+java/util/jar/JavaUtilJarAccessImpl
+java/util/jar/Manifest
+java/util/jar/Manifest$FastInputStream
+java/util/logging/Handler
+java/util/logging/Level
+java/util/logging/Level$KnownLevel
+java/util/logging/LogManager
+java/util/logging/LogManager$1
+java/util/logging/LogManager$2
+java/util/logging/LogManager$3
+java/util/logging/LogManager$5
+java/util/logging/LogManager$Cleaner
+java/util/logging/LogManager$LogNode
+java/util/logging/LogManager$LoggerContext
+java/util/logging/LogManager$LoggerContext$1
+java/util/logging/LogManager$LoggerWeakRef
+java/util/logging/LogManager$RootLogger
+java/util/logging/LogManager$SystemLoggerContext
+java/util/logging/Logger
+java/util/logging/Logger$1
+java/util/logging/LoggingPermission
+java/util/logging/LoggingProxyImpl
+java/util/regex/MatchResult
+java/util/regex/Matcher
+java/util/regex/Pattern
+java/util/regex/Pattern$4
+java/util/regex/Pattern$BnM
+java/util/regex/Pattern$GroupHead
+java/util/regex/Pattern$LastNode
+java/util/regex/Pattern$Node
+java/util/regex/Pattern$Slice
+java/util/regex/Pattern$SliceNode
+java/util/regex/Pattern$Start
+java/util/regex/Pattern$TreeInfo
+java/util/spi/CalendarDataProvider
+java/util/spi/CurrencyNameProvider
+java/util/spi/LocaleNameProvider
+java/util/spi/LocaleServiceProvider
+java/util/spi/ResourceBundleControlProvider
+java/util/spi/TimeZoneNameProvider
+java/util/zip/CRC32
+java/util/zip/Checksum
+java/util/zip/DeflaterOutputStream
+java/util/zip/GZIPInputStream
+java/util/zip/Inflater
+java/util/zip/InflaterInputStream
+java/util/zip/ZStreamRef
+java/util/zip/ZipCoder
+java/util/zip/ZipConstants
+java/util/zip/ZipEntry
+java/util/zip/ZipFile
+java/util/zip/ZipFile$1
+java/util/zip/ZipFile$ZipEntryIterator
+java/util/zip/ZipFile$ZipFileInflaterInputStream
+java/util/zip/ZipFile$ZipFileInputStream
+java/util/zip/ZipInputStream
+java/util/zip/ZipUtils
+javax/accessibility/Accessible
+javax/accessibility/AccessibleAction
+javax/accessibility/AccessibleBundle
+javax/accessibility/AccessibleComponent
javax/accessibility/AccessibleContext
-sun/reflect/UnsafeObjectFieldAccessorImpl
-java/awt/peer/LightweightPeer
-sun/awt/X11/XLabelPeer
-java/awt/peer/LabelPeer
-sun/awt/X11/XQueryTree
-sun/awt/X11/XMapEvent
-sun/awt/X11/XConfigureEvent
-sun/awt/X11/PropMwmHints
-sun/awt/GlobalCursorManager$NativeUpdater
-javax/swing/JFrame
-javax/swing/WindowConstants
-javax/swing/RootPaneContainer
-javax/swing/TransferHandler$HasGetTransferHandler
-javax/swing/JLabel
-javax/swing/SwingConstants
+javax/accessibility/AccessibleExtendedComponent
+javax/accessibility/AccessibleRelationSet
+javax/accessibility/AccessibleState
+javax/accessibility/AccessibleText
+javax/accessibility/AccessibleValue
+javax/crypto/SecretKey
+javax/security/auth/Destroyable
+javax/security/auth/login/FailedLoginException
+javax/security/auth/login/LoginException
+javax/security/auth/x500/X500Principal
+javax/sound/sampled/Control$Type
+javax/sound/sampled/DataLine
+javax/sound/sampled/DataLine$Info
+javax/sound/sampled/FloatControl$Type
+javax/sound/sampled/Line
+javax/sound/sampled/Line$Info
+javax/sound/sampled/LineUnavailableException
+javax/sound/sampled/UnsupportedAudioFileException
+javax/swing/AbstractAction
+javax/swing/AbstractButton
+javax/swing/AbstractButton$AccessibleAbstractButton
+javax/swing/AbstractButton$Handler
+javax/swing/AbstractCellEditor
+javax/swing/AbstractListModel
+javax/swing/Action
+javax/swing/ActionMap
+javax/swing/AncestorNotifier
+javax/swing/ArrayTable
+javax/swing/BorderFactory
+javax/swing/BoundedRangeModel
+javax/swing/Box
+javax/swing/Box$Filler
+javax/swing/BoxLayout
+javax/swing/BufferStrategyPaintManager
+javax/swing/BufferStrategyPaintManager$BufferInfo
+javax/swing/ButtonGroup
+javax/swing/ButtonModel
+javax/swing/CellEditor
+javax/swing/CellRendererPane
+javax/swing/ClientPropertyKey
+javax/swing/ClientPropertyKey$1
+javax/swing/ComboBoxEditor
+javax/swing/ComboBoxModel
+javax/swing/ComponentInputMap
+javax/swing/DefaultBoundedRangeModel
+javax/swing/DefaultButtonModel
+javax/swing/DefaultCellEditor
+javax/swing/DefaultCellEditor$1
+javax/swing/DefaultCellEditor$EditorDelegate
+javax/swing/DefaultComboBoxModel
+javax/swing/DefaultListCellRenderer
+javax/swing/DefaultListCellRenderer$UIResource
+javax/swing/DefaultListModel
+javax/swing/DefaultListSelectionModel
+javax/swing/DefaultSingleSelectionModel
+javax/swing/DropMode
+javax/swing/FocusManager
+javax/swing/GrayFilter
+javax/swing/Icon
+javax/swing/ImageIcon
+javax/swing/ImageIcon$1
+javax/swing/ImageIcon$2
+javax/swing/ImageIcon$2$1
+javax/swing/ImageIcon$3
+javax/swing/InputMap
+javax/swing/InternalFrameFocusTraversalPolicy
+javax/swing/JButton
+javax/swing/JCheckBox
+javax/swing/JCheckBoxMenuItem
+javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem
+javax/swing/JComboBox
+javax/swing/JComboBox$1
+javax/swing/JComboBox$KeySelectionManager
javax/swing/JComponent
javax/swing/JComponent$1
-javax/swing/SwingUtilities
-javax/swing/JRootPane
-sun/security/action/GetBooleanAction
-javax/swing/event/EventListenerList
+javax/swing/JComponent$2
+javax/swing/JComponent$AccessibleJComponent
+javax/swing/JDialog
+javax/swing/JEditorPane
+javax/swing/JFrame
+javax/swing/JInternalFrame
+javax/swing/JLabel
+javax/swing/JLayer
+javax/swing/JLayeredPane
+javax/swing/JList
+javax/swing/JList$3
+javax/swing/JList$ListSelectionHandler
+javax/swing/JMenu
+javax/swing/JMenu$MenuChangeListener
+javax/swing/JMenu$WinListener
+javax/swing/JMenuBar
+javax/swing/JMenuItem
+javax/swing/JMenuItem$AccessibleJMenuItem
+javax/swing/JMenuItem$MenuItemFocusListener
javax/swing/JPanel
-java/awt/FlowLayout
-javax/swing/UIManager
-javax/swing/UIManager$LookAndFeelInfo
-sun/swing/SwingUtilities2
-sun/swing/SwingUtilities2$LSBCacheEntry
-javax/swing/UIManager$LAFState
-javax/swing/UIDefaults
+javax/swing/JPopupMenu
+javax/swing/JPopupMenu$Separator
+javax/swing/JProgressBar
+javax/swing/JProgressBar$ModelListener
+javax/swing/JRadioButton
+javax/swing/JRadioButtonMenuItem
+javax/swing/JRootPane
+javax/swing/JRootPane$1
+javax/swing/JRootPane$RootLayout
+javax/swing/JScrollBar
+javax/swing/JScrollBar$ModelListener
+javax/swing/JScrollPane
+javax/swing/JScrollPane$ScrollBar
+javax/swing/JSeparator
+javax/swing/JSlider
+javax/swing/JSlider$ModelListener
+javax/swing/JSplitPane
+javax/swing/JTabbedPane
+javax/swing/JTabbedPane$ModelListener
+javax/swing/JTabbedPane$Page
+javax/swing/JTable
+javax/swing/JTable$2
+javax/swing/JTable$5
+javax/swing/JTable$Resizable2
+javax/swing/JTable$Resizable3
+javax/swing/JTextArea
+javax/swing/JTextField
+javax/swing/JTextField$NotifyAction
+javax/swing/JTextField$ScrollRepainter
+javax/swing/JToggleButton
+javax/swing/JToggleButton$ToggleButtonModel
+javax/swing/JToolBar
+javax/swing/JToolBar$DefaultToolBarLayout
+javax/swing/JToolBar$Separator
+javax/swing/JToolTip
+javax/swing/JTree
+javax/swing/JTree$TreeModelHandler
+javax/swing/JTree$TreeSelectionRedirector
+javax/swing/JViewport
+javax/swing/JViewport$ViewListener
+javax/swing/JWindow
+javax/swing/KeyStroke
+javax/swing/KeyboardManager
+javax/swing/KeyboardManager$ComponentKeyStrokePair
+javax/swing/LayoutComparator
+javax/swing/LayoutFocusTraversalPolicy
+javax/swing/ListCellRenderer
+javax/swing/ListModel
+javax/swing/ListSelectionModel
+javax/swing/LookAndFeel
+javax/swing/MenuElement
+javax/swing/MenuSelectionManager
javax/swing/MultiUIDefaults
+javax/swing/MutableComboBoxModel
+javax/swing/RepaintManager
+javax/swing/RepaintManager$2
+javax/swing/RepaintManager$3
+javax/swing/RepaintManager$DisplayChangedHandler
+javax/swing/RepaintManager$PaintManager
+javax/swing/RepaintManager$ProcessingRunnable
+javax/swing/RootPaneContainer
+javax/swing/ScrollPaneConstants
+javax/swing/ScrollPaneLayout
+javax/swing/ScrollPaneLayout$UIResource
+javax/swing/Scrollable
+javax/swing/SingleSelectionModel
+javax/swing/SizeRequirements
+javax/swing/SortingFocusTraversalPolicy
+javax/swing/SwingConstants
+javax/swing/SwingContainerOrderFocusTraversalPolicy
+javax/swing/SwingDefaultFocusTraversalPolicy
+javax/swing/SwingPaintEventDispatcher
+javax/swing/SwingUtilities
+javax/swing/SwingUtilities$SharedOwnerFrame
+javax/swing/Timer
+javax/swing/Timer$DoPostEvent
+javax/swing/TimerQueue
+javax/swing/TimerQueue$1
+javax/swing/TimerQueue$DelayedTimer
+javax/swing/ToolTipManager
+javax/swing/ToolTipManager$AccessibilityKeyListener
+javax/swing/ToolTipManager$MoveBeforeEnterListener
+javax/swing/ToolTipManager$insideTimerAction
+javax/swing/ToolTipManager$outsideTimerAction
+javax/swing/ToolTipManager$stillInsideTimerAction
+javax/swing/TransferHandler
+javax/swing/TransferHandler$DropHandler
+javax/swing/TransferHandler$HasGetTransferHandler
+javax/swing/TransferHandler$SwingDropTarget
+javax/swing/TransferHandler$TransferAction
+javax/swing/TransferHandler$TransferSupport
+javax/swing/UIDefaults
+javax/swing/UIDefaults$ActiveValue
+javax/swing/UIDefaults$LazyInputMap
+javax/swing/UIDefaults$LazyValue
+javax/swing/UIDefaults$TextAndMnemonicHashMap
+javax/swing/UIManager
javax/swing/UIManager$1
-javax/swing/plaf/metal/MetalLookAndFeel
-javax/swing/plaf/basic/BasicLookAndFeel
-javax/swing/LookAndFeel
-sun/swing/DefaultLookup
-javax/swing/plaf/metal/OceanTheme
-javax/swing/plaf/metal/DefaultMetalTheme
-javax/swing/plaf/metal/MetalTheme
+javax/swing/UIManager$2
+javax/swing/UIManager$LAFState
+javax/swing/UIManager$LookAndFeelInfo
+javax/swing/UnsupportedLookAndFeelException
+javax/swing/ViewportLayout
+javax/swing/WindowConstants
+javax/swing/border/AbstractBorder
+javax/swing/border/BevelBorder
+javax/swing/border/Border
+javax/swing/border/CompoundBorder
+javax/swing/border/EmptyBorder
+javax/swing/border/EtchedBorder
+javax/swing/border/LineBorder
+javax/swing/border/MatteBorder
+javax/swing/border/TitledBorder
+javax/swing/event/AncestorEvent
+javax/swing/event/AncestorListener
+javax/swing/event/CaretEvent
+javax/swing/event/CaretListener
+javax/swing/event/CellEditorListener
+javax/swing/event/ChangeEvent
+javax/swing/event/ChangeListener
+javax/swing/event/DocumentEvent
+javax/swing/event/DocumentEvent$ElementChange
+javax/swing/event/DocumentEvent$EventType
+javax/swing/event/DocumentListener
+javax/swing/event/EventListenerList
+javax/swing/event/ListDataEvent
+javax/swing/event/ListDataListener
+javax/swing/event/ListSelectionEvent
+javax/swing/event/ListSelectionListener
+javax/swing/event/MenuDragMouseListener
+javax/swing/event/MenuEvent
+javax/swing/event/MenuKeyListener
+javax/swing/event/MenuListener
+javax/swing/event/MouseInputAdapter
+javax/swing/event/MouseInputListener
+javax/swing/event/PopupMenuListener
+javax/swing/event/RowSorterListener
+javax/swing/event/SwingPropertyChangeSupport
+javax/swing/event/TableColumnModelEvent
+javax/swing/event/TableColumnModelListener
+javax/swing/event/TableModelEvent
+javax/swing/event/TableModelListener
+javax/swing/event/TreeExpansionListener
+javax/swing/event/TreeModelEvent
+javax/swing/event/TreeModelListener
+javax/swing/event/TreeSelectionEvent
+javax/swing/event/TreeSelectionListener
+javax/swing/event/UndoableEditEvent
+javax/swing/event/UndoableEditListener
+javax/swing/filechooser/FileFilter
+javax/swing/plaf/ActionMapUIResource
+javax/swing/plaf/BorderUIResource
+javax/swing/plaf/BorderUIResource$CompoundBorderUIResource
+javax/swing/plaf/BorderUIResource$EmptyBorderUIResource
+javax/swing/plaf/BorderUIResource$LineBorderUIResource
+javax/swing/plaf/ButtonUI
javax/swing/plaf/ColorUIResource
-javax/swing/plaf/UIResource
-sun/swing/PrintColorUIResource
-javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
+javax/swing/plaf/ComboBoxUI
+javax/swing/plaf/ComponentInputMapUIResource
+javax/swing/plaf/ComponentUI
+javax/swing/plaf/DimensionUIResource
javax/swing/plaf/FontUIResource
-sun/swing/SwingLazyValue
-javax/swing/UIDefaults$LazyValue
-javax/swing/UIDefaults$ActiveValue
+javax/swing/plaf/InputMapUIResource
javax/swing/plaf/InsetsUIResource
-sun/swing/SwingUtilities2$2
+javax/swing/plaf/LabelUI
+javax/swing/plaf/ListUI
+javax/swing/plaf/MenuBarUI
+javax/swing/plaf/MenuItemUI
+javax/swing/plaf/PanelUI
+javax/swing/plaf/PopupMenuUI
+javax/swing/plaf/ProgressBarUI
+javax/swing/plaf/RootPaneUI
+javax/swing/plaf/ScrollBarUI
+javax/swing/plaf/ScrollPaneUI
+javax/swing/plaf/SeparatorUI
+javax/swing/plaf/SliderUI
+javax/swing/plaf/SplitPaneUI
+javax/swing/plaf/TabbedPaneUI
+javax/swing/plaf/TableHeaderUI
+javax/swing/plaf/TableUI
+javax/swing/plaf/TextUI
+javax/swing/plaf/ToolBarUI
+javax/swing/plaf/TreeUI
+javax/swing/plaf/UIResource
+javax/swing/plaf/ViewportUI
+javax/swing/plaf/basic/BasicArrowButton
+javax/swing/plaf/basic/BasicBorders
+javax/swing/plaf/basic/BasicBorders$ButtonBorder
+javax/swing/plaf/basic/BasicBorders$MarginBorder
+javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
+javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
+javax/swing/plaf/basic/BasicBorders$SplitPaneBorder
+javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder
+javax/swing/plaf/basic/BasicButtonListener
+javax/swing/plaf/basic/BasicButtonUI
+javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
+javax/swing/plaf/basic/BasicComboBoxEditor
+javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
+javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
+javax/swing/plaf/basic/BasicComboBoxRenderer
+javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource
+javax/swing/plaf/basic/BasicComboBoxUI
+javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
+javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
+javax/swing/plaf/basic/BasicComboBoxUI$Handler
+javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicComboPopup
+javax/swing/plaf/basic/BasicComboPopup$1
+javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
+javax/swing/plaf/basic/BasicComboPopup$Handler
+javax/swing/plaf/basic/BasicGraphicsUtils
+javax/swing/plaf/basic/BasicHTML
+javax/swing/plaf/basic/BasicLabelUI
+javax/swing/plaf/basic/BasicListUI
+javax/swing/plaf/basic/BasicListUI$Handler
+javax/swing/plaf/basic/BasicListUI$ListTransferHandler
+javax/swing/plaf/basic/BasicLookAndFeel
+javax/swing/plaf/basic/BasicLookAndFeel$1
javax/swing/plaf/basic/BasicLookAndFeel$2
-javax/swing/plaf/DimensionUIResource
-javax/swing/UIDefaults$LazyInputMap
-java/lang/Character$CharacterCache
-javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
+javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
+javax/swing/plaf/basic/BasicMenuBarUI
+javax/swing/plaf/basic/BasicMenuBarUI$Handler
+javax/swing/plaf/basic/BasicMenuItemUI
+javax/swing/plaf/basic/BasicMenuItemUI$Handler
+javax/swing/plaf/basic/BasicMenuUI
+javax/swing/plaf/basic/BasicMenuUI$Handler
+javax/swing/plaf/basic/BasicPanelUI
+javax/swing/plaf/basic/BasicPopupMenuUI
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1
+javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
+javax/swing/plaf/basic/BasicProgressBarUI
+javax/swing/plaf/basic/BasicProgressBarUI$Handler
+javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
+javax/swing/plaf/basic/BasicRadioButtonUI
+javax/swing/plaf/basic/BasicRootPaneUI
+javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
+javax/swing/plaf/basic/BasicScrollBarUI
+javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener
+javax/swing/plaf/basic/BasicScrollBarUI$Handler
+javax/swing/plaf/basic/BasicScrollBarUI$ModelListener
+javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener
+javax/swing/plaf/basic/BasicScrollBarUI$TrackListener
+javax/swing/plaf/basic/BasicScrollPaneUI
+javax/swing/plaf/basic/BasicScrollPaneUI$Handler
+javax/swing/plaf/basic/BasicSeparatorUI
+javax/swing/plaf/basic/BasicSliderUI
+javax/swing/plaf/basic/BasicSliderUI$Actions
+javax/swing/plaf/basic/BasicSliderUI$Handler
+javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicSliderUI$ScrollListener
+javax/swing/plaf/basic/BasicSliderUI$TrackListener
+javax/swing/plaf/basic/BasicSplitPaneDivider
+javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout
+javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler
+javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler
+javax/swing/plaf/basic/BasicSplitPaneUI
+javax/swing/plaf/basic/BasicSplitPaneUI$1
+javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager
+javax/swing/plaf/basic/BasicSplitPaneUI$Handler
+javax/swing/plaf/basic/BasicTabbedPaneUI
+javax/swing/plaf/basic/BasicTabbedPaneUI$Handler
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout
+javax/swing/plaf/basic/BasicTableHeaderUI
+javax/swing/plaf/basic/BasicTableHeaderUI$1
+javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler
+javax/swing/plaf/basic/BasicTableUI
+javax/swing/plaf/basic/BasicTableUI$Handler
+javax/swing/plaf/basic/BasicTableUI$TableTransferHandler
+javax/swing/plaf/basic/BasicTextAreaUI
+javax/swing/plaf/basic/BasicTextFieldUI
+javax/swing/plaf/basic/BasicTextUI
+javax/swing/plaf/basic/BasicTextUI$BasicCaret
+javax/swing/plaf/basic/BasicTextUI$BasicCursor
+javax/swing/plaf/basic/BasicTextUI$BasicHighlighter
+javax/swing/plaf/basic/BasicTextUI$DragListener
+javax/swing/plaf/basic/BasicTextUI$FocusAction
+javax/swing/plaf/basic/BasicTextUI$RootView
+javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
+javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
+javax/swing/plaf/basic/BasicTextUI$UpdateHandler
+javax/swing/plaf/basic/BasicToggleButtonUI
+javax/swing/plaf/basic/BasicToolBarSeparatorUI
+javax/swing/plaf/basic/BasicToolBarUI
+javax/swing/plaf/basic/BasicToolBarUI$DockingListener
+javax/swing/plaf/basic/BasicToolBarUI$Handler
+javax/swing/plaf/basic/BasicTreeUI
+javax/swing/plaf/basic/BasicTreeUI$Actions
+javax/swing/plaf/basic/BasicTreeUI$Handler
+javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler
+javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler
+javax/swing/plaf/basic/BasicViewportUI
+javax/swing/plaf/basic/ComboPopup
+javax/swing/plaf/basic/DefaultMenuLayout
+javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
+javax/swing/plaf/basic/LazyActionMap
+javax/swing/plaf/metal/DefaultMetalTheme
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
+javax/swing/plaf/metal/MetalBorders
+javax/swing/plaf/metal/MetalBorders$ButtonBorder
+javax/swing/plaf/metal/MetalBorders$Flush3DBorder
+javax/swing/plaf/metal/MetalBorders$MenuBarBorder
+javax/swing/plaf/metal/MetalBorders$MenuItemBorder
+javax/swing/plaf/metal/MetalBorders$PopupMenuBorder
+javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder
+javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder
+javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder
+javax/swing/plaf/metal/MetalBorders$TextFieldBorder
+javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder
+javax/swing/plaf/metal/MetalBorders$ToolBarBorder
+javax/swing/plaf/metal/MetalBumps
+javax/swing/plaf/metal/MetalButtonUI
+javax/swing/plaf/metal/MetalCheckBoxUI
+javax/swing/plaf/metal/MetalComboBoxButton
+javax/swing/plaf/metal/MetalComboBoxButton$1
+javax/swing/plaf/metal/MetalComboBoxEditor
+javax/swing/plaf/metal/MetalComboBoxEditor$1
+javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder
+javax/swing/plaf/metal/MetalComboBoxEditor$UIResource
+javax/swing/plaf/metal/MetalComboBoxIcon
+javax/swing/plaf/metal/MetalComboBoxUI
+javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager
+javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener
+javax/swing/plaf/metal/MetalIconFactory
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon
+javax/swing/plaf/metal/MetalIconFactory$FolderIcon16
+javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon
+javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon
+javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon
+javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon
+javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon
+javax/swing/plaf/metal/MetalLabelUI
+javax/swing/plaf/metal/MetalLookAndFeel
+javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue
-java/awt/print/PrinterJob
-sun/swing/SwingUtilities2$AATextInfo
-sun/awt/X11/XAWTXSettings
-sun/awt/X11/XMSelectionListener
-sun/awt/XSettings
-sun/awt/X11/XMSelection
-sun/awt/X11/XMSelection$1
-sun/awt/X11/XMSelection$3
-sun/awt/XSettings$Update
-java/util/HashMap$EntrySet
-java/util/HashMap$EntryIterator
-javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
-java/beans/PropertyChangeListener
-java/beans/PropertyChangeListenerProxy
-java/util/EventListenerProxy
-sun/awt/EventListenerAggregate
-javax/swing/UIDefaults$ProxyLazyValue
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
+javax/swing/plaf/metal/MetalPopupMenuSeparatorUI
+javax/swing/plaf/metal/MetalProgressBarUI
+javax/swing/plaf/metal/MetalRadioButtonUI
+javax/swing/plaf/metal/MetalRootPaneUI
+javax/swing/plaf/metal/MetalScrollBarUI
+javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener
+javax/swing/plaf/metal/MetalScrollButton
+javax/swing/plaf/metal/MetalScrollPaneUI
+javax/swing/plaf/metal/MetalScrollPaneUI$1
+javax/swing/plaf/metal/MetalSeparatorUI
+javax/swing/plaf/metal/MetalSliderUI
+javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
+javax/swing/plaf/metal/MetalSplitPaneDivider
+javax/swing/plaf/metal/MetalSplitPaneDivider$1
+javax/swing/plaf/metal/MetalSplitPaneDivider$2
+javax/swing/plaf/metal/MetalSplitPaneUI
+javax/swing/plaf/metal/MetalTabbedPaneUI
+javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/metal/MetalTextFieldUI
+javax/swing/plaf/metal/MetalTheme
+javax/swing/plaf/metal/MetalToggleButtonUI
+javax/swing/plaf/metal/MetalToolBarUI
+javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener
+javax/swing/plaf/metal/MetalTreeUI
+javax/swing/plaf/metal/MetalTreeUI$LineListener
+javax/swing/plaf/metal/OceanTheme
javax/swing/plaf/metal/OceanTheme$1
javax/swing/plaf/metal/OceanTheme$2
javax/swing/plaf/metal/OceanTheme$3
javax/swing/plaf/metal/OceanTheme$4
javax/swing/plaf/metal/OceanTheme$5
javax/swing/plaf/metal/OceanTheme$6
-javax/swing/RepaintManager
-javax/swing/RepaintManager$DisplayChangedHandler
-javax/swing/SwingPaintEventDispatcher
-sun/awt/PaintEventDispatcher
-javax/swing/UIManager$2
-java/awt/PopupMenu
-java/awt/Menu
-java/awt/MenuItem
-java/awt/MenuComponent
-java/io/ObjectOutputStream
-java/io/ObjectOutput
-java/io/DataOutput
-java/io/ObjectStreamConstants
-java/io/PrintWriter
-java/io/ObjectInputStream
-java/io/ObjectInput
-java/awt/Event
-java/awt/im/InputContext
-java/awt/event/MouseWheelEvent
-java/awt/BufferCapabilities
-sun/awt/CausedFocusEvent$Cause
-java/awt/PointerInfo
-java/awt/Component$BaselineResizeBehavior
-java/awt/FontMetrics
-java/awt/Image
-java/awt/image/ImageProducer
-java/awt/image/VolatileImage
-java/awt/im/InputMethodRequests
-java/awt/event/FocusEvent
-java/awt/event/InputMethodEvent
-java/awt/event/HierarchyEvent
-javax/accessibility/AccessibleStateSet
-com/sun/swing/internal/plaf/metal/resources/metal
-sun/util/ResourceBundleEnumeration
-com/sun/swing/internal/plaf/basic/resources/basic
-javax/swing/plaf/basic/BasicPanelUI
-javax/swing/plaf/PanelUI
-javax/swing/plaf/ComponentUI
-sun/reflect/misc/MethodUtil
-sun/reflect/misc/MethodUtil$1
-sun/misc/Launcher$1
-sun/misc/URLClassPath$JarLoader$1
-sun/misc/FileURLMapper
-java/util/jar/JarFile
-java/util/zip/ZipFile
-java/util/zip/ZipConstants
-java/util/jar/JavaUtilJarAccessImpl
-sun/misc/JavaUtilJarAccess
-sun/misc/JarIndex
-java/util/zip/ZipEntry
-java/util/jar/JarFile$JarFileEntry
-java/util/jar/JarEntry
-sun/misc/URLClassPath$JarLoader$2
-sun/net/www/protocol/jar/JarURLConnection
-java/net/JarURLConnection
-sun/net/www/protocol/jar/JarFileFactory
-sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
-java/net/HttpURLConnection
-sun/net/www/protocol/jar/URLJarFile
-sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
-sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
-java/util/zip/ZipFile$ZipFileInputStream
-java/security/AllPermissionCollection
-java/lang/IllegalAccessException
-javax/swing/JPasswordField
-javax/swing/JTextField
+javax/swing/plaf/synth/SynthConstants
+javax/swing/plaf/synth/SynthUI
+javax/swing/table/AbstractTableModel
+javax/swing/table/DefaultTableCellRenderer
+javax/swing/table/DefaultTableColumnModel
+javax/swing/table/DefaultTableModel
+javax/swing/table/JTableHeader
+javax/swing/table/TableCellEditor
+javax/swing/table/TableCellRenderer
+javax/swing/table/TableColumn
+javax/swing/table/TableColumnModel
+javax/swing/table/TableModel
+javax/swing/text/AbstractDocument
+javax/swing/text/AbstractDocument$1
+javax/swing/text/AbstractDocument$AbstractElement
+javax/swing/text/AbstractDocument$AttributeContext
+javax/swing/text/AbstractDocument$BidiElement
+javax/swing/text/AbstractDocument$BidiRootElement
+javax/swing/text/AbstractDocument$BranchElement
+javax/swing/text/AbstractDocument$Content
+javax/swing/text/AbstractDocument$DefaultDocumentEvent
+javax/swing/text/AbstractDocument$ElementEdit
+javax/swing/text/AbstractDocument$InsertStringResult
+javax/swing/text/AbstractDocument$LeafElement
+javax/swing/text/AttributeSet
+javax/swing/text/AttributeSet$CharacterAttribute
+javax/swing/text/AttributeSet$ColorAttribute
+javax/swing/text/AttributeSet$FontAttribute
+javax/swing/text/AttributeSet$ParagraphAttribute
+javax/swing/text/Caret
+javax/swing/text/DefaultCaret
+javax/swing/text/DefaultCaret$Handler
+javax/swing/text/DefaultEditorKit
+javax/swing/text/DefaultEditorKit$BeepAction
+javax/swing/text/DefaultEditorKit$BeginAction
+javax/swing/text/DefaultEditorKit$BeginLineAction
+javax/swing/text/DefaultEditorKit$BeginParagraphAction
+javax/swing/text/DefaultEditorKit$BeginWordAction
+javax/swing/text/DefaultEditorKit$CopyAction
+javax/swing/text/DefaultEditorKit$CutAction
+javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
+javax/swing/text/DefaultEditorKit$DeleteNextCharAction
+javax/swing/text/DefaultEditorKit$DeletePrevCharAction
+javax/swing/text/DefaultEditorKit$DeleteWordAction
+javax/swing/text/DefaultEditorKit$DumpModelAction
+javax/swing/text/DefaultEditorKit$EndAction
+javax/swing/text/DefaultEditorKit$EndLineAction
+javax/swing/text/DefaultEditorKit$EndParagraphAction
+javax/swing/text/DefaultEditorKit$EndWordAction
+javax/swing/text/DefaultEditorKit$InsertBreakAction
+javax/swing/text/DefaultEditorKit$InsertContentAction
+javax/swing/text/DefaultEditorKit$InsertTabAction
+javax/swing/text/DefaultEditorKit$NextVisualPositionAction
+javax/swing/text/DefaultEditorKit$NextWordAction
+javax/swing/text/DefaultEditorKit$PageAction
+javax/swing/text/DefaultEditorKit$PasteAction
+javax/swing/text/DefaultEditorKit$PreviousWordAction
+javax/swing/text/DefaultEditorKit$ReadOnlyAction
+javax/swing/text/DefaultEditorKit$SelectAllAction
+javax/swing/text/DefaultEditorKit$SelectLineAction
+javax/swing/text/DefaultEditorKit$SelectParagraphAction
+javax/swing/text/DefaultEditorKit$SelectWordAction
+javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction
+javax/swing/text/DefaultEditorKit$UnselectAction
+javax/swing/text/DefaultEditorKit$VerticalPageAction
+javax/swing/text/DefaultEditorKit$WritableAction
+javax/swing/text/DefaultHighlighter
+javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
+javax/swing/text/DefaultHighlighter$SafeDamager
+javax/swing/text/Document
+javax/swing/text/EditorKit
+javax/swing/text/Element
+javax/swing/text/FieldView
+javax/swing/text/GapContent
+javax/swing/text/GapContent$InsertUndo
+javax/swing/text/GapContent$MarkData
+javax/swing/text/GapContent$MarkVector
+javax/swing/text/GapContent$StickyPosition
+javax/swing/text/GapVector
+javax/swing/text/Highlighter
+javax/swing/text/Highlighter$Highlight
+javax/swing/text/Highlighter$HighlightPainter
javax/swing/text/JTextComponent
-javax/swing/Scrollable
-javax/swing/JLayeredPane
-javax/swing/JRootPane$1
-javax/swing/ArrayTable
-javax/swing/JInternalFrame
-javax/swing/JRootPane$RootLayout
-javax/swing/BufferStrategyPaintManager
-javax/swing/RepaintManager$PaintManager
-javax/swing/plaf/metal/MetalRootPaneUI
-javax/swing/plaf/basic/BasicRootPaneUI
-javax/swing/plaf/RootPaneUI
-javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
-javax/swing/plaf/ComponentInputMapUIResource
-javax/swing/ComponentInputMap
-javax/swing/InputMap
-javax/swing/plaf/InputMapUIResource
-javax/swing/KeyStroke
-java/awt/VKCollection
-sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
-javax/swing/plaf/basic/LazyActionMap
-javax/swing/plaf/ActionMapUIResource
-javax/swing/ActionMap
-javax/swing/LayoutFocusTraversalPolicy
-javax/swing/SortingFocusTraversalPolicy
-javax/swing/InternalFrameFocusTraversalPolicy
-javax/swing/SwingContainerOrderFocusTraversalPolicy
-javax/swing/SwingDefaultFocusTraversalPolicy
-javax/swing/LayoutComparator
-javax/swing/plaf/metal/MetalLabelUI
-javax/swing/plaf/basic/BasicLabelUI
-javax/swing/plaf/LabelUI
-javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
-javax/swing/plaf/basic/BasicHTML
-sun/awt/NullComponentPeer
-java/awt/event/WindowEvent
-java/awt/EventQueue$1
-java/awt/EventDispatchThread$1
-java/awt/Conditional
-java/awt/EventDispatchThread$HierarchyEventFilter
-java/awt/EventFilter$FilterAction
-sun/awt/dnd/SunDropTargetEvent
-java/awt/event/ActionEvent
-sun/awt/X11/XReparentEvent
-sun/awt/X11/XWindowAttributes
-sun/awt/EventQueueItem
-sun/awt/SunToolkit$3
-java/applet/Applet
-java/awt/Panel
-com/sun/awt/AWTUtilities
-sun/awt/X11/XExposeEvent
-java/util/jar/Manifest
-java/io/ByteArrayInputStream
-java/util/jar/Attributes
-java/util/jar/Manifest$FastInputStream
-java/util/jar/Attributes$Name
-sun/misc/ASCIICaseInsensitiveComparator
-java/util/jar/JarVerifier
-java/io/ByteArrayOutputStream
-sun/misc/ExtensionDependency
-java/lang/Package
-sun/security/util/ManifestEntryVerifier
-java/security/Provider
-java/security/Provider$ServiceKey
-java/security/Provider$EngineDescription
-java/security/Security
-java/security/Security$1
-sun/misc/FloatingDecimal
-sun/misc/FloatingDecimal$1
-java/util/regex/Pattern
-java/util/regex/Pattern$Node
-java/util/regex/Pattern$LastNode
-java/util/regex/Pattern$GroupHead
-java/util/regex/Pattern$GroupTail
-java/util/regex/Pattern$BitClass
-java/util/regex/Pattern$BmpCharProperty
-java/util/regex/Pattern$CharProperty
-java/util/regex/Pattern$Ques
-java/util/regex/Pattern$BranchConn
-java/util/regex/Pattern$Branch
-java/util/regex/Pattern$5
-java/util/regex/Pattern$CharPropertyNames
-java/util/regex/Pattern$CharPropertyNames$1
-java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory
-java/util/regex/Pattern$CharPropertyNames$2
-java/util/regex/Pattern$CharPropertyNames$5
-java/util/regex/Pattern$CharPropertyNames$3
-java/util/regex/Pattern$CharPropertyNames$6
-java/util/regex/Pattern$CharPropertyNames$CloneableProperty
-java/util/regex/Pattern$CharPropertyNames$4
-java/util/regex/Pattern$CharPropertyNames$7
-java/util/regex/Pattern$CharPropertyNames$8
-java/util/regex/Pattern$CharPropertyNames$9
-java/util/regex/Pattern$CharPropertyNames$10
-java/util/regex/Pattern$CharPropertyNames$11
-java/util/regex/Pattern$CharPropertyNames$12
-java/util/regex/Pattern$CharPropertyNames$13
-java/util/regex/Pattern$CharPropertyNames$14
-java/util/regex/Pattern$CharPropertyNames$15
-java/util/regex/Pattern$CharPropertyNames$16
-java/util/regex/Pattern$CharPropertyNames$17
-java/util/regex/Pattern$CharPropertyNames$18
-java/util/regex/Pattern$CharPropertyNames$19
-java/util/regex/Pattern$CharPropertyNames$20
-java/util/regex/Pattern$CharPropertyNames$21
-java/util/regex/Pattern$Ctype
-java/util/regex/Pattern$Curly
-java/util/regex/Pattern$6
-java/util/regex/Pattern$Slice
-java/util/regex/Pattern$Begin
-java/util/regex/Pattern$First
-java/util/regex/Pattern$Start
-java/util/regex/Pattern$TreeInfo
-sun/security/provider/NativePRNG
-java/security/SecureRandomSpi
-sun/security/provider/NativePRNG$1
-sun/security/provider/NativePRNG$RandomIO
-sun/misc/BASE64Decoder
-sun/misc/CharacterDecoder
-sun/security/util/SignatureFileVerifier
-java/awt/event/KeyAdapter
-java/lang/NumberFormatException
-java/lang/IllegalArgumentException
-java/io/FileWriter
-java/net/Authenticator
-java/net/MalformedURLException
-javax/swing/text/Element
-javax/swing/text/Document
+javax/swing/text/JTextComponent$1
+javax/swing/text/JTextComponent$DefaultKeymap
+javax/swing/text/JTextComponent$KeymapActionMap
+javax/swing/text/JTextComponent$KeymapWrapper
+javax/swing/text/JTextComponent$MutableCaretEvent
+javax/swing/text/Keymap
+javax/swing/text/LayeredHighlighter
+javax/swing/text/LayeredHighlighter$LayerPainter
+javax/swing/text/MutableAttributeSet
javax/swing/text/PlainDocument
-javax/swing/text/AbstractDocument
-javax/swing/text/GapContent
-javax/swing/text/AbstractDocument$Content
-javax/swing/text/GapVector
-javax/swing/text/GapContent$MarkVector
-javax/swing/text/GapContent$MarkData
-javax/swing/text/StyleContext
-javax/swing/text/AbstractDocument$AttributeContext
+javax/swing/text/PlainView
+javax/swing/text/Position
+javax/swing/text/Position$Bias
+javax/swing/text/Segment
+javax/swing/text/SegmentCache
+javax/swing/text/SegmentCache$CachedSegment
+javax/swing/text/SimpleAttributeSet
+javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
+javax/swing/text/Style
javax/swing/text/StyleConstants
javax/swing/text/StyleConstants$CharacterConstants
-javax/swing/text/AttributeSet$CharacterAttribute
+javax/swing/text/StyleConstants$ColorConstants
javax/swing/text/StyleConstants$FontConstants
-javax/swing/text/AttributeSet$FontAttribute
-javax/swing/text/StyleConstants$ColorConstants
-javax/swing/text/AttributeSet$ColorAttribute
javax/swing/text/StyleConstants$ParagraphConstants
-javax/swing/text/AttributeSet$ParagraphAttribute
+javax/swing/text/StyleContext
javax/swing/text/StyleContext$FontKey
-javax/swing/text/SimpleAttributeSet
-javax/swing/text/MutableAttributeSet
-javax/swing/text/AttributeSet
-javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
+javax/swing/text/StyleContext$KeyEnumeration
javax/swing/text/StyleContext$NamedStyle
-javax/swing/text/Style
javax/swing/text/StyleContext$SmallAttributeSet
-javax/swing/text/AbstractDocument$BidiRootElement
-javax/swing/text/AbstractDocument$BranchElement
-javax/swing/text/AbstractDocument$AbstractElement
-javax/swing/tree/TreeNode
-javax/swing/text/AbstractDocument$1
-javax/swing/text/AbstractDocument$BidiElement
-javax/swing/text/AbstractDocument$LeafElement
-javax/swing/text/GapContent$StickyPosition
-javax/swing/text/Position
-javax/swing/text/StyleContext$KeyEnumeration
-javax/swing/text/GapContent$InsertUndo
-javax/swing/undo/AbstractUndoableEdit
-javax/swing/undo/UndoableEdit
-javax/swing/text/AbstractDocument$DefaultDocumentEvent
-javax/swing/event/DocumentEvent
-javax/swing/undo/CompoundEdit
-javax/swing/event/DocumentEvent$EventType
-javax/swing/text/Segment
-java/text/CharacterIterator
+javax/swing/text/TabExpander
+javax/swing/text/TextAction
javax/swing/text/Utilities
-javax/swing/text/SegmentCache
-javax/swing/text/SegmentCache$CachedSegment
-javax/swing/event/UndoableEditEvent
-javax/swing/text/AbstractDocument$ElementEdit
-javax/swing/event/DocumentEvent$ElementChange
-java/net/Socket
-java/net/InetAddress
-java/net/InetAddress$Cache
-java/net/InetAddress$Cache$Type
-java/net/InetAddressImplFactory
-java/net/Inet6AddressImpl
-java/net/InetAddressImpl
-java/net/InetAddress$1
-sun/net/spi/nameservice/NameService
-sun/net/util/IPAddressUtil
-java/util/regex/Matcher
-java/util/regex/MatchResult
-java/util/RandomAccessSubList
-java/util/SubList
-java/util/SubList$1
-java/util/AbstractList$ListItr
-java/net/Inet4Address
-java/net/InetSocketAddress
-java/net/SocketAddress
-java/net/Inet4AddressImpl
-java/net/SocksSocketImpl
-java/net/SocksConsts
-java/net/PlainSocketImpl
-java/net/SocketImpl
-java/net/SocketOptions
-java/net/SocketException
-java/net/SocksSocketImpl$5
-java/net/ProxySelector
-sun/net/spi/DefaultProxySelector
-sun/net/spi/DefaultProxySelector$1
-sun/net/NetProperties
-sun/net/NetProperties$1
-sun/net/spi/DefaultProxySelector$NonProxyInfo
-java/util/regex/ASCII
-java/util/regex/Pattern$GroupCurly
-java/net/Inet6Address
-java/net/URI
-java/net/URI$Parser
-java/net/Proxy
-java/net/Proxy$Type
-java/net/ConnectException
-javax/swing/JMenu
-javax/swing/MenuElement
-javax/swing/JMenuItem
-javax/swing/AbstractButton
-java/awt/ItemSelectable
-javax/swing/event/MenuListener
-javax/swing/JCheckBoxMenuItem
-javax/swing/Icon
-javax/swing/JButton
-java/awt/event/WindowListener
-java/net/URLClassLoader$2
-javax/swing/ImageIcon
-javax/swing/ImageIcon$1
-java/awt/MediaTracker
-sun/misc/SoftCache$ValueCell
-sun/awt/image/URLImageSource
-sun/awt/image/InputStreamImageSource
+javax/swing/text/View
+javax/swing/text/ViewFactory
+javax/swing/tree/AbstractLayoutCache
+javax/swing/tree/AbstractLayoutCache$NodeDimensions
+javax/swing/tree/DefaultMutableTreeNode
+javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
+javax/swing/tree/DefaultTreeCellEditor
+javax/swing/tree/DefaultTreeCellEditor$1
+javax/swing/tree/DefaultTreeCellEditor$DefaultTextField
+javax/swing/tree/DefaultTreeCellEditor$EditorContainer
+javax/swing/tree/DefaultTreeCellRenderer
+javax/swing/tree/DefaultTreeModel
+javax/swing/tree/DefaultTreeSelectionModel
+javax/swing/tree/MutableTreeNode
+javax/swing/tree/PathPlaceHolder
+javax/swing/tree/RowMapper
+javax/swing/tree/TreeCellEditor
+javax/swing/tree/TreeCellRenderer
+javax/swing/tree/TreeModel
+javax/swing/tree/TreeNode
+javax/swing/tree/TreePath
+javax/swing/tree/TreeSelectionModel
+javax/swing/tree/VariableHeightLayoutCache
+javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
+javax/swing/undo/AbstractUndoableEdit
+javax/swing/undo/CompoundEdit
+javax/swing/undo/UndoableEdit
+javax/xml/parsers/DocumentBuilder
+javax/xml/parsers/DocumentBuilderFactory
+javax/xml/parsers/FactoryFinder
+javax/xml/parsers/FactoryFinder$1
+javax/xml/parsers/ParserConfigurationException
+javax/xml/parsers/SecuritySupport
+javax/xml/parsers/SecuritySupport$2
+javax/xml/parsers/SecuritySupport$5
+org/w3c/dom/Attr
+org/w3c/dom/CDATASection
+org/w3c/dom/CharacterData
+org/w3c/dom/Comment
+org/w3c/dom/DOMException
+org/w3c/dom/Document
+org/w3c/dom/DocumentFragment
+org/w3c/dom/DocumentType
+org/w3c/dom/Element
+org/w3c/dom/Entity
+org/w3c/dom/EntityReference
+org/w3c/dom/NamedNodeMap
+org/w3c/dom/Node
+org/w3c/dom/NodeList
+org/w3c/dom/Notation
+org/w3c/dom/ProcessingInstruction
+org/w3c/dom/Text
+org/w3c/dom/events/DocumentEvent
+org/w3c/dom/events/Event
+org/w3c/dom/events/EventException
+org/w3c/dom/events/EventTarget
+org/w3c/dom/events/MutationEvent
+org/w3c/dom/ranges/DocumentRange
+org/w3c/dom/ranges/Range
+org/w3c/dom/traversal/DocumentTraversal
+org/w3c/dom/traversal/NodeIterator
+org/w3c/dom/traversal/TreeWalker
+org/xml/sax/AttributeList
+org/xml/sax/ContentHandler
+org/xml/sax/DTDHandler
+org/xml/sax/EntityResolver
+org/xml/sax/ErrorHandler
+org/xml/sax/InputSource
+org/xml/sax/Locator
+org/xml/sax/SAXException
+org/xml/sax/SAXNotRecognizedException
+org/xml/sax/SAXNotSupportedException
+org/xml/sax/SAXParseException
+org/xml/sax/helpers/DefaultHandler
+sun/awt/AWTAccessor
+sun/awt/AWTAccessor$AWTEventAccessor
+sun/awt/AWTAccessor$ClientPropertyKeyAccessor
+sun/awt/AWTAccessor$ComponentAccessor
+sun/awt/AWTAccessor$ContainerAccessor
+sun/awt/AWTAccessor$CursorAccessor
+sun/awt/AWTAccessor$DefaultKeyboardFocusManagerAccessor
+sun/awt/AWTAccessor$EventQueueAccessor
+sun/awt/AWTAccessor$FrameAccessor
+sun/awt/AWTAccessor$InputEventAccessor
+sun/awt/AWTAccessor$InvocationEventAccessor
+sun/awt/AWTAccessor$KeyEventAccessor
+sun/awt/AWTAccessor$KeyboardFocusManagerAccessor
+sun/awt/AWTAccessor$SequencedEventAccessor
+sun/awt/AWTAccessor$ToolkitAccessor
+sun/awt/AWTAccessor$WindowAccessor
+sun/awt/AWTAutoShutdown
+sun/awt/AWTIcon64_java_icon16_png
+sun/awt/AWTIcon64_java_icon24_png
+sun/awt/AWTIcon64_java_icon32_png
+sun/awt/AWTIcon64_java_icon48_png
+sun/awt/AppContext
+sun/awt/AppContext$1
+sun/awt/AppContext$2
+sun/awt/AppContext$3
+sun/awt/AppContext$6
+sun/awt/AppContext$GetAppContextLock
+sun/awt/AppContext$State
+sun/awt/CausedFocusEvent
+sun/awt/CausedFocusEvent$Cause
+sun/awt/ComponentFactory
+sun/awt/ConstrainableGraphics
+sun/awt/DisplayChangedListener
+sun/awt/EmbeddedFrame
+sun/awt/EventQueueDelegate
+sun/awt/EventQueueItem
+sun/awt/FontConfiguration
+sun/awt/FontConfiguration$1
+sun/awt/FontDescriptor
+sun/awt/GlobalCursorManager
+sun/awt/GlobalCursorManager$NativeUpdater
+sun/awt/HeadlessToolkit
+sun/awt/IconInfo
+sun/awt/InputMethodSupport
+sun/awt/KeyboardFocusManagerPeerImpl
+sun/awt/KeyboardFocusManagerPeerProvider
+sun/awt/LightweightFrame
+sun/awt/ModalityListener
+sun/awt/MostRecentKeyValue
+sun/awt/NullComponentPeer
+sun/awt/OSInfo
+sun/awt/OSInfo$1
+sun/awt/OSInfo$OSType
+sun/awt/OSInfo$WindowsVersion
+sun/awt/PaintEventDispatcher
+sun/awt/PeerEvent
+sun/awt/PostEventQueue
+sun/awt/RepaintArea
+sun/awt/RequestFocusController
+sun/awt/SubRegionShowable
+sun/awt/SunDisplayChanger
+sun/awt/SunGraphicsCallback
+sun/awt/SunHints
+sun/awt/SunHints$Key
+sun/awt/SunHints$LCDContrastKey
+sun/awt/SunHints$Value
+sun/awt/SunToolkit
+sun/awt/SunToolkit$ModalityListenerList
+sun/awt/TimedWindowEvent
+sun/awt/UNIXToolkit
+sun/awt/WindowClosingListener
+sun/awt/WindowClosingSupport
+sun/awt/X11/AwtGraphicsConfigData
+sun/awt/X11/AwtScreenData
+sun/awt/X11/MotifColorUtilities
+sun/awt/X11/MotifDnDConstants
+sun/awt/X11/MotifDnDDragSourceProtocol
+sun/awt/X11/MotifDnDDropTargetProtocol
+sun/awt/X11/Native
+sun/awt/X11/Native$1
+sun/awt/X11/OwnershipListener
+sun/awt/X11/PropMwmHints
+sun/awt/X11/UnsafeXDisposerRecord
+sun/awt/X11/WindowDimensions
+sun/awt/X11/WindowPropertyGetter
+sun/awt/X11/XAWTXSettings
+sun/awt/X11/XAnyEvent
+sun/awt/X11/XAtom
+sun/awt/X11/XAtomList
+sun/awt/X11/XAwtState
+sun/awt/X11/XBaseWindow
+sun/awt/X11/XBaseWindow$1
+sun/awt/X11/XBaseWindow$InitialiseState
+sun/awt/X11/XBaseWindow$StateLock
+sun/awt/X11/XCanvasPeer
+sun/awt/X11/XClientMessageEvent
+sun/awt/X11/XClipboard
+sun/awt/X11/XComponentPeer
+sun/awt/X11/XComponentPeer$1
+sun/awt/X11/XConfigureEvent
+sun/awt/X11/XContentWindow
+sun/awt/X11/XCreateWindowParams
+sun/awt/X11/XDecoratedPeer
+sun/awt/X11/XDnDConstants
+sun/awt/X11/XDnDDragSourceProtocol
+sun/awt/X11/XDnDDropTargetProtocol
+sun/awt/X11/XDragAndDropProtocols
+sun/awt/X11/XDragSourceContextPeer
+sun/awt/X11/XDragSourceProtocol
+sun/awt/X11/XDragSourceProtocolListener
+sun/awt/X11/XDropTargetContextPeer
+sun/awt/X11/XDropTargetContextPeer$XDropTargetProtocolListenerImpl
+sun/awt/X11/XDropTargetEventProcessor
+sun/awt/X11/XDropTargetProtocol
+sun/awt/X11/XDropTargetProtocolListener
+sun/awt/X11/XDropTargetRegistry
+sun/awt/X11/XEmbeddedFramePeer
+sun/awt/X11/XErrorEvent
+sun/awt/X11/XErrorHandler
+sun/awt/X11/XErrorHandler$IgnoreBadWindowHandler
+sun/awt/X11/XErrorHandler$VerifyChangePropertyHandler
+sun/awt/X11/XErrorHandler$XBaseErrorHandler
+sun/awt/X11/XErrorHandler$XErrorHandlerWithFlag
+sun/awt/X11/XErrorHandler$XShmAttachHandler
+sun/awt/X11/XErrorHandlerUtil
+sun/awt/X11/XEvent
+sun/awt/X11/XEventDispatcher
+sun/awt/X11/XExposeEvent
+sun/awt/X11/XFocusChangeEvent
+sun/awt/X11/XFocusProxyWindow
+sun/awt/X11/XFramePeer
+sun/awt/X11/XGlobalCursorManager
+sun/awt/X11/XInputMethod
+sun/awt/X11/XInputMethodDescriptor
+sun/awt/X11/XKeyboardFocusManagerPeer
+sun/awt/X11/XLabelPeer
+sun/awt/X11/XLayerProtocol
+sun/awt/X11/XMSelection
+sun/awt/X11/XMSelection$1
+sun/awt/X11/XMSelection$3
+sun/awt/X11/XMSelectionListener
+sun/awt/X11/XModifierKeymap
+sun/awt/X11/XNETProtocol
+sun/awt/X11/XPanelPeer
+sun/awt/X11/XPropertyCache
+sun/awt/X11/XPropertyEvent
+sun/awt/X11/XProtocol
+sun/awt/X11/XRepaintArea
+sun/awt/X11/XReparentEvent
+sun/awt/X11/XRootWindow
+sun/awt/X11/XSelection
+sun/awt/X11/XSelection$IncrementalTransferHandler
+sun/awt/X11/XSelection$SelectionEventHandler
+sun/awt/X11/XSetWindowAttributes
+sun/awt/X11/XSizeHints
+sun/awt/X11/XStateProtocol
+sun/awt/X11/XSystemTrayPeer
+sun/awt/X11/XToolkit
+sun/awt/X11/XToolkit$1
+sun/awt/X11/XToolkit$2
+sun/awt/X11/XToolkit$2$1
+sun/awt/X11/XToolkit$3
+sun/awt/X11/XToolkit$4
+sun/awt/X11/XToolkit$5
+sun/awt/X11/XTranslateCoordinates
+sun/awt/X11/XUnmapEvent
+sun/awt/X11/XVisibilityEvent
+sun/awt/X11/XVisualInfo
+sun/awt/X11/XWINProtocol
+sun/awt/X11/XWM
+sun/awt/X11/XWM$1
+sun/awt/X11/XWMHints
+sun/awt/X11/XWindow
+sun/awt/X11/XWindowAttributes
+sun/awt/X11/XWindowAttributesData
+sun/awt/X11/XWindowPeer
+sun/awt/X11/XWindowPeer$2
+sun/awt/X11/XWindowPeer$4
+sun/awt/X11/XWrapperBase
+sun/awt/X11/XlibUtil
+sun/awt/X11/XlibWrapper
+sun/awt/X11ComponentPeer
+sun/awt/X11FontManager
+sun/awt/X11GraphicsConfig
+sun/awt/X11GraphicsConfig$X11GCDisposerRecord
+sun/awt/X11GraphicsDevice
+sun/awt/X11GraphicsEnvironment
+sun/awt/X11GraphicsEnvironment$1
+sun/awt/X11InputMethod
+sun/awt/X11InputMethodDescriptor
+sun/awt/XSettings
+sun/awt/XSettings$Update
+sun/awt/datatransfer/SunClipboard
+sun/awt/dnd/SunDragSourceContextPeer
+sun/awt/dnd/SunDropTargetContextPeer
+sun/awt/dnd/SunDropTargetEvent
+sun/awt/event/IgnorePaintEvent
+sun/awt/im/ExecutableInputMethodManager
+sun/awt/im/ExecutableInputMethodManager$3
+sun/awt/im/InputContext
+sun/awt/im/InputMethodAdapter
+sun/awt/im/InputMethodContext
+sun/awt/im/InputMethodLocator
+sun/awt/im/InputMethodManager
+sun/awt/image/BufImgSurfaceData
+sun/awt/image/BufImgSurfaceData$ICMColorData
+sun/awt/image/BufImgSurfaceManager
+sun/awt/image/BufferedImageGraphicsConfig
+sun/awt/image/ByteComponentRaster
+sun/awt/image/ByteInterleavedRaster
+sun/awt/image/BytePackedRaster
+sun/awt/image/FetcherInfo
+sun/awt/image/GifFrame
+sun/awt/image/GifImageDecoder
+sun/awt/image/ImageConsumerQueue
+sun/awt/image/ImageDecoder
+sun/awt/image/ImageDecoder$1
sun/awt/image/ImageFetchable
-sun/awt/image/ToolkitImage
-java/awt/Image$1
-sun/awt/image/SurfaceManager$ImageAccessor
-sun/awt/image/SurfaceManager
-sun/awt/image/NativeLibLoader
-java/awt/ImageMediaEntry
-java/awt/MediaEntry
+sun/awt/image/ImageFetcher
+sun/awt/image/ImageFetcher$1
sun/awt/image/ImageRepresentation
-java/awt/image/ImageConsumer
sun/awt/image/ImageWatched
sun/awt/image/ImageWatched$Link
sun/awt/image/ImageWatched$WeakLink
-sun/awt/image/ImageConsumerQueue
-sun/awt/image/ImageFetcher
-sun/awt/image/FetcherInfo
-sun/awt/image/ImageFetcher$1
-sun/awt/image/GifImageDecoder
-sun/awt/image/ImageDecoder
-sun/awt/image/GifFrame
-java/awt/image/Raster
-java/awt/image/DataBufferByte
-java/awt/image/DataBuffer
-java/awt/image/PixelInterleavedSampleModel
-java/awt/image/ComponentSampleModel
-java/awt/image/SampleModel
-sun/awt/image/ByteInterleavedRaster
-sun/awt/image/ByteComponentRaster
+sun/awt/image/InputStreamImageSource
+sun/awt/image/IntegerComponentRaster
+sun/awt/image/IntegerInterleavedRaster
+sun/awt/image/NativeLibLoader
+sun/awt/image/NativeLibLoader$1
+sun/awt/image/OffScreenImage
+sun/awt/image/PNGFilterInputStream
+sun/awt/image/PNGImageDecoder
+sun/awt/image/PixelConverter
+sun/awt/image/PixelConverter$Argb
+sun/awt/image/PixelConverter$ArgbBm
+sun/awt/image/PixelConverter$ArgbPre
+sun/awt/image/PixelConverter$Bgrx
+sun/awt/image/PixelConverter$ByteGray
+sun/awt/image/PixelConverter$Rgba
+sun/awt/image/PixelConverter$RgbaPre
+sun/awt/image/PixelConverter$Rgbx
+sun/awt/image/PixelConverter$Ushort4444Argb
+sun/awt/image/PixelConverter$Ushort555Rgb
+sun/awt/image/PixelConverter$Ushort555Rgbx
+sun/awt/image/PixelConverter$Ushort565Rgb
+sun/awt/image/PixelConverter$UshortGray
+sun/awt/image/PixelConverter$Xbgr
+sun/awt/image/PixelConverter$Xrgb
+sun/awt/image/SunVolatileImage
sun/awt/image/SunWritableRaster
-java/awt/image/WritableRaster
-java/awt/image/BufferedImage
-java/awt/image/WritableRenderedImage
-java/awt/image/RenderedImage
-sun/awt/image/IntegerComponentRaster
-sun/awt/image/BytePackedRaster
-java/awt/Canvas
+sun/awt/image/SunWritableRaster$DataStealer
+sun/awt/image/SurfaceManager
+sun/awt/image/SurfaceManager$FlushableCacheData
+sun/awt/image/SurfaceManager$ImageAccessor
+sun/awt/image/SurfaceManager$ProxiedGraphicsConfig
+sun/awt/image/ToolkitImage
+sun/awt/image/URLImageSource
+sun/awt/image/VolatileSurfaceManager
+sun/awt/motif/MFontConfiguration
+sun/awt/resources/awt
+sun/awt/util/IdentityArrayList
+sun/dc/DuctusRenderingEngine
+sun/font/AttributeValues
+sun/font/CMap
+sun/font/CMap$CMapFormat12
+sun/font/CMap$NullCMapClass
+sun/font/CharToGlyphMapper
+sun/font/CompositeFont
+sun/font/CompositeFontDescriptor
+sun/font/CompositeGlyphMapper
+sun/font/CompositeStrike
+sun/font/CoreMetrics
+sun/font/EAttribute
+sun/font/FcFontConfiguration
+sun/font/FileFont
+sun/font/FileFontStrike
+sun/font/Font2D
+sun/font/Font2DHandle
+sun/font/FontAccess
+sun/font/FontConfigManager
+sun/font/FontConfigManager$FcCompFont
+sun/font/FontConfigManager$FontConfigFont
+sun/font/FontConfigManager$FontConfigInfo
sun/font/FontDesignMetrics
+sun/font/FontDesignMetrics$KeyReference
+sun/font/FontDesignMetrics$MetricsKey
+sun/font/FontFamily
+sun/font/FontLineMetrics
+sun/font/FontManager
+sun/font/FontManagerFactory
+sun/font/FontManagerFactory$1
+sun/font/FontManagerForSGE
+sun/font/FontManagerNativeLibrary
+sun/font/FontManagerNativeLibrary$1
+sun/font/FontScaler
+sun/font/FontStrike
sun/font/FontStrikeDesc
-sun/font/CompositeStrike
sun/font/FontStrikeDisposer
-sun/font/StrikeCache$SoftDisposerRef
+sun/font/FontUtilities
+sun/font/FontUtilities$1
+sun/font/GlyphDisposedListener
+sun/font/GlyphList
+sun/font/PhysicalFont
+sun/font/PhysicalStrike
+sun/font/StandardGlyphVector
+sun/font/StandardGlyphVector$GlyphStrike
+sun/font/StrikeCache
+sun/font/StrikeCache$1
sun/font/StrikeCache$DisposableStrike
-sun/font/TrueTypeFont$TTDisposerRecord
+sun/font/StrikeCache$SoftDisposerRef
+sun/font/StrikeMetrics
+sun/font/SunFontManager
+sun/font/SunFontManager$1
+sun/font/SunFontManager$11
+sun/font/SunFontManager$13
+sun/font/SunFontManager$2
+sun/font/SunFontManager$3
+sun/font/SunFontManager$FontRegistrationInfo
+sun/font/SunFontManager$T1Filter
+sun/font/SunFontManager$TTFilter
+sun/font/T2KFontScaler
+sun/font/T2KFontScaler$1
+sun/font/TrueTypeFont
sun/font/TrueTypeFont$1
-java/io/RandomAccessFile
+sun/font/TrueTypeFont$DirectoryEntry
+sun/font/TrueTypeFont$TTDisposerRecord
+sun/font/TrueTypeGlyphMapper
+sun/font/Type1Font
+sun/font/Type1Font$1
+sun/font/XRGlyphCache
+sun/font/XRGlyphCacheEntry
+sun/font/XRTextRenderer
+sun/java2d/BackBufferCapsProvider
+sun/java2d/DefaultDisposerRecord
+sun/java2d/DestSurfaceProvider
+sun/java2d/Disposer
+sun/java2d/Disposer$1
+sun/java2d/Disposer$2
+sun/java2d/Disposer$PollDisposable
+sun/java2d/DisposerRecord
+sun/java2d/DisposerTarget
+sun/java2d/FontSupport
+sun/java2d/InvalidPipeException
+sun/java2d/NullSurfaceData
+sun/java2d/StateTrackable
+sun/java2d/StateTrackable$State
+sun/java2d/StateTrackableDelegate
+sun/java2d/StateTrackableDelegate$1
+sun/java2d/StateTrackableDelegate$2
+sun/java2d/StateTracker
+sun/java2d/StateTracker$1
+sun/java2d/StateTracker$2
+sun/java2d/SunGraphics2D
+sun/java2d/SunGraphicsEnvironment
+sun/java2d/SunGraphicsEnvironment$1
+sun/java2d/Surface
+sun/java2d/SurfaceData
+sun/java2d/SurfaceData$PixelToPgramLoopConverter
+sun/java2d/SurfaceData$PixelToShapeLoopConverter
+sun/java2d/SurfaceDataProxy
+sun/java2d/SurfaceDataProxy$1
+sun/java2d/SurfaceManagerFactory
+sun/java2d/UnixSurfaceManagerFactory
+sun/java2d/cmm/CMSManager
+sun/java2d/cmm/ProfileActivator
+sun/java2d/cmm/ProfileDeferralInfo
+sun/java2d/cmm/ProfileDeferralMgr
+sun/java2d/jules/JulesPathBuf
+sun/java2d/jules/JulesPathBuf$1
+sun/java2d/loops/Blit
+sun/java2d/loops/BlitBg
+sun/java2d/loops/CompositeType
+sun/java2d/loops/CustomComponent
+sun/java2d/loops/DrawGlyphList
+sun/java2d/loops/DrawGlyphListAA
+sun/java2d/loops/DrawGlyphListLCD
+sun/java2d/loops/DrawLine
+sun/java2d/loops/DrawParallelogram
+sun/java2d/loops/DrawPath
+sun/java2d/loops/DrawPolygons
+sun/java2d/loops/DrawRect
+sun/java2d/loops/FillParallelogram
+sun/java2d/loops/FillPath
+sun/java2d/loops/FillRect
+sun/java2d/loops/FillSpans
+sun/java2d/loops/FontInfo
+sun/java2d/loops/GeneralRenderer
+sun/java2d/loops/GraphicsPrimitive
+sun/java2d/loops/GraphicsPrimitiveMgr
+sun/java2d/loops/GraphicsPrimitiveMgr$1
+sun/java2d/loops/GraphicsPrimitiveMgr$2
+sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
+sun/java2d/loops/GraphicsPrimitiveProxy
+sun/java2d/loops/MaskBlit
+sun/java2d/loops/MaskFill
+sun/java2d/loops/ProcessPath
+sun/java2d/loops/ProcessPath$1
+sun/java2d/loops/ProcessPath$ActiveEdgeList
+sun/java2d/loops/ProcessPath$DrawHandler
+sun/java2d/loops/ProcessPath$Edge
+sun/java2d/loops/ProcessPath$EndSubPathHandler
+sun/java2d/loops/ProcessPath$FillData
+sun/java2d/loops/ProcessPath$FillProcessHandler
+sun/java2d/loops/ProcessPath$Point
+sun/java2d/loops/ProcessPath$ProcessHandler
+sun/java2d/loops/RenderCache
+sun/java2d/loops/RenderCache$Entry
+sun/java2d/loops/RenderLoops
+sun/java2d/loops/ScaledBlit
+sun/java2d/loops/SurfaceType
+sun/java2d/loops/TransformBlit
+sun/java2d/loops/TransformHelper
+sun/java2d/loops/XORComposite
+sun/java2d/opengl/GLXGraphicsConfig
+sun/java2d/opengl/OGLGraphicsConfig
+sun/java2d/pipe/AAShapePipe
+sun/java2d/pipe/AATextRenderer
+sun/java2d/pipe/AlphaColorPipe
+sun/java2d/pipe/AlphaPaintPipe
+sun/java2d/pipe/CompositePipe
+sun/java2d/pipe/DrawImage
+sun/java2d/pipe/DrawImagePipe
+sun/java2d/pipe/GeneralCompositePipe
+sun/java2d/pipe/GlyphListLoopPipe
+sun/java2d/pipe/GlyphListPipe
+sun/java2d/pipe/LCDTextRenderer
+sun/java2d/pipe/LoopBasedPipe
+sun/java2d/pipe/LoopPipe
+sun/java2d/pipe/NullPipe
+sun/java2d/pipe/OutlineTextRenderer
+sun/java2d/pipe/ParallelogramPipe
+sun/java2d/pipe/PixelDrawPipe
+sun/java2d/pipe/PixelFillPipe
+sun/java2d/pipe/PixelToParallelogramConverter
+sun/java2d/pipe/PixelToShapeConverter
+sun/java2d/pipe/Region
+sun/java2d/pipe/Region$ImmutableRegion
+sun/java2d/pipe/RegionIterator
+sun/java2d/pipe/RenderingEngine
+sun/java2d/pipe/RenderingEngine$1
+sun/java2d/pipe/ShapeDrawPipe
+sun/java2d/pipe/SolidTextRenderer
+sun/java2d/pipe/SpanClipRenderer
+sun/java2d/pipe/SpanShapeRenderer
+sun/java2d/pipe/SpanShapeRenderer$Composite
+sun/java2d/pipe/TextPipe
+sun/java2d/pipe/TextRenderer
+sun/java2d/pipe/ValidatePipe
+sun/java2d/pipe/hw/AccelGraphicsConfig
+sun/java2d/pipe/hw/BufferedContextProvider
+sun/java2d/x11/X11SurfaceData
+sun/java2d/x11/X11SurfaceData$LazyPipe
+sun/java2d/x11/XSurfaceData
+sun/java2d/xr/DirtyRegion
+sun/java2d/xr/GrowableEltArray
+sun/java2d/xr/GrowableIntArray
+sun/java2d/xr/GrowableRectArray
+sun/java2d/xr/MaskTile
+sun/java2d/xr/MaskTileManager
+sun/java2d/xr/MutableInteger
+sun/java2d/xr/XRBackend
+sun/java2d/xr/XRBackendNative
+sun/java2d/xr/XRColor
+sun/java2d/xr/XRCompositeManager
+sun/java2d/xr/XRCompositeManager$1
+sun/java2d/xr/XRDrawImage
+sun/java2d/xr/XRDrawLine
+sun/java2d/xr/XRGraphicsConfig
+sun/java2d/xr/XRMaskBlit
+sun/java2d/xr/XRMaskFill
+sun/java2d/xr/XRMaskImage
+sun/java2d/xr/XRPMBlit
+sun/java2d/xr/XRPMBlitLoops
+sun/java2d/xr/XRPMScaledBlit
+sun/java2d/xr/XRPMTransformedBlit
+sun/java2d/xr/XRPaints
+sun/java2d/xr/XRPaints$XRGradient
+sun/java2d/xr/XRPaints$XRLinearGradient
+sun/java2d/xr/XRPaints$XRRadialGradient
+sun/java2d/xr/XRPaints$XRTexture
+sun/java2d/xr/XRRenderer
+sun/java2d/xr/XRRenderer$XRDrawHandler
+sun/java2d/xr/XRSolidSrcPict
+sun/java2d/xr/XRSurfaceData
+sun/java2d/xr/XRSurfaceData$XRInternalSurfaceData
+sun/java2d/xr/XRSurfaceData$XRPixmapSurfaceData
+sun/java2d/xr/XRSurfaceData$XRWindowSurfaceData
+sun/java2d/xr/XRSurfaceDataProxy
+sun/java2d/xr/XRUtils
+sun/java2d/xr/XRVolatileSurfaceManager
+sun/java2d/xr/XrSwToPMBlit
+sun/java2d/xr/XrSwToPMScaledBlit
+sun/java2d/xr/XrSwToPMTransformedBlit
+sun/launcher/LauncherHelper
+sun/launcher/LauncherHelper$FXHelper
+sun/misc/ASCIICaseInsensitiveComparator
+sun/misc/Cleaner
+sun/misc/CompoundEnumeration
+sun/misc/ExtensionDependency
+sun/misc/FDBigInteger
+sun/misc/FileURLMapper
+sun/misc/FloatingDecimal
+sun/misc/FloatingDecimal$1
+sun/misc/FloatingDecimal$ASCIIToBinaryBuffer
+sun/misc/FloatingDecimal$ASCIIToBinaryConverter
+sun/misc/FloatingDecimal$BinaryToASCIIBuffer
+sun/misc/FloatingDecimal$BinaryToASCIIConverter
+sun/misc/FloatingDecimal$ExceptionalBinaryToASCIIBuffer
+sun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer
+sun/misc/IOUtils
+sun/misc/JarIndex
+sun/misc/JavaAWTAccess
+sun/misc/JavaIOFileDescriptorAccess
+sun/misc/JavaLangAccess
+sun/misc/JavaNetAccess
+sun/misc/JavaNioAccess
+sun/misc/JavaSecurityAccess
+sun/misc/JavaSecurityProtectionDomainAccess
+sun/misc/JavaUtilJarAccess
+sun/misc/JavaUtilZipFileAccess
+sun/misc/Launcher
+sun/misc/Launcher$AppClassLoader
+sun/misc/Launcher$AppClassLoader$1
+sun/misc/Launcher$BootClassPathHolder
+sun/misc/Launcher$BootClassPathHolder$1
+sun/misc/Launcher$ExtClassLoader
+sun/misc/Launcher$ExtClassLoader$1
+sun/misc/Launcher$Factory
+sun/misc/MetaIndex
+sun/misc/NativeSignalHandler
+sun/misc/OSEnvironment
+sun/misc/Perf
+sun/misc/Perf$GetPerfAction
+sun/misc/PerfCounter
+sun/misc/PerfCounter$CoreCounters
+sun/misc/PerformanceLogger
+sun/misc/PerformanceLogger$TimeData
+sun/misc/PostVMInitHook
+sun/misc/Resource
+sun/misc/SharedSecrets
+sun/misc/Signal
+sun/misc/SignalHandler
+sun/misc/SoftCache
+sun/misc/SoftCache$ValueCell
+sun/misc/URLClassPath
+sun/misc/URLClassPath$1
+sun/misc/URLClassPath$2
+sun/misc/URLClassPath$3
+sun/misc/URLClassPath$FileLoader
+sun/misc/URLClassPath$JarLoader
+sun/misc/URLClassPath$JarLoader$1
+sun/misc/URLClassPath$JarLoader$2
+sun/misc/URLClassPath$Loader
+sun/misc/Unsafe
+sun/misc/VM
+sun/misc/Version
+sun/net/DefaultProgressMeteringPolicy
+sun/net/InetAddressCachePolicy
+sun/net/InetAddressCachePolicy$1
+sun/net/InetAddressCachePolicy$2
+sun/net/NetHooks
+sun/net/NetHooks$Provider
+sun/net/NetProperties
+sun/net/NetProperties$1
+sun/net/ProgressMeteringPolicy
+sun/net/ProgressMonitor
+sun/net/ResourceManager
+sun/net/sdp/SdpProvider
+sun/net/spi/DefaultProxySelector
+sun/net/spi/DefaultProxySelector$1
+sun/net/spi/DefaultProxySelector$3
+sun/net/spi/DefaultProxySelector$NonProxyInfo
+sun/net/spi/nameservice/NameService
+sun/net/util/IPAddressUtil
+sun/net/util/URLUtil
+sun/net/www/MessageHeader
+sun/net/www/MimeEntry
+sun/net/www/MimeTable
+sun/net/www/MimeTable$1
+sun/net/www/MimeTable$DefaultInstanceHolder
+sun/net/www/MimeTable$DefaultInstanceHolder$1
+sun/net/www/ParseUtil
+sun/net/www/URLConnection
+sun/net/www/protocol/file/FileURLConnection
+sun/net/www/protocol/file/Handler
+sun/net/www/protocol/http/Handler
+sun/net/www/protocol/jar/Handler
+sun/net/www/protocol/jar/JarFileFactory
+sun/net/www/protocol/jar/JarURLConnection
+sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
+sun/net/www/protocol/jar/URLJarFile
+sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
+sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
+sun/nio/ByteBuffered
+sun/nio/ch/DirectBuffer
sun/nio/ch/FileChannelImpl
-java/nio/channels/FileChannel
-java/nio/channels/ByteChannel
-java/nio/channels/ReadableByteChannel
-java/nio/channels/Channel
-java/nio/channels/WritableByteChannel
-java/nio/channels/GatheringByteChannel
-java/nio/channels/ScatteringByteChannel
-java/nio/channels/spi/AbstractInterruptibleChannel
-java/nio/channels/InterruptibleChannel
-sun/nio/ch/Util
+sun/nio/ch/FileChannelImpl$Unmapper
+sun/nio/ch/FileDispatcher
+sun/nio/ch/FileDispatcherImpl
+sun/nio/ch/IOStatus
sun/nio/ch/IOUtil
-sun/nio/ch/FileDispatcher
+sun/nio/ch/IOUtil$1
+sun/nio/ch/Interruptible
sun/nio/ch/NativeDispatcher
-sun/nio/ch/Reflect
-java/nio/MappedByteBuffer
-sun/nio/ch/Reflect$1
+sun/nio/ch/NativeThread
sun/nio/ch/NativeThreadSet
-java/nio/channels/spi/AbstractInterruptibleChannel$1
-sun/nio/ch/NativeThread
-sun/nio/ch/IOStatus
-sun/nio/ch/DirectBuffer
-java/nio/DirectByteBuffer
-java/nio/DirectByteBuffer$Deallocator
-sun/misc/Cleaner
-java/nio/ByteBufferAsIntBufferB
-java/nio/IntBuffer
-sun/font/TrueTypeFont$DirectoryEntry
-java/nio/ByteBufferAsShortBufferB
-java/nio/ShortBuffer
+sun/nio/ch/Util
+sun/nio/ch/Util$1
+sun/nio/ch/Util$4
+sun/nio/ch/Util$BufferCache
+sun/nio/cs/AbstractCharsetProvider
+sun/nio/cs/ArrayDecoder
+sun/nio/cs/ArrayEncoder
+sun/nio/cs/FastCharsetProvider
+sun/nio/cs/HistoricallyNamedCharset
+sun/nio/cs/ISO_8859_1
+sun/nio/cs/ISO_8859_1$Decoder
+sun/nio/cs/ISO_8859_1$Encoder
+sun/nio/cs/StandardCharsets
+sun/nio/cs/StandardCharsets$Aliases
+sun/nio/cs/StandardCharsets$Cache
+sun/nio/cs/StandardCharsets$Classes
+sun/nio/cs/StreamDecoder
+sun/nio/cs/StreamEncoder
+sun/nio/cs/Surrogate
+sun/nio/cs/Surrogate$Parser
+sun/nio/cs/US_ASCII
+sun/nio/cs/US_ASCII$Decoder
sun/nio/cs/UTF_16
sun/nio/cs/UTF_16$Decoder
+sun/nio/cs/UTF_16BE
+sun/nio/cs/UTF_16LE
+sun/nio/cs/UTF_8
+sun/nio/cs/UTF_8$Decoder
+sun/nio/cs/UTF_8$Encoder
+sun/nio/cs/Unicode
sun/nio/cs/UnicodeDecoder
-sun/font/FileFontStrike
-sun/font/TrueTypeGlyphMapper
-sun/font/CMap
-sun/font/CMap$NullCMapClass
-sun/font/CMap$CMapFormat4
-java/nio/ByteBufferAsCharBufferB
-sun/font/CMap$CMapFormat12
-java/awt/FontFormatException
-sun/java2d/HeadlessGraphicsEnvironment
-java/nio/charset/Charset$3
-sun/nio/cs/AbstractCharsetProvider
-sun/font/NativeFont
-java/lang/CharacterData00
-sun/font/CMap$CMapFormat2
-sun/font/FontDesignMetrics$KeyReference
-sun/awt/image/PNGImageDecoder
-sun/awt/image/PNGFilterInputStream
-java/util/zip/InflaterInputStream
-java/util/zip/Inflater
-sun/reflect/UnsafeBooleanFieldAccessorImpl
-sun/awt/event/IgnorePaintEvent
-java/awt/image/DataBufferInt
-java/awt/image/SinglePixelPackedSampleModel
-sun/awt/image/IntegerInterleavedRaster
-sun/awt/image/OffScreenImage
-sun/awt/image/BufImgSurfaceData
-sun/java2d/opengl/GLXGraphicsConfig
-sun/java2d/opengl/OGLGraphicsConfig
-sun/java2d/x11/X11SurfaceData$X11PixmapSurfaceData
-sun/awt/image/WritableRasterNative
-sun/awt/image/DataBufferNative
-sun/java2d/SurfaceManagerFactory
-sun/java2d/opengl/GLXSurfaceData
-sun/java2d/opengl/OGLSurfaceData
-sun/font/CompositeGlyphMapper
-sun/java2d/loops/FontInfo
-java/util/Date
+sun/nio/cs/ext/DelegatableDecoder
+sun/nio/cs/ext/DoubleByte
+sun/nio/cs/ext/DoubleByte$Decoder
+sun/nio/cs/ext/EUC_KR
+sun/nio/cs/ext/ExtendedCharsets
+sun/print/PrinterGraphicsConfig
+sun/reflect/AccessorGenerator
+sun/reflect/BootstrapConstructorAccessorImpl
+sun/reflect/ByteVector
+sun/reflect/ByteVectorFactory
+sun/reflect/ByteVectorImpl
+sun/reflect/CallerSensitive
+sun/reflect/ClassDefiner
+sun/reflect/ClassDefiner$1
+sun/reflect/ClassFileAssembler
+sun/reflect/ClassFileConstants
+sun/reflect/ConstantPool
+sun/reflect/ConstructorAccessor
+sun/reflect/ConstructorAccessorImpl
+sun/reflect/DelegatingClassLoader
+sun/reflect/DelegatingConstructorAccessorImpl
+sun/reflect/DelegatingMethodAccessorImpl
+sun/reflect/FieldAccessor
+sun/reflect/FieldAccessorImpl
+sun/reflect/Label
+sun/reflect/Label$PatchInfo
+sun/reflect/LangReflectAccess
+sun/reflect/MagicAccessorImpl
+sun/reflect/MethodAccessor
+sun/reflect/MethodAccessorGenerator
+sun/reflect/MethodAccessorGenerator$1
+sun/reflect/MethodAccessorImpl
+sun/reflect/NativeConstructorAccessorImpl
+sun/reflect/NativeMethodAccessorImpl
+sun/reflect/Reflection
+sun/reflect/ReflectionFactory
+sun/reflect/ReflectionFactory$1
+sun/reflect/ReflectionFactory$GetReflectionFactoryAction
+sun/reflect/SerializationConstructorAccessorImpl
+sun/reflect/UTF8
+sun/reflect/UnsafeFieldAccessorFactory
+sun/reflect/UnsafeFieldAccessorImpl
+sun/reflect/UnsafeObjectFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
+sun/reflect/UnsafeStaticFieldAccessorImpl
+sun/reflect/annotation/AnnotationType
+sun/reflect/generics/repository/AbstractRepository
+sun/reflect/generics/repository/ClassRepository
+sun/reflect/generics/repository/GenericDeclRepository
+sun/reflect/misc/MethodUtil
+sun/reflect/misc/MethodUtil$1
+sun/reflect/misc/ReflectUtil
+sun/security/action/GetBooleanAction
+sun/security/action/GetIntegerAction
+sun/security/action/GetPropertyAction
+sun/security/action/PutAllAction
+sun/security/jca/GetInstance
+sun/security/jca/GetInstance$Instance
+sun/security/jca/ProviderConfig
+sun/security/jca/ProviderConfig$1
+sun/security/jca/ProviderConfig$2
+sun/security/jca/ProviderConfig$3
+sun/security/jca/ProviderList
+sun/security/jca/ProviderList$1
+sun/security/jca/ProviderList$2
+sun/security/jca/ProviderList$3
+sun/security/jca/ProviderList$ServiceList
+sun/security/jca/ProviderList$ServiceList$1
+sun/security/jca/Providers
+sun/security/jca/ServiceId
+sun/security/pkcs/ContentInfo
+sun/security/pkcs/PKCS7
+sun/security/pkcs/PKCS8Key
+sun/security/pkcs/PKCS9Attribute
+sun/security/pkcs/SignerInfo
+sun/security/provider/ByteArrayAccess
+sun/security/provider/DSAKeyFactory
+sun/security/provider/DSAParameters
+sun/security/provider/DSAPublicKey
+sun/security/provider/DSAPublicKeyImpl
+sun/security/provider/DigestBase
+sun/security/provider/NativePRNG
+sun/security/provider/NativePRNG$1
+sun/security/provider/NativePRNG$2
+sun/security/provider/NativePRNG$Blocking
+sun/security/provider/NativePRNG$NonBlocking
+sun/security/provider/NativePRNG$RandomIO
+sun/security/provider/NativePRNG$Variant
+sun/security/provider/SHA2
+sun/security/provider/SHA2$SHA256
+sun/security/provider/Sun
+sun/security/provider/SunEntries
+sun/security/provider/SunEntries$1
+sun/security/provider/X509Factory
+sun/security/provider/certpath/X509CertPath
+sun/security/rsa/RSACore
+sun/security/rsa/RSAKeyFactory
+sun/security/rsa/RSAPadding
+sun/security/rsa/RSAPrivateCrtKeyImpl
+sun/security/rsa/RSAPrivateKeyImpl
+sun/security/rsa/RSAPublicKeyImpl
+sun/security/rsa/RSASignature
+sun/security/rsa/RSASignature$SHA256withRSA
+sun/security/rsa/SunRsaSign
+sun/security/rsa/SunRsaSignEntries
+sun/security/util/BitArray
+sun/security/util/ByteArrayLexOrder
+sun/security/util/ByteArrayTagOrder
+sun/security/util/Cache
+sun/security/util/Cache$EqualByteArray
+sun/security/util/Debug
+sun/security/util/DerEncoder
+sun/security/util/DerIndefLenConverter
+sun/security/util/DerInputBuffer
+sun/security/util/DerInputStream
+sun/security/util/DerOutputStream
+sun/security/util/DerValue
+sun/security/util/Length
+sun/security/util/ManifestDigester
+sun/security/util/ManifestDigester$Entry
+sun/security/util/ManifestDigester$Position
+sun/security/util/ManifestEntryVerifier
+sun/security/util/ManifestEntryVerifier$SunProviderHolder
+sun/security/util/MemoryCache
+sun/security/util/MemoryCache$CacheEntry
+sun/security/util/MemoryCache$HardCacheEntry
+sun/security/util/MemoryCache$SoftCacheEntry
+sun/security/util/ObjectIdentifier
+sun/security/util/PropertyExpander
+sun/security/util/SignatureFileVerifier
+sun/security/x509/AVA
+sun/security/x509/AVAKeyword
+sun/security/x509/AlgorithmId
+sun/security/x509/AuthorityKeyIdentifierExtension
+sun/security/x509/BasicConstraintsExtension
+sun/security/x509/CertAttrSet
+sun/security/x509/CertificateAlgorithmId
+sun/security/x509/CertificateExtensions
+sun/security/x509/CertificateSerialNumber
+sun/security/x509/CertificateValidity
+sun/security/x509/CertificateVersion
+sun/security/x509/CertificateX509Key
+sun/security/x509/Extension
+sun/security/x509/GeneralName
+sun/security/x509/GeneralNameInterface
+sun/security/x509/GeneralNames
+sun/security/x509/KeyIdentifier
+sun/security/x509/KeyUsageExtension
+sun/security/x509/NetscapeCertTypeExtension
+sun/security/x509/NetscapeCertTypeExtension$MapEntry
+sun/security/x509/OIDMap
+sun/security/x509/OIDMap$OIDInfo
+sun/security/x509/PKIXExtensions
+sun/security/x509/RDN
+sun/security/x509/RFC822Name
+sun/security/x509/SerialNumber
+sun/security/x509/SubjectAlternativeNameExtension
+sun/security/x509/SubjectKeyIdentifierExtension
+sun/security/x509/X500Name
+sun/security/x509/X500Name$1
+sun/security/x509/X509AttributeName
+sun/security/x509/X509CertImpl
+sun/security/x509/X509CertInfo
+sun/security/x509/X509Key
+sun/swing/DefaultLookup
+sun/swing/ImageIconUIResource
+sun/swing/JLightweightFrame
+sun/swing/MenuItemLayoutHelper
+sun/swing/MenuItemLayoutHelper$ColumnAlignment
+sun/swing/MenuItemLayoutHelper$LayoutResult
+sun/swing/MenuItemLayoutHelper$RectSize
+sun/swing/PrintColorUIResource
+sun/swing/StringUIClientPropertyKey
+sun/swing/SwingAccessor
+sun/swing/SwingAccessor$JTextComponentAccessor
+sun/swing/SwingLazyValue
+sun/swing/SwingLazyValue$1
+sun/swing/SwingUtilities2
+sun/swing/SwingUtilities2$2
+sun/swing/SwingUtilities2$AATextInfo
+sun/swing/SwingUtilities2$LSBCacheEntry
+sun/swing/UIAction
+sun/swing/UIClientPropertyKey
+sun/swing/table/DefaultTableCellHeaderRenderer
+sun/swing/table/DefaultTableCellHeaderRenderer$EmptyIcon
+sun/text/ComposedCharIter
+sun/text/IntHashtable
+sun/text/UCompactIntArray
+sun/text/normalizer/CharTrie
+sun/text/normalizer/CharTrie$FriendAgent
+sun/text/normalizer/ICUBinary
+sun/text/normalizer/ICUBinary$Authenticate
+sun/text/normalizer/ICUData
+sun/text/normalizer/IntTrie
+sun/text/normalizer/NormalizerBase
+sun/text/normalizer/NormalizerBase$1
+sun/text/normalizer/NormalizerBase$Mode
+sun/text/normalizer/NormalizerBase$NFCMode
+sun/text/normalizer/NormalizerBase$NFDMode
+sun/text/normalizer/NormalizerBase$NFKCMode
+sun/text/normalizer/NormalizerBase$NFKDMode
+sun/text/normalizer/NormalizerBase$QuickCheckResult
+sun/text/normalizer/NormalizerDataReader
+sun/text/normalizer/NormalizerImpl
+sun/text/normalizer/NormalizerImpl$AuxTrieImpl
+sun/text/normalizer/NormalizerImpl$DecomposeArgs
+sun/text/normalizer/NormalizerImpl$FCDTrieImpl
+sun/text/normalizer/NormalizerImpl$NormTrieImpl
+sun/text/normalizer/Trie
+sun/text/normalizer/Trie$DataManipulate
+sun/text/normalizer/UTF16
+sun/text/normalizer/UnicodeMatcher
+sun/text/normalizer/UnicodeSet
+sun/text/resources/CollationData
+sun/text/resources/FormatData
+sun/text/resources/en/FormatData_en
+sun/text/resources/en/FormatData_en_US
+sun/util/CoreResourceBundleControl
+sun/util/PreHashedMap
+sun/util/ResourceBundleEnumeration
+sun/util/calendar/AbstractCalendar
+sun/util/calendar/BaseCalendar
+sun/util/calendar/BaseCalendar$Date
+sun/util/calendar/CalendarDate
sun/util/calendar/CalendarSystem
+sun/util/calendar/CalendarUtils
sun/util/calendar/Gregorian
-sun/util/calendar/BaseCalendar
-sun/util/calendar/AbstractCalendar
-java/util/TimeZone
-java/lang/InheritableThreadLocal
+sun/util/calendar/Gregorian$Date
sun/util/calendar/ZoneInfo
sun/util/calendar/ZoneInfoFile
sun/util/calendar/ZoneInfoFile$1
-java/util/TimeZone$1
-sun/util/calendar/Gregorian$Date
-sun/util/calendar/BaseCalendar$Date
-sun/util/calendar/CalendarDate
-sun/util/calendar/CalendarUtils
-java/util/TimeZone$DisplayNames
-sun/util/TimeZoneNameUtility
+sun/util/calendar/ZoneInfoFile$Checksum
+sun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule
+sun/util/locale/BaseLocale
+sun/util/locale/BaseLocale$Cache
+sun/util/locale/BaseLocale$Key
+sun/util/locale/LanguageTag
+sun/util/locale/LocaleObjectCache
+sun/util/locale/LocaleObjectCache$CacheEntry
+sun/util/locale/LocaleUtils
+sun/util/locale/provider/AuxLocaleProviderAdapter
+sun/util/locale/provider/AuxLocaleProviderAdapter$NullProvider
+sun/util/locale/provider/AvailableLanguageTags
+sun/util/locale/provider/CalendarDataProviderImpl
+sun/util/locale/provider/CalendarDataUtility
+sun/util/locale/provider/CalendarDataUtility$CalendarWeekParameterGetter
+sun/util/locale/provider/CalendarProviderImpl
+sun/util/locale/provider/CollatorProviderImpl
+sun/util/locale/provider/CurrencyNameProviderImpl
+sun/util/locale/provider/DateFormatSymbolsProviderImpl
+sun/util/locale/provider/DecimalFormatSymbolsProviderImpl
+sun/util/locale/provider/JRELocaleProviderAdapter
+sun/util/locale/provider/JRELocaleProviderAdapter$1
+sun/util/locale/provider/LocaleDataMetaInfo
+sun/util/locale/provider/LocaleProviderAdapter
+sun/util/locale/provider/LocaleProviderAdapter$1
+sun/util/locale/provider/LocaleProviderAdapter$Type
+sun/util/locale/provider/LocaleResources
+sun/util/locale/provider/LocaleResources$ResourceReference
+sun/util/locale/provider/LocaleServiceProviderPool
+sun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter
+sun/util/locale/provider/NumberFormatProviderImpl
+sun/util/locale/provider/ResourceBundleBasedAdapter
+sun/util/locale/provider/SPILocaleProviderAdapter
+sun/util/locale/provider/SPILocaleProviderAdapter$1
+sun/util/locale/provider/TimeZoneNameProviderImpl
+sun/util/locale/provider/TimeZoneNameUtility
+sun/util/locale/provider/TimeZoneNameUtility$TimeZoneNameGetter
+sun/util/logging/LoggingProxy
+sun/util/logging/LoggingSupport
+sun/util/logging/LoggingSupport$1
+sun/util/logging/LoggingSupport$2
+sun/util/logging/PlatformLogger
+sun/util/logging/PlatformLogger$1
+sun/util/logging/PlatformLogger$DefaultLoggerProxy
+sun/util/logging/PlatformLogger$JavaLoggerProxy
+sun/util/logging/PlatformLogger$Level
+sun/util/logging/PlatformLogger$LoggerProxy
+sun/util/logging/resources/logging
+sun/util/resources/CalendarData
+sun/util/resources/CurrencyNames
sun/util/resources/LocaleData
sun/util/resources/LocaleData$1
sun/util/resources/LocaleData$LocaleDataResourceBundleControl
-sun/util/LocaleDataMetaInfo
+sun/util/resources/LocaleNamesBundle
+sun/util/resources/OpenListResourceBundle
+sun/util/resources/ParallelListResourceBundle
+sun/util/resources/ParallelListResourceBundle$KeySet
sun/util/resources/TimeZoneNames
sun/util/resources/TimeZoneNamesBundle
-sun/util/resources/OpenListResourceBundle
-java/util/ResourceBundle$BundleReference
-sun/util/resources/TimeZoneNames_en
-java/util/spi/TimeZoneNameProvider
-java/util/spi/LocaleServiceProvider
-sun/util/LocaleServiceProviderPool
-sun/util/LocaleServiceProviderPool$1
-java/util/ServiceLoader
-java/util/ServiceLoader$LazyIterator
-java/util/ServiceLoader$1
-java/util/LinkedHashMap$EntryIterator
-sun/misc/URLClassPath$2
-java/lang/ClassLoader$2
-sun/misc/URLClassPath$1
-java/net/URLClassLoader$3
-sun/misc/CompoundEnumeration
-java/net/URLClassLoader$3$1
-java/lang/ProcessBuilder
-java/lang/ProcessImpl
-java/lang/UNIXProcess
-java/lang/Process
-java/lang/UNIXProcess$1
-java/lang/UNIXProcess$DeferredCloseInputStream
-java/lang/UNIXProcess$2
-java/lang/UNIXProcess$2$1
-java/net/ServerSocket
-java/util/Random
-java/util/concurrent/atomic/AtomicLong
-java/lang/InternalError
-java/io/StringReader
-java/lang/SecurityException
-java/io/FilterReader
-java/lang/reflect/Proxy
-java/lang/reflect/InvocationHandler
-java/lang/NoSuchFieldException
-java/lang/InstantiationException
-java/lang/ArrayIndexOutOfBoundsException
-javax/swing/JDialog
-sun/awt/X11/XClipboard
-sun/awt/datatransfer/SunClipboard
-java/awt/datatransfer/Clipboard
-java/awt/datatransfer/SystemFlavorMap
-java/awt/datatransfer/FlavorMap
-java/awt/datatransfer/FlavorTable
-java/awt/datatransfer/SystemFlavorMap$1
-sun/net/ProgressMonitor
-sun/net/DefaultProgressMeteringPolicy
-sun/net/ProgressMeteringPolicy
-java/awt/datatransfer/SystemFlavorMap$2
-java/awt/datatransfer/MimeType
-java/io/Externalizable
-java/awt/datatransfer/MimeTypeParameterList
-sun/awt/datatransfer/DataTransferer
-java/util/Collections$SynchronizedSet
-java/util/Collections$SynchronizedCollection
-java/awt/datatransfer/DataFlavor
-java/awt/datatransfer/DataFlavor$1
-sun/awt/datatransfer/DataTransferer$CharsetComparator
-sun/awt/datatransfer/DataTransferer$IndexedComparator
-sun/nio/cs/UTF_16LE
-sun/nio/cs/UTF_16BE
-sun/nio/cs/US_ASCII
-sun/awt/datatransfer/DataTransferer$DataFlavorComparator
-java/rmi/Remote
-sun/awt/datatransfer/DataTransferer$1
-sun/awt/X11/XDataTransferer
-sun/awt/datatransfer/ToolkitThreadBlockedHandler
-javax/imageio/ImageTypeSpecifier
-sun/awt/X11/XSelection
-sun/security/action/GetIntegerAction
-sun/awt/X11/XSelection$IncrementalTransferHandler
-sun/awt/X11/XSelection$SelectionEventHandler
-java/awt/datatransfer/Transferable
-java/io/EOFException
-java/util/Vector$1
-java/util/zip/ZipFile$1
-java/util/zip/ZipFile$2
-java/util/jar/JarFile$1
-java/util/PropertyResourceBundle
-java/util/ResourceBundle$Control$1
-java/util/Hashtable$EntrySet
-java/lang/IllegalAccessError
-java/text/MessageFormat
-java/text/Format
-java/text/FieldPosition
-java/text/MessageFormat$Field
-java/text/Format$Field
-java/lang/CloneNotSupportedException
-sun/reflect/MethodAccessorGenerator
-sun/reflect/AccessorGenerator
-sun/reflect/ClassFileConstants
-java/lang/Void
-sun/reflect/ByteVectorFactory
-sun/reflect/ByteVectorImpl
-sun/reflect/ByteVector
-sun/reflect/ClassFileAssembler
-sun/reflect/UTF8
-sun/reflect/Label
-sun/reflect/Label$PatchInfo
-sun/reflect/MethodAccessorGenerator$1
-sun/reflect/ClassDefiner
-sun/reflect/ClassDefiner$1
-sun/reflect/BootstrapConstructorAccessorImpl
-java/awt/event/ActionListener
-javax/swing/Timer
-javax/swing/Timer$DoPostEvent
-javax/swing/TimerQueue
-javax/swing/TimerQueue$1
-javax/swing/ToolTipManager
-java/awt/event/MouseAdapter
-javax/swing/ToolTipManager$insideTimerAction
-javax/swing/ToolTipManager$outsideTimerAction
-javax/swing/ToolTipManager$stillInsideTimerAction
-sun/swing/UIAction
-javax/swing/Action
-javax/swing/ToolTipManager$MoveBeforeEnterListener
-java/awt/event/MouseMotionAdapter
-java/util/Hashtable$ValueCollection
-javax/swing/event/CaretListener
-javax/swing/JToolBar
-javax/swing/JSplitPane
-javax/swing/border/Border
-javax/swing/JToggleButton
-javax/swing/border/EmptyBorder
-javax/swing/border/AbstractBorder
-javax/swing/DefaultButtonModel
-javax/swing/ButtonModel
-javax/swing/AbstractButton$Handler
-javax/swing/event/ChangeListener
-java/awt/event/ItemListener
-javax/swing/plaf/metal/MetalButtonUI
-javax/swing/plaf/basic/BasicButtonUI
-javax/swing/plaf/ButtonUI
-javax/swing/plaf/metal/MetalBorders
-javax/swing/plaf/BorderUIResource$CompoundBorderUIResource
-javax/swing/border/CompoundBorder
-javax/swing/plaf/metal/MetalBorders$ButtonBorder
-javax/swing/plaf/basic/BasicBorders$MarginBorder
-javax/swing/plaf/basic/BasicButtonListener
-java/awt/AWTEventMulticaster
-java/awt/event/WindowFocusListener
-java/awt/event/WindowStateListener
-java/awt/event/AdjustmentListener
-java/awt/event/TextListener
-javax/swing/event/AncestorListener
-java/beans/VetoableChangeListener
-javax/swing/ButtonGroup
-javax/swing/JToggleButton$ToggleButtonModel
-javax/swing/plaf/metal/MetalToggleButtonUI
-javax/swing/plaf/basic/BasicToggleButtonUI
-javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder
-java/awt/CardLayout
-javax/swing/Box
-javax/swing/plaf/metal/MetalBorders$TextFieldBorder
-javax/swing/plaf/metal/MetalBorders$Flush3DBorder
-javax/swing/BoxLayout
-javax/swing/JMenuBar
-javax/swing/DefaultSingleSelectionModel
-javax/swing/SingleSelectionModel
-javax/swing/plaf/basic/BasicMenuBarUI
-javax/swing/plaf/MenuBarUI
-javax/swing/plaf/basic/DefaultMenuLayout
-javax/swing/plaf/metal/MetalBorders$MenuBarBorder
-javax/swing/plaf/basic/BasicMenuBarUI$Handler
-javax/swing/KeyboardManager
-javax/swing/event/MenuEvent
-javax/swing/JMenu$MenuChangeListener
-javax/swing/JMenuItem$MenuItemFocusListener
-javax/swing/plaf/basic/BasicMenuUI
-javax/swing/plaf/basic/BasicMenuItemUI
-javax/swing/plaf/MenuItemUI
-javax/swing/plaf/metal/MetalBorders$MenuItemBorder
-javax/swing/plaf/metal/MetalIconFactory
-javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon
-javax/swing/plaf/basic/BasicMenuUI$Handler
-javax/swing/event/MenuKeyListener
-javax/swing/plaf/basic/BasicMenuItemUI$Handler
-javax/swing/event/MenuDragMouseListener
-javax/swing/event/MouseInputListener
-javax/swing/event/ChangeEvent
-java/awt/event/ContainerEvent
-javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon
-javax/swing/JPopupMenu
-javax/swing/plaf/basic/BasicPopupMenuUI
-javax/swing/plaf/PopupMenuUI
-javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
-java/awt/event/AWTEventListenerProxy
-java/awt/Toolkit$SelectiveAWTEventListener
-java/awt/Toolkit$ToolkitEventMulticaster
-javax/swing/plaf/basic/BasicLookAndFeel$1
-javax/swing/plaf/metal/MetalBorders$PopupMenuBorder
-javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener
-javax/swing/event/PopupMenuListener
-javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
-javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
-javax/swing/MenuSelectionManager
-javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper
-javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1
-java/awt/event/FocusAdapter
-javax/swing/JMenu$WinListener
-java/awt/event/WindowAdapter
-javax/swing/JPopupMenu$Separator
-javax/swing/JSeparator
-javax/swing/plaf/metal/MetalPopupMenuSeparatorUI
-javax/swing/plaf/metal/MetalSeparatorUI
-javax/swing/plaf/basic/BasicSeparatorUI
-javax/swing/plaf/SeparatorUI
-javax/swing/JComboBox
-javax/swing/event/ListDataListener
-javax/swing/event/CaretEvent
-javax/swing/text/TabExpander
-javax/swing/JScrollBar
-java/awt/Adjustable
-javax/swing/event/MouseInputAdapter
-javax/swing/JScrollBar$ModelListener
-javax/swing/DefaultBoundedRangeModel
-javax/swing/BoundedRangeModel
-javax/swing/plaf/metal/MetalScrollBarUI
-javax/swing/plaf/basic/BasicScrollBarUI
-javax/swing/plaf/ScrollBarUI
-javax/swing/plaf/metal/MetalBumps
-javax/swing/plaf/metal/MetalScrollButton
-javax/swing/plaf/basic/BasicArrowButton
-javax/swing/plaf/basic/BasicScrollBarUI$TrackListener
-javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener
-javax/swing/plaf/basic/BasicScrollBarUI$ModelListener
-javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener
-javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler
-javax/swing/plaf/basic/BasicScrollBarUI$Handler
-javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener
-javax/swing/CellRendererPane
-javax/swing/border/MatteBorder
-sun/font/StandardGlyphVector
-java/awt/font/GlyphVector
-sun/font/StandardGlyphVector$GlyphStrike
-sun/font/CoreMetrics
-sun/font/FontLineMetrics
-java/awt/font/LineMetrics
-javax/swing/ComboBoxModel
-javax/swing/ListModel
-javax/swing/ListCellRenderer
-javax/swing/DefaultComboBoxModel
-javax/swing/MutableComboBoxModel
-javax/swing/AbstractListModel
-javax/swing/JComboBox$1
-javax/swing/AncestorNotifier
-javax/swing/plaf/metal/MetalComboBoxUI
-javax/swing/plaf/basic/BasicComboBoxUI
-javax/swing/plaf/ComboBoxUI
-javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager
-javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
-javax/swing/plaf/basic/BasicComboPopup
-javax/swing/plaf/basic/ComboPopup
-javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
-javax/swing/border/LineBorder
-javax/swing/plaf/basic/BasicComboPopup$1
-javax/swing/JList
-javax/swing/DropMode
-javax/swing/DefaultListSelectionModel
-javax/swing/ListSelectionModel
-javax/swing/plaf/basic/BasicListUI
-javax/swing/plaf/ListUI
-javax/swing/plaf/basic/BasicListUI$ListTransferHandler
-javax/swing/TransferHandler
-javax/swing/TransferHandler$TransferAction
-javax/swing/DefaultListCellRenderer$UIResource
-javax/swing/DefaultListCellRenderer
-javax/swing/TransferHandler$SwingDropTarget
-java/awt/dnd/DropTargetContext
-javax/swing/TransferHandler$DropHandler
-javax/swing/TransferHandler$TransferSupport
-javax/swing/plaf/basic/BasicListUI$Handler
-javax/swing/event/ListSelectionListener
-javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
-javax/swing/plaf/basic/BasicComboPopup$Handler
-javax/swing/JScrollPane
-javax/swing/ScrollPaneConstants
-javax/swing/ScrollPaneLayout$UIResource
-javax/swing/ScrollPaneLayout
-javax/swing/JViewport
-javax/swing/ViewportLayout
-javax/swing/plaf/basic/BasicViewportUI
-javax/swing/plaf/ViewportUI
-javax/swing/JScrollPane$ScrollBar
-javax/swing/JViewport$ViewListener
-java/awt/event/ComponentAdapter
-javax/swing/plaf/metal/MetalScrollPaneUI
-javax/swing/plaf/basic/BasicScrollPaneUI
-javax/swing/plaf/ScrollPaneUI
-javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder
-javax/swing/plaf/basic/BasicScrollPaneUI$Handler
-javax/swing/plaf/metal/MetalScrollPaneUI$1
-javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource
-javax/swing/plaf/basic/BasicComboBoxRenderer
-javax/swing/plaf/metal/MetalComboBoxEditor$UIResource
-javax/swing/plaf/metal/MetalComboBoxEditor
-javax/swing/plaf/basic/BasicComboBoxEditor
-javax/swing/ComboBoxEditor
-javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
-javax/swing/JTextField$NotifyAction
-javax/swing/text/TextAction
-javax/swing/AbstractAction
-javax/swing/text/JTextComponent$MutableCaretEvent
-javax/swing/plaf/metal/MetalTextFieldUI
-javax/swing/plaf/basic/BasicTextFieldUI
-javax/swing/plaf/basic/BasicTextUI
-javax/swing/text/ViewFactory
-javax/swing/plaf/TextUI
-javax/swing/plaf/basic/BasicTextUI$BasicCursor
-javax/swing/text/DefaultEditorKit
-javax/swing/text/EditorKit
-javax/swing/text/DefaultEditorKit$InsertContentAction
-javax/swing/text/DefaultEditorKit$DeletePrevCharAction
-javax/swing/text/DefaultEditorKit$DeleteNextCharAction
-javax/swing/text/DefaultEditorKit$ReadOnlyAction
-javax/swing/text/DefaultEditorKit$DeleteWordAction
-javax/swing/text/DefaultEditorKit$WritableAction
-javax/swing/text/DefaultEditorKit$CutAction
-javax/swing/text/DefaultEditorKit$CopyAction
-javax/swing/text/DefaultEditorKit$PasteAction
-javax/swing/text/DefaultEditorKit$VerticalPageAction
-javax/swing/text/DefaultEditorKit$PageAction
-javax/swing/text/DefaultEditorKit$InsertBreakAction
-javax/swing/text/DefaultEditorKit$BeepAction
-javax/swing/text/DefaultEditorKit$NextVisualPositionAction
-javax/swing/text/DefaultEditorKit$BeginWordAction
-javax/swing/text/DefaultEditorKit$EndWordAction
-javax/swing/text/DefaultEditorKit$PreviousWordAction
-javax/swing/text/DefaultEditorKit$NextWordAction
-javax/swing/text/DefaultEditorKit$BeginLineAction
-javax/swing/text/DefaultEditorKit$EndLineAction
-javax/swing/text/DefaultEditorKit$BeginParagraphAction
-javax/swing/text/DefaultEditorKit$EndParagraphAction
-javax/swing/text/DefaultEditorKit$BeginAction
-javax/swing/text/DefaultEditorKit$EndAction
-javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
-javax/swing/text/DefaultEditorKit$InsertTabAction
-javax/swing/text/DefaultEditorKit$SelectWordAction
-javax/swing/text/DefaultEditorKit$SelectLineAction
-javax/swing/text/DefaultEditorKit$SelectParagraphAction
-javax/swing/text/DefaultEditorKit$SelectAllAction
-javax/swing/text/DefaultEditorKit$UnselectAction
-javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction
-javax/swing/text/DefaultEditorKit$DumpModelAction
-javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
-javax/swing/text/Position$Bias
-javax/swing/plaf/basic/BasicTextUI$RootView
-javax/swing/text/View
-javax/swing/plaf/basic/BasicTextUI$UpdateHandler
-javax/swing/event/DocumentListener
-javax/swing/plaf/basic/BasicTextUI$DragListener
-javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
-javax/swing/plaf/basic/BasicTextUI$BasicCaret
-javax/swing/text/DefaultCaret
-javax/swing/text/Caret
-javax/swing/text/DefaultCaret$Handler
-java/awt/datatransfer/ClipboardOwner
-javax/swing/plaf/basic/BasicTextUI$BasicHighlighter
-javax/swing/text/DefaultHighlighter
-javax/swing/text/LayeredHighlighter
-javax/swing/text/Highlighter
-javax/swing/text/Highlighter$Highlight
-javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
-javax/swing/text/LayeredHighlighter$LayerPainter
-javax/swing/text/Highlighter$HighlightPainter
-javax/swing/text/DefaultHighlighter$SafeDamager
-javax/swing/text/FieldView
-javax/swing/text/PlainView
-javax/swing/text/JTextComponent$DefaultKeymap
-javax/swing/text/Keymap
-javax/swing/text/JTextComponent$KeymapWrapper
-javax/swing/text/JTextComponent$KeymapActionMap
-javax/swing/plaf/basic/BasicTextUI$FocusAction
-javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
-javax/swing/JTextArea
-javax/swing/JEditorPane
-javax/swing/JTextField$ScrollRepainter
-javax/swing/plaf/metal/MetalComboBoxEditor$1
-javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder
-javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener
-javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler
-javax/swing/plaf/basic/BasicComboBoxUI$Handler
-javax/swing/plaf/metal/MetalComboBoxButton
-javax/swing/plaf/metal/MetalComboBoxIcon
-javax/swing/plaf/metal/MetalComboBoxButton$1
-javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
-javax/swing/JComboBox$KeySelectionManager
-javax/swing/JToolBar$DefaultToolBarLayout
-javax/swing/plaf/metal/MetalToolBarUI
-javax/swing/plaf/basic/BasicToolBarUI
-javax/swing/plaf/ToolBarUI
-javax/swing/plaf/metal/MetalBorders$ToolBarBorder
-javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
-javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder
-javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder
-javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
-javax/swing/plaf/basic/BasicBorders$ButtonBorder
-javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
-javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener
-javax/swing/plaf/basic/BasicToolBarUI$DockingListener
-javax/swing/plaf/basic/BasicToolBarUI$Handler
-javax/swing/border/EtchedBorder
-javax/swing/JToolBar$Separator
-javax/swing/plaf/basic/BasicToolBarSeparatorUI
-sun/font/FontDesignMetrics$MetricsKey
-javax/swing/KeyboardManager$ComponentKeyStrokePair
-sun/awt/EmbeddedFrame
-sun/awt/im/InputMethodContext
-java/awt/im/spi/InputMethodContext
-sun/awt/im/InputContext
-sun/awt/im/InputMethodManager
-sun/awt/im/ExecutableInputMethodManager
-sun/awt/X11/XInputMethodDescriptor
-sun/awt/X11InputMethodDescriptor
-java/awt/im/spi/InputMethodDescriptor
-sun/awt/im/InputMethodLocator
-sun/awt/im/ExecutableInputMethodManager$2
-sun/misc/Service
-sun/misc/Service$LazyIterator
-java/util/TreeSet
-java/util/NavigableSet
-java/util/SortedSet
-javax/swing/SizeRequirements
-javax/swing/plaf/basic/BasicGraphicsUtils
-java/awt/event/AdjustmentEvent
-java/awt/MenuBar
-sun/awt/X11/XComponentPeer$2
-java/awt/SequencedEvent
-java/beans/PropertyVetoException
-java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
-java/awt/KeyboardFocusManager$HeavyweightFocusRequest
-java/awt/KeyboardFocusManager$LightweightFocusRequest
-sun/awt/X11/XFocusChangeEvent
-sun/awt/X11/XComponentPeer$1
-sun/awt/X11/XTranslateCoordinates
-sun/awt/KeyboardFocusManagerPeerImpl
-sun/awt/SunToolkit$7
-java/awt/Window$1DisposeAction
-java/awt/LightweightDispatcher$2
-sun/awt/X11/XUnmapEvent
-java/io/StringWriter
-javax/swing/JWindow
-java/io/UnsupportedEncodingException
-java/net/UnknownHostException
-java/nio/channels/SocketChannel
-java/nio/channels/spi/AbstractSelectableChannel
-java/nio/channels/SelectableChannel
-java/net/SocketImplFactory
-javax/swing/UnsupportedLookAndFeelException
-java/lang/UnsatisfiedLinkError
-javax/swing/Box$Filler
-javax/swing/JComponent$2
-sun/net/www/MimeTable
-java/net/FileNameMap
-sun/net/www/MimeTable$1
-sun/net/www/MimeEntry
-java/net/URLConnection$1
-java/text/SimpleDateFormat
-java/text/DateFormat
-java/text/DateFormat$Field
-java/util/Calendar
-java/util/GregorianCalendar
-sun/util/resources/CalendarData
-sun/util/resources/LocaleNamesBundle
-sun/util/resources/CalendarData_en
-java/text/DateFormatSymbols
-java/text/spi/DateFormatSymbolsProvider
-sun/text/resources/FormatData
-sun/text/resources/FormatData_en
-sun/text/resources/FormatData_en_US
-java/text/NumberFormat
-java/text/spi/NumberFormatProvider
-java/text/DecimalFormatSymbols
-java/text/spi/DecimalFormatSymbolsProvider
-java/util/Currency
-java/util/Currency$1
-java/util/spi/CurrencyNameProvider
-sun/util/resources/CurrencyNames
-sun/util/resources/CurrencyNames_en_US
-java/text/DecimalFormat
-java/text/DigitList
-java/math/RoundingMode
-java/text/DontCareFieldPosition
-java/text/DontCareFieldPosition$1
-java/text/Format$FieldDelegate
-javax/swing/plaf/BorderUIResource
-javax/swing/BorderFactory
-javax/swing/border/BevelBorder
-javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon
-javax/swing/plaf/metal/MetalIconFactory$FolderIcon16
-java/util/zip/ZipInputStream
-java/io/PushbackInputStream
-java/util/zip/CRC32
-java/util/zip/Checksum
-java/lang/Thread$State
-javax/swing/SwingUtilities$SharedOwnerFrame
-javax/swing/JTable
-javax/swing/event/TableModelListener
-javax/swing/event/TableColumnModelListener
-javax/swing/event/CellEditorListener
-javax/swing/event/RowSorterListener
-java/awt/GraphicsCallback$PaintCallback
-java/awt/GraphicsCallback
-sun/awt/SunGraphicsCallback
-javax/swing/BufferStrategyPaintManager$BufferInfo
-java/awt/Component$BltSubRegionBufferStrategy
-sun/awt/SubRegionShowable
-java/awt/Component$BltBufferStrategy
-sun/awt/image/SunVolatileImage
-sun/awt/image/BufferedImageGraphicsConfig
-sun/print/PrinterGraphicsConfig
-sun/awt/image/VolatileSurfaceManager
-javax/swing/JRadioButton
-java/lang/ClassFormatError
-java/awt/print/PrinterGraphics
-java/awt/PrintGraphics
-javax/swing/JTabbedPane
-javax/swing/JTabbedPane$ModelListener
-javax/swing/plaf/metal/MetalTabbedPaneUI
-javax/swing/plaf/basic/BasicTabbedPaneUI
-javax/swing/plaf/TabbedPaneUI
-javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout
-javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout
-javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout
-javax/swing/plaf/basic/BasicTabbedPaneUI$Handler
-sun/swing/ImageIconUIResource
-javax/swing/GrayFilter
-java/awt/image/RGBImageFilter
-java/awt/image/ImageFilter
-java/awt/image/FilteredImageSource
-org/w3c/dom/Node
-org/xml/sax/SAXException
-javax/xml/parsers/ParserConfigurationException
-org/xml/sax/EntityResolver
-java/security/NoSuchAlgorithmException
-java/security/GeneralSecurityException
-java/util/zip/GZIPInputStream
-java/util/zip/DeflaterOutputStream
-org/xml/sax/InputSource
-javax/xml/parsers/DocumentBuilderFactory
-javax/xml/parsers/FactoryFinder
-javax/xml/parsers/SecuritySupport
-javax/xml/parsers/SecuritySupport$2
-javax/xml/parsers/SecuritySupport$5
-javax/xml/parsers/SecuritySupport$1
-javax/xml/parsers/SecuritySupport$4
-javax/xml/parsers/DocumentBuilder
-org/w3c/dom/Document
-org/xml/sax/helpers/DefaultHandler
-org/xml/sax/DTDHandler
-org/xml/sax/ContentHandler
-org/xml/sax/ErrorHandler
-org/xml/sax/SAXNotSupportedException
-org/xml/sax/Locator
-org/xml/sax/SAXNotRecognizedException
-org/xml/sax/SAXParseException
-org/w3c/dom/NodeList
-org/w3c/dom/events/EventTarget
-org/w3c/dom/traversal/DocumentTraversal
-org/w3c/dom/events/DocumentEvent
-org/w3c/dom/ranges/DocumentRange
-org/w3c/dom/Entity
-org/w3c/dom/Element
-org/w3c/dom/CharacterData
-org/w3c/dom/CDATASection
-org/w3c/dom/Text
-org/xml/sax/AttributeList
-org/w3c/dom/DOMException
-org/w3c/dom/Notation
-org/w3c/dom/DocumentType
-org/w3c/dom/Attr
-org/w3c/dom/EntityReference
-org/w3c/dom/ProcessingInstruction
-org/w3c/dom/Comment
-org/w3c/dom/DocumentFragment
-org/w3c/dom/events/Event
-org/w3c/dom/events/MutationEvent
-org/w3c/dom/traversal/TreeWalker
-org/w3c/dom/ranges/Range
-org/w3c/dom/traversal/NodeIterator
-org/w3c/dom/events/EventException
-org/w3c/dom/NamedNodeMap
-java/awt/GridLayout
-javax/swing/plaf/metal/MetalRadioButtonUI
-javax/swing/plaf/basic/BasicRadioButtonUI
-javax/swing/plaf/basic/BasicBorders
-javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon
-java/awt/event/ItemEvent
-java/awt/CardLayout$Card
-javax/swing/JCheckBox
-javax/swing/event/ListSelectionEvent
-javax/swing/plaf/metal/MetalCheckBoxUI
-javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon
-java/lang/ExceptionInInitializerError
-com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
-javax/swing/JProgressBar
-javax/swing/JProgressBar$ModelListener
-javax/swing/plaf/metal/MetalProgressBarUI
-javax/swing/plaf/basic/BasicProgressBarUI
-javax/swing/plaf/ProgressBarUI
-javax/swing/plaf/BorderUIResource$LineBorderUIResource
-javax/swing/plaf/basic/BasicProgressBarUI$Handler
-javax/swing/tree/TreeModel
-javax/swing/table/TableCellRenderer
-javax/swing/table/JTableHeader
-javax/swing/event/TreeExpansionListener
-javax/swing/table/AbstractTableModel
-javax/swing/table/TableModel
-javax/swing/table/DefaultTableCellRenderer
-javax/swing/JTree
-javax/swing/tree/TreeSelectionModel
-javax/swing/tree/DefaultTreeCellRenderer
-javax/swing/tree/TreeCellRenderer
-javax/swing/table/TableCellEditor
-javax/swing/CellEditor
-javax/swing/JToolTip
-javax/swing/table/TableColumn
-javax/swing/table/DefaultTableColumnModel
-javax/swing/table/TableColumnModel
-javax/swing/table/DefaultTableModel
-javax/swing/event/TableModelEvent
-sun/swing/table/DefaultTableCellHeaderRenderer
-javax/swing/plaf/basic/BasicTableHeaderUI
-javax/swing/plaf/TableHeaderUI
-javax/swing/plaf/basic/BasicTableHeaderUI$1
-javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler
-javax/swing/DefaultCellEditor
-javax/swing/tree/TreeCellEditor
-javax/swing/AbstractCellEditor
-javax/swing/plaf/basic/BasicTableUI
-javax/swing/plaf/TableUI
-javax/swing/plaf/basic/BasicTableUI$TableTransferHandler
-javax/swing/plaf/basic/BasicTableUI$Handler
-javax/swing/tree/DefaultTreeSelectionModel
-javax/swing/tree/TreePath
-javax/swing/plaf/metal/MetalTreeUI
-javax/swing/plaf/basic/BasicTreeUI
-javax/swing/plaf/TreeUI
-javax/swing/plaf/basic/BasicTreeUI$Actions
-javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler
-javax/swing/plaf/metal/MetalTreeUI$LineListener
-javax/swing/plaf/basic/BasicTreeUI$Handler
-javax/swing/event/TreeModelListener
-javax/swing/event/TreeSelectionListener
-javax/swing/event/SwingPropertyChangeSupport
-javax/swing/tree/VariableHeightLayoutCache
-javax/swing/tree/AbstractLayoutCache
-javax/swing/tree/RowMapper
-javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler
-javax/swing/tree/AbstractLayoutCache$NodeDimensions
-javax/swing/JTree$TreeModelHandler
-javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
-javax/swing/tree/DefaultMutableTreeNode
-javax/swing/tree/MutableTreeNode
-javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
-javax/swing/event/TableColumnModelEvent
-java/text/ParseException
-java/text/NumberFormat$Field
-javax/swing/event/UndoableEditListener
-javax/swing/filechooser/FileFilter
-javax/swing/tree/DefaultTreeModel
-javax/swing/tree/DefaultTreeCellEditor
-javax/swing/tree/DefaultTreeCellEditor$1
-javax/swing/tree/DefaultTreeCellEditor$DefaultTextField
-javax/swing/DefaultCellEditor$1
-javax/swing/DefaultCellEditor$EditorDelegate
-javax/swing/tree/DefaultTreeCellEditor$EditorContainer
-javax/swing/JTree$TreeSelectionRedirector
-javax/swing/event/TreeModelEvent
-javax/swing/plaf/metal/MetalSplitPaneUI
-javax/swing/plaf/basic/BasicSplitPaneUI
-javax/swing/plaf/SplitPaneUI
-javax/swing/plaf/basic/BasicSplitPaneDivider
-javax/swing/plaf/basic/BasicBorders$SplitPaneBorder
-javax/swing/plaf/metal/MetalSplitPaneDivider
-javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout
-javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler
-javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder
-javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager
-javax/swing/plaf/basic/BasicSplitPaneUI$1
-javax/swing/plaf/basic/BasicSplitPaneUI$Handler
-javax/swing/plaf/metal/MetalSplitPaneDivider$1
-javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler
-javax/swing/plaf/metal/MetalSplitPaneDivider$2
-javax/swing/border/TitledBorder
-javax/swing/plaf/basic/BasicTextAreaUI
-java/util/Collections$UnmodifiableCollection$1
-java/io/InterruptedIOException
-java/net/NoRouteToHostException
-java/net/BindException
-javax/swing/tree/PathPlaceHolder
-javax/swing/event/TreeSelectionEvent
-javax/swing/JList$3
-javax/swing/JList$ListSelectionHandler
-javax/swing/JSlider
-javax/swing/JSlider$ModelListener
-javax/swing/plaf/metal/MetalSliderUI
-javax/swing/plaf/basic/BasicSliderUI
-javax/swing/plaf/SliderUI
-javax/swing/plaf/basic/BasicSliderUI$Actions
-javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon
-javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon
-javax/swing/plaf/basic/BasicSliderUI$TrackListener
-javax/swing/plaf/basic/BasicSliderUI$Handler
-javax/swing/plaf/basic/BasicSliderUI$ScrollListener
-javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
-javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
-java/util/Hashtable$KeySet
-sun/font/Type1Font$1
-java/nio/channels/FileChannel$MapMode
-sun/nio/ch/FileChannelImpl$Unmapper
-sun/nio/ch/Util$3
-java/nio/DirectByteBufferR
-sun/nio/cs/US_ASCII$Decoder
-sun/font/Type1Font$2
-sun/font/Type1GlyphMapper
-javax/swing/DefaultListModel
-javax/swing/event/ListDataEvent
-javax/sound/sampled/DataLine
-javax/sound/sampled/Line
-javax/sound/sampled/Line$Info
-javax/sound/sampled/DataLine$Info
-javax/sound/sampled/Control$Type
-javax/sound/sampled/FloatControl$Type
-javax/sound/sampled/LineUnavailableException
-javax/sound/sampled/UnsupportedAudioFileException
-javax/swing/JRadioButtonMenuItem
-javax/swing/JMenuItem$AccessibleJMenuItem
-javax/swing/AbstractButton$AccessibleAbstractButton
-javax/accessibility/AccessibleAction
-javax/accessibility/AccessibleValue
-javax/accessibility/AccessibleText
-javax/accessibility/AccessibleExtendedComponent
-javax/accessibility/AccessibleComponent
-javax/swing/JComponent$AccessibleJComponent
-java/awt/Container$AccessibleAWTContainer
-java/awt/Component$AccessibleAWTComponent
-javax/accessibility/AccessibleRelationSet
-javax/accessibility/AccessibleState
-javax/accessibility/AccessibleBundle
-javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
-javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon
-javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem
-javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
-javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon
-sun/awt/image/ImageDecoder$1
-javax/swing/JTabbedPane$Page
-java/net/DatagramSocket
-java/net/MulticastSocket
-java/net/DatagramPacket
-sun/net/InetAddressCachePolicy
-sun/net/InetAddressCachePolicy$1
-sun/net/InetAddressCachePolicy$2
-java/net/InetAddress$CacheEntry
-java/net/PlainDatagramSocketImpl
-java/net/DatagramSocketImpl
-java/net/NetworkInterface
-java/net/InterfaceAddress
-java/text/Collator
-java/text/spi/CollatorProvider
-sun/text/resources/CollationData
-sun/text/resources/CollationData_en
-sun/util/EmptyListResourceBundle
-java/text/RuleBasedCollator
-java/text/CollationRules
-java/text/RBCollationTables
-java/text/RBTableBuilder
-java/text/RBCollationTables$BuildAPI
-sun/text/IntHashtable
-sun/text/UCompactIntArray
-sun/text/normalizer/NormalizerImpl
-sun/text/normalizer/ICUData
-sun/text/normalizer/NormalizerDataReader
-sun/text/normalizer/ICUBinary$Authenticate
-sun/text/normalizer/ICUBinary
-sun/text/normalizer/NormalizerImpl$FCDTrieImpl
-sun/text/normalizer/Trie$DataManipulate
-sun/text/normalizer/NormalizerImpl$NormTrieImpl
-sun/text/normalizer/NormalizerImpl$AuxTrieImpl
-sun/text/normalizer/IntTrie
-sun/text/normalizer/Trie
-sun/text/normalizer/CharTrie
-sun/text/normalizer/CharTrie$FriendAgent
-sun/text/normalizer/UnicodeSet
-sun/text/normalizer/UnicodeMatcher
-sun/text/normalizer/NormalizerImpl$DecomposeArgs
-java/text/MergeCollation
-java/text/PatternEntry$Parser
-java/text/PatternEntry
-java/text/EntryPair
-sun/text/ComposedCharIter
-sun/text/normalizer/UTF16
-sun/net/www/protocol/http/Handler
-java/io/ObjectInputStream$BlockDataInputStream
-java/io/ObjectInputStream$PeekInputStream
-java/io/ObjectInputStream$HandleTable
-java/io/ObjectInputStream$HandleTable$HandleList
-java/io/ObjectInputStream$ValidationList
-java/io/Bits
-java/io/ObjectStreamClass$Caches
-java/io/ObjectStreamClass$WeakClassKey
-java/io/ObjectStreamClass$EntryFuture
-java/io/ObjectStreamClass$2
-sun/reflect/SerializationConstructorAccessorImpl
-java/io/ObjectStreamClass$FieldReflectorKey
-java/io/ObjectStreamClass$FieldReflector
-java/io/ObjectStreamClass$1
-java/io/DataOutputStream
-java/io/ObjectStreamClass$MemberSignature
-java/io/ObjectStreamClass$3
-java/io/ObjectStreamClass$4
-java/io/ObjectStreamClass$5
-java/security/MessageDigest
-java/security/MessageDigestSpi
-sun/security/jca/GetInstance
-sun/security/jca/Providers
-sun/security/jca/ProviderList
-sun/security/jca/ProviderConfig
-sun/security/jca/ProviderList$3
-sun/security/jca/ProviderList$1
-sun/security/jca/ProviderList$2
-sun/security/jca/ProviderConfig$2
-sun/security/util/PropertyExpander
-sun/security/jca/ProviderConfig$1
-sun/security/jca/ProviderConfig$3
-sun/security/util/ManifestDigester
-sun/security/util/ManifestDigester$Position
-sun/security/util/ManifestDigester$Entry
-sun/security/pkcs/PKCS7
-sun/security/util/DerInputStream
-sun/security/util/DerIndefLenConverter
-sun/security/util/DerInputBuffer
-sun/security/pkcs/ContentInfo
-sun/security/util/ObjectIdentifier
-sun/security/util/DerValue
-sun/security/util/DerOutputStream
-sun/security/util/DerEncoder
-sun/security/util/ByteArrayLexOrder
-sun/security/util/ByteArrayTagOrder
-java/math/BigInteger
-sun/security/x509/AlgorithmId
-java/security/cert/CertificateFactory
-java/security/cert/CertificateFactorySpi
-java/security/Provider$Service
-java/security/Provider$UString
-sun/security/provider/X509Factory
-sun/security/util/Cache
-sun/security/util/MemoryCache
-sun/security/jca/GetInstance$Instance
-java/security/cert/X509Certificate
-java/security/cert/X509Extension
-sun/security/util/Cache$EqualByteArray
-sun/security/x509/X509CertImpl
-sun/security/x509/X509CertInfo
-sun/security/x509/CertAttrSet
-sun/security/x509/CertificateVersion
-sun/security/x509/CertificateSerialNumber
-sun/security/x509/SerialNumber
-sun/security/x509/CertificateAlgorithmId
-sun/security/x509/CertificateIssuerName
-sun/security/x509/X500Name
-sun/security/x509/GeneralNameInterface
-sun/security/x509/X500Name$1
-javax/security/auth/x500/X500Principal
-sun/security/x509/RDN
-sun/security/x509/AVA
-sun/security/x509/CertificateValidity
-sun/security/x509/CertificateSubjectName
-sun/security/x509/CertificateX509Key
-sun/security/x509/X509Key
-java/security/PublicKey
-java/security/Key
-sun/security/util/BitArray
-java/security/spec/X509EncodedKeySpec
-java/security/spec/EncodedKeySpec
-java/security/spec/KeySpec
-java/security/KeyFactory
-sun/security/jca/ProviderList$ServiceList
-sun/security/jca/ProviderList$ServiceList$1
-sun/security/rsa/RSAKeyFactory
-java/security/KeyFactorySpi
-java/security/spec/RSAPublicKeySpec
-java/security/spec/RSAPrivateKeySpec
-java/security/spec/RSAPrivateCrtKeySpec
-java/security/spec/PKCS8EncodedKeySpec
-sun/security/rsa/RSAPublicKeyImpl
-java/security/interfaces/RSAPublicKey
-java/security/interfaces/RSAKey
-sun/security/rsa/RSAPrivateCrtKeyImpl
-java/security/interfaces/RSAPrivateCrtKey
-java/security/interfaces/RSAPrivateKey
-java/security/PrivateKey
-sun/security/pkcs/PKCS8Key
-sun/security/x509/CertificateExtensions
-sun/security/x509/Extension
-sun/security/x509/OIDMap
-sun/security/x509/PKIXExtensions
-sun/security/x509/OIDMap$OIDInfo
-sun/security/x509/NetscapeCertTypeExtension
-sun/security/x509/NetscapeCertTypeExtension$MapEntry
-sun/security/x509/KeyUsageExtension
-sun/security/x509/SubjectKeyIdentifierExtension
-sun/security/x509/KeyIdentifier
-sun/security/x509/AuthorityKeyIdentifierExtension
-sun/security/x509/GeneralNames
-sun/security/x509/SubjectAlternativeNameExtension
-sun/security/x509/GeneralName
-sun/security/x509/RFC822Name
-sun/security/x509/X509AttributeName
-sun/security/util/MemoryCache$SoftCacheEntry
-sun/security/util/MemoryCache$CacheEntry
-java/security/AlgorithmParameters
-java/security/AlgorithmParametersSpi
-sun/security/provider/DSAParameters
-sun/security/provider/DSAKeyFactory
-java/security/spec/DSAPublicKeySpec
-sun/security/provider/DSAPublicKeyImpl
-sun/security/provider/DSAPublicKey
-java/security/interfaces/DSAPublicKey
-java/security/interfaces/DSAKey
-sun/security/x509/BasicConstraintsExtension
-sun/security/pkcs/SignerInfo
-java/security/Signature
-java/security/SignatureSpi
-sun/security/jca/ServiceId
-java/security/Signature$Delegate
-sun/security/x509/AVAKeyword
-sun/security/pkcs/PKCS9Attribute
-java/text/Normalizer$Form
-java/text/Normalizer
-sun/text/normalizer/NormalizerBase
-sun/text/normalizer/NormalizerBase$Mode
-sun/text/normalizer/NormalizerBase$NFDMode
-sun/text/normalizer/NormalizerBase$NFKDMode
-sun/text/normalizer/NormalizerBase$NFCMode
-sun/text/normalizer/NormalizerBase$NFKCMode
-sun/text/normalizer/NormalizerBase$QuickCheckResult
-sun/text/normalizer/NormalizerBase$1
-sun/security/rsa/RSASignature$SHA1withRSA
-sun/security/rsa/RSASignature
-sun/security/provider/SHA
-sun/security/provider/DigestBase
-java/security/MessageDigest$Delegate
-sun/security/rsa/RSACore
-sun/security/rsa/RSAPadding
-sun/security/provider/ByteArrayAccess
-java/math/MutableBigInteger
-sun/security/provider/certpath/X509CertPath
-java/security/cert/CertPath
-java/security/CodeSigner
-sun/misc/CEStreamExhausted
-java/util/jar/JarVerifier$VerifierStream
-java/security/AuthProvider
-java/security/SecurityPermission
-javax/security/auth/login/LoginException
-javax/security/auth/login/FailedLoginException
-java/security/ProviderException
-java/io/StreamTokenizer
-java/lang/AssertionError
-java/io/NotSerializableException
-java/io/ObjectStreamException
-java/security/InvalidParameterException
-java/io/ObjectStreamClass$ClassDataSlot
-sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
-java/io/ObjectOutputStream$BlockDataOutputStream
-java/io/ObjectOutputStream$HandleTable
-java/io/ObjectOutputStream$ReplaceTable
-java/security/SignatureException
-java/security/InvalidKeyException
-java/security/KeyException
-java/security/interfaces/DSAParams
-java/io/InvalidClassException
-java/io/ObjectInputStream$GetFieldImpl
-java/io/ObjectInputStream$GetField
-java/security/interfaces/DSAPrivateKey
-java/security/spec/InvalidKeySpecException
-java/security/spec/DSAParameterSpec
-java/security/spec/AlgorithmParameterSpec
-sun/security/util/MemoryCache$HardCacheEntry
-java/awt/EventQueue$1AWTInvocationLock
-java/awt/Component$FlipBufferStrategy
-java/awt/SentEvent
-sun/awt/X11/XDestroyWindowEvent
-sun/awt/X11/XDropTargetRegistry
-sun/awt/X11/XEmbeddedFramePeer
-sun/awt/X11/XDragAndDropProtocols
-sun/awt/X11/XDropTargetContextPeer
-sun/awt/dnd/SunDropTargetContextPeer
-java/awt/dnd/peer/DropTargetContextPeer
-sun/awt/X11/XDropTargetContextPeer$XDropTargetProtocolListenerImpl
-sun/awt/X11/XDropTargetProtocolListener
-sun/awt/X11/XDnDDragSourceProtocol
-sun/awt/X11/XDragSourceProtocol
-sun/awt/X11/MotifDnDDragSourceProtocol
-sun/awt/X11/XDnDDropTargetProtocol
-sun/awt/X11/XDropTargetProtocol
-sun/awt/X11/MotifDnDDropTargetProtocol
-sun/awt/X11/XDnDConstants
-sun/awt/X11/MotifDnDConstants
-javax/swing/JTable$2
-javax/swing/JTable$Resizable3
-javax/swing/JTable$Resizable2
-javax/swing/JTable$5
-javax/swing/event/AncestorEvent
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel
-javax/swing/plaf/synth/SynthLookAndFeel
-javax/swing/plaf/synth/DefaultSynthStyleFactory
-javax/swing/plaf/synth/SynthStyleFactory
-sun/swing/BakedArrayList
-javax/swing/plaf/synth/SynthLookAndFeel$Handler
-javax/swing/plaf/synth/SynthDefaultLookup
-com/sun/java/swing/plaf/gtk/GTKEngine
-javax/swing/plaf/synth/Region
-com/sun/java/swing/plaf/gtk/GTKRegion
-sun/swing/ImageCache
-com/sun/java/swing/plaf/gtk/GTKEngine$Settings
-com/sun/java/swing/plaf/gtk/GTKStyleFactory
-com/sun/java/swing/plaf/gtk/PangoFonts
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel$WeakPCL
-javax/swing/plaf/synth/SynthLookAndFeel$AATextListener
-com/sun/java/swing/plaf/gtk/GTKStyle
-com/sun/java/swing/plaf/gtk/GTKConstants
-javax/swing/plaf/synth/SynthStyle
-javax/swing/plaf/synth/SynthGraphicsUtils
-com/sun/java/swing/plaf/gtk/GTKGraphicsUtils
-com/sun/java/swing/plaf/gtk/GTKStyle$GTKStockIcon
-sun/swing/plaf/synth/SynthIcon
-com/sun/java/swing/plaf/gtk/GTKColorType
-javax/swing/plaf/synth/ColorType
-com/sun/java/swing/plaf/gtk/GTKConstants$StateType
-com/sun/java/swing/plaf/gtk/resources/gtk
-com/sun/swing/internal/plaf/synth/resources/synth
-com/sun/java/swing/plaf/gtk/GTKStyle$GTKLazyValue
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel$1FontLazyValue
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel$2
-com/sun/java/swing/plaf/gtk/GTKLookAndFeel$3
-javax/swing/plaf/synth/SynthPanelUI
-javax/swing/plaf/synth/SynthConstants
-javax/swing/plaf/synth/SynthContext
-javax/swing/plaf/synth/SynthBorder
-javax/swing/plaf/synth/SynthRootPaneUI
-javax/swing/plaf/synth/SynthLabelUI
-sun/java2d/x11/X11VolatileSurfaceManager
-javax/swing/plaf/synth/SynthButtonUI
-javax/swing/plaf/synth/SynthToggleButtonUI
-javax/swing/plaf/basic/BasicBorders$FieldBorder
-javax/swing/plaf/synth/SynthMenuBarUI
-javax/swing/plaf/synth/SynthMenuUI
-javax/swing/plaf/synth/SynthUI
-com/sun/java/swing/plaf/gtk/GTKIconFactory
-com/sun/java/swing/plaf/gtk/GTKIconFactory$MenuArrowIcon
-com/sun/java/swing/plaf/gtk/GTKIconFactory$DelegatingIcon
-com/sun/java/swing/plaf/gtk/GTKConstants$ArrowType
-javax/swing/plaf/basic/BasicIconFactory
-javax/swing/plaf/basic/BasicIconFactory$MenuItemCheckIcon
-javax/swing/plaf/synth/SynthMenuItemUI
-javax/swing/plaf/synth/SynthPopupMenuUI
-javax/swing/plaf/synth/SynthSeparatorUI
-javax/swing/plaf/synth/SynthScrollBarUI
-javax/swing/plaf/synth/SynthArrowButton
-javax/swing/plaf/synth/SynthArrowButton$SynthArrowButtonUI
-javax/swing/plaf/synth/SynthComboBoxUI
-javax/swing/plaf/synth/SynthComboPopup
-javax/swing/plaf/synth/SynthListUI
-javax/swing/plaf/synth/SynthListUI$SynthListCellRenderer
-javax/swing/plaf/synth/SynthViewportUI
-javax/swing/plaf/synth/SynthScrollPaneUI
-javax/swing/plaf/synth/SynthScrollPaneUI$ViewportBorder
-javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxRenderer
-javax/swing/plaf/synth/SynthComboBoxUI$SynthComboBoxEditor
-javax/swing/plaf/synth/SynthTextFieldUI
-javax/swing/plaf/synth/SynthToolBarUI
-javax/swing/plaf/synth/SynthToolBarUI$SynthToolBarLayoutManager
-com/sun/java/swing/plaf/gtk/GTKIconFactory$ToolBarHandleIcon
-com/sun/java/swing/plaf/gtk/GTKConstants$Orientation
-com/sun/java/swing/plaf/gtk/GTKPainter
-javax/swing/plaf/synth/SynthPainter
-javax/swing/plaf/synth/SynthPainter$1
-com/sun/java/swing/plaf/gtk/GTKConstants$PositionType
-com/sun/java/swing/plaf/gtk/GTKConstants$ShadowType
-sun/applet/Main
-sun/applet/AppletMessageHandler
-sun/applet/resources/MsgAppletViewer
-sun/applet/AppletSecurity
-sun/awt/AWTSecurityManager
-java/lang/SecurityManager
-java/security/DomainCombiner
-sun/applet/AppletSecurity$1
-java/lang/SecurityManager$1
-java/util/PropertyPermission
-sun/applet/AppletViewer
-java/applet/AppletContext
-java/awt/print/Printable
-sun/security/util/SecurityConstants
-java/awt/AWTPermission
-java/net/NetPermission
-java/net/SocketPermission
-javax/security/auth/AuthPermission
-java/lang/Thread$1
-java/util/logging/LogManager$5
-sun/applet/StdAppletViewerFactory
-sun/applet/AppletViewerFactory
-sun/applet/AppletViewer$UserActionListener
-sun/applet/AppletViewerPanel
-sun/applet/AppletPanel
-java/applet/AppletStub
-sun/misc/MessageUtils
-sun/applet/AppletPanel$10
-java/security/Policy$1
-sun/security/provider/PolicyFile$1
-sun/security/provider/PolicyFile$3
-sun/security/provider/PolicyParser
-sun/security/util/PolicyUtil
-sun/security/provider/PolicyParser$GrantEntry
-sun/security/provider/PolicyParser$PermissionEntry
-sun/security/provider/PolicyFile$PolicyEntry
-sun/security/provider/PolicyFile$6
-sun/security/provider/PolicyFile$7
-java/net/SocketPermissionCollection
-java/util/PropertyPermissionCollection
-sun/applet/AppletPanel$9
-sun/applet/AppletClassLoader
-sun/applet/AppletThreadGroup
-sun/applet/AppContextCreator
-sun/applet/AppletPanel$1
-sun/awt/X11/XMenuBarPeer
-java/awt/peer/MenuBarPeer
-java/awt/peer/MenuComponentPeer
-sun/awt/X11/XBaseMenuWindow
-sun/awt/X11/XMenuPeer
-java/awt/peer/MenuPeer
-java/awt/peer/MenuItemPeer
-sun/awt/X11/XMenuItemPeer
-java/awt/MenuShortcut
-sun/awt/X11/XMenuWindow
-sun/awt/AppContext$3
-sun/awt/X11/XMenuItemPeer$TextMetrics
-sun/awt/X11/XMenuBarPeer$MappingData
-sun/awt/X11/XBaseMenuWindow$MappingData
-sun/applet/AppletViewer$1
-sun/applet/AppletViewer$1AppletEventListener
-sun/applet/AppletListener
-sun/applet/AppletEventMulticaster
-sun/awt/X11/XBaseMenuWindow$3
-java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
-sun/awt/CausedFocusEvent
-sun/awt/X11/XWindow$1
-sun/misc/Queue
-sun/misc/QueueElement
-sun/applet/AppletEvent
-sun/applet/AppletClassLoader$1
-java/net/URLClassLoader$4
-sun/applet/AppletClassLoader$2
-javax/swing/JApplet
-java/lang/ClassLoader$1
-sun/security/provider/PolicyFile$5
-java/security/PermissionsEnumerator
-java/util/Collections$1
-sun/applet/AppletPanel$11
-sun/applet/AppletPanel$8
-sun/applet/AppletPanel$2
-sun/applet/AppletPanel$3
-sun/applet/AppletPanel$6
-javax/swing/BufferStrategyPaintManager$1
-# 8662ff6d6adccb91
+sun/util/resources/en/CalendarData_en
+sun/util/resources/en/CurrencyNames_en_US
+sun/util/resources/en/TimeZoneNames_en
+sun/util/spi/CalendarProvider
+# fcfd7386dfd2b3ad
--- a/jdk/make/tools/sharing/classlist.windows Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/make/tools/sharing/classlist.windows Wed Jul 05 19:22:42 2017 +0200
@@ -1,2203 +1,2378 @@
-java/lang/Object
-java/lang/String
+com/sun/java/swing/SwingUtilities3
+com/sun/java/swing/plaf/windows/WindowsPopupWindow
+com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
+com/sun/swing/internal/plaf/basic/resources/basic
+com/sun/swing/internal/plaf/metal/resources/metal
+java/applet/Applet
+java/awt/AWTEvent
+java/awt/AWTEvent$1
+java/awt/AWTEventMulticaster
+java/awt/AWTKeyStroke
+java/awt/AWTKeyStroke$1
+java/awt/ActiveEvent
+java/awt/Adjustable
+java/awt/AlphaComposite
+java/awt/BasicStroke
+java/awt/BorderLayout
+java/awt/BufferCapabilities
+java/awt/Canvas
+java/awt/CardLayout
+java/awt/CardLayout$Card
+java/awt/Color
+java/awt/Component
+java/awt/Component$1
+java/awt/Component$3
+java/awt/Component$AWTTreeLock
+java/awt/Component$AccessibleAWTComponent
+java/awt/Component$BaselineResizeBehavior
+java/awt/Component$BltBufferStrategy
+java/awt/Component$BltSubRegionBufferStrategy
+java/awt/Component$DummyRequestFocusController
+java/awt/Component$FlipBufferStrategy
+java/awt/ComponentOrientation
+java/awt/Composite
+java/awt/Conditional
+java/awt/Container
+java/awt/Container$1
+java/awt/Container$AccessibleAWTContainer
+java/awt/ContainerOrderFocusTraversalPolicy
+java/awt/Cursor
+java/awt/Cursor$1
+java/awt/Cursor$CursorDisposer
+java/awt/DefaultFocusTraversalPolicy
+java/awt/DefaultKeyboardFocusManager
+java/awt/DefaultKeyboardFocusManager$1
+java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
+java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
+java/awt/Dialog
+java/awt/Dialog$ModalExclusionType
+java/awt/Dialog$ModalityType
+java/awt/Dimension
+java/awt/Event
+java/awt/EventDispatchThread
+java/awt/EventDispatchThread$1
+java/awt/EventDispatchThread$HierarchyEventFilter
+java/awt/EventFilter
+java/awt/EventFilter$FilterAction
+java/awt/EventQueue
+java/awt/EventQueue$1
+java/awt/EventQueue$1AWTInvocationLock
+java/awt/EventQueue$2
+java/awt/EventQueue$3
+java/awt/EventQueue$4
+java/awt/EventQueue$5
+java/awt/FlowLayout
+java/awt/FocusTraversalPolicy
+java/awt/Font
+java/awt/Font$FontAccessImpl
+java/awt/FontMetrics
+java/awt/Frame
+java/awt/Frame$1
+java/awt/Graphics
+java/awt/Graphics2D
+java/awt/GraphicsCallback
+java/awt/GraphicsCallback$PaintCallback
+java/awt/GraphicsConfiguration
+java/awt/GraphicsDevice
+java/awt/GraphicsEnvironment
+java/awt/GraphicsEnvironment$1
+java/awt/GridLayout
+java/awt/Image
+java/awt/Image$1
+java/awt/ImageCapabilities
+java/awt/ImageMediaEntry
+java/awt/Insets
+java/awt/ItemSelectable
+java/awt/KeyEventDispatcher
+java/awt/KeyEventPostProcessor
+java/awt/KeyboardFocusManager
+java/awt/KeyboardFocusManager$1
+java/awt/KeyboardFocusManager$3
+java/awt/KeyboardFocusManager$HeavyweightFocusRequest
+java/awt/KeyboardFocusManager$LightweightFocusRequest
+java/awt/Label
+java/awt/LayoutManager
+java/awt/LayoutManager2
+java/awt/LightweightDispatcher
+java/awt/LightweightDispatcher$2
+java/awt/MediaEntry
+java/awt/MediaTracker
+java/awt/MenuBar
+java/awt/MenuComponent
+java/awt/MenuContainer
+java/awt/ModalEventFilter
+java/awt/Paint
+java/awt/Panel
+java/awt/Point
+java/awt/PrintGraphics
+java/awt/Queue
+java/awt/Rectangle
+java/awt/RenderingHints
+java/awt/RenderingHints$Key
+java/awt/SentEvent
+java/awt/SequencedEvent
+java/awt/SequencedEvent$1
+java/awt/Shape
+java/awt/SplashScreen
+java/awt/Stroke
+java/awt/Toolkit
+java/awt/Toolkit$1
+java/awt/Toolkit$2
+java/awt/Toolkit$3
+java/awt/Toolkit$4
+java/awt/Toolkit$5
+java/awt/Toolkit$DesktopPropertyChangeSupport
+java/awt/Toolkit$DesktopPropertyChangeSupport$1
+java/awt/Toolkit$SelectiveAWTEventListener
+java/awt/Toolkit$ToolkitEventMulticaster
+java/awt/Transparency
+java/awt/TrayIcon
+java/awt/VKCollection
+java/awt/Window
+java/awt/Window$1
+java/awt/Window$1DisposeAction
+java/awt/Window$Type
+java/awt/Window$WindowDisposerRecord
+java/awt/color/ColorSpace
+java/awt/color/ICC_ColorSpace
+java/awt/color/ICC_Profile
+java/awt/color/ICC_Profile$1
+java/awt/color/ICC_ProfileRGB
+java/awt/datatransfer/ClipboardOwner
+java/awt/datatransfer/FlavorMap
+java/awt/datatransfer/FlavorTable
+java/awt/datatransfer/SystemFlavorMap
+java/awt/dnd/DropTarget
+java/awt/dnd/DropTargetContext
+java/awt/dnd/DropTargetListener
+java/awt/dnd/peer/DragSourceContextPeer
+java/awt/dnd/peer/DropTargetPeer
+java/awt/event/AWTEventListener
+java/awt/event/AWTEventListenerProxy
+java/awt/event/ActionEvent
+java/awt/event/ActionListener
+java/awt/event/AdjustmentEvent
+java/awt/event/AdjustmentListener
+java/awt/event/ComponentAdapter
+java/awt/event/ComponentEvent
+java/awt/event/ComponentListener
+java/awt/event/ContainerEvent
+java/awt/event/ContainerListener
+java/awt/event/FocusAdapter
+java/awt/event/FocusEvent
+java/awt/event/FocusListener
+java/awt/event/HierarchyBoundsListener
+java/awt/event/HierarchyListener
+java/awt/event/InputEvent
+java/awt/event/InputEvent$1
+java/awt/event/InputMethodEvent
+java/awt/event/InputMethodListener
+java/awt/event/InvocationEvent
+java/awt/event/InvocationEvent$1
+java/awt/event/ItemEvent
+java/awt/event/ItemListener
+java/awt/event/KeyAdapter
+java/awt/event/KeyEvent
+java/awt/event/KeyEvent$1
+java/awt/event/KeyListener
+java/awt/event/MouseAdapter
+java/awt/event/MouseEvent
+java/awt/event/MouseListener
+java/awt/event/MouseMotionAdapter
+java/awt/event/MouseMotionListener
+java/awt/event/MouseWheelListener
+java/awt/event/NativeLibLoader
+java/awt/event/NativeLibLoader$1
+java/awt/event/PaintEvent
+java/awt/event/TextListener
+java/awt/event/WindowAdapter
+java/awt/event/WindowEvent
+java/awt/event/WindowFocusListener
+java/awt/event/WindowListener
+java/awt/event/WindowStateListener
+java/awt/font/FontRenderContext
+java/awt/font/GlyphVector
+java/awt/font/LineMetrics
+java/awt/font/TextAttribute
+java/awt/geom/AffineTransform
+java/awt/geom/Dimension2D
+java/awt/geom/GeneralPath
+java/awt/geom/Line2D
+java/awt/geom/Line2D$Float
+java/awt/geom/LineIterator
+java/awt/geom/Path2D
+java/awt/geom/Path2D$Float
+java/awt/geom/PathIterator
+java/awt/geom/Point2D
+java/awt/geom/Point2D$Float
+java/awt/geom/RectIterator
+java/awt/geom/Rectangle2D
+java/awt/geom/Rectangle2D$Float
+java/awt/geom/RectangularShape
+java/awt/im/InputContext
+java/awt/im/InputMethodRequests
+java/awt/im/spi/InputMethod
+java/awt/im/spi/InputMethodContext
+java/awt/im/spi/InputMethodDescriptor
+java/awt/image/BufferStrategy
+java/awt/image/BufferedImage
+java/awt/image/BufferedImage$1
+java/awt/image/ColorModel
+java/awt/image/ColorModel$1
+java/awt/image/ComponentSampleModel
+java/awt/image/DataBuffer
+java/awt/image/DataBuffer$1
+java/awt/image/DataBufferByte
+java/awt/image/DataBufferInt
+java/awt/image/DirectColorModel
+java/awt/image/FilteredImageSource
+java/awt/image/ImageConsumer
+java/awt/image/ImageFilter
+java/awt/image/ImageObserver
+java/awt/image/ImageProducer
+java/awt/image/IndexColorModel
+java/awt/image/PackedColorModel
+java/awt/image/PixelInterleavedSampleModel
+java/awt/image/RGBImageFilter
+java/awt/image/Raster
+java/awt/image/RenderedImage
+java/awt/image/SampleModel
+java/awt/image/SinglePixelPackedSampleModel
+java/awt/image/VolatileImage
+java/awt/image/WritableRaster
+java/awt/image/WritableRenderedImage
+java/awt/peer/CanvasPeer
+java/awt/peer/ComponentPeer
+java/awt/peer/ContainerPeer
+java/awt/peer/FontPeer
+java/awt/peer/FramePeer
+java/awt/peer/KeyboardFocusManagerPeer
+java/awt/peer/LabelPeer
+java/awt/peer/LightweightPeer
+java/awt/peer/PanelPeer
+java/awt/peer/WindowPeer
+java/awt/print/PrinterGraphics
+java/beans/ChangeListenerMap
+java/beans/PropertyChangeEvent
+java/beans/PropertyChangeListener
+java/beans/PropertyChangeListenerProxy
+java/beans/PropertyChangeSupport
+java/beans/PropertyChangeSupport$PropertyChangeListenerMap
+java/beans/VetoableChangeListener
+java/io/Bits
+java/io/BufferedInputStream
+java/io/BufferedOutputStream
+java/io/BufferedReader
+java/io/BufferedWriter
+java/io/ByteArrayInputStream
+java/io/ByteArrayOutputStream
+java/io/Closeable
+java/io/DataInput
+java/io/DataInputStream
+java/io/DataOutput
+java/io/DataOutputStream
+java/io/DefaultFileSystem
+java/io/EOFException
+java/io/ExpiringCache
+java/io/ExpiringCache$1
+java/io/ExpiringCache$Entry
+java/io/Externalizable
+java/io/File
+java/io/File$PathStatus
+java/io/FileDescriptor
+java/io/FileDescriptor$1
+java/io/FileInputStream
+java/io/FileInputStream$1
+java/io/FileNotFoundException
+java/io/FileOutputStream
+java/io/FileOutputStream$1
+java/io/FilePermission
+java/io/FilePermission$1
+java/io/FilePermissionCollection
+java/io/FileReader
+java/io/FileSystem
+java/io/FileWriter
+java/io/FilenameFilter
+java/io/FilterInputStream
+java/io/FilterOutputStream
+java/io/FilterReader
+java/io/Flushable
+java/io/IOException
+java/io/InputStream
+java/io/InputStreamReader
+java/io/InterruptedIOException
+java/io/ObjectInput
+java/io/ObjectInputStream
+java/io/ObjectInputStream$BlockDataInputStream
+java/io/ObjectInputStream$GetField
+java/io/ObjectInputStream$GetFieldImpl
+java/io/ObjectInputStream$HandleTable
+java/io/ObjectInputStream$HandleTable$HandleList
+java/io/ObjectInputStream$PeekInputStream
+java/io/ObjectInputStream$ValidationList
+java/io/ObjectOutput
+java/io/ObjectOutputStream
+java/io/ObjectOutputStream$BlockDataOutputStream
+java/io/ObjectOutputStream$HandleTable
+java/io/ObjectOutputStream$ReplaceTable
+java/io/ObjectStreamClass
+java/io/ObjectStreamClass$1
+java/io/ObjectStreamClass$2
+java/io/ObjectStreamClass$3
+java/io/ObjectStreamClass$4
+java/io/ObjectStreamClass$5
+java/io/ObjectStreamClass$Caches
+java/io/ObjectStreamClass$ClassDataSlot
+java/io/ObjectStreamClass$EntryFuture
+java/io/ObjectStreamClass$ExceptionInfo
+java/io/ObjectStreamClass$FieldReflector
+java/io/ObjectStreamClass$FieldReflectorKey
+java/io/ObjectStreamClass$MemberSignature
+java/io/ObjectStreamClass$WeakClassKey
+java/io/ObjectStreamConstants
+java/io/ObjectStreamField
+java/io/OutputStream
+java/io/OutputStreamWriter
+java/io/PrintStream
+java/io/PushbackInputStream
+java/io/RandomAccessFile
+java/io/RandomAccessFile$1
+java/io/Reader
+java/io/SerialCallbackContext
java/io/Serializable
-java/lang/Comparable
-java/lang/CharSequence
-java/lang/Class
-java/lang/reflect/GenericDeclaration
-java/lang/reflect/Type
-java/lang/reflect/AnnotatedElement
-java/lang/Cloneable
-java/lang/ClassLoader
-java/lang/System
-java/lang/Throwable
-java/lang/Error
-java/lang/ThreadDeath
-java/lang/Exception
-java/lang/RuntimeException
-java/security/ProtectionDomain
-java/security/AccessControlContext
-java/lang/ClassNotFoundException
-java/lang/NoClassDefFoundError
-java/lang/LinkageError
-java/lang/ClassCastException
-java/lang/ArrayStoreException
-java/lang/VirtualMachineError
-java/lang/OutOfMemoryError
-java/lang/StackOverflowError
-java/lang/IllegalMonitorStateException
-java/lang/ref/Reference
-java/lang/ref/SoftReference
-java/lang/ref/WeakReference
-java/lang/ref/FinalReference
-java/lang/ref/PhantomReference
-java/lang/ref/Finalizer
-java/lang/Thread
-java/lang/Runnable
-java/lang/ThreadGroup
-java/lang/Thread$UncaughtExceptionHandler
-java/util/Properties
-java/util/Hashtable
-java/util/Map
-java/util/Dictionary
-java/lang/reflect/AccessibleObject
-java/lang/reflect/Field
-java/lang/reflect/Member
-java/lang/reflect/Method
-java/lang/reflect/Constructor
-sun/reflect/MagicAccessorImpl
-sun/reflect/MethodAccessorImpl
-sun/reflect/MethodAccessor
-sun/reflect/ConstructorAccessorImpl
-sun/reflect/ConstructorAccessor
-sun/reflect/DelegatingClassLoader
-sun/reflect/ConstantPool
-sun/reflect/UnsafeStaticFieldAccessorImpl
-sun/reflect/UnsafeFieldAccessorImpl
-sun/reflect/FieldAccessorImpl
-sun/reflect/FieldAccessor
-java/util/Vector
-java/util/List
-java/util/Collection
-java/lang/Iterable
-java/util/RandomAccess
-java/util/AbstractList
-java/util/AbstractCollection
-java/lang/StringBuffer
+java/io/StringReader
+java/io/StringWriter
+java/io/UnsupportedEncodingException
+java/io/WinNTFileSystem
+java/io/Writer
java/lang/AbstractStringBuilder
java/lang/Appendable
-java/lang/StackTraceElement
-java/nio/Buffer
+java/lang/ApplicationShutdownHooks
+java/lang/ApplicationShutdownHooks$1
+java/lang/ArithmeticException
+java/lang/ArrayIndexOutOfBoundsException
+java/lang/ArrayStoreException
+java/lang/AutoCloseable
java/lang/Boolean
-java/lang/Character
-java/lang/Float
-java/lang/Number
-java/lang/Double
+java/lang/BootstrapMethodError
java/lang/Byte
-java/lang/Short
+java/lang/CharSequence
+java/lang/Character
+java/lang/Character$CharacterCache
+java/lang/CharacterData
+java/lang/CharacterData00
+java/lang/CharacterDataLatin1
+java/lang/Class
+java/lang/Class$1
+java/lang/Class$3
+java/lang/Class$4
+java/lang/Class$AnnotationData
+java/lang/Class$Atomic
+java/lang/Class$ReflectionData
+java/lang/ClassCastException
+java/lang/ClassFormatError
+java/lang/ClassLoader
+java/lang/ClassLoader$2
+java/lang/ClassLoader$3
+java/lang/ClassLoader$NativeLibrary
+java/lang/ClassLoader$ParallelLoaders
+java/lang/ClassLoaderHelper
+java/lang/ClassNotFoundException
+java/lang/ClassValue$ClassValueMap
+java/lang/CloneNotSupportedException
+java/lang/Cloneable
+java/lang/Comparable
+java/lang/Compiler
+java/lang/Compiler$1
+java/lang/Double
+java/lang/Enum
+java/lang/Error
+java/lang/Exception
+java/lang/ExceptionInInitializerError
+java/lang/Float
+java/lang/IllegalAccessError
+java/lang/IllegalAccessException
+java/lang/IllegalArgumentException
+java/lang/IllegalMonitorStateException
+java/lang/IllegalStateException
+java/lang/IncompatibleClassChangeError
+java/lang/IndexOutOfBoundsException
+java/lang/InheritableThreadLocal
+java/lang/InstantiationException
java/lang/Integer
+java/lang/Integer$IntegerCache
+java/lang/InternalError
+java/lang/InterruptedException
+java/lang/Iterable
+java/lang/LinkageError
java/lang/Long
+java/lang/Long$LongCache
+java/lang/Math
+java/lang/NoClassDefFoundError
+java/lang/NoSuchFieldException
+java/lang/NoSuchMethodError
+java/lang/NoSuchMethodException
java/lang/NullPointerException
-java/lang/ArithmeticException
-java/io/ObjectStreamField
-java/lang/String$CaseInsensitiveComparator
-java/util/Comparator
+java/lang/Number
+java/lang/NumberFormatException
+java/lang/Object
+java/lang/OutOfMemoryError
+java/lang/Package
+java/lang/ProcessEnvironment
+java/lang/ProcessEnvironment$CheckedEntry
+java/lang/ProcessEnvironment$CheckedEntrySet
+java/lang/ProcessEnvironment$CheckedEntrySet$1
+java/lang/ProcessEnvironment$EntryComparator
+java/lang/ProcessEnvironment$NameComparator
+java/lang/Readable
+java/lang/ReflectiveOperationException
+java/lang/Runnable
+java/lang/Runtime
+java/lang/RuntimeException
java/lang/RuntimePermission
-java/security/BasicPermission
-java/security/Permission
-java/security/Guard
-sun/misc/SoftCache
-java/util/AbstractMap
-java/lang/ref/ReferenceQueue
-java/lang/ref/ReferenceQueue$Null
-java/lang/ref/ReferenceQueue$Lock
-java/util/HashMap
+java/lang/SecurityException
+java/lang/SecurityManager
+java/lang/Short
+java/lang/Short$ShortCache
+java/lang/Shutdown
+java/lang/Shutdown$Lock
+java/lang/StackOverflowError
+java/lang/StackTraceElement
+java/lang/StrictMath
+java/lang/String
+java/lang/String$CaseInsensitiveComparator
+java/lang/StringBuffer
+java/lang/StringBuilder
+java/lang/StringCoding
+java/lang/StringCoding$StringDecoder
+java/lang/StringCoding$StringEncoder
+java/lang/StringIndexOutOfBoundsException
+java/lang/System
+java/lang/System$2
+java/lang/SystemClassLoaderAction
+java/lang/Terminator
+java/lang/Terminator$1
+java/lang/Thread
+java/lang/Thread$State
+java/lang/Thread$UncaughtExceptionHandler
+java/lang/ThreadDeath
+java/lang/ThreadGroup
+java/lang/ThreadLocal
+java/lang/ThreadLocal$ThreadLocalMap
+java/lang/ThreadLocal$ThreadLocalMap$Entry
+java/lang/Throwable
+java/lang/Throwable$PrintStreamOrWriter
+java/lang/Throwable$WrappedPrintStream
+java/lang/UnsatisfiedLinkError
+java/lang/UnsupportedOperationException
+java/lang/VirtualMachineError
+java/lang/Void
java/lang/annotation/Annotation
-java/util/HashMap$Entry
-java/util/Map$Entry
-java/security/AccessController
-java/lang/reflect/ReflectPermission
-sun/reflect/ReflectionFactory$GetReflectionFactoryAction
-java/security/PrivilegedAction
-java/util/Stack
-sun/reflect/ReflectionFactory
+java/lang/invoke/CallSite
+java/lang/invoke/ConstantCallSite
+java/lang/invoke/DirectMethodHandle
+java/lang/invoke/Invokers
+java/lang/invoke/LambdaForm
+java/lang/invoke/LambdaForm$NamedFunction
+java/lang/invoke/MemberName
+java/lang/invoke/MemberName$Factory
+java/lang/invoke/MethodHandle
+java/lang/invoke/MethodHandleImpl
+java/lang/invoke/MethodHandleNatives
+java/lang/invoke/MethodHandleStatics
+java/lang/invoke/MethodHandleStatics$1
+java/lang/invoke/MethodType
+java/lang/invoke/MethodType$ConcurrentWeakInternSet
+java/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry
+java/lang/invoke/MethodTypeForm
+java/lang/invoke/MutableCallSite
+java/lang/invoke/VolatileCallSite
+java/lang/ref/FinalReference
+java/lang/ref/Finalizer
+java/lang/ref/Finalizer$FinalizerThread
+java/lang/ref/PhantomReference
+java/lang/ref/Reference
java/lang/ref/Reference$Lock
java/lang/ref/Reference$ReferenceHandler
-java/lang/ref/Finalizer$FinalizerThread
-java/util/Enumeration
-java/util/Iterator
-java/util/Hashtable$Entry
-sun/misc/Version
-java/io/FileInputStream
-java/io/InputStream
-java/io/Closeable
-java/io/FileDescriptor
-java/io/FileOutputStream
-java/io/OutputStream
-java/io/Flushable
-java/io/BufferedInputStream
-java/io/FilterInputStream
-java/util/concurrent/atomic/AtomicReferenceFieldUpdater
-java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
-sun/misc/Unsafe
-java/lang/NoSuchMethodError
-java/lang/IncompatibleClassChangeError
-sun/reflect/Reflection
-java/util/Collections
-java/util/Collections$EmptySet
-java/util/AbstractSet
-java/util/Set
-java/util/Collections$EmptyList
-java/util/Collections$EmptyMap
-java/util/Collections$ReverseComparator
-java/util/Collections$SynchronizedMap
-java/lang/Class$3
+java/lang/ref/ReferenceQueue
+java/lang/ref/ReferenceQueue$Lock
+java/lang/ref/ReferenceQueue$Null
+java/lang/ref/SoftReference
+java/lang/ref/WeakReference
+java/lang/reflect/AccessibleObject
+java/lang/reflect/AnnotatedElement
+java/lang/reflect/Array
+java/lang/reflect/Constructor
+java/lang/reflect/Executable
+java/lang/reflect/Field
+java/lang/reflect/GenericDeclaration
+java/lang/reflect/InvocationHandler
+java/lang/reflect/InvocationTargetException
+java/lang/reflect/Member
+java/lang/reflect/Method
java/lang/reflect/Modifier
+java/lang/reflect/Parameter
+java/lang/reflect/Proxy
+java/lang/reflect/Proxy$KeyFactory
+java/lang/reflect/Proxy$ProxyClassFactory
java/lang/reflect/ReflectAccess
-sun/reflect/LangReflectAccess
-sun/reflect/misc/ReflectUtil
-java/io/PrintStream
-java/io/FilterOutputStream
-java/io/BufferedOutputStream
-java/io/OutputStreamWriter
-java/io/Writer
-sun/nio/cs/StreamEncoder
-java/nio/charset/Charset
-sun/nio/cs/StandardCharsets
-sun/nio/cs/FastCharsetProvider
-java/nio/charset/spi/CharsetProvider
-sun/nio/cs/StandardCharsets$Aliases
-sun/util/PreHashedMap
-sun/nio/cs/StandardCharsets$Classes
-sun/nio/cs/StandardCharsets$Cache
-java/lang/ThreadLocal
-java/util/concurrent/atomic/AtomicInteger
-sun/security/action/GetPropertyAction
-java/util/Arrays
-java/lang/Math
-java/lang/StringBuilder
-sun/nio/cs/MS1252
-sun/nio/cs/HistoricallyNamedCharset
-java/lang/Class$1
-sun/reflect/ReflectionFactory$1
-sun/reflect/NativeConstructorAccessorImpl
-sun/reflect/DelegatingConstructorAccessorImpl
-sun/misc/VM
-sun/nio/cs/SingleByteEncoder
-java/nio/charset/CharsetEncoder
-java/nio/charset/CodingErrorAction
-sun/nio/cs/SingleByteDecoder
-java/nio/charset/CharsetDecoder
+java/lang/reflect/ReflectPermission
+java/lang/reflect/Type
+java/lang/reflect/WeakCache
+java/math/BigInteger
+java/math/BigInteger$UnsafeHolder
+java/math/MutableBigInteger
+java/math/RoundingMode
+java/math/SignedMutableBigInteger
+java/net/AbstractPlainDatagramSocketImpl
+java/net/AbstractPlainDatagramSocketImpl$1
+java/net/AbstractPlainSocketImpl
+java/net/AbstractPlainSocketImpl$1
+java/net/Authenticator
+java/net/BindException
+java/net/ConnectException
+java/net/DatagramPacket
+java/net/DatagramPacket$1
+java/net/DatagramSocket
+java/net/DatagramSocket$1
+java/net/DatagramSocketImpl
+java/net/DefaultDatagramSocketImplFactory$1
+java/net/DefaultInterface
+java/net/DualStackPlainDatagramSocketImpl
+java/net/DualStackPlainSocketImpl
+java/net/FileNameMap
+java/net/HttpURLConnection
+java/net/Inet4Address
+java/net/Inet4AddressImpl
+java/net/Inet6Address
+java/net/Inet6Address$Inet6AddressHolder
+java/net/Inet6AddressImpl
+java/net/InetAddress
+java/net/InetAddress$1
+java/net/InetAddress$2
+java/net/InetAddress$Cache
+java/net/InetAddress$Cache$Type
+java/net/InetAddress$CacheEntry
+java/net/InetAddress$InetAddressHolder
+java/net/InetAddressImpl
+java/net/InetAddressImplFactory
+java/net/InetSocketAddress
+java/net/InetSocketAddress$InetSocketAddressHolder
+java/net/InterfaceAddress
+java/net/JarURLConnection
+java/net/MalformedURLException
+java/net/MulticastSocket
+java/net/NetworkInterface
+java/net/NetworkInterface$1
+java/net/NoRouteToHostException
+java/net/Parts
+java/net/PlainSocketImpl
+java/net/PlainSocketImpl$1
+java/net/Proxy
+java/net/Proxy$Type
+java/net/ProxySelector
+java/net/ServerSocket
+java/net/Socket
+java/net/SocketAddress
+java/net/SocketException
+java/net/SocketImpl
+java/net/SocketImplFactory
+java/net/SocketOptions
+java/net/SocketTimeoutException
+java/net/SocksConsts
+java/net/SocksSocketImpl
+java/net/SocksSocketImpl$3
+java/net/TwoStacksPlainDatagramSocketImpl
+java/net/URI
+java/net/URI$Parser
+java/net/URL
+java/net/URLClassLoader
+java/net/URLClassLoader$1
+java/net/URLClassLoader$2
+java/net/URLClassLoader$3
+java/net/URLClassLoader$3$1
+java/net/URLClassLoader$7
+java/net/URLConnection
+java/net/URLConnection$1
+java/net/URLStreamHandler
+java/net/URLStreamHandlerFactory
+java/net/UnknownHostException
+java/nio/Bits
+java/nio/Bits$1
+java/nio/Buffer
java/nio/ByteBuffer
-java/nio/HeapByteBuffer
-java/nio/Bits
-java/lang/Runtime
+java/nio/ByteBufferAsCharBufferB
+java/nio/ByteBufferAsIntBufferB
+java/nio/ByteBufferAsShortBufferB
java/nio/ByteOrder
java/nio/CharBuffer
-java/lang/Readable
+java/nio/DirectByteBuffer
+java/nio/DirectByteBuffer$Deallocator
+java/nio/DirectLongBufferU
+java/nio/HeapByteBuffer
java/nio/HeapCharBuffer
+java/nio/IntBuffer
+java/nio/LongBuffer
+java/nio/MappedByteBuffer
+java/nio/ShortBuffer
+java/nio/channels/ByteChannel
+java/nio/channels/Channel
+java/nio/channels/FileChannel
+java/nio/channels/GatheringByteChannel
+java/nio/channels/InterruptibleChannel
+java/nio/channels/NetworkChannel
+java/nio/channels/ReadableByteChannel
+java/nio/channels/ScatteringByteChannel
+java/nio/channels/SeekableByteChannel
+java/nio/channels/SelectableChannel
+java/nio/channels/SocketChannel
+java/nio/channels/WritableByteChannel
+java/nio/channels/spi/AbstractInterruptibleChannel
+java/nio/channels/spi/AbstractInterruptibleChannel$1
+java/nio/channels/spi/AbstractSelectableChannel
+java/nio/charset/Charset
+java/nio/charset/CharsetDecoder
+java/nio/charset/CharsetEncoder
java/nio/charset/CoderResult
java/nio/charset/CoderResult$1
+java/nio/charset/CoderResult$2
java/nio/charset/CoderResult$Cache
-java/nio/charset/CoderResult$2
-sun/nio/cs/Surrogate$Parser
-sun/nio/cs/Surrogate
-java/io/BufferedWriter
-java/io/File
-java/io/FileSystem
-java/io/WinNTFileSystem
-java/io/Win32FileSystem
-java/io/ExpiringCache
-java/io/ExpiringCache$1
+java/nio/charset/CodingErrorAction
+java/nio/charset/StandardCharsets
+java/nio/charset/spi/CharsetProvider
+java/nio/file/Path
+java/nio/file/Watchable
+java/nio/file/attribute/FileAttribute
+java/security/AccessControlContext
+java/security/AccessController
+java/security/AlgorithmParameters
+java/security/AlgorithmParametersSpi
+java/security/AllPermission
+java/security/AllPermissionCollection
+java/security/BasicPermission
+java/security/BasicPermissionCollection
+java/security/CodeSigner
+java/security/CodeSource
+java/security/GeneralSecurityException
+java/security/Guard
+java/security/InvalidKeyException
+java/security/Key
+java/security/KeyException
+java/security/MessageDigest
+java/security/MessageDigest$Delegate
+java/security/MessageDigestSpi
+java/security/NoSuchAlgorithmException
+java/security/Permission
+java/security/PermissionCollection
+java/security/Permissions
+java/security/Principal
+java/security/PrivateKey
+java/security/PrivilegedAction
+java/security/PrivilegedActionException
+java/security/PrivilegedExceptionAction
+java/security/ProtectionDomain
+java/security/ProtectionDomain$1
+java/security/ProtectionDomain$3
+java/security/ProtectionDomain$Key
+java/security/Provider
+java/security/Provider$EngineDescription
+java/security/Provider$Service
+java/security/Provider$ServiceKey
+java/security/Provider$UString
+java/security/PublicKey
+java/security/SecureClassLoader
+java/security/Security
+java/security/Security$1
+java/security/Signature
+java/security/Signature$Delegate
+java/security/SignatureException
+java/security/SignatureSpi
+java/security/UnresolvedPermission
+java/security/cert/Certificate
+java/security/interfaces/DSAKey
+java/security/interfaces/DSAParams
+java/security/interfaces/DSAPrivateKey
+java/security/interfaces/DSAPublicKey
+java/security/spec/AlgorithmParameterSpec
+java/security/spec/DSAParameterSpec
+java/text/AttributedCharacterIterator$Attribute
+java/text/CharacterIterator
+java/text/Collator
+java/text/DateFormat
+java/text/DateFormat$Field
+java/text/DateFormatSymbols
+java/text/DecimalFormat
+java/text/DecimalFormatSymbols
+java/text/DigitList
+java/text/DontCareFieldPosition
+java/text/DontCareFieldPosition$1
+java/text/EntryPair
+java/text/FieldPosition
+java/text/Format
+java/text/Format$Field
+java/text/Format$FieldDelegate
+java/text/MergeCollation
+java/text/MessageFormat
+java/text/MessageFormat$Field
+java/text/NumberFormat
+java/text/NumberFormat$Field
+java/text/ParseException
+java/text/PatternEntry
+java/text/PatternEntry$Parser
+java/text/RBCollationTables
+java/text/RBCollationTables$BuildAPI
+java/text/RuleBasedCollator
+java/text/SimpleDateFormat
+java/text/spi/BreakIteratorProvider
+java/text/spi/CollatorProvider
+java/text/spi/DateFormatProvider
+java/text/spi/DateFormatSymbolsProvider
+java/text/spi/DecimalFormatSymbolsProvider
+java/text/spi/NumberFormatProvider
+java/util/AbstractCollection
+java/util/AbstractList
+java/util/AbstractList$Itr
+java/util/AbstractList$ListItr
+java/util/AbstractMap
+java/util/AbstractQueue
+java/util/AbstractSequentialList
+java/util/AbstractSet
+java/util/ArrayDeque
+java/util/ArrayList
+java/util/ArrayList$Itr
+java/util/ArrayList$ListItr
+java/util/ArrayList$SubList
+java/util/ArrayList$SubList$1
+java/util/Arrays
+java/util/Arrays$ArrayList
+java/util/Arrays$LegacyMergeSort
+java/util/BitSet
+java/util/Calendar
+java/util/Calendar$Builder
+java/util/Collection
+java/util/Collections
+java/util/Collections$3
+java/util/Collections$EmptyEnumeration
+java/util/Collections$EmptyIterator
+java/util/Collections$EmptyList
+java/util/Collections$EmptyMap
+java/util/Collections$EmptySet
+java/util/Collections$SetFromMap
+java/util/Collections$SynchronizedCollection
+java/util/Collections$SynchronizedMap
+java/util/Collections$SynchronizedSet
+java/util/Collections$UnmodifiableCollection
+java/util/Collections$UnmodifiableCollection$1
+java/util/Collections$UnmodifiableList
+java/util/Collections$UnmodifiableList$1
+java/util/Collections$UnmodifiableMap
+java/util/Collections$UnmodifiableRandomAccessList
+java/util/Collections$UnmodifiableSet
+java/util/ComparableTimSort
+java/util/Comparator
+java/util/Currency
+java/util/Currency$1
+java/util/Currency$CurrencyNameGetter
+java/util/Date
+java/util/Deque
+java/util/Dictionary
+java/util/Enumeration
+java/util/EventListener
+java/util/EventListenerProxy
+java/util/EventObject
+java/util/GregorianCalendar
+java/util/HashMap
+java/util/HashMap$EntryIterator
+java/util/HashMap$EntrySet
+java/util/HashMap$HashIterator
+java/util/HashMap$KeyIterator
+java/util/HashMap$KeySet
+java/util/HashMap$Node
+java/util/HashMap$TreeNode
+java/util/HashMap$ValueIterator
+java/util/HashMap$Values
+java/util/HashSet
+java/util/Hashtable
+java/util/Hashtable$Entry
+java/util/Hashtable$EntrySet
+java/util/Hashtable$Enumerator
+java/util/Hashtable$ValueCollection
+java/util/IdentityHashMap
+java/util/IdentityHashMap$IdentityHashMapIterator
+java/util/IdentityHashMap$KeyIterator
+java/util/IdentityHashMap$KeySet
+java/util/IdentityHashMap$ValueIterator
+java/util/IdentityHashMap$Values
+java/util/Iterator
java/util/LinkedHashMap
java/util/LinkedHashMap$Entry
-sun/misc/SharedSecrets
-java/lang/ClassLoader$3
-java/io/ExpiringCache$Entry
-java/lang/ClassLoader$NativeLibrary
-java/lang/Terminator
-java/lang/Terminator$1
-sun/misc/SignalHandler
-sun/misc/Signal
-sun/misc/NativeSignalHandler
-java/io/Console
-java/io/Console$1
-sun/misc/JavaIOAccess
-java/lang/Shutdown
-java/util/ArrayList
-java/lang/Shutdown$Lock
-java/lang/ApplicationShutdownHooks
-java/util/IdentityHashMap
-sun/misc/OSEnvironment
-sun/io/Win32ErrorMode
-java/lang/System$2
-sun/misc/JavaLangAccess
-java/lang/Compiler
-java/lang/Compiler$1
-sun/misc/Launcher
-sun/misc/Launcher$Factory
-java/net/URLStreamHandlerFactory
-sun/misc/Launcher$ExtClassLoader
-java/net/URLClassLoader
-java/security/SecureClassLoader
-sun/security/util/Debug
-java/net/URLClassLoader$7
-sun/misc/JavaNetAccess
-java/util/StringTokenizer
-sun/misc/Launcher$ExtClassLoader$1
-java/security/PrivilegedExceptionAction
-sun/misc/MetaIndex
-java/io/BufferedReader
-java/io/Reader
-java/io/FileReader
-java/io/InputStreamReader
-sun/nio/cs/StreamDecoder
-java/lang/reflect/Array
+java/util/LinkedHashMap$LinkedEntryIterator
+java/util/LinkedHashMap$LinkedEntrySet
+java/util/LinkedHashMap$LinkedHashIterator
+java/util/LinkedHashMap$LinkedKeyIterator
+java/util/LinkedHashMap$LinkedKeySet
+java/util/LinkedList
+java/util/LinkedList$ListItr
+java/util/LinkedList$Node
+java/util/List
+java/util/ListIterator
+java/util/ListResourceBundle
java/util/Locale
-java/util/concurrent/ConcurrentHashMap
-java/util/concurrent/ConcurrentMap
-java/util/concurrent/ConcurrentHashMap$Segment
-java/util/concurrent/locks/ReentrantLock
-java/util/concurrent/locks/Lock
-java/util/concurrent/locks/ReentrantLock$NonfairSync
-java/util/concurrent/locks/ReentrantLock$Sync
-java/util/concurrent/locks/AbstractQueuedSynchronizer
-java/util/concurrent/locks/AbstractOwnableSynchronizer
-java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
-java/util/concurrent/ConcurrentHashMap$HashEntry
-java/lang/CharacterDataLatin1
-java/io/ObjectStreamClass
-sun/net/www/ParseUtil
-java/util/BitSet
-java/net/URL
-java/net/Parts
-sun/net/www/protocol/file/Handler
-java/net/URLStreamHandler
-java/util/HashSet
-sun/misc/URLClassPath
-sun/net/www/protocol/jar/Handler
-sun/misc/Launcher$AppClassLoader
-sun/misc/Launcher$AppClassLoader$1
-java/lang/SystemClassLoaderAction
-java/lang/StringCoding
-java/lang/ThreadLocal$ThreadLocalMap
-java/lang/ThreadLocal$ThreadLocalMap$Entry
-java/lang/StringCoding$StringDecoder
-java/net/URLClassLoader$1
-sun/misc/URLClassPath$3
-sun/misc/URLClassPath$JarLoader
-sun/misc/URLClassPath$Loader
-java/security/PrivilegedActionException
-sun/misc/URLClassPath$FileLoader
-sun/misc/URLClassPath$FileLoader$1
-sun/misc/Resource
-sun/nio/ByteBuffered
-java/security/CodeSource
-java/security/Permissions
-java/security/PermissionCollection
-sun/net/www/protocol/file/FileURLConnection
-sun/net/www/URLConnection
-java/net/URLConnection
-java/net/UnknownContentHandler
-java/net/ContentHandler
-sun/net/www/MessageHeader
-java/io/FilePermission
-java/io/FilePermission$1
-sun/security/provider/PolicyFile
-java/security/Policy
-java/security/Policy$UnsupportedEmptyCollection
-java/io/FilePermissionCollection
-java/security/AllPermission
-java/security/UnresolvedPermission
-java/security/BasicPermissionCollection
-java/security/Principal
-java/security/cert/Certificate
-java/util/AbstractList$Itr
-java/util/IdentityHashMap$KeySet
-java/util/IdentityHashMap$KeyIterator
-java/util/IdentityHashMap$IdentityHashMapIterator
-java/io/DeleteOnExitHook
-java/util/LinkedHashSet
-java/util/HashMap$KeySet
-java/util/LinkedHashMap$KeyIterator
-java/util/LinkedHashMap$LinkedHashIterator
-java/awt/Frame
-java/awt/MenuContainer
-java/awt/Window
-javax/accessibility/Accessible
-java/awt/Container
-java/awt/Component
-java/awt/image/ImageObserver
-java/lang/InterruptedException
-java/awt/Label
-java/util/logging/Logger
-java/util/logging/Handler
-java/util/logging/Level
-java/util/logging/LogManager
-java/util/logging/LogManager$1
-java/beans/PropertyChangeSupport
-java/util/logging/LogManager$LogNode
-java/util/logging/LoggingPermission
-java/util/logging/LogManager$Cleaner
-java/util/logging/LogManager$RootLogger
-java/util/logging/LogManager$2
+java/util/Locale$1
+java/util/Locale$Cache
+java/util/Locale$Category
+java/util/Locale$LocaleKey
+java/util/Map
+java/util/Map$Entry
+java/util/MissingResourceException
+java/util/NavigableMap
+java/util/Objects
+java/util/PriorityQueue
+java/util/Properties
java/util/Properties$LineReader
-java/util/Hashtable$Enumerator
-java/beans/PropertyChangeEvent
-java/util/EventObject
-java/awt/Component$AWTTreeLock
-sun/awt/NativeLibLoader
-sun/security/action/LoadLibraryAction
-java/awt/Toolkit
-java/awt/Toolkit$3
-sun/util/CoreResourceBundleControl
-java/util/ResourceBundle$Control
-java/util/Arrays$ArrayList
-java/util/Collections$UnmodifiableRandomAccessList
-java/util/Collections$UnmodifiableList
-java/util/Collections$UnmodifiableCollection
+java/util/PropertyResourceBundle
+java/util/Queue
+java/util/Random
+java/util/RandomAccess
java/util/ResourceBundle
java/util/ResourceBundle$1
+java/util/ResourceBundle$BundleReference
+java/util/ResourceBundle$CacheKey
+java/util/ResourceBundle$CacheKeyReference
+java/util/ResourceBundle$Control
+java/util/ResourceBundle$Control$1
+java/util/ResourceBundle$Control$CandidateListCache
+java/util/ResourceBundle$LoaderReference
java/util/ResourceBundle$RBClassLoader
java/util/ResourceBundle$RBClassLoader$1
-java/util/ResourceBundle$CacheKey
-java/util/ResourceBundle$LoaderReference
-java/util/ResourceBundle$CacheKeyReference
java/util/ResourceBundle$SingleFormatControl
-sun/awt/resources/awt
-java/util/ListResourceBundle
-java/awt/Toolkit$1
-java/io/FileNotFoundException
-java/io/IOException
-java/awt/GraphicsEnvironment
-java/awt/GraphicsEnvironment$1
-java/awt/Insets
-sun/awt/windows/WComponentPeer
-java/awt/peer/ComponentPeer
-java/awt/dnd/peer/DropTargetPeer
-sun/awt/DisplayChangedListener
-java/util/EventListener
-sun/awt/windows/WObjectPeer
-java/awt/Font
-java/awt/geom/AffineTransform
-sun/font/AttributeValues
-sun/font/EAttribute
-java/lang/Enum
-java/text/AttributedCharacterIterator$Attribute
-java/lang/Class$4
-sun/reflect/NativeMethodAccessorImpl
-sun/reflect/DelegatingMethodAccessorImpl
-java/awt/font/TextAttribute
-java/lang/Integer$IntegerCache
+java/util/ServiceLoader
+java/util/ServiceLoader$1
+java/util/ServiceLoader$LazyIterator
+java/util/Set
+java/util/SortedMap
+java/util/Stack
+java/util/StringTokenizer
+java/util/TimSort
+java/util/TimeZone
+java/util/TimeZone$1
+java/util/TreeMap
+java/util/TreeMap$Entry
+java/util/Vector
+java/util/Vector$1
+java/util/Vector$Itr
+java/util/Vector$ListItr
java/util/WeakHashMap
java/util/WeakHashMap$Entry
-java/awt/AWTEvent
-java/awt/Component$DummyRequestFocusController
-sun/awt/RequestFocusController
-java/awt/LayoutManager
-java/awt/LightweightDispatcher
-java/awt/event/AWTEventListener
-java/awt/Dimension
-java/awt/geom/Dimension2D
+java/util/WeakHashMap$KeySet
+java/util/concurrent/BlockingQueue
+java/util/concurrent/ConcurrentHashMap
+java/util/concurrent/ConcurrentHashMap$BaseIterator
+java/util/concurrent/ConcurrentHashMap$CollectionView
+java/util/concurrent/ConcurrentHashMap$CounterCell
+java/util/concurrent/ConcurrentHashMap$EntrySetView
+java/util/concurrent/ConcurrentHashMap$ForwardingNode
+java/util/concurrent/ConcurrentHashMap$KeyIterator
+java/util/concurrent/ConcurrentHashMap$KeySetView
+java/util/concurrent/ConcurrentHashMap$Node
+java/util/concurrent/ConcurrentHashMap$Segment
+java/util/concurrent/ConcurrentHashMap$Traverser
+java/util/concurrent/ConcurrentHashMap$ValueIterator
+java/util/concurrent/ConcurrentHashMap$ValuesView
+java/util/concurrent/ConcurrentMap
+java/util/concurrent/CopyOnWriteArrayList
+java/util/concurrent/DelayQueue
+java/util/concurrent/Delayed
+java/util/concurrent/TimeUnit
+java/util/concurrent/TimeUnit$1
+java/util/concurrent/TimeUnit$2
+java/util/concurrent/TimeUnit$3
+java/util/concurrent/TimeUnit$4
+java/util/concurrent/TimeUnit$5
+java/util/concurrent/TimeUnit$6
+java/util/concurrent/TimeUnit$7
java/util/concurrent/atomic/AtomicBoolean
-java/awt/ComponentOrientation
-java/awt/Component$2
-java/lang/NoSuchMethodException
-sun/awt/AppContext
-sun/awt/AppContext$1
-sun/awt/AppContext$2
-sun/awt/MostRecentKeyValue
-java/awt/Cursor
-java/awt/Point
-java/awt/geom/Point2D
-sun/awt/Win32GraphicsEnvironment
-sun/java2d/SunGraphicsEnvironment
-sun/java2d/FontSupport
-java/io/FilenameFilter
-sun/awt/windows/WToolkit
-sun/awt/SunToolkit
-sun/awt/WindowClosingSupport
-sun/awt/WindowClosingListener
-sun/awt/ComponentFactory
-sun/awt/InputMethodSupport
+java/util/concurrent/atomic/AtomicInteger
+java/util/concurrent/atomic/AtomicLong
+java/util/concurrent/atomic/AtomicMarkableReference
+java/util/concurrent/atomic/AtomicMarkableReference$Pair
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
+java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl$1
+java/util/concurrent/locks/AbstractOwnableSynchronizer
+java/util/concurrent/locks/AbstractQueuedSynchronizer
java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject
+java/util/concurrent/locks/AbstractQueuedSynchronizer$Node
java/util/concurrent/locks/Condition
-sun/awt/AWTAutoShutdown
-sun/awt/SunToolkit$6
-java/awt/Dialog$ModalExclusionType
-java/awt/Dialog
-java/awt/Dialog$ModalityType
-java/awt/ModalEventFilter
-java/awt/EventFilter
-sun/reflect/UnsafeFieldAccessorFactory
-sun/awt/windows/WWindowPeer
-java/awt/peer/WindowPeer
-java/awt/peer/ContainerPeer
-sun/awt/windows/WPanelPeer
-java/awt/peer/PanelPeer
-sun/awt/windows/WCanvasPeer
-java/awt/peer/CanvasPeer
-java/awt/Color
-java/awt/Paint
-java/awt/Transparency
-java/awt/GraphicsConfiguration
-java/awt/image/BufferStrategy
-java/awt/dnd/DropTarget
-java/awt/dnd/DropTargetListener
-java/awt/event/ComponentListener
-java/awt/event/FocusListener
-java/awt/event/HierarchyListener
-java/awt/event/HierarchyBoundsListener
-java/awt/event/KeyListener
-java/awt/event/MouseListener
-java/awt/event/MouseMotionListener
-java/awt/event/MouseWheelListener
-java/awt/event/InputMethodListener
-java/awt/event/ContainerListener
+java/util/concurrent/locks/Lock
+java/util/concurrent/locks/LockSupport
+java/util/concurrent/locks/ReadWriteLock
+java/util/concurrent/locks/ReentrantLock
+java/util/concurrent/locks/ReentrantLock$NonfairSync
+java/util/concurrent/locks/ReentrantLock$Sync
+java/util/concurrent/locks/ReentrantReadWriteLock
+java/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync
+java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock
+java/util/concurrent/locks/ReentrantReadWriteLock$Sync
+java/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter
+java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock
+java/util/function/BiFunction
+java/util/jar/Attributes
+java/util/jar/Attributes$Name
+java/util/jar/JarEntry
+java/util/jar/JarFile
+java/util/jar/JarFile$JarEntryIterator
+java/util/jar/JarFile$JarFileEntry
+java/util/jar/JarVerifier
+java/util/jar/JarVerifier$3
+java/util/jar/JavaUtilJarAccessImpl
+java/util/jar/Manifest
+java/util/jar/Manifest$FastInputStream
+java/util/logging/Handler
+java/util/logging/Level
+java/util/logging/Level$KnownLevel
+java/util/logging/LogManager
+java/util/logging/LogManager$1
+java/util/logging/LogManager$2
+java/util/logging/LogManager$3
+java/util/logging/LogManager$5
+java/util/logging/LogManager$Cleaner
+java/util/logging/LogManager$LogNode
+java/util/logging/LogManager$LoggerContext
+java/util/logging/LogManager$LoggerContext$1
+java/util/logging/LogManager$LoggerWeakRef
+java/util/logging/LogManager$RootLogger
+java/util/logging/LogManager$SystemLoggerContext
+java/util/logging/Logger
+java/util/logging/Logger$1
+java/util/logging/LoggingPermission
+java/util/logging/LoggingProxyImpl
+java/util/spi/CalendarDataProvider
+java/util/spi/CurrencyNameProvider
+java/util/spi/LocaleNameProvider
+java/util/spi/LocaleServiceProvider
+java/util/spi/ResourceBundleControlProvider
+java/util/spi/TimeZoneNameProvider
+java/util/zip/CRC32
+java/util/zip/Checksum
+java/util/zip/DeflaterOutputStream
+java/util/zip/GZIPInputStream
+java/util/zip/Inflater
+java/util/zip/InflaterInputStream
+java/util/zip/ZStreamRef
+java/util/zip/ZipCoder
+java/util/zip/ZipConstants
+java/util/zip/ZipEntry
+java/util/zip/ZipFile
+java/util/zip/ZipFile$1
+java/util/zip/ZipFile$ZipEntryIterator
+java/util/zip/ZipFile$ZipFileInflaterInputStream
+java/util/zip/ZipFile$ZipFileInputStream
+java/util/zip/ZipInputStream
+java/util/zip/ZipUtils
+javax/accessibility/Accessible
+javax/accessibility/AccessibleAction
+javax/accessibility/AccessibleBundle
+javax/accessibility/AccessibleComponent
javax/accessibility/AccessibleContext
-java/io/ObjectOutputStream
-java/io/ObjectOutput
-java/io/DataOutput
-java/io/ObjectStreamConstants
-java/io/ObjectInputStream
-java/io/ObjectInput
-java/io/DataInput
-java/awt/HeadlessException
-java/lang/UnsupportedOperationException
-java/awt/Rectangle
-java/awt/Shape
-java/awt/geom/Rectangle2D
-java/awt/geom/RectangularShape
-java/awt/Image
-java/awt/event/KeyEvent
-java/awt/event/InputEvent
-java/awt/event/ComponentEvent
-java/awt/Event
-java/awt/im/InputContext
-java/awt/event/WindowListener
-java/awt/event/WindowStateListener
-java/awt/event/WindowFocusListener
-java/awt/event/WindowEvent
-java/lang/SecurityException
-java/beans/PropertyChangeListener
-java/awt/event/MouseWheelEvent
-java/awt/event/MouseEvent
-java/awt/BufferCapabilities
-java/awt/AWTException
-sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
-sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
-sun/java2d/SurfaceData
-sun/java2d/DisposerTarget
-sun/java2d/InvalidPipeException
-java/lang/IllegalStateException
-sun/java2d/NullSurfaceData
-sun/java2d/loops/SurfaceType
-sun/awt/image/PixelConverter
-sun/awt/image/PixelConverter$Xrgb
-sun/awt/image/PixelConverter$Argb
-sun/awt/image/PixelConverter$ArgbPre
-sun/awt/image/PixelConverter$Xbgr
-sun/awt/image/PixelConverter$Rgba
-sun/awt/image/PixelConverter$RgbaPre
-sun/awt/image/PixelConverter$Ushort565Rgb
-sun/awt/image/PixelConverter$Ushort555Rgb
-sun/awt/image/PixelConverter$Ushort555Rgbx
-sun/awt/image/PixelConverter$Ushort4444Argb
-sun/awt/image/PixelConverter$ByteGray
-sun/awt/image/PixelConverter$UshortGray
-sun/awt/image/PixelConverter$Rgbx
-sun/awt/image/PixelConverter$Bgrx
-sun/awt/image/PixelConverter$ArgbBm
-java/awt/image/ColorModel
-java/awt/image/DirectColorModel
-java/awt/image/PackedColorModel
-java/awt/color/ColorSpace
-java/awt/color/ICC_Profile
-java/awt/color/ICC_ProfileRGB
-java/awt/color/ICC_Profile$1
-java/awt/color/ICC_ColorSpace
-sun/java2d/pipe/NullPipe
-sun/java2d/pipe/PixelDrawPipe
-sun/java2d/pipe/PixelFillPipe
-sun/java2d/pipe/ShapeDrawPipe
-sun/java2d/pipe/TextPipe
-sun/java2d/pipe/DrawImagePipe
-java/awt/image/IndexColorModel
-sun/java2d/pipe/LoopPipe
-sun/java2d/pipe/OutlineTextRenderer
-sun/java2d/pipe/SolidTextRenderer
-sun/java2d/pipe/GlyphListLoopPipe
-sun/java2d/pipe/GlyphListPipe
-sun/java2d/pipe/AATextRenderer
-sun/java2d/pipe/LCDTextRenderer
-sun/java2d/pipe/AlphaColorPipe
-sun/java2d/pipe/CompositePipe
-sun/java2d/pipe/PixelToShapeConverter
-sun/java2d/pipe/TextRenderer
-sun/java2d/pipe/SpanClipRenderer
-sun/java2d/pipe/Region
-sun/java2d/pipe/RegionIterator
-sun/java2d/pipe/AlphaPaintPipe
-sun/java2d/pipe/SpanShapeRenderer$Composite
-sun/java2d/pipe/SpanShapeRenderer
-sun/java2d/pipe/GeneralCompositePipe
-sun/java2d/pipe/DrawImage
-sun/java2d/loops/RenderCache
-sun/java2d/loops/RenderCache$Entry
-sun/awt/image/SunVolatileImage
-java/awt/image/VolatileImage
-java/awt/ImageCapabilities
-java/awt/Image$1
-sun/awt/image/SurfaceManager$ImageAccessor
-sun/awt/image/SurfaceManager
-sun/awt/image/VolatileSurfaceManager
-sun/java2d/windows/WindowsFlags
-sun/java2d/windows/WindowsFlags$1
-sun/java2d/loops/Blit
-sun/java2d/loops/GraphicsPrimitive
-sun/java2d/loops/GraphicsPrimitiveMgr
-sun/java2d/loops/CompositeType
-sun/java2d/SunGraphics2D
-sun/awt/ConstrainableGraphics
-java/awt/Graphics2D
-java/awt/Graphics
-sun/java2d/loops/XORComposite
-java/awt/Composite
-java/awt/AlphaComposite
-java/awt/geom/Path2D
-java/awt/geom/Path2D$Float
-sun/awt/SunHints
-sun/java2d/loops/BlitBg
-sun/java2d/loops/ScaledBlit
-sun/java2d/loops/FillRect
-sun/java2d/loops/FillSpans
-sun/java2d/loops/DrawLine
-sun/java2d/loops/DrawRect
-sun/java2d/loops/DrawPolygons
-sun/java2d/loops/DrawPath
-sun/java2d/loops/FillPath
-sun/java2d/loops/MaskBlit
-sun/java2d/loops/MaskFill
-sun/java2d/loops/DrawGlyphList
-sun/java2d/loops/DrawGlyphListAA
-sun/java2d/loops/DrawGlyphListLCD
-sun/java2d/loops/TransformHelper
-java/awt/BasicStroke
-java/awt/Stroke
-sun/misc/PerformanceLogger
-sun/misc/PerformanceLogger$TimeData
-sun/java2d/pipe/ValidatePipe
-sun/awt/SunHints$Key
-java/awt/RenderingHints$Key
-sun/awt/SunHints$Value
-sun/awt/SunHints$LCDContrastKey
-sun/java2d/loops/CustomComponent
-sun/java2d/loops/GraphicsPrimitiveProxy
-sun/java2d/loops/GeneralRenderer
-sun/java2d/loops/GraphicsPrimitiveMgr$1
-sun/java2d/loops/GraphicsPrimitiveMgr$2
-sun/java2d/windows/GDIBlitLoops
-sun/java2d/windows/GDIRenderer
-sun/awt/windows/WToolkit$1
-sun/awt/SunDisplayChanger
-sun/java2d/SunGraphicsEnvironment$1
-sun/font/FontManager
-sun/font/FileFont
-sun/font/PhysicalFont
-sun/font/Font2D
-sun/font/CompositeFont
-java/util/HashMap$Values
-java/util/HashMap$ValueIterator
-java/util/HashMap$HashIterator
-sun/font/TrueTypeFont
-java/awt/font/FontRenderContext
-java/awt/RenderingHints
-sun/font/Type1Font
-java/awt/geom/Point2D$Float
-sun/font/StrikeMetrics
-java/awt/geom/Rectangle2D$Float
-java/awt/geom/GeneralPath
-sun/font/CharToGlyphMapper
-sun/font/PhysicalStrike
-sun/font/FontStrike
-sun/font/GlyphList
-sun/font/StrikeCache
-sun/java2d/Disposer
-sun/java2d/Disposer$1
-sun/font/StrikeCache$1
-sun/awt/windows/WFontConfiguration
-sun/awt/FontConfiguration
-sun/awt/FontDescriptor
-java/io/DataInputStream
-java/lang/Short$ShortCache
-java/util/HashMap$KeyIterator
-sun/font/CompositeFontDescriptor
-sun/font/Font2DHandle
-sun/font/FontFamily
-java/awt/GraphicsDevice
-sun/awt/Win32GraphicsDevice
-sun/awt/Win32GraphicsConfig
-java/awt/BorderLayout
-java/awt/LayoutManager2
-java/awt/Toolkit$2
-sun/awt/SunToolkit$ModalityListenerList
-sun/awt/ModalityListener
-sun/awt/SunToolkit$1
-java/util/MissingResourceException
-java/awt/EventQueue
-java/awt/Queue
-sun/awt/PostEventQueue
-sun/awt/windows/WToolkit$ToolkitDisposer
-sun/java2d/DisposerRecord
-sun/awt/windows/WToolkit$2
-sun/awt/windows/WToolkit$3
-java/awt/Window$WindowDisposerRecord
-java/awt/KeyboardFocusManager
-java/awt/KeyEventDispatcher
-java/awt/KeyEventPostProcessor
-java/awt/event/NativeLibLoader
-java/awt/AWTKeyStroke
-java/awt/AWTKeyStroke$1
-java/util/LinkedList
-java/util/Deque
-java/util/Queue
-java/util/AbstractSequentialList
-java/awt/DefaultKeyboardFocusManager
-java/awt/DefaultFocusTraversalPolicy
-java/awt/ContainerOrderFocusTraversalPolicy
-java/awt/FocusTraversalPolicy
-java/util/Collections$UnmodifiableSet
-sun/awt/HeadlessToolkit
-sun/awt/KeyboardFocusManagerPeerImpl
-java/awt/peer/KeyboardFocusManagerPeer
-sun/awt/windows/WFramePeer
-java/awt/peer/FramePeer
-sun/awt/RepaintArea
-sun/awt/EmbeddedFrame
-sun/awt/im/InputMethodWindow
-sun/awt/windows/WComponentPeer$2
-sun/awt/PaintEventDispatcher
-java/awt/event/InvocationEvent
-java/awt/ActiveEvent
-java/awt/MenuComponent
-sun/awt/SunToolkit$3
-java/util/EmptyStackException
-java/lang/reflect/InvocationTargetException
-java/awt/event/PaintEvent
-java/awt/EventDispatchThread
-sun/awt/PeerEvent
-java/awt/EventQueue$1
-sun/java2d/loops/RenderLoops
-java/awt/EventDispatchThread$1
-java/awt/Conditional
-java/awt/EventDispatchThread$HierarchyEventFilter
-java/awt/EventFilter$FilterAction
-sun/awt/dnd/SunDragSourceContextPeer
-java/awt/dnd/peer/DragSourceContextPeer
-java/awt/event/InputMethodEvent
-java/awt/event/ActionEvent
-sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
-sun/awt/windows/WFileDialogPeer
-java/awt/peer/FileDialogPeer
-java/awt/peer/DialogPeer
-sun/awt/windows/WPrintDialogPeer
-sun/java2d/DefaultDisposerRecord
-sun/awt/windows/WColor
-sun/awt/windows/WFontPeer
-sun/awt/PlatformFont
-java/awt/peer/FontPeer
-sun/awt/FontConfiguration$1
-sun/awt/windows/WingDings
-sun/awt/windows/WingDings$Encoder
-sun/awt/Symbol
-sun/awt/Symbol$Encoder
-sun/awt/im/InputMethodManager
-sun/awt/im/ExecutableInputMethodManager
-sun/awt/windows/WInputMethodDescriptor
-java/awt/im/spi/InputMethodDescriptor
-sun/awt/im/InputMethodLocator
-sun/awt/im/ExecutableInputMethodManager$2
-sun/misc/Service
-sun/misc/Service$LazyIterator
-java/util/TreeSet
-java/util/NavigableSet
-java/util/SortedSet
-java/util/TreeMap
-java/util/NavigableMap
-java/util/SortedMap
-sun/misc/Launcher$1
-sun/misc/URLClassPath$2
-java/lang/ClassLoader$2
-sun/misc/URLClassPath$1
-java/net/URLClassLoader$3
-sun/misc/CompoundEnumeration
-sun/misc/URLClassPath$JarLoader$1
-sun/misc/FileURLMapper
-java/net/URLClassLoader$3$1
-sun/awt/SunToolkit$2
-sun/reflect/UnsafeObjectFieldAccessorImpl
-java/awt/peer/LightweightPeer
-sun/awt/windows/WLabelPeer
-java/awt/peer/LabelPeer
-java/awt/PopupMenu
-java/awt/Menu
-java/awt/MenuItem
-java/io/PrintWriter
-sun/awt/CausedFocusEvent$Cause
-java/awt/PointerInfo
-java/awt/Component$BaselineResizeBehavior
-java/awt/FontMetrics
-java/awt/image/ImageProducer
-java/awt/im/InputMethodRequests
-java/awt/event/FocusEvent
-java/awt/event/HierarchyEvent
-javax/accessibility/AccessibleStateSet
-java/awt/SequencedEvent
-sun/awt/PlatformFont$PlatformFontCache
-sun/awt/windows/WGlobalCursorManager
-sun/awt/GlobalCursorManager
-sun/awt/GlobalCursorManager$NativeUpdater
-sun/nio/cs/UTF_16LE
-sun/nio/cs/Unicode
-sun/nio/cs/UTF_16LE$Encoder
-sun/nio/cs/UnicodeEncoder
-sun/nio/cs/UTF_16LE$Decoder
-sun/nio/cs/UnicodeDecoder
-sun/awt/event/IgnorePaintEvent
-sun/awt/dnd/SunDropTargetEvent
-java/awt/DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent
-java/awt/SentEvent
-java/awt/KeyboardFocusManager$HeavyweightFocusRequest
-java/util/LinkedList$ListItr
-java/util/ListIterator
-java/awt/DefaultKeyboardFocusManager$TypeAheadMarker
-java/awt/KeyboardFocusManager$LightweightFocusRequest
-javax/swing/JFrame
-javax/swing/WindowConstants
-javax/swing/RootPaneContainer
-javax/swing/TransferHandler$HasGetTransferHandler
-javax/swing/JLabel
-javax/swing/SwingConstants
+javax/accessibility/AccessibleExtendedComponent
+javax/accessibility/AccessibleRelationSet
+javax/accessibility/AccessibleState
+javax/accessibility/AccessibleText
+javax/accessibility/AccessibleValue
+javax/security/auth/Destroyable
+javax/sound/sampled/Control$Type
+javax/sound/sampled/DataLine
+javax/sound/sampled/DataLine$Info
+javax/sound/sampled/FloatControl$Type
+javax/sound/sampled/Line
+javax/sound/sampled/Line$Info
+javax/sound/sampled/LineUnavailableException
+javax/sound/sampled/UnsupportedAudioFileException
+javax/swing/AbstractAction
+javax/swing/AbstractButton
+javax/swing/AbstractButton$AccessibleAbstractButton
+javax/swing/AbstractButton$Handler
+javax/swing/AbstractCellEditor
+javax/swing/AbstractListModel
+javax/swing/Action
+javax/swing/ActionMap
+javax/swing/AncestorNotifier
+javax/swing/ArrayTable
+javax/swing/BorderFactory
+javax/swing/BoundedRangeModel
+javax/swing/Box
+javax/swing/Box$Filler
+javax/swing/BoxLayout
+javax/swing/BufferStrategyPaintManager
+javax/swing/BufferStrategyPaintManager$BufferInfo
+javax/swing/ButtonGroup
+javax/swing/ButtonModel
+javax/swing/CellEditor
+javax/swing/CellRendererPane
+javax/swing/ClientPropertyKey
+javax/swing/ClientPropertyKey$1
+javax/swing/ComboBoxEditor
+javax/swing/ComboBoxModel
+javax/swing/ComponentInputMap
+javax/swing/DefaultBoundedRangeModel
+javax/swing/DefaultButtonModel
+javax/swing/DefaultCellEditor
+javax/swing/DefaultCellEditor$1
+javax/swing/DefaultCellEditor$EditorDelegate
+javax/swing/DefaultComboBoxModel
+javax/swing/DefaultListCellRenderer
+javax/swing/DefaultListCellRenderer$UIResource
+javax/swing/DefaultListModel
+javax/swing/DefaultListSelectionModel
+javax/swing/DefaultSingleSelectionModel
+javax/swing/DropMode
+javax/swing/FocusManager
+javax/swing/GrayFilter
+javax/swing/Icon
+javax/swing/ImageIcon
+javax/swing/ImageIcon$1
+javax/swing/ImageIcon$2
+javax/swing/ImageIcon$2$1
+javax/swing/ImageIcon$3
+javax/swing/InputMap
+javax/swing/InternalFrameFocusTraversalPolicy
+javax/swing/JButton
+javax/swing/JCheckBox
+javax/swing/JCheckBoxMenuItem
+javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem
+javax/swing/JComboBox
+javax/swing/JComboBox$1
+javax/swing/JComboBox$KeySelectionManager
javax/swing/JComponent
javax/swing/JComponent$1
-javax/swing/SwingUtilities
+javax/swing/JComponent$2
+javax/swing/JComponent$AccessibleJComponent
+javax/swing/JDialog
+javax/swing/JEditorPane
+javax/swing/JFrame
+javax/swing/JInternalFrame
+javax/swing/JLabel
+javax/swing/JLayer
+javax/swing/JLayeredPane
+javax/swing/JList
+javax/swing/JList$3
+javax/swing/JList$ListSelectionHandler
+javax/swing/JMenu
+javax/swing/JMenu$MenuChangeListener
+javax/swing/JMenu$WinListener
+javax/swing/JMenuBar
+javax/swing/JMenuItem
+javax/swing/JMenuItem$AccessibleJMenuItem
+javax/swing/JMenuItem$MenuItemFocusListener
+javax/swing/JPanel
+javax/swing/JPopupMenu
+javax/swing/JPopupMenu$Separator
+javax/swing/JProgressBar
+javax/swing/JProgressBar$ModelListener
+javax/swing/JRadioButton
+javax/swing/JRadioButtonMenuItem
javax/swing/JRootPane
-sun/security/action/GetBooleanAction
-javax/swing/event/EventListenerList
-javax/swing/JPanel
-java/awt/FlowLayout
+javax/swing/JRootPane$1
+javax/swing/JRootPane$RootLayout
+javax/swing/JScrollBar
+javax/swing/JScrollBar$ModelListener
+javax/swing/JScrollPane
+javax/swing/JScrollPane$ScrollBar
+javax/swing/JSeparator
+javax/swing/JSlider
+javax/swing/JSlider$ModelListener
+javax/swing/JSplitPane
+javax/swing/JTabbedPane
+javax/swing/JTabbedPane$ModelListener
+javax/swing/JTabbedPane$Page
+javax/swing/JTable
+javax/swing/JTable$2
+javax/swing/JTable$5
+javax/swing/JTable$Resizable2
+javax/swing/JTable$Resizable3
+javax/swing/JTextArea
+javax/swing/JTextField
+javax/swing/JTextField$NotifyAction
+javax/swing/JTextField$ScrollRepainter
+javax/swing/JToggleButton
+javax/swing/JToggleButton$ToggleButtonModel
+javax/swing/JToolBar
+javax/swing/JToolBar$DefaultToolBarLayout
+javax/swing/JToolBar$Separator
+javax/swing/JToolTip
+javax/swing/JTree
+javax/swing/JTree$TreeModelHandler
+javax/swing/JTree$TreeSelectionRedirector
+javax/swing/JViewport
+javax/swing/JViewport$ViewListener
+javax/swing/JWindow
+javax/swing/KeyStroke
+javax/swing/KeyboardManager
+javax/swing/KeyboardManager$ComponentKeyStrokePair
+javax/swing/LayoutComparator
+javax/swing/LayoutFocusTraversalPolicy
+javax/swing/ListCellRenderer
+javax/swing/ListModel
+javax/swing/ListSelectionModel
+javax/swing/LookAndFeel
+javax/swing/MenuElement
+javax/swing/MenuSelectionManager
+javax/swing/MultiUIDefaults
+javax/swing/MutableComboBoxModel
+javax/swing/Popup$HeavyWeightWindow
+javax/swing/RepaintManager
+javax/swing/RepaintManager$1
+javax/swing/RepaintManager$1$1
+javax/swing/RepaintManager$2
+javax/swing/RepaintManager$3
+javax/swing/RepaintManager$DisplayChangedHandler
+javax/swing/RepaintManager$PaintManager
+javax/swing/RepaintManager$ProcessingRunnable
+javax/swing/RootPaneContainer
+javax/swing/ScrollPaneConstants
+javax/swing/ScrollPaneLayout
+javax/swing/ScrollPaneLayout$UIResource
+javax/swing/Scrollable
+javax/swing/SingleSelectionModel
+javax/swing/SizeRequirements
+javax/swing/SortingFocusTraversalPolicy
+javax/swing/SwingConstants
+javax/swing/SwingContainerOrderFocusTraversalPolicy
+javax/swing/SwingDefaultFocusTraversalPolicy
+javax/swing/SwingPaintEventDispatcher
+javax/swing/SwingUtilities
+javax/swing/SwingUtilities$SharedOwnerFrame
+javax/swing/Timer
+javax/swing/Timer$DoPostEvent
+javax/swing/TimerQueue
+javax/swing/TimerQueue$1
+javax/swing/TimerQueue$DelayedTimer
+javax/swing/ToolTipManager
+javax/swing/ToolTipManager$AccessibilityKeyListener
+javax/swing/ToolTipManager$MoveBeforeEnterListener
+javax/swing/ToolTipManager$insideTimerAction
+javax/swing/ToolTipManager$outsideTimerAction
+javax/swing/ToolTipManager$stillInsideTimerAction
+javax/swing/TransferHandler
+javax/swing/TransferHandler$DropHandler
+javax/swing/TransferHandler$HasGetTransferHandler
+javax/swing/TransferHandler$SwingDropTarget
+javax/swing/TransferHandler$TransferAction
+javax/swing/TransferHandler$TransferSupport
+javax/swing/UIDefaults
+javax/swing/UIDefaults$ActiveValue
+javax/swing/UIDefaults$LazyInputMap
+javax/swing/UIDefaults$LazyValue
+javax/swing/UIDefaults$TextAndMnemonicHashMap
javax/swing/UIManager
+javax/swing/UIManager$1
+javax/swing/UIManager$2
+javax/swing/UIManager$LAFState
javax/swing/UIManager$LookAndFeelInfo
-sun/awt/windows/WDesktopProperties
-sun/awt/windows/WDesktopProperties$WinPlaySound
-sun/awt/shell/Win32ShellFolderManager2
-sun/awt/shell/ShellFolderManager
-sun/swing/SwingUtilities2
-sun/swing/SwingUtilities2$LSBCacheEntry
-javax/swing/UIManager$LAFState
-javax/swing/UIDefaults
-javax/swing/MultiUIDefaults
-javax/swing/UIManager$1
+javax/swing/UnsupportedLookAndFeelException
+javax/swing/ViewportLayout
+javax/swing/WindowConstants
+javax/swing/border/AbstractBorder
+javax/swing/border/BevelBorder
+javax/swing/border/Border
+javax/swing/border/CompoundBorder
+javax/swing/border/EmptyBorder
+javax/swing/border/EtchedBorder
+javax/swing/border/LineBorder
+javax/swing/border/MatteBorder
+javax/swing/border/TitledBorder
+javax/swing/event/AncestorListener
+javax/swing/event/CaretEvent
+javax/swing/event/CaretListener
+javax/swing/event/CellEditorListener
+javax/swing/event/ChangeEvent
+javax/swing/event/ChangeListener
+javax/swing/event/DocumentEvent
+javax/swing/event/DocumentEvent$ElementChange
+javax/swing/event/DocumentEvent$EventType
+javax/swing/event/DocumentListener
+javax/swing/event/EventListenerList
+javax/swing/event/ListDataEvent
+javax/swing/event/ListDataListener
+javax/swing/event/ListSelectionEvent
+javax/swing/event/ListSelectionListener
+javax/swing/event/MenuDragMouseListener
+javax/swing/event/MenuEvent
+javax/swing/event/MenuKeyListener
+javax/swing/event/MenuListener
+javax/swing/event/MouseInputAdapter
+javax/swing/event/MouseInputListener
+javax/swing/event/PopupMenuListener
+javax/swing/event/RowSorterListener
+javax/swing/event/SwingPropertyChangeSupport
+javax/swing/event/TableColumnModelEvent
+javax/swing/event/TableColumnModelListener
+javax/swing/event/TableModelEvent
+javax/swing/event/TableModelListener
+javax/swing/event/TreeExpansionListener
+javax/swing/event/TreeModelEvent
+javax/swing/event/TreeModelListener
+javax/swing/event/TreeSelectionEvent
+javax/swing/event/TreeSelectionListener
+javax/swing/event/UndoableEditEvent
+javax/swing/event/UndoableEditListener
+javax/swing/filechooser/FileFilter
+javax/swing/filechooser/FileSystemView
+javax/swing/filechooser/FileSystemView$1
+javax/swing/filechooser/WindowsFileSystemView
+javax/swing/plaf/ActionMapUIResource
+javax/swing/plaf/BorderUIResource
+javax/swing/plaf/BorderUIResource$CompoundBorderUIResource
+javax/swing/plaf/BorderUIResource$EmptyBorderUIResource
+javax/swing/plaf/BorderUIResource$LineBorderUIResource
+javax/swing/plaf/ButtonUI
+javax/swing/plaf/ColorUIResource
+javax/swing/plaf/ComboBoxUI
+javax/swing/plaf/ComponentInputMapUIResource
+javax/swing/plaf/ComponentUI
+javax/swing/plaf/DimensionUIResource
+javax/swing/plaf/FontUIResource
+javax/swing/plaf/InputMapUIResource
+javax/swing/plaf/InsetsUIResource
+javax/swing/plaf/LabelUI
+javax/swing/plaf/ListUI
+javax/swing/plaf/MenuBarUI
+javax/swing/plaf/MenuItemUI
+javax/swing/plaf/PanelUI
+javax/swing/plaf/PopupMenuUI
+javax/swing/plaf/ProgressBarUI
+javax/swing/plaf/RootPaneUI
+javax/swing/plaf/ScrollBarUI
+javax/swing/plaf/ScrollPaneUI
+javax/swing/plaf/SeparatorUI
+javax/swing/plaf/SliderUI
+javax/swing/plaf/SplitPaneUI
+javax/swing/plaf/TabbedPaneUI
+javax/swing/plaf/TableHeaderUI
+javax/swing/plaf/TableUI
+javax/swing/plaf/TextUI
+javax/swing/plaf/ToolBarUI
+javax/swing/plaf/TreeUI
+javax/swing/plaf/UIResource
+javax/swing/plaf/ViewportUI
+javax/swing/plaf/basic/BasicArrowButton
+javax/swing/plaf/basic/BasicBorders
+javax/swing/plaf/basic/BasicBorders$ButtonBorder
+javax/swing/plaf/basic/BasicBorders$MarginBorder
+javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
+javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
+javax/swing/plaf/basic/BasicBorders$SplitPaneBorder
+javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder
+javax/swing/plaf/basic/BasicButtonListener
+javax/swing/plaf/basic/BasicButtonUI
+javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
+javax/swing/plaf/basic/BasicComboBoxEditor
+javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
+javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
+javax/swing/plaf/basic/BasicComboBoxRenderer
+javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource
+javax/swing/plaf/basic/BasicComboBoxUI
+javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
+javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
+javax/swing/plaf/basic/BasicComboBoxUI$Handler
+javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicComboPopup
+javax/swing/plaf/basic/BasicComboPopup$1
+javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
+javax/swing/plaf/basic/BasicComboPopup$Handler
+javax/swing/plaf/basic/BasicGraphicsUtils
+javax/swing/plaf/basic/BasicHTML
+javax/swing/plaf/basic/BasicLabelUI
+javax/swing/plaf/basic/BasicListUI
+javax/swing/plaf/basic/BasicListUI$Handler
+javax/swing/plaf/basic/BasicListUI$ListTransferHandler
+javax/swing/plaf/basic/BasicLookAndFeel
+javax/swing/plaf/basic/BasicLookAndFeel$1
+javax/swing/plaf/basic/BasicLookAndFeel$2
+javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
+javax/swing/plaf/basic/BasicMenuBarUI
+javax/swing/plaf/basic/BasicMenuBarUI$Handler
+javax/swing/plaf/basic/BasicMenuItemUI
+javax/swing/plaf/basic/BasicMenuItemUI$Handler
+javax/swing/plaf/basic/BasicMenuUI
+javax/swing/plaf/basic/BasicMenuUI$Handler
+javax/swing/plaf/basic/BasicPanelUI
+javax/swing/plaf/basic/BasicPopupMenuUI
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
+javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper
+javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1
+javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
+javax/swing/plaf/basic/BasicProgressBarUI
+javax/swing/plaf/basic/BasicProgressBarUI$Handler
+javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
+javax/swing/plaf/basic/BasicRadioButtonUI
+javax/swing/plaf/basic/BasicRootPaneUI
+javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
+javax/swing/plaf/basic/BasicScrollBarUI
+javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener
+javax/swing/plaf/basic/BasicScrollBarUI$Handler
+javax/swing/plaf/basic/BasicScrollBarUI$ModelListener
+javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener
+javax/swing/plaf/basic/BasicScrollBarUI$TrackListener
+javax/swing/plaf/basic/BasicScrollPaneUI
+javax/swing/plaf/basic/BasicScrollPaneUI$Handler
+javax/swing/plaf/basic/BasicSeparatorUI
+javax/swing/plaf/basic/BasicSliderUI
+javax/swing/plaf/basic/BasicSliderUI$Actions
+javax/swing/plaf/basic/BasicSliderUI$Handler
+javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
+javax/swing/plaf/basic/BasicSliderUI$ScrollListener
+javax/swing/plaf/basic/BasicSliderUI$TrackListener
+javax/swing/plaf/basic/BasicSplitPaneDivider
+javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout
+javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler
+javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler
+javax/swing/plaf/basic/BasicSplitPaneUI
+javax/swing/plaf/basic/BasicSplitPaneUI$1
+javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager
+javax/swing/plaf/basic/BasicSplitPaneUI$Handler
+javax/swing/plaf/basic/BasicTabbedPaneUI
+javax/swing/plaf/basic/BasicTabbedPaneUI$Handler
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout
+javax/swing/plaf/basic/BasicTableHeaderUI
+javax/swing/plaf/basic/BasicTableHeaderUI$1
+javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler
+javax/swing/plaf/basic/BasicTableUI
+javax/swing/plaf/basic/BasicTableUI$Handler
+javax/swing/plaf/basic/BasicTableUI$TableTransferHandler
+javax/swing/plaf/basic/BasicTextAreaUI
+javax/swing/plaf/basic/BasicTextFieldUI
+javax/swing/plaf/basic/BasicTextUI
+javax/swing/plaf/basic/BasicTextUI$BasicCaret
+javax/swing/plaf/basic/BasicTextUI$BasicCursor
+javax/swing/plaf/basic/BasicTextUI$BasicHighlighter
+javax/swing/plaf/basic/BasicTextUI$DragListener
+javax/swing/plaf/basic/BasicTextUI$FocusAction
+javax/swing/plaf/basic/BasicTextUI$RootView
+javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
+javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
+javax/swing/plaf/basic/BasicTextUI$UpdateHandler
+javax/swing/plaf/basic/BasicToggleButtonUI
+javax/swing/plaf/basic/BasicToolBarSeparatorUI
+javax/swing/plaf/basic/BasicToolBarUI
+javax/swing/plaf/basic/BasicToolBarUI$DockingListener
+javax/swing/plaf/basic/BasicToolBarUI$Handler
+javax/swing/plaf/basic/BasicTreeUI
+javax/swing/plaf/basic/BasicTreeUI$Actions
+javax/swing/plaf/basic/BasicTreeUI$Handler
+javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler
+javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler
+javax/swing/plaf/basic/BasicViewportUI
+javax/swing/plaf/basic/ComboPopup
+javax/swing/plaf/basic/DefaultMenuLayout
+javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
+javax/swing/plaf/basic/LazyActionMap
+javax/swing/plaf/metal/BumpBuffer
+javax/swing/plaf/metal/DefaultMetalTheme
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
+javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
+javax/swing/plaf/metal/MetalBorders
+javax/swing/plaf/metal/MetalBorders$ButtonBorder
+javax/swing/plaf/metal/MetalBorders$Flush3DBorder
+javax/swing/plaf/metal/MetalBorders$MenuBarBorder
+javax/swing/plaf/metal/MetalBorders$MenuItemBorder
+javax/swing/plaf/metal/MetalBorders$PopupMenuBorder
+javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder
+javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder
+javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder
+javax/swing/plaf/metal/MetalBorders$TextFieldBorder
+javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder
+javax/swing/plaf/metal/MetalBorders$ToolBarBorder
+javax/swing/plaf/metal/MetalBumps
+javax/swing/plaf/metal/MetalButtonUI
+javax/swing/plaf/metal/MetalCheckBoxUI
+javax/swing/plaf/metal/MetalComboBoxButton
+javax/swing/plaf/metal/MetalComboBoxButton$1
+javax/swing/plaf/metal/MetalComboBoxEditor
+javax/swing/plaf/metal/MetalComboBoxEditor$1
+javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder
+javax/swing/plaf/metal/MetalComboBoxEditor$UIResource
+javax/swing/plaf/metal/MetalComboBoxIcon
+javax/swing/plaf/metal/MetalComboBoxUI
+javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager
+javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener
+javax/swing/plaf/metal/MetalIconFactory
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon
+javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon
+javax/swing/plaf/metal/MetalIconFactory$FolderIcon16
+javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon
+javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon
+javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon
+javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon
+javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon
+javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon
+javax/swing/plaf/metal/MetalLabelUI
javax/swing/plaf/metal/MetalLookAndFeel
-javax/swing/plaf/basic/BasicLookAndFeel
-javax/swing/LookAndFeel
-sun/swing/DefaultLookup
-javax/swing/plaf/metal/OceanTheme
-javax/swing/plaf/metal/DefaultMetalTheme
+javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
+javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
+javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
+javax/swing/plaf/metal/MetalPopupMenuSeparatorUI
+javax/swing/plaf/metal/MetalProgressBarUI
+javax/swing/plaf/metal/MetalRadioButtonUI
+javax/swing/plaf/metal/MetalRootPaneUI
+javax/swing/plaf/metal/MetalScrollBarUI
+javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener
+javax/swing/plaf/metal/MetalScrollButton
+javax/swing/plaf/metal/MetalScrollPaneUI
+javax/swing/plaf/metal/MetalScrollPaneUI$1
+javax/swing/plaf/metal/MetalSeparatorUI
+javax/swing/plaf/metal/MetalSliderUI
+javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
+javax/swing/plaf/metal/MetalSplitPaneDivider
+javax/swing/plaf/metal/MetalSplitPaneDivider$1
+javax/swing/plaf/metal/MetalSplitPaneDivider$2
+javax/swing/plaf/metal/MetalSplitPaneUI
+javax/swing/plaf/metal/MetalTabbedPaneUI
+javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout
+javax/swing/plaf/metal/MetalTextFieldUI
javax/swing/plaf/metal/MetalTheme
-javax/swing/plaf/ColorUIResource
-javax/swing/plaf/UIResource
-sun/swing/PrintColorUIResource
-javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate
-javax/swing/plaf/FontUIResource
-sun/swing/SwingLazyValue
-javax/swing/UIDefaults$LazyValue
-javax/swing/UIDefaults$ActiveValue
-javax/swing/plaf/InsetsUIResource
-sun/swing/SwingUtilities2$2
-javax/swing/plaf/basic/BasicLookAndFeel$2
-javax/swing/plaf/DimensionUIResource
-javax/swing/UIDefaults$LazyInputMap
-java/lang/Character$CharacterCache
-javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
-javax/swing/plaf/metal/MetalLookAndFeel$FontActiveValue
-sun/swing/SwingUtilities2$AATextInfo
-java/util/HashMap$EntrySet
-java/util/HashMap$EntryIterator
-javax/swing/plaf/metal/MetalLookAndFeel$AATextListener
-java/beans/PropertyChangeListenerProxy
-java/util/EventListenerProxy
-sun/awt/EventListenerAggregate
-javax/swing/UIDefaults$ProxyLazyValue
+javax/swing/plaf/metal/MetalToggleButtonUI
+javax/swing/plaf/metal/MetalToolBarUI
+javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener
+javax/swing/plaf/metal/MetalTreeUI
+javax/swing/plaf/metal/MetalTreeUI$LineListener
+javax/swing/plaf/metal/MetalUtils
+javax/swing/plaf/metal/OceanTheme
javax/swing/plaf/metal/OceanTheme$1
javax/swing/plaf/metal/OceanTheme$2
javax/swing/plaf/metal/OceanTheme$3
javax/swing/plaf/metal/OceanTheme$4
javax/swing/plaf/metal/OceanTheme$5
javax/swing/plaf/metal/OceanTheme$6
-javax/swing/FocusManager
-javax/swing/LayoutFocusTraversalPolicy
-javax/swing/SortingFocusTraversalPolicy
-javax/swing/InternalFrameFocusTraversalPolicy
-javax/swing/SwingContainerOrderFocusTraversalPolicy
-javax/swing/SwingDefaultFocusTraversalPolicy
-javax/swing/LayoutComparator
-javax/swing/RepaintManager
-javax/swing/RepaintManager$DisplayChangedHandler
-javax/swing/SwingPaintEventDispatcher
-javax/swing/UIManager$2
-com/sun/swing/internal/plaf/metal/resources/metal
-sun/util/ResourceBundleEnumeration
-com/sun/swing/internal/plaf/basic/resources/basic
-javax/swing/plaf/basic/BasicPanelUI
-javax/swing/plaf/PanelUI
-javax/swing/plaf/ComponentUI
-sun/reflect/misc/MethodUtil
-sun/reflect/misc/MethodUtil$1
-java/util/jar/JarFile
-java/util/zip/ZipFile
-java/util/zip/ZipConstants
-java/util/jar/JavaUtilJarAccessImpl
-sun/misc/JavaUtilJarAccess
-sun/misc/JarIndex
-java/util/zip/ZipEntry
-java/util/jar/JarFile$JarFileEntry
-java/util/jar/JarEntry
-sun/misc/URLClassPath$JarLoader$2
-sun/net/www/protocol/jar/JarURLConnection
-java/net/JarURLConnection
-sun/net/www/protocol/jar/JarFileFactory
-sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
-java/net/HttpURLConnection
-sun/net/www/protocol/jar/URLJarFile
-sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
-sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
-java/util/zip/ZipFile$ZipFileInputStream
-java/security/AllPermissionCollection
-java/lang/IllegalAccessException
-javax/swing/JPasswordField
-javax/swing/JTextField
+javax/swing/plaf/synth/SynthConstants
+javax/swing/plaf/synth/SynthUI
+javax/swing/table/AbstractTableModel
+javax/swing/table/DefaultTableCellRenderer
+javax/swing/table/DefaultTableColumnModel
+javax/swing/table/DefaultTableModel
+javax/swing/table/JTableHeader
+javax/swing/table/TableCellEditor
+javax/swing/table/TableCellRenderer
+javax/swing/table/TableColumn
+javax/swing/table/TableColumnModel
+javax/swing/table/TableModel
+javax/swing/text/AbstractDocument
+javax/swing/text/AbstractDocument$1
+javax/swing/text/AbstractDocument$AbstractElement
+javax/swing/text/AbstractDocument$AttributeContext
+javax/swing/text/AbstractDocument$BidiElement
+javax/swing/text/AbstractDocument$BidiRootElement
+javax/swing/text/AbstractDocument$BranchElement
+javax/swing/text/AbstractDocument$Content
+javax/swing/text/AbstractDocument$DefaultDocumentEvent
+javax/swing/text/AbstractDocument$ElementEdit
+javax/swing/text/AbstractDocument$InsertStringResult
+javax/swing/text/AbstractDocument$LeafElement
+javax/swing/text/AttributeSet
+javax/swing/text/AttributeSet$CharacterAttribute
+javax/swing/text/AttributeSet$ColorAttribute
+javax/swing/text/AttributeSet$FontAttribute
+javax/swing/text/AttributeSet$ParagraphAttribute
+javax/swing/text/Caret
+javax/swing/text/DefaultCaret
+javax/swing/text/DefaultCaret$Handler
+javax/swing/text/DefaultEditorKit
+javax/swing/text/DefaultEditorKit$BeepAction
+javax/swing/text/DefaultEditorKit$BeginAction
+javax/swing/text/DefaultEditorKit$BeginLineAction
+javax/swing/text/DefaultEditorKit$BeginParagraphAction
+javax/swing/text/DefaultEditorKit$BeginWordAction
+javax/swing/text/DefaultEditorKit$CopyAction
+javax/swing/text/DefaultEditorKit$CutAction
+javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
+javax/swing/text/DefaultEditorKit$DeleteNextCharAction
+javax/swing/text/DefaultEditorKit$DeletePrevCharAction
+javax/swing/text/DefaultEditorKit$DeleteWordAction
+javax/swing/text/DefaultEditorKit$DumpModelAction
+javax/swing/text/DefaultEditorKit$EndAction
+javax/swing/text/DefaultEditorKit$EndLineAction
+javax/swing/text/DefaultEditorKit$EndParagraphAction
+javax/swing/text/DefaultEditorKit$EndWordAction
+javax/swing/text/DefaultEditorKit$InsertBreakAction
+javax/swing/text/DefaultEditorKit$InsertContentAction
+javax/swing/text/DefaultEditorKit$InsertTabAction
+javax/swing/text/DefaultEditorKit$NextVisualPositionAction
+javax/swing/text/DefaultEditorKit$NextWordAction
+javax/swing/text/DefaultEditorKit$PageAction
+javax/swing/text/DefaultEditorKit$PasteAction
+javax/swing/text/DefaultEditorKit$PreviousWordAction
+javax/swing/text/DefaultEditorKit$ReadOnlyAction
+javax/swing/text/DefaultEditorKit$SelectAllAction
+javax/swing/text/DefaultEditorKit$SelectLineAction
+javax/swing/text/DefaultEditorKit$SelectParagraphAction
+javax/swing/text/DefaultEditorKit$SelectWordAction
+javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction
+javax/swing/text/DefaultEditorKit$UnselectAction
+javax/swing/text/DefaultEditorKit$VerticalPageAction
+javax/swing/text/DefaultEditorKit$WritableAction
+javax/swing/text/DefaultHighlighter
+javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
+javax/swing/text/DefaultHighlighter$SafeDamager
+javax/swing/text/Document
+javax/swing/text/EditorKit
+javax/swing/text/Element
+javax/swing/text/FieldView
+javax/swing/text/GapContent
+javax/swing/text/GapContent$InsertUndo
+javax/swing/text/GapContent$MarkData
+javax/swing/text/GapContent$MarkVector
+javax/swing/text/GapContent$StickyPosition
+javax/swing/text/GapVector
+javax/swing/text/Highlighter
+javax/swing/text/Highlighter$Highlight
+javax/swing/text/Highlighter$HighlightPainter
javax/swing/text/JTextComponent
-javax/swing/Scrollable
-javax/swing/JLayeredPane
-javax/swing/JRootPane$1
-javax/swing/ArrayTable
-javax/swing/JInternalFrame
-javax/swing/JRootPane$RootLayout
-javax/swing/BufferStrategyPaintManager
-javax/swing/RepaintManager$PaintManager
-javax/swing/plaf/metal/MetalRootPaneUI
-javax/swing/plaf/basic/BasicRootPaneUI
-javax/swing/plaf/RootPaneUI
-javax/swing/plaf/basic/BasicRootPaneUI$RootPaneInputMap
-javax/swing/plaf/ComponentInputMapUIResource
-javax/swing/ComponentInputMap
-javax/swing/InputMap
-javax/swing/plaf/InputMapUIResource
-javax/swing/KeyStroke
-java/awt/VKCollection
-sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
-javax/swing/plaf/basic/LazyActionMap
-javax/swing/plaf/ActionMapUIResource
-javax/swing/ActionMap
-javax/swing/plaf/metal/MetalLabelUI
-javax/swing/plaf/basic/BasicLabelUI
-javax/swing/plaf/LabelUI
-javax/swing/plaf/metal/DefaultMetalTheme$FontDelegate$1
-java/util/Hashtable$ValueCollection
-java/util/Collections$SynchronizedCollection
-javax/swing/plaf/basic/BasicHTML
-sun/awt/AppContext$PostShutdownEventRunnable
-sun/awt/AWTAutoShutdown$1
-sun/awt/NullComponentPeer
-java/awt/GraphicsCallback$PaintCallback
-java/awt/GraphicsCallback
-sun/awt/SunGraphicsCallback
-java/util/jar/Manifest
-java/io/ByteArrayInputStream
-java/util/jar/Attributes
-java/util/jar/Manifest$FastInputStream
-sun/nio/cs/UTF_8
-sun/nio/cs/UTF_8$Decoder
-sun/nio/cs/Surrogate$Generator
-java/util/jar/Attributes$Name
-sun/misc/ASCIICaseInsensitiveComparator
-java/util/jar/JarVerifier
-java/io/ByteArrayOutputStream
-sun/misc/ExtensionDependency
-java/lang/Package
-sun/security/util/ManifestEntryVerifier
-java/security/Provider
-java/security/Provider$ServiceKey
-java/security/Provider$EngineDescription
-java/security/Security
-java/security/Security$1
-sun/misc/FloatingDecimal
-sun/misc/FloatingDecimal$1
-java/util/regex/Pattern
-java/util/regex/Pattern$Node
-java/util/regex/Pattern$LastNode
-java/util/regex/Pattern$GroupHead
-java/util/regex/Pattern$GroupTail
-java/util/regex/Pattern$BitClass
-java/util/regex/Pattern$BmpCharProperty
-java/util/regex/Pattern$CharProperty
-java/util/regex/Pattern$Ques
-java/util/regex/Pattern$BranchConn
-java/util/regex/Pattern$Branch
-java/util/regex/Pattern$5
-java/util/regex/Pattern$CharPropertyNames
-java/util/regex/Pattern$CharPropertyNames$1
-java/util/regex/Pattern$CharPropertyNames$CharPropertyFactory
-java/util/regex/Pattern$CharPropertyNames$2
-java/util/regex/Pattern$CharPropertyNames$5
-java/util/regex/Pattern$CharPropertyNames$3
-java/util/regex/Pattern$CharPropertyNames$6
-java/util/regex/Pattern$CharPropertyNames$CloneableProperty
-java/util/regex/Pattern$CharPropertyNames$4
-java/util/regex/Pattern$CharPropertyNames$7
-java/util/regex/Pattern$CharPropertyNames$8
-java/util/regex/Pattern$CharPropertyNames$9
-java/util/regex/Pattern$CharPropertyNames$10
-java/util/regex/Pattern$CharPropertyNames$11
-java/util/regex/Pattern$CharPropertyNames$12
-java/util/regex/Pattern$CharPropertyNames$13
-java/util/regex/Pattern$CharPropertyNames$14
-java/util/regex/Pattern$CharPropertyNames$15
-java/util/regex/Pattern$CharPropertyNames$16
-java/util/regex/Pattern$CharPropertyNames$17
-java/util/regex/Pattern$CharPropertyNames$18
-java/util/regex/Pattern$CharPropertyNames$19
-java/util/regex/Pattern$CharPropertyNames$20
-java/util/regex/Pattern$CharPropertyNames$21
-java/util/regex/Pattern$Ctype
-java/util/regex/Pattern$Curly
-java/util/regex/Pattern$6
-java/util/regex/Pattern$Slice
-java/util/regex/Pattern$Begin
-java/util/regex/Pattern$First
-java/util/regex/Pattern$Start
-java/util/regex/Pattern$TreeInfo
-java/lang/StrictMath
-sun/security/provider/NativePRNG
-sun/misc/BASE64Decoder
-sun/misc/CharacterDecoder
-sun/security/util/SignatureFileVerifier
-java/awt/event/KeyAdapter
-java/lang/NumberFormatException
-java/lang/IllegalArgumentException
-java/io/FileWriter
-java/net/Authenticator
-java/net/MalformedURLException
-javax/swing/text/Element
-javax/swing/text/Document
+javax/swing/text/JTextComponent$1
+javax/swing/text/JTextComponent$DefaultKeymap
+javax/swing/text/JTextComponent$KeymapActionMap
+javax/swing/text/JTextComponent$KeymapWrapper
+javax/swing/text/JTextComponent$MutableCaretEvent
+javax/swing/text/Keymap
+javax/swing/text/LayeredHighlighter
+javax/swing/text/LayeredHighlighter$LayerPainter
+javax/swing/text/MutableAttributeSet
javax/swing/text/PlainDocument
-javax/swing/text/AbstractDocument
-javax/swing/text/GapContent
-javax/swing/text/AbstractDocument$Content
-javax/swing/text/GapVector
-javax/swing/text/GapContent$MarkVector
-javax/swing/text/GapContent$MarkData
-javax/swing/text/StyleContext
-javax/swing/text/AbstractDocument$AttributeContext
+javax/swing/text/PlainView
+javax/swing/text/Position
+javax/swing/text/Position$Bias
+javax/swing/text/Segment
+javax/swing/text/SegmentCache
+javax/swing/text/SegmentCache$CachedSegment
+javax/swing/text/SimpleAttributeSet
+javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
+javax/swing/text/Style
javax/swing/text/StyleConstants
javax/swing/text/StyleConstants$CharacterConstants
-javax/swing/text/AttributeSet$CharacterAttribute
+javax/swing/text/StyleConstants$ColorConstants
javax/swing/text/StyleConstants$FontConstants
-javax/swing/text/AttributeSet$FontAttribute
-javax/swing/text/StyleConstants$ColorConstants
-javax/swing/text/AttributeSet$ColorAttribute
javax/swing/text/StyleConstants$ParagraphConstants
-javax/swing/text/AttributeSet$ParagraphAttribute
+javax/swing/text/StyleContext
javax/swing/text/StyleContext$FontKey
-javax/swing/text/SimpleAttributeSet
-javax/swing/text/MutableAttributeSet
-javax/swing/text/AttributeSet
-javax/swing/text/SimpleAttributeSet$EmptyAttributeSet
+javax/swing/text/StyleContext$KeyEnumeration
javax/swing/text/StyleContext$NamedStyle
-javax/swing/text/Style
javax/swing/text/StyleContext$SmallAttributeSet
-javax/swing/text/AbstractDocument$BidiRootElement
-javax/swing/text/AbstractDocument$BranchElement
-javax/swing/text/AbstractDocument$AbstractElement
+javax/swing/text/TabExpander
+javax/swing/text/TextAction
+javax/swing/text/Utilities
+javax/swing/text/View
+javax/swing/text/ViewFactory
+javax/swing/tree/AbstractLayoutCache
+javax/swing/tree/AbstractLayoutCache$NodeDimensions
+javax/swing/tree/DefaultMutableTreeNode
+javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
+javax/swing/tree/DefaultTreeCellEditor
+javax/swing/tree/DefaultTreeCellEditor$1
+javax/swing/tree/DefaultTreeCellEditor$DefaultTextField
+javax/swing/tree/DefaultTreeCellEditor$EditorContainer
+javax/swing/tree/DefaultTreeCellRenderer
+javax/swing/tree/DefaultTreeModel
+javax/swing/tree/DefaultTreeSelectionModel
+javax/swing/tree/MutableTreeNode
+javax/swing/tree/PathPlaceHolder
+javax/swing/tree/RowMapper
+javax/swing/tree/TreeCellEditor
+javax/swing/tree/TreeCellRenderer
+javax/swing/tree/TreeModel
javax/swing/tree/TreeNode
-javax/swing/text/AbstractDocument$1
-javax/swing/text/AbstractDocument$BidiElement
-javax/swing/text/AbstractDocument$LeafElement
-javax/swing/text/GapContent$StickyPosition
-javax/swing/text/Position
-javax/swing/text/StyleContext$KeyEnumeration
-javax/swing/text/GapContent$InsertUndo
+javax/swing/tree/TreePath
+javax/swing/tree/TreeSelectionModel
+javax/swing/tree/VariableHeightLayoutCache
+javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
javax/swing/undo/AbstractUndoableEdit
-javax/swing/undo/UndoableEdit
-javax/swing/text/AbstractDocument$DefaultDocumentEvent
-javax/swing/event/DocumentEvent
javax/swing/undo/CompoundEdit
-javax/swing/event/DocumentEvent$EventType
-javax/swing/text/Segment
-java/text/CharacterIterator
-javax/swing/text/Utilities
-javax/swing/text/SegmentCache
-javax/swing/text/SegmentCache$CachedSegment
-javax/swing/event/UndoableEditEvent
-javax/swing/text/AbstractDocument$ElementEdit
-javax/swing/event/DocumentEvent$ElementChange
-javax/swing/JMenu
-javax/swing/MenuElement
-javax/swing/JMenuItem
-javax/swing/AbstractButton
-java/awt/ItemSelectable
-javax/swing/event/MenuListener
-javax/swing/JCheckBoxMenuItem
-javax/swing/Icon
-javax/swing/JButton
-java/net/URLClassLoader$2
-javax/swing/ImageIcon
-javax/swing/ImageIcon$1
-java/awt/MediaTracker
-sun/misc/SoftCache$ValueCell
-sun/awt/image/URLImageSource
-sun/awt/image/InputStreamImageSource
+javax/swing/undo/UndoableEdit
+javax/xml/parsers/DocumentBuilder
+javax/xml/parsers/DocumentBuilderFactory
+javax/xml/parsers/FactoryFinder
+javax/xml/parsers/FactoryFinder$1
+javax/xml/parsers/ParserConfigurationException
+javax/xml/parsers/SecuritySupport
+javax/xml/parsers/SecuritySupport$2
+javax/xml/parsers/SecuritySupport$5
+org/w3c/dom/Attr
+org/w3c/dom/CDATASection
+org/w3c/dom/CharacterData
+org/w3c/dom/Comment
+org/w3c/dom/DOMException
+org/w3c/dom/Document
+org/w3c/dom/DocumentFragment
+org/w3c/dom/DocumentType
+org/w3c/dom/Element
+org/w3c/dom/Entity
+org/w3c/dom/EntityReference
+org/w3c/dom/NamedNodeMap
+org/w3c/dom/Node
+org/w3c/dom/NodeList
+org/w3c/dom/Notation
+org/w3c/dom/ProcessingInstruction
+org/w3c/dom/Text
+org/w3c/dom/events/DocumentEvent
+org/w3c/dom/events/Event
+org/w3c/dom/events/EventException
+org/w3c/dom/events/EventTarget
+org/w3c/dom/events/MutationEvent
+org/w3c/dom/ranges/DocumentRange
+org/w3c/dom/ranges/Range
+org/w3c/dom/traversal/DocumentTraversal
+org/w3c/dom/traversal/NodeIterator
+org/w3c/dom/traversal/TreeWalker
+org/xml/sax/AttributeList
+org/xml/sax/ContentHandler
+org/xml/sax/DTDHandler
+org/xml/sax/EntityResolver
+org/xml/sax/ErrorHandler
+org/xml/sax/InputSource
+org/xml/sax/Locator
+org/xml/sax/SAXException
+org/xml/sax/SAXNotRecognizedException
+org/xml/sax/SAXNotSupportedException
+org/xml/sax/SAXParseException
+org/xml/sax/helpers/DefaultHandler
+sun/awt/AWTAccessor
+sun/awt/AWTAccessor$AWTEventAccessor
+sun/awt/AWTAccessor$ClientPropertyKeyAccessor
+sun/awt/AWTAccessor$ComponentAccessor
+sun/awt/AWTAccessor$ContainerAccessor
+sun/awt/AWTAccessor$CursorAccessor
+sun/awt/AWTAccessor$DefaultKeyboardFocusManagerAccessor
+sun/awt/AWTAccessor$EventQueueAccessor
+sun/awt/AWTAccessor$FrameAccessor
+sun/awt/AWTAccessor$InputEventAccessor
+sun/awt/AWTAccessor$InvocationEventAccessor
+sun/awt/AWTAccessor$KeyEventAccessor
+sun/awt/AWTAccessor$KeyboardFocusManagerAccessor
+sun/awt/AWTAccessor$SequencedEventAccessor
+sun/awt/AWTAccessor$ToolkitAccessor
+sun/awt/AWTAccessor$WindowAccessor
+sun/awt/AWTAutoShutdown
+sun/awt/AWTAutoShutdown$1
+sun/awt/AppContext
+sun/awt/AppContext$1
+sun/awt/AppContext$2
+sun/awt/AppContext$3
+sun/awt/AppContext$6
+sun/awt/AppContext$GetAppContextLock
+sun/awt/AppContext$PostShutdownEventRunnable
+sun/awt/AppContext$State
+sun/awt/CausedFocusEvent
+sun/awt/CausedFocusEvent$Cause
+sun/awt/ComponentFactory
+sun/awt/ConstrainableGraphics
+sun/awt/DisplayChangedListener
+sun/awt/EmbeddedFrame
+sun/awt/EventQueueDelegate
+sun/awt/EventQueueItem
+sun/awt/ExtendedKeyCodes
+sun/awt/FontConfiguration
+sun/awt/FontConfiguration$2
+sun/awt/FontDescriptor
+sun/awt/GlobalCursorManager
+sun/awt/GlobalCursorManager$NativeUpdater
+sun/awt/HeadlessToolkit
+sun/awt/InputMethodSupport
+sun/awt/KeyboardFocusManagerPeerImpl
+sun/awt/KeyboardFocusManagerPeerProvider
+sun/awt/LightweightFrame
+sun/awt/ModalExclude
+sun/awt/ModalityListener
+sun/awt/MostRecentKeyValue
+sun/awt/NativeLibLoader
+sun/awt/NativeLibLoader$1
+sun/awt/NullComponentPeer
+sun/awt/OSInfo
+sun/awt/OSInfo$1
+sun/awt/OSInfo$OSType
+sun/awt/OSInfo$WindowsVersion
+sun/awt/PaintEventDispatcher
+sun/awt/PeerEvent
+sun/awt/PlatformFont
+sun/awt/PostEventQueue
+sun/awt/RepaintArea
+sun/awt/RequestFocusController
+sun/awt/SubRegionShowable
+sun/awt/SunDisplayChanger
+sun/awt/SunGraphicsCallback
+sun/awt/SunHints
+sun/awt/SunHints$Key
+sun/awt/SunHints$LCDContrastKey
+sun/awt/SunHints$Value
+sun/awt/SunToolkit
+sun/awt/SunToolkit$ModalityListenerList
+sun/awt/Symbol
+sun/awt/Symbol$Encoder
+sun/awt/TimedWindowEvent
+sun/awt/Win32FontManager
+sun/awt/Win32FontManager$1
+sun/awt/Win32FontManager$2
+sun/awt/Win32GraphicsConfig
+sun/awt/Win32GraphicsDevice
+sun/awt/Win32GraphicsEnvironment
+sun/awt/WindowClosingListener
+sun/awt/WindowClosingSupport
+sun/awt/dnd/SunDragSourceContextPeer
+sun/awt/dnd/SunDropTargetEvent
+sun/awt/event/IgnorePaintEvent
+sun/awt/geom/PathConsumer2D
+sun/awt/im/ExecutableInputMethodManager
+sun/awt/im/ExecutableInputMethodManager$3
+sun/awt/im/InputContext
+sun/awt/im/InputMethodAdapter
+sun/awt/im/InputMethodContext
+sun/awt/im/InputMethodLocator
+sun/awt/im/InputMethodManager
+sun/awt/im/InputMethodWindow
+sun/awt/image/BufImgSurfaceData
+sun/awt/image/BufImgSurfaceData$ICMColorData
+sun/awt/image/BufImgSurfaceManager
+sun/awt/image/BufImgVolatileSurfaceManager
+sun/awt/image/BufferedImageDevice
+sun/awt/image/BufferedImageGraphicsConfig
+sun/awt/image/ByteComponentRaster
+sun/awt/image/ByteInterleavedRaster
+sun/awt/image/BytePackedRaster
+sun/awt/image/FetcherInfo
+sun/awt/image/GifFrame
+sun/awt/image/GifImageDecoder
+sun/awt/image/ImageConsumerQueue
+sun/awt/image/ImageDecoder
+sun/awt/image/ImageDecoder$1
sun/awt/image/ImageFetchable
-sun/awt/image/ToolkitImage
-sun/awt/image/NativeLibLoader
-java/awt/ImageMediaEntry
-java/awt/MediaEntry
+sun/awt/image/ImageFetcher
+sun/awt/image/ImageFetcher$1
sun/awt/image/ImageRepresentation
-java/awt/image/ImageConsumer
sun/awt/image/ImageWatched
sun/awt/image/ImageWatched$Link
sun/awt/image/ImageWatched$WeakLink
-sun/awt/image/ImageConsumerQueue
-sun/awt/image/ImageFetcher
-sun/awt/image/FetcherInfo
-sun/awt/image/ImageFetcher$1
-sun/awt/image/GifImageDecoder
-sun/awt/image/ImageDecoder
-sun/awt/image/GifFrame
-java/awt/image/Raster
-java/awt/image/DataBufferByte
-java/awt/image/DataBuffer
-java/awt/image/PixelInterleavedSampleModel
-java/awt/image/ComponentSampleModel
-java/awt/image/SampleModel
-sun/awt/image/ByteInterleavedRaster
-sun/awt/image/ByteComponentRaster
+sun/awt/image/InputStreamImageSource
+sun/awt/image/IntegerComponentRaster
+sun/awt/image/IntegerInterleavedRaster
+sun/awt/image/NativeLibLoader
+sun/awt/image/NativeLibLoader$1
+sun/awt/image/OffScreenImage
+sun/awt/image/PNGFilterInputStream
+sun/awt/image/PNGImageDecoder
+sun/awt/image/PixelConverter
+sun/awt/image/PixelConverter$Argb
+sun/awt/image/PixelConverter$ArgbBm
+sun/awt/image/PixelConverter$ArgbPre
+sun/awt/image/PixelConverter$Bgrx
+sun/awt/image/PixelConverter$ByteGray
+sun/awt/image/PixelConverter$Rgba
+sun/awt/image/PixelConverter$RgbaPre
+sun/awt/image/PixelConverter$Rgbx
+sun/awt/image/PixelConverter$Ushort4444Argb
+sun/awt/image/PixelConverter$Ushort555Rgb
+sun/awt/image/PixelConverter$Ushort555Rgbx
+sun/awt/image/PixelConverter$Ushort565Rgb
+sun/awt/image/PixelConverter$UshortGray
+sun/awt/image/PixelConverter$Xbgr
+sun/awt/image/PixelConverter$Xrgb
+sun/awt/image/SunVolatileImage
sun/awt/image/SunWritableRaster
-java/awt/image/WritableRaster
-java/awt/image/BufferedImage
-java/awt/image/WritableRenderedImage
-java/awt/image/RenderedImage
-sun/awt/image/IntegerComponentRaster
-sun/awt/image/BytePackedRaster
-java/awt/Canvas
+sun/awt/image/SunWritableRaster$DataStealer
+sun/awt/image/SurfaceManager
+sun/awt/image/SurfaceManager$FlushableCacheData
+sun/awt/image/SurfaceManager$ImageAccessor
+sun/awt/image/SurfaceManager$ProxiedGraphicsConfig
+sun/awt/image/ToolkitImage
+sun/awt/image/URLImageSource
+sun/awt/image/VolatileSurfaceManager
+sun/awt/resources/awt
+sun/awt/util/IdentityArrayList
+sun/awt/windows/ThemeReader
+sun/awt/windows/WCanvasPeer
+sun/awt/windows/WColor
+sun/awt/windows/WComponentPeer
+sun/awt/windows/WComponentPeer$2
+sun/awt/windows/WDesktopProperties
+sun/awt/windows/WDesktopProperties$WinPlaySound
+sun/awt/windows/WFontConfiguration
+sun/awt/windows/WFontPeer
+sun/awt/windows/WFramePeer
+sun/awt/windows/WGlobalCursorManager
+sun/awt/windows/WInputMethod
+sun/awt/windows/WInputMethodDescriptor
+sun/awt/windows/WKeyboardFocusManagerPeer
+sun/awt/windows/WLabelPeer
+sun/awt/windows/WObjectPeer
+sun/awt/windows/WPanelPeer
+sun/awt/windows/WToolkit
+sun/awt/windows/WToolkit$1
+sun/awt/windows/WToolkit$2
+sun/awt/windows/WToolkit$3
+sun/awt/windows/WToolkit$3$1
+sun/awt/windows/WToolkit$ToolkitDisposer
+sun/awt/windows/WWindowPeer
+sun/awt/windows/WWindowPeer$ActiveWindowListener
+sun/awt/windows/WWindowPeer$GuiDisposedListener
+sun/awt/windows/WingDings
+sun/awt/windows/WingDings$Encoder
+sun/dc/DuctusRenderingEngine
+sun/dc/path/PathConsumer
+sun/dc/pr/PathDasher
+sun/dc/pr/PathDasher$1
+sun/dc/pr/PathStroker
+sun/dc/pr/PathStroker$1
+sun/font/AttributeValues
+sun/font/CMap
+sun/font/CMap$CMapFormat4
+sun/font/CMap$NullCMapClass
+sun/font/CharToGlyphMapper
+sun/font/CompositeFont
+sun/font/CompositeFontDescriptor
+sun/font/CompositeGlyphMapper
+sun/font/CompositeStrike
+sun/font/CoreMetrics
+sun/font/EAttribute
+sun/font/FileFont
+sun/font/FileFontStrike
+sun/font/Font2D
+sun/font/Font2DHandle
+sun/font/FontAccess
sun/font/FontDesignMetrics
+sun/font/FontDesignMetrics$KeyReference
+sun/font/FontDesignMetrics$MetricsKey
+sun/font/FontFamily
+sun/font/FontLineMetrics
+sun/font/FontManager
+sun/font/FontManagerFactory
+sun/font/FontManagerFactory$1
+sun/font/FontManagerForSGE
+sun/font/FontManagerNativeLibrary
+sun/font/FontManagerNativeLibrary$1
+sun/font/FontScaler
+sun/font/FontStrike
sun/font/FontStrikeDesc
-sun/font/CompositeStrike
sun/font/FontStrikeDisposer
-sun/font/StrikeCache$SoftDisposerRef
+sun/font/FontUtilities
+sun/font/FontUtilities$1
+sun/font/GlyphList
+sun/font/PhysicalFont
+sun/font/PhysicalStrike
+sun/font/StandardGlyphVector
+sun/font/StandardGlyphVector$GlyphStrike
+sun/font/StrikeCache
+sun/font/StrikeCache$1
sun/font/StrikeCache$DisposableStrike
-sun/font/TrueTypeFont$TTDisposerRecord
+sun/font/StrikeCache$SoftDisposerRef
+sun/font/StrikeMetrics
+sun/font/SunFontManager
+sun/font/SunFontManager$1
+sun/font/SunFontManager$11
+sun/font/SunFontManager$12
+sun/font/SunFontManager$2
+sun/font/SunFontManager$3
+sun/font/SunFontManager$FamilyDescription
+sun/font/SunFontManager$FontRegistrationInfo
+sun/font/SunFontManager$T1Filter
+sun/font/SunFontManager$TTFilter
+sun/font/T2KFontScaler
+sun/font/T2KFontScaler$1
+sun/font/TrueTypeFont
sun/font/TrueTypeFont$1
-java/io/RandomAccessFile
+sun/font/TrueTypeFont$DirectoryEntry
+sun/font/TrueTypeFont$TTDisposerRecord
+sun/font/TrueTypeGlyphMapper
+sun/font/Type1Font
+sun/io/Win32ErrorMode
+sun/java2d/DefaultDisposerRecord
+sun/java2d/DestSurfaceProvider
+sun/java2d/Disposer
+sun/java2d/Disposer$1
+sun/java2d/Disposer$2
+sun/java2d/Disposer$PollDisposable
+sun/java2d/DisposerRecord
+sun/java2d/DisposerTarget
+sun/java2d/FontSupport
+sun/java2d/InvalidPipeException
+sun/java2d/NullSurfaceData
+sun/java2d/ScreenUpdateManager
+sun/java2d/StateTrackable
+sun/java2d/StateTrackable$State
+sun/java2d/StateTrackableDelegate
+sun/java2d/StateTrackableDelegate$2
+sun/java2d/StateTracker
+sun/java2d/StateTracker$1
+sun/java2d/StateTracker$2
+sun/java2d/SunGraphics2D
+sun/java2d/SunGraphicsEnvironment
+sun/java2d/SunGraphicsEnvironment$1
+sun/java2d/Surface
+sun/java2d/SurfaceData
+sun/java2d/SurfaceData$PixelToPgramLoopConverter
+sun/java2d/SurfaceData$PixelToShapeLoopConverter
+sun/java2d/SurfaceDataProxy
+sun/java2d/SurfaceDataProxy$1
+sun/java2d/SurfaceManagerFactory
+sun/java2d/WindowsSurfaceManagerFactory
+sun/java2d/cmm/ProfileActivator
+sun/java2d/cmm/ProfileDeferralInfo
+sun/java2d/cmm/ProfileDeferralMgr
+sun/java2d/d3d/D3DContext$D3DContextCaps
+sun/java2d/d3d/D3DGraphicsConfig
+sun/java2d/d3d/D3DGraphicsDevice
+sun/java2d/d3d/D3DGraphicsDevice$1
+sun/java2d/d3d/D3DGraphicsDevice$1Result
+sun/java2d/d3d/D3DRenderQueue
+sun/java2d/d3d/D3DRenderQueue$1
+sun/java2d/d3d/D3DScreenUpdateManager
+sun/java2d/d3d/D3DScreenUpdateManager$1
+sun/java2d/d3d/D3DScreenUpdateManager$1$1
+sun/java2d/d3d/D3DSurfaceData
+sun/java2d/d3d/D3DSurfaceData$D3DWindowSurfaceData
+sun/java2d/loops/Blit
+sun/java2d/loops/BlitBg
+sun/java2d/loops/CompositeType
+sun/java2d/loops/CustomComponent
+sun/java2d/loops/DrawGlyphList
+sun/java2d/loops/DrawGlyphListAA
+sun/java2d/loops/DrawGlyphListLCD
+sun/java2d/loops/DrawLine
+sun/java2d/loops/DrawParallelogram
+sun/java2d/loops/DrawPath
+sun/java2d/loops/DrawPolygons
+sun/java2d/loops/DrawRect
+sun/java2d/loops/FillParallelogram
+sun/java2d/loops/FillPath
+sun/java2d/loops/FillRect
+sun/java2d/loops/FillSpans
+sun/java2d/loops/FontInfo
+sun/java2d/loops/GeneralRenderer
+sun/java2d/loops/GraphicsPrimitive
+sun/java2d/loops/GraphicsPrimitiveMgr
+sun/java2d/loops/GraphicsPrimitiveMgr$1
+sun/java2d/loops/GraphicsPrimitiveMgr$2
+sun/java2d/loops/GraphicsPrimitiveMgr$PrimitiveSpec
+sun/java2d/loops/GraphicsPrimitiveProxy
+sun/java2d/loops/MaskBlit
+sun/java2d/loops/MaskFill
+sun/java2d/loops/RenderCache
+sun/java2d/loops/RenderCache$Entry
+sun/java2d/loops/RenderLoops
+sun/java2d/loops/ScaledBlit
+sun/java2d/loops/SurfaceType
+sun/java2d/loops/TransformHelper
+sun/java2d/loops/XORComposite
+sun/java2d/opengl/OGLGraphicsConfig
+sun/java2d/opengl/WGLGraphicsConfig
+sun/java2d/pipe/AAShapePipe
+sun/java2d/pipe/AATextRenderer
+sun/java2d/pipe/AlphaColorPipe
+sun/java2d/pipe/AlphaPaintPipe
+sun/java2d/pipe/CompositePipe
+sun/java2d/pipe/DrawImage
+sun/java2d/pipe/DrawImagePipe
+sun/java2d/pipe/GeneralCompositePipe
+sun/java2d/pipe/GlyphListLoopPipe
+sun/java2d/pipe/GlyphListPipe
+sun/java2d/pipe/LCDTextRenderer
+sun/java2d/pipe/LoopBasedPipe
+sun/java2d/pipe/LoopPipe
+sun/java2d/pipe/NullPipe
+sun/java2d/pipe/OutlineTextRenderer
+sun/java2d/pipe/ParallelogramPipe
+sun/java2d/pipe/PixelDrawPipe
+sun/java2d/pipe/PixelFillPipe
+sun/java2d/pipe/PixelToParallelogramConverter
+sun/java2d/pipe/PixelToShapeConverter
+sun/java2d/pipe/Region
+sun/java2d/pipe/Region$ImmutableRegion
+sun/java2d/pipe/RegionIterator
+sun/java2d/pipe/RenderBuffer
+sun/java2d/pipe/RenderQueue
+sun/java2d/pipe/RenderingEngine
+sun/java2d/pipe/RenderingEngine$1
+sun/java2d/pipe/ShapeDrawPipe
+sun/java2d/pipe/ShapeSpanIterator
+sun/java2d/pipe/SolidTextRenderer
+sun/java2d/pipe/SpanClipRenderer
+sun/java2d/pipe/SpanIterator
+sun/java2d/pipe/SpanShapeRenderer
+sun/java2d/pipe/SpanShapeRenderer$Composite
+sun/java2d/pipe/TextPipe
+sun/java2d/pipe/TextRenderer
+sun/java2d/pipe/ValidatePipe
+sun/java2d/pipe/hw/AccelGraphicsConfig
+sun/java2d/pipe/hw/AccelSurface
+sun/java2d/pipe/hw/BufferedContextProvider
+sun/java2d/pipe/hw/ContextCapabilities
+sun/java2d/windows/GDIBlitLoops
+sun/java2d/windows/GDIRenderer
+sun/java2d/windows/GDIWindowSurfaceData
+sun/java2d/windows/WindowsFlags
+sun/java2d/windows/WindowsFlags$1
+sun/launcher/LauncherHelper
+sun/launcher/LauncherHelper$FXHelper
+sun/misc/ASCIICaseInsensitiveComparator
+sun/misc/Cleaner
+sun/misc/CompoundEnumeration
+sun/misc/ExtensionDependency
+sun/misc/FDBigInteger
+sun/misc/FileURLMapper
+sun/misc/FloatingDecimal
+sun/misc/FloatingDecimal$1
+sun/misc/FloatingDecimal$ASCIIToBinaryBuffer
+sun/misc/FloatingDecimal$ASCIIToBinaryConverter
+sun/misc/FloatingDecimal$BinaryToASCIIBuffer
+sun/misc/FloatingDecimal$BinaryToASCIIConverter
+sun/misc/FloatingDecimal$ExceptionalBinaryToASCIIBuffer
+sun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer
+sun/misc/IOUtils
+sun/misc/JarIndex
+sun/misc/JavaAWTAccess
+sun/misc/JavaIOFileDescriptorAccess
+sun/misc/JavaLangAccess
+sun/misc/JavaNetAccess
+sun/misc/JavaNioAccess
+sun/misc/JavaSecurityAccess
+sun/misc/JavaSecurityProtectionDomainAccess
+sun/misc/JavaUtilJarAccess
+sun/misc/JavaUtilZipFileAccess
+sun/misc/Launcher
+sun/misc/Launcher$AppClassLoader
+sun/misc/Launcher$AppClassLoader$1
+sun/misc/Launcher$BootClassPathHolder
+sun/misc/Launcher$BootClassPathHolder$1
+sun/misc/Launcher$ExtClassLoader
+sun/misc/Launcher$ExtClassLoader$1
+sun/misc/Launcher$Factory
+sun/misc/MetaIndex
+sun/misc/NativeSignalHandler
+sun/misc/OSEnvironment
+sun/misc/Perf
+sun/misc/Perf$GetPerfAction
+sun/misc/PerfCounter
+sun/misc/PerfCounter$CoreCounters
+sun/misc/PerfCounter$WindowsClientCounters
+sun/misc/PerformanceLogger
+sun/misc/PerformanceLogger$TimeData
+sun/misc/PostVMInitHook
+sun/misc/Resource
+sun/misc/SharedSecrets
+sun/misc/Signal
+sun/misc/SignalHandler
+sun/misc/SoftCache
+sun/misc/SoftCache$ValueCell
+sun/misc/URLClassPath
+sun/misc/URLClassPath$1
+sun/misc/URLClassPath$2
+sun/misc/URLClassPath$3
+sun/misc/URLClassPath$FileLoader
+sun/misc/URLClassPath$JarLoader
+sun/misc/URLClassPath$JarLoader$1
+sun/misc/URLClassPath$JarLoader$2
+sun/misc/URLClassPath$Loader
+sun/misc/Unsafe
+sun/misc/VM
+sun/misc/Version
+sun/net/DefaultProgressMeteringPolicy
+sun/net/InetAddressCachePolicy
+sun/net/InetAddressCachePolicy$1
+sun/net/InetAddressCachePolicy$2
+sun/net/NetHooks
+sun/net/NetProperties
+sun/net/NetProperties$1
+sun/net/ProgressMeteringPolicy
+sun/net/ProgressMonitor
+sun/net/ResourceManager
+sun/net/spi/DefaultProxySelector
+sun/net/spi/DefaultProxySelector$1
+sun/net/spi/DefaultProxySelector$3
+sun/net/spi/DefaultProxySelector$NonProxyInfo
+sun/net/spi/nameservice/NameService
+sun/net/util/IPAddressUtil
+sun/net/util/URLUtil
+sun/net/www/MessageHeader
+sun/net/www/MimeEntry
+sun/net/www/MimeTable
+sun/net/www/MimeTable$1
+sun/net/www/MimeTable$DefaultInstanceHolder
+sun/net/www/MimeTable$DefaultInstanceHolder$1
+sun/net/www/ParseUtil
+sun/net/www/URLConnection
+sun/net/www/protocol/file/FileURLConnection
+sun/net/www/protocol/file/Handler
+sun/net/www/protocol/http/Handler
+sun/net/www/protocol/jar/Handler
+sun/net/www/protocol/jar/JarFileFactory
+sun/net/www/protocol/jar/JarURLConnection
+sun/net/www/protocol/jar/JarURLConnection$JarURLInputStream
+sun/net/www/protocol/jar/URLJarFile
+sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController
+sun/net/www/protocol/jar/URLJarFile$URLJarFileEntry
+sun/nio/ByteBuffered
+sun/nio/ch/DirectBuffer
sun/nio/ch/FileChannelImpl
-java/nio/channels/FileChannel
-java/nio/channels/ByteChannel
-java/nio/channels/ReadableByteChannel
-java/nio/channels/Channel
-java/nio/channels/WritableByteChannel
-java/nio/channels/GatheringByteChannel
-java/nio/channels/ScatteringByteChannel
-java/nio/channels/spi/AbstractInterruptibleChannel
-java/nio/channels/InterruptibleChannel
-sun/nio/ch/Util
+sun/nio/ch/FileDispatcher
+sun/nio/ch/FileDispatcherImpl
+sun/nio/ch/IOStatus
sun/nio/ch/IOUtil
-sun/nio/ch/FileDispatcher
+sun/nio/ch/IOUtil$1
+sun/nio/ch/Interruptible
sun/nio/ch/NativeDispatcher
-sun/nio/ch/Reflect
-java/nio/MappedByteBuffer
-sun/nio/ch/Reflect$1
+sun/nio/ch/NativeThread
sun/nio/ch/NativeThreadSet
-java/nio/channels/spi/AbstractInterruptibleChannel$1
-sun/nio/ch/Interruptible
-sun/nio/ch/NativeThread
-sun/nio/ch/IOStatus
-sun/nio/ch/DirectBuffer
-java/nio/DirectByteBuffer
-java/nio/DirectByteBuffer$Deallocator
-sun/misc/Cleaner
-java/nio/ByteBufferAsIntBufferB
-java/nio/IntBuffer
-sun/font/TrueTypeFont$DirectoryEntry
-java/nio/ByteBufferAsShortBufferB
-java/nio/ShortBuffer
+sun/nio/ch/Util
+sun/nio/ch/Util$1
+sun/nio/ch/Util$BufferCache
+sun/nio/cs/ArrayDecoder
+sun/nio/cs/ArrayEncoder
+sun/nio/cs/FastCharsetProvider
+sun/nio/cs/HistoricallyNamedCharset
+sun/nio/cs/ISO_8859_1
+sun/nio/cs/MS1252
+sun/nio/cs/SingleByte
+sun/nio/cs/SingleByte$Decoder
+sun/nio/cs/SingleByte$Encoder
+sun/nio/cs/StandardCharsets
+sun/nio/cs/StandardCharsets$Aliases
+sun/nio/cs/StandardCharsets$Cache
+sun/nio/cs/StandardCharsets$Classes
+sun/nio/cs/StreamDecoder
+sun/nio/cs/StreamEncoder
+sun/nio/cs/Surrogate
+sun/nio/cs/Surrogate$Parser
+sun/nio/cs/US_ASCII
sun/nio/cs/UTF_16
sun/nio/cs/UTF_16$Decoder
-sun/font/FileFontStrike
-sun/font/TrueTypeGlyphMapper
-sun/font/CMap
-sun/font/CMap$NullCMapClass
-sun/font/CMap$CMapFormat4
-java/nio/ByteBufferAsCharBufferB
-sun/font/FontDesignMetrics$KeyReference
-sun/awt/image/PNGImageDecoder
-sun/awt/image/PNGFilterInputStream
-java/util/zip/InflaterInputStream
-java/util/zip/Inflater
-javax/swing/Popup$HeavyWeightWindow
-sun/awt/ModalExclude
-javax/swing/JWindow
-com/sun/java/swing/plaf/windows/WindowsPopupWindow
-java/awt/Cursor$CursorDisposer
-java/awt/AWTEvent$1
-sun/reflect/UnsafeBooleanFieldAccessorImpl
-java/awt/image/DataBufferInt
-java/awt/image/SinglePixelPackedSampleModel
-sun/awt/image/IntegerInterleavedRaster
-java/util/Date
+sun/nio/cs/UTF_16BE
+sun/nio/cs/UTF_16LE
+sun/nio/cs/UTF_16LE$Decoder
+sun/nio/cs/UTF_16LE$Encoder
+sun/nio/cs/UTF_8
+sun/nio/cs/UTF_8$Decoder
+sun/nio/cs/UTF_8$Encoder
+sun/nio/cs/Unicode
+sun/nio/cs/UnicodeDecoder
+sun/nio/cs/UnicodeEncoder
+sun/print/PrinterGraphicsConfig
+sun/reflect/AccessorGenerator
+sun/reflect/BootstrapConstructorAccessorImpl
+sun/reflect/ByteVector
+sun/reflect/ByteVectorFactory
+sun/reflect/ByteVectorImpl
+sun/reflect/CallerSensitive
+sun/reflect/ClassDefiner
+sun/reflect/ClassDefiner$1
+sun/reflect/ClassFileAssembler
+sun/reflect/ClassFileConstants
+sun/reflect/ConstantPool
+sun/reflect/ConstructorAccessor
+sun/reflect/ConstructorAccessorImpl
+sun/reflect/DelegatingClassLoader
+sun/reflect/DelegatingConstructorAccessorImpl
+sun/reflect/DelegatingMethodAccessorImpl
+sun/reflect/FieldAccessor
+sun/reflect/FieldAccessorImpl
+sun/reflect/Label
+sun/reflect/Label$PatchInfo
+sun/reflect/LangReflectAccess
+sun/reflect/MagicAccessorImpl
+sun/reflect/MethodAccessor
+sun/reflect/MethodAccessorGenerator
+sun/reflect/MethodAccessorGenerator$1
+sun/reflect/MethodAccessorImpl
+sun/reflect/NativeConstructorAccessorImpl
+sun/reflect/NativeMethodAccessorImpl
+sun/reflect/Reflection
+sun/reflect/ReflectionFactory
+sun/reflect/ReflectionFactory$1
+sun/reflect/ReflectionFactory$GetReflectionFactoryAction
+sun/reflect/SerializationConstructorAccessorImpl
+sun/reflect/UTF8
+sun/reflect/UnsafeFieldAccessorFactory
+sun/reflect/UnsafeFieldAccessorImpl
+sun/reflect/UnsafeObjectFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticIntegerFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
+sun/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl
+sun/reflect/UnsafeStaticFieldAccessorImpl
+sun/reflect/annotation/AnnotationType
+sun/reflect/generics/repository/AbstractRepository
+sun/reflect/generics/repository/ClassRepository
+sun/reflect/generics/repository/GenericDeclRepository
+sun/reflect/misc/MethodUtil
+sun/reflect/misc/MethodUtil$1
+sun/reflect/misc/ReflectUtil
+sun/security/action/GetBooleanAction
+sun/security/action/GetIntegerAction
+sun/security/action/GetPropertyAction
+sun/security/jca/GetInstance
+sun/security/jca/GetInstance$Instance
+sun/security/jca/ProviderConfig
+sun/security/jca/ProviderConfig$2
+sun/security/jca/ProviderList
+sun/security/jca/ProviderList$1
+sun/security/jca/ProviderList$2
+sun/security/jca/ProviderList$3
+sun/security/jca/ProviderList$ServiceList
+sun/security/jca/ProviderList$ServiceList$1
+sun/security/jca/Providers
+sun/security/jca/ServiceId
+sun/security/provider/ByteArrayAccess
+sun/security/provider/DSA
+sun/security/provider/DSA$LegacyDSA
+sun/security/provider/DSA$SHA1withDSA
+sun/security/provider/DSAParameters
+sun/security/provider/DSAPublicKey
+sun/security/provider/DigestBase
+sun/security/provider/NativePRNG
+sun/security/provider/NativePRNG$Blocking
+sun/security/provider/NativePRNG$NonBlocking
+sun/security/provider/SHA
+sun/security/provider/Sun
+sun/security/provider/SunEntries
+sun/security/provider/SunEntries$1
+sun/security/util/ByteArrayLexOrder
+sun/security/util/ByteArrayTagOrder
+sun/security/util/Debug
+sun/security/util/DerEncoder
+sun/security/util/DerIndefLenConverter
+sun/security/util/DerInputBuffer
+sun/security/util/DerInputStream
+sun/security/util/DerOutputStream
+sun/security/util/DerValue
+sun/security/util/ManifestEntryVerifier
+sun/security/util/ObjectIdentifier
+sun/security/util/SignatureFileVerifier
+sun/security/x509/AlgorithmId
+sun/security/x509/X509Key
+sun/swing/DefaultLookup
+sun/swing/ImageIconUIResource
+sun/swing/JLightweightFrame
+sun/swing/MenuItemLayoutHelper
+sun/swing/MenuItemLayoutHelper$ColumnAlignment
+sun/swing/MenuItemLayoutHelper$LayoutResult
+sun/swing/MenuItemLayoutHelper$RectSize
+sun/swing/PrintColorUIResource
+sun/swing/StringUIClientPropertyKey
+sun/swing/SwingAccessor
+sun/swing/SwingAccessor$JTextComponentAccessor
+sun/swing/SwingLazyValue
+sun/swing/SwingLazyValue$1
+sun/swing/SwingUtilities2
+sun/swing/SwingUtilities2$2
+sun/swing/SwingUtilities2$AATextInfo
+sun/swing/SwingUtilities2$LSBCacheEntry
+sun/swing/UIAction
+sun/swing/UIClientPropertyKey
+sun/swing/table/DefaultTableCellHeaderRenderer
+sun/swing/table/DefaultTableCellHeaderRenderer$EmptyIcon
+sun/text/ComposedCharIter
+sun/text/IntHashtable
+sun/text/UCompactIntArray
+sun/text/normalizer/CharTrie
+sun/text/normalizer/CharTrie$FriendAgent
+sun/text/normalizer/ICUBinary
+sun/text/normalizer/ICUBinary$Authenticate
+sun/text/normalizer/ICUData
+sun/text/normalizer/IntTrie
+sun/text/normalizer/NormalizerDataReader
+sun/text/normalizer/NormalizerImpl
+sun/text/normalizer/NormalizerImpl$AuxTrieImpl
+sun/text/normalizer/NormalizerImpl$DecomposeArgs
+sun/text/normalizer/NormalizerImpl$FCDTrieImpl
+sun/text/normalizer/NormalizerImpl$NormTrieImpl
+sun/text/normalizer/Trie
+sun/text/normalizer/Trie$DataManipulate
+sun/text/normalizer/UTF16
+sun/text/normalizer/UnicodeMatcher
+sun/text/normalizer/UnicodeSet
+sun/text/resources/CollationData
+sun/text/resources/FormatData
+sun/text/resources/en/FormatData_en
+sun/text/resources/en/FormatData_en_US
+sun/util/CoreResourceBundleControl
+sun/util/PreHashedMap
+sun/util/ResourceBundleEnumeration
+sun/util/calendar/AbstractCalendar
+sun/util/calendar/BaseCalendar
+sun/util/calendar/BaseCalendar$Date
+sun/util/calendar/CalendarDate
sun/util/calendar/CalendarSystem
-sun/awt/image/OffScreenImage
-sun/java2d/SurfaceManagerFactory
+sun/util/calendar/CalendarUtils
sun/util/calendar/Gregorian
-sun/util/calendar/BaseCalendar
-sun/util/calendar/AbstractCalendar
-java/util/TimeZone
-java/lang/InheritableThreadLocal
-sun/awt/image/BufImgSurfaceData
-sun/font/CompositeGlyphMapper
+sun/util/calendar/Gregorian$Date
sun/util/calendar/ZoneInfo
sun/util/calendar/ZoneInfoFile
sun/util/calendar/ZoneInfoFile$1
-sun/java2d/loops/FontInfo
-java/util/TimeZone$1
-sun/util/calendar/Gregorian$Date
-sun/util/calendar/BaseCalendar$Date
-sun/util/calendar/CalendarDate
-sun/util/calendar/CalendarUtils
-java/util/TimeZone$DisplayNames
-sun/util/TimeZoneNameUtility
+sun/util/calendar/ZoneInfoFile$Checksum
+sun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule
+sun/util/locale/BaseLocale
+sun/util/locale/BaseLocale$Cache
+sun/util/locale/BaseLocale$Key
+sun/util/locale/InternalLocaleBuilder
+sun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar
+sun/util/locale/LanguageTag
+sun/util/locale/LocaleObjectCache
+sun/util/locale/LocaleObjectCache$CacheEntry
+sun/util/locale/LocaleUtils
+sun/util/locale/ParseStatus
+sun/util/locale/StringTokenIterator
+sun/util/locale/provider/AuxLocaleProviderAdapter
+sun/util/locale/provider/AuxLocaleProviderAdapter$NullProvider
+sun/util/locale/provider/AvailableLanguageTags
+sun/util/locale/provider/CalendarDataProviderImpl
+sun/util/locale/provider/CalendarDataUtility
+sun/util/locale/provider/CalendarDataUtility$CalendarWeekParameterGetter
+sun/util/locale/provider/CalendarProviderImpl
+sun/util/locale/provider/CollatorProviderImpl
+sun/util/locale/provider/CurrencyNameProviderImpl
+sun/util/locale/provider/DateFormatSymbolsProviderImpl
+sun/util/locale/provider/DecimalFormatSymbolsProviderImpl
+sun/util/locale/provider/JRELocaleProviderAdapter
+sun/util/locale/provider/JRELocaleProviderAdapter$1
+sun/util/locale/provider/LocaleDataMetaInfo
+sun/util/locale/provider/LocaleProviderAdapter
+sun/util/locale/provider/LocaleProviderAdapter$1
+sun/util/locale/provider/LocaleProviderAdapter$Type
+sun/util/locale/provider/LocaleResources
+sun/util/locale/provider/LocaleResources$ResourceReference
+sun/util/locale/provider/LocaleServiceProviderPool
+sun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter
+sun/util/locale/provider/NumberFormatProviderImpl
+sun/util/locale/provider/ResourceBundleBasedAdapter
+sun/util/locale/provider/SPILocaleProviderAdapter
+sun/util/locale/provider/SPILocaleProviderAdapter$1
+sun/util/locale/provider/TimeZoneNameProviderImpl
+sun/util/locale/provider/TimeZoneNameUtility
+sun/util/locale/provider/TimeZoneNameUtility$TimeZoneNameGetter
+sun/util/logging/LoggingProxy
+sun/util/logging/LoggingSupport
+sun/util/logging/LoggingSupport$1
+sun/util/logging/LoggingSupport$2
+sun/util/logging/PlatformLogger
+sun/util/logging/PlatformLogger$1
+sun/util/logging/PlatformLogger$DefaultLoggerProxy
+sun/util/logging/PlatformLogger$JavaLoggerProxy
+sun/util/logging/PlatformLogger$Level
+sun/util/logging/PlatformLogger$LoggerProxy
+sun/util/logging/resources/logging
+sun/util/resources/CalendarData
+sun/util/resources/CurrencyNames
sun/util/resources/LocaleData
sun/util/resources/LocaleData$1
sun/util/resources/LocaleData$LocaleDataResourceBundleControl
-sun/util/LocaleDataMetaInfo
+sun/util/resources/LocaleNamesBundle
+sun/util/resources/OpenListResourceBundle
+sun/util/resources/ParallelListResourceBundle
+sun/util/resources/ParallelListResourceBundle$KeySet
sun/util/resources/TimeZoneNames
sun/util/resources/TimeZoneNamesBundle
-sun/util/resources/OpenListResourceBundle
-java/util/ResourceBundle$BundleReference
-sun/util/resources/TimeZoneNames_en
-java/util/spi/TimeZoneNameProvider
-java/util/spi/LocaleServiceProvider
-sun/util/LocaleServiceProviderPool
-sun/util/LocaleServiceProviderPool$1
-java/util/ServiceLoader
-java/util/ServiceLoader$LazyIterator
-java/util/ServiceLoader$1
-java/util/LinkedHashMap$EntryIterator
-java/net/ServerSocket
-java/net/InetAddress
-java/net/InetAddress$Cache
-java/net/InetAddress$Cache$Type
-java/net/InetAddressImplFactory
-java/net/Inet4AddressImpl
-java/net/InetAddressImpl
-java/net/InetAddress$1
-sun/net/spi/nameservice/NameService
-sun/net/util/IPAddressUtil
-java/util/regex/Matcher
-java/util/regex/MatchResult
-java/util/RandomAccessSubList
-java/util/SubList
-java/util/SubList$1
-java/util/AbstractList$ListItr
-java/net/Inet4Address
-java/net/SocksSocketImpl
-java/net/SocksConsts
-java/net/PlainSocketImpl
-java/net/SocketImpl
-java/net/SocketOptions
-java/net/InetSocketAddress
-java/net/SocketAddress
-java/util/Random
-java/util/concurrent/atomic/AtomicLong
-java/lang/InternalError
-java/io/StringReader
-java/io/FilterReader
-java/lang/reflect/Proxy
-java/lang/reflect/InvocationHandler
-java/lang/NoSuchFieldException
-java/lang/InstantiationException
-java/lang/ArrayIndexOutOfBoundsException
-java/lang/IndexOutOfBoundsException
-javax/swing/JDialog
-java/io/EOFException
-java/util/Vector$1
-javax/swing/filechooser/FileSystemView
-javax/swing/filechooser/FileSystemView$1
-javax/swing/event/SwingPropertyChangeSupport
-javax/swing/filechooser/WindowsFileSystemView
-java/util/zip/ZipFile$1
-java/util/zip/ZipFile$2
-java/util/jar/JarFile$1
-java/util/PropertyResourceBundle
-java/util/ResourceBundle$Control$1
-java/util/Hashtable$EntrySet
-java/util/Collections$SynchronizedSet
-java/lang/IllegalAccessError
-java/text/MessageFormat
-java/text/Format
-java/text/FieldPosition
-java/text/MessageFormat$Field
-java/text/Format$Field
-java/lang/CloneNotSupportedException
-sun/reflect/MethodAccessorGenerator
-sun/reflect/AccessorGenerator
-sun/reflect/ClassFileConstants
-java/lang/Void
-sun/reflect/ByteVectorFactory
-sun/reflect/ByteVectorImpl
-sun/reflect/ByteVector
-sun/reflect/ClassFileAssembler
-sun/reflect/UTF8
-sun/reflect/Label
-sun/reflect/Label$PatchInfo
-sun/reflect/MethodAccessorGenerator$1
-sun/reflect/ClassDefiner
-sun/reflect/ClassDefiner$1
-sun/reflect/BootstrapConstructorAccessorImpl
-java/awt/event/ActionListener
-javax/swing/Timer
-javax/swing/Timer$DoPostEvent
-javax/swing/TimerQueue
-javax/swing/TimerQueue$1
-javax/swing/ToolTipManager
-java/awt/event/MouseAdapter
-javax/swing/ToolTipManager$insideTimerAction
-javax/swing/ToolTipManager$outsideTimerAction
-javax/swing/ToolTipManager$stillInsideTimerAction
-sun/swing/UIAction
-javax/swing/Action
-javax/swing/ToolTipManager$MoveBeforeEnterListener
-java/awt/event/MouseMotionAdapter
-javax/swing/event/CaretListener
-javax/swing/JToolBar
-javax/swing/JSplitPane
-javax/swing/border/Border
-javax/swing/JToggleButton
-javax/swing/border/EmptyBorder
-javax/swing/border/AbstractBorder
-javax/swing/DefaultButtonModel
-javax/swing/ButtonModel
-javax/swing/AbstractButton$Handler
-javax/swing/event/ChangeListener
-java/awt/event/ItemListener
-javax/swing/plaf/metal/MetalButtonUI
-javax/swing/plaf/basic/BasicButtonUI
-javax/swing/plaf/ButtonUI
-javax/swing/plaf/metal/MetalBorders
-javax/swing/plaf/BorderUIResource$CompoundBorderUIResource
-javax/swing/border/CompoundBorder
-javax/swing/plaf/metal/MetalBorders$ButtonBorder
-javax/swing/plaf/basic/BasicBorders$MarginBorder
-javax/swing/plaf/basic/BasicButtonListener
-java/awt/AWTEventMulticaster
-java/awt/event/AdjustmentListener
-java/awt/event/TextListener
-javax/swing/event/AncestorListener
-java/beans/VetoableChangeListener
-javax/swing/ButtonGroup
-javax/swing/JToggleButton$ToggleButtonModel
-javax/swing/plaf/metal/MetalToggleButtonUI
-javax/swing/plaf/basic/BasicToggleButtonUI
-javax/swing/plaf/metal/MetalBorders$ToggleButtonBorder
-java/awt/CardLayout
-javax/swing/Box
-javax/swing/plaf/metal/MetalBorders$TextFieldBorder
-javax/swing/plaf/metal/MetalBorders$Flush3DBorder
-javax/swing/BoxLayout
-javax/swing/JMenuBar
-javax/swing/DefaultSingleSelectionModel
-javax/swing/SingleSelectionModel
-javax/swing/plaf/basic/BasicMenuBarUI
-javax/swing/plaf/MenuBarUI
-javax/swing/plaf/basic/DefaultMenuLayout
-javax/swing/plaf/metal/MetalBorders$MenuBarBorder
-javax/swing/plaf/basic/BasicMenuBarUI$Handler
-javax/swing/KeyboardManager
-javax/swing/event/MenuEvent
-javax/swing/JMenu$MenuChangeListener
-javax/swing/JMenuItem$MenuItemFocusListener
-javax/swing/plaf/basic/BasicMenuUI
-javax/swing/plaf/basic/BasicMenuItemUI
-javax/swing/plaf/MenuItemUI
-javax/swing/plaf/metal/MetalBorders$MenuItemBorder
-javax/swing/plaf/metal/MetalIconFactory
-javax/swing/plaf/metal/MetalIconFactory$MenuArrowIcon
-javax/swing/plaf/basic/BasicMenuUI$Handler
-javax/swing/event/MenuKeyListener
-javax/swing/plaf/basic/BasicMenuItemUI$Handler
-javax/swing/event/MenuDragMouseListener
-javax/swing/event/MouseInputListener
-javax/swing/event/ChangeEvent
-java/awt/event/ContainerEvent
-javax/swing/plaf/metal/MetalIconFactory$MenuItemArrowIcon
-javax/swing/JPopupMenu
-javax/swing/plaf/basic/BasicPopupMenuUI
-javax/swing/plaf/PopupMenuUI
-javax/swing/plaf/basic/BasicLookAndFeel$AWTEventHelper
-java/awt/event/AWTEventListenerProxy
-java/awt/Toolkit$SelectiveAWTEventListener
-java/awt/Toolkit$ToolkitEventMulticaster
-javax/swing/plaf/basic/BasicLookAndFeel$1
-javax/swing/plaf/metal/MetalBorders$PopupMenuBorder
-javax/swing/plaf/basic/BasicPopupMenuUI$BasicPopupMenuListener
-javax/swing/event/PopupMenuListener
-javax/swing/plaf/basic/BasicPopupMenuUI$BasicMenuKeyListener
-javax/swing/plaf/basic/BasicPopupMenuUI$MouseGrabber
-javax/swing/MenuSelectionManager
-javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper
-javax/swing/plaf/basic/BasicPopupMenuUI$MenuKeyboardHelper$1
-java/awt/event/FocusAdapter
-javax/swing/JMenu$WinListener
-java/awt/event/WindowAdapter
-javax/swing/JPopupMenu$Separator
-javax/swing/JSeparator
-javax/swing/plaf/metal/MetalPopupMenuSeparatorUI
-javax/swing/plaf/metal/MetalSeparatorUI
-javax/swing/plaf/basic/BasicSeparatorUI
-javax/swing/plaf/SeparatorUI
-javax/swing/JComboBox
-javax/swing/event/ListDataListener
-javax/swing/event/CaretEvent
-javax/swing/text/TabExpander
-javax/swing/JScrollBar
-java/awt/Adjustable
-javax/swing/event/MouseInputAdapter
-javax/swing/JScrollBar$ModelListener
-javax/swing/DefaultBoundedRangeModel
-javax/swing/BoundedRangeModel
-javax/swing/plaf/metal/MetalScrollBarUI
-javax/swing/plaf/basic/BasicScrollBarUI
-javax/swing/plaf/ScrollBarUI
-javax/swing/plaf/metal/MetalBumps
-javax/swing/plaf/metal/MetalScrollButton
-javax/swing/plaf/basic/BasicArrowButton
-javax/swing/plaf/basic/BasicScrollBarUI$TrackListener
-javax/swing/plaf/basic/BasicScrollBarUI$ArrowButtonListener
-javax/swing/plaf/basic/BasicScrollBarUI$ModelListener
-javax/swing/plaf/metal/MetalScrollBarUI$ScrollBarListener
-javax/swing/plaf/basic/BasicScrollBarUI$PropertyChangeHandler
-javax/swing/plaf/basic/BasicScrollBarUI$Handler
-javax/swing/plaf/basic/BasicScrollBarUI$ScrollListener
-javax/swing/CellRendererPane
-javax/swing/border/MatteBorder
-sun/font/StandardGlyphVector
-java/awt/font/GlyphVector
-sun/font/StandardGlyphVector$GlyphStrike
-sun/font/CoreMetrics
-sun/font/FontLineMetrics
-java/awt/font/LineMetrics
-javax/swing/ComboBoxModel
-javax/swing/ListModel
-javax/swing/ListCellRenderer
-javax/swing/DefaultComboBoxModel
-javax/swing/MutableComboBoxModel
-javax/swing/AbstractListModel
-javax/swing/JComboBox$1
-javax/swing/AncestorNotifier
-javax/swing/plaf/metal/MetalComboBoxUI
-javax/swing/plaf/basic/BasicComboBoxUI
-javax/swing/plaf/ComboBoxUI
-javax/swing/plaf/metal/MetalComboBoxUI$MetalComboBoxLayoutManager
-javax/swing/plaf/basic/BasicComboBoxUI$ComboBoxLayoutManager
-javax/swing/plaf/basic/BasicComboPopup
-javax/swing/plaf/basic/ComboPopup
-javax/swing/plaf/basic/BasicComboPopup$EmptyListModelClass
-javax/swing/border/LineBorder
-javax/swing/plaf/basic/BasicComboPopup$1
-javax/swing/JList
-javax/swing/DropMode
-javax/swing/DefaultListSelectionModel
-javax/swing/ListSelectionModel
-javax/swing/plaf/basic/BasicListUI
-javax/swing/plaf/ListUI
-javax/swing/plaf/basic/BasicListUI$ListTransferHandler
-javax/swing/TransferHandler
-javax/swing/TransferHandler$TransferAction
-javax/swing/DefaultListCellRenderer$UIResource
-javax/swing/DefaultListCellRenderer
-javax/swing/TransferHandler$SwingDropTarget
-java/awt/dnd/DropTargetContext
-java/awt/datatransfer/SystemFlavorMap
-java/awt/datatransfer/FlavorMap
-java/awt/datatransfer/FlavorTable
-java/awt/datatransfer/SystemFlavorMap$1
-java/net/URI
-java/net/URI$Parser
-sun/net/ProgressMonitor
-sun/net/DefaultProgressMeteringPolicy
-sun/net/ProgressMeteringPolicy
-sun/nio/cs/ISO_8859_1
-sun/nio/cs/ISO_8859_1$Decoder
-java/awt/datatransfer/SystemFlavorMap$2
-java/awt/datatransfer/MimeType
-java/io/Externalizable
-java/awt/datatransfer/MimeTypeParameterList
-sun/awt/datatransfer/DataTransferer
-java/awt/datatransfer/DataFlavor
-java/awt/datatransfer/DataFlavor$1
-sun/awt/datatransfer/DataTransferer$CharsetComparator
-sun/awt/datatransfer/DataTransferer$IndexedComparator
-sun/nio/cs/UTF_16BE
-sun/nio/cs/US_ASCII
-java/util/Collections$UnmodifiableMap
-sun/awt/datatransfer/DataTransferer$DataFlavorComparator
-java/rmi/Remote
-sun/awt/datatransfer/DataTransferer$1
-sun/awt/windows/WDataTransferer
-java/lang/Long$LongCache
-java/awt/datatransfer/Transferable
-sun/awt/datatransfer/ToolkitThreadBlockedHandler
-sun/awt/windows/WToolkitThreadBlockedHandler
-sun/awt/Mutex
-javax/swing/TransferHandler$DropHandler
-javax/swing/TransferHandler$TransferSupport
-javax/swing/plaf/basic/BasicListUI$Handler
-javax/swing/event/ListSelectionListener
-javax/swing/plaf/basic/DragRecognitionSupport$BeforeDrag
-javax/swing/plaf/basic/BasicComboPopup$Handler
-javax/swing/JScrollPane
-javax/swing/ScrollPaneConstants
-javax/swing/ScrollPaneLayout$UIResource
-javax/swing/ScrollPaneLayout
-javax/swing/JViewport
-javax/swing/ViewportLayout
-javax/swing/plaf/basic/BasicViewportUI
-javax/swing/plaf/ViewportUI
-javax/swing/JScrollPane$ScrollBar
-javax/swing/JViewport$ViewListener
-java/awt/event/ComponentAdapter
-javax/swing/plaf/metal/MetalScrollPaneUI
-javax/swing/plaf/basic/BasicScrollPaneUI
-javax/swing/plaf/ScrollPaneUI
-javax/swing/plaf/metal/MetalBorders$ScrollPaneBorder
-javax/swing/plaf/basic/BasicScrollPaneUI$Handler
-javax/swing/plaf/metal/MetalScrollPaneUI$1
-javax/swing/plaf/basic/BasicComboBoxRenderer$UIResource
-javax/swing/plaf/basic/BasicComboBoxRenderer
-javax/swing/plaf/metal/MetalComboBoxEditor$UIResource
-javax/swing/plaf/metal/MetalComboBoxEditor
-javax/swing/plaf/basic/BasicComboBoxEditor
-javax/swing/ComboBoxEditor
-javax/swing/plaf/basic/BasicComboBoxEditor$BorderlessTextField
-javax/swing/JTextField$NotifyAction
-javax/swing/text/TextAction
-javax/swing/AbstractAction
-javax/swing/text/JTextComponent$MutableCaretEvent
-javax/swing/plaf/metal/MetalTextFieldUI
-javax/swing/plaf/basic/BasicTextFieldUI
-javax/swing/plaf/basic/BasicTextUI
-javax/swing/text/ViewFactory
-javax/swing/plaf/TextUI
-javax/swing/plaf/basic/BasicTextUI$BasicCursor
-javax/swing/text/DefaultEditorKit
-javax/swing/text/EditorKit
-javax/swing/text/DefaultEditorKit$InsertContentAction
-javax/swing/text/DefaultEditorKit$DeletePrevCharAction
-javax/swing/text/DefaultEditorKit$DeleteNextCharAction
-javax/swing/text/DefaultEditorKit$ReadOnlyAction
-javax/swing/text/DefaultEditorKit$DeleteWordAction
-javax/swing/text/DefaultEditorKit$WritableAction
-javax/swing/text/DefaultEditorKit$CutAction
-javax/swing/text/DefaultEditorKit$CopyAction
-javax/swing/text/DefaultEditorKit$PasteAction
-javax/swing/text/DefaultEditorKit$VerticalPageAction
-javax/swing/text/DefaultEditorKit$PageAction
-javax/swing/text/DefaultEditorKit$InsertBreakAction
-javax/swing/text/DefaultEditorKit$BeepAction
-javax/swing/text/DefaultEditorKit$NextVisualPositionAction
-javax/swing/text/DefaultEditorKit$BeginWordAction
-javax/swing/text/DefaultEditorKit$EndWordAction
-javax/swing/text/DefaultEditorKit$PreviousWordAction
-javax/swing/text/DefaultEditorKit$NextWordAction
-javax/swing/text/DefaultEditorKit$BeginLineAction
-javax/swing/text/DefaultEditorKit$EndLineAction
-javax/swing/text/DefaultEditorKit$BeginParagraphAction
-javax/swing/text/DefaultEditorKit$EndParagraphAction
-javax/swing/text/DefaultEditorKit$BeginAction
-javax/swing/text/DefaultEditorKit$EndAction
-javax/swing/text/DefaultEditorKit$DefaultKeyTypedAction
-javax/swing/text/DefaultEditorKit$InsertTabAction
-javax/swing/text/DefaultEditorKit$SelectWordAction
-javax/swing/text/DefaultEditorKit$SelectLineAction
-javax/swing/text/DefaultEditorKit$SelectParagraphAction
-javax/swing/text/DefaultEditorKit$SelectAllAction
-javax/swing/text/DefaultEditorKit$UnselectAction
-javax/swing/text/DefaultEditorKit$ToggleComponentOrientationAction
-javax/swing/text/DefaultEditorKit$DumpModelAction
-javax/swing/plaf/basic/BasicTextUI$TextTransferHandler
-javax/swing/text/Position$Bias
-javax/swing/plaf/basic/BasicTextUI$RootView
-javax/swing/text/View
-javax/swing/plaf/basic/BasicTextUI$UpdateHandler
-javax/swing/event/DocumentListener
-javax/swing/plaf/basic/BasicTextUI$DragListener
-javax/swing/plaf/basic/BasicComboBoxEditor$UIResource
-javax/swing/plaf/basic/BasicTextUI$BasicCaret
-javax/swing/text/DefaultCaret
-javax/swing/text/Caret
-javax/swing/text/DefaultCaret$Handler
-java/awt/datatransfer/ClipboardOwner
-javax/swing/plaf/basic/BasicTextUI$BasicHighlighter
-javax/swing/text/DefaultHighlighter
-javax/swing/text/LayeredHighlighter
-javax/swing/text/Highlighter
-javax/swing/text/Highlighter$Highlight
-javax/swing/text/DefaultHighlighter$DefaultHighlightPainter
-javax/swing/text/LayeredHighlighter$LayerPainter
-javax/swing/text/Highlighter$HighlightPainter
-javax/swing/text/DefaultHighlighter$SafeDamager
-javax/swing/text/FieldView
-javax/swing/text/PlainView
-javax/swing/text/JTextComponent$DefaultKeymap
-javax/swing/text/Keymap
-javax/swing/text/JTextComponent$KeymapWrapper
-javax/swing/text/JTextComponent$KeymapActionMap
-javax/swing/plaf/basic/BasicTextUI$FocusAction
-javax/swing/plaf/basic/BasicTextUI$TextActionWrapper
-javax/swing/JTextArea
-javax/swing/JEditorPane
-javax/swing/JTextField$ScrollRepainter
-javax/swing/plaf/metal/MetalComboBoxEditor$1
-javax/swing/plaf/metal/MetalComboBoxEditor$EditorBorder
-javax/swing/plaf/metal/MetalComboBoxUI$MetalPropertyChangeListener
-javax/swing/plaf/basic/BasicComboBoxUI$PropertyChangeHandler
-javax/swing/plaf/basic/BasicComboBoxUI$Handler
-javax/swing/plaf/metal/MetalComboBoxButton
-javax/swing/plaf/metal/MetalComboBoxIcon
-javax/swing/plaf/metal/MetalComboBoxButton$1
-javax/swing/plaf/basic/BasicComboBoxUI$DefaultKeySelectionManager
-javax/swing/JComboBox$KeySelectionManager
-javax/swing/JToolBar$DefaultToolBarLayout
-javax/swing/plaf/metal/MetalToolBarUI
-javax/swing/plaf/basic/BasicToolBarUI
-javax/swing/plaf/ToolBarUI
-javax/swing/plaf/metal/MetalBorders$ToolBarBorder
-javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
-javax/swing/plaf/metal/MetalBorders$RolloverButtonBorder
-javax/swing/plaf/metal/MetalBorders$RolloverMarginBorder
-javax/swing/plaf/basic/BasicBorders$RadioButtonBorder
-javax/swing/plaf/basic/BasicBorders$ButtonBorder
-javax/swing/plaf/basic/BasicBorders$RolloverMarginBorder
-javax/swing/plaf/metal/MetalToolBarUI$MetalDockingListener
-javax/swing/plaf/basic/BasicToolBarUI$DockingListener
-javax/swing/plaf/basic/BasicToolBarUI$Handler
-javax/swing/border/EtchedBorder
-javax/swing/JToolBar$Separator
-javax/swing/plaf/basic/BasicToolBarSeparatorUI
-sun/font/FontDesignMetrics$MetricsKey
-java/applet/Applet
-java/awt/Panel
-com/sun/awt/AWTUtilities
-javax/swing/KeyboardManager$ComponentKeyStrokePair
-sun/awt/im/InputMethodContext
-java/awt/im/spi/InputMethodContext
-sun/awt/im/InputContext
-sun/awt/windows/WInputMethod
-sun/awt/im/InputMethodAdapter
-java/awt/im/spi/InputMethod
-javax/swing/SizeRequirements
-javax/swing/plaf/basic/BasicGraphicsUtils
-java/awt/event/AdjustmentEvent
-java/awt/MenuBar
-java/awt/Window$1DisposeAction
-java/io/StringWriter
-java/io/UnsupportedEncodingException
-java/lang/StringCoding$StringEncoder
-java/net/UnknownHostException
-java/net/Socket
-java/nio/channels/SocketChannel
-java/nio/channels/spi/AbstractSelectableChannel
-java/nio/channels/SelectableChannel
-java/net/SocketException
-java/net/SocketImplFactory
-java/net/Proxy
-java/net/SocksSocketImpl$5
-java/net/ProxySelector
-sun/net/spi/DefaultProxySelector
-sun/net/spi/DefaultProxySelector$1
-sun/net/NetProperties
-sun/net/NetProperties$1
-sun/net/spi/DefaultProxySelector$NonProxyInfo
-java/util/regex/ASCII
-java/util/regex/Pattern$GroupCurly
-java/net/Inet6Address
-java/net/Proxy$Type
-java/net/SocketTimeoutException
-java/io/InterruptedIOException
-javax/swing/UnsupportedLookAndFeelException
-java/lang/UnsatisfiedLinkError
-javax/swing/Box$Filler
-javax/swing/JComponent$2
-sun/net/www/MimeTable
-java/net/FileNameMap
-sun/net/www/MimeTable$1
-sun/net/www/MimeEntry
-java/net/URLConnection$1
-java/text/SimpleDateFormat
-java/text/DateFormat
-java/text/DateFormat$Field
-java/util/Calendar
-java/util/GregorianCalendar
-sun/util/resources/CalendarData
-sun/util/resources/LocaleNamesBundle
-sun/util/resources/CalendarData_en
-java/text/DateFormatSymbols
-java/text/spi/DateFormatSymbolsProvider
-sun/text/resources/FormatData
-sun/text/resources/FormatData_en
-sun/text/resources/FormatData_en_US
-java/text/NumberFormat
-java/text/spi/NumberFormatProvider
-java/text/DecimalFormatSymbols
-java/text/spi/DecimalFormatSymbolsProvider
-java/util/Currency
-java/util/Currency$1
-java/util/spi/CurrencyNameProvider
-sun/util/resources/CurrencyNames
-sun/util/resources/CurrencyNames_en_US
-java/text/DecimalFormat
-java/text/DigitList
-java/math/RoundingMode
-java/text/DontCareFieldPosition
-java/text/DontCareFieldPosition$1
-java/text/Format$FieldDelegate
-javax/swing/plaf/BorderUIResource
-javax/swing/BorderFactory
-javax/swing/border/BevelBorder
-javax/swing/plaf/metal/MetalIconFactory$TreeFolderIcon
-javax/swing/plaf/metal/MetalIconFactory$FolderIcon16
-java/util/zip/ZipInputStream
-java/io/PushbackInputStream
-java/util/zip/CRC32
-java/util/zip/Checksum
-java/awt/TrayIcon
-java/lang/Thread$State
-javax/swing/SwingUtilities$SharedOwnerFrame
-javax/swing/JTable
-javax/swing/event/TableModelListener
-javax/swing/event/TableColumnModelListener
-javax/swing/event/CellEditorListener
-javax/swing/event/RowSorterListener
-java/awt/Component$BltSubRegionBufferStrategy
-sun/awt/SubRegionShowable
-java/awt/Component$BltBufferStrategy
-sun/print/PrinterGraphicsConfig
-javax/swing/JRadioButton
-java/lang/ClassFormatError
-sun/java2d/opengl/OGLGraphicsConfig
-java/awt/print/PrinterGraphics
-java/awt/PrintGraphics
-javax/swing/JTabbedPane
-javax/swing/JTabbedPane$ModelListener
-javax/swing/plaf/metal/MetalTabbedPaneUI
-javax/swing/plaf/basic/BasicTabbedPaneUI
-javax/swing/plaf/TabbedPaneUI
-javax/swing/plaf/metal/MetalTabbedPaneUI$TabbedPaneLayout
-javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneLayout
-javax/swing/plaf/basic/BasicTabbedPaneUI$TabbedPaneScrollLayout
-javax/swing/plaf/basic/BasicTabbedPaneUI$Handler
-sun/swing/ImageIconUIResource
-javax/swing/GrayFilter
-java/awt/image/RGBImageFilter
-java/awt/image/ImageFilter
-java/awt/image/FilteredImageSource
-org/w3c/dom/Node
-org/xml/sax/SAXException
-javax/xml/parsers/ParserConfigurationException
-org/xml/sax/EntityResolver
-java/security/NoSuchAlgorithmException
-java/security/GeneralSecurityException
-java/util/zip/GZIPInputStream
-java/util/zip/DeflaterOutputStream
-org/xml/sax/InputSource
-javax/xml/parsers/DocumentBuilderFactory
-javax/xml/parsers/FactoryFinder
-javax/xml/parsers/SecuritySupport
-javax/xml/parsers/SecuritySupport$2
-javax/xml/parsers/SecuritySupport$5
-javax/xml/parsers/SecuritySupport$1
-javax/xml/parsers/SecuritySupport$4
-javax/xml/parsers/DocumentBuilder
-org/w3c/dom/Document
-org/xml/sax/helpers/DefaultHandler
-org/xml/sax/DTDHandler
-org/xml/sax/ContentHandler
-org/xml/sax/ErrorHandler
-org/xml/sax/SAXNotSupportedException
-org/xml/sax/Locator
-org/xml/sax/SAXNotRecognizedException
-org/xml/sax/SAXParseException
-org/w3c/dom/NodeList
-org/w3c/dom/events/EventTarget
-org/w3c/dom/traversal/DocumentTraversal
-org/w3c/dom/events/DocumentEvent
-org/w3c/dom/ranges/DocumentRange
-org/w3c/dom/Entity
-org/w3c/dom/Element
-org/w3c/dom/CharacterData
-org/w3c/dom/CDATASection
-org/w3c/dom/Text
-org/xml/sax/AttributeList
-org/w3c/dom/DOMException
-org/w3c/dom/Notation
-org/w3c/dom/DocumentType
-org/w3c/dom/Attr
-org/w3c/dom/EntityReference
-org/w3c/dom/ProcessingInstruction
-org/w3c/dom/Comment
-org/w3c/dom/DocumentFragment
-org/w3c/dom/events/Event
-org/w3c/dom/events/MutationEvent
-org/w3c/dom/traversal/TreeWalker
-org/w3c/dom/ranges/Range
-org/w3c/dom/traversal/NodeIterator
-org/w3c/dom/events/EventException
-org/w3c/dom/NamedNodeMap
-java/lang/StringIndexOutOfBoundsException
-java/awt/GridLayout
-javax/swing/plaf/metal/MetalRadioButtonUI
-javax/swing/plaf/basic/BasicRadioButtonUI
-javax/swing/plaf/basic/BasicBorders
-javax/swing/plaf/metal/MetalIconFactory$RadioButtonIcon
-java/awt/event/ItemEvent
-java/awt/CardLayout$Card
-javax/swing/JCheckBox
-javax/swing/event/ListSelectionEvent
-javax/swing/plaf/metal/MetalCheckBoxUI
-javax/swing/plaf/metal/MetalIconFactory$CheckBoxIcon
-java/lang/ExceptionInInitializerError
-com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
-javax/swing/JProgressBar
-javax/swing/JProgressBar$ModelListener
-javax/swing/plaf/metal/MetalProgressBarUI
-javax/swing/plaf/basic/BasicProgressBarUI
-javax/swing/plaf/ProgressBarUI
-javax/swing/plaf/BorderUIResource$LineBorderUIResource
-javax/swing/plaf/basic/BasicProgressBarUI$Handler
-javax/swing/tree/TreeModel
-javax/swing/table/TableCellRenderer
-javax/swing/table/JTableHeader
-javax/swing/event/TreeExpansionListener
-javax/swing/table/AbstractTableModel
-javax/swing/table/TableModel
-javax/swing/table/DefaultTableCellRenderer
-javax/swing/JTree
-javax/swing/tree/TreeSelectionModel
-javax/swing/tree/DefaultTreeCellRenderer
-javax/swing/tree/TreeCellRenderer
-javax/swing/table/TableCellEditor
-javax/swing/CellEditor
-javax/swing/JToolTip
-javax/swing/table/TableColumn
-javax/swing/table/DefaultTableColumnModel
-javax/swing/table/TableColumnModel
-javax/swing/table/DefaultTableModel
-javax/swing/event/TableModelEvent
-sun/swing/table/DefaultTableCellHeaderRenderer
-javax/swing/plaf/basic/BasicTableHeaderUI
-javax/swing/plaf/TableHeaderUI
-javax/swing/plaf/basic/BasicTableHeaderUI$1
-javax/swing/plaf/basic/BasicTableHeaderUI$MouseInputHandler
-javax/swing/DefaultCellEditor
-javax/swing/tree/TreeCellEditor
-javax/swing/AbstractCellEditor
-javax/swing/plaf/basic/BasicTableUI
-javax/swing/plaf/TableUI
-javax/swing/plaf/basic/BasicTableUI$TableTransferHandler
-javax/swing/plaf/basic/BasicTableUI$Handler
-javax/swing/tree/DefaultTreeSelectionModel
-javax/swing/tree/TreePath
-javax/swing/plaf/metal/MetalTreeUI
-javax/swing/plaf/basic/BasicTreeUI
-javax/swing/plaf/TreeUI
-javax/swing/plaf/basic/BasicTreeUI$Actions
-javax/swing/plaf/basic/BasicTreeUI$TreeTransferHandler
-javax/swing/plaf/metal/MetalTreeUI$LineListener
-javax/swing/plaf/basic/BasicTreeUI$Handler
-javax/swing/event/TreeModelListener
-javax/swing/event/TreeSelectionListener
-javax/swing/tree/VariableHeightLayoutCache
-javax/swing/tree/AbstractLayoutCache
-javax/swing/tree/RowMapper
-javax/swing/plaf/basic/BasicTreeUI$NodeDimensionsHandler
-javax/swing/tree/AbstractLayoutCache$NodeDimensions
-javax/swing/JTree$TreeModelHandler
-javax/swing/tree/VariableHeightLayoutCache$TreeStateNode
-javax/swing/tree/DefaultMutableTreeNode
-javax/swing/tree/MutableTreeNode
-javax/swing/tree/DefaultMutableTreeNode$PreorderEnumeration
-javax/swing/event/TableColumnModelEvent
-java/text/ParseException
-java/text/NumberFormat$Field
-javax/swing/event/UndoableEditListener
-javax/swing/filechooser/FileFilter
-javax/swing/tree/DefaultTreeModel
-javax/swing/tree/DefaultTreeCellEditor
-javax/swing/tree/DefaultTreeCellEditor$1
-javax/swing/tree/DefaultTreeCellEditor$DefaultTextField
-javax/swing/DefaultCellEditor$1
-javax/swing/DefaultCellEditor$EditorDelegate
-javax/swing/tree/DefaultTreeCellEditor$EditorContainer
-javax/swing/JTree$TreeSelectionRedirector
-javax/swing/event/TreeModelEvent
-javax/swing/plaf/metal/MetalSplitPaneUI
-javax/swing/plaf/basic/BasicSplitPaneUI
-javax/swing/plaf/SplitPaneUI
-javax/swing/plaf/basic/BasicSplitPaneDivider
-javax/swing/plaf/basic/BasicBorders$SplitPaneBorder
-javax/swing/plaf/metal/MetalSplitPaneDivider
-javax/swing/plaf/basic/BasicSplitPaneDivider$DividerLayout
-javax/swing/plaf/basic/BasicSplitPaneDivider$MouseHandler
-javax/swing/plaf/basic/BasicBorders$SplitPaneDividerBorder
-javax/swing/plaf/basic/BasicSplitPaneUI$BasicHorizontalLayoutManager
-javax/swing/plaf/basic/BasicSplitPaneUI$1
-javax/swing/plaf/basic/BasicSplitPaneUI$Handler
-javax/swing/plaf/metal/MetalSplitPaneDivider$1
-javax/swing/plaf/basic/BasicSplitPaneDivider$OneTouchActionHandler
-javax/swing/plaf/metal/MetalSplitPaneDivider$2
-javax/swing/border/TitledBorder
-javax/swing/plaf/basic/BasicTextAreaUI
-java/util/Collections$UnmodifiableCollection$1
-java/net/NoRouteToHostException
-java/net/BindException
-javax/swing/tree/PathPlaceHolder
-javax/swing/event/TreeSelectionEvent
-javax/swing/JList$3
-javax/swing/JList$ListSelectionHandler
-javax/swing/JSlider
-javax/swing/JSlider$ModelListener
-javax/swing/plaf/metal/MetalSliderUI
-javax/swing/plaf/basic/BasicSliderUI
-javax/swing/plaf/SliderUI
-javax/swing/plaf/basic/BasicSliderUI$Actions
-javax/swing/plaf/metal/MetalIconFactory$HorizontalSliderThumbIcon
-javax/swing/plaf/metal/MetalIconFactory$VerticalSliderThumbIcon
-javax/swing/plaf/basic/BasicSliderUI$TrackListener
-javax/swing/plaf/basic/BasicSliderUI$Handler
-javax/swing/plaf/basic/BasicSliderUI$ScrollListener
-javax/swing/plaf/metal/MetalSliderUI$MetalPropertyListener
-javax/swing/plaf/basic/BasicSliderUI$PropertyChangeHandler
-sun/java2d/HeadlessGraphicsEnvironment
-java/util/Hashtable$KeySet
-javax/swing/DefaultListModel
-javax/swing/event/ListDataEvent
-javax/sound/sampled/DataLine
-javax/sound/sampled/Line
-javax/sound/sampled/Line$Info
-javax/sound/sampled/DataLine$Info
-javax/sound/sampled/Control$Type
-javax/sound/sampled/FloatControl$Type
-javax/sound/sampled/LineUnavailableException
-javax/sound/sampled/UnsupportedAudioFileException
-javax/swing/JRadioButtonMenuItem
-javax/swing/JMenuItem$AccessibleJMenuItem
-javax/swing/AbstractButton$AccessibleAbstractButton
-javax/accessibility/AccessibleAction
-javax/accessibility/AccessibleValue
-javax/accessibility/AccessibleText
-javax/accessibility/AccessibleExtendedComponent
-javax/accessibility/AccessibleComponent
-javax/swing/JComponent$AccessibleJComponent
-java/awt/Container$AccessibleAWTContainer
-java/awt/Component$AccessibleAWTComponent
-javax/accessibility/AccessibleRelationSet
-javax/accessibility/AccessibleState
-javax/accessibility/AccessibleBundle
-javax/swing/plaf/basic/BasicCheckBoxMenuItemUI
-javax/swing/plaf/metal/MetalIconFactory$CheckBoxMenuItemIcon
-javax/swing/JCheckBoxMenuItem$AccessibleJCheckBoxMenuItem
-javax/swing/plaf/basic/BasicRadioButtonMenuItemUI
-javax/swing/plaf/metal/MetalIconFactory$RadioButtonMenuItemIcon
-sun/awt/image/ImageDecoder$1
-javax/swing/JTabbedPane$Page
-java/net/DatagramSocket
-java/net/MulticastSocket
-java/net/DatagramPacket
-sun/net/InetAddressCachePolicy$1
-sun/security/action/GetIntegerAction
-sun/net/InetAddressCachePolicy$2
-java/net/InetAddress$CacheEntry
-java/net/DatagramSocketImpl
-java/text/Collator
-java/text/spi/CollatorProvider
-sun/text/resources/CollationData
-sun/text/resources/CollationData_en
-sun/util/EmptyListResourceBundle
-java/text/RuleBasedCollator
-java/text/CollationRules
-java/text/RBCollationTables
-java/text/RBTableBuilder
-java/text/RBCollationTables$BuildAPI
-sun/text/IntHashtable
-sun/text/UCompactIntArray
-sun/text/normalizer/NormalizerImpl
-sun/text/normalizer/ICUData
-sun/text/normalizer/NormalizerDataReader
-sun/text/normalizer/ICUBinary$Authenticate
-sun/text/normalizer/ICUBinary
-sun/text/normalizer/NormalizerImpl$FCDTrieImpl
-sun/text/normalizer/Trie$DataManipulate
-sun/text/normalizer/NormalizerImpl$NormTrieImpl
-sun/text/normalizer/NormalizerImpl$AuxTrieImpl
-sun/text/normalizer/IntTrie
-sun/text/normalizer/Trie
-sun/text/normalizer/CharTrie
-sun/text/normalizer/CharTrie$FriendAgent
-sun/text/normalizer/UnicodeSet
-sun/text/normalizer/UnicodeMatcher
-sun/text/normalizer/NormalizerImpl$DecomposeArgs
-java/text/MergeCollation
-java/text/PatternEntry$Parser
-java/text/PatternEntry
-java/text/EntryPair
-sun/text/ComposedCharIter
-sun/text/normalizer/UTF16
-sun/net/www/protocol/http/Handler
-java/security/SignatureException
-java/security/InvalidKeyException
-java/security/KeyException
-java/security/Signature
-java/security/SignatureSpi
-java/io/ObjectInputStream$BlockDataInputStream
-java/io/ObjectInputStream$PeekInputStream
-java/io/ObjectInputStream$HandleTable
-java/io/ObjectInputStream$HandleTable$HandleList
-java/io/ObjectInputStream$ValidationList
-sun/security/provider/DSAPublicKey
-java/security/interfaces/DSAPublicKey
-java/security/interfaces/DSAKey
-java/security/PublicKey
-java/security/Key
-sun/security/x509/X509Key
-java/io/ObjectStreamClass$Caches
-java/io/ObjectStreamClass$WeakClassKey
-java/io/ObjectStreamClass$EntryFuture
-java/io/ObjectStreamClass$2
-sun/security/x509/AlgorithmId
-sun/security/util/DerEncoder
-sun/security/util/BitArray
-sun/reflect/UnsafeQualifiedStaticLongFieldAccessorImpl
-sun/security/util/DerOutputStream
-sun/security/util/DerValue
-java/io/ObjectStreamClass$FieldReflectorKey
-java/io/ObjectStreamClass$FieldReflector
-java/io/ObjectStreamClass$1
-java/io/DataOutputStream
-java/io/ObjectStreamClass$MemberSignature
-java/math/BigInteger
-java/security/interfaces/DSAParams
-java/io/ObjectStreamClass$ClassDataSlot
-java/io/ObjectStreamClass$4
-java/io/ObjectStreamClass$5
-java/security/MessageDigest
-java/security/MessageDigestSpi
-sun/security/jca/GetInstance
-sun/security/util/DerInputStream
-sun/security/jca/Providers
-sun/security/jca/ProviderList
-sun/security/jca/ProviderConfig
-sun/security/jca/ProviderList$3
-sun/security/jca/ProviderList$1
-sun/security/util/DerInputBuffer
-sun/security/jca/ProviderList$2
-sun/security/jca/ProviderConfig$1
-sun/security/util/ObjectIdentifier
-sun/security/jca/ProviderConfig$3
-java/security/Provider$Service
-java/security/Provider$UString
-java/security/AlgorithmParameters
-java/security/AlgorithmParametersSpi
-sun/security/provider/DSAParameters
-sun/security/provider/SHA
-sun/security/provider/DigestBase
-sun/security/jca/GetInstance$Instance
-sun/security/util/ByteArrayLexOrder
-sun/security/util/ByteArrayTagOrder
-java/security/MessageDigest$Delegate
-sun/security/provider/ByteArrayAccess
-sun/security/util/DerIndefLenConverter
-java/io/InvalidClassException
-java/io/ObjectStreamException
-java/io/ObjectInputStream$GetFieldImpl
-java/io/ObjectInputStream$GetField
-java/io/ObjectOutputStream$ReplaceTable
-sun/security/jca/ServiceId
-sun/security/jca/ProviderList$ServiceList
-sun/security/jca/ProviderList$ServiceList$1
-java/security/Signature$Delegate
-java/security/interfaces/DSAPrivateKey
-sun/security/provider/DSA$SHA1withDSA
-sun/security/provider/DSA
-java/security/spec/DSAParameterSpec
-java/math/MutableBigInteger
-java/math/SignedMutableBigInteger
-java/awt/EventQueue$1AWTInvocationLock
-java/awt/LightweightDispatcher$2
-java/awt/Component$FlipBufferStrategy
-javax/swing/JTable$2
-javax/swing/JTable$Resizable3
-javax/swing/JTable$Resizable2
-javax/swing/JTable$5
-javax/swing/event/AncestorEvent
-com/sun/java/swing/plaf/windows/WindowsLookAndFeel
-com/sun/java/swing/plaf/windows/XPStyle
-com/sun/java/swing/plaf/windows/XPStyle$SkinPainter
-sun/swing/CachedPainter
-sun/swing/ImageCache
-com/sun/java/swing/plaf/windows/WindowsRootPaneUI
-com/sun/java/swing/plaf/windows/WindowsRootPaneUI$AltProcessor
-java/awt/SystemColor
-com/sun/java/swing/plaf/windows/WindowsTreeUI$ExpandedIcon
-com/sun/java/swing/plaf/windows/WindowsTreeUI$CollapsedIcon
-com/sun/java/swing/plaf/windows/DesktopProperty
-com/sun/java/swing/plaf/windows/WindowsLookAndFeel$XPColorValue
-com/sun/java/swing/plaf/windows/WindowsLookAndFeel$XPValue
-com/sun/java/swing/plaf/windows/TMSchema$Part
-com/sun/java/swing/plaf/windows/TMSchema$Control
-com/sun/java/swing/plaf/windows/TMSchema$Prop
-com/sun/java/swing/plaf/windows/WindowsLookAndFeel$XPColorValue$XPColorValueKey
-com/sun/java/swing/plaf/windows/XPStyle$Skin
-com/sun/java/swing/plaf/windows/WindowsLookAndFeel$WindowsFontProperty
-com/sun/java/swing/plaf/windows/WindowsLookAndFeel$FontDesktopProperty
-com/sun/java/swing/plaf/windows/WindowsLookAndFeel$TriggerDesktopProperty
-com/sun/java/swing/plaf/windows/DesktopProperty$WeakPCL
-com/sun/java/swing/plaf/windows/WindowsClassicLookAndFeel
-com/sun/java/swing/plaf/windows/TMSchema$State
-com/sun/java/swing/plaf/windows/WindowsLookAndFeel$LazyWindowsIcon
-com/sun/java/swing/plaf/windows/WindowsLookAndFeel$XPBorderValue
-com/sun/java/swing/plaf/windows/WindowsIconFactory
-com/sun/java/swing/plaf/windows/WindowsIconFactory$FrameButtonIcon
-com/sun/java/swing/plaf/windows/WindowsLookAndFeel$XPDLUValue
-com/sun/java/swing/plaf/windows/WindowsLookAndFeel$ActiveWindowsIcon
-sun/swing/SwingUtilities2$2$1
-sun/awt/image/ByteArrayImageSource
-com/sun/java/swing/plaf/windows/resources/windows
-com/sun/java/swing/plaf/windows/WindowsLabelUI
-com/sun/java/swing/plaf/windows/WindowsButtonUI
-sun/awt/windows/ThemeReader
-java/util/EnumMap
-com/sun/java/swing/plaf/windows/TMSchema$TypeEnum
-com/sun/java/swing/plaf/windows/XPStyle$XPEmptyBorder
-com/sun/java/swing/plaf/windows/WindowsToggleButtonUI
-com/sun/java/swing/plaf/windows/XPStyle$XPFillBorder
-com/sun/java/swing/plaf/windows/WindowsMenuBarUI
-javax/swing/plaf/basic/BasicBorders$MenuBarBorder
-com/sun/java/swing/plaf/windows/WindowsMenuBarUI$TakeFocus
-javax/swing/plaf/basic/BasicMenuBarUI$Actions
-com/sun/java/swing/plaf/windows/WindowsMenuUI
-com/sun/java/swing/plaf/windows/WindowsIconFactory$MenuArrowIcon
-javax/swing/plaf/basic/BasicIconFactory
-javax/swing/plaf/basic/BasicIconFactory$MenuItemCheckIcon
-com/sun/java/swing/plaf/windows/WindowsMenuUI$WindowsMouseInputHandler
-javax/swing/plaf/basic/BasicMenuUI$MouseInputHandler
-com/sun/java/swing/plaf/windows/WindowsMenuItemUI
-com/sun/java/swing/plaf/windows/WindowsIconFactory$MenuItemArrowIcon
-com/sun/java/swing/plaf/windows/WindowsIconFactory$MenuItemCheckIcon
-com/sun/java/swing/plaf/windows/WindowsPopupMenuUI
-javax/swing/Popup
-com/sun/java/swing/plaf/windows/WindowsPopupMenuUI$MnemonicListener
-com/sun/java/swing/plaf/windows/WindowsPopupMenuSeparatorUI
-javax/swing/plaf/basic/BasicPopupMenuSeparatorUI
-com/sun/java/swing/plaf/windows/WindowsScrollBarUI
-com/sun/java/swing/plaf/windows/WindowsScrollBarUI$Grid
-com/sun/java/swing/plaf/windows/WindowsScrollBarUI$WindowsArrowButton
-com/sun/java/swing/plaf/windows/WindowsComboBoxUI
-com/sun/java/swing/plaf/windows/WindowsComboBoxUI$1
-com/sun/java/swing/plaf/windows/WindowsComboBoxUI$2
-com/sun/java/swing/plaf/windows/XPStyle$XPStatefulFillBorder
-com/sun/java/swing/plaf/windows/WindowsComboBoxUI$WindowsComboBoxEditor
-com/sun/java/swing/plaf/windows/WindowsTextFieldUI
-com/sun/java/swing/plaf/windows/WindowsTextFieldUI$WindowsFieldCaret
-com/sun/java/swing/plaf/windows/WindowsComboBoxUI$XPComboBoxButton
-com/sun/java/swing/plaf/windows/XPStyle$GlyphButton
-com/sun/java/swing/plaf/windows/WindowsComboBoxUI$3
-com/sun/java/swing/plaf/windows/WindowsToolBarUI
-com/sun/java/swing/plaf/windows/WindowsBorders
-com/sun/java/swing/plaf/windows/WindowsBorders$ToolBarBorder
-com/sun/java/swing/plaf/windows/WindowsToolBarSeparatorUI
-com/sun/java/swing/plaf/windows/WindowsGraphicsUtils
-sun/awt/image/BufferedImageGraphicsConfig
-sun/reflect/SerializationConstructorAccessorImpl
-java/io/ObjectStreamClass$3
-java/io/ObjectOutputStream$BlockDataOutputStream
-java/io/ObjectOutputStream$HandleTable
-java/security/PrivateKey
-java/security/spec/AlgorithmParameterSpec
-sun/applet/Main
-sun/applet/AppletMessageHandler
-sun/applet/resources/MsgAppletViewer
-sun/applet/AppletSecurity
-sun/awt/AWTSecurityManager
-java/lang/SecurityManager
-java/security/DomainCombiner
-sun/applet/AppletSecurity$1
-java/lang/SecurityManager$1
-sun/net/InetAddressCachePolicy
-java/security/SecurityPermission
-java/util/PropertyPermission
-sun/applet/AppletViewer
-java/applet/AppletContext
-java/awt/print/Printable
-sun/security/util/SecurityConstants
-java/awt/AWTPermission
-java/net/NetPermission
-java/net/SocketPermission
-javax/security/auth/AuthPermission
-java/lang/Thread$1
-java/util/logging/LogManager$5
-sun/applet/StdAppletViewerFactory
-sun/applet/AppletViewerFactory
-sun/applet/AppletViewer$UserActionListener
-sun/applet/AppletViewerPanel
-sun/applet/AppletPanel
-java/applet/AppletStub
-sun/misc/MessageUtils
-sun/applet/AppletPanel$10
-java/security/Policy$1
-sun/security/provider/PolicyFile$1
-sun/security/provider/PolicyFile$3
-sun/security/util/PropertyExpander
-sun/security/provider/PolicyParser
-sun/security/util/PolicyUtil
-java/io/StreamTokenizer
-sun/security/provider/PolicyParser$GrantEntry
-sun/security/provider/PolicyParser$PermissionEntry
-sun/security/provider/PolicyFile$PolicyEntry
-sun/security/provider/PolicyParser$ParsingException
-sun/security/provider/PolicyFile$6
-sun/security/provider/PolicyFile$7
-java/net/SocketPermissionCollection
-java/util/PropertyPermissionCollection
-sun/applet/AppletPanel$9
-sun/applet/AppletClassLoader
-sun/applet/AppletThreadGroup
-sun/applet/AppContextCreator
-sun/applet/AppletPanel$1
-sun/awt/AppContext$3
-sun/awt/windows/WMenuBarPeer
-java/awt/peer/MenuBarPeer
-java/awt/peer/MenuComponentPeer
-sun/awt/windows/WMenuPeer
-java/awt/peer/MenuPeer
-java/awt/peer/MenuItemPeer
-sun/awt/windows/WMenuItemPeer
-sun/awt/windows/WMenuItemPeer$2
-sun/awt/windows/awtLocalization
-sun/awt/windows/WFontMetrics
-sun/applet/AppletViewer$1
-sun/applet/AppletViewer$1AppletEventListener
-sun/applet/AppletListener
-sun/applet/AppletEventMulticaster
-sun/awt/CausedFocusEvent
-sun/misc/Queue
-sun/misc/QueueElement
-sun/applet/AppletEvent
-sun/applet/AppletClassLoader$1
-java/net/URLClassLoader$4
-sun/applet/AppletClassLoader$2
-javax/swing/JApplet
-java/lang/ClassLoader$1
-sun/security/provider/PolicyFile$5
-java/security/PermissionsEnumerator
-java/util/Collections$1
-sun/applet/AppletPanel$11
-javax/swing/SwingHeavyWeight
-sun/applet/AppletPanel$8
-sun/applet/AppletPanel$2
-sun/applet/AppletPanel$3
-sun/applet/AppletPanel$6
-java/beans/PropertyVetoException
-javax/swing/BufferStrategyPaintManager$BufferInfo
-javax/swing/BufferStrategyPaintManager$1
-sun/java2d/opengl/WGLGraphicsConfig
-# dabe0c65d3c79925
+sun/util/resources/en/CalendarData_en
+sun/util/resources/en/CurrencyNames_en_US
+sun/util/resources/en/TimeZoneNames_en
+sun/util/spi/CalendarProvider
+# 729efa63b41fc759
--- a/jdk/makefiles/lib/CoreLibraries.gmk Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/makefiles/lib/CoreLibraries.gmk Wed Jul 05 19:22:42 2017 +0200
@@ -115,7 +115,6 @@
LIBJAVA_SRC_DIRS := $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/lang \
$(JDK_TOPDIR)/src/share/native/java/lang \
- $(JDK_TOPDIR)/src/share/native/java/lang/ref \
$(JDK_TOPDIR)/src/share/native/java/lang/reflect \
$(JDK_TOPDIR)/src/share/native/java/io \
$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/java/io \
--- a/jdk/makefiles/lib/ServiceabilityLibraries.gmk Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/makefiles/lib/ServiceabilityLibraries.gmk Wed Jul 05 19:22:42 2017 +0200
@@ -275,19 +275,12 @@
##########################################################################################
BUILD_LIBMANAGEMENT_SRC := $(JDK_TOPDIR)/src/share/native/sun/management \
- $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/management \
- $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/com/sun/management
+ $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/management
BUILD_LIBMANAGEMENT_EXCLUDES :=
BUILD_LIBMANAGEMENT_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/management
-ifneq ($(OPENJDK_TARGET_OS), windows)
- BUILD_LIBMANAGEMENT_EXCLUDES += OperatingSystem_md.c
-else
- BUILD_LIBMANAGEMENT_EXCLUDES += UnixOperatingSystem_md.c
-endif
-
ifneq ($(OPENJDK_TARGET_OS), solaris)
BUILD_LIBMANAGEMENT_EXCLUDES += SolarisOperatingSystem.c
endif
--- a/jdk/makefiles/mapfiles/libjava/mapfile-vers Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/makefiles/mapfiles/libjava/mapfile-vers Wed Jul 05 19:22:42 2017 +0200
@@ -140,7 +140,6 @@
Java_java_lang_Double_doubleToRawLongBits;
Java_java_lang_reflect_Proxy_defineClass0;
Java_java_lang_Shutdown_runAllFinalizers;
- Java_java_lang_ref_Finalizer_invokeFinalizeMethod;
Java_java_lang_Float_intBitsToFloat;
Java_java_lang_Float_floatToRawIntBits;
Java_java_lang_StrictMath_IEEEremainder;
--- a/jdk/makefiles/mapfiles/libjava/reorder-sparc Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/makefiles/mapfiles/libjava/reorder-sparc Wed Jul 05 19:22:42 2017 +0200
@@ -88,7 +88,6 @@
text: .text%throwFileNotFoundException;
text: .text%JNU_NotifyAll;
# Test LoadFrame
-text: .text%Java_java_lang_ref_Finalizer_invokeFinalizeMethod;
text: .text%JNU_CallMethodByName;
text: .text%JNU_CallMethodByNameV;
text: .text%Java_java_io_UnixFileSystem_createDirectory;
--- a/jdk/makefiles/mapfiles/libjava/reorder-sparcv9 Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/makefiles/mapfiles/libjava/reorder-sparcv9 Wed Jul 05 19:22:42 2017 +0200
@@ -78,7 +78,6 @@
text: .text%Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2Ljava_security_AccessControlContext_2;
text: .text%JNU_GetEnv;
text: .text%Java_java_io_UnixFileSystem_checkAccess;
-text: .text%Java_java_lang_ref_Finalizer_invokeFinalizeMethod;
text: .text%Java_java_lang_reflect_Array_newArray;
text: .text%Java_java_lang_Throwable_getStackTraceDepth;
text: .text%Java_java_lang_Throwable_getStackTraceElement;
--- a/jdk/makefiles/mapfiles/libjava/reorder-x86 Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/makefiles/mapfiles/libjava/reorder-x86 Wed Jul 05 19:22:42 2017 +0200
@@ -78,7 +78,6 @@
text: .text%JNU_GetEnv;
text: .text%Java_java_io_UnixFileSystem_checkAccess;
text: .text%Java_sun_reflect_NativeMethodAccessorImpl_invoke0;
-text: .text%Java_java_lang_ref_Finalizer_invokeFinalizeMethod;
text: .text%Java_java_io_FileInputStream_available;
text: .text%Java_java_lang_reflect_Array_newArray;
text: .text%Java_java_lang_Throwable_getStackTraceDepth;
--- a/jdk/makefiles/mapfiles/libmanagement/mapfile-vers Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/makefiles/mapfiles/libmanagement/mapfile-vers Wed Jul 05 19:22:42 2017 +0200
@@ -27,17 +27,17 @@
SUNWprivate_1.1 {
global:
- Java_com_sun_management_UnixOperatingSystem_getCommittedVirtualMemorySize;
- Java_com_sun_management_UnixOperatingSystem_getFreePhysicalMemorySize;
- Java_com_sun_management_UnixOperatingSystem_getFreeSwapSpaceSize;
- Java_com_sun_management_UnixOperatingSystem_getMaxFileDescriptorCount;
- Java_com_sun_management_UnixOperatingSystem_getOpenFileDescriptorCount;
- Java_com_sun_management_UnixOperatingSystem_getProcessCpuLoad;
- Java_com_sun_management_UnixOperatingSystem_getProcessCpuTime;
- Java_com_sun_management_UnixOperatingSystem_getSystemCpuLoad;
- Java_com_sun_management_UnixOperatingSystem_getTotalPhysicalMemorySize;
- Java_com_sun_management_UnixOperatingSystem_getTotalSwapSpaceSize;
- Java_com_sun_management_UnixOperatingSystem_initialize;
+ Java_sun_management_OperatingSystemImpl_getCommittedVirtualMemorySize;
+ Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize;
+ Java_sun_management_OperatingSystemImpl_getFreeSwapSpaceSize;
+ Java_sun_management_OperatingSystemImpl_getMaxFileDescriptorCount;
+ Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount;
+ Java_sun_management_OperatingSystemImpl_getProcessCpuLoad;
+ Java_sun_management_OperatingSystemImpl_getProcessCpuTime;
+ Java_sun_management_OperatingSystemImpl_getSystemCpuLoad;
+ Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize;
+ Java_sun_management_OperatingSystemImpl_getTotalSwapSpaceSize;
+ Java_sun_management_OperatingSystemImpl_initialize;
Java_sun_management_ClassLoadingImpl_setVerboseClass;
Java_sun_management_DiagnosticCommandImpl_executeDiagnosticCommand;
Java_sun_management_DiagnosticCommandImpl_getDiagnosticCommands;
@@ -103,6 +103,7 @@
Java_sun_management_VMManagementImpl_getSafepointCount;
Java_sun_management_VMManagementImpl_getSafepointSyncTime;
Java_sun_management_VMManagementImpl_getStartupTime;
+ Java_sun_management_VMManagementImpl_getUptime0;
Java_sun_management_VMManagementImpl_getTotalApplicationNonStoppedTime;
Java_sun_management_VMManagementImpl_getTotalClassCount;
Java_sun_management_VMManagementImpl_getTotalCompileTime;
--- a/jdk/src/macosx/classes/com/apple/laf/AquaFileChooserUI.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/macosx/classes/com/apple/laf/AquaFileChooserUI.java Wed Jul 05 19:22:42 2017 +0200
@@ -227,7 +227,7 @@
// Exist in basic.properties (though we might want to override)
fileDescriptionText = UIManager.getString("FileChooser.fileDescriptionText");
directoryDescriptionText = UIManager.getString("FileChooser.directoryDescriptionText");
- newFolderErrorText = getString("FileChooser.newFolderErrorText", "Error occured during folder creation");
+ newFolderErrorText = getString("FileChooser.newFolderErrorText", "Error occurred during folder creation");
saveButtonText = UIManager.getString("FileChooser.saveButtonText");
openButtonText = UIManager.getString("FileChooser.openButtonText");
--- a/jdk/src/macosx/classes/com/apple/laf/resources/aqua.properties Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/macosx/classes/com/apple/laf/resources/aqua.properties Wed Jul 05 19:22:42 2017 +0200
@@ -38,7 +38,7 @@
############ FILE CHOOSER STRINGS #############
FileChooser.fileDescription.textAndMnemonic=Generic File
FileChooser.directoryDescription.textAndMnemonic=Directory
-FileChooser.newFolderError.textAndMnemonic=Error occured during folder creation
+FileChooser.newFolderError.textAndMnemonic=Error occurred during folder creation
FileChooser.newFolderErrorSeparator= :
FileChooser.acceptAllFileFilter.textAndMnemonic=All Files
FileChooser.cancelButton.textAndMnemonic=Cancel
--- a/jdk/src/share/classes/com/sun/imageio/plugins/common/StandardMetadataFormatResources.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/com/sun/imageio/plugins/common/StandardMetadataFormatResources.java Wed Jul 05 19:22:42 2017 +0200
@@ -123,7 +123,7 @@
"The vertical position, in millimeters, where the image should be rendered on media " },
{ "HorizontalPixelOffset",
- "The horizonal position, in pixels, where the image should be rendered onto a raster display" },
+ "The horizontal position, in pixels, where the image should be rendered onto a raster display" },
{ "VerticalPixelOffset",
"The vertical position, in pixels, where the image should be rendered onto a raster display" },
--- a/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubBulkRequestHandler.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubBulkRequestHandler.java Wed Jul 05 19:22:42 2017 +0200
@@ -111,7 +111,7 @@
if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(),
"run", "[" + Thread.currentThread() +
- "]:an Snmp error occured during the operation", x);
+ "]:an Snmp error occurred during the operation", x);
}
}
catch(Exception x) {
@@ -119,7 +119,7 @@
if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(),
"run", "[" + Thread.currentThread() +
- "]:a generic error occured during the operation", x);
+ "]:a generic error occurred during the operation", x);
}
}
if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
--- a/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubNextRequestHandler.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubNextRequestHandler.java Wed Jul 05 19:22:42 2017 +0200
@@ -127,7 +127,7 @@
if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(),
"run", "[" + Thread.currentThread() +
- "]:an Snmp error occured during the operation", x);
+ "]:an Snmp error occurred during the operation", x);
}
}
catch(Exception x) {
@@ -135,7 +135,7 @@
if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(),
"run", "[" + Thread.currentThread() +
- "]:a generic error occured during the operation", x);
+ "]:a generic error occurred during the operation", x);
}
}
if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
--- a/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubRequestHandler.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/com/sun/jmx/snmp/daemon/SnmpSubRequestHandler.java Wed Jul 05 19:22:42 2017 +0200
@@ -231,7 +231,7 @@
if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(),
"run", "[" + Thread.currentThread() +
- "]:an Snmp error occured during the operation", x);
+ "]:an Snmp error occurred during the operation", x);
}
}
catch(Exception x) {
@@ -239,7 +239,7 @@
if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpSubRequestHandler.class.getName(),
"run", "[" + Thread.currentThread() +
- "]:a generic error occured during the operation", x);
+ "]:a generic error occurred during the operation", x);
}
}
if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
--- a/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -541,7 +541,7 @@
if (rowSetWriter != null) {
Class<?> c = rowSetWriter.getClass();
if (c != null) {
- Class[] theInterfaces = c.getInterfaces();
+ Class<?>[] theInterfaces = c.getInterfaces();
for (int i = 0; i < theInterfaces.length; i++) {
if ((theInterfaces[i].getName()).indexOf("TransactionalWriter") > 0) {
tXWriter = true;
--- a/jdk/src/share/classes/com/sun/rowset/internal/BaseRow.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/com/sun/rowset/internal/BaseRow.java Wed Jul 05 19:22:42 2017 +0200
@@ -52,6 +52,11 @@
public abstract class BaseRow implements Serializable, Cloneable {
/**
+ * Specify the serialVersionUID
+ */
+private static final long serialVersionUID = 4152013523511412238L;
+
+/**
* The array containing the original values for this <code>BaseRow</code>
* object.
* @serial
@@ -77,7 +82,7 @@
* @param idx the index of the element to return
* @return the <code>Object</code> value at the given index into this
* row's array of original values
- * @throws <code>SQLException</code> if there is an error
+ * @throws SQLException if there is an error
*/
public abstract Object getColumnObject(int idx) throws SQLException;
@@ -90,7 +95,7 @@
* @param idx the index of the element to be set
* @param obj the <code>Object</code> to which the element at index
* <code>idx</code> to be set
- * @throws <code>SQLException</code> if there is an error
+ * @throws SQLException if there is an error
*/
public abstract void setColumnObject(int idx, Object obj) throws SQLException;
}
--- a/jdk/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java Wed Jul 05 19:22:42 2017 +0200
@@ -377,7 +377,7 @@
env.failure("Attempt to launch main class \"" + clname + "\" failed.");
}
} else {
- env.failure("No main class specifed and no current default defined.");
+ env.failure("No main class specified and no current default defined.");
}
} else {
clname = t.nextToken();
@@ -428,7 +428,7 @@
env.failure("Attempt to attach to port \"" + portName + "\" failed.");
}
} else {
- env.failure("No port specifed and no current default defined.");
+ env.failure("No port specified and no current default defined.");
}
} else {
portName = t.nextToken();
--- a/jdk/src/share/classes/com/sun/tools/script/shell/init.js Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/com/sun/tools/script/shell/init.js Wed Jul 05 19:22:42 2017 +0200
@@ -806,7 +806,7 @@
out = arguments[2];
break;
default:
- println("XSL tranform requires 2 or 3 arguments");
+ println("XSL transform requires 2 or 3 arguments");
return;
}
--- a/jdk/src/share/classes/com/sun/tools/script/shell/messages.properties Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/com/sun/tools/script/shell/messages.properties Wed Jul 05 19:22:42 2017 +0200
@@ -36,7 +36,7 @@
script engine for language {0} can not be found
engine.info=\
- Language {0} {1} implemention "{2}" {3}
+ Language {0} {1} implementation "{2}" {3}
encoding.unsupported=\
encoding {0} is not supported
--- a/jdk/src/share/classes/java/awt/GraphicsDevice.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/awt/GraphicsDevice.java Wed Jul 05 19:22:42 2017 +0200
@@ -341,12 +341,11 @@
}
/**
- * Returns the {@code Window} object representing the
+ * Returns the <code>Window</code> object representing the
* full-screen window if the device is in full-screen mode.
*
- * @return the full-screen window, or {@code null} if the device is
- * not in full-screen mode. The {@code Window} object can differ
- * from the object previously set by {@code setFullScreenWindow}.
+ * @return the full-screen window, or <code>null</code> if the device is
+ * not in full-screen mode.
* @see #setFullScreenWindow(Window)
* @since 1.4
*/
--- a/jdk/src/share/classes/java/awt/datatransfer/SystemFlavorMap.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/awt/datatransfer/SystemFlavorMap.java Wed Jul 05 19:22:42 2017 +0200
@@ -40,7 +40,6 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
@@ -1321,16 +1320,16 @@
}
private List<String> getAllNativesForType(String type) {
- List<String> retval = null;
+ Set<String> retval = null;
for (DataFlavor dataFlavor : convertMimeTypeToDataFlavors(type)) {
List<String> natives = getFlavorToNative().get(dataFlavor);
if (natives != null && !natives.isEmpty()) {
if (retval == null) {
- retval = new ArrayList<>();
+ retval = new LinkedHashSet<>();
}
retval.addAll(natives);
}
}
- return retval;
+ return retval == null ? null : new ArrayList<>(retval);
}
}
--- a/jdk/src/share/classes/java/beans/IndexedPropertyDescriptor.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/beans/IndexedPropertyDescriptor.java Wed Jul 05 19:22:42 2017 +0200
@@ -373,12 +373,13 @@
if (params[0] != Integer.TYPE) {
throw new IntrospectionException("non int index to indexed write method");
}
- if (indexedPropertyType != null && indexedPropertyType != params[1]) {
+ if (indexedPropertyType == null || params[1].isAssignableFrom(indexedPropertyType)) {
+ indexedPropertyType = params[1];
+ } else if (!indexedPropertyType.isAssignableFrom(params[1])) {
throw new IntrospectionException(
"type mismatch between indexed read and indexed write methods: "
+ getName());
}
- indexedPropertyType = params[1];
}
Class<?> propertyType = getPropertyType();
if (propertyType != null && (!propertyType.isArray() ||
--- a/jdk/src/share/classes/java/beans/Introspector.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/beans/Introspector.java Wed Jul 05 19:22:42 2017 +0200
@@ -684,8 +684,7 @@
ipd = (IndexedPropertyDescriptor)pd;
if (ipd.getIndexedWriteMethod() != null) {
if (igpd != null) {
- if (igpd.getIndexedPropertyType()
- == ipd.getIndexedPropertyType()) {
+ if (isAssignable(igpd.getIndexedPropertyType(), ipd.getIndexedPropertyType())) {
if (ispd != null) {
ispd = new IndexedPropertyDescriptor(ispd, ipd);
} else {
@@ -703,7 +702,7 @@
} else {
if (pd.getWriteMethod() != null) {
if (gpd != null) {
- if (gpd.getPropertyType() == pd.getPropertyType()) {
+ if (isAssignable(gpd.getPropertyType(), pd.getPropertyType())) {
if (spd != null) {
spd = new PropertyDescriptor(spd, pd);
} else {
@@ -806,6 +805,10 @@
}
}
+ private static boolean isAssignable(Class<?> current, Class<?> candidate) {
+ return current == null ? candidate == null : current.isAssignableFrom(candidate);
+ }
+
/**
* Adds the property descriptor to the indexedproperty descriptor only if the
* types are the same.
--- a/jdk/src/share/classes/java/io/DataInput.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/io/DataInput.java Wed Jul 05 19:22:42 2017 +0200
@@ -444,7 +444,7 @@
* a {@code double} value. It does this
* by first constructing a {@code long}
* value in exactly the manner
- * of the {@code readlong}
+ * of the {@code readLong}
* method, then converting this {@code long}
* value to a {@code double} in exactly
* the manner of the method {@code Double.longBitsToDouble}.
--- a/jdk/src/share/classes/java/io/ObjectOutputStream.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/io/ObjectOutputStream.java Wed Jul 05 19:22:42 2017 +0200
@@ -1248,7 +1248,7 @@
handles.assign(unshared ? null : desc);
Class<?> cl = desc.forClass();
- Class[] ifaces = cl.getInterfaces();
+ Class<?>[] ifaces = cl.getInterfaces();
bout.writeInt(ifaces.length);
for (int i = 0; i < ifaces.length; i++) {
bout.writeUTF(ifaces[i].getName());
--- a/jdk/src/share/classes/java/io/ObjectStreamClass.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/io/ObjectStreamClass.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1746,7 +1746,7 @@
dout.writeUTF("()V");
}
- Constructor[] cons = cl.getDeclaredConstructors();
+ Constructor<?>[] cons = cl.getDeclaredConstructors();
MemberSignature[] consSigs = new MemberSignature[cons.length];
for (int i = 0; i < cons.length; i++) {
consSigs[i] = new MemberSignature(cons[i]);
--- a/jdk/src/share/classes/java/lang/String.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/lang/String.java Wed Jul 05 19:22:42 2017 +0200
@@ -122,14 +122,9 @@
/**
* Class String is special cased within the Serialization Stream Protocol.
*
- * A String instance is written initially into an ObjectOutputStream in the
- * following format:
- * <pre>
- * {@code TC_STRING} (utf String)
- * </pre>
- * The String is written by method {@code DataOutput.writeUTF}.
- * A new handle is generated to refer to all future references to the
- * string instance within the stream.
+ * A String instance is written into an ObjectOutputStream according to
+ * <a href="{@docroot}../platform/serialization/spec/output.html">
+ * Object Serialization Specification, Section 6.2, "Stream Elements"</a>
*/
private static final ObjectStreamField[] serialPersistentFields =
new ObjectStreamField[0];
@@ -2242,6 +2237,11 @@
* expression does not match any part of the input then the resulting array
* has just one element, namely this string.
*
+ * <p> When there is a positive-width match at the beginning of this
+ * string then an empty leading substring is included at the beginning
+ * of the resulting array. A zero-width match at the beginning however
+ * never produces such empty leading substring.
+ *
* <p> The {@code limit} parameter controls the number of times the
* pattern is applied and therefore affects the length of the resulting
* array. If the limit <i>n</i> is greater than zero then the pattern
--- a/jdk/src/share/classes/java/lang/System.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/lang/System.java Wed Jul 05 19:22:42 2017 +0200
@@ -1263,6 +1263,9 @@
public Thread newThreadWithAcc(Runnable target, AccessControlContext acc) {
return new Thread(target, acc);
}
+ public void invokeFinalize(Object o) throws Throwable {
+ o.finalize();
+ }
});
}
}
--- a/jdk/src/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -51,7 +51,7 @@
/* package */ final class InnerClassLambdaMetafactory extends AbstractValidatingLambdaMetafactory {
private static final Unsafe UNSAFE = Unsafe.getUnsafe();
- private static final int CLASSFILE_VERSION = 51;
+ private static final int CLASSFILE_VERSION = 52;
private static final String METHOD_DESCRIPTOR_VOID = Type.getMethodDescriptor(Type.VOID_TYPE);
private static final String JAVA_LANG_OBJECT = "java/lang/Object";
private static final String NAME_CTOR = "<init>";
@@ -465,7 +465,9 @@
convertArgumentTypes(methodType);
// Invoke the method we want to forward to
- visitMethodInsn(invocationOpcode(), implMethodClassName, implMethodName, implMethodDesc);
+ visitMethodInsn(invocationOpcode(), implMethodClassName,
+ implMethodName, implMethodDesc,
+ implDefiningClass.isInterface());
// Convert the return value (if any) and return it
// Note: if adapting from non-void to void, the 'return'
--- a/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Wed Jul 05 19:22:42 2017 +0200
@@ -275,7 +275,7 @@
*/
private void classFilePrologue() {
cw = new ClassWriter(ClassWriter.COMPUTE_MAXS + ClassWriter.COMPUTE_FRAMES);
- cw.visit(Opcodes.V1_6, Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER, className, null, superName, null);
+ cw.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER, className, null, superName, null);
cw.visitSource(sourceFile, null);
String invokerDesc = invokerType.toMethodDescriptorString();
@@ -646,7 +646,8 @@
// invocation
if (member.isMethod()) {
mtype = member.getMethodType().toMethodDescriptorString();
- mv.visitMethodInsn(refKindOpcode(refKind), cname, mname, mtype);
+ mv.visitMethodInsn(refKindOpcode(refKind), cname, mname, mtype,
+ member.getDeclaringClass().isInterface());
} else {
mtype = MethodType.toFieldDescriptorString(member.getFieldType());
mv.visitFieldInsn(refKindOpcode(refKind), cname, mname, mtype);
--- a/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/MethodHandleImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -744,8 +744,11 @@
MethodHandle ginvoker = GuardWithCatch.INVOKES[nargs].bindReceiver(gguard);
return makePairwiseConvert(ginvoker, type, 2);
} else {
+ target = target.asType(type.changeReturnType(Object.class));
MethodHandle gtarget = makeSpreadArguments(target, Object[].class, 0, nargs);
- catcher = catcher.asType(ctype.changeParameterType(0, Throwable.class));
+ MethodType catcherType = ctype.changeParameterType(0, Throwable.class)
+ .changeReturnType(Object.class);
+ catcher = catcher.asType(catcherType);
MethodHandle gcatcher = makeSpreadArguments(catcher, Object[].class, 1, nargs);
GuardWithCatch gguard = new GuardWithCatch(gtarget, exType, gcatcher);
if (gtarget == null || gcatcher == null) throw new InternalError();
--- a/jdk/src/share/classes/java/lang/invoke/MethodType.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/MethodType.java Wed Jul 05 19:22:42 2017 +0200
@@ -32,6 +32,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.Objects;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentHashMap;
import sun.invoke.util.BytecodeDescriptor;
@@ -98,14 +99,26 @@
private @Stable MethodTypeForm form; // erased form, plus cached data about primitives
private @Stable MethodType wrapAlt; // alternative wrapped/unwrapped version
private @Stable Invokers invokers; // cache of handy higher-order adapters
+ private @Stable String methodDescriptor; // cache for toMethodDescriptorString
/**
* Check the given parameters for validity and store them into the final fields.
*/
- private MethodType(Class<?> rtype, Class<?>[] ptypes) {
+ private MethodType(Class<?> rtype, Class<?>[] ptypes, boolean trusted) {
checkRtype(rtype);
checkPtypes(ptypes);
this.rtype = rtype;
+ // defensively copy the array passed in by the user
+ this.ptypes = trusted ? ptypes : Arrays.copyOf(ptypes, ptypes.length);
+ }
+
+ /**
+ * Construct a temporary unchecked instance of MethodType for use only as a key to the intern table.
+ * Does not check the given parameters for validity, and must be discarded after it is used as a searching key.
+ * The parameters are reversed for this constructor, so that is is not accidentally used.
+ */
+ private MethodType(Class<?>[] ptypes, Class<?> rtype) {
+ this.rtype = rtype;
this.ptypes = ptypes;
}
@@ -146,20 +159,21 @@
/*non-public*/ static final int MAX_MH_INVOKER_ARITY = MAX_MH_ARITY-1; // deduct one more for invoker
private static void checkRtype(Class<?> rtype) {
- rtype.equals(rtype); // null check
+ Objects.requireNonNull(rtype);
}
- private static int checkPtype(Class<?> ptype) {
- ptype.getClass(); //NPE
+ private static void checkPtype(Class<?> ptype) {
+ Objects.requireNonNull(ptype);
if (ptype == void.class)
throw newIllegalArgumentException("parameter type cannot be void");
- if (ptype == double.class || ptype == long.class) return 1;
- return 0;
}
/** Return number of extra slots (count of long/double args). */
private static int checkPtypes(Class<?>[] ptypes) {
int slots = 0;
for (Class<?> ptype : ptypes) {
- slots += checkPtype(ptype);
+ checkPtype(ptype);
+ if (ptype == double.class || ptype == long.class) {
+ slots++;
+ }
}
checkSlotCount(ptypes.length + slots);
return slots;
@@ -284,20 +298,16 @@
*/
/*trusted*/ static
MethodType makeImpl(Class<?> rtype, Class<?>[] ptypes, boolean trusted) {
+ MethodType mt = internTable.get(new MethodType(ptypes, rtype));
+ if (mt != null)
+ return mt;
if (ptypes.length == 0) {
ptypes = NO_PTYPES; trusted = true;
}
- MethodType mt1 = new MethodType(rtype, ptypes);
- MethodType mt0 = internTable.get(mt1);
- if (mt0 != null)
- return mt0;
- if (!trusted)
- // defensively copy the array passed in by the user
- mt1 = new MethodType(rtype, ptypes.clone());
+ mt = new MethodType(rtype, ptypes, trusted);
// promote the object to the Real Thing, and reprobe
- MethodTypeForm form = MethodTypeForm.findForm(mt1);
- mt1.form = form;
- return internTable.add(mt1);
+ mt.form = MethodTypeForm.findForm(mt);
+ return internTable.add(mt);
}
private static final MethodType[] objectOnlyTypes = new MethodType[20];
@@ -919,7 +929,12 @@
* @return the bytecode type descriptor representation
*/
public String toMethodDescriptorString() {
- return BytecodeDescriptor.unparse(this);
+ String desc = methodDescriptor;
+ if (desc == null) {
+ desc = BytecodeDescriptor.unparse(this);
+ methodDescriptor = desc;
+ }
+ return desc;
}
/*non-public*/ static String toFieldDescriptorString(Class<?> cls) {
--- a/jdk/src/share/classes/java/lang/invoke/TypeConvertingMethodAdapter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/lang/invoke/TypeConvertingMethodAdapter.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -35,7 +35,7 @@
class TypeConvertingMethodAdapter extends MethodVisitor {
TypeConvertingMethodAdapter(MethodVisitor mv) {
- super(Opcodes.ASM4, mv);
+ super(Opcodes.ASM5, mv);
}
private static final int NUM_WRAPPERS = Wrapper.values().length;
--- a/jdk/src/share/classes/java/lang/ref/Finalizer.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/lang/ref/Finalizer.java Wed Jul 05 19:22:42 2017 +0200
@@ -27,17 +27,14 @@
import java.security.PrivilegedAction;
import java.security.AccessController;
-
+import sun.misc.JavaLangAccess;
+import sun.misc.SharedSecrets;
+import sun.misc.VM;
final class Finalizer extends FinalReference<Object> { /* Package-private; must be in
same package as the Reference
class */
- /* A native method that invokes an arbitrary object's finalize method is
- required since the finalize method is protected
- */
- static native void invokeFinalizeMethod(Object o) throws Throwable;
-
private static ReferenceQueue<Object> queue = new ReferenceQueue<>();
private static Finalizer unfinalized = null;
private static final Object lock = new Object();
@@ -90,7 +87,7 @@
new Finalizer(finalizee);
}
- private void runFinalizer() {
+ private void runFinalizer(JavaLangAccess jla) {
synchronized (this) {
if (hasBeenFinalized()) return;
remove();
@@ -98,7 +95,8 @@
try {
Object finalizee = this.get();
if (finalizee != null && !(finalizee instanceof java.lang.Enum)) {
- invokeFinalizeMethod(finalizee);
+ jla.invokeFinalize(finalizee);
+
/* Clear stack slot containing this variable, to decrease
the chances of false retention with a conservative GC */
finalizee = null;
@@ -141,16 +139,21 @@
/* Called by Runtime.runFinalization() */
static void runFinalization() {
+ if (!VM.isBooted()) {
+ return;
+ }
+
forkSecondaryFinalizer(new Runnable() {
private volatile boolean running;
public void run() {
if (running)
return;
+ final JavaLangAccess jla = SharedSecrets.getJavaLangAccess();
running = true;
for (;;) {
Finalizer f = (Finalizer)queue.poll();
if (f == null) break;
- f.runFinalizer();
+ f.runFinalizer(jla);
}
}
});
@@ -158,11 +161,16 @@
/* Invoked by java.lang.Shutdown */
static void runAllFinalizers() {
+ if (!VM.isBooted()) {
+ return;
+ }
+
forkSecondaryFinalizer(new Runnable() {
private volatile boolean running;
public void run() {
if (running)
return;
+ final JavaLangAccess jla = SharedSecrets.getJavaLangAccess();
running = true;
for (;;) {
Finalizer f;
@@ -171,7 +179,7 @@
if (f == null) break;
unfinalized = f.next;
}
- f.runFinalizer();
+ f.runFinalizer(jla);
}}});
}
@@ -183,13 +191,25 @@
public void run() {
if (running)
return;
+
+ // Finalizer thread starts before System.initializeSystemClass
+ // is called. Wait until JavaLangAccess is available
+ while (!VM.isBooted()) {
+ // delay until VM completes initialization
+ try {
+ VM.awaitBooted();
+ } catch (InterruptedException x) {
+ // ignore and continue
+ }
+ }
+ final JavaLangAccess jla = SharedSecrets.getJavaLangAccess();
running = true;
for (;;) {
try {
Finalizer f = (Finalizer)queue.remove();
- f.runFinalizer();
+ f.runFinalizer(jla);
} catch (InterruptedException x) {
- continue;
+ // ignore and continue
}
}
}
--- a/jdk/src/share/classes/java/lang/reflect/Executable.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/lang/reflect/Executable.java Wed Jul 05 19:22:42 2017 +0200
@@ -240,6 +240,7 @@
* declared or implicitly declared or neither) for the executable
* represented by this object.
*
+ * @since 1.8
* @return The number of formal parameters for the executable this
* object represents
*/
@@ -290,6 +291,7 @@
* have unique names, or names that are legal identifiers in the
* Java programming language (JLS 3.8).
*
+ * @since 1.8
* @throws MalformedParametersException if the class file contains
* a MethodParameters attribute that is improperly formatted.
* @return an array of {@code Parameter} objects representing all
--- a/jdk/src/share/classes/java/lang/reflect/Proxy.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/lang/reflect/Proxy.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -494,9 +494,10 @@
private final int hash;
private final WeakReference<Class<?>>[] refs;
+ @SuppressWarnings("unchecked")
KeyX(Class<?>[] interfaces) {
hash = Arrays.hashCode(interfaces);
- refs = new WeakReference[interfaces.length];
+ refs = (WeakReference<Class<?>>[])new WeakReference<?>[interfaces.length];
for (int i = 0; i < interfaces.length; i++) {
refs[i] = new WeakReference<>(interfaces[i]);
}
--- a/jdk/src/share/classes/java/net/HostPortrange.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/net/HostPortrange.java Wed Jul 05 19:22:42 2017 +0200
@@ -114,7 +114,7 @@
if (hoststr.equals("*")) {
hoststr = "";
} else if (hoststr.startsWith("*.")) {
- hoststr = hoststr.substring(1).toLowerCase(); // leave the '.' ?
+ hoststr = toLowerCase(hoststr.substring(1));
} else {
throw new IllegalArgumentException("invalid host wildcard specification");
}
@@ -147,7 +147,7 @@
hoststr = sb.toString();
} else {
// regular domain name
- hoststr = hoststr.toLowerCase();
+ hoststr = toLowerCase(hoststr);
}
}
}
@@ -161,6 +161,38 @@
}
}
+ static final int CASE_DIFF = 'A' - 'a';
+
+ /**
+ * Convert to lower case, and check that all chars are ascii
+ * alphanumeric, '-' or '.' only.
+ */
+ static String toLowerCase(String s) {
+ int len = s.length();
+ StringBuilder sb = null;
+
+ for (int i=0; i<len; i++) {
+ char c = s.charAt(i);
+ if ((c >= 'a' && c <= 'z') || (c == '.')) {
+ if (sb != null)
+ sb.append(c);
+ } else if ((c >= '0' && c <= '9') || (c == '-')) {
+ if (sb != null)
+ sb.append(c);
+ } else if (c >= 'A' && c <= 'Z') {
+ if (sb == null) {
+ sb = new StringBuilder(len);
+ sb.append(s, 0, i);
+ }
+ sb.append((char)(c - CASE_DIFF));
+ } else {
+ throw new IllegalArgumentException("Invalid characters in hostname");
+ }
+ }
+ return sb == null ? s : sb.toString();
+ }
+
+
public boolean literal() {
return literal;
}
--- a/jdk/src/share/classes/java/net/InetAddress.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/net/InetAddress.java Wed Jul 05 19:22:42 2017 +0200
@@ -1135,7 +1135,7 @@
// see if it is IPv4 address
addr = IPAddressUtil.textToNumericFormatV4(host);
if (addr == null) {
- // see if it is IPv6 address
+ // This is supposed to be an IPv6 literal
// Check if a numeric or string zone id is present
int pos;
if ((pos=host.indexOf ("%")) != -1) {
@@ -1144,7 +1144,9 @@
ifname = host.substring (pos+1);
}
}
- addr = IPAddressUtil.textToNumericFormatV6(host);
+ if ((addr = IPAddressUtil.textToNumericFormatV6(host)) == null && host.contains(":")) {
+ throw new UnknownHostException(host + ": invalid IPv6 address");
+ }
} else if (ipv6Expected) {
// Means an IPv4 litteral between brackets!
throw new UnknownHostException("["+host+"]");
@@ -1162,10 +1164,10 @@
}
return ret;
}
- } else if (ipv6Expected) {
- // We were expecting an IPv6 Litteral, but got something else
- throw new UnknownHostException("["+host+"]");
- }
+ } else if (ipv6Expected) {
+ // We were expecting an IPv6 Litteral, but got something else
+ throw new UnknownHostException("["+host+"]");
+ }
return getAllByName0(host, reqAddr, true);
}
--- a/jdk/src/share/classes/java/net/URLPermission.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/net/URLPermission.java Wed Jul 05 19:22:42 2017 +0200
@@ -426,7 +426,10 @@
this.ssp = url.substring(delim + 1);
if (!ssp.startsWith("//")) {
- this.authority = new Authority(scheme, ssp.toLowerCase());
+ if (!ssp.equals("*")) {
+ throw new IllegalArgumentException("invalid URL string");
+ }
+ this.authority = new Authority(scheme, "*");
return;
}
String authpath = ssp.substring(2);
--- a/jdk/src/share/classes/java/nio/file/TempFileHelper.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/nio/file/TempFileHelper.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -81,7 +81,7 @@
String prefix,
String suffix,
boolean createDirectory,
- FileAttribute[] attrs)
+ FileAttribute<?>[] attrs)
throws IOException
{
if (prefix == null)
@@ -155,7 +155,7 @@
static Path createTempFile(Path dir,
String prefix,
String suffix,
- FileAttribute[] attrs)
+ FileAttribute<?>[] attrs)
throws IOException
{
return create(dir, prefix, suffix, false, attrs);
@@ -167,7 +167,7 @@
*/
static Path createTempDirectory(Path dir,
String prefix,
- FileAttribute[] attrs)
+ FileAttribute<?>[] attrs)
throws IOException
{
return create(dir, prefix, null, true, attrs);
--- a/jdk/src/share/classes/java/time/format/DateTimeParseContext.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/time/format/DateTimeParseContext.java Wed Jul 05 19:22:42 2017 +0200
@@ -369,7 +369,8 @@
Objects.requireNonNull(chrono, "chrono");
currentParsed().chrono = chrono;
if (chronoListeners != null && !chronoListeners.isEmpty()) {
- Consumer[] tmp = new Consumer[1];
+ @SuppressWarnings({"rawtypes", "unchecked"})
+ Consumer<Chronology>[] tmp = new Consumer[1];
Consumer<Chronology>[] listeners = chronoListeners.toArray(tmp);
chronoListeners.clear();
for (Consumer<Chronology> l : listeners) {
--- a/jdk/src/share/classes/java/time/format/Parsed.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/time/format/Parsed.java Wed Jul 05 19:22:42 2017 +0200
@@ -266,14 +266,14 @@
TemporalAccessor resolvedObject = targetField.resolve(fieldValues, this, resolverStyle);
if (resolvedObject != null) {
if (resolvedObject instanceof ChronoZonedDateTime) {
- ChronoZonedDateTime czdt = (ChronoZonedDateTime) resolvedObject;
+ ChronoZonedDateTime<?> czdt = (ChronoZonedDateTime) resolvedObject;
if (zone.equals(czdt.getZone()) == false) {
throw new DateTimeException("ChronoZonedDateTime must use the effective parsed zone: " + zone);
}
resolvedObject = czdt.toLocalDateTime();
}
if (resolvedObject instanceof ChronoLocalDateTime) {
- ChronoLocalDateTime cldt = (ChronoLocalDateTime) resolvedObject;
+ ChronoLocalDateTime<?> cldt = (ChronoLocalDateTime) resolvedObject;
updateCheckConflict(cldt.toLocalTime(), Period.ZERO);
updateCheckConflict(cldt.toLocalDate());
changedCount++;
--- a/jdk/src/share/classes/java/util/Base64.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/util/Base64.java Wed Jul 05 19:22:42 2017 +0200
@@ -138,7 +138,7 @@
if (lineLength <= 0) {
return Encoder.RFC4648;
}
- return new Encoder(false, lineSeparator, lineLength >> 2 << 2);
+ return new Encoder(false, lineSeparator, lineLength >> 2 << 2, true);
}
/**
@@ -192,11 +192,13 @@
private final byte[] newline;
private final int linemax;
private final boolean isURL;
+ private final boolean doPadding;
- private Encoder(boolean isURL, byte[] newline, int linemax) {
+ private Encoder(boolean isURL, byte[] newline, int linemax, boolean doPadding) {
this.isURL = isURL;
this.newline = newline;
this.linemax = linemax;
+ this.doPadding = doPadding;
}
/**
@@ -228,9 +230,22 @@
private static final int MIMELINEMAX = 76;
private static final byte[] CRLF = new byte[] {'\r', '\n'};
- static final Encoder RFC4648 = new Encoder(false, null, -1);
- static final Encoder RFC4648_URLSAFE = new Encoder(true, null, -1);
- static final Encoder RFC2045 = new Encoder(false, CRLF, MIMELINEMAX);
+ static final Encoder RFC4648 = new Encoder(false, null, -1, true);
+ static final Encoder RFC4648_URLSAFE = new Encoder(true, null, -1, true);
+ static final Encoder RFC2045 = new Encoder(false, CRLF, MIMELINEMAX, true);
+
+ private final int outLength(int srclen) {
+ int len = 0;
+ if (doPadding) {
+ len = 4 * ((srclen + 2) / 3);
+ } else {
+ int n = srclen % 3;
+ len = 4 * (srclen / 3) + (n == 0 ? 0 : n + 1);
+ }
+ if (linemax > 0) // line separators
+ len += (len - 1) / linemax * newline.length;
+ return len;
+ }
/**
* Encodes all bytes from the specified byte array into a newly-allocated
@@ -243,9 +258,7 @@
* encoded bytes.
*/
public byte[] encode(byte[] src) {
- int len = 4 * ((src.length + 2) / 3); // dst array size
- if (linemax > 0) // line separators
- len += (len - 1) / linemax * newline.length;
+ int len = outLength(src.length); // dst array size
byte[] dst = new byte[len];
int ret = encode0(src, 0, src.length, dst);
if (ret != dst.length)
@@ -273,10 +286,7 @@
* space for encoding all input bytes.
*/
public int encode(byte[] src, byte[] dst) {
- int len = 4 * ((src.length + 2) / 3); // dst array size
- if (linemax > 0) {
- len += (len - 1) / linemax * newline.length;
- }
+ int len = outLength(src.length); // dst array size
if (dst.length < len)
throw new IllegalArgumentException(
"Output byte array is too small for encoding all input bytes");
@@ -321,9 +331,7 @@
* @return A newly-allocated byte buffer containing the encoded bytes.
*/
public ByteBuffer encode(ByteBuffer buffer) {
- int len = 4 * ((buffer.remaining() + 2) / 3);
- if (linemax > 0)
- len += (len - 1) / linemax * newline.length;
+ int len = outLength(buffer.remaining());
byte[] dst = new byte[len];
int ret = 0;
if (buffer.hasArray()) {
@@ -415,7 +423,25 @@
public OutputStream wrap(OutputStream os) {
Objects.requireNonNull(os);
return new EncOutputStream(os, isURL ? toBase64URL : toBase64,
- newline, linemax);
+ newline, linemax, doPadding);
+ }
+
+ /**
+ * Returns an encoder instance that encodes equivalently to this one,
+ * but without adding any padding character at the end of the encoded
+ * byte data.
+ *
+ * <p> The encoding scheme of this encoder instance is unaffected by
+ * this invocation. The returned encoder instance should be used for
+ * non-padding encoding operation.
+ *
+ * @return an equivalent encoder that encodes without adding any
+ * padding character at the end
+ */
+ public Encoder withoutPadding() {
+ if (!doPadding)
+ return this;
+ return new Encoder(isURL, newline, linemax, false);
}
private int encodeArray(ByteBuffer src, ByteBuffer dst, int bytesOut) {
@@ -476,13 +502,17 @@
da[dp++] = (byte)base64[b0 >> 2];
if (sp == sl) {
da[dp++] = (byte)base64[(b0 << 4) & 0x3f];
- da[dp++] = '=';
- da[dp++] = '=';
+ if (doPadding) {
+ da[dp++] = '=';
+ da[dp++] = '=';
+ }
} else {
int b1 = sa[sp++] & 0xff;
da[dp++] = (byte)base64[(b0 << 4) & 0x3f | (b1 >> 4)];
da[dp++] = (byte)base64[(b1 << 2) & 0x3f];
- da[dp++] = '=';
+ if (doPadding) {
+ da[dp++] = '=';
+ }
}
}
return dp - dp00 + bytesOut;
@@ -548,13 +578,17 @@
dst.put(dp++, (byte)base64[b0 >> 2]);
if (sp == src.limit()) {
dst.put(dp++, (byte)base64[(b0 << 4) & 0x3f]);
- dst.put(dp++, (byte)'=');
- dst.put(dp++, (byte)'=');
+ if (doPadding) {
+ dst.put(dp++, (byte)'=');
+ dst.put(dp++, (byte)'=');
+ }
} else {
int b1 = src.get(sp++) & 0xff;
dst.put(dp++, (byte)base64[(b0 << 4) & 0x3f | (b1 >> 4)]);
dst.put(dp++, (byte)base64[(b1 << 2) & 0x3f]);
- dst.put(dp++, (byte)'=');
+ if (doPadding) {
+ dst.put(dp++, (byte)'=');
+ }
}
}
return dp - dp00 + bytesOut;
@@ -597,13 +631,17 @@
dst[dp++] = (byte)base64[b0 >> 2];
if (sp == end) {
dst[dp++] = (byte)base64[(b0 << 4) & 0x3f];
- dst[dp++] = '=';
- dst[dp++] = '=';
+ if (doPadding) {
+ dst[dp++] = '=';
+ dst[dp++] = '=';
+ }
} else {
int b1 = src[sp++] & 0xff;
dst[dp++] = (byte)base64[(b0 << 4) & 0x3f | (b1 >> 4)];
dst[dp++] = (byte)base64[(b1 << 2) & 0x3f];
- dst[dp++] = '=';
+ if (doPadding) {
+ dst[dp++] = '=';
+ }
}
}
return dp;
@@ -1149,14 +1187,16 @@
private final char[] base64; // byte->base64 mapping
private final byte[] newline; // line separator, if needed
private final int linemax;
+ private final boolean doPadding;// whether or not to pad
private int linepos = 0;
- EncOutputStream(OutputStream os,
- char[] base64, byte[] newline, int linemax) {
+ EncOutputStream(OutputStream os, char[] base64,
+ byte[] newline, int linemax, boolean doPadding) {
super(os);
this.base64 = base64;
this.newline = newline;
this.linemax = linemax;
+ this.doPadding = doPadding;
}
@Override
@@ -1228,14 +1268,18 @@
checkNewline();
out.write(base64[b0 >> 2]);
out.write(base64[(b0 << 4) & 0x3f]);
- out.write('=');
- out.write('=');
+ if (doPadding) {
+ out.write('=');
+ out.write('=');
+ }
} else if (leftover == 2) {
checkNewline();
out.write(base64[b0 >> 2]);
out.write(base64[(b0 << 4) & 0x3f | (b1 >> 4)]);
out.write(base64[(b1 << 2) & 0x3f]);
- out.write('=');
+ if (doPadding) {
+ out.write('=');
+ }
}
leftover = 0;
out.close();
--- a/jdk/src/share/classes/java/util/IdentityHashMap.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/util/IdentityHashMap.java Wed Jul 05 19:22:42 2017 +0200
@@ -1243,7 +1243,7 @@
if (ti >= size) {
throw new ConcurrentModificationException();
}
- a[ti++] = (T) new AbstractMap.SimpleEntry(unmaskNull(key), tab[si + 1]);
+ a[ti++] = (T) new AbstractMap.SimpleEntry<>(unmaskNull(key), tab[si + 1]);
}
}
// fewer elements than expected or concurrent modification from other thread detected
--- a/jdk/src/share/classes/java/util/concurrent/ForkJoinPool.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/util/concurrent/ForkJoinPool.java Wed Jul 05 19:22:42 2017 +0200
@@ -1820,7 +1820,7 @@
}
}
for (;;) { // help stealer or descend to its stealer
- ForkJoinTask[] a; int b;
+ ForkJoinTask<?>[] a; int b;
if (subtask.status < 0) // surround probes with
continue restart; // consistency checks
if ((b = v.base) - v.top < 0 && (a = v.array) != null) {
--- a/jdk/src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/util/concurrent/ScheduledThreadPoolExecutor.java Wed Jul 05 19:22:42 2017 +0200
@@ -1253,11 +1253,11 @@
* Snapshot iterator that works off copy of underlying q array.
*/
private class Itr implements Iterator<Runnable> {
- final RunnableScheduledFuture[] array;
+ final RunnableScheduledFuture<?>[] array;
int cursor = 0; // index of next element to return
int lastRet = -1; // index of last element, or -1 if no such
- Itr(RunnableScheduledFuture[] array) {
+ Itr(RunnableScheduledFuture<?>[] array) {
this.array = array;
}
--- a/jdk/src/share/classes/java/util/logging/Logger.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/util/logging/Logger.java Wed Jul 05 19:22:42 2017 +0200
@@ -351,7 +351,7 @@
? caller.getClassLoader()
: null);
if (callersClassLoader != null) {
- this.callersClassLoaderRef = new WeakReference(callersClassLoader);
+ this.callersClassLoaderRef = new WeakReference<>(callersClassLoader);
}
}
--- a/jdk/src/share/classes/java/util/logging/Logging.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/util/logging/Logging.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -55,11 +55,11 @@
}
public List<String> getLoggerNames() {
- Enumeration loggers = logManager.getLoggerNames();
+ Enumeration<String> loggers = logManager.getLoggerNames();
ArrayList<String> array = new ArrayList<>();
for (; loggers.hasMoreElements();) {
- array.add((String) loggers.nextElement());
+ array.add(loggers.nextElement());
}
return array;
}
--- a/jdk/src/share/classes/java/util/regex/Pattern.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/java/util/regex/Pattern.java Wed Jul 05 19:22:42 2017 +0200
@@ -1142,10 +1142,15 @@
* input sequence that is terminated by another subsequence that matches
* this pattern or is terminated by the end of the input sequence. The
* substrings in the array are in the order in which they occur in the
- * input. If this pattern does not match any subsequence of the input then
+ * input. If this pattern does not match any subsequence of the input then
* the resulting array has just one element, namely the input sequence in
* string form.
*
+ * <p> When there is a positive-width match at the beginning of the input
+ * sequence then an empty leading substring is included at the beginning
+ * of the resulting array. A zero-width match at the beginning however
+ * never produces such empty leading substring.
+ *
* <p> The <tt>limit</tt> parameter controls the number of times the
* pattern is applied and therefore affects the length of the resulting
* array. If the limit <i>n</i> is greater than zero then the pattern
@@ -1185,7 +1190,6 @@
* <td><tt>{ "b", "", ":and:f" }</tt></td></tr>
* </table></blockquote>
*
- *
* @param input
* The character sequence to be split
*
@@ -1204,6 +1208,11 @@
// Add segments before each match found
while(m.find()) {
if (!matchLimited || matchList.size() < limit - 1) {
+ if (index == 0 && index == m.start() && m.start() == m.end()) {
+ // no empty leading substring included for zero-width match
+ // at the beginning of the input char sequence.
+ continue;
+ }
String match = input.subSequence(index, m.start()).toString();
matchList.add(match);
index = m.end();
@@ -5755,13 +5764,18 @@
* input sequence that is terminated by another subsequence that matches
* this pattern or is terminated by the end of the input sequence. The
* substrings in the stream are in the order in which they occur in the
- * input. Trailing empty strings will be discarded and not encountered in
+ * input. Trailing empty strings will be discarded and not encountered in
* the stream.
*
* <p> If this pattern does not match any subsequence of the input then
* the resulting stream has just one element, namely the input sequence in
* string form.
*
+ * <p> When there is a positive-width match at the beginning of the input
+ * sequence then an empty leading substring is included at the beginning
+ * of the stream. A zero-width match at the beginning however never produces
+ * such empty leading substring.
+ *
* <p> If the input sequence is mutable, it must remain constant during the
* execution of the terminal stream operation. Otherwise, the result of the
* terminal stream operation is undefined.
@@ -5817,7 +5831,8 @@
current = matcher.end();
if (!nextElement.isEmpty()) {
return true;
- } else {
+ } else if (current > 0) { // no empty leading substring for zero-width
+ // match at the beginning of the input
emptyElementCount++;
}
}
--- a/jdk/src/share/classes/javax/management/AttributeList.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/AttributeList.java Wed Jul 05 19:22:42 2017 +0200
@@ -178,8 +178,8 @@
/**
* Inserts the attribute specified as an element at the position specified.
* Elements with an index greater than or equal to the current position are
- * shifted up. If the index is out of range (index < 0 || index >
- * size()) a RuntimeOperationsException should be raised, wrapping the
+ * shifted up. If the index is out of range {@literal (index < 0 || index >
+ * size())} a RuntimeOperationsException should be raised, wrapping the
* java.lang.IndexOutOfBoundsException thrown.
*
* @param object The <CODE>Attribute</CODE> object to be inserted.
@@ -199,7 +199,7 @@
/**
* Sets the element at the position specified to be the attribute specified.
* The previous element at that position is discarded. If the index is
- * out of range (index < 0 || index > size() a RuntimeOperationsException
+ * out of range {@literal (index < 0 || index > size())} a RuntimeOperationsException
* should be raised, wrapping the java.lang.IndexOutOfBoundsException thrown.
*
* @param object The value to which the attribute element should be set.
@@ -234,7 +234,7 @@
* Inserts all of the elements in the <CODE>AttributeList</CODE> specified
* into this list, starting at the specified position, in the order in which
* they are returned by the Iterator of the {@code AttributeList} specified.
- * If the index is out of range (index < 0 || index > size() a
+ * If the index is out of range {@literal (index < 0 || index > size())} a
* RuntimeOperationsException should be raised, wrapping the
* java.lang.IndexOutOfBoundsException thrown.
*
--- a/jdk/src/share/classes/javax/management/BooleanValueExp.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/BooleanValueExp.java Wed Jul 05 19:22:42 2017 +0200
@@ -44,12 +44,12 @@
private boolean val = false;
- /** Creates a new BooleanValueExp representing the boolean literal <val>.*/
+ /** Creates a new BooleanValueExp representing the boolean literal {@code val}.*/
BooleanValueExp(boolean val) {
this.val = val;
}
- /**Creates a new BooleanValueExp representing the Boolean object <val>.*/
+ /**Creates a new BooleanValueExp representing the Boolean object {@code val}.*/
BooleanValueExp(Boolean val) {
this.val = val.booleanValue();
}
--- a/jdk/src/share/classes/javax/management/Descriptor.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/Descriptor.java Wed Jul 05 19:22:42 2017 +0200
@@ -96,7 +96,7 @@
* of the mapped Java type, called <em>opendata</em>(J) in the <a
* href="MXBean.html#mapping-rules">MXBean type mapping rules</a>.</p>
*
- * <table border="1" cellpadding="5">
+ * <table border="1" cellpadding="5" summary="Descriptor Fields">
*
* <tr><th>Name</th><th>Type</th><th>Used in</th><th>Meaning</th></tr>
*
@@ -330,7 +330,7 @@
* interest outside Model MBeans, for example. But only Model MBeans have
* a predefined behavior for these fields.</p>
*
- * <table border="1" cellpadding="5">
+ * <table border="1" cellpadding="5" summary="ModelMBean Fields">
*
* <tr><th>Name</th><th>Type</th><th>Used in</th><th>Meaning</th></tr>
*
--- a/jdk/src/share/classes/javax/management/DescriptorKey.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/DescriptorKey.java Wed Jul 05 19:22:42 2017 +0200
@@ -94,7 +94,7 @@
* <p>then the resulting {@code Descriptor} will contain the following
* fields:</p>
*
- * <table border="2">
+ * <table border="2" summary="Descriptor Fields">
* <tr><th>Name</th><th>Value</th></tr>
* <tr><td>units</td><td>"bytes"</td></tr>
* <tr><td>descriptionResourceKey</td><td>"bytes.key"</td></tr>
@@ -143,7 +143,7 @@
* or an array of annotations. The value of the field is derived from
* the value of the annotation element as follows:</p>
*
- * <table border="2">
+ * <table border="2" summary="Descriptor Field Types">
* <tr><th>Annotation element</th><th>Descriptor field</th></tr>
* <tr><td>Primitive value ({@code 5}, {@code false}, etc)</td>
* <td>Wrapped value ({@code Integer.valueOf(5)},
--- a/jdk/src/share/classes/javax/management/ImmutableDescriptor.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/ImmutableDescriptor.java Wed Jul 05 19:22:42 2017 +0200
@@ -344,7 +344,7 @@
* the given object is also a Descriptor, and if the two Descriptors have
* the same field names (possibly differing in case) and the same
* associated values. The respective values for a field in the two
- * Descriptors are equal if the following conditions hold:</p>
+ * Descriptors are equal if the following conditions hold:
*
* <ul>
* <li>If one value is null then the other must be too.</li>
--- a/jdk/src/share/classes/javax/management/JMX.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/JMX.java Wed Jul 05 19:22:42 2017 +0200
@@ -217,8 +217,7 @@
}
/**
- * <p>Make a proxy for an MXBean in a local or remote
- * MBean Server.</p>
+ * Make a proxy for an MXBean in a local or remote MBean Server.
*
* <p>If you have an MBean Server {@code mbs} containing an
* MXBean with {@link ObjectName} {@code name}, and if the
@@ -253,7 +252,7 @@
* <li><p>{@code proxy.setSimpleAttribute("whatever")} will result
* in a call to {@code mbs.}{@link
* MBeanServerConnection#setAttribute setAttribute}<code>(name,
- * new Attribute("SimpleAttribute", "whatever"))</code>.<p>
+ * new Attribute("SimpleAttribute", "whatever"))</code>.</p>
*
* <p>Because {@code String} is a <em>simple type</em>, in the
* sense of {@link javax.management.openmbean.SimpleType}, it
--- a/jdk/src/share/classes/javax/management/MBeanFeatureInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/MBeanFeatureInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -162,7 +162,7 @@
* Serializes an {@link MBeanFeatureInfo} to an {@link ObjectOutputStream}.
* @serialData
* For compatibility reasons, an object of this class is serialized as follows.
- * <ul>
+ * <p>
* The method {@link ObjectOutputStream#defaultWriteObject defaultWriteObject()}
* is called first to serialize the object except the field {@code descriptor}
* which is declared as transient. The field {@code descriptor} is serialized
@@ -180,7 +180,7 @@
* {@link ObjectOutputStream#writeObject writeObject(Object obj)} is called
* to serialize directly the field {@code descriptor}.
* </ul>
- * </ul>
+ *
* @since 1.6
*/
private void writeObject(ObjectOutputStream out) throws IOException {
@@ -206,7 +206,7 @@
* Deserializes an {@link MBeanFeatureInfo} from an {@link ObjectInputStream}.
* @serialData
* For compatibility reasons, an object of this class is deserialized as follows.
- * <ul>
+ * <p>
* The method {@link ObjectInputStream#defaultReadObject defaultReadObject()}
* is called first to deserialize the object except the field
* {@code descriptor}, which is not serialized in the default way. Then the method
@@ -228,7 +228,7 @@
* to {@link ImmutableDescriptor#EMPTY_DESCRIPTOR EMPTY_DESCRIPTOR}</li>
* <li>Any other value. A {@link StreamCorruptedException} is thrown.</li>
* </ul>
- * </ul>
+ *
* @since 1.6
*/
private void readObject(ObjectInputStream in)
--- a/jdk/src/share/classes/javax/management/MBeanInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/MBeanInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -619,7 +619,7 @@
* Serializes an {@link MBeanInfo} to an {@link ObjectOutputStream}.
* @serialData
* For compatibility reasons, an object of this class is serialized as follows.
- * <ul>
+ * <p>
* The method {@link ObjectOutputStream#defaultWriteObject defaultWriteObject()}
* is called first to serialize the object except the field {@code descriptor}
* which is declared as transient. The field {@code descriptor} is serialized
@@ -637,7 +637,7 @@
* {@link ObjectOutputStream#writeObject writeObject(Object obj)} is called
* to serialize the field {@code descriptor} directly.
* </ul>
- * </ul>
+ *
* @since 1.6
*/
private void writeObject(ObjectOutputStream out) throws IOException {
@@ -661,7 +661,7 @@
* Deserializes an {@link MBeanInfo} from an {@link ObjectInputStream}.
* @serialData
* For compatibility reasons, an object of this class is deserialized as follows.
- * <ul>
+ * <p>
* The method {@link ObjectInputStream#defaultReadObject defaultReadObject()}
* is called first to deserialize the object except the field
* {@code descriptor}, which is not serialized in the default way. Then the method
@@ -683,7 +683,7 @@
* {@link ImmutableDescriptor#EMPTY_DESCRIPTOR EMPTY_DESCRIPTOR}.</li>
* <li>Any other value. A {@link StreamCorruptedException} is thrown.</li>
* </ul>
- * </ul>
+ *
* @since 1.6
*/
--- a/jdk/src/share/classes/javax/management/MBeanServer.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/MBeanServer.java Wed Jul 05 19:22:42 2017 +0200
@@ -244,7 +244,6 @@
* the caller's permissions must imply {@link
* MBeanPermission#MBeanPermission(String,String,ObjectName,String)
* MBeanPermission(className, null, name, "unregisterMBean")}.</p>
- * </p>
*
* </ul>
*
--- a/jdk/src/share/classes/javax/management/MBeanServerConnection.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/MBeanServerConnection.java Wed Jul 05 19:22:42 2017 +0200
@@ -627,7 +627,7 @@
* for that attribute, although this is not guaranteed to work. (For
* example, the values of two attributes may have been rejected because
* they were inconsistent with each other. Setting one of them alone might
- * be allowed.)<p>
+ * be allowed.)
*
* <p>Here is an example of calling this method and checking that it
* succeeded in setting all the requested attributes:</p>
--- a/jdk/src/share/classes/javax/management/MBeanServerNotification.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/MBeanServerNotification.java Wed Jul 05 19:22:42 2017 +0200
@@ -86,7 +86,7 @@
* be set to an array of ObjectNames containing the names of all MBeans
* being registered or unregistered.</li>
* </ul>
- * </p>
+ *
* <p>
* MBeans which emit these group registration/unregistration notifications will
* declare them in their {@link MBeanInfo#getNotifications()
--- a/jdk/src/share/classes/javax/management/MXBean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/MXBean.java Wed Jul 05 19:22:42 2017 +0200
@@ -79,7 +79,7 @@
public interface MisleadingMXBean {}
</pre>
- <h3 id="MXBean-spec">MXBean specification</a></h3>
+ <h3 id="MXBean-spec">MXBean specification</h3>
<p>The MXBean concept provides a simple way to code an MBean
that only references a predefined set of types, the ones defined
@@ -93,7 +93,7 @@
Standard MBean concept. Here is how a managed object might be
represented as a Standard MBean, and as an MXBean:</p>
- <table border="1" cellpadding="5">
+ <table border="1" cellpadding="5" summary="Standard Bean vs. MXBean">
<tr>
<th>Standard MBean</th><th>MXBean</th>
</tr>
@@ -133,7 +133,7 @@
<p>So, we might define <code>MemoryUsage</code> like this:</p>
- <table border="1" cellpadding="5">
+ <table border="1" cellpadding="5" summary="Standard Bean vs. MXBean">
<tr>
<th>Standard MBean</th><th>MXBean</th>
</tr>
@@ -195,7 +195,7 @@
<p>This becomes clearer if we compare what the clients of the two
models might look like:</p>
- <table border="1" cellpadding="5">
+ <table border="1" cellpadding="5" summary="Standard Bean vs. MXBean">
<tr>
<th>Standard MBean</th><th>MXBean</th>
</tr>
@@ -232,7 +232,7 @@
managed objects when you know the model beforehand, regardless
of whether you are using Standard MBeans or MXBeans:</p>
- <table border="1" cellpadding="5">
+ <table border="1" cellpadding="5" summary="Standard Bean vs. MXBean">
<tr>
<th>Standard MBean</th><th>MXBean</th>
</tr>
@@ -265,7 +265,7 @@
<p>Implementing the MemoryPool object works similarly for both
Standard MBeans and MXBeans.</p>
- <table border="1" cellpadding="5">
+ <table border="1" cellpadding="5" summary="Standard Bean vs. MXBean">
<tr>
<th>Standard MBean</th><th>MXBean</th>
</tr>
@@ -292,7 +292,7 @@
<p>Registering the MBean in the MBean Server works in the same way
in both cases:</p>
- <table border="1" cellpadding="5">
+ <table border="1" cellpadding="5" summary="Standard Bean vs. MXBean">
<tr>
<th>Standard MBean</th><th>MXBean</th>
</tr>
@@ -478,13 +478,13 @@
<p>The following table summarizes the type mapping rules.</p>
- <table border="1" cellpadding="5">
+ <table border="1" cellpadding="5" summary="Type Mapping Rules">
<tr>
<th>Java type <em>J</em></th>
<th><em>opentype(J)</em></th>
<th><em>opendata(J)</em></th>
</tr>
- <tbody cellvalign="top">
+ <tbody valign="top">
<tr>
<td>{@code int}, {@code boolean}, etc<br>
(the 8 primitive Java types)</td>
@@ -785,7 +785,7 @@
</blockquote>
then the item in the {@code CompositeType} is called {@code name}
- and has type {@code SimpleType.BOOLEAN}.</p>
+ and has type {@code SimpleType.BOOLEAN}.
<p>Notice that the first character (or code point) is converted to
lower case. This follows the Java Beans convention, which for
--- a/jdk/src/share/classes/javax/management/NumericValueExp.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/NumericValueExp.java Wed Jul 05 19:22:42 2017 +0200
@@ -112,7 +112,7 @@
public NumericValueExp() {
}
- /** Creates a new NumericValue representing the numeric literal <val>.*/
+ /** Creates a new NumericValue representing the numeric literal @{code val}.*/
NumericValueExp(Number val)
{
this.val = val;
--- a/jdk/src/share/classes/javax/management/ObjectName.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/ObjectName.java Wed Jul 05 19:22:42 2017 +0200
@@ -195,7 +195,7 @@
* represents an ObjectName with two keys. The name of each key
* contains six characters, of which the first and last are spaces.
* The value associated with the key <code>" key1 "</code>
- * also begins and ends with a space.</p>
+ * also begins and ends with a space.
*
* <p>In addition to the restrictions on characters spelt out above,
* no part of an ObjectName may contain a newline character
@@ -665,7 +665,7 @@
* Construct an ObjectName from a domain and a Hashtable.
*
* @param domain Domain of the ObjectName.
- * @param props Map containing couples <i>key</i> -> <i>value</i>.
+ * @param props Map containing couples <i>key</i> {@literal ->} <i>value</i>.
*
* @exception MalformedObjectNameException The <code>domain</code>
* contains an illegal character, or one of the keys or values in
@@ -1549,7 +1549,7 @@
* <li>a comma and an
* asterisk (<code>,*</code>) for an ObjectName that is a property
* list pattern with at least one key.
- * </ul></p>
+ * </ul>
*
* @return The canonical form of the name.
*/
--- a/jdk/src/share/classes/javax/management/PersistentMBean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/PersistentMBean.java Wed Jul 05 19:22:42 2017 +0200
@@ -70,17 +70,19 @@
* <P>
* Persistence policy from the MBean and attribute descriptor is used to guide execution
* of this method. The MBean should be stored if 'persistPolicy' field is:
- * <PRE> != "never"
+ * <PRE>{@literal != "never"
* = "always"
* = "onTimer" and now > 'lastPersistTime' + 'persistPeriod'
* = "NoMoreOftenThan" and now > 'lastPersistTime' + 'persistPeriod'
* = "onUnregister"
- * <P>
+ * }</PRE>
+ * <p>
* Do not store the MBean if 'persistPolicy' field is:
+ * <PRE>{@literal
* = "never"
* = "onUpdate"
* = "onTimer" && now < 'lastPersistTime' + 'persistPeriod'
- * <P></PRE>
+ * }</PRE>
*
* @exception MBeanException Wraps another exception or persistence is not supported
* @exception RuntimeOperationsException Wraps exceptions from the persistence mechanism
--- a/jdk/src/share/classes/javax/management/Query.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/Query.java Wed Jul 05 19:22:42 2017 +0200
@@ -127,9 +127,9 @@
* @param q2 Another query expression.
*
* @return The conjunction of the two arguments. The returned object
- * will be serialized as an instance of the non-public class {@link
+ * will be serialized as an instance of the non-public class
* <a href="../../serialized-form.html#javax.management.AndQueryExp">
- * javax.management.AndQueryExp</a>}.
+ * javax.management.AndQueryExp</a>.
*/
public static QueryExp and(QueryExp q1, QueryExp q2) {
return new AndQueryExp(q1, q2);
@@ -143,9 +143,9 @@
* @param q2 Another query expression.
*
* @return The disjunction of the two arguments. The returned object
- * will be serialized as an instance of the non-public class {@link
+ * will be serialized as an instance of the non-public class
* <a href="../../serialized-form.html#javax.management.OrQueryExp">
- * javax.management.OrQueryExp</a>}.
+ * javax.management.OrQueryExp</a>.
*/
public static QueryExp or(QueryExp q1, QueryExp q2) {
return new OrQueryExp(q1, q2);
@@ -160,9 +160,9 @@
*
* @return A "greater than" constraint on the arguments. The
* returned object will be serialized as an instance of the
- * non-public class {@link <a
- * href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
- * javax.management.BinaryRelQueryExp</a>} with a {@code relOp} equal
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+ * javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
* to {@link #GT}.
*/
public static QueryExp gt(ValueExp v1, ValueExp v2) {
@@ -178,9 +178,9 @@
*
* @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 {@link <a
- * href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
- * javax.management.BinaryRelQueryExp</a>} with a {@code relOp} equal
+ * instance of the non-public class
+ * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+ * javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
* to {@link #GE}.
*/
public static QueryExp geq(ValueExp v1, ValueExp v2) {
@@ -196,9 +196,9 @@
*
* @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 {@link <a
- * href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
- * javax.management.BinaryRelQueryExp</a>} with a {@code relOp} equal
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+ * javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
* to {@link #LE}.
*/
public static QueryExp leq(ValueExp v1, ValueExp v2) {
@@ -214,9 +214,9 @@
*
* @return A "less than" constraint on the arguments. The
* returned object will be serialized as an instance of the
- * non-public class {@link <a
- * href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
- * javax.management.BinaryRelQueryExp</a>} with a {@code relOp} equal
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+ * javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
* to {@link #LT}.
*/
public static QueryExp lt(ValueExp v1, ValueExp v2) {
@@ -232,9 +232,9 @@
*
* @return A "equal to" constraint on the arguments. The
* returned object will be serialized as an instance of the
- * non-public class {@link <a
- * href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
- * javax.management.BinaryRelQueryExp</a>} with a {@code relOp} equal
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.BinaryRelQueryExp">
+ * javax.management.BinaryRelQueryExp</a> with a {@code relOp} equal
* to {@link #EQ}.
*/
public static QueryExp eq(ValueExp v1, ValueExp v2) {
@@ -251,9 +251,9 @@
*
* @return The constraint that v1 lies between v2 and v3. The
* returned object will be serialized as an instance of the
- * non-public class {@link <a
- * href="../../serialized-form.html#javax.management.BetweenQueryExp">
- * javax.management.BetweenQueryExp</a>}.
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.BetweenQueryExp">
+ * javax.management.BetweenQueryExp</a>.
*/
public static QueryExp between(ValueExp v1, ValueExp v2, ValueExp v3) {
return new BetweenQueryExp(v1, v2, v3);
@@ -279,9 +279,9 @@
*
* @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 {@link <a
- * href="../../serialized-form.html#javax.management.MatchQueryExp">
- * javax.management.MatchQueryExp</a>}.
+ * be serialized as an instance of the non-public class
+ * <a href="../../serialized-form.html#javax.management.MatchQueryExp">
+ * javax.management.MatchQueryExp</a>.
*/
public static QueryExp match(AttributeValueExp a, StringValueExp s) {
return new MatchQueryExp(a, s);
@@ -319,9 +319,9 @@
*
* @return An attribute expression for the attribute named name.
* The returned object will be serialized as an instance of the
- * non-public class {@link <a
- * href="../../serialized-form.html#javax.management.QualifiedAttributeValueExp">
- * javax.management.QualifiedAttributeValueExp</a>}.
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.QualifiedAttributeValueExp">
+ * javax.management.QualifiedAttributeValueExp</a>.
*/
public static AttributeValueExp attr(String className, String name) {
return new QualifiedAttributeValueExp(className, name);
@@ -338,9 +338,8 @@
*
* @return A class attribute expression. The returned object
* will be serialized as an instance of the non-public class
- * {@link <a
- * href="../../serialized-form.html#javax.management.ClassAttributeValueExp">
- * javax.management.ClassAttributeValueExp</a>}.
+ * <a href="../../serialized-form.html#javax.management.ClassAttributeValueExp">
+ * javax.management.ClassAttributeValueExp</a>.
*/
public static AttributeValueExp classattr() {
return new ClassAttributeValueExp();
@@ -352,9 +351,9 @@
* @param queryExp The constraint to negate.
*
* @return A negated constraint. The returned object will be
- * serialized as an instance of the non-public class {@link <a
- * href="../../serialized-form.html#javax.management.NotQueryExp">
- * javax.management.NotQueryExp</a>}.
+ * serialized as an instance of the non-public class
+ * <a href="../../serialized-form.html#javax.management.NotQueryExp">
+ * javax.management.NotQueryExp</a>.
*/
public static QueryExp not(QueryExp queryExp) {
return new NotQueryExp(queryExp);
@@ -368,9 +367,9 @@
*
* @return A QueryExp that represents the constraint. The
* returned object will be serialized as an instance of the
- * non-public class {@link <a
- * href="../../serialized-form.html#javax.management.InQueryExp">
- * javax.management.InQueryExp</a>}.
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.InQueryExp">
+ * javax.management.InQueryExp</a>.
*/
public static QueryExp in(ValueExp val, ValueExp valueList[]) {
return new InQueryExp(val, valueList);
@@ -395,9 +394,9 @@
*
* @return A ValueExp object containing the argument. The
* returned object will be serialized as an instance of the
- * non-public class {@link <a
- * href="../../serialized-form.html#javax.management.NumericValueExp">
- * javax.management.NumericValueExp</a>}.
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+ * javax.management.NumericValueExp</a>.
*/
public static ValueExp value(Number val) {
return new NumericValueExp(val);
@@ -411,9 +410,9 @@
*
* @return A ValueExp object containing the argument. The
* returned object will be serialized as an instance of the
- * non-public class {@link <a
- * href="../../serialized-form.html#javax.management.NumericValueExp">
- * javax.management.NumericValueExp</a>}.
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+ * javax.management.NumericValueExp</a>.
*/
public static ValueExp value(int val) {
return new NumericValueExp((long) val);
@@ -427,9 +426,9 @@
*
* @return A ValueExp object containing the argument. The
* returned object will be serialized as an instance of the
- * non-public class {@link <a
- * href="../../serialized-form.html#javax.management.NumericValueExp">
- * javax.management.NumericValueExp</a>}.
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+ * javax.management.NumericValueExp</a>.
*/
public static ValueExp value(long val) {
return new NumericValueExp(val);
@@ -443,9 +442,9 @@
*
* @return A ValueExp object containing the argument. The
* returned object will be serialized as an instance of the
- * non-public class {@link <a
- * href="../../serialized-form.html#javax.management.NumericValueExp">
- * javax.management.NumericValueExp</a>}.
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+ * javax.management.NumericValueExp</a>.
*/
public static ValueExp value(float val) {
return new NumericValueExp((double) val);
@@ -459,9 +458,9 @@
*
* @return A ValueExp object containing the argument. The
* returned object will be serialized as an instance of the
- * non-public class {@link <a
- * href="../../serialized-form.html#javax.management.NumericValueExp">
- * javax.management.NumericValueExp</a>}.
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.NumericValueExp">
+ * javax.management.NumericValueExp</a>.
*/
public static ValueExp value(double val) {
return new NumericValueExp(val);
@@ -475,9 +474,9 @@
*
* @return A ValueExp object containing the argument. The
* returned object will be serialized as an instance of the
- * non-public class {@link <a
- * href="../../serialized-form.html#javax.management.BooleanValueExp">
- * javax.management.BooleanValueExp</a>}.
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.BooleanValueExp">
+ * javax.management.BooleanValueExp</a>.
*/
public static ValueExp value(boolean val) {
return new BooleanValueExp(val);
@@ -492,9 +491,9 @@
*
* @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 {@link <a
- * href="../../serialized-form.html#javax.management.BinaryOpValueExp">
- * javax.management.BinaryOpValueExp</a>} with an {@code op} equal to
+ * an instance of the non-public class
+ * <a href="../../serialized-form.html#javax.management.BinaryOpValueExp">
+ * javax.management.BinaryOpValueExp</a> with an {@code op} equal to
* {@link #PLUS}.
*/
public static ValueExp plus(ValueExp value1, ValueExp value2) {
@@ -510,9 +509,9 @@
*
* @return A ValueExp representing the product. The returned
* object will be serialized as an instance of the non-public
- * class {@link <a
- * href="../../serialized-form.html#javax.management.BinaryOpValueExp">
- * javax.management.BinaryOpValueExp</a>} with an {@code op} equal to
+ * class
+ * <a href="../../serialized-form.html#javax.management.BinaryOpValueExp">
+ * javax.management.BinaryOpValueExp</a> with an {@code op} equal to
* {@link #TIMES}.
*/
public static ValueExp times(ValueExp value1,ValueExp value2) {
@@ -528,9 +527,9 @@
*
* @return A ValueExp representing the difference between two
* arguments. The returned object will be serialized as an
- * instance of the non-public class {@link <a
- * href="../../serialized-form.html#javax.management.BinaryOpValueExp">
- * javax.management.BinaryOpValueExp</a>} with an {@code op} equal to
+ * instance of the non-public class
+ * <a href="../../serialized-form.html#javax.management.BinaryOpValueExp">
+ * javax.management.BinaryOpValueExp</a> with an {@code op} equal to
* {@link #MINUS}.
*/
public static ValueExp minus(ValueExp value1, ValueExp value2) {
@@ -546,9 +545,9 @@
*
* @return A ValueExp representing the quotient of two arguments.
* The returned object will be serialized as an instance of the
- * non-public class {@link <a
- * href="../../serialized-form.html#javax.management.BinaryOpValueExp">
- * javax.management.BinaryOpValueExp</a>} with an {@code op} equal to
+ * non-public class
+ * <a href="../../serialized-form.html#javax.management.BinaryOpValueExp">
+ * javax.management.BinaryOpValueExp</a> with an {@code op} equal to
* {@link #DIV}.
*/
public static ValueExp div(ValueExp value1, ValueExp value2) {
@@ -566,9 +565,9 @@
*
* @return The constraint that a matches s. The returned object
* will be serialized as an instance of the non-public class
- * {@link <a
- * href="../../serialized-form.html#javax.management.MatchQueryExp">
- * javax.management.MatchQueryExp</a>}.
+ *
+ * <a href="../../serialized-form.html#javax.management.MatchQueryExp">
+ * javax.management.MatchQueryExp</a>.
*/
public static QueryExp initialSubString(AttributeValueExp a, StringValueExp s) {
return new MatchQueryExp(a,
@@ -585,9 +584,9 @@
*
* @return The constraint that a matches s. The returned object
* will be serialized as an instance of the non-public class
- * {@link <a
- * href="../../serialized-form.html#javax.management.MatchQueryExp">
- * javax.management.MatchQueryExp</a>}.
+ *
+ * <a href="../../serialized-form.html#javax.management.MatchQueryExp">
+ * javax.management.MatchQueryExp</a>.
*/
public static QueryExp anySubString(AttributeValueExp a, StringValueExp s) {
return new MatchQueryExp(a,
@@ -605,9 +604,9 @@
*
* @return The constraint that a matches s. The returned object
* will be serialized as an instance of the non-public class
- * {@link <a
- * href="../../serialized-form.html#javax.management.MatchQueryExp">
- * javax.management.MatchQueryExp</a>}.
+ *
+ * <a href="../../serialized-form.html#javax.management.MatchQueryExp">
+ * javax.management.MatchQueryExp</a>.
*/
public static QueryExp finalSubString(AttributeValueExp a, StringValueExp s) {
return new MatchQueryExp(a,
@@ -630,9 +629,9 @@
* of the class of which selected MBeans should be instances.
* @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 {@link <a
- * href="../../serialized-form.html#javax.management.InstanceOfQueryExp">
- * javax.management.InstanceOfQueryExp</a>}.
+ * serialized as an instance of the non-public class
+ * <a href="../../serialized-form.html#javax.management.InstanceOfQueryExp">
+ * javax.management.InstanceOfQueryExp</a>.
* @since 1.6
*/
public static QueryExp isInstanceOf(StringValueExp classNameValue) {
--- a/jdk/src/share/classes/javax/management/loading/MLet.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/loading/MLet.java Wed Jul 05 19:22:42 2017 +0200
@@ -145,17 +145,17 @@
* This optional attribute specifies a list of one or more parameters for the
* MBean to be instantiated. This list describes the parameters to be passed the MBean's constructor.
* Use the following syntax to specify each item in
- * <VAR>arglist</VAR>:</DD>
+ * <VAR>arglist</VAR>:
* <DL>
- * <P>
* <DT><<CODE>ARG TYPE=</CODE><VAR>argumentType</VAR> <CODE>VALUE=</CODE><VAR>value</VAR>></DT>
- * <P>
- * <DD>where:</DD>
+ * <DD>where:
* <UL>
* <LI><VAR>argumentType</VAR> is the type of the argument that will be passed as parameter to the MBean's constructor.</UL>
+ * </DD>
* </DL>
* <P>The arguments' type in the argument list should be a Java primitive type or a Java basic type
* (<CODE>java.lang.Boolean, java.lang.Byte, java.lang.Short, java.lang.Long, java.lang.Integer, java.lang.Float, java.lang.Double, java.lang.String</CODE>).
+ * </DD>
* </DL>
*
* When an m-let text file is loaded, an
--- a/jdk/src/share/classes/javax/management/loading/MLetParser.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/loading/MLetParser.java Wed Jul 05 19:22:42 2017 +0200
@@ -149,7 +149,7 @@
}
/**
- * Scan an html file for <mlet> tags
+ * Scan an html file for {@literal <mlet>} tags.
*/
public List<MLetContent> parse(URL url) throws IOException {
String mth = "parse";
--- a/jdk/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Wed Jul 05 19:22:42 2017 +0200
@@ -799,7 +799,7 @@
* the given object is also a Descriptor, and if the two Descriptors have
* the same field names (possibly differing in case) and the same
* associated values. The respective values for a field in the two
- * Descriptors are equal if the following conditions hold:</p>
+ * Descriptors are equal if the following conditions hold:
*
* <ul>
* <li>If one value is null then the other must be too.</li>
@@ -871,7 +871,6 @@
* done on the <i>"export"</i> field.
* <P>
* Otherwise this implementation returns false if:
- * <P>
* <UL>
* <LI> name and descriptorType fieldNames are not defined, or
* null, or empty, or not String
@@ -879,14 +878,14 @@
* are null or not String
* <LI> persistPeriod, currencyTimeLimit, lastUpdatedTimeStamp,
* lastReturnedTimeStamp if defined, are null, or not a Numeric
- * String or not a Numeric Value >= -1
+ * String or not a Numeric Value {@literal >= -1}
* <LI> log fieldName, if defined, is null, or not a Boolean or
* not a String with value "t", "f", "true", "false". These String
* values must not be case sensitive.
* <LI> visibility fieldName, if defined, is null, or not a
- * Numeric String or a not Numeric Value >= 1 and <= 4
+ * Numeric String or a not Numeric Value {@literal >= 1 and <= 4}
* <LI> severity fieldName, if defined, is null, or not a Numeric
- * String or not a Numeric Value >= 0 and <= 6<br>
+ * String or not a Numeric Value {@literal >= 0 and <= 6}<br>
* <LI> persistPolicy fieldName, if defined, is null, or not one of
* the following strings:<br>
* "OnUpdate", "OnTimer", "NoMoreOftenThan", "OnUnregister", "Always",
@@ -1270,8 +1269,8 @@
}
/**
- * Returns <pv>a human readable string representing the
- * descriptor</pv>. The string will be in the format of
+ * Returns a human readable string representing the
+ * descriptor. The string will be in the format of
* "fieldName=fieldValue,fieldName2=fieldValue2,..."<br>
*
* If there are no fields in the descriptor, then an empty String
--- a/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -57,7 +57,7 @@
* Note that when the Type in this table is Number, a String that is the decimal
* representation of a Long can also be used.</P>
*
- * <table border="1" cellpadding="5">
+ * <table border="1" cellpadding="5" summary="ModelMBeanAttributeInfo Fields">
* <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
* <tr><td>name</td><td>String</td>
* <td>Attribute name.</td></tr>
--- a/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -58,7 +58,7 @@
* Note that when the Type in this table is Number, a String that is the decimal
* representation of a Long can also be used.</P>
*
- * <table border="1" cellpadding="5">
+ * <table border="1" cellpadding="5" summary="ModelMBeanConstructorInfo Fields">
* <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
* <tr><td>name</td><td>String</td>
* <td>Constructor name.</td></tr>
--- a/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -165,7 +165,7 @@
* following. Note that when the Type in this table is Number, a String
* that is the decimal representation of a Long can also be used.</P>
*
- * <table border="1" cellpadding="5">
+ * <table border="1" cellpadding="5" summary="ModelMBean Fields">
* <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
* <tr><td>name</td><td>String</td>
* <td>MBean name.</td></tr>
--- a/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationBroadcaster.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationBroadcaster.java Wed Jul 05 19:22:42 2017 +0200
@@ -127,7 +127,6 @@
* <P>
* @param oldValue The original value for the Attribute
* @param newValue The current value for the Attribute
- *<P>
* <PRE>
* The constructed attributeChangeNotification will be:
* type "jmx.attribute.change"
--- a/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -56,7 +56,7 @@
* Note that when the Type in this table is Number, a String that is the decimal
* representation of a Long can also be used.</P>
*
- * <table border="1" cellpadding="5">
+ * <table border="1" cellpadding="5" summary="ModelMBeanNotificationInfo Fields">
* <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
* <tr><td>name</td><td>String</td>
* <td>Notification name.</td></tr>
--- a/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -59,7 +59,7 @@
* Note that when the Type in this table is Number, a String that is the decimal
* representation of a Long can also be used.</P>
*
- * <table border="1" cellpadding="5">
+ * <table border="1" cellpadding="5" summary="ModelMBeanOperationInfo Fields">
* <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
* <tr><td>name</td><td>String</td>
* <td>Operation name.</td></tr>
--- a/jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Wed Jul 05 19:22:42 2017 +0200
@@ -360,7 +360,7 @@
MODELMBEAN_LOGGER.logp(Level.FINER,
RequiredModelMBean.class.getName(),
"setManagedResource(Object,String)",
- "Managed Resouce Type is not supported: " + mr_type);
+ "Managed Resource Type is not supported: " + mr_type);
}
throw new InvalidTargetObjectTypeException(mr_type);
}
@@ -369,7 +369,7 @@
MODELMBEAN_LOGGER.logp(Level.FINER,
RequiredModelMBean.class.getName(),
"setManagedResource(Object,String)",
- "Managed Resouce is valid");
+ "Managed Resource is valid");
}
managedResource = mr;
@@ -421,19 +421,19 @@
* is used to guide execution of this method. The MBean should be
* stored if 'persistPolicy' field is:</p>
*
- * <PRE> != "never"
+ * <PRE>{@literal != "never"
* = "always"
* = "onTimer" and now > 'lastPersistTime' + 'persistPeriod'
* = "NoMoreOftenThan" and now > 'lastPersistTime' + 'persistPeriod'
* = "onUnregister"
- * </PRE>
+ * }</PRE>
*
* <p>Do not store the MBean if 'persistPolicy' field is:</p>
- * <PRE>
+ * <PRE>{@literal
* = "never"
* = "onUpdate"
* = "onTimer" && now < 'lastPersistTime' + 'persistPeriod'
- * </PRE>
+ * }</PRE>
*
* @exception MBeanException Wraps another exception, or
* persistence is not supported
@@ -469,11 +469,14 @@
* <li><b>>0</b> Represents the number of seconds that the
* 'value' field is valid.
* The 'value' field is no longer valid when
- * 'lastUpdatedTimeStamp' + 'currencyTimeLimit' > Now.</li>
+ * 'lastUpdatedTimeStamp' + 'currencyTimeLimit' > Now.
+ * <ul>
+ * <li>When 'value' is valid, 'valid' is returned.</li>
+ * <li>When 'value' is no longer valid then null is returned and
+ * 'value' and 'lastUpdatedTimeStamp' fields are cleared.</li>
+ * </ul>
+ * </li>
* </ul>
- * <li>When 'value' is valid, 'valid' is returned.</li>
- * <li>When 'value' is no longer valid then null is returned and
- * 'value' and 'lastUpdatedTimeStamp' fields are cleared.</li>
*
**/
private Object resolveForCacheValue(Descriptor descr)
@@ -1842,17 +1845,17 @@
* <Li> != "never"</Li>
* <Li> = "always"</Li>
* <Li> = "onUpdate"</Li>
- * <Li> = "onTimer" and now > 'lastPersistTime' + 'persistPeriod'</Li>
- * <Li> = "NoMoreOftenThan" and now > 'lastPersistTime' +
- * 'persistPeriod'</Li>
+ * <Li> {@literal = "onTimer" and now > 'lastPersistTime' + 'persistPeriod'}</Li>
+ * <Li> {@literal = "NoMoreOftenThan" and now > 'lastPersistTime' +
+ * 'persistPeriod'}</Li>
* </UL>
* Do not store the MBean if 'persistPolicy' field is:
* <UL>
* <Li> = "never"</Li>
- * <Li> = "onTimer" && now < 'lastPersistTime' + 'persistPeriod'</Li>
+ * <Li> = {@literal = "onTimer" && now < 'lastPersistTime' + 'persistPeriod'}</Li>
* <Li> = "onUnregister"</Li>
- * <Li> = "NoMoreOftenThan" and now < 'lastPersistTime' +
- * 'persistPeriod'</Li>
+ * <Li> = {@literal = "NoMoreOftenThan" and now < 'lastPersistTime' +
+ * 'persistPeriod'}</Li>
* </UL>
*
* <p>The ModelMBeanInfo of the Model MBean is stored in a file.
--- a/jdk/src/share/classes/javax/management/monitor/Monitor.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/monitor/Monitor.java Wed Jul 05 19:22:42 2017 +0200
@@ -1609,7 +1609,7 @@
* the thread instantiating this DaemonThreadFactory. Each new
* thread is created as a daemon thread with priority
* Thread.NORM_PRIORITY. New threads have names accessible via
- * Thread.getName() of "JMX Monitor <pool-name> Pool [Thread-M]",
+ * Thread.getName() of "{@literal JMX Monitor <pool-name> Pool [Thread-M]}",
* where M is the sequence number of the thread created by this
* factory.
*/
--- a/jdk/src/share/classes/javax/management/openmbean/ArrayType.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/openmbean/ArrayType.java Wed Jul 05 19:22:42 2017 +0200
@@ -33,7 +33,7 @@
* all <i>open data</i> values which are n-dimensional arrays of <i>open data</i> values.
* <p>
* Examples of valid {@code ArrayType} instances are:
- * <pre>
+ * <pre>{@code
* // 2-dimension array of java.lang.String
* ArrayType<String[][]> a1 = new ArrayType<String[][]>(2, SimpleType.STRING);
*
@@ -90,7 +90,7 @@
*
* // 3-dimension array of java.lang.String
* ArrayType<String[][][]> a19 = new ArrayType<String[][][]>(1, a18);
- * </pre>
+ * }</pre>
*
*
* @since 1.5
@@ -241,23 +241,23 @@
* </ul>
* <p>
* As an example, the following piece of code:
- * <pre>
+ * <pre>{@code
* ArrayType<String[][][]> t = new ArrayType<String[][][]>(3, SimpleType.STRING);
* System.out.println("array class name = " + t.getClassName());
* System.out.println("element class name = " + t.getElementOpenType().getClassName());
* System.out.println("array type name = " + t.getTypeName());
* System.out.println("array type description = " + t.getDescription());
- * </pre>
+ * }</pre>
* would produce the following output:
- * <pre>
+ * <pre>{@code
* array class name = [[[Ljava.lang.String;
* element class name = java.lang.String
* array type name = [[[Ljava.lang.String;
* array type description = 3-dimension array of java.lang.String
- * </pre>
+ * }</pre>
* And the following piece of code which is equivalent to the one listed
* above would also produce the same output:
- * <pre>
+ * <pre>{@code
* ArrayType<String[]> t1 = new ArrayType<String[]>(1, SimpleType.STRING);
* ArrayType<String[][]> t2 = new ArrayType<String[][]>(1, t1);
* ArrayType<String[][][]> t3 = new ArrayType<String[][][]>(1, t2);
@@ -265,7 +265,7 @@
* System.out.println("element class name = " + t3.getElementOpenType().getClassName());
* System.out.println("array type name = " + t3.getTypeName());
* System.out.println("array type description = " + t3.getDescription());
- * </pre>
+ * }</pre>
*
* @param dimension the dimension of arrays described by this <tt>ArrayType</tt> instance;
* must be greater than or equal to 1.
@@ -334,20 +334,20 @@
* </ul>
* <p>
* As an example, the following piece of code:
- * <pre>
+ * <pre>{@code
* ArrayType<int[]> t = new ArrayType<int[]>(SimpleType.INTEGER, true);
* System.out.println("array class name = " + t.getClassName());
* System.out.println("element class name = " + t.getElementOpenType().getClassName());
* System.out.println("array type name = " + t.getTypeName());
* System.out.println("array type description = " + t.getDescription());
- * </pre>
+ * }</pre>
* would produce the following output:
- * <pre>
+ * <pre>{@code
* array class name = [I
* element class name = java.lang.Integer
* array type name = [I
* array type description = 1-dimension array of int
- * </pre>
+ * }</pre>
*
* @param elementType the {@code SimpleType} of the element values
* contained in the arrays described by this
@@ -533,7 +533,7 @@
* <li>if this <code>ArrayType</code> instance describes an array of
* classes implementing the {@code TabularData} interface or the
* {@code CompositeData} interface, <var>obj</var> is assignable to
- * such a declared array, and each element contained in <var>obj</var>
+ * such a declared array, and each element contained in {<var>obj</var>
* is either null or a valid value for the element's open type specified
* by this <code>ArrayType</code> instance.</li>
* </ul>
@@ -776,7 +776,7 @@
* object or two equal but not identical objects.
* <p>
* As an example, the following piece of code:
- * <pre>
+ * <pre>{@code
* ArrayType<String[]> t1 = ArrayType.getArrayType(SimpleType.STRING);
* ArrayType<String[][]> t2 = ArrayType.getArrayType(t1);
* ArrayType<String[][][]> t3 = ArrayType.getArrayType(t2);
@@ -784,14 +784,14 @@
* System.out.println("element class name = " + t3.getElementOpenType().getClassName());
* System.out.println("array type name = " + t3.getTypeName());
* System.out.println("array type description = " + t3.getDescription());
- * </pre>
+ * }</pre>
* would produce the following output:
- * <pre>
+ * <pre>{@code
* array class name = [[[Ljava.lang.String;
* element class name = java.lang.String
* array type name = [[[Ljava.lang.String;
* array type description = 3-dimension array of java.lang.String
- * </pre>
+ * }</pre>
*
* @param elementType the <i>open type</i> of element values contained
* in the arrays described by this <tt>ArrayType</tt>
@@ -819,20 +819,20 @@
* same object or two equal but not identical objects.
* <p>
* As an example, the following piece of code:
- * <pre>
+ * <pre>{@code
* ArrayType<int[][][]> t = ArrayType.getPrimitiveArrayType(int[][][].class);
* System.out.println("array class name = " + t.getClassName());
* System.out.println("element class name = " + t.getElementOpenType().getClassName());
* System.out.println("array type name = " + t.getTypeName());
* System.out.println("array type description = " + t.getDescription());
- * </pre>
+ * }</pre>
* would produce the following output:
- * <pre>
+ * <pre>{@code
* array class name = [[[I
* element class name = java.lang.Integer
* array type name = [[[I
* array type description = 3-dimension array of int
- * </pre>
+ * }</pre>
*
* @param arrayClass a primitive array class such as {@code int[].class},
* {@code boolean[][].class}, etc. The {@link
--- a/jdk/src/share/classes/javax/management/openmbean/CompositeDataInvocationHandler.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/openmbean/CompositeDataInvocationHandler.java Wed Jul 05 19:22:42 2017 +0200
@@ -80,7 +80,7 @@
</pre>
</blockquote>
- A call to {@code nn.getNumber()} will then return <b>5</b>.</p>
+ A call to {@code nn.getNumber()} will then return <b>5</b>.
<p>If the first letter of the property defined by a getter is a
capital, then this handler will look first for an item in the
--- a/jdk/src/share/classes/javax/management/openmbean/CompositeType.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/openmbean/CompositeType.java Wed Jul 05 19:22:42 2017 +0200
@@ -40,7 +40,7 @@
/**
* The <code>CompositeType</code> class is the <i>open type</i> class
- * whose instances describe the types of {@link CompositeData <code>CompositeData</code>} values.
+ * whose instances describe the types of {@link CompositeData CompositeData} values.
*
*
* @since 1.5
--- a/jdk/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java Wed Jul 05 19:22:42 2017 +0200
@@ -138,8 +138,8 @@
*
* <p>The {@code descriptor} can contain entries that will define
* the values returned by certain methods of this class, as
- * explained in the {@link <a href="package-summary.html#constraints">
- * package description</a>}.
+ * explained in the <a href="package-summary.html#constraints">
+ * package description</a>.
*
* @param name cannot be a null or empty string.
*
@@ -162,8 +162,7 @@
* @throws IllegalArgumentException if {@code name} or {@code
* description} are null or empty string, or {@code openType} is
* null, or the descriptor entries are invalid as described in the
- * {@link <a href="package-summary.html#constraints">package
- * description</a>}.
+ * <a href="package-summary.html#constraints">package description</a>.
*
* @since 1.6
*/
--- a/jdk/src/share/classes/javax/management/openmbean/OpenMBeanParameterInfoSupport.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/openmbean/OpenMBeanParameterInfoSupport.java Wed Jul 05 19:22:42 2017 +0200
@@ -111,16 +111,16 @@
}
/**
- * <p>Constructs an {@code OpenMBeanParameterInfoSupport} instance,
+ * Constructs an {@code OpenMBeanParameterInfoSupport} instance,
* which describes the parameter used in one or more operations or
* constructors of a class of open MBeans, with the specified
* {@code name}, {@code openType}, {@code description},
- * and {@code descriptor}.</p>
+ * and {@code descriptor}.
*
* <p>The {@code descriptor} can contain entries that will define
* the values returned by certain methods of this class, as
- * explained in the {@link <a href="package-summary.html#constraints">
- * package description</a>}.
+ * explained in the <a href="package-summary.html#constraints">
+ * package description</a>.
*
* @param name cannot be a null or empty string.
*
@@ -134,8 +134,8 @@
* @throws IllegalArgumentException if {@code name} or {@code
* description} are null or empty string, or {@code openType} is
* null, or the descriptor entries are invalid as described in the
- * {@link <a href="package-summary.html#constraints">package
- * description</a>}.
+ * <a href="package-summary.html#constraints">package
+ * description</a>.
*
* @since 1.6
*/
--- a/jdk/src/share/classes/javax/management/openmbean/SimpleType.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/openmbean/SimpleType.java Wed Jul 05 19:22:42 2017 +0200
@@ -45,8 +45,8 @@
/**
* The <code>SimpleType</code> class is the <i>open type</i> class whose instances describe
* all <i>open data</i> values which are neither arrays,
- * nor {@link CompositeData <code>CompositeData</code>} values,
- * nor {@link TabularData <code>TabularData</code>} values.
+ * nor {@link CompositeData CompositeData} values,
+ * nor {@link TabularData TabularData} values.
* It predefines all its possible instances as static fields, and has no public constructor.
* <p>
* Given a <code>SimpleType</code> instance describing values whose Java class name is <i>className</i>,
--- a/jdk/src/share/classes/javax/management/openmbean/TabularType.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/openmbean/TabularType.java Wed Jul 05 19:22:42 2017 +0200
@@ -40,7 +40,7 @@
/**
* The <code>TabularType</code> class is the <i> open type</i> class
- * whose instances describe the types of {@link TabularData <code>TabularData</code>} values.
+ * whose instances describe the types of {@link TabularData TabularData} values.
*
* @since 1.5
*/
@@ -89,8 +89,8 @@
* cannot be null or empty. Each element should be an item name defined in <var>rowType</var>
* (no null or empty string allowed).
* It is important to note that the <b>order</b> of the item names in <var>indexNames</var>
- * is used by the methods {@link TabularData#get(java.lang.Object[]) <code>get</code>} and
- * {@link TabularData#remove(java.lang.Object[]) <code>remove</code>} of class
+ * is used by the methods {@link TabularData#get(java.lang.Object[]) get} and
+ * {@link TabularData#remove(java.lang.Object[]) remove} of class
* <code>TabularData</code> to match their array of values parameter to items.
* <br>
* @throws IllegalArgumentException if <var>rowType</var> is null,
--- a/jdk/src/share/classes/javax/management/relation/Relation.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/relation/Relation.java Wed Jul 05 19:22:42 2017 +0200
@@ -236,7 +236,7 @@
* Retrieves MBeans referenced in the various roles of the relation.
*
* @return a HashMap mapping:
- * <P> ObjectName -> ArrayList of String (role names)
+ * <P> ObjectName {@literal ->} ArrayList of String (role names)
*/
public Map<ObjectName,List<String>> getReferencedMBeans();
--- a/jdk/src/share/classes/javax/management/relation/RelationService.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/relation/RelationService.java Wed Jul 05 19:22:42 2017 +0200
@@ -2306,8 +2306,7 @@
* @param relationId relation id
*
* @return a HashMap mapping:
- * <P> ObjectName -> ArrayList of String (role
- * names)
+ * <P> ObjectName {@literal ->} ArrayList of String (role names)
*
* @exception IllegalArgumentException if null parameter
* @exception RelationNotFoundException if no relation for given
--- a/jdk/src/share/classes/javax/management/relation/RelationServiceMBean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/relation/RelationServiceMBean.java Wed Jul 05 19:22:42 2017 +0200
@@ -770,7 +770,7 @@
* @param relationId relation id
*
* @return a HashMap mapping:
- * <P> ObjectName -> ArrayList of String (role
+ * <P> ObjectName {@literal ->} ArrayList of String (role
* names)
*
* @exception IllegalArgumentException if null parameter
--- a/jdk/src/share/classes/javax/management/relation/RelationSupport.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/relation/RelationSupport.java Wed Jul 05 19:22:42 2017 +0200
@@ -590,7 +590,7 @@
* Retrieves MBeans referenced in the various roles of the relation.
*
* @return a HashMap mapping:
- * <P> ObjectName -> ArrayList of String (role names)
+ * <P> ObjectName {@literal ->} ArrayList of String (role names)
*/
public Map<ObjectName,List<String>> getReferencedMBeans() {
--- a/jdk/src/share/classes/javax/management/remote/JMXConnectionNotification.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/remote/JMXConnectionNotification.java Wed Jul 05 19:22:42 2017 +0200
@@ -40,7 +40,7 @@
*
* <p>The notification type is one of the following:</p>
*
- * <table>
+ * <table summary="JMXConnectionNotification Types">
*
* <tr>
* <th align=left>Type</th>
--- a/jdk/src/share/classes/javax/management/remote/JMXConnector.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/remote/JMXConnector.java Wed Jul 05 19:22:42 2017 +0200
@@ -76,7 +76,7 @@
* <p>If <code>connect</code> has already been called successfully
* on this object, calling it again has no effect. If, however,
* {@link #close} was called after <code>connect</code>, the new
- * <code>connect</code> will throw an <code>IOException</code>.<p>
+ * <code>connect</code> will throw an <code>IOException</code>.
*
* <p>Otherwise, either <code>connect</code> has never been called
* on this object, or it has been called but produced an
--- a/jdk/src/share/classes/javax/management/remote/JMXConnectorProvider.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/remote/JMXConnectorProvider.java Wed Jul 05 19:22:42 2017 +0200
@@ -50,7 +50,7 @@
* @param environment a read-only Map containing named attributes
* to determine how the connection is made. Keys in this map must
* be Strings. The appropriate type of each associated value
- * depends on the attribute.</p>
+ * depends on the attribute.
*
* @return a <code>JMXConnector</code> representing the new
* connector client. Each successful call to this method produces
--- a/jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -1613,7 +1613,7 @@
/**
* Construct a new IOException with a nested exception.
- * The nested exception is set only if JDK >= 1.4
+ * The nested exception is set only if JDK {@literal >= 1.4}
*/
private static IOException newIOException(String message,
Throwable cause) {
--- a/jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java Wed Jul 05 19:22:42 2017 +0200
@@ -1688,17 +1688,17 @@
* this method will attempt to connect the stub to an ORB as
* follows:
* <ul>
- * <p>This method looks in the provided <var>environment</var> for
+ * <li>This method looks in the provided <var>environment</var> for
* the "java.naming.corba.orb" property. If it is found, the
* referenced object (an {@link org.omg.CORBA.ORB ORB}) is used to
* connect the stub. Otherwise, a new org.omg.CORBA.ORB is created
* by calling {@link
* org.omg.CORBA.ORB#init(String[], Properties)
- * org.omg.CORBA.ORB.init((String[])null,(Properties)null)}
- * <p>The new created ORB is kept in a static
+ * org.omg.CORBA.ORB.init((String[])null,(Properties)null)}</li>
+ * <li>The new created ORB is kept in a static
* {@link WeakReference} and can be reused for connecting other
* stubs. However, no reference is ever kept on the ORB provided
- * in the <var>environment</var> map, if any.
+ * in the <var>environment</var> map, if any.</li>
* </ul>
* @param rmiServer A RMI Server Stub.
* @param environment An environment map, possibly containing an ORB.
--- a/jdk/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java Wed Jul 05 19:22:42 2017 +0200
@@ -820,7 +820,7 @@
/**
* Construct a new IOException with a nested exception.
- * The nested exception is set only if JDK >= 1.4
+ * The nested exception is set only if JDK {@literal >= 1.4}
*/
private static IOException newIOException(String message,
Throwable cause) {
--- a/jdk/src/share/classes/javax/management/remote/rmi/RMIServerImpl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/management/remote/rmi/RMIServerImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -117,7 +117,7 @@
* server.</p>
*
* @return the default <code>ClassLoader</code> used by this
- * connector server.</p>
+ * connector server.
*
* @see #setDefaultClassLoader
*/
--- a/jdk/src/share/classes/javax/swing/AbstractButton.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/AbstractButton.java Wed Jul 05 19:22:42 2017 +0200
@@ -1381,7 +1381,7 @@
* If <code>true</code> and the button has a border,
* the border is painted. The default value for the
* <code>borderPainted</code> property is <code>true</code>.
- * <p/>
+ * <p>
* Some look and feels might not support
* the <code>borderPainted</code> property,
* in which case they ignore this.
@@ -1476,7 +1476,7 @@
* This function may cause the component's opaque property to change.
* <p>
* The exact behavior of calling this function varies on a
- * component-by-component and L&F-by-L&F basis.
+ * component-by-component and L&F-by-L&F basis.
*
* @param b if true, the content should be filled; if false
* the content area is not filled
@@ -1702,7 +1702,7 @@
* @see #getMultiClickThreshhold
* @param threshhold the amount of time required between mouse
* press events to generate corresponding action events
- * @exception IllegalArgumentException if threshhold < 0
+ * @exception IllegalArgumentException if threshhold < 0
* @since 1.4
*/
public void setMultiClickThreshhold(long threshhold) {
@@ -1787,7 +1787,7 @@
/**
- * Returns the L&F object that renders this component.
+ * Returns the L&F object that renders this component.
* @return the ButtonUI object
* @see #setUI
*/
@@ -1797,8 +1797,8 @@
/**
- * Sets the L&F object that renders this component.
- * @param ui the <code>ButtonUI</code> L&F object
+ * Sets the L&F object that renders this component.
+ * @param ui the <code>ButtonUI</code> L&F object
* @see #getUI
* @beaninfo
* bound: true
@@ -2722,7 +2722,7 @@
*
* @param part the AccessibleText.CHARACTER, AccessibleText.WORD,
* or AccessibleText.SENTENCE to retrieve
- * @param index an index within the text >= 0
+ * @param index an index within the text >= 0
* @return the letter, word, or sentence,
* null for an invalid index or part
* @since 1.3
@@ -2769,7 +2769,7 @@
*
* @param part the AccessibleText.CHARACTER, AccessibleText.WORD,
* or AccessibleText.SENTENCE to retrieve
- * @param index an index within the text >= 0
+ * @param index an index within the text >= 0
* @return the letter, word, or sentence, null for an invalid
* index or part
* @since 1.3
@@ -2833,7 +2833,7 @@
*
* @param part the AccessibleText.CHARACTER, AccessibleText.WORD,
* or AccessibleText.SENTENCE to retrieve
- * @param index an index within the text >= 0
+ * @param index an index within the text >= 0
* @return the letter, word, or sentence, null for an invalid index
* or part
* @since 1.3
--- a/jdk/src/share/classes/javax/swing/Action.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/Action.java Wed Jul 05 19:22:42 2017 +0200
@@ -69,7 +69,7 @@
* are desired, and use simple <code>ActionListener</code>s elsewhere.
* <p>
*
- * <h4><a name="buttonActions"></a>Swing Components Supporting <code>Action</code></h4>
+ * <h3><a name="buttonActions"></a>Swing Components Supporting <code>Action</code></h3>
* <p>
* Many of Swing's components have an <code>Action</code> property. When
* an <code>Action</code> is set on a component, the following things
@@ -95,8 +95,7 @@
* button's corresponding property being set to <code>null</code>.
* <p>
* <table border="1" cellpadding="1" cellspacing="0"
- * summary="Supported Action properties"
- * valign="top" >
+ * summary="Supported Action properties">
* <tr valign="top" align="left">
* <th style="background-color:#CCCCFF" align="left">Component Property
* <th style="background-color:#CCCCFF" align="left">Components
--- a/jdk/src/share/classes/javax/swing/Box.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/Box.java Wed Jul 05 19:22:42 2017 +0200
@@ -155,7 +155,7 @@
* in which case it takes its share of available space,
* just like any other component that has no maximum height.
*
- * @param width the width of the invisible component, in pixels >= 0
+ * @param width the width of the invisible component, in pixels >= 0
* @return the component
* @see #createVerticalStrut
* @see #createGlue
@@ -179,7 +179,7 @@
* in which case it takes its share of available space,
* just like any other component that has no maximum width.
*
- * @param height the height of the invisible component, in pixels >= 0
+ * @param height the height of the invisible component, in pixels >= 0
* @return the component
* @see #createHorizontalStrut
* @see #createGlue
--- a/jdk/src/share/classes/javax/swing/BoxLayout.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/BoxLayout.java Wed Jul 05 19:22:42 2017 +0200
@@ -287,7 +287,7 @@
* in the specified target container.
*
* @param target the container that needs to be laid out
- * @return the dimensions >= 0 && <= Integer.MAX_VALUE
+ * @return the dimensions >= 0 && <= Integer.MAX_VALUE
* @exception AWTError if the target isn't the container specified to the
* BoxLayout constructor
* @see Container
@@ -313,7 +313,7 @@
* contained in the specified target container.
*
* @param target the container that needs to be laid out
- * @return the dimensions >= 0 && <= Integer.MAX_VALUE
+ * @return the dimensions >= 0 && <= Integer.MAX_VALUE
* @exception AWTError if the target isn't the container specified to the
* BoxLayout constructor
* @see #preferredLayoutSize
@@ -338,7 +338,7 @@
* to lay out the components it contains.
*
* @param target the container that needs to be laid out
- * @return the dimensions >= 0 && <= Integer.MAX_VALUE
+ * @return the dimensions >= 0 && <= Integer.MAX_VALUE
* @exception AWTError if the target isn't the container specified to the
* BoxLayout constructor
* @see #preferredLayoutSize
@@ -365,7 +365,7 @@
* to place the children along the X axis will be returned.
*
* @param target the container
- * @return the alignment >= 0.0f && <= 1.0f
+ * @return the alignment >= 0.0f && <= 1.0f
* @exception AWTError if the target isn't the container specified to the
* BoxLayout constructor
*/
@@ -382,7 +382,7 @@
* to place the children along the Y axis will be returned.
*
* @param target the container
- * @return the alignment >= 0.0f && <= 1.0f
+ * @return the alignment >= 0.0f && <= 1.0f
* @exception AWTError if the target isn't the container specified to the
* BoxLayout constructor
*/
--- a/jdk/src/share/classes/javax/swing/CellRendererPane.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/CellRendererPane.java Wed Jul 05 19:22:42 2017 +0200
@@ -96,7 +96,7 @@
/**
* If the specified component is already a child of this then we don't
* bother doing anything - stacking order doesn't matter for cell
- * renderer components (CellRendererPane doesn't paint anyway).<
+ * renderer components (CellRendererPane doesn't paint anyway).
*/
protected void addImpl(Component x, Object constraints, int index) {
if (x.getParent() == this) {
--- a/jdk/src/share/classes/javax/swing/DefaultListSelectionModel.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/DefaultListSelectionModel.java Wed Jul 05 19:22:42 2017 +0200
@@ -637,7 +637,7 @@
* Remove the indices in the interval index0,index1 (inclusive) from
* the selection model. This is typically called to sync the selection
* model width a corresponding change in the data model. Note
- * that (as always) index0 need not be <= index1.
+ * that (as always) index0 need not be <= index1.
*/
public void removeIndexInterval(int index0, int index1)
{
--- a/jdk/src/share/classes/javax/swing/DesktopManager.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/DesktopManager.java Wed Jul 05 19:22:42 2017 +0200
@@ -26,13 +26,13 @@
package javax.swing;
/** DesktopManager objects are owned by a JDesktopPane object. They are responsible
- * for implementing L&F specific behaviors for the JDesktopPane. JInternalFrame
+ * for implementing L&F specific behaviors for the JDesktopPane. JInternalFrame
* implementations should delegate specific behaviors to the DesktopManager. For
* instance, if a JInternalFrame was asked to iconify, it should try:
* <PRE>
* getDesktopPane().getDesktopManager().iconifyFrame(frame);
* </PRE>
- * This delegation allows each L&F to provide custom behaviors for desktop-specific
+ * This delegation allows each L&F to provide custom behaviors for desktop-specific
* actions. (For example, how and where the internal frame's icon would appear.)
* <p>This class provides a policy for the various JInternalFrame methods, it is not
* meant to be called directly rather the various JInternalFrame methods will call
--- a/jdk/src/share/classes/javax/swing/GroupLayout.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/GroupLayout.java Wed Jul 05 19:22:42 2017 +0200
@@ -80,7 +80,7 @@
* axis. The sequential group contains three components. A parallel group
* was used along the vertical axis.
* <p style="text-align:center">
- * <img src="doc-files/groupLayout.1.gif">
+ * <img src="doc-files/groupLayout.1.gif" alt="Sequential group along the horizontal axis in three components">
* <p>
* To reinforce that each axis is treated independently the diagram shows
* the range of each group and element along each axis. The
@@ -102,7 +102,7 @@
* the vertical axis.
* <p>
* <p style="text-align:center">
- * <img src="doc-files/groupLayout.2.gif">
+ * <img src="doc-files/groupLayout.2.gif" alt="Sequential group along the vertical axis in three components">
* <p>
* As {@code c1} is the largest of the three components, the parallel
* group is sized to {@code c1}. As {@code c2} and {@code c3} are smaller
@@ -116,7 +116,7 @@
* The following diagram shows a sequential group along both the horizontal
* and vertical axis.
* <p style="text-align:center">
- * <img src="doc-files/groupLayout.3.gif">
+ * <img src="doc-files/groupLayout.3.gif" alt="Sequential group along both the horizontal and vertical axis in three components">
* <p>
* {@code GroupLayout} provides the ability to insert gaps between
* {@code Component}s. The size of the gap is determined by an
@@ -173,7 +173,7 @@
* <p>
* When run the following is produced.
* <p style="text-align:center">
- * <img src="doc-files/groupLayout.example.png">
+ * <img src="doc-files/groupLayout.example.png" alt="Produced horizontal/vertical form">
* <p>
* This layout consists of the following.
* <ul><li>The horizontal axis consists of a sequential group containing two
--- a/jdk/src/share/classes/javax/swing/JComponent.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/JComponent.java Wed Jul 05 19:22:42 2017 +0200
@@ -4906,12 +4906,12 @@
/**
* Returns {@code true} if a paint triggered on a child component should cause
* painting to originate from this Component, or one of its ancestors.
- * <p/>
+ * <p>
* Calling {@link #repaint} or {@link #paintImmediately(int, int, int, int)}
* on a Swing component will result in calling
* the {@link JComponent#paintImmediately(int, int, int, int)} method of
* the first ancestor which {@code isPaintingOrigin()} returns {@code true}, if there are any.
- * <p/>
+ * <p>
* {@code JComponent} subclasses that need to be painted when any of their
* children are repainted should override this method to return {@code true}.
*
--- a/jdk/src/share/classes/javax/swing/JEditorPane.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/JEditorPane.java Wed Jul 05 19:22:42 2017 +0200
@@ -103,7 +103,7 @@
* fragment is a possible hyperlink listener implementation, that treats
* HTML frame events specially, and simply displays any other activated
* hyperlinks.
- * <code><pre>
+ * <pre>
class Hyperactive implements HyperlinkListener {
@@ -125,7 +125,7 @@
}
}
- * </pre></code>
+ * </pre>
* <p>
* For information on customizing how <b>text/html</b> is rendered please see
* {@link #W3C_LENGTH_UNITS} and {@link #HONOR_DISPLAY_PROPERTIES}
--- a/jdk/src/share/classes/javax/swing/JFileChooser.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/JFileChooser.java Wed Jul 05 19:22:42 2017 +0200
@@ -67,7 +67,7 @@
* <pre>
* JFileChooser chooser = new JFileChooser();
* FileNameExtensionFilter filter = new FileNameExtensionFilter(
- * "JPG & GIF Images", "jpg", "gif");
+ * "JPG & GIF Images", "jpg", "gif");
* chooser.setFileFilter(filter);
* int returnVal = chooser.showOpenDialog(parent);
* if(returnVal == JFileChooser.APPROVE_OPTION) {
@@ -634,7 +634,7 @@
/**
* Pops up an "Open File" file chooser dialog. Note that the
* text that appears in the approve button is determined by
- * the L&F.
+ * the L&F.
*
* @param parent the parent component of the dialog,
* can be <code>null</code>;
@@ -659,7 +659,7 @@
/**
* Pops up a "Save File" file chooser dialog. Note that the
* text that appears in the approve button is determined by
- * the L&F.
+ * the L&F.
*
* @param parent the parent component of the dialog,
* can be <code>null</code>;
@@ -861,7 +861,7 @@
* @beaninfo
* preferred: true
* bound: true
- * description: Sets whether the approve & cancel buttons are shown.
+ * description: Sets whether the approve & cancel buttons are shown.
*
* @see #getControlButtonsAreShown
* @see #CONTROL_BUTTONS_ARE_SHOWN_CHANGED_PROPERTY
@@ -1841,7 +1841,7 @@
}
/**
- * Returns a string that specifies the name of the L&F class
+ * Returns a string that specifies the name of the L&F class
* that renders this component.
*
* @return the string "FileChooserUI"
@@ -1849,16 +1849,16 @@
* @see UIDefaults#getUI
* @beaninfo
* expert: true
- * description: A string that specifies the name of the L&F class.
+ * description: A string that specifies the name of the L&F class.
*/
public String getUIClassID() {
return uiClassID;
}
/**
- * Gets the UI object which implements the L&F for this component.
+ * Gets the UI object which implements the L&F for this component.
*
- * @return the FileChooserUI object that implements the FileChooserUI L&F
+ * @return the FileChooserUI object that implements the FileChooserUI L&F
*/
public FileChooserUI getUI() {
return (FileChooserUI) ui;
--- a/jdk/src/share/classes/javax/swing/JLabel.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/JLabel.java Wed Jul 05 19:22:42 2017 +0200
@@ -237,7 +237,7 @@
/**
- * Returns the L&F object that renders this component.
+ * Returns the L&F object that renders this component.
*
* @return LabelUI object
*/
@@ -247,9 +247,9 @@
/**
- * Sets the L&F object that renders this component.
+ * Sets the L&F object that renders this component.
*
- * @param ui the LabelUI L&F object
+ * @param ui the LabelUI L&F object
* @see UIDefaults#getUI
* @beaninfo
* bound: true
@@ -277,7 +277,7 @@
/**
- * Returns a string that specifies the name of the l&f class
+ * Returns a string that specifies the name of the l&f class
* that renders this component.
*
* @return String "LabelUI"
@@ -545,8 +545,8 @@
*
* @since 1.4
* @param index Index into the String to underline
- * @exception IllegalArgumentException will be thrown if <code>index</code
- * is >= length of the text, or < -1
+ * @exception IllegalArgumentException will be thrown if <code>index</code>
+ * is >= length of the text, or < -1
*
* @beaninfo
* bound: true
@@ -1251,7 +1251,7 @@
*
* @param part the AccessibleText.CHARACTER, AccessibleText.WORD,
* or AccessibleText.SENTENCE to retrieve
- * @param index an index within the text >= 0
+ * @param index an index within the text >= 0
* @return the letter, word, or sentence,
* null for an invalid index or part
* @since 1.3
@@ -1298,7 +1298,7 @@
*
* @param part the AccessibleText.CHARACTER, AccessibleText.WORD,
* or AccessibleText.SENTENCE to retrieve
- * @param index an index within the text >= 0
+ * @param index an index within the text >= 0
* @return the letter, word, or sentence, null for an invalid
* index or part
* @since 1.3
@@ -1362,7 +1362,7 @@
*
* @param part the AccessibleText.CHARACTER, AccessibleText.WORD,
* or AccessibleText.SENTENCE to retrieve
- * @param index an index within the text >= 0
+ * @param index an index within the text >= 0
* @return the letter, word, or sentence, null for an invalid index
* or part
* @since 1.3
--- a/jdk/src/share/classes/javax/swing/JList.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/JList.java Wed Jul 05 19:22:42 2017 +0200
@@ -146,7 +146,7 @@
* Responsibility for listening to selection changes in order to keep the list's
* visual representation up to date lies with the list's {@code ListUI}.
* <p>
- * <a name="renderer">
+ * <a name="renderer"></a>
* Painting of cells in a {@code JList} is handled by a delegate called a
* cell renderer, installed on the list as the {@code cellRenderer} property.
* The renderer provides a {@code java.awt.Component} that is used
@@ -202,7 +202,7 @@
* To avoid these calculations, you can set a {@code fixedCellWidth} and
* {@code fixedCellHeight} on the list, or have these values calculated
* automatically based on a single prototype value:
- * <a name="prototype_example">
+ * <a name="prototype_example"></a>
* <pre>
* {@code
* JList<String> bigDataList = new JList<String>(bigData);
@@ -1512,7 +1512,7 @@
* tooltip text on the cell level, by using {@code setToolTipText} on your
* cell renderer component.
* <p>
- * <bold>Note:</bold> For <code>JList</code> to properly display the
+ * <strong>Note:</strong> For <code>JList</code> to properly display the
* tooltips of its renderers in this manner, <code>JList</code> must be a
* registered component with the <code>ToolTipManager</code>. This registration
* is done automatically in the constructor. However, if at a later point
--- a/jdk/src/share/classes/javax/swing/JMenu.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/JMenu.java Wed Jul 05 19:22:42 2017 +0200
@@ -225,7 +225,7 @@
/**
- * Returns the name of the L&F class that renders this component.
+ * Returns the name of the L&F class that renders this component.
*
* @return the string "MenuUI"
* @see JComponent#getUIClassID
@@ -490,7 +490,7 @@
/**
* Returns the suggested delay, in milliseconds, before submenus
* are popped up or down.
- * Each look and feel (L&F) may determine its own policy for
+ * Each look and feel (L&F) may determine its own policy for
* observing the <code>delay</code> property.
* In most cases, the delay is not observed for top level menus
* or while dragging. The default for <code>delay</code> is 0.
@@ -506,7 +506,7 @@
/**
* Sets the suggested delay before the menu's <code>PopupMenu</code>
- * is popped up or down. Each look and feel (L&F) may determine
+ * is popped up or down. Each look and feel (L&F) may determine
* it's own policy for observing the delay property. In most cases,
* the delay is not observed for top level menus or while dragging.
* This method is a property of the look and feel code and is used
@@ -676,7 +676,7 @@
* @param pos an integer specifying the position at which to add the
* new menu item
* @exception IllegalArgumentException when the value of
- * <code>pos</code> < 0
+ * <code>pos</code> < 0
*/
public void insert(String s, int pos) {
if (pos < 0) {
@@ -695,7 +695,7 @@
* new <code>JMenuitem</code>
* @return the new menu item
* @exception IllegalArgumentException if the value of
- * <code>pos</code> < 0
+ * <code>pos</code> < 0
*/
public JMenuItem insert(JMenuItem mi, int pos) {
if (pos < 0) {
@@ -714,7 +714,7 @@
* @param pos an integer specifying the position at which to add the
* new menu item
* @exception IllegalArgumentException if the value of
- * <code>pos</code> < 0
+ * <code>pos</code> < 0
*/
public JMenuItem insert(Action a, int pos) {
if (pos < 0) {
@@ -735,7 +735,7 @@
* @param index an integer specifying the position at which to
* insert the menu separator
* @exception IllegalArgumentException if the value of
- * <code>index</code> < 0
+ * <code>index</code> < 0
*/
public void insertSeparator(int index) {
if (index < 0) {
@@ -754,7 +754,7 @@
*
* @param pos an integer specifying the position
* @exception IllegalArgumentException if the value of
- * <code>pos</code> < 0
+ * <code>pos</code> < 0
* @return the menu item at the specified position; or <code>null</code>
* if the item as the specified position is not a menu item
*/
@@ -811,7 +811,7 @@
*
* @param pos the position of the item to be removed
* @exception IllegalArgumentException if the value of
- * <code>pos</code> < 0, or if <code>pos</code>
+ * <code>pos</code> < 0, or if <code>pos</code>
* is greater than the number of menu items
*/
public void remove(int pos) {
--- a/jdk/src/share/classes/javax/swing/JMenuBar.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/JMenuBar.java Wed Jul 05 19:22:42 2017 +0200
@@ -130,9 +130,9 @@
}
/**
- * Sets the L&F object that renders this component.
+ * Sets the L&F object that renders this component.
*
- * @param ui the new MenuBarUI L&F object
+ * @param ui the new MenuBarUI L&F object
* @see UIDefaults#getUI
* @beaninfo
* bound: true
@@ -155,7 +155,7 @@
/**
- * Returns the name of the L&F class that renders this component.
+ * Returns the name of the L&F class that renders this component.
*
* @return the string "MenuBarUI"
* @see JComponent#getUIClassID
--- a/jdk/src/share/classes/javax/swing/JTextField.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/JTextField.java Wed Jul 05 19:22:42 2017 +0200
@@ -367,7 +367,7 @@
/**
* Returns the number of columns in this <code>TextField</code>.
*
- * @return the number of columns >= 0
+ * @return the number of columns >= 0
*/
public int getColumns() {
return columns;
@@ -377,7 +377,7 @@
* Sets the number of columns in this <code>TextField</code>,
* and then invalidate the layout.
*
- * @param columns the number of columns >= 0
+ * @param columns the number of columns >= 0
* @exception IllegalArgumentException if <code>columns</code>
* is less than 0
* @beaninfo
@@ -402,7 +402,7 @@
* character <em>m</em> for the font used. This method can be
* redefined to be some alternative amount
*
- * @return the column width >= 1
+ * @return the column width >= 1
*/
protected int getColumnWidth() {
if (columnWidth == 0) {
@@ -744,7 +744,7 @@
/**
* Gets the scroll offset, in pixels.
*
- * @return the offset >= 0
+ * @return the offset >= 0
*/
public int getScrollOffset() {
return visibility.getValue();
@@ -753,7 +753,7 @@
/**
* Sets the scroll offset, in pixels.
*
- * @param scrollOffset the offset >= 0
+ * @param scrollOffset the offset >= 0
*/
public void setScrollOffset(int scrollOffset) {
visibility.setValue(scrollOffset);
--- a/jdk/src/share/classes/javax/swing/KeyboardManager.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/KeyboardManager.java Wed Jul 05 19:22:42 2017 +0200
@@ -208,7 +208,7 @@
public boolean fireKeyboardAction(KeyEvent e, boolean pressed, Container topAncestor) {
if (e.isConsumed()) {
- System.out.println("Aquired pre-used event!");
+ System.out.println("Acquired pre-used event!");
Thread.dumpStack();
}
--- a/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java Wed Jul 05 19:22:42 2017 +0200
@@ -116,7 +116,7 @@
index = Collections.binarySearch(cycle, aComponent, comparator);
} catch (ClassCastException e) {
if (log.isLoggable(PlatformLogger.Level.FINE)) {
- log.fine("### During the binary search for " + aComponent + " the exception occured: ", e);
+ log.fine("### During the binary search for " + aComponent + " the exception occurred: ", e);
}
return -1;
}
--- a/jdk/src/share/classes/javax/swing/text/AbstractDocument.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/text/AbstractDocument.java Wed Jul 05 19:22:42 2017 +0200
@@ -1367,7 +1367,7 @@
currWriter = Thread.currentThread();
numWriters = 1;
} catch (InterruptedException e) {
- throw new Error("Interrupted attempt to aquire write lock");
+ throw new Error("Interrupted attempt to acquire write lock");
}
}
@@ -1409,7 +1409,7 @@
}
numReaders += 1;
} catch (InterruptedException e) {
- throw new Error("Interrupted attempt to aquire read lock");
+ throw new Error("Interrupted attempt to acquire read lock");
}
}
--- a/jdk/src/share/classes/javax/swing/tree/DefaultMutableTreeNode.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/javax/swing/tree/DefaultMutableTreeNode.java Wed Jul 05 19:22:42 2017 +0200
@@ -26,6 +26,7 @@
package javax.swing.tree;
// ISSUE: this class depends on nothing in AWT -- move to java.util?
+import java.beans.Transient;
import java.io.*;
import java.util.*;
@@ -215,6 +216,7 @@
*
* @param newParent this node's new parent
*/
+ @Transient
public void setParent(MutableTreeNode newParent) {
parent = newParent;
}
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ByteVector.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ByteVector.java Wed Jul 05 19:22:42 2017 +0200
@@ -233,11 +233,14 @@
* automatically enlarged if necessary.
*
* @param s
- * a String.
+ * a String whose UTF8 encoded length must be less than 65536.
* @return this byte vector.
*/
public ByteVector putUTF8(final String s) {
int charLength = s.length();
+ if (charLength > 65535) {
+ throw new IllegalArgumentException();
+ }
int len = length;
if (len + 2 + charLength > data.length) {
enlarge(2 + charLength);
@@ -267,6 +270,9 @@
byteLength += 2;
}
}
+ if (byteLength > 65535) {
+ throw new IllegalArgumentException();
+ }
data[length] = (byte) (byteLength >>> 8);
data[length + 1] = (byte) byteLength;
if (length + 2 + byteLength > data.length) {
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ClassReader.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ClassReader.java Wed Jul 05 19:22:42 2017 +0200
@@ -1266,7 +1266,7 @@
u += 2;
// generates the first (implicit) stack map frame
- if (FRAMES && (stackMap != 0 || unzip)) {
+ if (FRAMES && stackMap != 0) {
/*
* for the first explicit frame the offset is not offset_delta + 1
* but only offset_delta; setting the implicit frame offset to -1
@@ -1283,8 +1283,6 @@
if (unzip) {
getImplicitFrame(context);
}
- }
- if (FRAMES && stackMap != 0) {
/*
* Finds labels for UNINITIALIZED frame types. Instead of decoding
* each element of the stack map table, we look for 3 consecutive
@@ -1322,17 +1320,19 @@
}
}
- // visits the frame(s) for this offset, if any
+ // visits the frame for this offset, if any
while (FRAMES && frame != null
&& (frame.offset == offset || frame.offset == -1)) {
// if there is a frame for this offset, makes the visitor visit
// it, and reads the next frame if there is one.
- if (!zip || unzip) {
- mv.visitFrame(Opcodes.F_NEW, frame.localCount, frame.local,
- frame.stackCount, frame.stack);
- } else if (frame.offset != -1) {
- mv.visitFrame(frame.mode, frame.localDiff, frame.local,
- frame.stackCount, frame.stack);
+ if (frame.offset != -1) {
+ if (!zip || unzip) {
+ mv.visitFrame(Opcodes.F_NEW, frame.localCount,
+ frame.local, frame.stackCount, frame.stack);
+ } else {
+ mv.visitFrame(frame.mode, frame.localDiff, frame.local,
+ frame.stackCount, frame.stack);
+ }
}
if (frameCount > 0) {
stackMap = readFrame(stackMap, zip, unzip, frame);
@@ -1434,6 +1434,7 @@
case ClassWriter.FIELDORMETH_INSN:
case ClassWriter.ITFMETH_INSN: {
int cpIndex = items[readUnsignedShort(u + 1)];
+ boolean itf = b[cpIndex - 1] == ClassWriter.IMETH;
String iowner = readClass(cpIndex, c);
cpIndex = items[readUnsignedShort(cpIndex + 2)];
String iname = readUTF8(cpIndex, c);
@@ -1441,7 +1442,7 @@
if (opcode < Opcodes.INVOKEVIRTUAL) {
mv.visitFieldInsn(opcode, iowner, iname, idesc);
} else {
- mv.visitMethodInsn(opcode, iowner, iname, idesc);
+ mv.visitMethodInsn(opcode, iowner, iname, idesc, itf);
}
if (opcode == Opcodes.INVOKEINTERFACE) {
u += 5;
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ClassWriter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/ClassWriter.java Wed Jul 05 19:22:42 2017 +0200
@@ -516,12 +516,12 @@
* <tt>true</tt> if the maximum stack size and number of local variables
* must be automatically computed.
*/
- private final boolean computeMaxs;
+ private boolean computeMaxs;
/**
* <tt>true</tt> if the stack map frames must be recomputed from scratch.
*/
- private final boolean computeFrames;
+ private boolean computeFrames;
/**
* <tt>true</tt> if the stack map tables of this class are invalid. The
@@ -988,9 +988,22 @@
attrs.put(this, null, 0, -1, -1, out);
}
if (invalidFrames) {
- ClassWriter cw = new ClassWriter(COMPUTE_FRAMES);
- new ClassReader(out.data).accept(cw, ClassReader.SKIP_FRAMES);
- return cw.toByteArray();
+ anns = null;
+ ianns = null;
+ attrs = null;
+ innerClassesCount = 0;
+ innerClasses = null;
+ bootstrapMethodsCount = 0;
+ bootstrapMethods = null;
+ firstField = null;
+ lastField = null;
+ firstMethod = null;
+ lastMethod = null;
+ computeMaxs = false;
+ computeFrames = true;
+ invalidFrames = false;
+ new ClassReader(out.data).accept(this, ClassReader.SKIP_FRAMES);
+ return toByteArray();
}
return out.data;
}
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/Handle.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/Handle.java Wed Jul 05 19:22:42 2017 +0200
@@ -78,7 +78,8 @@
final int tag;
/**
- * The internal name of the field or method designed by this handle.
+ * The internal name of the class that owns the field or method designated
+ * by this handle.
*/
final String owner;
@@ -105,8 +106,8 @@
* {@link Opcodes#H_NEWINVOKESPECIAL} or
* {@link Opcodes#H_INVOKEINTERFACE}.
* @param owner
- * the internal name of the field or method designed by this
- * handle.
+ * the internal name of the class that owns the field or method
+ * designated by this handle.
* @param name
* the name of the field or method designated by this handle.
* @param desc
@@ -135,9 +136,11 @@
}
/**
- * Returns the internal name of the field or method designed by this handle.
+ * Returns the internal name of the class that owns the field or method
+ * designated by this handle.
*
- * @return the internal name of the field or method designed by this handle.
+ * @return the internal name of the class that owns the field or method
+ * designated by this handle.
*/
public String getOwner() {
return owner;
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/MethodVisitor.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/MethodVisitor.java Wed Jul 05 19:22:42 2017 +0200
@@ -68,11 +68,11 @@
* <tt>visitTryCatchBlock</tt> | <tt>visitTryCatchBlockAnnotation</tt> |
* <tt>visitLocalVariable</tt> | <tt>visitLocalVariableAnnotation</tt> |
* <tt>visitLineNumber</tt> )* <tt>visitMaxs</tt> ] <tt>visitEnd</tt>. In
- * addition, the <tt>visit<i>X</i>Insn</tt> and <tt>visitLabel</tt>
- * methods must be called in the sequential order of the bytecode instructions
- * of the visited code, <tt>visitInsnAnnotation</tt> must be called <i>after</i>
- * the annotated instruction, <tt>visitTryCatchBlock</tt> must be called
- * <i>before</i> the labels passed as arguments have been visited,
+ * addition, the <tt>visit<i>X</i>Insn</tt> and <tt>visitLabel</tt> methods must
+ * be called in the sequential order of the bytecode instructions of the visited
+ * code, <tt>visitInsnAnnotation</tt> must be called <i>after</i> the annotated
+ * instruction, <tt>visitTryCatchBlock</tt> must be called <i>before</i> the
+ * labels passed as arguments have been visited,
* <tt>visitTryCatchBlockAnnotation</tt> must be called <i>after</i> the
* corresponding try catch block has been visited, and the
* <tt>visitLocalVariable</tt>, <tt>visitLocalVariableAnnotation</tt> and
@@ -274,13 +274,9 @@
* compressed form (all frames must use the same format, i.e. you must not
* mix expanded and compressed frames within a single method):
* <ul>
- * <li>In expanded form, all frames must have the F_NEW type, and a first
- * frame corresponding to the method signature must be explicitly visited
- * before the first instruction.</li>
+ * <li>In expanded form, all frames must have the F_NEW type.</li>
* <li>In compressed form, frames are basically "deltas" from the state of
- * the previous frame (the first frame, corresponding to the method's
- * parameters and access flags, is implicit in this form, and must not be
- * visited):
+ * the previous frame:
* <ul>
* <li>{@link Opcodes#F_SAME} representing frame with exactly the same
* locals as the previous frame and with the empty stack.</li>
@@ -296,8 +292,14 @@
* same as the locals in the previous frame, except that the last 1-3 locals
* are absent and with the empty stack (<code>nLocals</code> is 1, 2 or 3).</li>
* <li>{@link Opcodes#F_FULL} representing complete frame data.</li>
- * </ul></li>
+ * </ul>
+ * </li>
* </ul>
+ * <br>
+ * In both cases the first frame, corresponding to the method's parameters
+ * and access flags, is implicit and must not be visited. Also, it is
+ * illegal to visit two or more frames for the same code location (i.e., at
+ * least one instruction must be visited between two calls to visitFrame).
*
* @param type
* the type of this stack map frame. Must be
@@ -466,14 +468,53 @@
* @param desc
* the method's descriptor (see {@link Type Type}).
*/
+ @Deprecated
public void visitMethodInsn(int opcode, String owner, String name,
String desc) {
+ if (api >= Opcodes.ASM5) {
+ boolean itf = opcode == Opcodes.INVOKEINTERFACE;
+ visitMethodInsn(opcode, owner, name, desc, itf);
+ return;
+ }
if (mv != null) {
mv.visitMethodInsn(opcode, owner, name, desc);
}
}
/**
+ * Visits a method instruction. A method instruction is an instruction that
+ * invokes a method.
+ *
+ * @param opcode
+ * the opcode of the type instruction to be visited. This opcode
+ * is either INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or
+ * INVOKEINTERFACE.
+ * @param owner
+ * the internal name of the method's owner class (see
+ * {@link Type#getInternalName() getInternalName}).
+ * @param name
+ * the method's name.
+ * @param desc
+ * the method's descriptor (see {@link Type Type}).
+ * @param itf
+ * if the method's owner class is an interface.
+ */
+ public void visitMethodInsn(int opcode, String owner, String name,
+ String desc, boolean itf) {
+ if (api < Opcodes.ASM5) {
+ if (itf != (opcode == Opcodes.INVOKEINTERFACE)) {
+ throw new IllegalArgumentException(
+ "INVOKESPECIAL/STATIC on interfaces require ASM 5");
+ }
+ visitMethodInsn(opcode, owner, name, desc);
+ return;
+ }
+ if (mv != null) {
+ mv.visitMethodInsn(opcode, owner, name, desc, itf);
+ }
+ }
+
+ /**
* Visits an invokedynamic instruction.
*
* @param name
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/MethodWriter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/MethodWriter.java Wed Jul 05 19:22:42 2017 +0200
@@ -71,7 +71,7 @@
/**
* Pseudo access flag used to denote constructors.
*/
- static final int ACC_CONSTRUCTOR = 262144;
+ static final int ACC_CONSTRUCTOR = 0x80000;
/**
* Frame has exactly the same locals as the previous stack map frame and
@@ -298,11 +298,6 @@
private int[] previousFrame;
/**
- * Index of the next element to be added in {@link #frame}.
- */
- private int frameIndex;
-
- /**
* The current stack map frame. The first element contains the offset of the
* instruction to which the frame corresponds, the second element is the
* number of locals and the third one is the number of stack elements. The
@@ -496,6 +491,9 @@
cw.lastMethod = this;
this.cw = cw;
this.access = access;
+ if ("<init>".equals(name)) {
+ this.access |= ACC_CONSTRUCTOR;
+ }
this.name = cw.newUTF8(name);
this.desc = cw.newUTF8(desc);
this.descriptor = desc;
@@ -511,9 +509,6 @@
}
this.compute = computeFrames ? FRAMES : (computeMaxs ? MAXS : NOTHING);
if (computeMaxs || computeFrames) {
- if (computeFrames && "<init>".equals(name)) {
- this.access |= ACC_CONSTRUCTOR;
- }
// updates maxLocals
int size = Type.getArgumentsAndReturnSizes(descriptor) >> 2;
if ((access & Opcodes.ACC_STATIC) != 0) {
@@ -649,8 +644,11 @@
}
if (type == Opcodes.F_NEW) {
+ if (previousFrame == null) {
+ visitImplicitFirstFrame();
+ }
currentLocals = nLocal;
- startFrame(code.length, nLocal, nStack);
+ int frameIndex = startFrame(code.length, nLocal, nStack);
for (int i = 0; i < nLocal; ++i) {
if (local[i] instanceof String) {
frame[frameIndex++] = Frame.OBJECT
@@ -914,9 +912,8 @@
@Override
public void visitMethodInsn(final int opcode, final String owner,
- final String name, final String desc) {
+ final String name, final String desc, final boolean itf) {
lastCodeOffset = code.length;
- boolean itf = opcode == Opcodes.INVOKEINTERFACE;
Item i = cw.newMethodItem(owner, name, desc, itf);
int argSize = i.intVal;
// Label currentBlock = this.currentBlock;
@@ -954,7 +951,7 @@
}
}
// adds the instruction to the bytecode of the method
- if (itf) {
+ if (opcode == Opcodes.INVOKEINTERFACE) {
if (argSize == 0) {
argSize = Type.getArgumentsAndReturnSizes(desc);
i.intVal = argSize;
@@ -1528,8 +1525,8 @@
}
code.data[end] = (byte) Opcodes.ATHROW;
// emits a frame for this unreachable block
- startFrame(start, 0, 1);
- frame[frameIndex++] = Frame.OBJECT
+ int frameIndex = startFrame(start, 0, 1);
+ frame[frameIndex] = Frame.OBJECT
| cw.addType("java/lang/Throwable");
endFrame();
// removes the start-end range from the exception
@@ -1756,7 +1753,7 @@
}
}
// visits the frame and its content
- startFrame(f.owner.position, nLocal, nStack);
+ int frameIndex = startFrame(f.owner.position, nLocal, nStack);
for (i = 0; nLocal > 0; ++i, --nLocal) {
t = locals[i];
frame[frameIndex++] = t;
@@ -1775,6 +1772,67 @@
}
/**
+ * Visit the implicit first frame of this method.
+ */
+ private void visitImplicitFirstFrame() {
+ // There can be at most descriptor.length() + 1 locals
+ int frameIndex = startFrame(0, descriptor.length() + 1, 0);
+ if ((access & Opcodes.ACC_STATIC) == 0) {
+ if ((access & ACC_CONSTRUCTOR) == 0) {
+ frame[frameIndex++] = Frame.OBJECT | cw.addType(cw.thisName);
+ } else {
+ frame[frameIndex++] = 6; // Opcodes.UNINITIALIZED_THIS;
+ }
+ }
+ int i = 1;
+ loop: while (true) {
+ int j = i;
+ switch (descriptor.charAt(i++)) {
+ case 'Z':
+ case 'C':
+ case 'B':
+ case 'S':
+ case 'I':
+ frame[frameIndex++] = 1; // Opcodes.INTEGER;
+ break;
+ case 'F':
+ frame[frameIndex++] = 2; // Opcodes.FLOAT;
+ break;
+ case 'J':
+ frame[frameIndex++] = 4; // Opcodes.LONG;
+ break;
+ case 'D':
+ frame[frameIndex++] = 3; // Opcodes.DOUBLE;
+ break;
+ case '[':
+ while (descriptor.charAt(i) == '[') {
+ ++i;
+ }
+ if (descriptor.charAt(i) == 'L') {
+ ++i;
+ while (descriptor.charAt(i) != ';') {
+ ++i;
+ }
+ }
+ frame[frameIndex++] = Frame.OBJECT
+ | cw.addType(descriptor.substring(j, ++i));
+ break;
+ case 'L':
+ while (descriptor.charAt(i) != ';') {
+ ++i;
+ }
+ frame[frameIndex++] = Frame.OBJECT
+ | cw.addType(descriptor.substring(j + 1, i++));
+ break;
+ default:
+ break loop;
+ }
+ }
+ frame[1] = frameIndex - 3;
+ endFrame();
+ }
+
+ /**
* Starts the visit of a stack map frame.
*
* @param offset
@@ -1783,8 +1841,9 @@
* the number of local variables in the frame.
* @param nStack
* the number of stack elements in the frame.
+ * @return the index of the next element to be written in this frame.
*/
- private void startFrame(final int offset, final int nLocal, final int nStack) {
+ private int startFrame(final int offset, final int nLocal, final int nStack) {
int n = 3 + nLocal + nStack;
if (frame == null || frame.length < n) {
frame = new int[n];
@@ -1792,7 +1851,7 @@
frame[0] = offset;
frame[1] = nLocal;
frame[2] = nStack;
- frameIndex = 3;
+ return 3;
}
/**
@@ -2110,7 +2169,8 @@
*/
final void put(final ByteVector out) {
final int FACTOR = ClassWriter.TO_ACC_SYNTHETIC;
- int mask = Opcodes.ACC_DEPRECATED | ClassWriter.ACC_SYNTHETIC_ATTRIBUTE
+ int mask = ACC_CONSTRUCTOR | Opcodes.ACC_DEPRECATED
+ | ClassWriter.ACC_SYNTHETIC_ATTRIBUTE
| ((access & ClassWriter.ACC_SYNTHETIC_ATTRIBUTE) / FACTOR);
out.putShort(access & ~mask).putShort(name).putShort(desc);
if (classReaderOffset != 0) {
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/AdviceAdapter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/AdviceAdapter.java Wed Jul 05 19:22:42 2017 +0200
@@ -442,10 +442,31 @@
}
}
+ @Deprecated
@Override
public void visitMethodInsn(final int opcode, final String owner,
final String name, final String desc) {
- mv.visitMethodInsn(opcode, owner, name, desc);
+ if (api >= Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc,
+ opcode == Opcodes.INVOKEINTERFACE);
+ }
+
+ @Override
+ public void visitMethodInsn(final int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
+ if (api < Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc, itf);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc, itf);
+ }
+
+ private void doVisitMethodInsn(int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
+ mv.visitMethodInsn(opcode, owner, name, desc, itf);
if (constructor) {
Type[] types = Type.getArgumentTypes(desc);
for (int i = 0; i < types.length; i++) {
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/AnalyzerAdapter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/AnalyzerAdapter.java Wed Jul 05 19:22:42 2017 +0200
@@ -165,10 +165,15 @@
* @param mv
* the method visitor to which this adapter delegates calls. May
* be <tt>null</tt>.
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public AnalyzerAdapter(final String owner, final int access,
final String name, final String desc, final MethodVisitor mv) {
this(Opcodes.ASM5, owner, access, name, desc, mv);
+ if (getClass() != AnalyzerAdapter.class) {
+ throw new IllegalStateException();
+ }
}
/**
@@ -331,11 +336,32 @@
execute(opcode, 0, desc);
}
+ @Deprecated
@Override
public void visitMethodInsn(final int opcode, final String owner,
final String name, final String desc) {
+ if (api >= Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc,
+ opcode == Opcodes.INVOKEINTERFACE);
+ }
+
+ @Override
+ public void visitMethodInsn(final int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
+ if (api < Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc, itf);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc, itf);
+ }
+
+ private void doVisitMethodInsn(int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
if (mv != null) {
- mv.visitMethodInsn(opcode, owner, name, desc);
+ mv.visitMethodInsn(opcode, owner, name, desc, itf);
}
if (this.locals == null) {
labels = null;
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/CodeSizeEvaluator.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/CodeSizeEvaluator.java Wed Jul 05 19:22:42 2017 +0200
@@ -149,9 +149,30 @@
}
}
+ @Deprecated
@Override
public void visitMethodInsn(final int opcode, final String owner,
final String name, final String desc) {
+ if (api >= Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc,
+ opcode == Opcodes.INVOKEINTERFACE);
+ }
+
+ @Override
+ public void visitMethodInsn(final int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
+ if (api < Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc, itf);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc, itf);
+ }
+
+ private void doVisitMethodInsn(int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
if (opcode == INVOKEINTERFACE) {
minSize += 5;
maxSize += 5;
@@ -160,7 +181,7 @@
maxSize += 3;
}
if (mv != null) {
- mv.visitMethodInsn(opcode, owner, name, desc);
+ mv.visitMethodInsn(opcode, owner, name, desc, itf);
}
}
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/GeneratorAdapter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/GeneratorAdapter.java Wed Jul 05 19:22:42 2017 +0200
@@ -284,10 +284,15 @@
* the method's name.
* @param desc
* the method's descriptor (see {@link Type Type}).
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public GeneratorAdapter(final MethodVisitor mv, final int access,
final String name, final String desc) {
this(Opcodes.ASM5, mv, access, name, desc);
+ if (getClass() != GeneratorAdapter.class) {
+ throw new IllegalStateException();
+ }
}
/**
@@ -1400,11 +1405,11 @@
* the method to be invoked.
*/
private void invokeInsn(final int opcode, final Type type,
- final Method method) {
+ final Method method, final boolean itf) {
String owner = type.getSort() == Type.ARRAY ? type.getDescriptor()
: type.getInternalName();
mv.visitMethodInsn(opcode, owner, method.getName(),
- method.getDescriptor());
+ method.getDescriptor(), itf);
}
/**
@@ -1416,7 +1421,7 @@
* the method to be invoked.
*/
public void invokeVirtual(final Type owner, final Method method) {
- invokeInsn(Opcodes.INVOKEVIRTUAL, owner, method);
+ invokeInsn(Opcodes.INVOKEVIRTUAL, owner, method, false);
}
/**
@@ -1428,7 +1433,7 @@
* the constructor to be invoked.
*/
public void invokeConstructor(final Type type, final Method method) {
- invokeInsn(Opcodes.INVOKESPECIAL, type, method);
+ invokeInsn(Opcodes.INVOKESPECIAL, type, method, false);
}
/**
@@ -1440,7 +1445,7 @@
* the method to be invoked.
*/
public void invokeStatic(final Type owner, final Method method) {
- invokeInsn(Opcodes.INVOKESTATIC, owner, method);
+ invokeInsn(Opcodes.INVOKESTATIC, owner, method, false);
}
/**
@@ -1452,7 +1457,7 @@
* the method to be invoked.
*/
public void invokeInterface(final Type owner, final Method method) {
- invokeInsn(Opcodes.INVOKEINTERFACE, owner, method);
+ invokeInsn(Opcodes.INVOKEINTERFACE, owner, method, true);
}
/**
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/InstructionAdapter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/InstructionAdapter.java Wed Jul 05 19:22:42 2017 +0200
@@ -82,9 +82,14 @@
*
* @param mv
* the method visitor to which this adapter delegates calls.
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public InstructionAdapter(final MethodVisitor mv) {
this(Opcodes.ASM5, mv);
+ if (getClass() != InstructionAdapter.class) {
+ throw new IllegalStateException();
+ }
}
/**
@@ -536,18 +541,39 @@
}
}
+ @Deprecated
@Override
public void visitMethodInsn(final int opcode, final String owner,
final String name, final String desc) {
+ if (api >= Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc,
+ opcode == Opcodes.INVOKEINTERFACE);
+ }
+
+ @Override
+ public void visitMethodInsn(final int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
+ if (api < Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc, itf);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc, itf);
+ }
+
+ private void doVisitMethodInsn(int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
switch (opcode) {
case Opcodes.INVOKESPECIAL:
- invokespecial(owner, name, desc);
+ invokespecial(owner, name, desc, itf);
break;
case Opcodes.INVOKEVIRTUAL:
- invokevirtual(owner, name, desc);
+ invokevirtual(owner, name, desc, itf);
break;
case Opcodes.INVOKESTATIC:
- invokestatic(owner, name, desc);
+ invokestatic(owner, name, desc, itf);
break;
case Opcodes.INVOKEINTERFACE:
invokeinterface(owner, name, desc);
@@ -1014,24 +1040,78 @@
mv.visitFieldInsn(Opcodes.PUTFIELD, owner, name, desc);
}
+ @Deprecated
public void invokevirtual(final String owner, final String name,
final String desc) {
+ if (api >= Opcodes.ASM5) {
+ invokevirtual(owner, name, desc, false);
+ return;
+ }
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, owner, name, desc);
}
+ public void invokevirtual(final String owner, final String name,
+ final String desc, final boolean itf) {
+ if (api < Opcodes.ASM5) {
+ if (itf) {
+ throw new IllegalArgumentException(
+ "INVOKEVIRTUAL on interfaces require ASM 5");
+ }
+ invokevirtual(owner, name, desc);
+ return;
+ }
+ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, owner, name, desc, itf);
+ }
+
+ @Deprecated
+ public void invokespecial(final String owner, final String name,
+ final String desc) {
+ if (api >= Opcodes.ASM5) {
+ invokespecial(owner, name, desc, false);
+ return;
+ }
+ mv.visitMethodInsn(Opcodes.INVOKESPECIAL, owner, name, desc, false);
+ }
+
public void invokespecial(final String owner, final String name,
+ final String desc, final boolean itf) {
+ if (api < Opcodes.ASM5) {
+ if (itf) {
+ throw new IllegalArgumentException(
+ "INVOKESPECIAL on interfaces require ASM 5");
+ }
+ invokespecial(owner, name, desc);
+ return;
+ }
+ mv.visitMethodInsn(Opcodes.INVOKESPECIAL, owner, name, desc, itf);
+ }
+
+ @Deprecated
+ public void invokestatic(final String owner, final String name,
final String desc) {
- mv.visitMethodInsn(Opcodes.INVOKESPECIAL, owner, name, desc);
+ if (api < Opcodes.ASM5) {
+ invokestatic(owner, name, desc, false);
+ return;
+ }
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc, false);
}
public void invokestatic(final String owner, final String name,
- final String desc) {
- mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc);
+ final String desc, final boolean itf) {
+ if (api < Opcodes.ASM5) {
+ if (itf) {
+ throw new IllegalArgumentException(
+ "INVOKESTATIC on interfaces require ASM 5");
+ }
+ invokestatic(owner, name, desc);
+ return;
+ }
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc, itf);
}
public void invokeinterface(final String owner, final String name,
final String desc) {
- mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, owner, name, desc);
+ mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, owner, name, desc, true);
}
public void invokedynamic(String name, String desc, Handle bsm,
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/JSRInlinerAdapter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/JSRInlinerAdapter.java Wed Jul 05 19:22:42 2017 +0200
@@ -136,11 +136,16 @@
* the internal names of the method's exception classes (see
* {@link Type#getInternalName() getInternalName}). May be
* <tt>null</tt>.
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public JSRInlinerAdapter(final MethodVisitor mv, final int access,
final String name, final String desc, final String signature,
final String[] exceptions) {
this(Opcodes.ASM5, mv, access, name, desc, signature, exceptions);
+ if (getClass() != JSRInlinerAdapter.class) {
+ throw new IllegalStateException();
+ }
}
/**
@@ -381,6 +386,17 @@
// Use tail recursion here in the form of an outer while loop to
// avoid our stack growing needlessly:
index++;
+
+ // We implicitly assumed above that execution can always fall
+ // through to the next instruction after a JSR. But a subroutine may
+ // never return, in which case the code after the JSR is unreachable
+ // and can be anything. In particular, it can seem to fall off the
+ // end of the method, so we must handle this case here (we could
+ // instead detect whether execution can return or not from a JSR,
+ // but this is more complicated).
+ if (index >= instructions.size()) {
+ return;
+ }
}
}
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/LocalVariablesSorter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/LocalVariablesSorter.java Wed Jul 05 19:22:42 2017 +0200
@@ -120,10 +120,15 @@
* the method's descriptor (see {@link Type Type}).
* @param mv
* the method visitor to which this adapter delegates calls.
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public LocalVariablesSorter(final int access, final String desc,
final MethodVisitor mv) {
this(Opcodes.ASM5, access, desc, mv);
+ if (getClass() != LocalVariablesSorter.class) {
+ throw new IllegalStateException();
+ }
}
/**
@@ -323,6 +328,7 @@
int local = newLocalMapping(type);
setLocalType(local, type);
setFrameLocal(local, t);
+ changed = true;
return local;
}
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/RemappingMethodAdapter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/RemappingMethodAdapter.java Wed Jul 05 19:22:42 2017 +0200
@@ -148,12 +148,41 @@
remapper.mapDesc(desc));
}
+ @Deprecated
@Override
- public void visitMethodInsn(int opcode, String owner, String name,
- String desc) {
- super.visitMethodInsn(opcode, remapper.mapType(owner),
- remapper.mapMethodName(owner, name, desc),
- remapper.mapMethodDesc(desc));
+ public void visitMethodInsn(final int opcode, final String owner,
+ final String name, final String desc) {
+ if (api >= Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc,
+ opcode == Opcodes.INVOKEINTERFACE);
+ }
+
+ @Override
+ public void visitMethodInsn(final int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
+ if (api < Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc, itf);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc, itf);
+ }
+
+ private void doVisitMethodInsn(int opcode, String owner, String name,
+ String desc, boolean itf) {
+ // Calling super.visitMethodInsn requires to call the correct version
+ // depending on this.api (otherwise infinite loops can occur). To
+ // simplify and to make it easier to automatically remove the backward
+ // compatibility code, we inline the code of the overridden method here.
+ // IMPORTANT: THIS ASSUMES THAT visitMethodInsn IS NOT OVERRIDDEN IN
+ // LocalVariableSorter.
+ if (mv != null) {
+ mv.visitMethodInsn(opcode, remapper.mapType(owner),
+ remapper.mapMethodName(owner, name, desc),
+ remapper.mapMethodDesc(desc), itf);
+ }
}
@Override
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/RemappingSignatureAdapter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/RemappingSignatureAdapter.java Wed Jul 05 19:22:42 2017 +0200
@@ -95,10 +95,12 @@
@Override
public void visitInnerClassType(String name) {
+ String remappedOuter = remapper.mapType(className) + '$';
className = className + '$' + name;
String remappedName = remapper.mapType(className);
- v.visitInnerClassType(remappedName.substring(remappedName
- .lastIndexOf('$') + 1));
+ int index = remappedName.startsWith(remappedOuter) ? remappedOuter
+ .length() : remappedName.lastIndexOf('$') + 1;
+ v.visitInnerClassType(remappedName.substring(index));
}
@Override
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/SerialVersionUIDAdder.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/SerialVersionUIDAdder.java Wed Jul 05 19:22:42 2017 +0200
@@ -195,9 +195,14 @@
* @param cv
* a {@link ClassVisitor} to which this visitor will delegate
* calls.
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public SerialVersionUIDAdder(final ClassVisitor cv) {
this(Opcodes.ASM5, cv);
+ if (getClass() != SerialVersionUIDAdder.class) {
+ throw new IllegalStateException();
+ }
}
/**
@@ -218,7 +223,7 @@
}
// ------------------------------------------------------------------------
- // Overriden methods
+ // Overridden methods
// ------------------------------------------------------------------------
/*
@@ -234,7 +239,7 @@
if (computeSVUID) {
this.name = name;
this.access = access;
- this.interfaces = interfaces;
+ this.interfaces = Arrays.copyOf(interfaces, interfaces.length);
}
super.visit(version, access, name, signature, superName, interfaces);
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/StaticInitMerger.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/StaticInitMerger.java Wed Jul 05 19:22:42 2017 +0200
@@ -107,7 +107,8 @@
if (clinit == null) {
clinit = cv.visitMethod(a, name, desc, null, null);
}
- clinit.visitMethodInsn(Opcodes.INVOKESTATIC, this.name, n, desc);
+ clinit.visitMethodInsn(Opcodes.INVOKESTATIC, this.name, n, desc,
+ false);
} else {
mv = cv.visitMethod(access, name, desc, signature, exceptions);
}
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/TryCatchBlockSorter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/commons/TryCatchBlockSorter.java Wed Jul 05 19:22:42 2017 +0200
@@ -66,7 +66,6 @@
import jdk.internal.org.objectweb.asm.Opcodes;
import jdk.internal.org.objectweb.asm.tree.MethodNode;
import jdk.internal.org.objectweb.asm.tree.TryCatchBlockNode;
-import jdk.internal.org.objectweb.asm.tree.TypeAnnotationNode;
/**
* A {@link MethodVisitor} adapter to sort the exception handlers. The handlers
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/AnnotationNode.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/AnnotationNode.java Wed Jul 05 19:22:42 2017 +0200
@@ -96,9 +96,14 @@
*
* @param desc
* the class descriptor of the annotation class.
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public AnnotationNode(final String desc) {
this(Opcodes.ASM5, desc);
+ if (getClass() != AnnotationNode.class) {
+ throw new IllegalStateException();
+ }
}
/**
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/ClassNode.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/ClassNode.java Wed Jul 05 19:22:42 2017 +0200
@@ -216,9 +216,15 @@
* Constructs a new {@link ClassNode}. <i>Subclasses must not use this
* constructor</i>. Instead, they must use the {@link #ClassNode(int)}
* version.
+ *
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public ClassNode() {
this(Opcodes.ASM5);
+ if (getClass() != ClassNode.class) {
+ throw new IllegalStateException();
+ }
}
/**
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/FieldNode.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/FieldNode.java Wed Jul 05 19:22:42 2017 +0200
@@ -168,16 +168,20 @@
* <tt>null</tt> if the field does not have an initial value,
* must be an {@link Integer}, a {@link Float}, a {@link Long}, a
* {@link Double} or a {@link String}.
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public FieldNode(final int access, final String name, final String desc,
final String signature, final Object value) {
this(Opcodes.ASM5, access, name, desc, signature, value);
+ if (getClass() != FieldNode.class) {
+ throw new IllegalStateException();
+ }
}
/**
* Constructs a new {@link FieldNode}. <i>Subclasses must not use this
- * constructor</i>. Instead, they must use the
- * {@link #FieldNode(int, int, String, String, String, Object)} version.
+ * constructor</i>.
*
* @param api
* the ASM API version implemented by this visitor. Must be one
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/MethodInsnNode.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/MethodInsnNode.java Wed Jul 05 19:22:42 2017 +0200
@@ -61,6 +61,7 @@
import java.util.Map;
import jdk.internal.org.objectweb.asm.MethodVisitor;
+import jdk.internal.org.objectweb.asm.Opcodes;
/**
* A node that represents a method instruction. A method instruction is an
@@ -87,6 +88,11 @@
public String desc;
/**
+ * If the method's owner class if an interface.
+ */
+ public boolean itf;
+
+ /**
* Constructs a new {@link MethodInsnNode}.
*
* @param opcode
@@ -102,12 +108,37 @@
* @param desc
* the method's descriptor (see {@link jdk.internal.org.objectweb.asm.Type}).
*/
+ @Deprecated
public MethodInsnNode(final int opcode, final String owner,
final String name, final String desc) {
+ this(opcode, owner, name, desc, opcode == Opcodes.INVOKEINTERFACE);
+ }
+
+ /**
+ * Constructs a new {@link MethodInsnNode}.
+ *
+ * @param opcode
+ * the opcode of the type instruction to be constructed. This
+ * opcode must be INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or
+ * INVOKEINTERFACE.
+ * @param owner
+ * the internal name of the method's owner class (see
+ * {@link jdk.internal.org.objectweb.asm.Type#getInternalName()
+ * getInternalName}).
+ * @param name
+ * the method's name.
+ * @param desc
+ * the method's descriptor (see {@link jdk.internal.org.objectweb.asm.Type}).
+ * @param itf
+ * if the method's owner class is an interface.
+ */
+ public MethodInsnNode(final int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
super(opcode);
this.owner = owner;
this.name = name;
this.desc = desc;
+ this.itf = itf;
}
/**
@@ -128,11 +159,11 @@
@Override
public void accept(final MethodVisitor mv) {
- mv.visitMethodInsn(opcode, owner, name, desc);
+ mv.visitMethodInsn(opcode, owner, name, desc, itf);
}
@Override
public AbstractInsnNode clone(final Map<LabelNode, LabelNode> labels) {
- return new MethodInsnNode(opcode, owner, name, desc);
+ return new MethodInsnNode(opcode, owner, name, desc, itf);
}
}
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/MethodNode.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/MethodNode.java Wed Jul 05 19:22:42 2017 +0200
@@ -71,7 +71,6 @@
import jdk.internal.org.objectweb.asm.Opcodes;
import jdk.internal.org.objectweb.asm.Type;
import jdk.internal.org.objectweb.asm.TypePath;
-import jdk.internal.org.objectweb.asm.TypeReference;
/**
* A node that represents a method.
@@ -245,9 +244,15 @@
* Constructs an uninitialized {@link MethodNode}. <i>Subclasses must not
* use this constructor</i>. Instead, they must use the
* {@link #MethodNode(int)} version.
+ *
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public MethodNode() {
this(Opcodes.ASM5);
+ if (getClass() != MethodNode.class) {
+ throw new IllegalStateException();
+ }
}
/**
@@ -281,10 +286,15 @@
* the internal names of the method's exception classes (see
* {@link Type#getInternalName() getInternalName}). May be
* <tt>null</tt>.
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public MethodNode(final int access, final String name, final String desc,
final String signature, final String[] exceptions) {
this(Opcodes.ASM5, access, name, desc, signature, exceptions);
+ if (getClass() != MethodNode.class) {
+ throw new IllegalStateException();
+ }
}
/**
@@ -461,13 +471,28 @@
instructions.add(new FieldInsnNode(opcode, owner, name, desc));
}
+ @Deprecated
@Override
- public void visitMethodInsn(final int opcode, final String owner,
- final String name, final String desc) {
+ public void visitMethodInsn(int opcode, String owner, String name,
+ String desc) {
+ if (api >= Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc);
+ return;
+ }
instructions.add(new MethodInsnNode(opcode, owner, name, desc));
}
@Override
+ public void visitMethodInsn(int opcode, String owner, String name,
+ String desc, boolean itf) {
+ if (api < Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc, itf);
+ return;
+ }
+ instructions.add(new MethodInsnNode(opcode, owner, name, desc, itf));
+ }
+
+ @Override
public void visitInvokeDynamicInsn(String name, String desc, Handle bsm,
Object... bsmArgs) {
instructions.add(new InvokeDynamicInsnNode(name, desc, bsm, bsmArgs));
@@ -696,6 +721,12 @@
&& insn.invisibleTypeAnnotations.size() > 0) {
throw new RuntimeException();
}
+ if (insn instanceof MethodInsnNode) {
+ boolean itf = ((MethodInsnNode) insn).itf;
+ if (itf != (insn.opcode == Opcodes.INVOKEINTERFACE)) {
+ throw new RuntimeException();
+ }
+ }
}
if (visibleLocalVariableAnnotations != null
&& visibleLocalVariableAnnotations.size() > 0) {
@@ -705,7 +736,6 @@
&& invisibleLocalVariableAnnotations.size() > 0) {
throw new RuntimeException();
}
-
}
}
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/TypeAnnotationNode.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/TypeAnnotationNode.java Wed Jul 05 19:22:42 2017 +0200
@@ -94,10 +94,15 @@
* <tt>null</tt> if the annotation targets 'typeRef' as a whole.
* @param desc
* the class descriptor of the annotation class.
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public TypeAnnotationNode(final int typeRef, final TypePath typePath,
final String desc) {
this(Opcodes.ASM5, typeRef, typePath, desc);
+ if (getClass() != TypeAnnotationNode.class) {
+ throw new IllegalStateException();
+ }
}
/**
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/analysis/Frame.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/tree/analysis/Frame.java Wed Jul 05 19:22:42 2017 +0200
@@ -163,6 +163,15 @@
}
/**
+ * Returns the maximum stack size of this frame.
+ *
+ * @return the maximum stack size of this frame.
+ */
+ public int getMaxStackSize() {
+ return values.length - locals;
+ }
+
+ /**
* Returns the value of the given local variable.
*
* @param i
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/ASMifier.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/ASMifier.java Wed Jul 05 19:22:42 2017 +0200
@@ -113,9 +113,15 @@
* Constructs a new {@link ASMifier}. <i>Subclasses must not use this
* constructor</i>. Instead, they must use the
* {@link #ASMifier(int, String, int)} version.
+ *
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public ASMifier() {
this(Opcodes.ASM5, "cw", 0);
+ if (getClass() != ASMifier.class) {
+ throw new IllegalStateException();
+ }
}
/**
@@ -483,8 +489,9 @@
@Override
public void visitParameter(String parameterName, int access) {
buf.setLength(0);
- buf.append(name).append(".visitParameter(").append(parameterName)
- .append(", ");
+ buf.append(name).append(".visitParameter(");
+ appendString(buf, parameterName);
+ buf.append(", ");
appendAccess(access);
text.add(buf.append(");\n").toString());
}
@@ -639,9 +646,30 @@
text.add(buf.toString());
}
+ @Deprecated
@Override
public void visitMethodInsn(final int opcode, final String owner,
final String name, final String desc) {
+ if (api >= Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc,
+ opcode == Opcodes.INVOKEINTERFACE);
+ }
+
+ @Override
+ public void visitMethodInsn(final int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
+ if (api < Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc, itf);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc, itf);
+ }
+
+ private void doVisitMethodInsn(final int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
buf.setLength(0);
buf.append(this.name).append(".visitMethodInsn(")
.append(OPCODES[opcode]).append(", ");
@@ -650,6 +678,8 @@
appendConstant(name);
buf.append(", ");
appendConstant(desc);
+ buf.append(", ");
+ buf.append(itf ? "true" : "false");
buf.append(");\n");
text.add(buf.toString());
}
@@ -1076,6 +1106,13 @@
buf.append("ACC_DEPRECATED");
first = false;
}
+ if ((access & Opcodes.ACC_MANDATED) != 0) {
+ if (!first) {
+ buf.append(" + ");
+ }
+ buf.append("ACC_MANDATED");
+ first = false;
+ }
if (first) {
buf.append('0');
}
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckClassAdapter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckClassAdapter.java Wed Jul 05 19:22:42 2017 +0200
@@ -246,7 +246,7 @@
List<Type> interfaces = new ArrayList<Type>();
for (Iterator<String> i = cn.interfaces.iterator(); i.hasNext();) {
- interfaces.add(Type.getObjectType(i.next().toString()));
+ interfaces.add(Type.getObjectType(i.next()));
}
for (int i = 0; i < methods.size(); ++i) {
@@ -359,9 +359,14 @@
* <tt>false</tt> to not perform any data flow check (see
* {@link CheckMethodAdapter}). This option requires valid
* maxLocals and maxStack values.
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public CheckClassAdapter(final ClassVisitor cv, final boolean checkDataFlow) {
this(Opcodes.ASM5, cv, checkDataFlow);
+ if (getClass() != CheckClassAdapter.class) {
+ throw new IllegalStateException();
+ }
}
/**
@@ -471,7 +476,15 @@
CheckMethodAdapter.checkInternalName(outerName, "outer class name");
}
if (innerName != null) {
- CheckMethodAdapter.checkIdentifier(innerName, "inner class name");
+ int start = 0;
+ while (start < innerName.length()
+ && Character.isDigit(innerName.charAt(start))) {
+ start++;
+ }
+ if (start == 0 || start < innerName.length()) {
+ CheckMethodAdapter.checkIdentifier(innerName, start, -1,
+ "inner class name");
+ }
}
checkAccess(access, Opcodes.ACC_PUBLIC + Opcodes.ACC_PRIVATE
+ Opcodes.ACC_PROTECTED + Opcodes.ACC_STATIC
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckFieldAdapter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckFieldAdapter.java Wed Jul 05 19:22:42 2017 +0200
@@ -79,9 +79,14 @@
*
* @param fv
* the field visitor to which this adapter must delegate calls.
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public CheckFieldAdapter(final FieldVisitor fv) {
this(Opcodes.ASM5, fv);
+ if (getClass() != CheckFieldAdapter.class) {
+ throw new IllegalStateException();
+ }
}
/**
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckMethodAdapter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/CheckMethodAdapter.java Wed Jul 05 19:22:42 2017 +0200
@@ -143,11 +143,6 @@
private Set<Label> usedLabels;
/**
- * If an explicit first frame has been visited before the first instruction.
- */
- private boolean hasExplicitFirstFrame;
-
- /**
* Number of visited frames in expanded form.
*/
private int expandedFrames;
@@ -158,6 +153,11 @@
private int compressedFrames;
/**
+ * Number of instructions before the last visited frame.
+ */
+ private int lastFrame = -1;
+
+ /**
* The exception handler ranges. Each pair of list element contains the
* start and end labels of an exception handler block.
*/
@@ -421,10 +421,15 @@
* the method visitor to which this adapter must delegate calls.
* @param labels
* a map of already visited labels (in other methods).
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public CheckMethodAdapter(final MethodVisitor mv,
final Map<Label, Integer> labels) {
this(Opcodes.ASM5, mv, labels);
+ if (getClass() != CheckMethodAdapter.class) {
+ throw new IllegalStateException();
+ }
}
/**
@@ -465,7 +470,7 @@
public CheckMethodAdapter(final int access, final String name,
final String desc, final MethodVisitor cmv,
final Map<Label, Integer> labels) {
- this(new MethodNode(access, name, desc, null, null) {
+ this(new MethodNode(Opcodes.ASM5, access, name, desc, null, null) {
@Override
public void visitEnd() {
Analyzer<BasicValue> a = new Analyzer<BasicValue>(
@@ -499,6 +504,7 @@
}
CheckClassAdapter.checkAccess(access, Opcodes.ACC_FINAL
+ Opcodes.ACC_MANDATED + Opcodes.ACC_SYNTHETIC);
+ super.visitParameter(name, access);
}
@Override
@@ -566,6 +572,11 @@
@Override
public void visitFrame(final int type, final int nLocal,
final Object[] local, final int nStack, final Object[] stack) {
+ if (insnCount == lastFrame) {
+ throw new IllegalStateException(
+ "At most one frame can be visited at a given code location.");
+ }
+ lastFrame = insnCount;
int mLocal;
int mStack;
switch (type) {
@@ -621,13 +632,6 @@
checkFrameValue(stack[i]);
}
if (type == Opcodes.F_NEW) {
- if (insnCount == 0) {
- hasExplicitFirstFrame = true;
- } else if (!hasExplicitFirstFrame) {
- throw new RuntimeException(
- "In expanded form, a first frame must be explicitly "
- + "visited before the first instruction.");
- }
++expandedFrames;
} else {
++compressedFrames;
@@ -709,9 +713,30 @@
++insnCount;
}
+ @Deprecated
@Override
- public void visitMethodInsn(final int opcode, final String owner,
- final String name, final String desc) {
+ public void visitMethodInsn(int opcode, String owner, String name,
+ String desc) {
+ if (api >= Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc,
+ opcode == Opcodes.INVOKEINTERFACE);
+ }
+
+ @Override
+ public void visitMethodInsn(int opcode, String owner, String name,
+ String desc, boolean itf) {
+ if (api < Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc, itf);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc, itf);
+ }
+
+ private void doVisitMethodInsn(int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
checkStartCode();
checkEndCode();
checkOpcode(opcode, 5);
@@ -720,7 +745,21 @@
}
checkInternalName(owner, "owner");
checkMethodDesc(desc);
- super.visitMethodInsn(opcode, owner, name, desc);
+ if (opcode == Opcodes.INVOKEVIRTUAL && itf) {
+ throw new IllegalArgumentException(
+ "INVOKEVIRTUAL can't be used with interfaces");
+ }
+ if (opcode == Opcodes.INVOKEINTERFACE && !itf) {
+ throw new IllegalArgumentException(
+ "INVOKEINTERFACE can't be used with classes");
+ }
+ // Calling super.visitMethodInsn requires to call the correct version
+ // depending on this.api (otherwise infinite loops can occur). To
+ // simplify and to make it easier to automatically remove the backward
+ // compatibility code, we inline the code of the overridden method here.
+ if (mv != null) {
+ mv.visitMethodInsn(opcode, owner, name, desc, itf);
+ }
++insnCount;
}
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/Printer.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/Printer.java Wed Jul 05 19:22:42 2017 +0200
@@ -401,8 +401,33 @@
* Method instruction. See
* {@link jdk.internal.org.objectweb.asm.MethodVisitor#visitMethodInsn}.
*/
- public abstract void visitMethodInsn(final int opcode, final String owner,
- final String name, final String desc);
+ @Deprecated
+ public void visitMethodInsn(final int opcode, final String owner,
+ final String name, final String desc) {
+ if (api >= Opcodes.ASM5) {
+ boolean itf = opcode == Opcodes.INVOKEINTERFACE;
+ visitMethodInsn(opcode, owner, name, desc, itf);
+ return;
+ }
+ throw new RuntimeException("Must be overriden");
+ }
+
+ /**
+ * Method instruction. See
+ * {@link jdk.internal.org.objectweb.asm.MethodVisitor#visitMethodInsn}.
+ */
+ public void visitMethodInsn(final int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
+ if (api < Opcodes.ASM5) {
+ if (itf != (opcode == Opcodes.INVOKEINTERFACE)) {
+ throw new IllegalArgumentException(
+ "INVOKESPECIAL/STATIC on interfaces require ASM 5");
+ }
+ visitMethodInsn(opcode, owner, name, desc);
+ return;
+ }
+ throw new RuntimeException("Must be overriden");
+ }
/**
* Method instruction. See
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/Textifier.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/Textifier.java Wed Jul 05 19:22:42 2017 +0200
@@ -172,9 +172,15 @@
* Constructs a new {@link Textifier}. <i>Subclasses must not use this
* constructor</i>. Instead, they must use the {@link #Textifier(int)}
* version.
+ *
+ * @throws IllegalStateException
+ * If a subclass calls this constructor.
*/
public Textifier() {
this(Opcodes.ASM5);
+ if (getClass() != Textifier.class) {
+ throw new IllegalStateException();
+ }
}
/**
@@ -821,14 +827,36 @@
text.add(buf.toString());
}
+ @Deprecated
@Override
public void visitMethodInsn(final int opcode, final String owner,
final String name, final String desc) {
+ if (api >= Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc,
+ opcode == Opcodes.INVOKEINTERFACE);
+ }
+
+ @Override
+ public void visitMethodInsn(final int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
+ if (api < Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc, itf);
+ return;
+ }
+ doVisitMethodInsn(opcode, owner, name, desc, itf);
+ }
+
+ private void doVisitMethodInsn(final int opcode, final String owner,
+ final String name, final String desc, final boolean itf) {
buf.setLength(0);
buf.append(tab2).append(OPCODES[opcode]).append(' ');
appendDescriptor(INTERNAL_NAME, owner);
buf.append('.').append(name).append(' ');
appendDescriptor(METHOD_DESCRIPTOR, desc);
+ buf.append(' ').append(itf ? "itf" : "");
buf.append('\n');
text.add(buf.toString());
}
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/TraceMethodVisitor.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/util/TraceMethodVisitor.java Wed Jul 05 19:22:42 2017 +0200
@@ -176,11 +176,31 @@
super.visitFieldInsn(opcode, owner, name, desc);
}
+ @Deprecated
@Override
- public void visitMethodInsn(final int opcode, final String owner,
- final String name, final String desc) {
+ public void visitMethodInsn(int opcode, String owner, String name,
+ String desc) {
+ if (api >= Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc);
+ return;
+ }
p.visitMethodInsn(opcode, owner, name, desc);
- super.visitMethodInsn(opcode, owner, name, desc);
+ if (mv != null) {
+ mv.visitMethodInsn(opcode, owner, name, desc);
+ }
+ }
+
+ @Override
+ public void visitMethodInsn(int opcode, String owner, String name,
+ String desc, boolean itf) {
+ if (api < Opcodes.ASM5) {
+ super.visitMethodInsn(opcode, owner, name, desc, itf);
+ return;
+ }
+ p.visitMethodInsn(opcode, owner, name, desc, itf);
+ if (mv != null) {
+ mv.visitMethodInsn(opcode, owner, name, desc, itf);
+ }
}
@Override
--- a/jdk/src/share/classes/jdk/internal/org/objectweb/asm/version.txt Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/jdk/internal/org/objectweb/asm/version.txt Wed Jul 05 19:22:42 2017 +0200
@@ -1,12 +1,12 @@
Path: .
-Working Copy Root Path: /w/lthudson/hudson-data/jobs/objectweb-cr-pull/workspace/ASM_5_FUTURE
-URL: svn://svn.forge.objectweb.org/svnroot/asm/branches/ASM_5_FUTURE
+Working Copy Root Path: /hudson/jobs/objectweb-pull/workspace/ASM_5_0_BETA
+URL: svn://svn.forge.objectweb.org/svnroot/asm/trunk/asm
Repository Root: svn://svn.forge.objectweb.org/svnroot/asm
Repository UUID: 271bd773-ee82-43a6-9b2b-1890ed8ce7f9
-Revision: 1681
+Revision: 1700
Node Kind: directory
Schedule: normal
-Last Changed Author: forax
-Last Changed Rev: 1681
-Last Changed Date: 2013-04-01 11:28:58 -0700 (Mon, 01 Apr 2013)
+Last Changed Author: ebruneton
+Last Changed Rev: 1700
+Last Changed Date: 2013-10-29 20:22:52 +0100 (Tue, 29 Oct 2013)
--- a/jdk/src/share/classes/sun/awt/AppContext.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/awt/AppContext.java Wed Jul 05 19:22:42 2017 +0200
@@ -430,7 +430,7 @@
try {
w.dispose();
} catch (Throwable t) {
- log.finer("exception occured while disposing app context", t);
+ log.finer("exception occurred while disposing app context", t);
}
}
AccessController.doPrivileged(new PrivilegedAction<Void>() {
@@ -820,30 +820,6 @@
// Set up JavaAWTAccess in SharedSecrets
static {
sun.misc.SharedSecrets.setJavaAWTAccess(new sun.misc.JavaAWTAccess() {
- public Object get(Object key) {
- AppContext ac = getAppContext();
- return (ac == null) ? null : ac.get(key);
- }
- public void put(Object key, Object value) {
- AppContext ac = getAppContext();
- if (ac != null) {
- ac.put(key, value);
- }
- }
- public void remove(Object key) {
- AppContext ac = getAppContext();
- if (ac != null) {
- ac.remove(key);
- }
- }
- public boolean isDisposed() {
- AppContext ac = getAppContext();
- return (ac == null) ? true : ac.isDisposed();
- }
- public boolean isMainAppContext() {
- return (numAppContexts.get() == 1 && mainAppContext != null);
- }
-
private boolean hasRootThreadGroup(final AppContext ecx) {
return AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
@Override
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/sun/management/BaseOperatingSystemImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.management;
+
+import java.lang.management.OperatingSystemMXBean;
+import java.lang.management.ManagementFactory;
+import javax.management.ObjectName;
+import sun.misc.Unsafe;
+
+/**
+ * Implementation class for the operating system.
+ * Standard and committed hotspot-specific metrics if any.
+ *
+ * ManagementFactory.getOperatingSystemMXBean() returns an instance
+ * of this class.
+ */
+public class BaseOperatingSystemImpl implements OperatingSystemMXBean {
+
+ private final VMManagement jvm;
+
+ /**
+ * Constructor of BaseOperatingSystemImpl class.
+ */
+ protected BaseOperatingSystemImpl(VMManagement vm) {
+ this.jvm = vm;
+ }
+
+ public String getName() {
+ return jvm.getOsName();
+ }
+
+ public String getArch() {
+ return jvm.getOsArch();
+ }
+
+ public String getVersion() {
+ return jvm.getOsVersion();
+ }
+
+ public int getAvailableProcessors() {
+ return jvm.getAvailableProcessors();
+ }
+
+ private static final Unsafe unsafe = Unsafe.getUnsafe();
+ private double[] loadavg = new double[1];
+ public double getSystemLoadAverage() {
+ if (unsafe.getLoadAverage(loadavg, 1) == 1) {
+ return loadavg[0];
+ } else {
+ return -1.0;
+ }
+ }
+ public ObjectName getObjectName() {
+ return Util.newObjectName(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME);
+ }
+
+}
--- a/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java Wed Jul 05 19:22:42 2017 +0200
@@ -46,7 +46,6 @@
import java.util.HashMap;
import java.util.List;
import com.sun.management.DiagnosticCommandMBean;
-import com.sun.management.OSMBeanFactory;
import com.sun.management.HotSpotDiagnosticMXBean;
import static java.lang.management.ManagementFactory.*;
@@ -104,8 +103,7 @@
public static synchronized OperatingSystemMXBean getOperatingSystemMXBean() {
if (osMBean == null) {
- osMBean = (OperatingSystemImpl)
- OSMBeanFactory.getOperatingSystemMXBean(jvm);
+ osMBean = new OperatingSystemImpl(jvm);
}
return osMBean;
}
--- a/jdk/src/share/classes/sun/management/OperatingSystemImpl.java Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.management;
-
-import java.lang.management.OperatingSystemMXBean;
-import java.lang.management.ManagementFactory;
-import javax.management.ObjectName;
-import sun.misc.Unsafe;
-
-/**
- * Implementation class for the operating system.
- * Standard and committed hotspot-specific metrics if any.
- *
- * ManagementFactory.getOperatingSystemMXBean() returns an instance
- * of this class.
- */
-public class OperatingSystemImpl implements OperatingSystemMXBean {
-
- private final VMManagement jvm;
-
- /**
- * Constructor of OperatingSystemImpl class.
- */
- protected OperatingSystemImpl(VMManagement vm) {
- this.jvm = vm;
- }
-
- public String getName() {
- return jvm.getOsName();
- }
-
- public String getArch() {
- return jvm.getOsArch();
- }
-
- public String getVersion() {
- return jvm.getOsVersion();
- }
-
- public int getAvailableProcessors() {
- return jvm.getAvailableProcessors();
- }
-
- private static final Unsafe unsafe = Unsafe.getUnsafe();
- private double[] loadavg = new double[1];
- public double getSystemLoadAverage() {
- if (unsafe.getLoadAverage(loadavg, 1) == 1) {
- return loadavg[0];
- } else {
- return -1.0;
- }
- }
- public ObjectName getObjectName() {
- return Util.newObjectName(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME);
- }
-
-}
--- a/jdk/src/share/classes/sun/management/RuntimeImpl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/management/RuntimeImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -110,12 +110,7 @@
}
public long getUptime() {
- long current = System.currentTimeMillis();
-
- // TODO: If called from client side when we support
- // MBean proxy to read performance counters from shared memory,
- // need to check if the monitored VM exitd.
- return (current - vmStartupTime);
+ return jvm.getUptime();
}
public long getStartTime() {
--- a/jdk/src/share/classes/sun/management/VMManagement.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/management/VMManagement.java Wed Jul 05 19:22:42 2017 +0200
@@ -71,6 +71,7 @@
public String getBootClassPath();
public List<String> getVmArguments();
public long getStartupTime();
+ public long getUptime();
public int getAvailableProcessors();
// Compilation Subsystem
--- a/jdk/src/share/classes/sun/management/VMManagementImpl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/management/VMManagementImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -179,6 +179,10 @@
return result;
}
+ public long getUptime() {
+ return getUptime0();
+ }
+
private List<String> vmArgs = null;
public synchronized List<String> getVmArguments() {
if (vmArgs == null) {
@@ -192,6 +196,7 @@
public native String[] getVmArguments0();
public native long getStartupTime();
+ private native long getUptime0();
public native int getAvailableProcessors();
// Compilation Subsystem
--- a/jdk/src/share/classes/sun/management/snmp/jvminstr/JVM_MANAGEMENT_MIB_IMPL.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/management/snmp/jvminstr/JVM_MANAGEMENT_MIB_IMPL.java Wed Jul 05 19:22:42 2017 +0200
@@ -188,7 +188,7 @@
sendTrap(trap, list);
}catch(Exception e) {
log.error("handleNotification",
- "Exception occured : " + e);
+ "Exception occurred : " + e);
}
}
}
@@ -243,7 +243,7 @@
adaptor.snmpV2Trap(peer, trap, list, null);
}catch(Exception e) {
log.error("sendTrap",
- "Exception occured while sending trap to [" +
+ "Exception occurred while sending trap to [" +
target + "]. Exception : " + e);
log.debug("sendTrap",e);
}
--- a/jdk/src/share/classes/sun/misc/Cleaner.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/misc/Cleaner.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -57,14 +57,14 @@
*/
public class Cleaner
- extends PhantomReference
+ extends PhantomReference<Object>
{
// Dummy reference queue, needed because the PhantomReference constructor
// insists that we pass a queue. Nothing will ever be placed on this queue
// since the reference handler invokes cleaners explicitly.
//
- private static final ReferenceQueue dummyQueue = new ReferenceQueue();
+ private static final ReferenceQueue<Object> dummyQueue = new ReferenceQueue<>();
// Doubly-linked list of live cleaners, which prevents the cleaners
// themselves from being GC'd before their referents
@@ -119,6 +119,7 @@
/**
* Creates a new cleaner.
*
+ * @param ob the referent object to be cleaned
* @param thunk
* The cleanup code to be run when the cleaner is invoked. The
* cleanup code is run directly from the reference-handler thread,
--- a/jdk/src/share/classes/sun/misc/ExtensionDependency.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/misc/ExtensionDependency.java Wed Jul 05 19:22:42 2017 +0200
@@ -265,7 +265,7 @@
* the jar file.
* </p>
*
- * @param extensionName key in the attibute list
+ * @param extensionName key in the attribute list
* @param attr manifest file attributes
* @param file installed extension jar file to compare the requested
* extension against.
--- a/jdk/src/share/classes/sun/misc/JavaAWTAccess.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/misc/JavaAWTAccess.java Wed Jul 05 19:22:42 2017 +0200
@@ -33,12 +33,4 @@
// or running in the main app context, returns null.
// Otherwise, returns the AppContext of the calling applet.
public Object getAppletContext();
-
- // convenience methods to cache objects in the current thread group's
- // AppContext
- public Object get(Object key);
- public void put(Object key, Object value);
- public void remove(Object key);
- public boolean isDisposed();
- public boolean isMainAppContext();
}
--- a/jdk/src/share/classes/sun/misc/JavaLangAccess.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/misc/JavaLangAccess.java Wed Jul 05 19:22:42 2017 +0200
@@ -127,4 +127,9 @@
* inherited AccessControlContext.
*/
Thread newThreadWithAcc(Runnable target, AccessControlContext acc);
+
+ /**
+ * Invokes the finalize method of the given object.
+ */
+ void invokeFinalize(Object o) throws Throwable;
}
--- a/jdk/src/share/classes/sun/misc/ProxyGenerator.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/misc/ProxyGenerator.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -384,7 +384,7 @@
private String className;
/** proxy interfaces */
- private Class[] interfaces;
+ private Class<?>[] interfaces;
/** proxy class access flags */
private int accessFlags;
--- a/jdk/src/share/classes/sun/misc/VM.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/misc/VM.java Wed Jul 05 19:22:42 2017 +0200
@@ -148,6 +148,7 @@
private static volatile boolean booted = false;
+ private static final Object lock = new Object();
// Invoked by by System.initializeSystemClass just before returning.
// Subsystems that are invoked during initialization can check this
@@ -155,13 +156,27 @@
// application class loader has been set up.
//
public static void booted() {
- booted = true;
+ synchronized (lock) {
+ booted = true;
+ lock.notifyAll();
+ }
}
public static boolean isBooted() {
return booted;
}
+ // Waits until VM completes initialization
+ //
+ // This method is invoked by the Finalizer thread
+ public static void awaitBooted() throws InterruptedException {
+ synchronized (lock) {
+ while (!booted) {
+ lock.wait();
+ }
+ }
+ }
+
// A user-settable upper limit on the maximum amount of allocatable direct
// buffer memory. This value may be changed during VM initialization if
// "java" is launched with "-XX:MaxDirectMemorySize=<size>".
--- a/jdk/src/share/classes/sun/reflect/NativeConstructorAccessorImpl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/reflect/NativeConstructorAccessorImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,7 @@
package sun.reflect;
import java.lang.reflect.*;
+import sun.reflect.misc.ReflectUtil;
/** Used only for the first few invocations of a Constructor;
afterward, switches to bytecode-based implementation */
@@ -44,7 +45,11 @@
IllegalArgumentException,
InvocationTargetException
{
- if (++numInvocations > ReflectionFactory.inflationThreshold()) {
+ // We can't inflate a constructor belonging to a vm-anonymous class
+ // because that kind of class can't be referred to by name, hence can't
+ // be found from the generated bytecode.
+ if (++numInvocations > ReflectionFactory.inflationThreshold()
+ && !ReflectUtil.isVMAnonymousClass(c.getDeclaringClass())) {
ConstructorAccessorImpl acc = (ConstructorAccessorImpl)
new MethodAccessorGenerator().
generateConstructor(c.getDeclaringClass(),
--- a/jdk/src/share/classes/sun/reflect/NativeMethodAccessorImpl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/reflect/NativeMethodAccessorImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,7 @@
package sun.reflect;
import java.lang.reflect.*;
+import sun.reflect.misc.ReflectUtil;
/** Used only for the first few invocations of a Method; afterward,
switches to bytecode-based implementation */
@@ -42,7 +43,11 @@
public Object invoke(Object obj, Object[] args)
throws IllegalArgumentException, InvocationTargetException
{
- if (++numInvocations > ReflectionFactory.inflationThreshold()) {
+ // We can't inflate methods belonging to vm-anonymous classes because
+ // that kind of class can't be referred to by name, hence can't be
+ // found from the generated bytecode.
+ if (++numInvocations > ReflectionFactory.inflationThreshold()
+ && !ReflectUtil.isVMAnonymousClass(method.getDeclaringClass())) {
MethodAccessorImpl acc = (MethodAccessorImpl)
new MethodAccessorGenerator().
generateMethod(method.getDeclaringClass(),
--- a/jdk/src/share/classes/sun/reflect/ReflectionFactory.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/reflect/ReflectionFactory.java Wed Jul 05 19:22:42 2017 +0200
@@ -33,6 +33,7 @@
import java.security.AccessController;
import java.security.Permission;
import java.security.PrivilegedAction;
+import sun.reflect.misc.ReflectUtil;
/** <P> The master factory for all reflective objects, both those in
java.lang.reflect (Fields, Methods, Constructors) as well as their
@@ -144,7 +145,7 @@
public MethodAccessor newMethodAccessor(Method method) {
checkInitted();
- if (noInflation) {
+ if (noInflation && !ReflectUtil.isVMAnonymousClass(method.getDeclaringClass())) {
return new MethodAccessorGenerator().
generateMethod(method.getDeclaringClass(),
method.getName(),
@@ -181,7 +182,7 @@
return new BootstrapConstructorAccessorImpl(c);
}
- if (noInflation) {
+ if (noInflation && !ReflectUtil.isVMAnonymousClass(c.getDeclaringClass())) {
return new MethodAccessorGenerator().
generateConstructor(c.getDeclaringClass(),
c.getParameterTypes(),
--- a/jdk/src/share/classes/sun/reflect/annotation/AnnotatedTypeFactory.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/reflect/annotation/AnnotatedTypeFactory.java Wed Jul 05 19:22:42 2017 +0200
@@ -34,7 +34,7 @@
import static sun.reflect.annotation.TypeAnnotation.*;
-public class AnnotatedTypeFactory {
+public final class AnnotatedTypeFactory {
/**
* Create an AnnotatedType.
*
@@ -47,10 +47,10 @@
* corresponds to
*/
public static AnnotatedType buildAnnotatedType(Type type,
- LocationInfo currentLoc,
- TypeAnnotation[] actualTypeAnnos,
- TypeAnnotation[] allOnSameTarget,
- AnnotatedElement decl) {
+ LocationInfo currentLoc,
+ TypeAnnotation[] actualTypeAnnos,
+ TypeAnnotation[] allOnSameTarget,
+ AnnotatedElement decl) {
if (type == null) {
return EMPTY_ANNOTATED_TYPE;
}
@@ -156,40 +156,40 @@
}
@Override
- public Annotation[] getDeclaredAnnotations() {
+ public final Annotation[] getDeclaredAnnotations() {
return annotations.values().toArray(new Annotation[0]);
}
@Override
@SuppressWarnings("unchecked")
- public <T extends Annotation> T getDeclaredAnnotation(Class<T> annotation) {
+ public final <T extends Annotation> T getDeclaredAnnotation(Class<T> annotation) {
return (T)annotations.get(annotation);
}
@Override
- public <T extends Annotation> T[] getDeclaredAnnotationsByType(Class<T> annotation) {
+ public final <T extends Annotation> T[] getDeclaredAnnotationsByType(Class<T> annotation) {
return AnnotationSupport.getDirectlyAndIndirectlyPresent(annotations, annotation);
}
// AnnotatedType
@Override
- public Type getType() {
+ public final Type getType() {
return type;
}
// Implementation details
- LocationInfo getLocation() {
+ final LocationInfo getLocation() {
return location;
}
- TypeAnnotation[] getTypeAnnotations() {
+ final TypeAnnotation[] getTypeAnnotations() {
return allOnSameTargetTypeAnnotations;
}
- AnnotatedElement getDecl() {
+ final AnnotatedElement getDecl() {
return decl;
}
}
- private static class AnnotatedArrayTypeImpl extends AnnotatedTypeBaseImpl implements AnnotatedArrayType {
+ private static final class AnnotatedArrayTypeImpl extends AnnotatedTypeBaseImpl implements AnnotatedArrayType {
AnnotatedArrayTypeImpl(Type type, LocationInfo location,
TypeAnnotation[] actualTypeAnnotations, TypeAnnotation[] allOnSameTargetTypeAnnotations,
AnnotatedElement decl) {
@@ -215,7 +215,7 @@
}
}
- private static class AnnotatedTypeVariableImpl extends AnnotatedTypeBaseImpl implements AnnotatedTypeVariable {
+ private static final class AnnotatedTypeVariableImpl extends AnnotatedTypeBaseImpl implements AnnotatedTypeVariable {
AnnotatedTypeVariableImpl(TypeVariable<?> type, LocationInfo location,
TypeAnnotation[] actualTypeAnnotations, TypeAnnotation[] allOnSameTargetTypeAnnotations,
AnnotatedElement decl) {
@@ -232,7 +232,8 @@
}
}
- private static class AnnotatedParameterizedTypeImpl extends AnnotatedTypeBaseImpl implements AnnotatedParameterizedType {
+ private static final class AnnotatedParameterizedTypeImpl extends AnnotatedTypeBaseImpl
+ implements AnnotatedParameterizedType {
AnnotatedParameterizedTypeImpl(ParameterizedType type, LocationInfo location,
TypeAnnotation[] actualTypeAnnotations, TypeAnnotation[] allOnSameTargetTypeAnnotations,
AnnotatedElement decl) {
@@ -265,7 +266,7 @@
}
}
- private static class AnnotatedWildcardTypeImpl extends AnnotatedTypeBaseImpl implements AnnotatedWildcardType {
+ private static final class AnnotatedWildcardTypeImpl extends AnnotatedTypeBaseImpl implements AnnotatedWildcardType {
private final boolean hasUpperBounds;
AnnotatedWildcardTypeImpl(WildcardType type, LocationInfo location,
TypeAnnotation[] actualTypeAnnotations, TypeAnnotation[] allOnSameTargetTypeAnnotations,
--- a/jdk/src/share/classes/sun/reflect/annotation/TypeAnnotation.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/reflect/annotation/TypeAnnotation.java Wed Jul 05 19:22:42 2017 +0200
@@ -40,7 +40,7 @@
* distinguish between '@A Inner.@B Outer' in for example nested types),
* target info and the declaration the TypeAnnotaiton was parsed from.
*/
-public class TypeAnnotation {
+public final class TypeAnnotation {
private final TypeAnnotationTargetInfo targetInfo;
private final LocationInfo loc;
private final Annotation annotation;
@@ -92,7 +92,8 @@
METHOD_FORMAL_PARAMETER,
THROWS;
}
- public static class TypeAnnotationTargetInfo {
+
+ public static final class TypeAnnotationTargetInfo {
private final TypeAnnotationTarget target;
private final int count;
private final int secondaryIndex;
@@ -131,7 +132,7 @@
}
}
- public static class LocationInfo {
+ public static final class LocationInfo {
private final int depth;
private final Location[] locations;
@@ -204,7 +205,7 @@
return true;
}
- public static class Location {
+ public static final class Location {
public final byte tag;
public final byte index;
--- a/jdk/src/share/classes/sun/reflect/annotation/TypeAnnotationParser.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/reflect/annotation/TypeAnnotationParser.java Wed Jul 05 19:22:42 2017 +0200
@@ -43,7 +43,7 @@
* TypeAnnotationParser implements the logic needed to parse
* TypeAnnotations from an array of bytes.
*/
-public class TypeAnnotationParser {
+public final class TypeAnnotationParser {
private static final TypeAnnotation[] EMPTY_TYPE_ANNOTATION_ARRAY = new TypeAnnotation[0];
/**
@@ -237,7 +237,7 @@
return parseAnnotatedBounds(bounds, decl, typeVarIndex, LocationInfo.BASE_LOCATION);
}
//helper for above
- static <D extends GenericDeclaration> AnnotatedType[] parseAnnotatedBounds(Type[] bounds,
+ private static <D extends GenericDeclaration> AnnotatedType[] parseAnnotatedBounds(Type[] bounds,
D decl,
int typeVarIndex,
LocationInfo loc) {
--- a/jdk/src/share/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -52,7 +52,7 @@
}
private void validateConstructorArguments() {
- TypeVariable/*<?>*/[] formals = rawType.getTypeParameters();
+ TypeVariable<?>[] formals = rawType.getTypeParameters();
// check correct arity of actual type args
if (formals.length != actualTypeArguments.length){
throw new MalformedParameterizedTypeException();
--- a/jdk/src/share/classes/sun/reflect/generics/repository/GenericDeclRepository.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/reflect/generics/repository/GenericDeclRepository.java Wed Jul 05 19:22:42 2017 +0200
@@ -42,7 +42,7 @@
public abstract class GenericDeclRepository<S extends Signature>
extends AbstractRepository<S> {
- private TypeVariable[] typeParams; // caches the formal type parameters
+ private TypeVariable<?>[] typeParams; // caches the formal type parameters
protected GenericDeclRepository(String rawSig, GenericsFactory f) {
super(rawSig, f);
@@ -64,7 +64,7 @@
* Return the formal type parameters of this generic declaration.
* @return the formal type parameters of this generic declaration
*/
- public TypeVariable/*<?>*/[] getTypeParameters(){
+ public TypeVariable<?>[] getTypeParameters(){
if (typeParams == null) { // lazily initialize type parameters
// first, extract type parameter subtree(s) from AST
FormalTypeParameter[] ftps = getTree().getFormalTypeParameters();
--- a/jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/reflect/misc/ReflectUtil.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -298,4 +298,13 @@
}
return false;
}
+
+ /**
+ * Checks if {@code Class cls} is a VM-anonymous class
+ * as defined by {@link sun.misc.Unsafe#defineAnonymousClass}
+ * (not to be confused with a Java Language anonymous inner class).
+ */
+ public static boolean isVMAnonymousClass(Class<?> cls) {
+ return cls.getName().indexOf("/") > -1;
+ }
}
--- a/jdk/src/share/classes/sun/rmi/rmic/Main.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/rmi/rmic/Main.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -494,7 +494,7 @@
extDirsArg);
BatchEnvironment result = null;
try {
- Class[] ctorArgTypes = {OutputStream.class,ClassPath.class,Main.class};
+ Class<?>[] ctorArgTypes = {OutputStream.class,ClassPath.class,Main.class};
Object[] ctorArgs = {out,classPath,this};
Constructor<? extends BatchEnvironment> constructor =
environmentClass.getConstructor(ctorArgTypes);
--- a/jdk/src/share/classes/sun/rmi/rmic/RMIGenerator.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/rmi/rmic/RMIGenerator.java Wed Jul 05 19:22:42 2017 +0200
@@ -1132,7 +1132,7 @@
throws IOException
{
if (types.length != names.length) {
- throw new Error("paramter type and name arrays different sizes");
+ throw new Error("parameter type and name arrays different sizes");
}
for (int i = 0; i < types.length; i++) {
@@ -1213,7 +1213,7 @@
throws IOException
{
if (types.length != names.length) {
- throw new Error("paramter type and name arrays different sizes");
+ throw new Error("parameter type and name arrays different sizes");
}
boolean readObject = false;
--- a/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java Wed Jul 05 19:22:42 2017 +0200
@@ -692,7 +692,7 @@
* Define a proxy class in the given class loader. The proxy
* class will implement the given interfaces Classes.
*/
- private static Class<?> loadProxyClass(ClassLoader loader, Class[] interfaces)
+ private static Class<?> loadProxyClass(ClassLoader loader, Class<?>[] interfaces)
throws ClassNotFoundException
{
try {
@@ -719,7 +719,7 @@
*/
private static ClassLoader loadProxyInterfaces(String[] interfaces,
ClassLoader loader,
- Class[] classObjs,
+ Class<?>[] classObjs,
boolean[] nonpublic)
throws ClassNotFoundException
{
--- a/jdk/src/share/classes/sun/rmi/server/UnicastServerRef.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/rmi/server/UnicastServerRef.java Wed Jul 05 19:22:42 2017 +0200
@@ -299,7 +299,7 @@
logCall(obj, method);
// unmarshal parameters
- Class[] types = method.getParameterTypes();
+ Class<?>[] types = method.getParameterTypes();
Object[] params = new Object[types.length];
try {
--- a/jdk/src/share/classes/sun/rmi/server/Util.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/rmi/server/Util.java Wed Jul 05 19:22:42 2017 +0200
@@ -87,7 +87,7 @@
Collections.synchronizedMap(new WeakHashMap<Class<?>, Void>(11));
/** parameter types for stub constructor */
- private static final Class[] stubConsParamTypes = { RemoteRef.class };
+ private static final Class<?>[] stubConsParamTypes = { RemoteRef.class };
private Util() {
}
@@ -143,7 +143,7 @@
}
final ClassLoader loader = implClass.getClassLoader();
- final Class[] interfaces = getRemoteInterfaces(implClass);
+ final Class<?>[] interfaces = getRemoteInterfaces(implClass);
final InvocationHandler handler =
new RemoteObjectInvocationHandler(clientRef);
--- a/jdk/src/share/classes/sun/security/jgss/krb5/InitialToken.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/security/jgss/krb5/InitialToken.java Wed Jul 05 19:22:42 2017 +0200
@@ -192,7 +192,7 @@
if (krbCredMessage.length > 0x0000ffff)
throw new GSSException(GSSException.FAILURE, -1,
- "Incorrect messsage length");
+ "Incorrect message length");
writeLittleEndian(krbCredMessage.length, temp);
checksumBytes[pos++] = temp[0];
--- a/jdk/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/security/jgss/spnego/SpNegoContext.java Wed Jul 05 19:22:42 2017 +0200
@@ -360,7 +360,7 @@
if (internal_mech == null) {
// return wth failure
throw new GSSException(errorCode, -1,
- "supported mechansim from server is null");
+ "supported mechanism from server is null");
}
// get the negotiated result
@@ -911,7 +911,7 @@
return mechContext.isEstablished();
} else {
if (DEBUG) {
- System.out.println("The underlying mechansim context has " +
+ System.out.println("The underlying mechanism context has " +
"not been initialized");
}
return false;
@@ -1024,7 +1024,7 @@
return peerName;
} else {
if (DEBUG) {
- System.out.println("The underlying mechansim context has " +
+ System.out.println("The underlying mechanism context has " +
"not been initialized");
}
return null;
@@ -1040,7 +1040,7 @@
return myName;
} else {
if (DEBUG) {
- System.out.println("The underlying mechansim context has " +
+ System.out.println("The underlying mechanism context has " +
"not been initialized");
}
return null;
--- a/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java Wed Jul 05 19:22:42 2017 +0200
@@ -1781,14 +1781,14 @@
try {
java.security.cert.Certificate[] cs = null;
if (altCertChain != null) {
- try {
+ try (FileInputStream fis = new FileInputStream(altCertChain)) {
cs = CertificateFactory.getInstance("X.509").
- generateCertificates(new FileInputStream(altCertChain)).
+ generateCertificates(fis).
toArray(new Certificate[0]);
- } catch (CertificateException ex) {
- error(rb.getString("Cannot.restore.certchain.from.file.specified"));
} catch (FileNotFoundException ex) {
error(rb.getString("File.specified.by.certchain.does.not.exist"));
+ } catch (CertificateException | IOException ex) {
+ error(rb.getString("Cannot.restore.certchain.from.file.specified"));
}
} else {
try {
--- a/jdk/src/share/classes/sun/text/resources/sv/FormatData_sv_SE.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/text/resources/sv/FormatData_sv_SE.java Wed Jul 05 19:22:42 2017 +0200
@@ -52,7 +52,7 @@
new String[] {
"#,##0.###;-#,##0.###", // decimal pattern
"#,##0.00 \u00A4;-#,##0.00 \u00A4", // currency pattern
- "#,##0%" // percent pattern
+ "#,##0 %" // percent pattern
}
},
};
--- a/jdk/src/share/classes/sun/tools/jinfo/JInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/tools/jinfo/JInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -26,7 +26,6 @@
package sun.tools.jinfo;
import java.lang.reflect.Method;
-import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -44,7 +43,7 @@
public static void main(String[] args) throws Exception {
if (args.length == 0) {
- usage(); // no arguments
+ usage(1); // no arguments
}
boolean useSA = true;
@@ -56,14 +55,20 @@
// (<executable> and <code file>). So, total
// argument count including option has to 2 or 3.
if (args.length != 2 && args.length != 3) {
- usage();
+ usage(1);
}
} else if (arg1.equals("-flag")) {
// do not use SA, use attach-on-demand
useSA = false;
} else {
// unknown option or -h or -help, print help
- usage();
+ int exit;
+ if (arg1.equals("-help") || arg1.equals("-h")) {
+ exit = 0;
+ } else {
+ exit = 1;
+ }
+ usage(exit);
}
}
@@ -75,7 +80,13 @@
String option = args[1];
flag(pid, option);
} else {
- usage();
+ int exit;
+ if (arg1.equals("-help") || arg1.equals("-h")) {
+ exit = 0;
+ } else {
+ exit = 1;
+ }
+ usage(exit);
}
}
}
@@ -86,7 +97,7 @@
// Tool not available on this platform.
Class<?> c = loadClass(tool);
if (c == null) {
- usage();
+ usage(1);
}
// invoke the main method with the arguments
@@ -176,39 +187,39 @@
// print usage message
- private static void usage() {
+ private static void usage(int exit) {
Class<?> c = loadClass("sun.jvm.hotspot.tools.JInfo");
boolean usageSA = (c != null);
- System.out.println("Usage:");
+ System.err.println("Usage:");
if (usageSA) {
- System.out.println(" jinfo [option] <pid>");
- System.out.println(" (to connect to running process)");
- System.out.println(" jinfo [option] <executable <core>");
- System.out.println(" (to connect to a core file)");
- System.out.println(" jinfo [option] [server_id@]<remote server IP or hostname>");
- System.out.println(" (to connect to remote debug server)");
- System.out.println("");
- System.out.println("where <option> is one of:");
- System.out.println(" -flag <name> to print the value of the named VM flag");
- System.out.println(" -flag [+|-]<name> to enable or disable the named VM flag");
- System.out.println(" -flag <name>=<value> to set the named VM flag to the given value");
- System.out.println(" -flags to print VM flags");
- System.out.println(" -sysprops to print Java system properties");
- System.out.println(" <no option> to print both of the above");
- System.out.println(" -h | -help to print this help message");
+ System.err.println(" jinfo [option] <pid>");
+ System.err.println(" (to connect to running process)");
+ System.err.println(" jinfo [option] <executable <core>");
+ System.err.println(" (to connect to a core file)");
+ System.err.println(" jinfo [option] [server_id@]<remote server IP or hostname>");
+ System.err.println(" (to connect to remote debug server)");
+ System.err.println("");
+ System.err.println("where <option> is one of:");
+ System.err.println(" -flag <name> to print the value of the named VM flag");
+ System.err.println(" -flag [+|-]<name> to enable or disable the named VM flag");
+ System.err.println(" -flag <name>=<value> to set the named VM flag to the given value");
+ System.err.println(" -flags to print VM flags");
+ System.err.println(" -sysprops to print Java system properties");
+ System.err.println(" <no option> to print both of the above");
+ System.err.println(" -h | -help to print this help message");
} else {
- System.out.println(" jinfo <option> <pid>");
- System.out.println(" (to connect to a running process)");
- System.out.println("");
- System.out.println("where <option> is one of:");
- System.out.println(" -flag <name> to print the value of the named VM flag");
- System.out.println(" -flag [+|-]<name> to enable or disable the named VM flag");
- System.out.println(" -flag <name>=<value> to set the named VM flag to the given value");
- System.out.println(" -h | -help to print this help message");
+ System.err.println(" jinfo <option> <pid>");
+ System.err.println(" (to connect to a running process)");
+ System.err.println("");
+ System.err.println("where <option> is one of:");
+ System.err.println(" -flag <name> to print the value of the named VM flag");
+ System.err.println(" -flag [+|-]<name> to enable or disable the named VM flag");
+ System.err.println(" -flag <name>=<value> to set the named VM flag to the given value");
+ System.err.println(" -h | -help to print this help message");
}
- System.exit(1);
+ System.exit(exit);
}
}
--- a/jdk/src/share/classes/sun/tools/jmap/JMap.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/tools/jmap/JMap.java Wed Jul 05 19:22:42 2017 +0200
@@ -60,7 +60,7 @@
public static void main(String[] args) throws Exception {
if (args.length == 0) {
- usage(); // no arguments
+ usage(1); // no arguments
}
// used to indicate if we should use SA
@@ -77,11 +77,13 @@
if (!arg.startsWith("-")) {
break;
}
- if (arg.equals(FORCE_SA_OPTION)) {
+ if (arg.equals("-help") || arg.equals("-h")) {
+ usage(0);
+ } else if (arg.equals(FORCE_SA_OPTION)) {
useSA = true;
} else {
if (option != null) {
- usage(); // option already specified
+ usage(1); // option already specified
}
option = arg;
}
@@ -101,7 +103,7 @@
// only one parameter (the process-id)
int paramCount = args.length - optionCount;
if (paramCount == 0 || paramCount > 2) {
- usage();
+ usage(1);
}
if (optionCount == 0 || paramCount != 1) {
@@ -139,7 +141,7 @@
} else if (option.startsWith(DUMP_OPTION_PREFIX)) {
dump(pid, option);
} else {
- usage();
+ usage(1);
}
}
}
@@ -161,7 +163,9 @@
if (option.startsWith(DUMP_OPTION_PREFIX)) {
// first check that the option can be parsed
String fn = parseDumpOptions(option);
- if (fn == null) usage();
+ if (fn == null) {
+ usage(1);
+ }
// tool for heap dumping
tool = "sun.jvm.hotspot.tools.HeapDumper";
@@ -180,13 +184,13 @@
}
}
if (tool == null) {
- usage(); // no mapping to tool
+ usage(1); // no mapping to tool
}
// Tool not available on this platform.
Class<?> c = loadClass(tool);
if (c == null) {
- usage();
+ usage(1);
}
// invoke the main method with the arguments
@@ -225,7 +229,7 @@
// parse the options to get the dump filename
String filename = parseDumpOptions(options);
if (filename == null) {
- usage(); // invalid options or no filename
+ usage(1); // invalid options or no filename
}
// get the canonical path - important to avoid just passing
@@ -341,49 +345,49 @@
}
// print usage message
- private static void usage() {
- System.out.println("Usage:");
+ private static void usage(int exit) {
+ System.err.println("Usage:");
if (haveSA()) {
- System.out.println(" jmap [option] <pid>");
- System.out.println(" (to connect to running process)");
- System.out.println(" jmap [option] <executable <core>");
- System.out.println(" (to connect to a core file)");
- System.out.println(" jmap [option] [server_id@]<remote server IP or hostname>");
- System.out.println(" (to connect to remote debug server)");
- System.out.println("");
- System.out.println("where <option> is one of:");
- System.out.println(" <none> to print same info as Solaris pmap");
- System.out.println(" -heap to print java heap summary");
- System.out.println(" -histo[:live] to print histogram of java object heap; if the \"live\"");
- System.out.println(" suboption is specified, only count live objects");
- System.out.println(" -clstats to print class loader statistics");
- System.out.println(" -finalizerinfo to print information on objects awaiting finalization");
- System.out.println(" -dump:<dump-options> to dump java heap in hprof binary format");
- System.out.println(" dump-options:");
- System.out.println(" live dump only live objects; if not specified,");
- System.out.println(" all objects in the heap are dumped.");
- System.out.println(" format=b binary format");
- System.out.println(" file=<file> dump heap to <file>");
- System.out.println(" Example: jmap -dump:live,format=b,file=heap.bin <pid>");
- System.out.println(" -F force. Use with -dump:<dump-options> <pid> or -histo");
- System.out.println(" to force a heap dump or histogram when <pid> does not");
- System.out.println(" respond. The \"live\" suboption is not supported");
- System.out.println(" in this mode.");
- System.out.println(" -h | -help to print this help message");
- System.out.println(" -J<flag> to pass <flag> directly to the runtime system");
+ System.err.println(" jmap [option] <pid>");
+ System.err.println(" (to connect to running process)");
+ System.err.println(" jmap [option] <executable <core>");
+ System.err.println(" (to connect to a core file)");
+ System.err.println(" jmap [option] [server_id@]<remote server IP or hostname>");
+ System.err.println(" (to connect to remote debug server)");
+ System.err.println("");
+ System.err.println("where <option> is one of:");
+ System.err.println(" <none> to print same info as Solaris pmap");
+ System.err.println(" -heap to print java heap summary");
+ System.err.println(" -histo[:live] to print histogram of java object heap; if the \"live\"");
+ System.err.println(" suboption is specified, only count live objects");
+ System.err.println(" -clstats to print class loader statistics");
+ System.err.println(" -finalizerinfo to print information on objects awaiting finalization");
+ System.err.println(" -dump:<dump-options> to dump java heap in hprof binary format");
+ System.err.println(" dump-options:");
+ System.err.println(" live dump only live objects; if not specified,");
+ System.err.println(" all objects in the heap are dumped.");
+ System.err.println(" format=b binary format");
+ System.err.println(" file=<file> dump heap to <file>");
+ System.err.println(" Example: jmap -dump:live,format=b,file=heap.bin <pid>");
+ System.err.println(" -F force. Use with -dump:<dump-options> <pid> or -histo");
+ System.err.println(" to force a heap dump or histogram when <pid> does not");
+ System.err.println(" respond. The \"live\" suboption is not supported");
+ System.err.println(" in this mode.");
+ System.err.println(" -h | -help to print this help message");
+ System.err.println(" -J<flag> to pass <flag> directly to the runtime system");
} else {
- System.out.println(" jmap -histo <pid>");
- System.out.println(" (to connect to running process and print histogram of java object heap");
- System.out.println(" jmap -dump:<dump-options> <pid>");
- System.out.println(" (to connect to running process and dump java heap)");
- System.out.println("");
- System.out.println(" dump-options:");
- System.out.println(" format=b binary default");
- System.out.println(" file=<file> dump heap to <file>");
- System.out.println("");
- System.out.println(" Example: jmap -dump:format=b,file=heap.bin <pid>");
+ System.err.println(" jmap -histo <pid>");
+ System.err.println(" (to connect to running process and print histogram of java object heap");
+ System.err.println(" jmap -dump:<dump-options> <pid>");
+ System.err.println(" (to connect to running process and dump java heap)");
+ System.err.println("");
+ System.err.println(" dump-options:");
+ System.err.println(" format=b binary default");
+ System.err.println(" file=<file> dump heap to <file>");
+ System.err.println("");
+ System.err.println(" Example: jmap -dump:format=b,file=heap.bin <pid>");
}
- System.exit(1);
+ System.exit(exit);
}
}
--- a/jdk/src/share/classes/sun/tools/jps/Jps.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/tools/jps/Jps.java Wed Jul 05 19:22:42 2017 +0200
@@ -45,11 +45,11 @@
} catch (IllegalArgumentException e) {
System.err.println(e.getMessage());
Arguments.printUsage(System.err);
- return;
+ System.exit(1);
}
if (arguments.isHelp()) {
- Arguments.printUsage(System.out);
+ Arguments.printUsage(System.err);
System.exit(0);
}
@@ -165,6 +165,7 @@
e.printStackTrace();
}
}
+ System.exit(1);
}
}
}
--- a/jdk/src/share/classes/sun/tools/jstack/JStack.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/tools/jstack/JStack.java Wed Jul 05 19:22:42 2017 +0200
@@ -42,7 +42,7 @@
public class JStack {
public static void main(String[] args) throws Exception {
if (args.length == 0) {
- usage(); // no arguments
+ usage(1); // no arguments
}
boolean useSA = false;
@@ -56,16 +56,20 @@
if (!arg.startsWith("-")) {
break;
}
- if (arg.equals("-F")) {
+ if (arg.equals("-help") || arg.equals("-h")) {
+ usage(0);
+ }
+ else if (arg.equals("-F")) {
useSA = true;
- } else {
+ }
+ else {
if (arg.equals("-m")) {
mixed = true;
} else {
if (arg.equals("-l")) {
locks = true;
} else {
- usage();
+ usage(1);
}
}
}
@@ -81,7 +85,7 @@
// we assume core file and executable so we use SA.
int paramCount = args.length - optionCount;
if (paramCount == 0 || paramCount > 2) {
- usage();
+ usage(1);
}
if (paramCount == 2) {
useSA = true;
@@ -118,7 +122,7 @@
private static void runJStackTool(boolean mixed, boolean locks, String args[]) throws Exception {
Class<?> cl = loadSAClass();
if (cl == null) {
- usage(); // SA not available
+ usage(1); // SA not available
}
// JStack tool also takes -m and -l arguments
@@ -199,31 +203,31 @@
}
// print usage message
- private static void usage() {
- System.out.println("Usage:");
- System.out.println(" jstack [-l] <pid>");
- System.out.println(" (to connect to running process)");
+ private static void usage(int exit) {
+ System.err.println("Usage:");
+ System.err.println(" jstack [-l] <pid>");
+ System.err.println(" (to connect to running process)");
if (loadSAClass() != null) {
- System.out.println(" jstack -F [-m] [-l] <pid>");
- System.out.println(" (to connect to a hung process)");
- System.out.println(" jstack [-m] [-l] <executable> <core>");
- System.out.println(" (to connect to a core file)");
- System.out.println(" jstack [-m] [-l] [server_id@]<remote server IP or hostname>");
- System.out.println(" (to connect to a remote debug server)");
+ System.err.println(" jstack -F [-m] [-l] <pid>");
+ System.err.println(" (to connect to a hung process)");
+ System.err.println(" jstack [-m] [-l] <executable> <core>");
+ System.err.println(" (to connect to a core file)");
+ System.err.println(" jstack [-m] [-l] [server_id@]<remote server IP or hostname>");
+ System.err.println(" (to connect to a remote debug server)");
}
- System.out.println("");
- System.out.println("Options:");
+ System.err.println("");
+ System.err.println("Options:");
if (loadSAClass() != null) {
- System.out.println(" -F to force a thread dump. Use when jstack <pid> does not respond" +
+ System.err.println(" -F to force a thread dump. Use when jstack <pid> does not respond" +
" (process is hung)");
- System.out.println(" -m to print both java and native frames (mixed mode)");
+ System.err.println(" -m to print both java and native frames (mixed mode)");
}
- System.out.println(" -l long listing. Prints additional information about locks");
- System.out.println(" -h or -help to print this help message");
- System.exit(1);
+ System.err.println(" -l long listing. Prints additional information about locks");
+ System.err.println(" -h or -help to print this help message");
+ System.exit(exit);
}
}
--- a/jdk/src/share/classes/sun/tools/serialver/SerialVer.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/classes/sun/tools/serialver/SerialVer.java Wed Jul 05 19:22:42 2017 +0200
@@ -211,7 +211,7 @@
Class<?> cl = Class.forName(classname, false, loader);
ObjectStreamClass desc = ObjectStreamClass.lookup(cl);
if (desc != null) {
- return " static final long serialVersionUID = " +
+ return " private static final long serialVersionUID = " +
desc.getSerialVersionUID() + "L;";
} else {
return null;
--- a/jdk/src/share/demo/jfc/FileChooserDemo/FileChooserDemo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/demo/jfc/FileChooserDemo/FileChooserDemo.java Wed Jul 05 19:22:42 2017 +0200
@@ -450,9 +450,9 @@
"User cancelled operation. No file was chosen.");
} else if (retval == ERROR_OPTION) {
JOptionPane.showMessageDialog(frame,
- "An error occured. No file was chosen.");
+ "An error occurred. No file was chosen.");
} else {
- JOptionPane.showMessageDialog(frame, "Unknown operation occured.");
+ JOptionPane.showMessageDialog(frame, "Unknown operation occurred.");
}
}
--- a/jdk/src/share/demo/jvmti/java_crw_demo/java_crw_demo.c Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/demo/jvmti/java_crw_demo/java_crw_demo.c Wed Jul 05 19:22:42 2017 +0200
@@ -263,8 +263,8 @@
/* Normal operation should NEVER reach here */
/* NO CRW FATAL ERROR HANDLER! */
(void)fprintf(stderr, "CRW: %s [%s:%d]\n", message, file, line);
- abort();
}
+ abort();
}
#if defined(DEBUG) || !defined(NDEBUG)
--- a/jdk/src/share/javavm/export/jmm.h Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/javavm/export/jmm.h Wed Jul 05 19:22:42 2017 +0200
@@ -78,6 +78,7 @@
JMM_COMPILE_TOTAL_TIME_MS = 8, /* Total accumulated time spent in compilation */
JMM_GC_TIME_MS = 9, /* Total accumulated time spent in collection */
JMM_GC_COUNT = 10, /* Total number of collections */
+ JMM_JVM_UPTIME_MS = 11, /* The JVM uptime in milliseconds */
JMM_INTERNAL_ATTRIBUTE_INDEX = 100,
JMM_CLASS_LOADED_BYTES = 101, /* Number of bytes loaded instance classes */
--- a/jdk/src/share/native/java/lang/ref/Finalizer.c Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 1997, 1998, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include "jni.h"
-#include "java_lang_ref_Finalizer.h"
-
-
-JNIEXPORT void JNICALL
-Java_java_lang_ref_Finalizer_invokeFinalizeMethod(JNIEnv *env, jclass clazz,
- jobject ob)
-{
- jclass cls;
- jmethodID mid;
-
- cls = (*env)->GetObjectClass(env, ob);
- if (cls == NULL) return;
- mid = (*env)->GetMethodID(env, cls, "finalize", "()V");
- if (mid == NULL) return;
- (*env)->CallVoidMethod(env, ob, mid);
-}
--- a/jdk/src/share/native/java/net/Inet4Address.c Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/native/java/net/Inet4Address.c Wed Jul 05 19:22:42 2017 +0200
@@ -46,5 +46,4 @@
ia4_class = (*env)->NewGlobalRef(env, c);
CHECK_NULL(ia4_class);
ia4_ctrID = (*env)->GetMethodID(env, ia4_class, "<init>", "()V");
- CHECK_NULL(ia4_ctrID);
}
--- a/jdk/src/share/native/java/net/Inet6Address.c Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/native/java/net/Inet6Address.c Wed Jul 05 19:22:42 2017 +0200
@@ -65,9 +65,8 @@
ia6_cachedscopeidID = (*env)->GetFieldID(env, ia6_class, "cached_scope_id", "I");
CHECK_NULL(ia6_cachedscopeidID);
ia6_scopeidsetID = (*env)->GetFieldID(env, ia6h_class, "scope_id_set", "Z");
- CHECK_NULL(ia6_scopeidID);
+ CHECK_NULL(ia6_scopeidsetID);
ia6_scopeifnameID = (*env)->GetFieldID(env, ia6h_class, "scope_ifname", "Ljava/net/NetworkInterface;");
CHECK_NULL(ia6_scopeifnameID);
ia6_ctrID = (*env)->GetMethodID(env, ia6_class, "<init>", "()V");
- CHECK_NULL(ia6_ctrID);
}
--- a/jdk/src/share/native/java/net/InetAddress.c Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/native/java/net/InetAddress.c Wed Jul 05 19:22:42 2017 +0200
@@ -64,5 +64,4 @@
iac_familyID = (*env)->GetFieldID(env, iac_class, "family", "I");
CHECK_NULL(iac_familyID);
iac_hostNameID = (*env)->GetFieldID(env, iac_class, "hostName", "Ljava/lang/String;");
- CHECK_NULL(iac_hostNameID);
}
--- a/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio0.c Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/native/sun/java2d/cmm/lcms/cmsio0.c Wed Jul 05 19:22:42 2017 +0200
@@ -1077,7 +1077,13 @@
static
cmsBool SanityCheck(_cmsICCPROFILE* profile)
{
- cmsIOHANDLER* io = profile->IOhandler;
+ cmsIOHANDLER* io;
+
+ if (!profile) {
+ return FALSE;
+ }
+
+ io = profile->IOhandler;
if (!io) {
return FALSE;
}
@@ -1108,8 +1114,6 @@
cmsTagTypeSignature TypeBase;
cmsTagTypeHandler* TypeHandler;
- if (!SanityCheck(FileOrig)) return FALSE;
-
for (i=0; i < Icc -> TagCount; i++) {
@@ -1126,7 +1130,7 @@
// Reach here if we are copying a tag from a disk-based ICC profile which has not been modified by user.
// In this case a blind copy of the block data is performed
- if (FileOrig != NULL && Icc -> TagOffsets[i]) {
+ if (SanityCheck(FileOrig) && Icc -> TagOffsets[i]) {
cmsUInt32Number TagSize = FileOrig -> TagSizes[i];
cmsUInt32Number TagOffset = FileOrig -> TagOffsets[i];
--- a/jdk/src/share/native/sun/management/VMManagementImpl.c Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/native/sun/management/VMManagementImpl.c Wed Jul 05 19:22:42 2017 +0200
@@ -200,6 +200,13 @@
JMM_JVM_INIT_DONE_TIME_MS);
}
+JNIEXPORT jlong JNICALL
+Java_sun_management_VMManagementImpl_getUptime0
+ (JNIEnv *env, jobject dummy)
+{
+ return jmm_interface->GetLongAttribute(env, NULL, JMM_JVM_UPTIME_MS);
+}
+
JNIEXPORT jboolean JNICALL
Java_sun_management_VMManagementImpl_isThreadContentionMonitoringEnabled
(JNIEnv *env, jobject dummy)
--- a/jdk/src/share/native/sun/security/pkcs11/wrapper/p11_util.c Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/native/sun/security/pkcs11/wrapper/p11_util.c Wed Jul 05 19:22:42 2017 +0200
@@ -598,16 +598,16 @@
throwOutOfMemoryError(env, 0);
return;
}
- TRACE1(", converting %d attibutes", jLength);
+ TRACE1(", converting %d attributes", jLength);
for (i=0; i<(*ckpLength); i++) {
- TRACE1(", getting %d. attibute", i);
+ TRACE1(", getting %d. attribute", i);
jAttribute = (*env)->GetObjectArrayElement(env, jArray, i);
if ((*env)->ExceptionCheck(env)) {
freeCKAttributeArray(*ckpArray, i);
return;
}
TRACE1(", jAttribute = %d", jAttribute);
- TRACE1(", converting %d. attibute", i);
+ TRACE1(", converting %d. attribute", i);
(*ckpArray)[i] = jAttributeToCKAttribute(env, jAttribute);
if ((*env)->ExceptionCheck(env)) {
freeCKAttributeArray(*ckpArray, i);
--- a/jdk/src/share/sample/nio/chatserver/ClientReader.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/share/sample/nio/chatserver/ClientReader.java Wed Jul 05 19:22:42 2017 +0200
@@ -58,7 +58,7 @@
}
/**
- * Runs a cycle of doing a beforeRead action and then inquiring a new
+ * Runs a cycle of doing a beforeRead action and then enqueuing a new
* read on the client. Handles closed channels and errors while reading.
* If the client is still connected a new round of actions are called.
*/
--- a/jdk/src/solaris/classes/com/sun/management/OSMBeanFactory.java Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.management;
-
-import java.lang.management.OperatingSystemMXBean;
-import sun.management.VMManagement;
-
-/**
- * Operating system dependent MBean factory.
- * <p>
- * <b>WARNING:</b> While this class is public, it should not be treated as
- * public API and its API may change in incompatable ways between dot dot
- * releases and even patch releases. You should not rely on this class.
- */
-@jdk.Exported(false)
-public class OSMBeanFactory {
- /* static factory class */
- private OSMBeanFactory() {};
-
- private static UnixOperatingSystem osMBean = null;
-
- public static synchronized OperatingSystemMXBean
- getOperatingSystemMXBean(VMManagement jvm) {
-
- if (osMBean == null) {
- osMBean = new UnixOperatingSystem(jvm);
- }
- return (OperatingSystemMXBean) osMBean;
- }
-}
--- a/jdk/src/solaris/classes/com/sun/management/UnixOperatingSystem.java Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.management;
-
-import sun.management.VMManagement;
-
-/**
- * Implementation class for the operating system.
- * Standard and committed hotspot-specific metrics if any.
- *
- * ManagementFactory.getOperatingSystemMXBean() returns an instance
- * of this class.
- */
-class UnixOperatingSystem
- extends sun.management.OperatingSystemImpl
- implements UnixOperatingSystemMXBean {
-
- UnixOperatingSystem(VMManagement vm) {
- super(vm);
- }
-
- public native long getCommittedVirtualMemorySize();
- public native long getTotalSwapSpaceSize();
- public native long getFreeSwapSpaceSize();
- public native long getProcessCpuTime();
- public native long getFreePhysicalMemorySize();
- public native long getTotalPhysicalMemorySize();
- public native long getOpenFileDescriptorCount();
- public native long getMaxFileDescriptorCount();
- public native double getSystemCpuLoad();
- public native double getProcessCpuLoad();
-
- static {
- initialize();
- }
- private static native void initialize();
-}
--- a/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java Wed Jul 05 19:22:42 2017 +0200
@@ -1173,7 +1173,7 @@
}
if (target == activeWindow && target != focusedWindow) {
// Happens when an owned window is currently focused
- focusLog.fine("Focus is on child window - transfering it back to the owner");
+ focusLog.fine("Focus is on child window - transferring it back to the owner");
handleWindowFocusInSync(-1);
return true;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/solaris/classes/sun/management/OperatingSystemImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.management;
+
+/**
+ * Implementation class for the operating system.
+ * Standard and committed hotspot-specific metrics if any.
+ *
+ * ManagementFactory.getOperatingSystemMXBean() returns an instance
+ * of this class.
+ */
+class OperatingSystemImpl extends BaseOperatingSystemImpl
+ implements com.sun.management.UnixOperatingSystemMXBean {
+
+ OperatingSystemImpl(VMManagement vm) {
+ super(vm);
+ }
+
+ public native long getCommittedVirtualMemorySize();
+ public native long getTotalSwapSpaceSize();
+ public native long getFreeSwapSpaceSize();
+ public native long getProcessCpuTime();
+ public native long getFreePhysicalMemorySize();
+ public native long getTotalPhysicalMemorySize();
+ public native long getOpenFileDescriptorCount();
+ public native long getMaxFileDescriptorCount();
+ public native double getSystemCpuLoad();
+ public native double getProcessCpuLoad();
+
+ static {
+ initialize();
+ }
+ private static native void initialize();
+}
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java Wed Jul 05 19:22:42 2017 +0200
@@ -484,7 +484,7 @@
if (sm != null) {
FilePermission perm = new FilePermission(link.getPathForPermissionCheck(),
SecurityConstants.FILE_READLINK_ACTION);
- AccessController.checkPermission(perm);
+ sm.checkPermission(perm);
}
try {
byte[] target = readlink(link);
--- a/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java Wed Jul 05 19:22:42 2017 +0200
@@ -145,7 +145,7 @@
}
if (error) {
throw new InvalidPathException(input,
- "Malformed input or input contains unmappable chacraters");
+ "Malformed input or input contains unmappable characters");
}
// trim result to actual length if required
--- a/jdk/src/solaris/native/com/sun/management/LinuxOperatingSystem.c Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,332 +0,0 @@
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <stdarg.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/resource.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <stdlib.h>
-#include <dlfcn.h>
-#include <pthread.h>
-#include "com_sun_management_UnixOperatingSystem.h"
-
-struct ticks {
- uint64_t used;
- uint64_t usedKernel;
- uint64_t total;
-};
-
-typedef struct ticks ticks;
-
-typedef enum {
- CPU_LOAD_VM_ONLY,
- CPU_LOAD_GLOBAL,
-} CpuLoadTarget;
-
-static struct perfbuf {
- int nProcs;
- ticks jvmTicks;
- ticks cpuTicks;
- ticks *cpus;
-} counters;
-
-#define DEC_64 "%lld"
-
-static void next_line(FILE *f) {
- while (fgetc(f) != '\n');
-}
-
-/**
- * Return the total number of ticks since the system was booted.
- * If the usedTicks parameter is not NULL, it will be filled with
- * the number of ticks spent on actual processes (user, system or
- * nice processes) since system boot. Note that this is the total number
- * of "executed" ticks on _all_ CPU:s, that is on a n-way system it is
- * n times the number of ticks that has passed in clock time.
- *
- * Returns a negative value if the reading of the ticks failed.
- */
-static int get_totalticks(int which, ticks *pticks) {
- FILE *fh;
- uint64_t userTicks, niceTicks, systemTicks, idleTicks;
- int n;
-
- if((fh = fopen("/proc/stat", "r")) == NULL) {
- return -1;
- }
-
- n = fscanf(fh, "cpu " DEC_64 " " DEC_64 " " DEC_64 " " DEC_64,
- &userTicks, &niceTicks, &systemTicks, &idleTicks);
-
- // Move to next line
- next_line(fh);
-
- //find the line for requested cpu faster to just iterate linefeeds?
- if (which != -1) {
- int i;
- for (i = 0; i < which; i++) {
- if (fscanf(fh, "cpu%*d " DEC_64 " " DEC_64 " " DEC_64 " " DEC_64, &userTicks, &niceTicks, &systemTicks, &idleTicks) != 4) {
- fclose(fh);
- return -2;
- }
- next_line(fh);
- }
- n = fscanf(fh, "cpu%*d " DEC_64 " " DEC_64 " " DEC_64 " " DEC_64 "\n",
- &userTicks, &niceTicks, &systemTicks, &idleTicks);
- }
-
- fclose(fh);
- if (n != 4) {
- return -2;
- }
-
- pticks->used = userTicks + niceTicks;
- pticks->usedKernel = systemTicks;
- pticks->total = userTicks + niceTicks + systemTicks + idleTicks;
-
- return 0;
-}
-
-static int vread_statdata(const char *procfile, const char *fmt, va_list args) {
- FILE *f;
- int n;
- char buf[2048];
-
- if ((f = fopen(procfile, "r")) == NULL) {
- return -1;
- }
-
- if ((n = fread(buf, 1, sizeof(buf), f)) != -1) {
- char *tmp;
-
- buf[n-1] = '\0';
- /** skip through pid and exec name. the exec name _could be wacky_ (renamed) and
- * make scanf go mupp.
- */
- if ((tmp = strrchr(buf, ')')) != NULL) {
- // skip the ')' and the following space but check that the buffer is long enough
- tmp += 2;
- if (tmp < buf + n) {
- n = vsscanf(tmp, fmt, args);
- }
- }
- }
-
- fclose(f);
-
- return n;
-}
-
-static int read_statdata(const char *procfile, const char *fmt, ...) {
- int n;
- va_list args;
-
- va_start(args, fmt);
- n = vread_statdata(procfile, fmt, args);
- va_end(args);
- return n;
-}
-
-/** read user and system ticks from a named procfile, assumed to be in 'stat' format then. */
-static int read_ticks(const char *procfile, uint64_t *userTicks, uint64_t *systemTicks) {
- return read_statdata(procfile, "%*c %*d %*d %*d %*d %*d %*u %*u %*u %*u %*u "DEC_64" "DEC_64,
- userTicks, systemTicks
- );
-}
-
-/**
- * Return the number of ticks spent in any of the processes belonging
- * to the JVM on any CPU.
- */
-static int get_jvmticks(ticks *pticks) {
- uint64_t userTicks;
- uint64_t systemTicks;
-
- if (read_ticks("/proc/self/stat", &userTicks, &systemTicks) < 0) {
- return -1;
- }
-
- // get the total
- if (get_totalticks(-1, pticks) < 0) {
- return -1;
- }
-
- pticks->used = userTicks;
- pticks->usedKernel = systemTicks;
-
- return 0;
-}
-
-/**
- * This method must be called first, before any data can be gathererd.
- */
-int perfInit() {
- static int initialized=1;
-
- if (!initialized) {
- int i;
-
- int n = sysconf(_SC_NPROCESSORS_ONLN);
- if (n <= 0) {
- n = 1;
- }
-
- counters.cpus = calloc(n,sizeof(ticks));
- if (counters.cpus != NULL) {
- // For the CPU load
- get_totalticks(-1, &counters.cpuTicks);
-
- for (i = 0; i < n; i++) {
- get_totalticks(i, &counters.cpus[i]);
- }
- // For JVM load
- get_jvmticks(&counters.jvmTicks);
- initialized = 1;
- }
- }
-
- return initialized ? 0 : -1;
-}
-
-#define MAX(a,b) (a>b?a:b)
-#define MIN(a,b) (a<b?a:b)
-
-static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
-
-/**
- * Return the load of the CPU as a double. 1.0 means the CPU process uses all
- * available time for user or system processes, 0.0 means the CPU uses all time
- * being idle.
- *
- * Returns a negative value if there is a problem in determining the CPU load.
- */
-
-static double get_cpuload_internal(int which, double *pkernelLoad, CpuLoadTarget target) {
- uint64_t udiff, kdiff, tdiff;
- ticks *pticks, tmp;
- double user_load = -1.0;
- int failed = 0;
-
- *pkernelLoad = 0.0;
-
- pthread_mutex_lock(&lock);
-
- if(perfInit() == 0) {
-
- if (target == CPU_LOAD_VM_ONLY) {
- pticks = &counters.jvmTicks;
- } else if (which == -1) {
- pticks = &counters.cpuTicks;
- } else {
- pticks = &counters.cpus[which];
- }
-
- tmp = *pticks;
-
- if (target == CPU_LOAD_VM_ONLY) {
- if (get_jvmticks(pticks) != 0) {
- failed = 1;
- }
- } else if (get_totalticks(which, pticks) < 0) {
- failed = 1;
- }
-
- if(!failed) {
- // seems like we sometimes end up with less kernel ticks when
- // reading /proc/self/stat a second time, timing issue between cpus?
- if (pticks->usedKernel < tmp.usedKernel) {
- kdiff = 0;
- } else {
- kdiff = pticks->usedKernel - tmp.usedKernel;
- }
- tdiff = pticks->total - tmp.total;
- udiff = pticks->used - tmp.used;
-
- if (tdiff == 0) {
- user_load = 0;
- } else {
- if (tdiff < (udiff + kdiff)) {
- tdiff = udiff + kdiff;
- }
- *pkernelLoad = (kdiff / (double)tdiff);
- // BUG9044876, normalize return values to sane values
- *pkernelLoad = MAX(*pkernelLoad, 0.0);
- *pkernelLoad = MIN(*pkernelLoad, 1.0);
-
- user_load = (udiff / (double)tdiff);
- user_load = MAX(user_load, 0.0);
- user_load = MIN(user_load, 1.0);
- }
- }
- }
- pthread_mutex_unlock(&lock);
- return user_load;
-}
-
-double get_cpu_load(int which) {
- double u, s;
- u = get_cpuload_internal(which, &s, CPU_LOAD_GLOBAL);
- if (u < 0) {
- return -1.0;
- }
- // Cap total systemload to 1.0
- return MIN((u + s), 1.0);
-}
-
-double get_process_load() {
- double u, s;
- u = get_cpuload_internal(-1, &s, CPU_LOAD_VM_ONLY);
- if (u < 0) {
- return -1.0;
- }
- return u + s;
-}
-
-JNIEXPORT jdouble JNICALL
-Java_com_sun_management_UnixOperatingSystem_getSystemCpuLoad
-(JNIEnv *env, jobject dummy)
-{
- if(perfInit() == 0) {
- return get_cpu_load(-1);
- } else {
- return -1.0;
- }
-}
-
-JNIEXPORT jdouble JNICALL
-Java_com_sun_management_UnixOperatingSystem_getProcessCpuLoad
-(JNIEnv *env, jobject dummy)
-{
- if(perfInit() == 0) {
- return get_process_load();
- } else {
- return -1.0;
- }
-}
--- a/jdk/src/solaris/native/com/sun/management/MacosxOperatingSystem.c Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include "com_sun_management_UnixOperatingSystem.h"
-
-#include <sys/time.h>
-#include <mach/mach.h>
-#include <mach/task_info.h>
-
-
-JNIEXPORT jdouble JNICALL
-Java_com_sun_management_UnixOperatingSystem_getSystemCpuLoad
-(JNIEnv *env, jobject dummy)
-{
- // This code is influenced by the darwin top source
-
- kern_return_t kr;
- mach_msg_type_number_t count;
- host_cpu_load_info_data_t load;
-
- static jlong last_used = 0;
- static jlong last_total = 0;
-
- count = HOST_CPU_LOAD_INFO_COUNT;
- kr = host_statistics(mach_host_self(), HOST_CPU_LOAD_INFO, (host_info_t)&load, &count);
- if (kr != KERN_SUCCESS) {
- return -1;
- }
-
- jlong used = load.cpu_ticks[CPU_STATE_USER] + load.cpu_ticks[CPU_STATE_NICE] + load.cpu_ticks[CPU_STATE_SYSTEM];
- jlong total = used + load.cpu_ticks[CPU_STATE_IDLE];
-
- if (last_used == 0 || last_total == 0) {
- // First call, just set the last values
- last_used = used;
- last_total = total;
- // return 0 since we have no data, not -1 which indicates error
- return 0;
- }
-
- jlong used_delta = used - last_used;
- jlong total_delta = total - last_total;
-
- jdouble cpu = (jdouble) used_delta / total_delta;
-
- last_used = used;
- last_total = total;
-
- return cpu;
-}
-
-
-#define TIME_VALUE_TO_TIMEVAL(a, r) do { \
- (r)->tv_sec = (a)->seconds; \
- (r)->tv_usec = (a)->microseconds; \
-} while (0)
-
-
-#define TIME_VALUE_TO_MICROSECONDS(TV) \
- ((TV).tv_sec * 1000 * 1000 + (TV).tv_usec)
-
-
-JNIEXPORT jdouble JNICALL
-Java_com_sun_management_UnixOperatingSystem_getProcessCpuLoad
-(JNIEnv *env, jobject dummy)
-{
- // This code is influenced by the darwin top source
-
- struct task_basic_info_64 task_info_data;
- struct task_thread_times_info thread_info_data;
- struct timeval user_timeval, system_timeval, task_timeval;
- struct timeval now;
- mach_port_t task = mach_task_self();
- kern_return_t kr;
-
- static jlong last_task_time = 0;
- static jlong last_time = 0;
-
- mach_msg_type_number_t thread_info_count = TASK_THREAD_TIMES_INFO_COUNT;
- kr = task_info(task,
- TASK_THREAD_TIMES_INFO,
- (task_info_t)&thread_info_data,
- &thread_info_count);
- if (kr != KERN_SUCCESS) {
- // Most likely cause: |task| is a zombie.
- return -1;
- }
-
- mach_msg_type_number_t count = TASK_BASIC_INFO_64_COUNT;
- kr = task_info(task,
- TASK_BASIC_INFO_64,
- (task_info_t)&task_info_data,
- &count);
- if (kr != KERN_SUCCESS) {
- // Most likely cause: |task| is a zombie.
- return -1;
- }
-
- /* Set total_time. */
- // thread info contains live time...
- TIME_VALUE_TO_TIMEVAL(&thread_info_data.user_time, &user_timeval);
- TIME_VALUE_TO_TIMEVAL(&thread_info_data.system_time, &system_timeval);
- timeradd(&user_timeval, &system_timeval, &task_timeval);
-
- // ... task info contains terminated time.
- TIME_VALUE_TO_TIMEVAL(&task_info_data.user_time, &user_timeval);
- TIME_VALUE_TO_TIMEVAL(&task_info_data.system_time, &system_timeval);
- timeradd(&user_timeval, &task_timeval, &task_timeval);
- timeradd(&system_timeval, &task_timeval, &task_timeval);
-
- if (gettimeofday(&now, NULL) < 0) {
- return -1;
- }
- jint ncpus = JVM_ActiveProcessorCount();
- jlong time = TIME_VALUE_TO_MICROSECONDS(now) * ncpus;
- jlong task_time = TIME_VALUE_TO_MICROSECONDS(task_timeval);
-
- if ((last_task_time == 0) || (last_time == 0)) {
- // First call, just set the last values.
- last_task_time = task_time;
- last_time = time;
- // return 0 since we have no data, not -1 which indicates error
- return 0;
- }
-
- jlong task_time_delta = task_time - last_task_time;
- jlong time_delta = time - last_time;
- if (time_delta == 0) {
- return -1;
- }
-
- jdouble cpu = (jdouble) task_time_delta / time_delta;
-
- last_task_time = task_time;
- last_time = time;
-
- return cpu;
- }
--- a/jdk/src/solaris/native/com/sun/management/SolarisOperatingSystem.c Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,241 +0,0 @@
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include <fcntl.h>
-#include <kstat.h>
-#include <procfs.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/sysinfo.h>
-#include <sys/lwp.h>
-#include <pthread.h>
-#include <utmpx.h>
-#include <dlfcn.h>
-#include <sys/loadavg.h>
-#include <jni.h>
-#include "jvm.h"
-#include "com_sun_management_UnixOperatingSystem.h"
-
-typedef struct {
- kstat_t *kstat;
- uint64_t last_idle;
- uint64_t last_total;
- double last_ratio;
-} cpuload_t;
-
-static cpuload_t *cpu_loads = NULL;
-static unsigned int num_cpus;
-static kstat_ctl_t *kstat_ctrl = NULL;
-
-static void map_cpu_kstat_counters() {
- kstat_t *kstat;
- int i;
-
- // Get number of CPU(s)
- if ((num_cpus = sysconf(_SC_NPROCESSORS_ONLN)) == -1) {
- num_cpus = 1;
- }
-
- // Data structure for saving CPU load
- if ((cpu_loads = calloc(num_cpus,sizeof(cpuload_t))) == NULL) {
- return;
- }
-
- // Get kstat cpu_stat counters for every CPU
- // (loop over kstat to find our cpu_stat(s)
- i = 0;
- for (kstat = kstat_ctrl->kc_chain; kstat != NULL; kstat = kstat->ks_next) {
- if (strncmp(kstat->ks_module, "cpu_stat", 8) == 0) {
-
- if (kstat_read(kstat_ctrl, kstat, NULL) == -1) {
- // Failed to initialize kstat for this CPU so ignore it
- continue;
- }
-
- if (i == num_cpus) {
- // Found more cpu_stats than reported CPUs
- break;
- }
-
- cpu_loads[i++].kstat = kstat;
- }
- }
-}
-
-static int init_cpu_kstat_counters() {
- static int initialized = 0;
-
- // Concurrence in this method is prevented by the lock in
- // the calling method get_cpu_load();
- if(!initialized) {
- if ((kstat_ctrl = kstat_open()) != NULL) {
- map_cpu_kstat_counters();
- initialized = 1;
- }
- }
- return initialized ? 0 : -1;
-}
-
-static void update_cpu_kstat_counters() {
- if(kstat_chain_update(kstat_ctrl) != 0) {
- free(cpu_loads);
- map_cpu_kstat_counters();
- }
-}
-
-int read_cpustat(cpuload_t *load, cpu_stat_t *cpu_stat) {
- if (load->kstat == NULL) {
- // no handle.
- return -1;
- }
- if (kstat_read(kstat_ctrl, load->kstat, cpu_stat) == -1) {
- // disabling for now, a kstat chain update is likely to happen next time
- load->kstat = NULL;
- return -1;
- }
- return 0;
-}
-
-double get_single_cpu_load(unsigned int n) {
- cpuload_t *load;
- cpu_stat_t cpu_stat;
- uint_t *usage;
- uint64_t c_idle;
- uint64_t c_total;
- uint64_t d_idle;
- uint64_t d_total;
- int i;
-
- if (n >= num_cpus) {
- return -1.0;
- }
-
- load = &cpu_loads[n];
- if (read_cpustat(load, &cpu_stat) < 0) {
- return -1.0;
- }
-
- usage = cpu_stat.cpu_sysinfo.cpu;
- c_idle = usage[CPU_IDLE];
-
- for (c_total = 0, i = 0; i < CPU_STATES; i++) {
- c_total += usage[i];
- }
-
- // Calculate diff against previous snapshot
- d_idle = c_idle - load->last_idle;
- d_total = c_total - load->last_total;
-
- /** update if weve moved */
- if (d_total > 0) {
- // Save current values for next time around
- load->last_idle = c_idle;
- load->last_total = c_total;
- load->last_ratio = (double) (d_total - d_idle) / d_total;
- }
-
- return load->last_ratio;
-}
-
-int get_info(const char *path, void *info, size_t s, off_t o) {
- int fd;
- int ret = 0;
- if ((fd = open(path, O_RDONLY)) < 0) {
- return -1;
- }
- if (pread(fd, info, s, o) != s) {
- ret = -1;
- }
- close(fd);
- return ret;
-}
-
-#define MIN(a, b) ((a < b) ? a : b)
-
-static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
-
-/**
- * Return the cpu load (0-1) for proc number 'which' (or average all if which == -1)
- */
-double get_cpu_load(int which) {
- double load =.0;
-
- pthread_mutex_lock(&lock);
- if(init_cpu_kstat_counters()==0) {
-
- update_cpu_kstat_counters();
-
- if (which == -1) {
- unsigned int i;
- double t;
-
- for (t = .0, i = 0; i < num_cpus; i++) {
- t += get_single_cpu_load(i);
- }
-
- // Cap total systemload to 1.0
- load = MIN((t / num_cpus), 1.0);
- } else {
- load = MIN(get_single_cpu_load(which), 1.0);
- }
- } else {
- load = -1.0;
- }
- pthread_mutex_unlock(&lock);
-
- return load;
-}
-
-/**
- * Return the cpu load (0-1) for the current process (i.e the JVM)
- * or -1.0 if the get_info() call failed
- */
-double get_process_load(void) {
- psinfo_t info;
-
- // Get the percentage of "recent cpu usage" from all the lwp:s in the JVM:s
- // process. This is returned as a value between 0.0 and 1.0 multiplied by 0x8000.
- if (get_info("/proc/self/psinfo",&info.pr_pctcpu, sizeof(info.pr_pctcpu), offsetof(psinfo_t, pr_pctcpu)) == 0) {
- return (double) info.pr_pctcpu / 0x8000;
- }
- return -1.0;
-}
-
-JNIEXPORT jdouble JNICALL
-Java_com_sun_management_UnixOperatingSystem_getSystemCpuLoad
-(JNIEnv *env, jobject dummy)
-{
- return get_cpu_load(-1);
-}
-
-JNIEXPORT jdouble JNICALL
-Java_com_sun_management_UnixOperatingSystem_getProcessCpuLoad
-(JNIEnv *env, jobject dummy)
-{
- return get_process_load();
-}
-
--- a/jdk/src/solaris/native/com/sun/management/UnixOperatingSystem_md.c Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,451 +0,0 @@
-/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include "jni.h"
-#include "jni_util.h"
-#include "jlong.h"
-#include "jvm.h"
-#include "management.h"
-#include "com_sun_management_UnixOperatingSystem.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#if defined(_ALLBSD_SOURCE)
-#include <sys/sysctl.h>
-#ifdef __APPLE__
-#include <sys/param.h>
-#include <sys/mount.h>
-#include <mach/mach.h>
-#include <sys/proc_info.h>
-#include <libproc.h>
-#endif
-#else
-#include <sys/swap.h>
-#endif
-#include <sys/resource.h>
-#include <sys/times.h>
-#ifndef _ALLBSD_SOURCE
-#include <sys/sysinfo.h>
-#endif
-#include <ctype.h>
-#include <dirent.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <limits.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-static jlong page_size = 0;
-
-#if defined(_ALLBSD_SOURCE)
-#define MB (1024UL * 1024UL)
-#else
-
-/* This gets us the new structured proc interfaces of 5.6 & later */
-/* - see comment in <sys/procfs.h> */
-#define _STRUCTURED_PROC 1
-#include <sys/procfs.h>
-
-#endif /* _ALLBSD_SOURCE */
-
-static struct dirent* read_dir(DIR* dirp, struct dirent* entry) {
-#ifdef __solaris__
- struct dirent* dbuf = readdir(dirp);
- return dbuf;
-#else /* __linux__ || _ALLBSD_SOURCE */
- struct dirent* p;
- if (readdir_r(dirp, entry, &p) == 0) {
- return p;
- } else {
- return NULL;
- }
-#endif
-}
-
-// true = get available swap in bytes
-// false = get total swap in bytes
-static jlong get_total_or_available_swap_space_size(JNIEnv* env, jboolean available) {
-#ifdef __solaris__
- long total, avail;
- int nswap, i, count;
- swaptbl_t *stbl;
- char *strtab;
-
- // First get the number of swap resource entries
- if ((nswap = swapctl(SC_GETNSWP, NULL)) == -1) {
- throw_internal_error(env, "swapctl failed to get nswap");
- return -1;
- }
- if (nswap == 0) {
- return 0;
- }
-
- // Allocate storage for resource entries
- stbl = (swaptbl_t*) malloc(nswap * sizeof(swapent_t) +
- sizeof(struct swaptable));
- if (stbl == NULL) {
- JNU_ThrowOutOfMemoryError(env, 0);
- return -1;
- }
-
- // Allocate storage for the table
- strtab = (char*) malloc((nswap + 1) * MAXPATHLEN);
- if (strtab == NULL) {
- free(stbl);
- JNU_ThrowOutOfMemoryError(env, 0);
- return -1;
- }
-
- for (i = 0; i < (nswap + 1); i++) {
- stbl->swt_ent[i].ste_path = strtab + (i * MAXPATHLEN);
- }
- stbl->swt_n = nswap + 1;
-
- // Get the entries
- if ((count = swapctl(SC_LIST, stbl)) < 0) {
- free(stbl);
- free(strtab);
- throw_internal_error(env, "swapctl failed to get swap list");
- return -1;
- }
-
- // Sum the entries to get total and free swap
- total = 0;
- avail = 0;
- for (i = 0; i < count; i++) {
- total += stbl->swt_ent[i].ste_pages;
- avail += stbl->swt_ent[i].ste_free;
- }
-
- free(stbl);
- free(strtab);
- return available ? ((jlong)avail * page_size) :
- ((jlong)total * page_size);
-#elif defined(__linux__)
- int ret;
- FILE *fp;
- jlong total = 0, avail = 0;
-
- struct sysinfo si;
- ret = sysinfo(&si);
- if (ret != 0) {
- throw_internal_error(env, "sysinfo failed to get swap size");
- }
- total = (jlong)si.totalswap * si.mem_unit;
- avail = (jlong)si.freeswap * si.mem_unit;
-
- return available ? avail : total;
-#elif defined(__APPLE__)
- struct xsw_usage vmusage;
- size_t size = sizeof(vmusage);
- if (sysctlbyname("vm.swapusage", &vmusage, &size, NULL, 0) != 0) {
- throw_internal_error(env, "sysctlbyname failed");
- }
- return available ? (jlong)vmusage.xsu_avail : (jlong)vmusage.xsu_total;
-#else /* _ALLBSD_SOURCE */
- /*
- * XXXBSD: there's no way available to get swap info in
- * FreeBSD. Usage of libkvm is not an option here
- */
- // throw_internal_error(env, "Unimplemented in FreeBSD");
- return (0);
-#endif
-}
-
-JNIEXPORT void JNICALL
-Java_com_sun_management_UnixOperatingSystem_initialize
- (JNIEnv *env, jclass cls)
-{
- page_size = sysconf(_SC_PAGESIZE);
-}
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_UnixOperatingSystem_getCommittedVirtualMemorySize
- (JNIEnv *env, jobject mbean)
-{
-#ifdef __solaris__
- psinfo_t psinfo;
- ssize_t result;
- size_t remaining;
- char* addr;
- int fd;
-
- fd = JVM_Open("/proc/self/psinfo", O_RDONLY, 0);
- if (fd < 0) {
- throw_internal_error(env, "Unable to open /proc/self/psinfo");
- return -1;
- }
-
- addr = (char *)&psinfo;
- for (remaining = sizeof(psinfo_t); remaining > 0;) {
- result = JVM_Read(fd, addr, remaining);
- if (result < 0) {
- JVM_Close(fd);
- throw_internal_error(env, "Unable to read /proc/self/psinfo");
- return -1;
- }
- remaining -= result;
- addr += result;
- }
-
- JVM_Close(fd);
- return (jlong) psinfo.pr_size * 1024;
-#elif defined(__linux__)
- FILE *fp;
- unsigned long vsize = 0;
-
- if ((fp = fopen("/proc/self/stat", "r")) == NULL) {
- throw_internal_error(env, "Unable to open /proc/self/stat");
- return -1;
- }
-
- // Ignore everything except the vsize entry
- if (fscanf(fp, "%*d %*s %*c %*d %*d %*d %*d %*d %*u %*u %*u %*u %*u %*d %*d %*d %*d %*d %*d %*u %*u %*d %lu %*[^\n]\n", &vsize) == EOF) {
- throw_internal_error(env, "Unable to get virtual memory usage");
- fclose(fp);
- return -1;
- }
-
- fclose(fp);
- return (jlong)vsize;
-#elif defined(__APPLE__)
- struct task_basic_info t_info;
- mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT;
-
- kern_return_t res = task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t)&t_info, &t_info_count);
- if (res != KERN_SUCCESS) {
- throw_internal_error(env, "task_info failed");
- }
- return t_info.virtual_size;
-#else /* _ALLBSD_SOURCE */
- /*
- * XXXBSD: there's no way available to do it in FreeBSD, AFAIK.
- */
- // throw_internal_error(env, "Unimplemented in FreeBSD");
- return (64 * MB);
-#endif
-}
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_UnixOperatingSystem_getTotalSwapSpaceSize
- (JNIEnv *env, jobject mbean)
-{
- return get_total_or_available_swap_space_size(env, JNI_FALSE);
-}
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_UnixOperatingSystem_getFreeSwapSpaceSize
- (JNIEnv *env, jobject mbean)
-{
- return get_total_or_available_swap_space_size(env, JNI_TRUE);
-}
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_UnixOperatingSystem_getProcessCpuTime
- (JNIEnv *env, jobject mbean)
-{
-#ifdef __APPLE__
- struct rusage usage;
- if (getrusage(RUSAGE_SELF, &usage) != 0) {
- throw_internal_error(env, "getrusage failed");
- return -1;
- }
- jlong microsecs =
- usage.ru_utime.tv_sec * 1000 * 1000 + usage.ru_utime.tv_usec +
- usage.ru_stime.tv_sec * 1000 * 1000 + usage.ru_stime.tv_usec;
- return microsecs * 1000;
-#else
- jlong clk_tck, ns_per_clock_tick;
- jlong cpu_time_ns;
- struct tms time;
-
- /*
- * BSDNOTE: FreeBSD implements _SC_CLK_TCK since FreeBSD 5, so
- * add a magic to handle it
- */
-#if defined(__solaris__) || defined(_SC_CLK_TCK)
- clk_tck = (jlong) sysconf(_SC_CLK_TCK);
-#elif defined(__linux__) || defined(_ALLBSD_SOURCE)
- clk_tck = 100;
-#endif
- if (clk_tck == -1) {
- throw_internal_error(env,
- "sysconf failed - not able to get clock tick");
- return -1;
- }
-
- times(&time);
- ns_per_clock_tick = (jlong) 1000 * 1000 * 1000 / (jlong) clk_tck;
- cpu_time_ns = ((jlong)time.tms_utime + (jlong) time.tms_stime) *
- ns_per_clock_tick;
- return cpu_time_ns;
-#endif
-}
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_UnixOperatingSystem_getFreePhysicalMemorySize
- (JNIEnv *env, jobject mbean)
-{
-#ifdef __APPLE__
- mach_msg_type_number_t count;
- vm_statistics_data_t vm_stats;
- kern_return_t res;
-
- count = HOST_VM_INFO_COUNT;
- res = host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vm_stats, &count);
- if (res != KERN_SUCCESS) {
- throw_internal_error(env, "host_statistics failed");
- return -1;
- }
- return (jlong)vm_stats.free_count * page_size;
-#elif defined(_ALLBSD_SOURCE)
- /*
- * XXBSDL no way to do it in FreeBSD
- */
- // throw_internal_error(env, "unimplemented in FreeBSD")
- return (128 * MB);
-#else // solaris / linux
- jlong num_avail_physical_pages = sysconf(_SC_AVPHYS_PAGES);
- return (num_avail_physical_pages * page_size);
-#endif
-}
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_UnixOperatingSystem_getTotalPhysicalMemorySize
- (JNIEnv *env, jobject mbean)
-{
-#ifdef _ALLBSD_SOURCE
- jlong result = 0;
- int mib[2];
- size_t rlen;
-
- mib[0] = CTL_HW;
- mib[1] = HW_MEMSIZE;
- rlen = sizeof(result);
- if (sysctl(mib, 2, &result, &rlen, NULL, 0) != 0) {
- throw_internal_error(env, "sysctl failed");
- return -1;
- }
- return result;
-#else // solaris / linux
- jlong num_physical_pages = sysconf(_SC_PHYS_PAGES);
- return (num_physical_pages * page_size);
-#endif
-}
-
-
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_UnixOperatingSystem_getOpenFileDescriptorCount
- (JNIEnv *env, jobject mbean)
-{
-#ifdef __APPLE__
- // This code is influenced by the darwin lsof source
- pid_t my_pid;
- struct proc_bsdinfo bsdinfo;
- struct proc_fdinfo *fds;
- int nfiles;
- kern_return_t kres;
- int res;
- size_t fds_size;
-
- kres = pid_for_task(mach_task_self(), &my_pid);
- if (kres != KERN_SUCCESS) {
- throw_internal_error(env, "pid_for_task failed");
- return -1;
- }
-
- // get the maximum number of file descriptors
- res = proc_pidinfo(my_pid, PROC_PIDTBSDINFO, 0, &bsdinfo, PROC_PIDTBSDINFO_SIZE);
- if (res <= 0) {
- throw_internal_error(env, "proc_pidinfo with PROC_PIDTBSDINFO failed");
- return -1;
- }
-
- // allocate memory to hold the fd information (we don't acutally use this information
- // but need it to get the number of open files)
- fds_size = bsdinfo.pbi_nfiles * sizeof(struct proc_fdinfo);
- fds = malloc(fds_size);
- if (fds == NULL) {
- JNU_ThrowOutOfMemoryError(env, "could not allocate space for file descriptors");
- return -1;
- }
-
- // get the list of open files - the return value is the number of bytes
- // proc_pidinfo filled in
- res = proc_pidinfo(my_pid, PROC_PIDLISTFDS, 0, fds, fds_size);
- if (res <= 0) {
- free(fds);
- throw_internal_error(env, "proc_pidinfo failed for PROC_PIDLISTFDS");
- return -1;
- }
- nfiles = res / sizeof(struct proc_fdinfo);
- free(fds);
-
- return nfiles;
-#elif defined(_ALLBSD_SOURCE)
- /*
- * XXXBSD: there's no way available to do it in FreeBSD, AFAIK.
- */
- // throw_internal_error(env, "Unimplemented in FreeBSD");
- return (100);
-#else /* solaris/linux */
- DIR *dirp;
- struct dirent dbuf;
- struct dirent* dentp;
- jlong fds = 0;
-
- dirp = opendir("/proc/self/fd");
- if (dirp == NULL) {
- throw_internal_error(env, "Unable to open directory /proc/self/fd");
- return -1;
- }
-
- // iterate through directory entries, skipping '.' and '..'
- // each entry represents an open file descriptor.
- while ((dentp = read_dir(dirp, &dbuf)) != NULL) {
- if (isdigit(dentp->d_name[0])) {
- fds++;
- }
- }
-
- closedir(dirp);
- // subtract by 1 which was the fd open for this implementation
- return (fds - 1);
-#endif
-}
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_UnixOperatingSystem_getMaxFileDescriptorCount
- (JNIEnv *env, jobject mbean)
-{
- struct rlimit rlp;
-
- if (getrlimit(RLIMIT_NOFILE, &rlp) == -1) {
- throw_internal_error(env, "getrlimit failed");
- return -1;
- }
- return (jlong) rlp.rlim_cur;
-}
--- a/jdk/src/solaris/native/java/net/Inet4AddressImpl.c Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/solaris/native/java/net/Inet4AddressImpl.c Wed Jul 05 19:22:42 2017 +0200
@@ -55,17 +55,23 @@
static jclass ni_ia4cls;
static jmethodID ni_ia4ctrID;
-static void initializeInetClasses(JNIEnv *env)
+static jboolean initializeInetClasses(JNIEnv *env)
{
static int initialized = 0;
if (!initialized) {
ni_iacls = (*env)->FindClass(env, "java/net/InetAddress");
+ CHECK_NULL_RETURN(ni_iacls, JNI_FALSE);
ni_iacls = (*env)->NewGlobalRef(env, ni_iacls);
+ CHECK_NULL_RETURN(ni_iacls, JNI_FALSE);
ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address");
+ CHECK_NULL_RETURN(ni_ia4cls, JNI_FALSE);
ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
+ CHECK_NULL_RETURN(ni_ia4cls, JNI_FALSE);
ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
+ CHECK_NULL_RETURN(ni_ia4ctrID, JNI_FALSE);
initialized = 1;
}
+ return JNI_TRUE;
}
@@ -141,7 +147,8 @@
int error=0;
struct addrinfo hints, *res, *resNew = NULL;
- initializeInetClasses(env);
+ if (!initializeInetClasses(env))
+ return NULL;
if (IS_NULL(host)) {
JNU_ThrowNullPointerException(env, "host is null");
@@ -400,7 +407,8 @@
int error = 0;
struct addrinfo hints, *res, *resNew = NULL;
- initializeInetClasses(env);
+ if (!initializeInetClasses(env))
+ return NULL;
if (IS_NULL(host)) {
JNU_ThrowNullPointerException(env, "host is null");
--- a/jdk/src/solaris/native/java/net/Inet6AddressImpl.c Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/solaris/native/java/net/Inet6AddressImpl.c Wed Jul 05 19:22:42 2017 +0200
@@ -124,25 +124,35 @@
static jmethodID ni_ia6ctrID;
static jboolean preferIPv6Address;
-static void initializeInetClasses(JNIEnv *env)
+static jboolean initializeInetClasses(JNIEnv *env)
{
jfieldID ni_preferIPv6AddressID;
static int initialized = 0;
if (!initialized) {
ni_iacls = (*env)->FindClass(env, "java/net/InetAddress");
+ CHECK_NULL_RETURN(ni_iacls, JNI_FALSE);
ni_iacls = (*env)->NewGlobalRef(env, ni_iacls);
+ CHECK_NULL_RETURN(ni_iacls, JNI_FALSE);
ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address");
+ CHECK_NULL_RETURN(ni_ia4cls, JNI_FALSE);
ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
+ CHECK_NULL_RETURN(ni_ia4cls, JNI_FALSE);
ni_ia6cls = (*env)->FindClass(env, "java/net/Inet6Address");
+ CHECK_NULL_RETURN(ni_ia6cls, JNI_FALSE);
ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls);
+ CHECK_NULL_RETURN(ni_ia6cls, JNI_FALSE);
ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
+ CHECK_NULL_RETURN(ni_ia4ctrID, JNI_FALSE);
ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V");
+ CHECK_NULL_RETURN(ni_ia6ctrID, JNI_FALSE);
ni_preferIPv6AddressID =
(*env)->GetStaticFieldID(env, ni_iacls, "preferIPv6Address", "Z");
+ CHECK_NULL_RETURN(ni_preferIPv6AddressID, JNI_FALSE);
preferIPv6Address =
(*env)->GetStaticBooleanField(env, ia_class, ia_preferIPv6AddressID);
initialized = 1;
}
+ return JNI_TRUE;
}
#ifdef MACOSX
@@ -160,7 +170,8 @@
jobject name;
// Make sure static variables we need are set.
- initializeInetClasses(env);
+ if (!initializeInetClasses(env))
+ return NULL;
/* If the requested name matches this host's hostname, return IP addresses
* from all attached interfaces. (#2844683 et al) This prevents undesired
@@ -286,7 +297,8 @@
struct addrinfo hints, *res, *resNew = NULL;
#endif /* AF_INET6 */
- initializeInetClasses(env);
+ if (!initializeInetClasses(env))
+ return NULL;
if (IS_NULL(host)) {
JNU_ThrowNullPointerException(env, "host is null");
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/solaris/native/sun/management/LinuxOperatingSystem.c Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,332 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include <stdio.h>
+#include <stdint.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+#include <sys/resource.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <stdlib.h>
+#include <dlfcn.h>
+#include <pthread.h>
+#include "sun_management_OperatingSystemImpl.h"
+
+struct ticks {
+ uint64_t used;
+ uint64_t usedKernel;
+ uint64_t total;
+};
+
+typedef struct ticks ticks;
+
+typedef enum {
+ CPU_LOAD_VM_ONLY,
+ CPU_LOAD_GLOBAL,
+} CpuLoadTarget;
+
+static struct perfbuf {
+ int nProcs;
+ ticks jvmTicks;
+ ticks cpuTicks;
+ ticks *cpus;
+} counters;
+
+#define DEC_64 "%lld"
+
+static void next_line(FILE *f) {
+ while (fgetc(f) != '\n');
+}
+
+/**
+ * Return the total number of ticks since the system was booted.
+ * If the usedTicks parameter is not NULL, it will be filled with
+ * the number of ticks spent on actual processes (user, system or
+ * nice processes) since system boot. Note that this is the total number
+ * of "executed" ticks on _all_ CPU:s, that is on a n-way system it is
+ * n times the number of ticks that has passed in clock time.
+ *
+ * Returns a negative value if the reading of the ticks failed.
+ */
+static int get_totalticks(int which, ticks *pticks) {
+ FILE *fh;
+ uint64_t userTicks, niceTicks, systemTicks, idleTicks;
+ int n;
+
+ if((fh = fopen("/proc/stat", "r")) == NULL) {
+ return -1;
+ }
+
+ n = fscanf(fh, "cpu " DEC_64 " " DEC_64 " " DEC_64 " " DEC_64,
+ &userTicks, &niceTicks, &systemTicks, &idleTicks);
+
+ // Move to next line
+ next_line(fh);
+
+ //find the line for requested cpu faster to just iterate linefeeds?
+ if (which != -1) {
+ int i;
+ for (i = 0; i < which; i++) {
+ if (fscanf(fh, "cpu%*d " DEC_64 " " DEC_64 " " DEC_64 " " DEC_64, &userTicks, &niceTicks, &systemTicks, &idleTicks) != 4) {
+ fclose(fh);
+ return -2;
+ }
+ next_line(fh);
+ }
+ n = fscanf(fh, "cpu%*d " DEC_64 " " DEC_64 " " DEC_64 " " DEC_64 "\n",
+ &userTicks, &niceTicks, &systemTicks, &idleTicks);
+ }
+
+ fclose(fh);
+ if (n != 4) {
+ return -2;
+ }
+
+ pticks->used = userTicks + niceTicks;
+ pticks->usedKernel = systemTicks;
+ pticks->total = userTicks + niceTicks + systemTicks + idleTicks;
+
+ return 0;
+}
+
+static int vread_statdata(const char *procfile, const char *fmt, va_list args) {
+ FILE *f;
+ int n;
+ char buf[2048];
+
+ if ((f = fopen(procfile, "r")) == NULL) {
+ return -1;
+ }
+
+ if ((n = fread(buf, 1, sizeof(buf), f)) != -1) {
+ char *tmp;
+
+ buf[n-1] = '\0';
+ /** skip through pid and exec name. the exec name _could be wacky_ (renamed) and
+ * make scanf go mupp.
+ */
+ if ((tmp = strrchr(buf, ')')) != NULL) {
+ // skip the ')' and the following space but check that the buffer is long enough
+ tmp += 2;
+ if (tmp < buf + n) {
+ n = vsscanf(tmp, fmt, args);
+ }
+ }
+ }
+
+ fclose(f);
+
+ return n;
+}
+
+static int read_statdata(const char *procfile, const char *fmt, ...) {
+ int n;
+ va_list args;
+
+ va_start(args, fmt);
+ n = vread_statdata(procfile, fmt, args);
+ va_end(args);
+ return n;
+}
+
+/** read user and system ticks from a named procfile, assumed to be in 'stat' format then. */
+static int read_ticks(const char *procfile, uint64_t *userTicks, uint64_t *systemTicks) {
+ return read_statdata(procfile, "%*c %*d %*d %*d %*d %*d %*u %*u %*u %*u %*u "DEC_64" "DEC_64,
+ userTicks, systemTicks
+ );
+}
+
+/**
+ * Return the number of ticks spent in any of the processes belonging
+ * to the JVM on any CPU.
+ */
+static int get_jvmticks(ticks *pticks) {
+ uint64_t userTicks;
+ uint64_t systemTicks;
+
+ if (read_ticks("/proc/self/stat", &userTicks, &systemTicks) < 0) {
+ return -1;
+ }
+
+ // get the total
+ if (get_totalticks(-1, pticks) < 0) {
+ return -1;
+ }
+
+ pticks->used = userTicks;
+ pticks->usedKernel = systemTicks;
+
+ return 0;
+}
+
+/**
+ * This method must be called first, before any data can be gathererd.
+ */
+int perfInit() {
+ static int initialized=1;
+
+ if (!initialized) {
+ int i;
+
+ int n = sysconf(_SC_NPROCESSORS_ONLN);
+ if (n <= 0) {
+ n = 1;
+ }
+
+ counters.cpus = calloc(n,sizeof(ticks));
+ if (counters.cpus != NULL) {
+ // For the CPU load
+ get_totalticks(-1, &counters.cpuTicks);
+
+ for (i = 0; i < n; i++) {
+ get_totalticks(i, &counters.cpus[i]);
+ }
+ // For JVM load
+ get_jvmticks(&counters.jvmTicks);
+ initialized = 1;
+ }
+ }
+
+ return initialized ? 0 : -1;
+}
+
+#define MAX(a,b) (a>b?a:b)
+#define MIN(a,b) (a<b?a:b)
+
+static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
+
+/**
+ * Return the load of the CPU as a double. 1.0 means the CPU process uses all
+ * available time for user or system processes, 0.0 means the CPU uses all time
+ * being idle.
+ *
+ * Returns a negative value if there is a problem in determining the CPU load.
+ */
+
+static double get_cpuload_internal(int which, double *pkernelLoad, CpuLoadTarget target) {
+ uint64_t udiff, kdiff, tdiff;
+ ticks *pticks, tmp;
+ double user_load = -1.0;
+ int failed = 0;
+
+ *pkernelLoad = 0.0;
+
+ pthread_mutex_lock(&lock);
+
+ if(perfInit() == 0) {
+
+ if (target == CPU_LOAD_VM_ONLY) {
+ pticks = &counters.jvmTicks;
+ } else if (which == -1) {
+ pticks = &counters.cpuTicks;
+ } else {
+ pticks = &counters.cpus[which];
+ }
+
+ tmp = *pticks;
+
+ if (target == CPU_LOAD_VM_ONLY) {
+ if (get_jvmticks(pticks) != 0) {
+ failed = 1;
+ }
+ } else if (get_totalticks(which, pticks) < 0) {
+ failed = 1;
+ }
+
+ if(!failed) {
+ // seems like we sometimes end up with less kernel ticks when
+ // reading /proc/self/stat a second time, timing issue between cpus?
+ if (pticks->usedKernel < tmp.usedKernel) {
+ kdiff = 0;
+ } else {
+ kdiff = pticks->usedKernel - tmp.usedKernel;
+ }
+ tdiff = pticks->total - tmp.total;
+ udiff = pticks->used - tmp.used;
+
+ if (tdiff == 0) {
+ user_load = 0;
+ } else {
+ if (tdiff < (udiff + kdiff)) {
+ tdiff = udiff + kdiff;
+ }
+ *pkernelLoad = (kdiff / (double)tdiff);
+ // BUG9044876, normalize return values to sane values
+ *pkernelLoad = MAX(*pkernelLoad, 0.0);
+ *pkernelLoad = MIN(*pkernelLoad, 1.0);
+
+ user_load = (udiff / (double)tdiff);
+ user_load = MAX(user_load, 0.0);
+ user_load = MIN(user_load, 1.0);
+ }
+ }
+ }
+ pthread_mutex_unlock(&lock);
+ return user_load;
+}
+
+double get_cpu_load(int which) {
+ double u, s;
+ u = get_cpuload_internal(which, &s, CPU_LOAD_GLOBAL);
+ if (u < 0) {
+ return -1.0;
+ }
+ // Cap total systemload to 1.0
+ return MIN((u + s), 1.0);
+}
+
+double get_process_load() {
+ double u, s;
+ u = get_cpuload_internal(-1, &s, CPU_LOAD_VM_ONLY);
+ if (u < 0) {
+ return -1.0;
+ }
+ return u + s;
+}
+
+JNIEXPORT jdouble JNICALL
+Java_sun_management_OperatingSystemImpl_getSystemCpuLoad
+(JNIEnv *env, jobject dummy)
+{
+ if(perfInit() == 0) {
+ return get_cpu_load(-1);
+ } else {
+ return -1.0;
+ }
+}
+
+JNIEXPORT jdouble JNICALL
+Java_sun_management_OperatingSystemImpl_getProcessCpuLoad
+(JNIEnv *env, jobject dummy)
+{
+ if(perfInit() == 0) {
+ return get_process_load();
+ } else {
+ return -1.0;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/solaris/native/sun/management/MacosxOperatingSystem.c Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,160 @@
+/*
+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include "sun_management_OperatingSystemImpl.h"
+
+#include <sys/time.h>
+#include <mach/mach.h>
+#include <mach/task_info.h>
+
+
+JNIEXPORT jdouble JNICALL
+Java_sun_management_OperatingSystemImpl_getSystemCpuLoad
+(JNIEnv *env, jobject dummy)
+{
+ // This code is influenced by the darwin top source
+
+ kern_return_t kr;
+ mach_msg_type_number_t count;
+ host_cpu_load_info_data_t load;
+
+ static jlong last_used = 0;
+ static jlong last_total = 0;
+
+ count = HOST_CPU_LOAD_INFO_COUNT;
+ kr = host_statistics(mach_host_self(), HOST_CPU_LOAD_INFO, (host_info_t)&load, &count);
+ if (kr != KERN_SUCCESS) {
+ return -1;
+ }
+
+ jlong used = load.cpu_ticks[CPU_STATE_USER] + load.cpu_ticks[CPU_STATE_NICE] + load.cpu_ticks[CPU_STATE_SYSTEM];
+ jlong total = used + load.cpu_ticks[CPU_STATE_IDLE];
+
+ if (last_used == 0 || last_total == 0) {
+ // First call, just set the last values
+ last_used = used;
+ last_total = total;
+ // return 0 since we have no data, not -1 which indicates error
+ return 0;
+ }
+
+ jlong used_delta = used - last_used;
+ jlong total_delta = total - last_total;
+
+ jdouble cpu = (jdouble) used_delta / total_delta;
+
+ last_used = used;
+ last_total = total;
+
+ return cpu;
+}
+
+
+#define TIME_VALUE_TO_TIMEVAL(a, r) do { \
+ (r)->tv_sec = (a)->seconds; \
+ (r)->tv_usec = (a)->microseconds; \
+} while (0)
+
+
+#define TIME_VALUE_TO_MICROSECONDS(TV) \
+ ((TV).tv_sec * 1000 * 1000 + (TV).tv_usec)
+
+
+JNIEXPORT jdouble JNICALL
+Java_sun_management_OperatingSystemImpl_getProcessCpuLoad
+(JNIEnv *env, jobject dummy)
+{
+ // This code is influenced by the darwin top source
+
+ struct task_basic_info_64 task_info_data;
+ struct task_thread_times_info thread_info_data;
+ struct timeval user_timeval, system_timeval, task_timeval;
+ struct timeval now;
+ mach_port_t task = mach_task_self();
+ kern_return_t kr;
+
+ static jlong last_task_time = 0;
+ static jlong last_time = 0;
+
+ mach_msg_type_number_t thread_info_count = TASK_THREAD_TIMES_INFO_COUNT;
+ kr = task_info(task,
+ TASK_THREAD_TIMES_INFO,
+ (task_info_t)&thread_info_data,
+ &thread_info_count);
+ if (kr != KERN_SUCCESS) {
+ // Most likely cause: |task| is a zombie.
+ return -1;
+ }
+
+ mach_msg_type_number_t count = TASK_BASIC_INFO_64_COUNT;
+ kr = task_info(task,
+ TASK_BASIC_INFO_64,
+ (task_info_t)&task_info_data,
+ &count);
+ if (kr != KERN_SUCCESS) {
+ // Most likely cause: |task| is a zombie.
+ return -1;
+ }
+
+ /* Set total_time. */
+ // thread info contains live time...
+ TIME_VALUE_TO_TIMEVAL(&thread_info_data.user_time, &user_timeval);
+ TIME_VALUE_TO_TIMEVAL(&thread_info_data.system_time, &system_timeval);
+ timeradd(&user_timeval, &system_timeval, &task_timeval);
+
+ // ... task info contains terminated time.
+ TIME_VALUE_TO_TIMEVAL(&task_info_data.user_time, &user_timeval);
+ TIME_VALUE_TO_TIMEVAL(&task_info_data.system_time, &system_timeval);
+ timeradd(&user_timeval, &task_timeval, &task_timeval);
+ timeradd(&system_timeval, &task_timeval, &task_timeval);
+
+ if (gettimeofday(&now, NULL) < 0) {
+ return -1;
+ }
+ jint ncpus = JVM_ActiveProcessorCount();
+ jlong time = TIME_VALUE_TO_MICROSECONDS(now) * ncpus;
+ jlong task_time = TIME_VALUE_TO_MICROSECONDS(task_timeval);
+
+ if ((last_task_time == 0) || (last_time == 0)) {
+ // First call, just set the last values.
+ last_task_time = task_time;
+ last_time = time;
+ // return 0 since we have no data, not -1 which indicates error
+ return 0;
+ }
+
+ jlong task_time_delta = task_time - last_task_time;
+ jlong time_delta = time - last_time;
+ if (time_delta == 0) {
+ return -1;
+ }
+
+ jdouble cpu = (jdouble) task_time_delta / time_delta;
+
+ last_task_time = task_time;
+ last_time = time;
+
+ return cpu;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/solaris/native/sun/management/OperatingSystemImpl.c Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,451 @@
+/*
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include "jni.h"
+#include "jni_util.h"
+#include "jlong.h"
+#include "jvm.h"
+#include "management.h"
+#include "sun_management_OperatingSystemImpl.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#if defined(_ALLBSD_SOURCE)
+#include <sys/sysctl.h>
+#ifdef __APPLE__
+#include <sys/param.h>
+#include <sys/mount.h>
+#include <mach/mach.h>
+#include <sys/proc_info.h>
+#include <libproc.h>
+#endif
+#else
+#include <sys/swap.h>
+#endif
+#include <sys/resource.h>
+#include <sys/times.h>
+#ifndef _ALLBSD_SOURCE
+#include <sys/sysinfo.h>
+#endif
+#include <ctype.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static jlong page_size = 0;
+
+#if defined(_ALLBSD_SOURCE)
+#define MB (1024UL * 1024UL)
+#else
+
+/* This gets us the new structured proc interfaces of 5.6 & later */
+/* - see comment in <sys/procfs.h> */
+#define _STRUCTURED_PROC 1
+#include <sys/procfs.h>
+
+#endif /* _ALLBSD_SOURCE */
+
+static struct dirent* read_dir(DIR* dirp, struct dirent* entry) {
+#ifdef __solaris__
+ struct dirent* dbuf = readdir(dirp);
+ return dbuf;
+#else /* __linux__ || _ALLBSD_SOURCE */
+ struct dirent* p;
+ if (readdir_r(dirp, entry, &p) == 0) {
+ return p;
+ } else {
+ return NULL;
+ }
+#endif
+}
+
+// true = get available swap in bytes
+// false = get total swap in bytes
+static jlong get_total_or_available_swap_space_size(JNIEnv* env, jboolean available) {
+#ifdef __solaris__
+ long total, avail;
+ int nswap, i, count;
+ swaptbl_t *stbl;
+ char *strtab;
+
+ // First get the number of swap resource entries
+ if ((nswap = swapctl(SC_GETNSWP, NULL)) == -1) {
+ throw_internal_error(env, "swapctl failed to get nswap");
+ return -1;
+ }
+ if (nswap == 0) {
+ return 0;
+ }
+
+ // Allocate storage for resource entries
+ stbl = (swaptbl_t*) malloc(nswap * sizeof(swapent_t) +
+ sizeof(struct swaptable));
+ if (stbl == NULL) {
+ JNU_ThrowOutOfMemoryError(env, 0);
+ return -1;
+ }
+
+ // Allocate storage for the table
+ strtab = (char*) malloc((nswap + 1) * MAXPATHLEN);
+ if (strtab == NULL) {
+ free(stbl);
+ JNU_ThrowOutOfMemoryError(env, 0);
+ return -1;
+ }
+
+ for (i = 0; i < (nswap + 1); i++) {
+ stbl->swt_ent[i].ste_path = strtab + (i * MAXPATHLEN);
+ }
+ stbl->swt_n = nswap + 1;
+
+ // Get the entries
+ if ((count = swapctl(SC_LIST, stbl)) < 0) {
+ free(stbl);
+ free(strtab);
+ throw_internal_error(env, "swapctl failed to get swap list");
+ return -1;
+ }
+
+ // Sum the entries to get total and free swap
+ total = 0;
+ avail = 0;
+ for (i = 0; i < count; i++) {
+ total += stbl->swt_ent[i].ste_pages;
+ avail += stbl->swt_ent[i].ste_free;
+ }
+
+ free(stbl);
+ free(strtab);
+ return available ? ((jlong)avail * page_size) :
+ ((jlong)total * page_size);
+#elif defined(__linux__)
+ int ret;
+ FILE *fp;
+ jlong total = 0, avail = 0;
+
+ struct sysinfo si;
+ ret = sysinfo(&si);
+ if (ret != 0) {
+ throw_internal_error(env, "sysinfo failed to get swap size");
+ }
+ total = (jlong)si.totalswap * si.mem_unit;
+ avail = (jlong)si.freeswap * si.mem_unit;
+
+ return available ? avail : total;
+#elif defined(__APPLE__)
+ struct xsw_usage vmusage;
+ size_t size = sizeof(vmusage);
+ if (sysctlbyname("vm.swapusage", &vmusage, &size, NULL, 0) != 0) {
+ throw_internal_error(env, "sysctlbyname failed");
+ }
+ return available ? (jlong)vmusage.xsu_avail : (jlong)vmusage.xsu_total;
+#else /* _ALLBSD_SOURCE */
+ /*
+ * XXXBSD: there's no way available to get swap info in
+ * FreeBSD. Usage of libkvm is not an option here
+ */
+ // throw_internal_error(env, "Unimplemented in FreeBSD");
+ return (0);
+#endif
+}
+
+JNIEXPORT void JNICALL
+Java_sun_management_OperatingSystemImpl_initialize
+ (JNIEnv *env, jclass cls)
+{
+ page_size = sysconf(_SC_PAGESIZE);
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getCommittedVirtualMemorySize
+ (JNIEnv *env, jobject mbean)
+{
+#ifdef __solaris__
+ psinfo_t psinfo;
+ ssize_t result;
+ size_t remaining;
+ char* addr;
+ int fd;
+
+ fd = JVM_Open("/proc/self/psinfo", O_RDONLY, 0);
+ if (fd < 0) {
+ throw_internal_error(env, "Unable to open /proc/self/psinfo");
+ return -1;
+ }
+
+ addr = (char *)&psinfo;
+ for (remaining = sizeof(psinfo_t); remaining > 0;) {
+ result = JVM_Read(fd, addr, remaining);
+ if (result < 0) {
+ JVM_Close(fd);
+ throw_internal_error(env, "Unable to read /proc/self/psinfo");
+ return -1;
+ }
+ remaining -= result;
+ addr += result;
+ }
+
+ JVM_Close(fd);
+ return (jlong) psinfo.pr_size * 1024;
+#elif defined(__linux__)
+ FILE *fp;
+ unsigned long vsize = 0;
+
+ if ((fp = fopen("/proc/self/stat", "r")) == NULL) {
+ throw_internal_error(env, "Unable to open /proc/self/stat");
+ return -1;
+ }
+
+ // Ignore everything except the vsize entry
+ if (fscanf(fp, "%*d %*s %*c %*d %*d %*d %*d %*d %*u %*u %*u %*u %*u %*d %*d %*d %*d %*d %*d %*u %*u %*d %lu %*[^\n]\n", &vsize) == EOF) {
+ throw_internal_error(env, "Unable to get virtual memory usage");
+ fclose(fp);
+ return -1;
+ }
+
+ fclose(fp);
+ return (jlong)vsize;
+#elif defined(__APPLE__)
+ struct task_basic_info t_info;
+ mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT;
+
+ kern_return_t res = task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t)&t_info, &t_info_count);
+ if (res != KERN_SUCCESS) {
+ throw_internal_error(env, "task_info failed");
+ }
+ return t_info.virtual_size;
+#else /* _ALLBSD_SOURCE */
+ /*
+ * XXXBSD: there's no way available to do it in FreeBSD, AFAIK.
+ */
+ // throw_internal_error(env, "Unimplemented in FreeBSD");
+ return (64 * MB);
+#endif
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getTotalSwapSpaceSize
+ (JNIEnv *env, jobject mbean)
+{
+ return get_total_or_available_swap_space_size(env, JNI_FALSE);
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getFreeSwapSpaceSize
+ (JNIEnv *env, jobject mbean)
+{
+ return get_total_or_available_swap_space_size(env, JNI_TRUE);
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getProcessCpuTime
+ (JNIEnv *env, jobject mbean)
+{
+#ifdef __APPLE__
+ struct rusage usage;
+ if (getrusage(RUSAGE_SELF, &usage) != 0) {
+ throw_internal_error(env, "getrusage failed");
+ return -1;
+ }
+ jlong microsecs =
+ usage.ru_utime.tv_sec * 1000 * 1000 + usage.ru_utime.tv_usec +
+ usage.ru_stime.tv_sec * 1000 * 1000 + usage.ru_stime.tv_usec;
+ return microsecs * 1000;
+#else
+ jlong clk_tck, ns_per_clock_tick;
+ jlong cpu_time_ns;
+ struct tms time;
+
+ /*
+ * BSDNOTE: FreeBSD implements _SC_CLK_TCK since FreeBSD 5, so
+ * add a magic to handle it
+ */
+#if defined(__solaris__) || defined(_SC_CLK_TCK)
+ clk_tck = (jlong) sysconf(_SC_CLK_TCK);
+#elif defined(__linux__) || defined(_ALLBSD_SOURCE)
+ clk_tck = 100;
+#endif
+ if (clk_tck == -1) {
+ throw_internal_error(env,
+ "sysconf failed - not able to get clock tick");
+ return -1;
+ }
+
+ times(&time);
+ ns_per_clock_tick = (jlong) 1000 * 1000 * 1000 / (jlong) clk_tck;
+ cpu_time_ns = ((jlong)time.tms_utime + (jlong) time.tms_stime) *
+ ns_per_clock_tick;
+ return cpu_time_ns;
+#endif
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize
+ (JNIEnv *env, jobject mbean)
+{
+#ifdef __APPLE__
+ mach_msg_type_number_t count;
+ vm_statistics_data_t vm_stats;
+ kern_return_t res;
+
+ count = HOST_VM_INFO_COUNT;
+ res = host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vm_stats, &count);
+ if (res != KERN_SUCCESS) {
+ throw_internal_error(env, "host_statistics failed");
+ return -1;
+ }
+ return (jlong)vm_stats.free_count * page_size;
+#elif defined(_ALLBSD_SOURCE)
+ /*
+ * XXBSDL no way to do it in FreeBSD
+ */
+ // throw_internal_error(env, "unimplemented in FreeBSD")
+ return (128 * MB);
+#else // solaris / linux
+ jlong num_avail_physical_pages = sysconf(_SC_AVPHYS_PAGES);
+ return (num_avail_physical_pages * page_size);
+#endif
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize
+ (JNIEnv *env, jobject mbean)
+{
+#ifdef _ALLBSD_SOURCE
+ jlong result = 0;
+ int mib[2];
+ size_t rlen;
+
+ mib[0] = CTL_HW;
+ mib[1] = HW_MEMSIZE;
+ rlen = sizeof(result);
+ if (sysctl(mib, 2, &result, &rlen, NULL, 0) != 0) {
+ throw_internal_error(env, "sysctl failed");
+ return -1;
+ }
+ return result;
+#else // solaris / linux
+ jlong num_physical_pages = sysconf(_SC_PHYS_PAGES);
+ return (num_physical_pages * page_size);
+#endif
+}
+
+
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getOpenFileDescriptorCount
+ (JNIEnv *env, jobject mbean)
+{
+#ifdef __APPLE__
+ // This code is influenced by the darwin lsof source
+ pid_t my_pid;
+ struct proc_bsdinfo bsdinfo;
+ struct proc_fdinfo *fds;
+ int nfiles;
+ kern_return_t kres;
+ int res;
+ size_t fds_size;
+
+ kres = pid_for_task(mach_task_self(), &my_pid);
+ if (kres != KERN_SUCCESS) {
+ throw_internal_error(env, "pid_for_task failed");
+ return -1;
+ }
+
+ // get the maximum number of file descriptors
+ res = proc_pidinfo(my_pid, PROC_PIDTBSDINFO, 0, &bsdinfo, PROC_PIDTBSDINFO_SIZE);
+ if (res <= 0) {
+ throw_internal_error(env, "proc_pidinfo with PROC_PIDTBSDINFO failed");
+ return -1;
+ }
+
+ // allocate memory to hold the fd information (we don't acutally use this information
+ // but need it to get the number of open files)
+ fds_size = bsdinfo.pbi_nfiles * sizeof(struct proc_fdinfo);
+ fds = malloc(fds_size);
+ if (fds == NULL) {
+ JNU_ThrowOutOfMemoryError(env, "could not allocate space for file descriptors");
+ return -1;
+ }
+
+ // get the list of open files - the return value is the number of bytes
+ // proc_pidinfo filled in
+ res = proc_pidinfo(my_pid, PROC_PIDLISTFDS, 0, fds, fds_size);
+ if (res <= 0) {
+ free(fds);
+ throw_internal_error(env, "proc_pidinfo failed for PROC_PIDLISTFDS");
+ return -1;
+ }
+ nfiles = res / sizeof(struct proc_fdinfo);
+ free(fds);
+
+ return nfiles;
+#elif defined(_ALLBSD_SOURCE)
+ /*
+ * XXXBSD: there's no way available to do it in FreeBSD, AFAIK.
+ */
+ // throw_internal_error(env, "Unimplemented in FreeBSD");
+ return (100);
+#else /* solaris/linux */
+ DIR *dirp;
+ struct dirent dbuf;
+ struct dirent* dentp;
+ jlong fds = 0;
+
+ dirp = opendir("/proc/self/fd");
+ if (dirp == NULL) {
+ throw_internal_error(env, "Unable to open directory /proc/self/fd");
+ return -1;
+ }
+
+ // iterate through directory entries, skipping '.' and '..'
+ // each entry represents an open file descriptor.
+ while ((dentp = read_dir(dirp, &dbuf)) != NULL) {
+ if (isdigit(dentp->d_name[0])) {
+ fds++;
+ }
+ }
+
+ closedir(dirp);
+ // subtract by 1 which was the fd open for this implementation
+ return (fds - 1);
+#endif
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getMaxFileDescriptorCount
+ (JNIEnv *env, jobject mbean)
+{
+ struct rlimit rlp;
+
+ if (getrlimit(RLIMIT_NOFILE, &rlp) == -1) {
+ throw_internal_error(env, "getrlimit failed");
+ return -1;
+ }
+ return (jlong) rlp.rlim_cur;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/solaris/native/sun/management/SolarisOperatingSystem.c Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,241 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include <fcntl.h>
+#include <kstat.h>
+#include <procfs.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/sysinfo.h>
+#include <sys/lwp.h>
+#include <pthread.h>
+#include <utmpx.h>
+#include <dlfcn.h>
+#include <sys/loadavg.h>
+#include <jni.h>
+#include "jvm.h"
+#include "sun_management_OperatingSystemImpl.h"
+
+typedef struct {
+ kstat_t *kstat;
+ uint64_t last_idle;
+ uint64_t last_total;
+ double last_ratio;
+} cpuload_t;
+
+static cpuload_t *cpu_loads = NULL;
+static unsigned int num_cpus;
+static kstat_ctl_t *kstat_ctrl = NULL;
+
+static void map_cpu_kstat_counters() {
+ kstat_t *kstat;
+ int i;
+
+ // Get number of CPU(s)
+ if ((num_cpus = sysconf(_SC_NPROCESSORS_ONLN)) == -1) {
+ num_cpus = 1;
+ }
+
+ // Data structure for saving CPU load
+ if ((cpu_loads = calloc(num_cpus,sizeof(cpuload_t))) == NULL) {
+ return;
+ }
+
+ // Get kstat cpu_stat counters for every CPU
+ // (loop over kstat to find our cpu_stat(s)
+ i = 0;
+ for (kstat = kstat_ctrl->kc_chain; kstat != NULL; kstat = kstat->ks_next) {
+ if (strncmp(kstat->ks_module, "cpu_stat", 8) == 0) {
+
+ if (kstat_read(kstat_ctrl, kstat, NULL) == -1) {
+ // Failed to initialize kstat for this CPU so ignore it
+ continue;
+ }
+
+ if (i == num_cpus) {
+ // Found more cpu_stats than reported CPUs
+ break;
+ }
+
+ cpu_loads[i++].kstat = kstat;
+ }
+ }
+}
+
+static int init_cpu_kstat_counters() {
+ static int initialized = 0;
+
+ // Concurrence in this method is prevented by the lock in
+ // the calling method get_cpu_load();
+ if(!initialized) {
+ if ((kstat_ctrl = kstat_open()) != NULL) {
+ map_cpu_kstat_counters();
+ initialized = 1;
+ }
+ }
+ return initialized ? 0 : -1;
+}
+
+static void update_cpu_kstat_counters() {
+ if(kstat_chain_update(kstat_ctrl) != 0) {
+ free(cpu_loads);
+ map_cpu_kstat_counters();
+ }
+}
+
+int read_cpustat(cpuload_t *load, cpu_stat_t *cpu_stat) {
+ if (load->kstat == NULL) {
+ // no handle.
+ return -1;
+ }
+ if (kstat_read(kstat_ctrl, load->kstat, cpu_stat) == -1) {
+ // disabling for now, a kstat chain update is likely to happen next time
+ load->kstat = NULL;
+ return -1;
+ }
+ return 0;
+}
+
+double get_single_cpu_load(unsigned int n) {
+ cpuload_t *load;
+ cpu_stat_t cpu_stat;
+ uint_t *usage;
+ uint64_t c_idle;
+ uint64_t c_total;
+ uint64_t d_idle;
+ uint64_t d_total;
+ int i;
+
+ if (n >= num_cpus) {
+ return -1.0;
+ }
+
+ load = &cpu_loads[n];
+ if (read_cpustat(load, &cpu_stat) < 0) {
+ return -1.0;
+ }
+
+ usage = cpu_stat.cpu_sysinfo.cpu;
+ c_idle = usage[CPU_IDLE];
+
+ for (c_total = 0, i = 0; i < CPU_STATES; i++) {
+ c_total += usage[i];
+ }
+
+ // Calculate diff against previous snapshot
+ d_idle = c_idle - load->last_idle;
+ d_total = c_total - load->last_total;
+
+ /** update if weve moved */
+ if (d_total > 0) {
+ // Save current values for next time around
+ load->last_idle = c_idle;
+ load->last_total = c_total;
+ load->last_ratio = (double) (d_total - d_idle) / d_total;
+ }
+
+ return load->last_ratio;
+}
+
+int get_info(const char *path, void *info, size_t s, off_t o) {
+ int fd;
+ int ret = 0;
+ if ((fd = open(path, O_RDONLY)) < 0) {
+ return -1;
+ }
+ if (pread(fd, info, s, o) != s) {
+ ret = -1;
+ }
+ close(fd);
+ return ret;
+}
+
+#define MIN(a, b) ((a < b) ? a : b)
+
+static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
+
+/**
+ * Return the cpu load (0-1) for proc number 'which' (or average all if which == -1)
+ */
+double get_cpu_load(int which) {
+ double load =.0;
+
+ pthread_mutex_lock(&lock);
+ if(init_cpu_kstat_counters()==0) {
+
+ update_cpu_kstat_counters();
+
+ if (which == -1) {
+ unsigned int i;
+ double t;
+
+ for (t = .0, i = 0; i < num_cpus; i++) {
+ t += get_single_cpu_load(i);
+ }
+
+ // Cap total systemload to 1.0
+ load = MIN((t / num_cpus), 1.0);
+ } else {
+ load = MIN(get_single_cpu_load(which), 1.0);
+ }
+ } else {
+ load = -1.0;
+ }
+ pthread_mutex_unlock(&lock);
+
+ return load;
+}
+
+/**
+ * Return the cpu load (0-1) for the current process (i.e the JVM)
+ * or -1.0 if the get_info() call failed
+ */
+double get_process_load(void) {
+ psinfo_t info;
+
+ // Get the percentage of "recent cpu usage" from all the lwp:s in the JVM:s
+ // process. This is returned as a value between 0.0 and 1.0 multiplied by 0x8000.
+ if (get_info("/proc/self/psinfo",&info.pr_pctcpu, sizeof(info.pr_pctcpu), offsetof(psinfo_t, pr_pctcpu)) == 0) {
+ return (double) info.pr_pctcpu / 0x8000;
+ }
+ return -1.0;
+}
+
+JNIEXPORT jdouble JNICALL
+Java_sun_management_OperatingSystemImpl_getSystemCpuLoad
+(JNIEnv *env, jobject dummy)
+{
+ return get_cpu_load(-1);
+}
+
+JNIEXPORT jdouble JNICALL
+Java_sun_management_OperatingSystemImpl_getProcessCpuLoad
+(JNIEnv *env, jobject dummy)
+{
+ return get_process_load();
+}
+
--- a/jdk/src/windows/classes/com/sun/management/OSMBeanFactory.java Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.management;
-
-import java.lang.management.OperatingSystemMXBean;
-import sun.management.VMManagement;
-
-/**
- * Operating system dependent MBean factory.
- * <p>
- * <b>WARNING:</b> While this class is public, it should not be treated as
- * public API and its API may change in incompatable ways between dot dot
- * releases and even patch releases. You should not rely on this class.
- */
-public class OSMBeanFactory {
- /* static factory class */
- private OSMBeanFactory() {};
-
- private static OperatingSystem osMBean = null;
-
- public static synchronized OperatingSystemMXBean
- getOperatingSystemMXBean(VMManagement jvm) {
-
- if (osMBean == null) {
- osMBean = new OperatingSystem(jvm);
- }
- return (OperatingSystemMXBean) osMBean;
- }
-}
--- a/jdk/src/windows/classes/com/sun/management/OperatingSystem.java Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.management;
-
-import sun.management.VMManagement;
-
-/**
- * Implementation class for the operating system.
- * Standard and committed hotspot-specific metrics if any.
- *
- * ManagementFactory.getOperatingSystemMXBean() returns an instance
- * of this class.
- */
-class OperatingSystem
- extends sun.management.OperatingSystemImpl
- implements OperatingSystemMXBean {
-
- // psapiLock is a lock to make sure only one thread loading
- // PSAPI DLL.
- private static Object psapiLock = new Object();
-
- OperatingSystem(VMManagement vm) {
- super(vm);
- }
-
- public long getCommittedVirtualMemorySize() {
- synchronized (psapiLock) {
- return getCommittedVirtualMemorySize0();
- }
- }
- private native long getCommittedVirtualMemorySize0();
-
- public native long getTotalSwapSpaceSize();
- public native long getFreeSwapSpaceSize();
- public native long getProcessCpuTime();
- public native long getFreePhysicalMemorySize();
- public native long getTotalPhysicalMemorySize();
- public native double getSystemCpuLoad();
- public native double getProcessCpuLoad();
-
- static {
- initialize();
- }
- private static native void initialize();
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/windows/classes/sun/management/OperatingSystemImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package sun.management;
+
+import com.sun.management.OperatingSystemMXBean;
+
+/**
+ * Implementation class for the operating system.
+ * Standard and committed hotspot-specific metrics if any.
+ *
+ * ManagementFactory.getOperatingSystemMXBean() returns an instance
+ * of this class.
+ */
+class OperatingSystemImpl extends BaseOperatingSystemImpl
+ implements OperatingSystemMXBean {
+
+ // psapiLock is a lock to make sure only one thread loading
+ // PSAPI DLL.
+ private static Object psapiLock = new Object();
+
+ OperatingSystemImpl(VMManagement vm) {
+ super(vm);
+ }
+
+ public long getCommittedVirtualMemorySize() {
+ synchronized (psapiLock) {
+ return getCommittedVirtualMemorySize0();
+ }
+ }
+ private native long getCommittedVirtualMemorySize0();
+
+ public native long getTotalSwapSpaceSize();
+ public native long getFreeSwapSpaceSize();
+ public native long getProcessCpuTime();
+ public native long getFreePhysicalMemorySize();
+ public native long getTotalPhysicalMemorySize();
+ public native double getSystemCpuLoad();
+ public native double getProcessCpuLoad();
+
+ static {
+ initialize();
+ }
+ private static native void initialize();
+}
--- a/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -228,6 +228,7 @@
@Override
public void run() {
long overlapped = 0L;
+ boolean pending = false;
try {
begin();
@@ -241,6 +242,7 @@
overlapped);
if (n == IOStatus.UNAVAILABLE) {
// I/O is pending
+ pending = true;
return;
}
// acquired lock immediately
@@ -250,10 +252,10 @@
} catch (Throwable x) {
// lock failed or channel closed
removeFromFileLockTable(fli);
- if (overlapped != 0L)
- ioCache.remove(overlapped);
result.setFailure(toIOException(x));
} finally {
+ if (!pending && overlapped != 0L)
+ ioCache.remove(overlapped);
end();
}
--- a/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/windows/classes/sun/nio/ch/WindowsSelectorImpl.java Wed Jul 05 19:22:42 2017 +0200
@@ -266,7 +266,7 @@
private void checkForException() throws IOException {
if (exception == null)
return;
- StringBuffer message = new StringBuffer("An exception occured" +
+ StringBuffer message = new StringBuffer("An exception occurred" +
" during the execution of select(): \n");
message.append(exception);
message.append('\n');
--- a/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/windows/classes/sun/nio/fs/WindowsFileSystemProvider.java Wed Jul 05 19:22:42 2017 +0200
@@ -614,7 +614,7 @@
if (sm != null) {
FilePermission perm = new FilePermission(link.getPathForPermissionCheck(),
SecurityConstants.FILE_READLINK_ACTION);
- AccessController.checkPermission(perm);
+ sm.checkPermission(perm);
}
String target = WindowsLinkSupport.readLink(link);
--- a/jdk/src/windows/classes/sun/security/krb5/internal/tools/Klist.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/windows/classes/sun/security/krb5/internal/tools/Klist.java Wed Jul 05 19:22:42 2017 +0200
@@ -336,7 +336,7 @@
System.out.println(" name\t name of credentials cache or " +
" keytab with the prefix. File-based cache or "
+ "keytab's prefix is FILE:.");
- System.out.println(" -c specifes that credential cache is to be " +
+ System.out.println(" -c specifies that credential cache is to be " +
"listed");
System.out.println(" -k specifies that key tab is to be listed");
System.out.println(" options for credentials caches:");
--- a/jdk/src/windows/classes/sun/security/krb5/internal/tools/Ktab.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/windows/classes/sun/security/krb5/internal/tools/Ktab.java Wed Jul 05 19:22:42 2017 +0200
@@ -381,12 +381,12 @@
}
}
} catch (KrbException e) {
- System.err.println("Error occured while deleting the entry. "+
+ System.err.println("Error occurred while deleting the entry. "+
"Deletion failed.");
e.printStackTrace();
System.exit(-1);
} catch (IOException e) {
- System.err.println("Error occured while deleting the entry. "+
+ System.err.println("Error occurred while deleting the entry. "+
" Deletion failed.");
e.printStackTrace();
System.exit(-1);
--- a/jdk/src/windows/native/com/sun/management/OperatingSystem_md.c Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,941 +0,0 @@
-/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include "jni.h"
-#include "jni_util.h"
-#include "jlong.h"
-#include "jvm.h"
-#include "management.h"
-#include "com_sun_management_OperatingSystem.h"
-
-#include <psapi.h>
-#include <errno.h>
-#include <stdlib.h>
-
-#include <malloc.h>
-#pragma warning (push,0)
-#include <windows.h>
-#pragma warning (pop)
-#include <stdio.h>
-#include <time.h>
-#include <stdint.h>
-#include <assert.h>
-
-/* Disable warnings due to broken header files from Microsoft... */
-#pragma warning(push, 3)
-#include <pdh.h>
-#include <pdhmsg.h>
-#include <process.h>
-#pragma warning(pop)
-
-typedef unsigned __int32 juint;
-typedef unsigned __int64 julong;
-
-typedef enum boolean_values { false=0, true=1};
-
-static void set_low(jlong* value, jint low) {
- *value &= (jlong)0xffffffff << 32;
- *value |= (jlong)(julong)(juint)low;
-}
-
-static void set_high(jlong* value, jint high) {
- *value &= (jlong)(julong)(juint)0xffffffff;
- *value |= (jlong)high << 32;
-}
-
-static jlong jlong_from(jint h, jint l) {
- jlong result = 0; // initialization to avoid warning
- set_high(&result, h);
- set_low(&result, l);
- return result;
-}
-
-static HANDLE main_process;
-
-int perfiInit(void);
-
-JNIEXPORT void JNICALL
-Java_com_sun_management_OperatingSystem_initialize
- (JNIEnv *env, jclass cls)
-{
- main_process = GetCurrentProcess();
- perfiInit();
-}
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_OperatingSystem_getCommittedVirtualMemorySize0
- (JNIEnv *env, jobject mbean)
-{
- PROCESS_MEMORY_COUNTERS pmc;
- if (GetProcessMemoryInfo(main_process, &pmc, sizeof(PROCESS_MEMORY_COUNTERS)) == 0) {
- return (jlong)-1L;
- } else {
- return (jlong) pmc.PagefileUsage;
- }
-}
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_OperatingSystem_getTotalSwapSpaceSize
- (JNIEnv *env, jobject mbean)
-{
- MEMORYSTATUSEX ms;
- ms.dwLength = sizeof(ms);
- GlobalMemoryStatusEx(&ms);
- return (jlong) ms.ullTotalPageFile;
-}
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_OperatingSystem_getFreeSwapSpaceSize
- (JNIEnv *env, jobject mbean)
-{
- MEMORYSTATUSEX ms;
- ms.dwLength = sizeof(ms);
- GlobalMemoryStatusEx(&ms);
- return (jlong) ms.ullAvailPageFile;
-}
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_OperatingSystem_getProcessCpuTime
- (JNIEnv *env, jobject mbean)
-{
-
- FILETIME process_creation_time, process_exit_time,
- process_user_time, process_kernel_time;
-
- // Using static variables declared above
- // Units are 100-ns intervals. Convert to ns.
- GetProcessTimes(main_process, &process_creation_time,
- &process_exit_time,
- &process_kernel_time, &process_user_time);
- return (jlong_from(process_user_time.dwHighDateTime,
- process_user_time.dwLowDateTime) +
- jlong_from(process_kernel_time.dwHighDateTime,
- process_kernel_time.dwLowDateTime)) * 100;
-}
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_OperatingSystem_getFreePhysicalMemorySize
- (JNIEnv *env, jobject mbean)
-{
- MEMORYSTATUSEX ms;
- ms.dwLength = sizeof(ms);
- GlobalMemoryStatusEx(&ms);
- return (jlong) ms.ullAvailPhys;
-}
-
-JNIEXPORT jlong JNICALL
-Java_com_sun_management_OperatingSystem_getTotalPhysicalMemorySize
- (JNIEnv *env, jobject mbean)
-{
- MEMORYSTATUSEX ms;
- ms.dwLength = sizeof(ms);
- GlobalMemoryStatusEx(&ms);
- return (jlong) ms.ullTotalPhys;
-}
-
-// Seems WinXP PDH returns PDH_MORE_DATA whenever we send in a NULL buffer.
-// Let's just ignore it, since we make sure we have enough buffer anyway.
-static int
-pdh_fail(PDH_STATUS pdhStat) {
- return pdhStat != ERROR_SUCCESS && pdhStat != PDH_MORE_DATA;
-}
-
-// INFO: Using PDH APIs Correctly in a Localized Language (Q287159)
-// http://support.microsoft.com/default.aspx?scid=kb;EN-US;q287159
-// The index value for the base system counters and objects like processor,
-// process, thread, memory, and so forth are always the same irrespective
-// of the localized version of the operating system or service pack installed.
-#define PDH_PROCESSOR_IDX ((DWORD) 238)
-#define PDH_PROCESSOR_TIME_IDX ((DWORD) 6)
-#define PDH_PRIV_PROCESSOR_TIME_IDX ((DWORD) 144)
-#define PDH_PROCESS_IDX ((DWORD) 230)
-#define PDH_ID_PROCESS_IDX ((DWORD) 784)
-#define PDH_CONTEXT_SWITCH_RATE_IDX ((DWORD) 146)
-#define PDH_SYSTEM_IDX ((DWORD) 2)
-#define PDH_VIRTUAL_BYTES_IDX ((DWORD) 174)
-
-typedef PDH_STATUS (WINAPI *PdhAddCounterFunc)(
- HQUERY hQuery,
- LPCSTR szFullCounterPath,
- DWORD dwUserData,
- HCOUNTER *phCounter
- );
-typedef PDH_STATUS (WINAPI *PdhOpenQueryFunc)(
- LPCWSTR szDataSource,
- DWORD dwUserData,
- HQUERY *phQuery
- );
-typedef DWORD (WINAPI *PdhCloseQueryFunc)(
- HQUERY hQuery
- );
-typedef PDH_STATUS (WINAPI *PdhCollectQueryDataFunc)(
- HQUERY hQuery
- );
-typedef DWORD (WINAPI *PdhGetFormattedCounterValueFunc)(
- HCOUNTER hCounter,
- DWORD dwFormat,
- LPDWORD lpdwType,
- PPDH_FMT_COUNTERVALUE pValue
- );
-typedef PDH_STATUS (WINAPI *PdhEnumObjectItemsFunc)(
- LPCTSTR szDataSource,
- LPCTSTR szMachineName,
- LPCTSTR szObjectName,
- LPTSTR mszCounterList,
- LPDWORD pcchCounterListLength,
- LPTSTR mszInstanceList,
- LPDWORD pcchInstanceListLength,
- DWORD dwDetailLevel,
- DWORD dwFlags
- );
-typedef PDH_STATUS (WINAPI *PdhRemoveCounterFunc)(
- HCOUNTER hCounter
- );
-typedef PDH_STATUS (WINAPI *PdhLookupPerfNameByIndexFunc)(
- LPCSTR szMachineName,
- DWORD dwNameIndex,
- LPSTR szNameBuffer,
- LPDWORD pcchNameBufferSize
- );
-typedef PDH_STATUS (WINAPI *PdhMakeCounterPathFunc)(
- PDH_COUNTER_PATH_ELEMENTS *pCounterPathElements,
- LPTSTR szFullPathBuffer,
- LPDWORD pcchBufferSize,
- DWORD dwFlags
- );
-
-static PdhAddCounterFunc PdhAddCounter_i;
-static PdhOpenQueryFunc PdhOpenQuery_i;
-static PdhCloseQueryFunc PdhCloseQuery_i;
-static PdhCollectQueryDataFunc PdhCollectQueryData_i;
-static PdhGetFormattedCounterValueFunc PdhGetFormattedCounterValue_i;
-static PdhEnumObjectItemsFunc PdhEnumObjectItems_i;
-static PdhRemoveCounterFunc PdhRemoveCounter_i;
-static PdhLookupPerfNameByIndexFunc PdhLookupPerfNameByIndex_i;
-static PdhMakeCounterPathFunc PdhMakeCounterPath_i;
-
-static HANDLE thisProcess;
-static double cpuFactor;
-static DWORD num_cpus;
-
-#define FT2JLONG(X) ((((jlong)X.dwHighDateTime) << 32) | ((jlong)X.dwLowDateTime))
-#define COUNTER_BUF_SIZE 256
-// Min time between query updates.
-#define MIN_UPDATE_INTERVAL 500
-#define CONFIG_SUCCESSFUL 0
-
-/**
- * Struct for PDH queries.
- */
-typedef struct {
- HQUERY query;
- uint64_t lastUpdate; // Last time query was updated (current millis).
-} UpdateQueryS, *UpdateQueryP;
-
-/**
- * Struct for the processor load counters.
- */
-typedef struct {
- UpdateQueryS query;
- HCOUNTER* counters;
- int noOfCounters;
-} MultipleCounterQueryS, *MultipleCounterQueryP;
-
-/**
- * Struct for the jvm process load counter.
- */
-typedef struct {
- UpdateQueryS query;
- HCOUNTER counter;
-} SingleCounterQueryS, *SingleCounterQueryP;
-
-static char* getProcessPDHHeader(void);
-
-/**
- * Currently available counters.
- */
-static SingleCounterQueryS cntCtxtSwitchRate;
-static SingleCounterQueryS cntVirtualSize;
-static SingleCounterQueryS cntProcLoad;
-static SingleCounterQueryS cntProcSystemLoad;
-static MultipleCounterQueryS multiCounterCPULoad;
-
-static CRITICAL_SECTION processHeaderLock;
-static CRITICAL_SECTION initializationLock;
-
-/**
- * Initialize the perf module at startup.
- */
-int
-perfiInit(void)
-{
- InitializeCriticalSection(&processHeaderLock);
- InitializeCriticalSection(&initializationLock);
- return 0;
-}
-
-/**
- * Dynamically sets up function pointers to the PDH library.
- *
- * @return CONFIG_SUCCESSFUL on success, negative on failure.
- */
-static int
-get_functions(HMODULE h, char *ebuf, size_t elen) {
- // The 'A' at the end means the ANSI (not the UNICODE) vesions of the methods
- PdhAddCounter_i = (PdhAddCounterFunc)GetProcAddress(h, "PdhAddCounterA");
- PdhOpenQuery_i = (PdhOpenQueryFunc)GetProcAddress(h, "PdhOpenQueryA");
- PdhCloseQuery_i = (PdhCloseQueryFunc)GetProcAddress(h, "PdhCloseQuery");
- PdhCollectQueryData_i = (PdhCollectQueryDataFunc)GetProcAddress(h, "PdhCollectQueryData");
- PdhGetFormattedCounterValue_i = (PdhGetFormattedCounterValueFunc)GetProcAddress(h, "PdhGetFormattedCounterValue");
- PdhEnumObjectItems_i = (PdhEnumObjectItemsFunc)GetProcAddress(h, "PdhEnumObjectItemsA");
- PdhRemoveCounter_i = (PdhRemoveCounterFunc)GetProcAddress(h, "PdhRemoveCounter");
- PdhLookupPerfNameByIndex_i = (PdhLookupPerfNameByIndexFunc)GetProcAddress(h, "PdhLookupPerfNameByIndexA");
- PdhMakeCounterPath_i = (PdhMakeCounterPathFunc)GetProcAddress(h, "PdhMakeCounterPathA");
-
- if (PdhAddCounter_i == NULL || PdhOpenQuery_i == NULL ||
- PdhCloseQuery_i == NULL || PdhCollectQueryData_i == NULL ||
- PdhGetFormattedCounterValue_i == NULL || PdhEnumObjectItems_i == NULL ||
- PdhRemoveCounter_i == NULL || PdhLookupPerfNameByIndex_i == NULL || PdhMakeCounterPath_i == NULL)
- {
- _snprintf(ebuf, elen, "Required method could not be found.");
- return -1;
- }
- return CONFIG_SUCCESSFUL;
-}
-
-/**
- * Returns the counter value as a double for the specified query.
- * Will collect the query data and update the counter values as necessary.
- *
- * @param query the query to update (if needed).
- * @param c the counter to read.
- * @param value where to store the formatted value.
- * @param format the format to use (i.e. PDH_FMT_DOUBLE, PDH_FMT_LONG etc)
- * @return CONFIG_SUCCESSFUL if no error
- * -1 if PdhCollectQueryData fails
- * -2 if PdhGetFormattedCounterValue fails
- */
-static int
-getPerformanceData(UpdateQueryP query, HCOUNTER c, PDH_FMT_COUNTERVALUE* value, DWORD format) {
- clock_t now;
- now = clock();
-
- // Need to limit how often we update the query
- // to mimise the heisenberg effect.
- // (PDH behaves erratically if the counters are
- // queried too often, especially counters that
- // store and use values from two consecutive updates,
- // like cpu load.)
- if (now - query->lastUpdate > MIN_UPDATE_INTERVAL) {
- if (PdhCollectQueryData_i(query->query) != ERROR_SUCCESS) {
- return -1;
- }
- query->lastUpdate = now;
- }
-
- if (PdhGetFormattedCounterValue_i(c, format, NULL, value) != ERROR_SUCCESS) {
- return -2;
- }
- return CONFIG_SUCCESSFUL;
-}
-
-/**
- * Places the resolved counter name of the counter at the specified index in the
- * supplied buffer. There must be enough space in the buffer to hold the counter name.
- *
- * @param index the counter index as specified in the registry.
- * @param buf the buffer in which to place the counter name.
- * @param size the size of the counter name buffer.
- * @param ebuf the error message buffer.
- * @param elen the length of the error buffer.
- * @return CONFIG_SUCCESSFUL if successful, negative on failure.
- */
-static int
-find_name(DWORD index, char *buf, DWORD size) {
- PDH_STATUS res;
-
- if ((res = PdhLookupPerfNameByIndex_i(NULL, index, buf, &size)) != ERROR_SUCCESS) {
-
- /* printf("Could not open counter %d: error=0x%08x", index, res); */
- /* if (res == PDH_CSTATUS_NO_MACHINE) { */
- /* printf("User probably does not have sufficient privileges to use"); */
- /* printf("performance counters. If you are running on Windows 2003"); */
- /* printf("or Windows Vista, make sure the user is in the"); */
- /* printf("Performance Logs user group."); */
- /* } */
- return -1;
- }
-
- if (size == 0) {
- /* printf("Failed to get counter name for %d: empty string", index); */
- return -1;
- }
-
- // windows vista does not null-terminate the string (allthough the docs says it will)
- buf[size - 1] = '\0';
- return CONFIG_SUCCESSFUL;
-}
-
-/**
- * Sets up the supplied SingleCounterQuery to listen for the specified counter.
- * initPDH() must have been run prior to calling this function!
- *
- * @param counterQuery the counter query to set up.
- * @param counterString the string specifying the path to the counter.
- * @param ebuf the error buffer.
- * @param elen the length of the error buffer.
- * @returns CONFIG_SUCCESSFUL if successful, negative on failure.
- */
-static int
-initSingleCounterQuery(SingleCounterQueryP counterQuery, char *counterString) {
- if (PdhOpenQuery_i(NULL, 0, &counterQuery->query.query) != ERROR_SUCCESS) {
- /* printf("Could not open query for %s", counterString); */
- return -1;
- }
- if (PdhAddCounter_i(counterQuery->query.query, counterString, 0, &counterQuery->counter) != ERROR_SUCCESS) {
- /* printf("Could not add counter %s for query", counterString); */
- if (counterQuery->counter != NULL) {
- PdhRemoveCounter_i(counterQuery->counter);
- }
- if (counterQuery->query.query != NULL) {
- PdhCloseQuery_i(counterQuery->query.query);
- }
- memset(counterQuery, 0, sizeof(SingleCounterQueryS));
- return -1;
- }
- return CONFIG_SUCCESSFUL;
-}
-
-/**
- * Sets up the supplied SingleCounterQuery to listen for the time spent
- * by the HotSpot process.
- *
- * @param counterQuery the counter query to set up as a process counter.
- * @param ebuf the error buffer.
- * @param elen the length of the error buffer.
- * @returns CONFIG_SUCCESSFUL if successful, negative on failure.
- */
-static int
-initProcLoadCounter(void) {
- char time[COUNTER_BUF_SIZE];
- char counter[COUNTER_BUF_SIZE*2];
-
- if (find_name(PDH_PROCESSOR_TIME_IDX, time, sizeof(time)-1) < 0) {
- return -1;
- }
- _snprintf(counter, sizeof(counter)-1, "%s\\%s", getProcessPDHHeader(), time);
- return initSingleCounterQuery(&cntProcLoad, counter);
-}
-
-static int
-initProcSystemLoadCounter(void) {
- char time[COUNTER_BUF_SIZE];
- char counter[COUNTER_BUF_SIZE*2];
-
- if (find_name(PDH_PRIV_PROCESSOR_TIME_IDX, time, sizeof(time)-1) < 0) {
- return -1;
- }
- _snprintf(counter, sizeof(counter)-1, "%s\\%s", getProcessPDHHeader(), time);
- return initSingleCounterQuery(&cntProcSystemLoad, counter);
-}
-
-/**
- * Sets up the supplied MultipleCounterQuery to check on the processors.
- * (Comment: Refactor and prettify as with the the SingleCounter queries
- * if more MultipleCounterQueries are discovered.)
- *
- * initPDH() must have been run prior to calling this function.
- *
- * @param multiQuery a pointer to a MultipleCounterQueryS, will be filled in with
- * the necessary info to check the PDH processor counters.
- * @return CONFIG_SUCCESSFUL if successful, negative on failure.
- */
-static int
-initProcessorCounters(void) {
- char processor[COUNTER_BUF_SIZE]; //'Processor' == #238
- char time[COUNTER_BUF_SIZE]; //'Time' == 6
- DWORD c_size, i_size;
- HQUERY tmpQuery;
- DWORD i, p_count;
- BOOL error;
- char *instances, *tmp;
- PDH_STATUS pdhStat;
-
- c_size = i_size = 0;
- tmpQuery = NULL;
- error = false;
-
- // This __try / __except stuff is there since Windows 2000 beta (or so) sometimes triggered
- // an access violation when the user had insufficient privileges to use the performance
- // counters. This was previously guarded by a very ugly piece of code which disabled the
- // global trap handling in JRockit. Don't know if this really is needed anymore, but otoh,
- // if we keep it we don't crash on Win2k beta. /Ihse, 2005-05-30
- __try {
- if (find_name(PDH_PROCESSOR_IDX, processor, sizeof(processor)-1) < 0) {
- return -1;
- }
- } __except (EXCEPTION_EXECUTE_HANDLER) { // We'll catch all exceptions here.
- /* printf("User does not have sufficient privileges to use performance counters"); */
- return -1;
- }
-
- if (find_name(PDH_PROCESSOR_TIME_IDX, time, sizeof(time)-1) < 0) {
- return -1;
- }
- //ok, now we have enough to enumerate all processors.
- pdhStat = PdhEnumObjectItems_i (
- NULL, // reserved
- NULL, // local machine
- processor, // object to enumerate
- NULL, // pass in NULL buffers
- &c_size, // and 0 length to get
- NULL, // required size
- &i_size, // of the buffers in chars
- PERF_DETAIL_WIZARD, // counter detail level
- 0);
- if (pdh_fail(pdhStat)) {
- /* printf("could not enumerate processors (1) error=%d", pdhStat); */
- return -1;
- }
-
- // use calloc because windows vista does not null terminate the instance names (allthough the docs says it will)
- instances = calloc(i_size, 1);
- if (instances == NULL) {
- /* printf("could not allocate memory (1) %d bytes", i_size); */
- error = true;
- goto end;
- }
-
- c_size = 0;
- pdhStat = PdhEnumObjectItems_i (
- NULL, // reserved
- NULL, // local machine
- processor, // object to enumerate
- NULL, // pass in NULL buffers
- &c_size, // and 0 length to get
- instances, // required size
- &i_size, // of the buffers in chars
- PERF_DETAIL_WIZARD, // counter detail level
- 0);
-
- if (pdh_fail(pdhStat)) {
- /* printf("could not enumerate processors (2) error=%d", pdhStat); */
- error = true;
- goto end;
- }
- //count perf count instances.
- for (p_count = 0, tmp = instances; *tmp != 0; tmp = &tmp[lstrlen(tmp)+1], p_count++);
-
- //is this correct for HT?
- assert(p_count == num_cpus+1);
-
- //ok, have number of perf counters.
- multiCounterCPULoad.counters = calloc(p_count, sizeof(HCOUNTER));
- if (multiCounterCPULoad.counters == NULL) {
- /* printf("could not allocate memory (2) count=%d", p_count); */
- error = true;
- goto end;
- }
-
- multiCounterCPULoad.noOfCounters = p_count;
-
- if (PdhOpenQuery_i(NULL, 0, &multiCounterCPULoad.query.query) != ERROR_SUCCESS) {
- /* printf("could not create query"); */
- error = true;
- goto end;
- }
- //now, fetch the counters.
- for (i = 0, tmp = instances; *tmp != '\0'; tmp = &tmp[lstrlen(tmp)+1], i++) {
- char counter[2*COUNTER_BUF_SIZE];
-
- _snprintf(counter, sizeof(counter)-1, "\\%s(%s)\\%s", processor, tmp, time);
-
- if (PdhAddCounter_i(multiCounterCPULoad.query.query, counter, 0, &multiCounterCPULoad.counters[i]) != ERROR_SUCCESS) {
- /* printf("error adding processor counter %s", counter); */
- error = true;
- goto end;
- }
- }
-
- free(instances);
- instances = NULL;
-
- // Query once to initialize the counters needing at least two queries
- // (like the % CPU usage) to calculate correctly.
- if (PdhCollectQueryData_i(multiCounterCPULoad.query.query) != ERROR_SUCCESS)
- error = true;
-
- end:
- if (instances != NULL) {
- free(instances);
- }
- if (tmpQuery != NULL) {
- PdhCloseQuery_i(tmpQuery);
- }
- if (error) {
- int i;
-
- if (multiCounterCPULoad.counters != NULL) {
- for (i = 0; i < multiCounterCPULoad.noOfCounters; i++) {
- if (multiCounterCPULoad.counters[i] != NULL) {
- PdhRemoveCounter_i(multiCounterCPULoad.counters[i]);
- }
- }
- free(multiCounterCPULoad.counters[i]);
- }
- if (multiCounterCPULoad.query.query != NULL) {
- PdhCloseQuery_i(multiCounterCPULoad.query.query);
- }
- memset(&multiCounterCPULoad, 0, sizeof(MultipleCounterQueryS));
- return -1;
- }
- return CONFIG_SUCCESSFUL;
-}
-
-/**
- * Help function that initializes the PDH process header for the JRockit process.
- * (You should probably use getProcessPDHHeader() instead!)
- *
- * initPDH() must have been run prior to calling this function.
- *
- * @param ebuf the error buffer.
- * @param elen the length of the error buffer.
- *
- * @return the PDH instance description corresponding to the JVM process.
- */
-static char*
-initProcessPDHHeader(void) {
- static char hotspotheader[2*COUNTER_BUF_SIZE];
-
- char counter[2*COUNTER_BUF_SIZE];
- char processes[COUNTER_BUF_SIZE]; //'Process' == #230
- char pid[COUNTER_BUF_SIZE]; //'ID Process' == 784
- char module_name[MAX_PATH];
- PDH_STATUS pdhStat;
- DWORD c_size = 0, i_size = 0;
- HQUERY tmpQuery = NULL;
- int i, myPid = _getpid();
- BOOL error = false;
- char *instances, *tmp, *instance_name, *dot_pos;
-
- tmpQuery = NULL;
- myPid = _getpid();
- error = false;
-
- if (find_name(PDH_PROCESS_IDX, processes, sizeof(processes) - 1) < 0) {
- return NULL;
- }
-
- if (find_name(PDH_ID_PROCESS_IDX, pid, sizeof(pid) - 1) < 0) {
- return NULL;
- }
- //time is same.
-
- c_size = 0;
- i_size = 0;
-
- pdhStat = PdhEnumObjectItems_i (
- NULL, // reserved
- NULL, // local machine
- processes, // object to enumerate
- NULL, // pass in NULL buffers
- &c_size, // and 0 length to get
- NULL, // required size
- &i_size, // of the buffers in chars
- PERF_DETAIL_WIZARD, // counter detail level
- 0);
-
- //ok, now we have enough to enumerate all processes
- if (pdh_fail(pdhStat)) {
- /* printf("Could not enumerate processes (1) error=%d", pdhStat); */
- return NULL;
- }
-
- // use calloc because windows vista does not null terminate the instance names (allthough the docs says it will)
- if ((instances = calloc(i_size, 1)) == NULL) {
- /* printf("Could not allocate memory %d bytes", i_size); */
- error = true;
- goto end;
- }
-
- c_size = 0;
-
- pdhStat = PdhEnumObjectItems_i (
- NULL, // reserved
- NULL, // local machine
- processes, // object to enumerate
- NULL, // pass in NULL buffers
- &c_size, // and 0 length to get
- instances, // required size
- &i_size, // of the buffers in chars
- PERF_DETAIL_WIZARD, // counter detail level
- 0);
-
- // ok, now we have enough to enumerate all processes
- if (pdh_fail(pdhStat)) {
- /* printf("Could not enumerate processes (2) error=%d", pdhStat); */
- error = true;
- goto end;
- }
-
- if (PdhOpenQuery_i(NULL, 0, &tmpQuery) != ERROR_SUCCESS) {
- /* printf("Could not create temporary query"); */
- error = true;
- goto end;
- }
-
- // Find our module name and use it to extract the instance name used by PDH
- if (GetModuleFileName(NULL, module_name, MAX_PATH) >= MAX_PATH-1) {
- /* printf("Module name truncated"); */
- error = true;
- goto end;
- }
- instance_name = strrchr(module_name, '\\'); //drop path
- instance_name++; //skip slash
- dot_pos = strchr(instance_name, '.'); //drop .exe
- dot_pos[0] = '\0';
-
- //now, fetch the counters.
- for (tmp = instances; *tmp != 0 && !error; tmp = &tmp[lstrlen(tmp)+1]) {
- HCOUNTER hc = NULL;
- BOOL done = false;
-
- // Skip until we find our own process name
- if (strcmp(tmp, instance_name) != 0) {
- continue;
- }
-
- // iterate over all instance indexes and try to find our own pid
- for (i = 0; !done && !error; i++){
- PDH_STATUS res;
- _snprintf(counter, sizeof(counter)-1, "\\%s(%s#%d)\\%s", processes, tmp, i, pid);
-
- if (PdhAddCounter_i(tmpQuery, counter, 0, &hc) != ERROR_SUCCESS) {
- /* printf("Failed to create process id query"); */
- error = true;
- goto end;
- }
-
- res = PdhCollectQueryData_i(tmpQuery);
-
- if (res == PDH_INVALID_HANDLE) {
- /* printf("Failed to query process id"); */
- res = -1;
- done = true;
- } else if (res == PDH_NO_DATA) {
- done = true;
- } else {
- PDH_FMT_COUNTERVALUE cv;
-
- PdhGetFormattedCounterValue_i(hc, PDH_FMT_LONG, NULL, &cv);
- /*
- * This check seems to be needed for Win2k SMP boxes, since
- * they for some reason don't return PDH_NO_DATA for non existing
- * counters.
- */
- if (cv.CStatus != PDH_CSTATUS_VALID_DATA) {
- done = true;
- } else if (cv.longValue == myPid) {
- _snprintf(hotspotheader, sizeof(hotspotheader)-1, "\\%s(%s#%d)\0", processes, tmp, i);
- PdhRemoveCounter_i(hc);
- goto end;
- }
- }
- PdhRemoveCounter_i(hc);
- }
- }
- end:
- if (instances != NULL) {
- free(instances);
- }
- if (tmpQuery != NULL) {
- PdhCloseQuery_i(tmpQuery);
- }
- if (error) {
- return NULL;
- }
- return hotspotheader;
-}
-
-/**
- * Returns the PDH string prefix identifying the HotSpot process. Use this prefix when getting
- * counters from the PDH process object representing HotSpot.
- *
- * Note: this call may take some time to complete.
- *
- * @param ebuf error buffer.
- * @param elen error buffer length.
- *
- * @return the header to be used when retrieving PDH counters from the HotSpot process.
- * Will return NULL if the call failed.
- */
-static char *
-getProcessPDHHeader(void) {
- static char *processHeader = NULL;
-
- EnterCriticalSection(&processHeaderLock); {
- if (processHeader == NULL) {
- processHeader = initProcessPDHHeader();
- }
- } LeaveCriticalSection(&processHeaderLock);
- return processHeader;
-}
-
-int perfInit(void);
-
-double
-perfGetCPULoad(int which)
-{
- PDH_FMT_COUNTERVALUE cv;
- HCOUNTER c;
-
- if (perfInit() < 0) {
- // warn?
- return -1.0;
- }
-
- if (multiCounterCPULoad.query.query == NULL) {
- // warn?
- return -1.0;
- }
-
- if (which == -1) {
- c = multiCounterCPULoad.counters[multiCounterCPULoad.noOfCounters - 1];
- } else {
- if (which < multiCounterCPULoad.noOfCounters) {
- c = multiCounterCPULoad.counters[which];
- } else {
- return -1.0;
- }
- }
- if (getPerformanceData(&multiCounterCPULoad.query, c, &cv, PDH_FMT_DOUBLE ) == CONFIG_SUCCESSFUL) {
- return cv.doubleValue / 100;
- }
- return -1.0;
-}
-
-double
-perfGetProcessLoad(void)
-{
- PDH_FMT_COUNTERVALUE cv;
-
- if (perfInit() < 0) {
- // warn?
- return -1.0;
- }
-
- if (cntProcLoad.query.query == NULL) {
- // warn?
- return -1.0;
- }
-
- if (getPerformanceData(&cntProcLoad.query, cntProcLoad.counter, &cv, PDH_FMT_DOUBLE | PDH_FMT_NOCAP100) == CONFIG_SUCCESSFUL) {
- double d = cv.doubleValue / cpuFactor;
- d = min(1, d);
- d = max(0, d);
- return d;
- }
- return -1.0;
-}
-
-/**
- * Helper to initialize the PDH library. Loads the library and sets up the functions.
- * Note that once loaded, we will never unload the PDH library.
- *
- * @return CONFIG_SUCCESSFUL if successful, negative on failure.
- */
-int
-perfInit(void) {
- static HMODULE h;
- static BOOL running, inited;
-
- int error;
-
- if (running) {
- return CONFIG_SUCCESSFUL;
- }
-
- error = CONFIG_SUCCESSFUL;
-
- // this is double checked locking again, but we try to bypass the worst by
- // implicit membar at end of lock.
- EnterCriticalSection(&initializationLock); {
- if (!inited) {
- char buf[64] = "";
- SYSTEM_INFO si;
-
- // CMH. But windows will not care about our affinity when giving
- // us measurements. Need the real, raw num cpus.
-
- GetSystemInfo(&si);
- num_cpus = si.dwNumberOfProcessors;
- // Initialize the denominator for the jvm load calculations
- cpuFactor = num_cpus * 100;
-
- /**
- * Do this dynamically, so we don't fail to start on systems without pdh.
- */
- if ((h = LoadLibrary("pdh.dll")) == NULL) {
- /* printf("Could not load pdh.dll (%d)", GetLastError()); */
- error = -2;
- } else if (get_functions(h, buf, sizeof(buf)) < 0) {
- FreeLibrary(h);
- h = NULL;
- error = -2;
- /* printf("Failed to init pdh functions: %s.\n", buf); */
- } else {
- if (initProcessorCounters() != 0) {
- /* printf("Failed to init system load counters.\n"); */
- } else if (initProcLoadCounter() != 0) {
- /* printf("Failed to init process load counter.\n"); */
- } else if (initProcSystemLoadCounter() != 0) {
- /* printf("Failed to init process system load counter.\n"); */
- } else {
- inited = true;
- }
- }
- }
- } LeaveCriticalSection(&initializationLock);
-
- if (inited && error == CONFIG_SUCCESSFUL) {
- running = true;
- }
-
- return error;
-}
-
-JNIEXPORT jdouble JNICALL
-Java_com_sun_management_OperatingSystem_getSystemCpuLoad
-(JNIEnv *env, jobject dummy)
-{
- return perfGetCPULoad(-1);
-}
-
-JNIEXPORT jdouble JNICALL
-Java_com_sun_management_OperatingSystem_getProcessCpuLoad
-(JNIEnv *env, jobject dummy)
-{
- return perfGetProcessLoad();
-}
--- a/jdk/src/windows/native/java/net/Inet4AddressImpl.c Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/windows/native/java/net/Inet4AddressImpl.c Wed Jul 05 19:22:42 2017 +0200
@@ -142,10 +142,15 @@
if (!initialized) {
ni_iacls = (*env)->FindClass(env, "java/net/InetAddress");
+ CHECK_NULL_RETURN(ni_iacls, NULL);
ni_iacls = (*env)->NewGlobalRef(env, ni_iacls);
+ CHECK_NULL_RETURN(ni_iacls, NULL);
ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address");
+ CHECK_NULL_RETURN(ni_ia4cls, NULL);
ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
+ CHECK_NULL_RETURN(ni_ia4cls, NULL);
ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
+ CHECK_NULL_RETURN(ni_ia4ctrID, NULL);
initialized = 1;
}
--- a/jdk/src/windows/native/java/net/Inet6AddressImpl.c Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/src/windows/native/java/net/Inet6AddressImpl.c Wed Jul 05 19:22:42 2017 +0200
@@ -93,13 +93,21 @@
if (!initialized) {
ni_iacls = (*env)->FindClass(env, "java/net/InetAddress");
+ CHECK_NULL_RETURN(ni_iacls, NULL);
ni_iacls = (*env)->NewGlobalRef(env, ni_iacls);
+ CHECK_NULL_RETURN(ni_iacls, NULL);
ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address");
+ CHECK_NULL_RETURN(ni_ia4cls, NULL);
ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
+ CHECK_NULL_RETURN(ni_ia4cls, NULL);
ni_ia6cls = (*env)->FindClass(env, "java/net/Inet6Address");
+ CHECK_NULL_RETURN(ni_ia6cls, NULL);
ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls);
+ CHECK_NULL_RETURN(ni_ia6cls, NULL);
ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
+ CHECK_NULL_RETURN(ni_ia4ctrID, NULL);
ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V");
+ CHECK_NULL_RETURN(ni_ia6ctrID, NULL);
initialized = 1;
}
if (IS_NULL(host)) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/windows/native/sun/management/OperatingSystemImpl.c Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,941 @@
+/*
+ * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include "jni.h"
+#include "jni_util.h"
+#include "jlong.h"
+#include "jvm.h"
+#include "management.h"
+#include "sun_management_OperatingSystemImpl.h"
+
+#include <psapi.h>
+#include <errno.h>
+#include <stdlib.h>
+
+#include <malloc.h>
+#pragma warning (push,0)
+#include <windows.h>
+#pragma warning (pop)
+#include <stdio.h>
+#include <time.h>
+#include <stdint.h>
+#include <assert.h>
+
+/* Disable warnings due to broken header files from Microsoft... */
+#pragma warning(push, 3)
+#include <pdh.h>
+#include <pdhmsg.h>
+#include <process.h>
+#pragma warning(pop)
+
+typedef unsigned __int32 juint;
+typedef unsigned __int64 julong;
+
+typedef enum boolean_values { false=0, true=1};
+
+static void set_low(jlong* value, jint low) {
+ *value &= (jlong)0xffffffff << 32;
+ *value |= (jlong)(julong)(juint)low;
+}
+
+static void set_high(jlong* value, jint high) {
+ *value &= (jlong)(julong)(juint)0xffffffff;
+ *value |= (jlong)high << 32;
+}
+
+static jlong jlong_from(jint h, jint l) {
+ jlong result = 0; // initialization to avoid warning
+ set_high(&result, h);
+ set_low(&result, l);
+ return result;
+}
+
+static HANDLE main_process;
+
+int perfiInit(void);
+
+JNIEXPORT void JNICALL
+Java_sun_management_OperatingSystemImpl_initialize
+ (JNIEnv *env, jclass cls)
+{
+ main_process = GetCurrentProcess();
+ perfiInit();
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getCommittedVirtualMemorySize0
+ (JNIEnv *env, jobject mbean)
+{
+ PROCESS_MEMORY_COUNTERS pmc;
+ if (GetProcessMemoryInfo(main_process, &pmc, sizeof(PROCESS_MEMORY_COUNTERS)) == 0) {
+ return (jlong)-1L;
+ } else {
+ return (jlong) pmc.PagefileUsage;
+ }
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getTotalSwapSpaceSize
+ (JNIEnv *env, jobject mbean)
+{
+ MEMORYSTATUSEX ms;
+ ms.dwLength = sizeof(ms);
+ GlobalMemoryStatusEx(&ms);
+ return (jlong) ms.ullTotalPageFile;
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getFreeSwapSpaceSize
+ (JNIEnv *env, jobject mbean)
+{
+ MEMORYSTATUSEX ms;
+ ms.dwLength = sizeof(ms);
+ GlobalMemoryStatusEx(&ms);
+ return (jlong) ms.ullAvailPageFile;
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getProcessCpuTime
+ (JNIEnv *env, jobject mbean)
+{
+
+ FILETIME process_creation_time, process_exit_time,
+ process_user_time, process_kernel_time;
+
+ // Using static variables declared above
+ // Units are 100-ns intervals. Convert to ns.
+ GetProcessTimes(main_process, &process_creation_time,
+ &process_exit_time,
+ &process_kernel_time, &process_user_time);
+ return (jlong_from(process_user_time.dwHighDateTime,
+ process_user_time.dwLowDateTime) +
+ jlong_from(process_kernel_time.dwHighDateTime,
+ process_kernel_time.dwLowDateTime)) * 100;
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getFreePhysicalMemorySize
+ (JNIEnv *env, jobject mbean)
+{
+ MEMORYSTATUSEX ms;
+ ms.dwLength = sizeof(ms);
+ GlobalMemoryStatusEx(&ms);
+ return (jlong) ms.ullAvailPhys;
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_management_OperatingSystemImpl_getTotalPhysicalMemorySize
+ (JNIEnv *env, jobject mbean)
+{
+ MEMORYSTATUSEX ms;
+ ms.dwLength = sizeof(ms);
+ GlobalMemoryStatusEx(&ms);
+ return (jlong) ms.ullTotalPhys;
+}
+
+// Seems WinXP PDH returns PDH_MORE_DATA whenever we send in a NULL buffer.
+// Let's just ignore it, since we make sure we have enough buffer anyway.
+static int
+pdh_fail(PDH_STATUS pdhStat) {
+ return pdhStat != ERROR_SUCCESS && pdhStat != PDH_MORE_DATA;
+}
+
+// INFO: Using PDH APIs Correctly in a Localized Language (Q287159)
+// http://support.microsoft.com/default.aspx?scid=kb;EN-US;q287159
+// The index value for the base system counters and objects like processor,
+// process, thread, memory, and so forth are always the same irrespective
+// of the localized version of the operating system or service pack installed.
+#define PDH_PROCESSOR_IDX ((DWORD) 238)
+#define PDH_PROCESSOR_TIME_IDX ((DWORD) 6)
+#define PDH_PRIV_PROCESSOR_TIME_IDX ((DWORD) 144)
+#define PDH_PROCESS_IDX ((DWORD) 230)
+#define PDH_ID_PROCESS_IDX ((DWORD) 784)
+#define PDH_CONTEXT_SWITCH_RATE_IDX ((DWORD) 146)
+#define PDH_SYSTEM_IDX ((DWORD) 2)
+#define PDH_VIRTUAL_BYTES_IDX ((DWORD) 174)
+
+typedef PDH_STATUS (WINAPI *PdhAddCounterFunc)(
+ HQUERY hQuery,
+ LPCSTR szFullCounterPath,
+ DWORD dwUserData,
+ HCOUNTER *phCounter
+ );
+typedef PDH_STATUS (WINAPI *PdhOpenQueryFunc)(
+ LPCWSTR szDataSource,
+ DWORD dwUserData,
+ HQUERY *phQuery
+ );
+typedef DWORD (WINAPI *PdhCloseQueryFunc)(
+ HQUERY hQuery
+ );
+typedef PDH_STATUS (WINAPI *PdhCollectQueryDataFunc)(
+ HQUERY hQuery
+ );
+typedef DWORD (WINAPI *PdhGetFormattedCounterValueFunc)(
+ HCOUNTER hCounter,
+ DWORD dwFormat,
+ LPDWORD lpdwType,
+ PPDH_FMT_COUNTERVALUE pValue
+ );
+typedef PDH_STATUS (WINAPI *PdhEnumObjectItemsFunc)(
+ LPCTSTR szDataSource,
+ LPCTSTR szMachineName,
+ LPCTSTR szObjectName,
+ LPTSTR mszCounterList,
+ LPDWORD pcchCounterListLength,
+ LPTSTR mszInstanceList,
+ LPDWORD pcchInstanceListLength,
+ DWORD dwDetailLevel,
+ DWORD dwFlags
+ );
+typedef PDH_STATUS (WINAPI *PdhRemoveCounterFunc)(
+ HCOUNTER hCounter
+ );
+typedef PDH_STATUS (WINAPI *PdhLookupPerfNameByIndexFunc)(
+ LPCSTR szMachineName,
+ DWORD dwNameIndex,
+ LPSTR szNameBuffer,
+ LPDWORD pcchNameBufferSize
+ );
+typedef PDH_STATUS (WINAPI *PdhMakeCounterPathFunc)(
+ PDH_COUNTER_PATH_ELEMENTS *pCounterPathElements,
+ LPTSTR szFullPathBuffer,
+ LPDWORD pcchBufferSize,
+ DWORD dwFlags
+ );
+
+static PdhAddCounterFunc PdhAddCounter_i;
+static PdhOpenQueryFunc PdhOpenQuery_i;
+static PdhCloseQueryFunc PdhCloseQuery_i;
+static PdhCollectQueryDataFunc PdhCollectQueryData_i;
+static PdhGetFormattedCounterValueFunc PdhGetFormattedCounterValue_i;
+static PdhEnumObjectItemsFunc PdhEnumObjectItems_i;
+static PdhRemoveCounterFunc PdhRemoveCounter_i;
+static PdhLookupPerfNameByIndexFunc PdhLookupPerfNameByIndex_i;
+static PdhMakeCounterPathFunc PdhMakeCounterPath_i;
+
+static HANDLE thisProcess;
+static double cpuFactor;
+static DWORD num_cpus;
+
+#define FT2JLONG(X) ((((jlong)X.dwHighDateTime) << 32) | ((jlong)X.dwLowDateTime))
+#define COUNTER_BUF_SIZE 256
+// Min time between query updates.
+#define MIN_UPDATE_INTERVAL 500
+#define CONFIG_SUCCESSFUL 0
+
+/**
+ * Struct for PDH queries.
+ */
+typedef struct {
+ HQUERY query;
+ uint64_t lastUpdate; // Last time query was updated (current millis).
+} UpdateQueryS, *UpdateQueryP;
+
+/**
+ * Struct for the processor load counters.
+ */
+typedef struct {
+ UpdateQueryS query;
+ HCOUNTER* counters;
+ int noOfCounters;
+} MultipleCounterQueryS, *MultipleCounterQueryP;
+
+/**
+ * Struct for the jvm process load counter.
+ */
+typedef struct {
+ UpdateQueryS query;
+ HCOUNTER counter;
+} SingleCounterQueryS, *SingleCounterQueryP;
+
+static char* getProcessPDHHeader(void);
+
+/**
+ * Currently available counters.
+ */
+static SingleCounterQueryS cntCtxtSwitchRate;
+static SingleCounterQueryS cntVirtualSize;
+static SingleCounterQueryS cntProcLoad;
+static SingleCounterQueryS cntProcSystemLoad;
+static MultipleCounterQueryS multiCounterCPULoad;
+
+static CRITICAL_SECTION processHeaderLock;
+static CRITICAL_SECTION initializationLock;
+
+/**
+ * Initialize the perf module at startup.
+ */
+int
+perfiInit(void)
+{
+ InitializeCriticalSection(&processHeaderLock);
+ InitializeCriticalSection(&initializationLock);
+ return 0;
+}
+
+/**
+ * Dynamically sets up function pointers to the PDH library.
+ *
+ * @return CONFIG_SUCCESSFUL on success, negative on failure.
+ */
+static int
+get_functions(HMODULE h, char *ebuf, size_t elen) {
+ // The 'A' at the end means the ANSI (not the UNICODE) vesions of the methods
+ PdhAddCounter_i = (PdhAddCounterFunc)GetProcAddress(h, "PdhAddCounterA");
+ PdhOpenQuery_i = (PdhOpenQueryFunc)GetProcAddress(h, "PdhOpenQueryA");
+ PdhCloseQuery_i = (PdhCloseQueryFunc)GetProcAddress(h, "PdhCloseQuery");
+ PdhCollectQueryData_i = (PdhCollectQueryDataFunc)GetProcAddress(h, "PdhCollectQueryData");
+ PdhGetFormattedCounterValue_i = (PdhGetFormattedCounterValueFunc)GetProcAddress(h, "PdhGetFormattedCounterValue");
+ PdhEnumObjectItems_i = (PdhEnumObjectItemsFunc)GetProcAddress(h, "PdhEnumObjectItemsA");
+ PdhRemoveCounter_i = (PdhRemoveCounterFunc)GetProcAddress(h, "PdhRemoveCounter");
+ PdhLookupPerfNameByIndex_i = (PdhLookupPerfNameByIndexFunc)GetProcAddress(h, "PdhLookupPerfNameByIndexA");
+ PdhMakeCounterPath_i = (PdhMakeCounterPathFunc)GetProcAddress(h, "PdhMakeCounterPathA");
+
+ if (PdhAddCounter_i == NULL || PdhOpenQuery_i == NULL ||
+ PdhCloseQuery_i == NULL || PdhCollectQueryData_i == NULL ||
+ PdhGetFormattedCounterValue_i == NULL || PdhEnumObjectItems_i == NULL ||
+ PdhRemoveCounter_i == NULL || PdhLookupPerfNameByIndex_i == NULL || PdhMakeCounterPath_i == NULL)
+ {
+ _snprintf(ebuf, elen, "Required method could not be found.");
+ return -1;
+ }
+ return CONFIG_SUCCESSFUL;
+}
+
+/**
+ * Returns the counter value as a double for the specified query.
+ * Will collect the query data and update the counter values as necessary.
+ *
+ * @param query the query to update (if needed).
+ * @param c the counter to read.
+ * @param value where to store the formatted value.
+ * @param format the format to use (i.e. PDH_FMT_DOUBLE, PDH_FMT_LONG etc)
+ * @return CONFIG_SUCCESSFUL if no error
+ * -1 if PdhCollectQueryData fails
+ * -2 if PdhGetFormattedCounterValue fails
+ */
+static int
+getPerformanceData(UpdateQueryP query, HCOUNTER c, PDH_FMT_COUNTERVALUE* value, DWORD format) {
+ clock_t now;
+ now = clock();
+
+ // Need to limit how often we update the query
+ // to mimise the heisenberg effect.
+ // (PDH behaves erratically if the counters are
+ // queried too often, especially counters that
+ // store and use values from two consecutive updates,
+ // like cpu load.)
+ if (now - query->lastUpdate > MIN_UPDATE_INTERVAL) {
+ if (PdhCollectQueryData_i(query->query) != ERROR_SUCCESS) {
+ return -1;
+ }
+ query->lastUpdate = now;
+ }
+
+ if (PdhGetFormattedCounterValue_i(c, format, NULL, value) != ERROR_SUCCESS) {
+ return -2;
+ }
+ return CONFIG_SUCCESSFUL;
+}
+
+/**
+ * Places the resolved counter name of the counter at the specified index in the
+ * supplied buffer. There must be enough space in the buffer to hold the counter name.
+ *
+ * @param index the counter index as specified in the registry.
+ * @param buf the buffer in which to place the counter name.
+ * @param size the size of the counter name buffer.
+ * @param ebuf the error message buffer.
+ * @param elen the length of the error buffer.
+ * @return CONFIG_SUCCESSFUL if successful, negative on failure.
+ */
+static int
+find_name(DWORD index, char *buf, DWORD size) {
+ PDH_STATUS res;
+
+ if ((res = PdhLookupPerfNameByIndex_i(NULL, index, buf, &size)) != ERROR_SUCCESS) {
+
+ /* printf("Could not open counter %d: error=0x%08x", index, res); */
+ /* if (res == PDH_CSTATUS_NO_MACHINE) { */
+ /* printf("User probably does not have sufficient privileges to use"); */
+ /* printf("performance counters. If you are running on Windows 2003"); */
+ /* printf("or Windows Vista, make sure the user is in the"); */
+ /* printf("Performance Logs user group."); */
+ /* } */
+ return -1;
+ }
+
+ if (size == 0) {
+ /* printf("Failed to get counter name for %d: empty string", index); */
+ return -1;
+ }
+
+ // windows vista does not null-terminate the string (allthough the docs says it will)
+ buf[size - 1] = '\0';
+ return CONFIG_SUCCESSFUL;
+}
+
+/**
+ * Sets up the supplied SingleCounterQuery to listen for the specified counter.
+ * initPDH() must have been run prior to calling this function!
+ *
+ * @param counterQuery the counter query to set up.
+ * @param counterString the string specifying the path to the counter.
+ * @param ebuf the error buffer.
+ * @param elen the length of the error buffer.
+ * @returns CONFIG_SUCCESSFUL if successful, negative on failure.
+ */
+static int
+initSingleCounterQuery(SingleCounterQueryP counterQuery, char *counterString) {
+ if (PdhOpenQuery_i(NULL, 0, &counterQuery->query.query) != ERROR_SUCCESS) {
+ /* printf("Could not open query for %s", counterString); */
+ return -1;
+ }
+ if (PdhAddCounter_i(counterQuery->query.query, counterString, 0, &counterQuery->counter) != ERROR_SUCCESS) {
+ /* printf("Could not add counter %s for query", counterString); */
+ if (counterQuery->counter != NULL) {
+ PdhRemoveCounter_i(counterQuery->counter);
+ }
+ if (counterQuery->query.query != NULL) {
+ PdhCloseQuery_i(counterQuery->query.query);
+ }
+ memset(counterQuery, 0, sizeof(SingleCounterQueryS));
+ return -1;
+ }
+ return CONFIG_SUCCESSFUL;
+}
+
+/**
+ * Sets up the supplied SingleCounterQuery to listen for the time spent
+ * by the HotSpot process.
+ *
+ * @param counterQuery the counter query to set up as a process counter.
+ * @param ebuf the error buffer.
+ * @param elen the length of the error buffer.
+ * @returns CONFIG_SUCCESSFUL if successful, negative on failure.
+ */
+static int
+initProcLoadCounter(void) {
+ char time[COUNTER_BUF_SIZE];
+ char counter[COUNTER_BUF_SIZE*2];
+
+ if (find_name(PDH_PROCESSOR_TIME_IDX, time, sizeof(time)-1) < 0) {
+ return -1;
+ }
+ _snprintf(counter, sizeof(counter)-1, "%s\\%s", getProcessPDHHeader(), time);
+ return initSingleCounterQuery(&cntProcLoad, counter);
+}
+
+static int
+initProcSystemLoadCounter(void) {
+ char time[COUNTER_BUF_SIZE];
+ char counter[COUNTER_BUF_SIZE*2];
+
+ if (find_name(PDH_PRIV_PROCESSOR_TIME_IDX, time, sizeof(time)-1) < 0) {
+ return -1;
+ }
+ _snprintf(counter, sizeof(counter)-1, "%s\\%s", getProcessPDHHeader(), time);
+ return initSingleCounterQuery(&cntProcSystemLoad, counter);
+}
+
+/**
+ * Sets up the supplied MultipleCounterQuery to check on the processors.
+ * (Comment: Refactor and prettify as with the the SingleCounter queries
+ * if more MultipleCounterQueries are discovered.)
+ *
+ * initPDH() must have been run prior to calling this function.
+ *
+ * @param multiQuery a pointer to a MultipleCounterQueryS, will be filled in with
+ * the necessary info to check the PDH processor counters.
+ * @return CONFIG_SUCCESSFUL if successful, negative on failure.
+ */
+static int
+initProcessorCounters(void) {
+ char processor[COUNTER_BUF_SIZE]; //'Processor' == #238
+ char time[COUNTER_BUF_SIZE]; //'Time' == 6
+ DWORD c_size, i_size;
+ HQUERY tmpQuery;
+ DWORD i, p_count;
+ BOOL error;
+ char *instances, *tmp;
+ PDH_STATUS pdhStat;
+
+ c_size = i_size = 0;
+ tmpQuery = NULL;
+ error = false;
+
+ // This __try / __except stuff is there since Windows 2000 beta (or so) sometimes triggered
+ // an access violation when the user had insufficient privileges to use the performance
+ // counters. This was previously guarded by a very ugly piece of code which disabled the
+ // global trap handling in JRockit. Don't know if this really is needed anymore, but otoh,
+ // if we keep it we don't crash on Win2k beta. /Ihse, 2005-05-30
+ __try {
+ if (find_name(PDH_PROCESSOR_IDX, processor, sizeof(processor)-1) < 0) {
+ return -1;
+ }
+ } __except (EXCEPTION_EXECUTE_HANDLER) { // We'll catch all exceptions here.
+ /* printf("User does not have sufficient privileges to use performance counters"); */
+ return -1;
+ }
+
+ if (find_name(PDH_PROCESSOR_TIME_IDX, time, sizeof(time)-1) < 0) {
+ return -1;
+ }
+ //ok, now we have enough to enumerate all processors.
+ pdhStat = PdhEnumObjectItems_i (
+ NULL, // reserved
+ NULL, // local machine
+ processor, // object to enumerate
+ NULL, // pass in NULL buffers
+ &c_size, // and 0 length to get
+ NULL, // required size
+ &i_size, // of the buffers in chars
+ PERF_DETAIL_WIZARD, // counter detail level
+ 0);
+ if (pdh_fail(pdhStat)) {
+ /* printf("could not enumerate processors (1) error=%d", pdhStat); */
+ return -1;
+ }
+
+ // use calloc because windows vista does not null terminate the instance names (allthough the docs says it will)
+ instances = calloc(i_size, 1);
+ if (instances == NULL) {
+ /* printf("could not allocate memory (1) %d bytes", i_size); */
+ error = true;
+ goto end;
+ }
+
+ c_size = 0;
+ pdhStat = PdhEnumObjectItems_i (
+ NULL, // reserved
+ NULL, // local machine
+ processor, // object to enumerate
+ NULL, // pass in NULL buffers
+ &c_size, // and 0 length to get
+ instances, // required size
+ &i_size, // of the buffers in chars
+ PERF_DETAIL_WIZARD, // counter detail level
+ 0);
+
+ if (pdh_fail(pdhStat)) {
+ /* printf("could not enumerate processors (2) error=%d", pdhStat); */
+ error = true;
+ goto end;
+ }
+ //count perf count instances.
+ for (p_count = 0, tmp = instances; *tmp != 0; tmp = &tmp[lstrlen(tmp)+1], p_count++);
+
+ //is this correct for HT?
+ assert(p_count == num_cpus+1);
+
+ //ok, have number of perf counters.
+ multiCounterCPULoad.counters = calloc(p_count, sizeof(HCOUNTER));
+ if (multiCounterCPULoad.counters == NULL) {
+ /* printf("could not allocate memory (2) count=%d", p_count); */
+ error = true;
+ goto end;
+ }
+
+ multiCounterCPULoad.noOfCounters = p_count;
+
+ if (PdhOpenQuery_i(NULL, 0, &multiCounterCPULoad.query.query) != ERROR_SUCCESS) {
+ /* printf("could not create query"); */
+ error = true;
+ goto end;
+ }
+ //now, fetch the counters.
+ for (i = 0, tmp = instances; *tmp != '\0'; tmp = &tmp[lstrlen(tmp)+1], i++) {
+ char counter[2*COUNTER_BUF_SIZE];
+
+ _snprintf(counter, sizeof(counter)-1, "\\%s(%s)\\%s", processor, tmp, time);
+
+ if (PdhAddCounter_i(multiCounterCPULoad.query.query, counter, 0, &multiCounterCPULoad.counters[i]) != ERROR_SUCCESS) {
+ /* printf("error adding processor counter %s", counter); */
+ error = true;
+ goto end;
+ }
+ }
+
+ free(instances);
+ instances = NULL;
+
+ // Query once to initialize the counters needing at least two queries
+ // (like the % CPU usage) to calculate correctly.
+ if (PdhCollectQueryData_i(multiCounterCPULoad.query.query) != ERROR_SUCCESS)
+ error = true;
+
+ end:
+ if (instances != NULL) {
+ free(instances);
+ }
+ if (tmpQuery != NULL) {
+ PdhCloseQuery_i(tmpQuery);
+ }
+ if (error) {
+ int i;
+
+ if (multiCounterCPULoad.counters != NULL) {
+ for (i = 0; i < multiCounterCPULoad.noOfCounters; i++) {
+ if (multiCounterCPULoad.counters[i] != NULL) {
+ PdhRemoveCounter_i(multiCounterCPULoad.counters[i]);
+ }
+ }
+ free(multiCounterCPULoad.counters[i]);
+ }
+ if (multiCounterCPULoad.query.query != NULL) {
+ PdhCloseQuery_i(multiCounterCPULoad.query.query);
+ }
+ memset(&multiCounterCPULoad, 0, sizeof(MultipleCounterQueryS));
+ return -1;
+ }
+ return CONFIG_SUCCESSFUL;
+}
+
+/**
+ * Help function that initializes the PDH process header for the JRockit process.
+ * (You should probably use getProcessPDHHeader() instead!)
+ *
+ * initPDH() must have been run prior to calling this function.
+ *
+ * @param ebuf the error buffer.
+ * @param elen the length of the error buffer.
+ *
+ * @return the PDH instance description corresponding to the JVM process.
+ */
+static char*
+initProcessPDHHeader(void) {
+ static char hotspotheader[2*COUNTER_BUF_SIZE];
+
+ char counter[2*COUNTER_BUF_SIZE];
+ char processes[COUNTER_BUF_SIZE]; //'Process' == #230
+ char pid[COUNTER_BUF_SIZE]; //'ID Process' == 784
+ char module_name[MAX_PATH];
+ PDH_STATUS pdhStat;
+ DWORD c_size = 0, i_size = 0;
+ HQUERY tmpQuery = NULL;
+ int i, myPid = _getpid();
+ BOOL error = false;
+ char *instances, *tmp, *instance_name, *dot_pos;
+
+ tmpQuery = NULL;
+ myPid = _getpid();
+ error = false;
+
+ if (find_name(PDH_PROCESS_IDX, processes, sizeof(processes) - 1) < 0) {
+ return NULL;
+ }
+
+ if (find_name(PDH_ID_PROCESS_IDX, pid, sizeof(pid) - 1) < 0) {
+ return NULL;
+ }
+ //time is same.
+
+ c_size = 0;
+ i_size = 0;
+
+ pdhStat = PdhEnumObjectItems_i (
+ NULL, // reserved
+ NULL, // local machine
+ processes, // object to enumerate
+ NULL, // pass in NULL buffers
+ &c_size, // and 0 length to get
+ NULL, // required size
+ &i_size, // of the buffers in chars
+ PERF_DETAIL_WIZARD, // counter detail level
+ 0);
+
+ //ok, now we have enough to enumerate all processes
+ if (pdh_fail(pdhStat)) {
+ /* printf("Could not enumerate processes (1) error=%d", pdhStat); */
+ return NULL;
+ }
+
+ // use calloc because windows vista does not null terminate the instance names (allthough the docs says it will)
+ if ((instances = calloc(i_size, 1)) == NULL) {
+ /* printf("Could not allocate memory %d bytes", i_size); */
+ error = true;
+ goto end;
+ }
+
+ c_size = 0;
+
+ pdhStat = PdhEnumObjectItems_i (
+ NULL, // reserved
+ NULL, // local machine
+ processes, // object to enumerate
+ NULL, // pass in NULL buffers
+ &c_size, // and 0 length to get
+ instances, // required size
+ &i_size, // of the buffers in chars
+ PERF_DETAIL_WIZARD, // counter detail level
+ 0);
+
+ // ok, now we have enough to enumerate all processes
+ if (pdh_fail(pdhStat)) {
+ /* printf("Could not enumerate processes (2) error=%d", pdhStat); */
+ error = true;
+ goto end;
+ }
+
+ if (PdhOpenQuery_i(NULL, 0, &tmpQuery) != ERROR_SUCCESS) {
+ /* printf("Could not create temporary query"); */
+ error = true;
+ goto end;
+ }
+
+ // Find our module name and use it to extract the instance name used by PDH
+ if (GetModuleFileName(NULL, module_name, MAX_PATH) >= MAX_PATH-1) {
+ /* printf("Module name truncated"); */
+ error = true;
+ goto end;
+ }
+ instance_name = strrchr(module_name, '\\'); //drop path
+ instance_name++; //skip slash
+ dot_pos = strchr(instance_name, '.'); //drop .exe
+ dot_pos[0] = '\0';
+
+ //now, fetch the counters.
+ for (tmp = instances; *tmp != 0 && !error; tmp = &tmp[lstrlen(tmp)+1]) {
+ HCOUNTER hc = NULL;
+ BOOL done = false;
+
+ // Skip until we find our own process name
+ if (strcmp(tmp, instance_name) != 0) {
+ continue;
+ }
+
+ // iterate over all instance indexes and try to find our own pid
+ for (i = 0; !done && !error; i++){
+ PDH_STATUS res;
+ _snprintf(counter, sizeof(counter)-1, "\\%s(%s#%d)\\%s", processes, tmp, i, pid);
+
+ if (PdhAddCounter_i(tmpQuery, counter, 0, &hc) != ERROR_SUCCESS) {
+ /* printf("Failed to create process id query"); */
+ error = true;
+ goto end;
+ }
+
+ res = PdhCollectQueryData_i(tmpQuery);
+
+ if (res == PDH_INVALID_HANDLE) {
+ /* printf("Failed to query process id"); */
+ res = -1;
+ done = true;
+ } else if (res == PDH_NO_DATA) {
+ done = true;
+ } else {
+ PDH_FMT_COUNTERVALUE cv;
+
+ PdhGetFormattedCounterValue_i(hc, PDH_FMT_LONG, NULL, &cv);
+ /*
+ * This check seems to be needed for Win2k SMP boxes, since
+ * they for some reason don't return PDH_NO_DATA for non existing
+ * counters.
+ */
+ if (cv.CStatus != PDH_CSTATUS_VALID_DATA) {
+ done = true;
+ } else if (cv.longValue == myPid) {
+ _snprintf(hotspotheader, sizeof(hotspotheader)-1, "\\%s(%s#%d)\0", processes, tmp, i);
+ PdhRemoveCounter_i(hc);
+ goto end;
+ }
+ }
+ PdhRemoveCounter_i(hc);
+ }
+ }
+ end:
+ if (instances != NULL) {
+ free(instances);
+ }
+ if (tmpQuery != NULL) {
+ PdhCloseQuery_i(tmpQuery);
+ }
+ if (error) {
+ return NULL;
+ }
+ return hotspotheader;
+}
+
+/**
+ * Returns the PDH string prefix identifying the HotSpot process. Use this prefix when getting
+ * counters from the PDH process object representing HotSpot.
+ *
+ * Note: this call may take some time to complete.
+ *
+ * @param ebuf error buffer.
+ * @param elen error buffer length.
+ *
+ * @return the header to be used when retrieving PDH counters from the HotSpot process.
+ * Will return NULL if the call failed.
+ */
+static char *
+getProcessPDHHeader(void) {
+ static char *processHeader = NULL;
+
+ EnterCriticalSection(&processHeaderLock); {
+ if (processHeader == NULL) {
+ processHeader = initProcessPDHHeader();
+ }
+ } LeaveCriticalSection(&processHeaderLock);
+ return processHeader;
+}
+
+int perfInit(void);
+
+double
+perfGetCPULoad(int which)
+{
+ PDH_FMT_COUNTERVALUE cv;
+ HCOUNTER c;
+
+ if (perfInit() < 0) {
+ // warn?
+ return -1.0;
+ }
+
+ if (multiCounterCPULoad.query.query == NULL) {
+ // warn?
+ return -1.0;
+ }
+
+ if (which == -1) {
+ c = multiCounterCPULoad.counters[multiCounterCPULoad.noOfCounters - 1];
+ } else {
+ if (which < multiCounterCPULoad.noOfCounters) {
+ c = multiCounterCPULoad.counters[which];
+ } else {
+ return -1.0;
+ }
+ }
+ if (getPerformanceData(&multiCounterCPULoad.query, c, &cv, PDH_FMT_DOUBLE ) == CONFIG_SUCCESSFUL) {
+ return cv.doubleValue / 100;
+ }
+ return -1.0;
+}
+
+double
+perfGetProcessLoad(void)
+{
+ PDH_FMT_COUNTERVALUE cv;
+
+ if (perfInit() < 0) {
+ // warn?
+ return -1.0;
+ }
+
+ if (cntProcLoad.query.query == NULL) {
+ // warn?
+ return -1.0;
+ }
+
+ if (getPerformanceData(&cntProcLoad.query, cntProcLoad.counter, &cv, PDH_FMT_DOUBLE | PDH_FMT_NOCAP100) == CONFIG_SUCCESSFUL) {
+ double d = cv.doubleValue / cpuFactor;
+ d = min(1, d);
+ d = max(0, d);
+ return d;
+ }
+ return -1.0;
+}
+
+/**
+ * Helper to initialize the PDH library. Loads the library and sets up the functions.
+ * Note that once loaded, we will never unload the PDH library.
+ *
+ * @return CONFIG_SUCCESSFUL if successful, negative on failure.
+ */
+int
+perfInit(void) {
+ static HMODULE h;
+ static BOOL running, inited;
+
+ int error;
+
+ if (running) {
+ return CONFIG_SUCCESSFUL;
+ }
+
+ error = CONFIG_SUCCESSFUL;
+
+ // this is double checked locking again, but we try to bypass the worst by
+ // implicit membar at end of lock.
+ EnterCriticalSection(&initializationLock); {
+ if (!inited) {
+ char buf[64] = "";
+ SYSTEM_INFO si;
+
+ // CMH. But windows will not care about our affinity when giving
+ // us measurements. Need the real, raw num cpus.
+
+ GetSystemInfo(&si);
+ num_cpus = si.dwNumberOfProcessors;
+ // Initialize the denominator for the jvm load calculations
+ cpuFactor = num_cpus * 100;
+
+ /**
+ * Do this dynamically, so we don't fail to start on systems without pdh.
+ */
+ if ((h = LoadLibrary("pdh.dll")) == NULL) {
+ /* printf("Could not load pdh.dll (%d)", GetLastError()); */
+ error = -2;
+ } else if (get_functions(h, buf, sizeof(buf)) < 0) {
+ FreeLibrary(h);
+ h = NULL;
+ error = -2;
+ /* printf("Failed to init pdh functions: %s.\n", buf); */
+ } else {
+ if (initProcessorCounters() != 0) {
+ /* printf("Failed to init system load counters.\n"); */
+ } else if (initProcLoadCounter() != 0) {
+ /* printf("Failed to init process load counter.\n"); */
+ } else if (initProcSystemLoadCounter() != 0) {
+ /* printf("Failed to init process system load counter.\n"); */
+ } else {
+ inited = true;
+ }
+ }
+ }
+ } LeaveCriticalSection(&initializationLock);
+
+ if (inited && error == CONFIG_SUCCESSFUL) {
+ running = true;
+ }
+
+ return error;
+}
+
+JNIEXPORT jdouble JNICALL
+Java_sun_management_OperatingSystemImpl_getSystemCpuLoad
+(JNIEnv *env, jobject dummy)
+{
+ return perfGetCPULoad(-1);
+}
+
+JNIEXPORT jdouble JNICALL
+Java_sun_management_OperatingSystemImpl_getProcessCpuLoad
+(JNIEnv *env, jobject dummy)
+{
+ return perfGetProcessLoad();
+}
--- a/jdk/test/Makefile Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/Makefile Wed Jul 05 19:22:42 2017 +0200
@@ -27,6 +27,8 @@
# Makefile to run various jdk tests
#
+.DEFAULT : all
+
# Empty these to get rid of some default rules
.SUFFIXES:
.SUFFIXES: .java
@@ -55,150 +57,19 @@
WC = wc
ZIP = zip
-# Get OS name from uname
-UNAME_S := $(shell $(UNAME) -s)
+# Get OS name from uname (Cygwin inexplicably adds _NT-5.1)
+UNAME_S := $(shell $(UNAME) -s | $(CUT) -f1 -d_)
# Commands to run on paths to make mixed paths for java on windows
-GETMIXEDPATH=$(ECHO)
-
-# Location of developer shared files
-SLASH_JAVA = /java
-
-# Platform specific settings
-ifeq ($(UNAME_S), SunOS)
- OS_NAME = solaris
- OS_ARCH := $(shell $(UNAME) -p)
- OS_VERSION := $(shell $(UNAME) -r)
-endif
-ifeq ($(UNAME_S), Linux)
- OS_NAME = linux
- OS_ARCH := $(shell $(UNAME) -m)
- # Check for unknown arch, try uname -p if uname -m says unknown
- ifeq ($(OS_ARCH),unknown)
- OS_ARCH := $(shell $(UNAME) -p)
- endif
- OS_VERSION := $(shell $(UNAME) -r)
-endif
-ifeq ($(UNAME_S), Darwin)
- OS_NAME = macosx
- OS_ARCH := $(shell $(UNAME) -m)
- # Check for unknown arch, try uname -p if uname -m says unknown
- ifeq ($(OS_ARCH),unknown)
- OS_ARCH := $(shell $(UNAME) -p)
- endif
- OS_VERSION := $(shell $(UNAME) -r)
-endif
-ifeq ($(OS_NAME),)
- OS_NAME = windows
- # GNU Make or MKS overrides $(PROCESSOR_ARCHITECTURE) to always
- # return "x86". Use the first word of $(PROCESSOR_IDENTIFIER) instead.
- ifeq ($(PROCESSOR_IDENTIFIER),)
- PROC_ARCH:=$(shell $(UNAME) -m)
- else
- PROC_ARCH:=$(word 1, $(PROCESSOR_IDENTIFIER))
- endif
- OS_ARCH:=$(PROC_ARCH)
+ifeq ($(UNAME_S), CYGWIN)
+ # Location of developer shared files
SLASH_JAVA = J:
- EXESUFFIX = .exe
- # These need to be different depending on MKS or CYGWIN
- ifeq ($(findstring cygdrive,$(shell ($(CD) C:/ && $(PWD)))), )
- GETMIXEDPATH = dosname -s
- OS_VERSION := $(shell $(UNAME) -r)
- else
- GETMIXEDPATH = cygpath -m -s
- OS_VERSION := $(shell $(UNAME) -s | $(CUT) -d'-' -f2)
- endif
-endif
-
-# Only want major and minor numbers from os version
-OS_VERSION := $(shell $(ECHO) "$(OS_VERSION)" | $(CUT) -d'.' -f1,2)
-
-# Name to use for x86_64 arch (historically amd64, but should change someday)
-OS_ARCH_X64_NAME:=amd64
-#OS_ARCH_X64_NAME:=x64
-
-# Alternate arch names (in case this arch is known by a second name)
-# PROBLEM_LISTS may use either name.
-OS_ARCH2-amd64:=x64
-#OS_ARCH2-x64:=amd64
+ GETMIXEDPATH = cygpath -m
+else
+ # Location of developer shared files
+ SLASH_JAVA = /java
-# Try and use the arch names consistently
-OS_ARCH:=$(patsubst x64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
-OS_ARCH:=$(patsubst X64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
-OS_ARCH:=$(patsubst AMD64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
-OS_ARCH:=$(patsubst amd64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
-OS_ARCH:=$(patsubst x86_64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
-OS_ARCH:=$(patsubst 8664,$(OS_ARCH_X64_NAME),$(OS_ARCH))
-OS_ARCH:=$(patsubst EM64T,$(OS_ARCH_X64_NAME),$(OS_ARCH))
-OS_ARCH:=$(patsubst em64t,$(OS_ARCH_X64_NAME),$(OS_ARCH))
-OS_ARCH:=$(patsubst intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
-OS_ARCH:=$(patsubst Intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
-OS_ARCH:=$(patsubst INTEL64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
-OS_ARCH:=$(patsubst IA64,ia64,$(OS_ARCH))
-OS_ARCH:=$(patsubst X86,i586,$(OS_ARCH))
-OS_ARCH:=$(patsubst x86,i586,$(OS_ARCH))
-OS_ARCH:=$(patsubst i386,i586,$(OS_ARCH))
-OS_ARCH:=$(patsubst i486,i586,$(OS_ARCH))
-OS_ARCH:=$(patsubst i686,i586,$(OS_ARCH))
-OS_ARCH:=$(patsubst 386,i586,$(OS_ARCH))
-OS_ARCH:=$(patsubst 486,i586,$(OS_ARCH))
-OS_ARCH:=$(patsubst 586,i586,$(OS_ARCH))
-OS_ARCH:=$(patsubst 686,i586,$(OS_ARCH))
-
-# Default ARCH_DATA_MODEL settings
-ARCH_DATA_MODEL-i586 = 32
-ARCH_DATA_MODEL-$(OS_ARCH_X64_NAME) = 64
-ARCH_DATA_MODEL-ia64 = 64
-ARCH_DATA_MODEL-sparc = 32
-ARCH_DATA_MODEL-sparcv9 = 64
-
-# If ARCH_DATA_MODEL is not defined, try and pick a reasonable default
-ifndef ARCH_DATA_MODEL
- ARCH_DATA_MODEL:=$(ARCH_DATA_MODEL-$(OS_ARCH))
-endif
-ifndef ARCH_DATA_MODEL
- ARCH_DATA_MODEL=32
-endif
-
-# Platform directory name
-PLATFORM_OS = $(OS_NAME)-$(OS_ARCH)
-
-# Check ARCH_DATA_MODEL, adjust OS_ARCH accordingly on solaris
-ARCH_DATA_MODEL_ERROR= \
- ARCH_DATA_MODEL=$(ARCH_DATA_MODEL) cannot be used with $(PLATFORM_OS)
-ifeq ($(ARCH_DATA_MODEL),64)
- ifeq ($(PLATFORM_OS),solaris-i586)
- OS_ARCH=$(OS_ARCH_X64_NAME)
- endif
- ifeq ($(PLATFORM_OS),solaris-sparc)
- OS_ARCH=sparcv9
- endif
- ifeq ($(OS_ARCH),i586)
- x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
- endif
- ifeq ($(OS_ARCH),sparc)
- x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
- endif
-else
- ifeq ($(ARCH_DATA_MODEL),32)
- ifeq ($(OS_ARCH),$(OS_ARCH_X64_NAME))
- x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
- endif
- ifeq ($(OS_ARCH),ia64)
- x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
- endif
- ifeq ($(OS_ARCH),sparcv9)
- x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
- endif
- else
- x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
- endif
-endif
-
-# Alternate OS_ARCH name (defaults to OS_ARCH)
-OS_ARCH2:=$(OS_ARCH2-$(OS_ARCH))
-ifeq ($(OS_ARCH2),)
- OS_ARCH2:=$(OS_ARCH)
+ GETMIXEDPATH=$(ECHO)
endif
# Root of this test area (important to use full paths in some places)
@@ -206,17 +77,18 @@
# Root of all test results
ifdef ALT_OUTPUTDIR
- ABS_OUTPUTDIR = $(ALT_OUTPUTDIR)
+ ABS_OUTPUTDIR = $(shell $(CD) $(ALT_OUTPUTDIR) && $(PWD))
else
- ABS_OUTPUTDIR = $(TEST_ROOT)/../build/$(PLATFORM_OS)
+ ABS_OUTPUTDIR = $(shell $(CD) $(TEST_ROOT)/.. && $(PWD))
endif
+
ABS_PLATFORM_BUILD_ROOT = $(ABS_OUTPUTDIR)
ABS_TEST_OUTPUT_DIR := $(ABS_PLATFORM_BUILD_ROOT)/testoutput/$(UNIQUE_DIR)
# Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test)
ifndef PRODUCT_HOME
# Try to use j2sdk-image if it exists
- ABS_JDK_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/j2sdk-image
+ ABS_JDK_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/images/j2sdk-image
PRODUCT_HOME := \
$(shell \
if [ -d $(ABS_JDK_IMAGE) ] ; then \
@@ -240,30 +112,11 @@
JAVA_VM_ARGS = $(JPRT_PRODUCT_VM_ARGS)
endif
-# Check JAVA_ARGS arguments based on ARCH_DATA_MODEL etc.
-ifeq ($(OS_NAME),solaris)
- D64_ERROR_MESSAGE=Mismatch between ARCH_DATA_MODEL=$(ARCH_DATA_MODEL) and use of -d64 in JAVA_ARGS=$(JAVA_ARGS)
- ifeq ($(ARCH_DATA_MODEL),32)
- ifneq ($(findstring -d64,$(JAVA_ARGS)),)
- x:=$(warning "WARNING: $(D64_ERROR_MESSAGE)")
- endif
- endif
- ifeq ($(ARCH_DATA_MODEL),64)
- ifeq ($(findstring -d64,$(JAVA_ARGS)),)
- x:=$(warning "WARNING: $(D64_ERROR_MESSAGE)")
- endif
- endif
-endif
-
-# Macro to run make and set the shared library permissions
-define SharedLibraryPermissions
-$(MAKE) SHARED_LIBRARY_DIR=$1 UNIQUE_DIR=$@ shared_library_permissions
-endef
-
# Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results)
-ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip
ifdef JPRT_ARCHIVE_BUNDLE
ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE)
+else
+ ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip
endif
# How to create the test bundle (pass or fail, we want to create this)
@@ -272,13 +125,15 @@
&& $(CD) $(ABS_TEST_OUTPUT_DIR) \
&& $(CHMOD) -R a+r . \
&& $(ZIP) -q -r $(ARCHIVE_BUNDLE) . )
-SUMMARY_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport/text/summary.txt
+
+# important results files
+SUMMARY_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport/text/summary.txt")
STATS_TXT_NAME = Stats.txt
-STATS_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/$(STATS_TXT_NAME)
-RUNLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/runlist.txt
-PASSLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/passlist.txt
-FAILLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/faillist.txt
-EXITCODE = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/exitcode.txt
+STATS_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/$(STATS_TXT_NAME)")
+RUNLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/runlist.txt")
+PASSLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/passlist.txt")
+FAILLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/faillist.txt")
+EXITCODE = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/exitcode.txt")
TESTEXIT = \
if [ ! -s $(EXITCODE) ] ; then \
@@ -316,8 +171,8 @@
runc="`$(CAT) $(RUNLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
passc="`$(CAT) $(PASSLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
failc="`$(CAT) $(FAILLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
- exclc="`$(CAT) $(EXCLUDELIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
- $(ECHO) "TEST STATS: name=$(UNIQUE_DIR) run=$${runc} pass=$${passc} fail=$${failc} excluded=$${exclc}" \
+ exclc="FIXME CODETOOLS-7900176"; \
+ $(ECHO) "TEST STATS: name=$(UNIQUE_DIR) run=$${runc} pass=$${passc} fail=$${failc}" \
>> $(STATS_TXT); \
else \
$(ECHO) "Missing file: $${_summary}" >> $(STATS_TXT); \
@@ -336,9 +191,24 @@
@$(ECHO) "Testing completed successfully"
# Prep for output
+# Change execute permissions on shared library files.
+# Files in repositories should never have execute permissions, but
+# there are some tests that have pre-built shared libraries, and these
+# windows dll files must have execute permission. Adding execute
+# permission may happen automatically on windows when using certain
+# versions of mercurial but it cannot be guaranteed. And blindly
+# adding execute permission might be seen as a mercurial 'change', so
+# we avoid adding execute permission to repository files. But testing
+# from a plain source tree needs the chmod a+rx. Applying the chmod to
+# all shared libraries not just dll files. And with CYGWIN and sshd
+# service, you may need CYGWIN=ntsec for this to work.
prep:
@$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR)
@$(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)`
+ @if [ ! -d $(TEST_ROOT)/../.hg ] ; then \
+ $(FIND) $(TEST_ROOT) \( -name \*.dll -o -name \*.DLL -o -name \*.so \) \
+ -exec $(CHMOD) a+rx {} \; ; \
+ fi
# Cleanup
clean:
@@ -357,50 +227,21 @@
endif
endif
-# Expect JPRT to set TESTDIRS to the jtreg test dirs
-ifndef TESTDIRS
- TESTDIRS = demo
-endif
-
-# Some tests annoy me and fail frequently
-PROBLEM_LIST=ProblemList.txt
-PROBLEM_LISTS=$(PROBLEM_LIST) $(wildcard closed/$(PROBLEM_LIST))
-EXCLUDELIST=$(ABS_TEST_OUTPUT_DIR)/excludelist.txt
+# Problematic tests to be excluded
+PROBLEM_LISTS=$(call MixedDirs,$(wildcard ProblemList.txt closed/ProblemList.txt))
# Create exclude list for this platform and arch
ifdef NO_EXCLUDES
-$(EXCLUDELIST): $(PROBLEM_LISTS) $(TEST_DEPENDENCIES)
- @$(ECHO) "NOTHING_EXCLUDED" > $@
+ JTREG_EXCLUSIONS =
else
-$(EXCLUDELIST): $(PROBLEM_LISTS) $(TEST_DEPENDENCIES)
- @$(RM) $@ $@.temp1 $@.temp2
- @(($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-all' ) ;\
- ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(PLATFORM_OS)' ) ;\
- ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_ARCH2)' ) ;\
- ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_VERSION)') ;\
- ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-$(OS_ARCH)' ) ;\
- ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-$(OS_ARCH2)' ) ;\
- ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-all' ) ;\
- ($(ECHO) "#") ;\
- ) | $(SED) -e 's@^[\ ]*@@' \
- | $(EGREP) -v '^#' > $@.temp1
- @for tdir in $(TESTDIRS) SOLARIS_10_SH_BUG_NO_EMPTY_FORS ; do \
- ( ( $(CAT) $@.temp1 | $(EGREP) "^$${tdir}" ) ; $(ECHO) "#" ) >> $@.temp2 ; \
- done
- @$(ECHO) "# at least one line" >> $@.temp2
- @( $(EGREP) -v '^#' $@.temp2 ; true ) > $@
- @$(ECHO) "Excluding list contains `$(EXPAND) $@ | $(WC) -l` items"
+ JTREG_EXCLUSIONS = $(PROBLEM_LISTS:%=-exclude:%)
endif
-# Select list of directories that exist
-define TestDirs
-$(foreach i,$1,$(wildcard ${i})) $(foreach i,$1,$(wildcard closed/${i}))
+# convert list of directories to dos paths
+define MixedDirs
+$(foreach i,$1,$(shell $(GETMIXEDPATH) "${i}"))
endef
-# Running batches of tests with or without agentvm
-define RunBatch
-$(ECHO) "Running tests: $?"
-$(MAKE) TEST_DEPENDENCIES="$?" TESTDIRS="$?" UNIQUE_DIR=$@ jtreg_tests
-endef
+
define SummaryInfo
$(ECHO) "########################################################"
$(CAT) $(?:%=$(ABS_TEST_OUTPUT_DIR)/%/$(STATS_TXT_NAME))
@@ -409,178 +250,11 @@
# ------------------------------------------------------------------
-# Batches of tests (somewhat arbitrary assigments to jdk_* targets)
-# NOTE: These *do not* run the same tests as make/jprt.properties
-JDK_DEFAULT_TARGETS =
-JDK_ALL_TARGETS =
-
-JDK_ALL_TARGETS += jdk_awt
-jdk_awt: $(call TestDirs, com/sun/awt java/awt sun/awt \
- javax/imageio javax/print sun/pisces)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_beans1
-JDK_DEFAULT_TARGETS += jdk_beans1
-jdk_beans1: $(call TestDirs, \
- java/beans/beancontext java/beans/PropertyChangeSupport \
- java/beans/Introspector java/beans/Performance \
- java/beans/VetoableChangeSupport java/beans/Statement)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_beans2
-jdk_beans2: $(call TestDirs, \
- java/beans/Beans java/beans/EventHandler java/beans/XMLDecoder \
- java/beans/PropertyEditor)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_beans3
-jdk_beans3: $(call TestDirs, java/beans/XMLEncoder)
- $(call RunBatch)
-
-# All beans tests
-jdk_beans: jdk_beans1 jdk_beans2 jdk_beans3
- @$(SummaryInfo)
-
-JDK_ALL_TARGETS += jdk_io
-JDK_DEFAULT_TARGETS += jdk_io
-jdk_io: $(call TestDirs, java/io)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_lang
-JDK_DEFAULT_TARGETS += jdk_lang
-jdk_lang: $(call TestDirs, java/lang sun/invoke sun/misc sun/reflect vm)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_jmx
-jdk_jmx: $(call TestDirs, javax/management com/sun/jmx)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_management
-jdk_management: $(call TestDirs, com/sun/management sun/management)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_math
-JDK_DEFAULT_TARGETS += jdk_math
-jdk_math: $(call TestDirs, java/math)
- $(call RunBatch)
-
-JDK_DEFAULT_TARGETS += jdk_time
-jdk_time: $(call TestDirs, java/time)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_other
-JDK_DEFAULT_TARGETS += jdk_other
-jdk_other: $(call TestDirs, \
- demo/jvmti demo/zipfs sample \
- javax/naming com/sun/jndi \
- javax/script \
- java/sql javax/sql \
- javax/smartcardio \
- javax/xml/jaxp \
- javax/xml/soap \
- javax/xml/ws com/sun/internal/ws com/sun/org/glassfish \
- jdk/asm \
- jdk/lambda \
- com/sun/org/apache/xerces \
- com/sun/corba \
- com/sun/tracing \
- sun/usagetracker \
- misc)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_net
-JDK_DEFAULT_TARGETS += jdk_net
-jdk_net: $(call TestDirs, com/sun/net java/net sun/net com/oracle/net)
- $(call RunBatch)
-
-jdk_nio: $(call TestDirs, java/nio sun/nio com/oracle/nio)
- $(call SharedLibraryPermissions,java/nio/channels)
- $(call RunBatch)
-
-jdk_sctp: $(call TestDirs, com/sun/nio/sctp)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_rmi
-jdk_rmi: $(call TestDirs, java/rmi sun/rmi javax/rmi/ssl)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_security1
-JDK_DEFAULT_TARGETS += jdk_security1
-jdk_security1: $(call TestDirs, java/security)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_security2
-jdk_security2: $(call TestDirs, javax/crypto javax/xml/crypto com/sun/crypto)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_security3
-jdk_security3: $(call TestDirs, com/sun/security lib/security javax/security \
- sun/security com/sun/org/apache/xml/internal/security \
- com/oracle/security)
- $(call SharedLibraryPermissions,sun/security)
- $(call RunBatch)
-
-# All security tests
-jdk_security: jdk_security1 jdk_security2 jdk_security3
- @$(SummaryInfo)
-
-JDK_ALL_TARGETS += jdk_sound
-jdk_sound: $(call TestDirs, javax/sound)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_swing
-jdk_swing: $(call TestDirs, javax/swing sun/java2d \
- demo/jfc com/sun/java/swing)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_text
-JDK_DEFAULT_TARGETS += jdk_text
-jdk_text: $(call TestDirs, java/text sun/text)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_jdi
-jdk_jdi: $(call TestDirs, com/sun/jdi)
- $(call RunBatch)
-
-JDK_ALL_TARGETS += jdk_tools
-jdk_tools: $(call TestDirs, com/sun/tools sun/jvmstat sun/tools tools)
- $(call SharedLibraryPermissions,tools/launcher)
- $(call RunBatch)
-
-ifdef OPENJDK
-jdk_jfr:
-else
-JDK_ALL_TARGETS += jdk_jfr
-jdk_jfr: $(call TestDirs, com/oracle/jfr)
- $(call RunBatch)
-endif
-
-JDK_ALL_TARGETS += jdk_util
-JDK_DEFAULT_TARGETS += jdk_util
-jdk_util: $(call TestDirs, java/util sun/util)
- $(call RunBatch)
-
-# ------------------------------------------------------------------
-
-# Run default tests
-# note that this *does not* have the same meaning as jprt.properties :: jprt.make.rule.default.test.targets
-jdk_default: $(JDK_DEFAULT_TARGETS)
- @$(SummaryInfo)
-
-# Run core tests
-# please keep this in sync with jdk/make/jprt.properties :: jprt.make.rule.core.test.targets
-jdk_core: jdk_lang jdk_math jdk_util jdk_io jdk_net jdk_nio \
- jdk_security1 jdk_security2 jdk_security3 jdk_rmi \
- jdk_management jdk_jmx jdk_text jdk_tools jdk_jfr jdk_other
- @$(SummaryInfo)
-
-# Run all tests
-# note that this *does not* have the same meaning as jprt.properties :: jprt.make.rule.all.test.targets
-jdk_all: $(JDK_ALL_TARGETS)
- @$(SummaryInfo)
-
-# These are all phony targets
-PHONY_LIST += $(JDK_ALL_TARGETS) jdk_default jdk_core jdk_all
+jdk_%:
+ $(ECHO) "Running tests: $@"
+ for each in $@; do \
+ $(MAKE) -j 1 TEST_SELECTION=":$$each" UNIQUE_DIR=$$each jtreg_tests; \
+ done
# ------------------------------------------------------------------
@@ -625,44 +299,23 @@
$(JTREG): $(JT_HOME)
# Run jtreg
-jtreg_tests: prep $(PRODUCT_HOME) $(JTREG) $(EXCLUDELIST)
- @$(EXPAND) $(EXCLUDELIST) \
- | $(CUT) -d' ' -f1 \
- | $(SED) -e 's@^@Excluding: @'
+jtreg_tests: prep $(PRODUCT_HOME) $(JTREG)
( \
( JT_HOME=$(shell $(GETMIXEDPATH) "$(JT_HOME)"); \
export JT_HOME; \
$(shell $(GETMIXEDPATH) "$(JTREG)") \
$(JTREG_BASIC_OPTIONS) \
- -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport \
- -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork \
+ -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport") \
+ -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTwork") \
-jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \
- -exclude:$(shell $(GETMIXEDPATH) "$(EXCLUDELIST)") \
+ $(JTREG_EXCLUSIONS) \
$(JTREG_TEST_OPTIONS) \
- $(TESTDIRS) \
- ) ; $(BUNDLE_UP_AND_EXIT) \
+ $(TEST_SELECTION) \
+ ) ; \
+ $(BUNDLE_UP_AND_EXIT) \
) 2>&1 | $(TEE) $(ABS_TEST_OUTPUT_DIR)/output.txt ; $(TESTEXIT)
-# Rule that may change execute permissions on shared library files.
-# Files in repositories should never have execute permissions, but there
-# are some tests that have pre-built shared libraries, and these windows
-# dll files must have execute permission. Adding execute permission
-# may happen automatically on windows when using certain versions of mercurial
-# but it cannot be guaranteed. And blindly adding execute permission might
-# be seen as a mercurial 'change', so we avoid adding execute permission to
-# repository files. But testing from a plain source tree needs the chmod a+rx.
-# Used on select directories and applying the chmod to all shared libraries
-# not just dll files. On windows, this may not work with MKS if the files
-# were installed with CYGWIN unzip or untar (MKS chmod may not do anything).
-# And with CYGWIN and sshd service, you may need CYGWIN=ntsec for this to work.
-#
-shared_library_permissions: $(SHARED_LIBRARY_DIR)
- if [ ! -d $(TEST_ROOT)/../.hg ] ; then \
- $(FIND) $< \( -name \*.dll -o -name \*.DLL -o -name \*.so \) \
- -exec $(CHMOD) a+rx {} \; ; \
- fi
-
-PHONY_LIST += jtreg_tests shared_library_permissions
+PHONY_LIST += jtreg_tests
################################################################
--- a/jdk/test/ProblemList.txt Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/ProblemList.txt Wed Jul 05 19:22:42 2017 +0200
@@ -5,9 +5,7 @@
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
+# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
@@ -128,15 +126,6 @@
# 7067973
java/lang/management/MemoryMXBean/CollectionUsageThreshold.java generic-all
-# 7196801
-java/lang/management/MemoryMXBean/LowMemoryTest2.sh generic-all
-
-# 8021230
-java/lang/ThreadLocal/ThreadLocalSupplierTest.java generic-all
-
-# 8026502
-java/lang/invoke/MethodHandleConstants.java generic-all
-
############################################################################
# jdk_management
@@ -144,13 +133,13 @@
# 8010897
sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java macosx-all
+# 8028150
+sun/management/jmxremote/bootstrap/RmiSslBootstrapTest.sh windows-all
+
############################################################################
# jdk_jmx
-# 6959636
-javax/management/loading/LibraryLoader/LibraryLoaderTest.java windows-all
-
############################################################################
# jdk_math
@@ -165,13 +154,16 @@
# 7027502
demo/jvmti/hprof/MonitorTest.java generic-all
-# 8024423 - JVMTI: GetLoadedClasses doesn't enumerate anonymous classes
+# 8024423 - JVMTI: GetLoadedClasses doesn't enumerate anonymous classes
demo/jvmti/hprof/HeapAllTest.java generic-all
demo/jvmti/hprof/HeapBinaryFormatTest.java generic-all
demo/jvmti/hprof/HeapDumpTest.java generic-all
demo/jvmti/hprof/OptionsTest.java generic-all
demo/jvmti/hprof/StackMapTableTest.java generic-all
+# 8027973
+javax/xml/jaxp/transform/jdk8004476/XSLTExFuncTest.java windows-all
+
############################################################################
# jdk_net
@@ -203,9 +195,6 @@
# 7143960
java/net/DatagramSocket/SendDatagramToBadAddress.java macosx-all
-# 8014719
-sun/net/www/http/HttpClient/ProxyTest.java generic-all
-
############################################################################
# jdk_nio
@@ -213,9 +202,6 @@
# 6963118
java/nio/channels/Selector/Wakeup.java windows-all
-# 7052549
-java/nio/channels/FileChannel/ReleaseOnCloseDeadlock.java windows-all
-
# 7133499, 7133497
java/nio/channels/AsyncCloseAndInterrupt.java macosx-all
java/nio/channels/AsynchronousFileChannel/Lock.java macosx-all
@@ -227,6 +213,10 @@
# 7132677
java/nio/channels/Selector/OutOfBand.java macosx-all
+# 7158947, Solaris 11
+java/nio/file/WatchService/Basic.java solaris-all
+java/nio/file/WatchService/LotsOfEvents.java solaris-all
+
############################################################################
# jdk_rmi
@@ -262,10 +252,6 @@
sun/security/pkcs11/ec/ReadPKCS12.java solaris-all
sun/security/pkcs11/sslecc/ClientJSSEServerJSSE.java solaris-all
-# 8009438
-sun/security/pkcs11/Secmod/AddPrivateKey.java linux-all
-sun/security/pkcs11/Secmod/TrustAnchors.java linux-all
-
# 7041639, Solaris DSA keypair generation bug
java/security/KeyPairGenerator/SolarisShortDSA.java solaris-all
sun/security/tools/keytool/standard.sh solaris-all
@@ -335,7 +321,4 @@
# Filed 6772009
java/util/concurrent/locks/ReentrantLock/CancelledLockLoops.java generic-all
-# 8026772: test/sun/util/resources/TimeZone/Bug6317929.java failing
-sun/util/resources/TimeZone/Bug6317929.java generic-all
-
############################################################################
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/com/sun/awt/SecurityWarning/CustomSecurityManager.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,11 @@
+import sun.security.util.SecurityConstants;
+import java.security.Permission;
+
+public class CustomSecurityManager extends SecurityManager {
+ @Override
+ public void checkPermission(Permission perm) {
+ if (perm.implies(SecurityConstants.AWT.TOPLEVEL_WINDOW_PERMISSION)) {
+ throw new SecurityException();
+ }
+ }
+}
--- a/jdk/test/com/sun/awt/SecurityWarning/GetSizeShouldNotReturnZero.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/awt/SecurityWarning/GetSizeShouldNotReturnZero.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -27,8 +27,9 @@
@summary The size returned by SecurityWarning.getSize() should not be zero
@author anthony.petrov@sun.com: area=awt.toplevel
@library ../../../../java/awt/regtesthelpers
- @build Util
- @run main GetSizeShouldNotReturnZero
+ @build Util CustomSecurityManager CopyClassFile
+ @run main CopyClassFile CustomSecurityManager bootcp/
+ @run main/othervm/secure=CustomSecurityManager -Xbootclasspath/a:bootcp GetSizeShouldNotReturnZero
*/
/**
@@ -37,11 +38,10 @@
* summary: The size returned by SecurityWarning.getSize() should not be zero
*/
+import com.sun.awt.SecurityWarning;
+import test.java.awt.regtesthelpers.Util;
+
import java.awt.*;
-import java.awt.event.*;
-import java.security.Permission;
-import test.java.awt.regtesthelpers.Util;
-import com.sun.awt.SecurityWarning;
public class GetSizeShouldNotReturnZero
{
@@ -56,21 +56,6 @@
Sysout.createDialog( );
Sysout.printInstructions( instructions );
-
- // Install the security manager so that all subsequently created
- // windows display the security warning.
- System.setSecurityManager(new SecurityManager() {
-
- @Override
- public void checkPermission(Permission perm) {
- }
-
- @Override
- public boolean checkTopLevelWindow(Object window) {
- return false;
- }
- });
-
Frame f = new Frame();
f.setSize(100, 100);
f.setVisible(true);
@@ -87,7 +72,6 @@
}//End init()
-
/*****************************************************
* Standard Test Machinery Section
* DO NOT modify anything in this section -- it's a
--- a/jdk/test/com/sun/crypto/provider/KeyFactory/TestProviderLeak.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/crypto/provider/KeyFactory/TestProviderLeak.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 6578538
+ * @bug 6578538 8027624
* @summary com.sun.crypto.provider.SunJCE instance leak using KRB5 and
* LoginContext
* @author Brad Wetmore
@@ -89,10 +89,6 @@
}
public static void main(String [] args) throws Exception {
- // Eat up memory
- Deque<byte []> dummyData = eatupMemory();
- assert (dummyData != null);
-
// Prepare the test
final SecretKeyFactory skf =
SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1", "SunJCE");
@@ -107,6 +103,10 @@
}
};
+ // Eat up memory
+ Deque<byte []> dummyData = eatupMemory();
+ assert (dummyData != null);
+
// Start testing iteration
try {
for (int i = 0; i <= 1000; i++) {
--- a/jdk/test/com/sun/jdi/BadHandshakeTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jdi/BadHandshakeTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -24,16 +24,12 @@
/* @test
* @bug 6306165 6432567
* @summary Check that a bad handshake doesn't cause a debuggee to abort
+ * @library /lib/testlibrary
*
* @build VMConnection BadHandshakeTest Exit0
* @run main BadHandshakeTest
*
*/
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.File;
-import java.io.BufferedInputStream;
-import java.net.ServerSocket;
import java.net.Socket;
import java.net.InetAddress;
import com.sun.jdi.Bootstrap;
@@ -44,50 +40,13 @@
import java.util.Map;
import java.util.List;
import java.util.Iterator;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import jdk.testlibrary.Utils;
+import jdk.testlibrary.ProcessTools;
public class BadHandshakeTest {
-
- static volatile boolean ready = false;
-
- /*
- * Helper class to redirect process output/error
- */
- static class IOHandler implements Runnable {
- InputStream in;
-
- IOHandler(InputStream in) {
- this.in = in;
- }
-
- static void handle(InputStream in) {
- IOHandler handler = new IOHandler(in);
- Thread thr = new Thread(handler);
- thr.setDaemon(true);
- thr.start();
- }
-
- public void run() {
- try {
- byte b[] = new byte[100];
- for (;;) {
- int n = in.read(b, 0, 100);
- // The first thing that will get read is
- // Listening for transport dt_socket at address: xxxxx
- // which shows the debuggee is ready to accept connections.
- ready = true;
- if (n < 0) {
- break;
- }
- String s = new String(b, 0, n, "UTF-8");
- System.out.print(s);
- }
- } catch (IOException ioe) {
- ioe.printStackTrace();
- }
- }
-
- }
-
/*
* Find a connector by name
*/
@@ -106,22 +65,31 @@
/*
* Launch a server debuggee with the given address
*/
- private static Process launch(String address, String class_name) throws IOException {
- String exe = System.getProperty("java.home")
- + File.separator + "bin" + File.separator + "java";
- String cmd = exe + " " + VMConnection.getDebuggeeVMOptions() +
- " -agentlib:jdwp=transport=dt_socket" +
- ",server=y" + ",suspend=y" + ",address=" + address +
- " " + class_name;
+ private static Process launch(String address, String class_name) throws Exception {
+ String[] args = VMConnection.insertDebuggeeVMOptions(new String[] {
+ "-agentlib:jdwp=transport=dt_socket" +
+ ",server=y" + ",suspend=y" + ",address=" + address,
+ class_name
+ });
+
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(args);
- System.out.println("Starting: " + cmd);
-
- Process p = Runtime.getRuntime().exec(cmd);
+ final AtomicBoolean success = new AtomicBoolean();
+ Process p = ProcessTools.startProcess(
+ class_name,
+ pb,
+ (line) -> {
+ // The first thing that will get read is
+ // Listening for transport dt_socket at address: xxxxx
+ // which shows the debuggee is ready to accept connections.
+ success.set(line.contains("Listening for transport dt_socket at address:"));
+ return true;
+ },
+ 1500,
+ TimeUnit.MILLISECONDS
+ );
- IOHandler.handle(p.getInputStream());
- IOHandler.handle(p.getErrorStream());
-
- return p;
+ return success.get() ? p : null;
}
/*
@@ -131,23 +99,14 @@
* - verify we saw no error
*/
public static void main(String args[]) throws Exception {
- // find a free port
- ServerSocket ss = new ServerSocket(0);
- int port = ss.getLocalPort();
- ss.close();
+ int port = Utils.getFreePort();
String address = String.valueOf(port);
// launch the server debuggee
Process process = launch(address, "Exit0");
-
- // wait for the debugge to be ready
- while (!ready) {
- try {
- Thread.sleep(1000);
- } catch(Exception ee) {
- throw ee;
- }
+ if (process == null) {
+ throw new RuntimeException("Unable to start debugee");
}
// Connect to the debuggee and handshake with garbage
--- a/jdk/test/com/sun/jdi/BreakpointWithFullGC.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jdi/BreakpointWithFullGC.sh Wed Jul 05 19:22:42 2017 +0200
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2009, 2013 Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -62,6 +62,7 @@
System.out.println("top of loop"); // @1 breakpoint
init(1000000);
objList.clear();
+ System.gc();
System.out.println("bottom of loop"); // @1 breakpoint
}
System.out.println("end of test"); // @1 breakpoint
--- a/jdk/test/com/sun/jdi/JdbMethodExitTest.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jdi/JdbMethodExitTest.sh Wed Jul 05 19:22:42 2017 +0200
@@ -156,7 +156,7 @@
// a resume.
$classname xx = new $classname();
-
+ System.out.println("threadid="+Thread.currentThread().getId());
bkpt();
// test all possible return types
@@ -197,6 +197,8 @@
# test all possible return types
runToBkpt @1
+ debuggeeMatchRegexp "s/threadid=\(.*\)/\1/g"
+ threadid=$?
cmd untrace
cmd trace methods
@@ -226,7 +228,7 @@
# trace exit of methods with all the return values
# (but just check a couple of them)
- cmd trace go exits
+ cmd trace go method exits $threadid
cmd cont
jdbFailIfNotPresent "instance of JdbMethodExitTest"
jdbFailIfNotPresent "return value = 8"
@@ -235,7 +237,7 @@
cmd step up
- cmd trace methods
+ cmd trace methods $threadid
cmd cont
jdbFailIfNotPresent "Method entered:"
cmd cont
@@ -243,7 +245,9 @@
cmd step up
- cmd trace go methods
+ cmd trace go methods $threadid
+ cmd cont
+ cmd cont
cmd cont
jdbFailIfNotPresent "Method entered: \"thread=main\", JdbMethodExitTest.traceMethods1"
jdbFailIfNotPresent 'Method exited: .* JdbMethodExitTest.traceMethods1'
@@ -251,14 +255,14 @@
cmd step up
- cmd trace method exits
+ cmd trace method exits $threadid
cmd cont
jdbFailIfNotPresent "Method exited: return value = \"traceExits\""
cmd untrace
cmd step up
- cmd trace go method exits
+ cmd trace go method exits $threadid
cmd cont
jdbFailIfNotPresent 'Method exited: .* JdbMethodExitTest.traceExits1'
cmd untrace
@@ -266,7 +270,7 @@
cmd step # step into traceExit()
- cmd trace method exit
+ cmd trace method exit $threadid
cmd cont
jdbFailIfNotPresent "Method exited: return value = \"traceExit\""
cmd untrace
@@ -275,7 +279,7 @@
cmd step
cmd step # skip over setting return value in caller :-(
- cmd trace go method exit
+ cmd trace go method exit $threadid
cmd cont
jdbFailIfNotPresent 'Method exited: .*JdbMethodExitTest.traceExit1'
cmd quit
--- a/jdk/test/com/sun/jdi/ShellScaffold.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jdi/ShellScaffold.sh Wed Jul 05 19:22:42 2017 +0200
@@ -1004,6 +1004,50 @@
return $stat
}
+# $1 is the filename, $2 is the regexp to match and return,
+# $3 is the number of lines to search (from the end)
+matchRegexp()
+{
+ if [ -z "$3" ] ; then
+ theCmd=cat
+ else
+ theCmd="tail -$3"
+ fi
+
+ case "$2" in
+ *\>*)
+ # Target string contains a '>' so we better not ignore it
+ res=`$theCmd $1 | sed -e "$2"`
+ ;;
+ *)
+ # Target string does not contain a '>'.
+ # NOTE: if $1 does not end with a new line, piping it to sed
+ # doesn't include the chars on the last line. Detect this
+ # case, and add a new line.
+ theFile="$1"
+ if [ `tail -1 "$theFile" | wc -l | sed -e 's@ @@g'` = 0 ] ; then
+ # The target file doesn't end with a new line so we have
+ # add one to a copy of the target file so the sed command
+ # below can filter that last line.
+ cp "$theFile" "$theFile.tmp"
+ theFile="$theFile.tmp"
+ echo >> "$theFile"
+ fi
+
+ # See bug 6220903. Sometimes the jdb prompt chars ('> ') can
+ # get interleaved in the target file which can keep us from
+ # matching the target string.
+ res=`$theCmd "$theFile" | sed -e 's@> @@g' -e 's@>@@g' \
+ | sed -e "$2"`
+ if [ "$theFile" != "$1" ]; then
+ # remove the copy of the target file
+ rm -f "$theFile"
+ fi
+ unset theFile
+ esac
+ return $res
+}
+
# $1 is the filename, $2 is the string to look for,
# $3 is the number of lines to search (from the end)
failIfPresent()
@@ -1058,6 +1102,14 @@
failIfPresent $debuggeeOutFile "$1" $2
}
+# match and return the output from the regexp $1 in the debuggee output
+# $2 is the number of lines to search (from the end)
+debuggeeMatchRegexp()
+{
+ matchRegexp $debuggeeOutFile "$1" $2
+}
+
+
# This should really be named 'done' instead of pass.
pass()
{
--- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/Client.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/Client.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,25 @@
+/*
+ * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
import java.util.Collections;
import java.util.HashSet;
--- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/ConfigKey.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/ConfigKey.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
public enum ConfigKey {
CONSTANT3, CONSTANT2;
}
\ No newline at end of file
--- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/TestNotification.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Client/TestNotification.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,11 +1,28 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
import javax.management.Notification;
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
/**
*
* @author Jaroslav Bachorik <jaroslav.bachorik at oracle.com>
--- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/ConfigKey.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/ConfigKey.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
public enum ConfigKey {
CONSTANT1, CONSTANT2;
}
\ No newline at end of file
--- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/Server.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/Server.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
import java.io.File;
import java.lang.management.ManagementFactory;
import java.net.BindException;
--- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/Ste.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/Ste.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,25 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
import javax.management.NotificationBroadcasterSupport;
--- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/SteMBean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/SteMBean.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
public interface SteMBean {
public void foo();
}
\ No newline at end of file
--- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/TestNotification.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/Server/TestNotification.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,11 +1,28 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
import javax.management.Notification;
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
/**
*
* @author Jaroslav Bachorik <jaroslav.bachorik at oracle.com>
--- a/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/TestSerializationMismatch.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jmx/remote/NotificationMarshalVersions/TestSerializationMismatch.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,25 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
import java.io.File;
import java.lang.reflect.Method;
--- a/jdk/test/com/sun/jndi/cosnaming/CNNameParser.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jndi/cosnaming/CNNameParser.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/* @test
* @bug 4238914
* @summary Tests that JNDI/COS naming parser supports the syntax
--- a/jdk/test/com/sun/jndi/cosnaming/IiopUrlIPv6.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/jndi/cosnaming/IiopUrlIPv6.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/* @test
* @bug 5042453
* @summary Ipv6 address throws Non-numeric port number error
--- a/jdk/test/com/sun/net/httpserver/bugs/B6433018.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/com/sun/net/httpserver/bugs/B6433018.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2013 Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,20 +29,19 @@
import com.sun.net.httpserver.*;
-import java.util.*;
import java.util.concurrent.*;
import java.io.*;
import java.net.*;
public class B6433018 {
- static String CRLF = "\r\n";
+ static final String CRLF = "\r\n";
/* invalid HTTP POST with extra CRLF at end */
/* This checks that the server is able to handle it
* and recognise the second request */
- static String cmd =
+ static final String cmd =
"POST /test/item HTTP/1.1"+CRLF+
"Keep-Alive: 300"+CRLF+
"Proxy-Connection: keep-alive"+CRLF+
@@ -61,45 +60,47 @@
"Pragma: no-cache"+CRLF+
"Cache-Control: no-cache"+CRLF+CRLF;
- public static void main (String[] args) throws Exception {
- Handler handler = new Handler();
- InetSocketAddress addr = new InetSocketAddress (0);
- HttpServer server = HttpServer.create (addr, 0);
- HttpContext ctx = server.createContext ("/test", handler);
-
- server.start ();
-
- Socket s = new Socket ("localhost", server.getAddress().getPort());
+ public static void main(String[] args) throws Exception {
+ CountDownLatch finished = new CountDownLatch(2);
+ Handler handler = new Handler(finished);
+ InetSocketAddress addr = new InetSocketAddress(0);
+ HttpServer server = HttpServer.create(addr, 0);
+ HttpContext ctx = server.createContext("/test", handler);
- try {
- OutputStream os = s.getOutputStream();
- os.write (cmd.getBytes());
- Thread.sleep (3000);
- s.close();
- } catch (IOException e) { }
- server.stop(2);
- if (requests != 2) {
- throw new RuntimeException ("did not receive the 2 requests");
+ server.start();
+ int port = server.getAddress().getPort();
+ try (Socket s = new Socket("localhost", port);
+ OutputStream os = s.getOutputStream()) {
+ os.write(cmd.getBytes());
+ finished.await(30, TimeUnit.SECONDS);
+ } finally {
+ server.stop(2);
}
- System.out.println ("OK");
+
+ if (finished.getCount() != 0)
+ throw new RuntimeException("did not receive the 2 requests");
+
+ System.out.println("OK");
}
- public static boolean error = false;
- static int requests = 0;
+ static class Handler implements HttpHandler {
+ private final CountDownLatch finished;
+
+ Handler(CountDownLatch finished) {
+ this.finished = finished;
+ }
- static class Handler implements HttpHandler {
- int invocation = 1;
- public void handle (HttpExchange t)
- throws IOException
- {
- InputStream is = t.getRequestBody();
- Headers map = t.getRequestHeaders();
- Headers rmap = t.getResponseHeaders();
- while (is.read () != -1) ;
- is.close();
- t.sendResponseHeaders (200, -1);
+ @Override
+ public void handle(HttpExchange t) throws IOException {
+ try (InputStream is = t.getRequestBody()) {
+ Headers map = t.getRequestHeaders();
+ Headers rmap = t.getResponseHeaders();
+ while (is.read() != -1);
+ }
+ t.sendResponseHeaders(200, -1);
t.close();
- requests ++;
+ finished.countDown();
}
}
}
+
--- a/jdk/test/demo/zipfs/ZipFSTester.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/demo/zipfs/ZipFSTester.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
--- a/jdk/test/java/awt/AlphaComposite/TestAlphaCompositeForNaN.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/AlphaComposite/TestAlphaCompositeForNaN.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
* @test
* @bug 6918065
--- a/jdk/test/java/awt/Choice/ChoiceKeyEventReaction/ChoiceKeyEventReaction.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Choice/ChoiceKeyEventReaction/ChoiceKeyEventReaction.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Choice/NonFocusablePopupMenuTest/NonFocusablePopupMenuTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Choice/NonFocusablePopupMenuTest/NonFocusablePopupMenuTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Component/F10TopToplevel/F10TopToplevel.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Component/F10TopToplevel/F10TopToplevel.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Component/UpdatingBootTime/UpdatingBootTime.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Component/UpdatingBootTime/UpdatingBootTime.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/NextFramePositionCalculator.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/NextFramePositionCalculator.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
import java.awt.*;
--- a/jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/SourcePanel.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/SourcePanel.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
import java.awt.dnd.DragSource;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragGestureEvent;
--- a/jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/TargetPanel.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/DataFlavor/MissedHtmlAndRtfBug/TargetPanel.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
import java.awt.datatransfer.Transferable;
import java.awt.dnd.*;
import java.awt.*;
--- a/jdk/test/java/awt/EventDispatchThread/LoopRobustness/LoopRobustness.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/EventDispatchThread/LoopRobustness/LoopRobustness.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<HTML>
<!-- @test
@bug 4023283
--- a/jdk/test/java/awt/EventQueue/MainAppContext/MainAppContext.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/EventQueue/MainAppContext/MainAppContext.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
* @test
* @bug 7122796
--- a/jdk/test/java/awt/EventQueue/PostEventOrderingTest/PostEventOrderingTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/EventQueue/PostEventOrderingTest/PostEventOrderingTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/FileDialog/FileDialogReturnTest/FileDialogReturnTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/FileDialog/FileDialogReturnTest/FileDialogReturnTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/FileDialog/FileNameOverrideTest/FileNameOverrideTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/FileDialog/FileNameOverrideTest/FileNameOverrideTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/FileDialog/FileNameOverrideTest/FileNameOverrideTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/FileDialog/FileNameOverrideTest/FileNameOverrideTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
test
@bug 6260659
--- a/jdk/test/java/awt/FileDialog/FilenameFilterTest/FilenameFilterTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/FileDialog/FilenameFilterTest/FilenameFilterTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/FileDialog/MultipleMode/MultipleMode.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/FileDialog/MultipleMode/MultipleMode.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/FileDialog/RegexpFilterTest/RegexpFilterTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/FileDialog/RegexpFilterTest/RegexpFilterTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007 Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/FileDialog/SaveFileNameOverrideTest/SaveFileNameOverrideTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/FileDialog/SaveFileNameOverrideTest/SaveFileNameOverrideTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/FileDialog/SaveFileNameOverrideTest/SaveFileNameOverrideTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/FileDialog/SaveFileNameOverrideTest/SaveFileNameOverrideTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
test
@bug 6998877
--- a/jdk/test/java/awt/Focus/6981400/Test1.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/6981400/Test1.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/Focus/6981400/Test2.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/6981400/Test2.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/Focus/6981400/Test3.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/6981400/Test3.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,11 +1,25 @@
/*
- test %W% %E%
- @bug 4411534 4517274
- @summary ensures that user's requestFocus() during applet initialization
- is not ignored.
- @author prs@sparc.spb.su area=appletviewer
- @run shell AppletInitialFocusTest1.sh
-*/
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
import java.applet.Applet;
import java.awt.*;
--- a/jdk/test/java/awt/Focus/DeiconifiedFrameLoosesFocus/DeiconifiedFrameLoosesFocus.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/DeiconifiedFrameLoosesFocus/DeiconifiedFrameLoosesFocus.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Focus/FocusOwnerFrameOnClick/FocusOwnerFrameOnClick.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/FocusOwnerFrameOnClick/FocusOwnerFrameOnClick.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/Focus/FocusTraversalPolicy/InitialFTP.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/FocusTraversalPolicy/InitialFTP.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test
@bug 7125044
--- a/jdk/test/java/awt/Focus/FocusTraversalPolicy/InitialFTP_AWT.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/FocusTraversalPolicy/InitialFTP_AWT.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@bug 7125044
@summary Tests default focus traversal policy in AWT toplevel windows.
--- a/jdk/test/java/awt/Focus/FocusTraversalPolicy/InitialFTP_Swing.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/FocusTraversalPolicy/InitialFTP_Swing.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@bug 7125044
@summary Tests default focus traversal policy in Swing toplevel windows.
--- a/jdk/test/java/awt/Focus/ModalBlockedStealsFocusTest/ModalBlockedStealsFocusTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/ModalBlockedStealsFocusTest/ModalBlockedStealsFocusTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Focus/ToFrontFocusTest/ToFrontFocus.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/ToFrontFocusTest/ToFrontFocus.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Focus/WindowInitialFocusTest/WindowInitialFocusTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Focus/WindowInitialFocusTest/WindowInitialFocusTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Frame/FrameSetSizeStressTest/FrameSetSizeStressTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Frame/FrameSetSizeStressTest/FrameSetSizeStressTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/Frame/InitialMaximizedTest/InitialMaximizedTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Frame/InitialMaximizedTest/InitialMaximizedTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Frame/ShownOnPack/ShownOnPack.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Frame/ShownOnPack/ShownOnPack.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Graphics/DrawImageBG/SystemBgColorTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Graphics/DrawImageBG/SystemBgColorTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
* @test
* @bug 4614845
--- a/jdk/test/java/awt/Graphics2D/FillTexturePaint/FillTexturePaint.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Graphics2D/FillTexturePaint/FillTexturePaint.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/InputMethods/InputMethodsTest/InputMethodsTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/InputMethods/InputMethodsTest/InputMethodsTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<head>
<title> InputMethodsTest </title>
--- a/jdk/test/java/awt/JAWT/JAWT.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/JAWT/JAWT.sh Wed Jul 05 19:22:42 2017 +0200
@@ -5,9 +5,7 @@
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
+# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/JAWT/Makefile.cygwin Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/JAWT/Makefile.cygwin Wed Jul 05 19:22:42 2017 +0200
@@ -3,9 +3,7 @@
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
+# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/JAWT/Makefile.unix Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/JAWT/Makefile.unix Wed Jul 05 19:22:42 2017 +0200
@@ -3,9 +3,7 @@
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
+# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/JAWT/Makefile.win Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/JAWT/Makefile.win Wed Jul 05 19:22:42 2017 +0200
@@ -3,9 +3,7 @@
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
+# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/JAWT/MyCanvas.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/JAWT/MyCanvas.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/JAWT/myfile.c Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/JAWT/myfile.c Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/JAWT/myfile.cpp Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/JAWT/myfile.cpp Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test
@bug 6741526
--- a/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_Swing.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_Swing.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test
@bug 6741526
--- a/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/ButtonActionKeyTest/ButtonActionKeyTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/ButtonActionKeyTest/ButtonActionKeyTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/MenuItemActivatedTest/MenuItemActivatedTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/MenuItemActivatedTest/MenuItemActivatedTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/SubMenuShowTest/SubMenuShowTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/SubMenuShowTest/SubMenuShowTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/TestDialogTypeAhead.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/TestDialogTypeAhead.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/List/SetFontTest/SetFontTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/List/SetFontTest/SetFontTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Menu/NullMenuLabelTest/NullMenuLabelTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Menu/NullMenuLabelTest/NullMenuLabelTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/* @test 1.5 98/07/23
@bug 4064202 4253466
@summary Test for Win32 NPE when MenuItem with null label added.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/MenuBar/8007006/bug8007006.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8007006
+ * @summary [macosx] Closing subwindow loses main window menus.
+ * @author Leonid Romanov
+ * @run main bug8007006
+ */
+
+import sun.awt.SunToolkit;
+import java.awt.*;
+import java.awt.event.*;
+
+public class bug8007006 {
+ private static Frame frame1;
+ private static Frame frame2;
+
+ public static void main(String[] args) throws Exception {
+ if (sun.awt.OSInfo.getOSType() != sun.awt.OSInfo.OSType.MACOSX) {
+ System.out.println("This test is for MacOS only. Automatically passed on other platforms.");
+ return;
+ }
+
+ System.setProperty("apple.laf.useScreenMenuBar", "true");
+
+ createAndShowGUI();
+ sleep(1500);
+
+ frame2.dispose();
+ sleep(1500);
+
+ SunToolkit tk = (SunToolkit)Toolkit.getDefaultToolkit();
+
+ Robot robot = new Robot();
+ robot.setAutoDelay(50);
+
+ // open "Apple" menu (the leftmost one)
+ robot.keyPress(KeyEvent.VK_META);
+ robot.keyPress(KeyEvent.VK_SHIFT);
+ robot.keyPress(KeyEvent.VK_SLASH);
+ robot.keyRelease(KeyEvent.VK_SLASH);
+ robot.keyRelease(KeyEvent.VK_SHIFT);
+ robot.keyRelease(KeyEvent.VK_META);
+
+ // Select our menu
+ robot.keyPress(KeyEvent.VK_LEFT);
+ robot.keyRelease(KeyEvent.VK_LEFT);
+
+ // Select menu item
+ robot.keyPress(KeyEvent.VK_DOWN);
+ robot.keyRelease(KeyEvent.VK_DOWN);
+ robot.keyPress(KeyEvent.VK_ENTER);
+ robot.keyRelease(KeyEvent.VK_ENTER);
+
+ sleep(0);
+
+ MenuBar mbar = frame1.getMenuBar();
+ Menu menu = mbar.getMenu(0);
+ CheckboxMenuItem item = (CheckboxMenuItem)menu.getItem(0);
+ boolean isChecked = item.getState();
+
+ frame1.dispose();
+
+ if (isChecked) {
+ throw new Exception("Test failed: menu item remained checked");
+ }
+ }
+
+ private static void createAndShowGUI() {
+ frame1 = new Frame("Frame 1");
+ frame1.setMenuBar(createMenuBar());
+ frame1.setSize(200, 200);
+
+ frame2 = new Frame("Frame 2");
+ frame2.setMenuBar(createMenuBar());
+ frame2.setSize(200, 200);
+
+ frame1.setVisible(true);
+ frame2.setVisible(true);
+ }
+
+ private static MenuBar createMenuBar() {
+ MenuBar mbar = new MenuBar();
+ Menu menu = new Menu("Menu");
+ MenuItem item = new CheckboxMenuItem("Checked", true);
+
+ menu.add(item);
+ mbar.add(menu);
+
+ return mbar;
+ }
+
+ private static void sleep(int ms) {
+ SunToolkit tk = (SunToolkit)Toolkit.getDefaultToolkit();
+ tk.realSync();
+
+ try {
+ Thread.sleep(ms);
+ } catch (Exception ignore) {
+ }
+ }
+}
--- a/jdk/test/java/awt/Mouse/ExtraMouseClick/ExtraMouseClick.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Mouse/ExtraMouseClick/ExtraMouseClick.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/ExtraButtonDrag.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/ExtraButtonDrag.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/ModifierPermutation.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/ModifierPermutation.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Extra.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Extra.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Standard.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Standard.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/Mouse/TitleBarDoubleClick/TitleBarDoubleClick.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Mouse/TitleBarDoubleClick/TitleBarDoubleClick.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Multiscreen/TranslucencyThrowsExceptionWhenFullScreen/TranslucencyThrowsExceptionWhenFullScreen.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Multiscreen/TranslucencyThrowsExceptionWhenFullScreen/TranslucencyThrowsExceptionWhenFullScreen.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/Multiscreen/WindowGCChangeTest/WindowGCChangeTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Multiscreen/WindowGCChangeTest/WindowGCChangeTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/PrintJob/Text/stringwidth.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/PrintJob/Text/stringwidth.sh Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,26 @@
#!/bin/ksh -p
#
+# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
# @test
# @bug 4692562
# @summary Requirement: Windows with printer installed. It should print with text "Hello World".
--- a/jdk/test/java/awt/Robot/AcceptExtraMouseButtons/AcceptExtraMouseButtons.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Robot/AcceptExtraMouseButtons/AcceptExtraMouseButtons.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/Robot/ManualInstructions/ManualInstructions.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Robot/ManualInstructions/ManualInstructions.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
test %W% %E% %I%, %G%
@bug 6315717
--- a/jdk/test/java/awt/Robot/RobotExtraButton/RobotExtraButton.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Robot/RobotExtraButton/RobotExtraButton.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/ScrollPane/ScrollPanePreferredSize/ScrollPanePreferredSize.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/ScrollPane/ScrollPanePreferredSize/ScrollPanePreferredSize.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/TextArea/MouseOverScrollbarWhenTyping/Test.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/TextArea/MouseOverScrollbarWhenTyping/Test.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test
@bug 6431076
--- a/jdk/test/java/awt/TextArea/MouseOverScrollbarWhenTyping/Test1.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/TextArea/MouseOverScrollbarWhenTyping/Test1.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test
@bug 6431076
--- a/jdk/test/java/awt/TextArea/TextAreaCursorTest/HoveringAndDraggingTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/TextArea/TextAreaCursorTest/HoveringAndDraggingTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/TextArea/TextAreaTwicePack/TextAreaTwicePack.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/TextArea/TextAreaTwicePack/TextAreaTwicePack.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/TextArea/UsingWithMouse/SelectionAutoscrollTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/TextArea/UsingWithMouse/SelectionAutoscrollTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/TextField/ScrollSelectionTest/ScrollSelectionTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/TextField/ScrollSelectionTest/ScrollSelectionTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/Toolkit/Headless/AWTEventListener/AWTListener.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Toolkit/Headless/AWTEventListener/AWTListener.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test
@bug 6738181
--- a/jdk/test/java/awt/Toolkit/Headless/ExceptionContract/ExceptionContract.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Toolkit/Headless/ExceptionContract/ExceptionContract.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/Toolkit/Headless/GetPrintJob/GetPrintJob.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Toolkit/Headless/GetPrintJob/GetPrintJob.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test
@bug 7023011
--- a/jdk/test/java/awt/Toolkit/Headless/GetPrintJob/GetPrintJobHeadless.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Toolkit/Headless/GetPrintJob/GetPrintJobHeadless.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test
@bug 7023011
--- a/jdk/test/java/awt/Toolkit/SecurityTest/SecurityTest2.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Toolkit/SecurityTest/SecurityTest2.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test
@bug 6599601
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_1.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_1.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_2.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_2.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_3.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_3.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_4.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_4.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_5.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_5.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Disable.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Disable.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Enable.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Enable.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/Window/Grab/GrabTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Window/Grab/GrabTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/Window/TranslucentShapedFrameTest/TSFrame.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Window/TranslucentShapedFrameTest/TSFrame.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/Window/TranslucentShapedFrameTest/TranslucentShapedFrameTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/Window/TranslucentShapedFrameTest/TranslucentShapedFrameTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
+# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/test.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/test.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
test
--- a/jdk/test/java/awt/datatransfer/DragUnicodeBetweenJVMTest/DragUnicodeBetweenJVMTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/datatransfer/DragUnicodeBetweenJVMTest/DragUnicodeBetweenJVMTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/datatransfer/DuplicatedNativesTest/DuplicatedNativesTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.SystemFlavorMap;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+
+/* @test
+ * @bug 8028230
+ * @summary Checks that SystemFlavorMap.getNativesForFlavor returns a list without duplicates
+ * @author Petr Pchelko
+ * @run main DuplicatedNativesTest
+ */
+public class DuplicatedNativesTest {
+
+ public static void main(String[] args) throws Exception {
+
+ // 1. Check that returned natives do not contain duplicates.
+ SystemFlavorMap flavorMap = (SystemFlavorMap)SystemFlavorMap.getDefaultFlavorMap();
+ for (Map.Entry<DataFlavor, String> entry : flavorMap.getNativesForFlavors(null).entrySet()) {
+ List<String> natives = flavorMap.getNativesForFlavor(entry.getKey());
+ if (new HashSet<>(natives).size() != natives.size()) {
+ throw new RuntimeException("FAILED: returned natives contain duplicates: " + Arrays.toString(natives.toArray()));
+ }
+ }
+
+ // 2. Check that even if we set a duplicate it would be ignored.
+ flavorMap.setNativesForFlavor(DataFlavor.stringFlavor, new String[] {"test", "test", "test"});
+ List<String> natives = flavorMap.getNativesForFlavor(DataFlavor.stringFlavor);
+ if (new HashSet<>(natives).size() != natives.size()) {
+ throw new RuntimeException("FAILED: duplicates were not ignored: " + Arrays.toString(natives.toArray()));
+ }
+ }
+}
--- a/jdk/test/java/awt/datatransfer/HTMLDataFlavors/ManualHTMLDataFlavorTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/datatransfer/HTMLDataFlavors/ManualHTMLDataFlavorTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/dnd/Button2DragTest/Button2DragTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/Button2DragTest/Button2DragTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/DnDFileGroupDescriptor/DnDFileGroupDescriptor.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/DnDFileGroupDescriptor/DnDTarget.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/DnDFileGroupDescriptor/DnDTarget.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/FileListBetweenJVMsTest/FileListBetweenJVMsTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/FileListBetweenJVMsTest/FileListBetweenJVMsTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnD/DnDSource.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnD/DnDSource.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnD/DnDTarget.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnD/DnDTarget.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnD/ImageDecoratedDnD.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnD/ImageDecoratedDnD.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test %W% %E%
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnD/ImageDecoratedDnD.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnD/ImageDecoratedDnD.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnD/ImageGenerator.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnD/ImageGenerator.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnD/MyCursor.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnD/MyCursor.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/DnDSource.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/DnDSource.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/DnDTarget.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/DnDTarget.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/ImageDecoratedDnDInOut.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/ImageDecoratedDnDInOut.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test %W% %E%
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/ImageDecoratedDnDInOut.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/ImageDecoratedDnDInOut.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/ImageGenerator.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/ImageGenerator.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/MyCursor.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/MyCursor.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/DnDSource.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/DnDSource.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/DnDTarget.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/DnDTarget.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/ImageDecoratedDnDNegative.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/ImageDecoratedDnDNegative.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test %W% %E%
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/ImageDecoratedDnDNegative.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/ImageDecoratedDnDNegative.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/ImageGenerator.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/ImageGenerator.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/MyCursor.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/MyCursor.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/dnd/URIListBetweenJVMsTest/URIListBetweenJVMsTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/dnd/URIListBetweenJVMsTest/URIListBetweenJVMsTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/event/InputEvent/ButtonArraysEquality/ButtonArraysEquality.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/InputEvent/ButtonArraysEquality/ButtonArraysEquality.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/event/KeyEvent/AcceleratorTest/AcceleratorTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/KeyEvent/AcceleratorTest/AcceleratorTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/event/KeyEvent/AcceleratorTest/AcceleratorTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/KeyEvent/AcceleratorTest/AcceleratorTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
test
@bug 6680988
--- a/jdk/test/java/awt/event/KeyEvent/KeyReleasedInAppletTest/KeyReleasedInAppletTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/KeyEvent/KeyReleasedInAppletTest/KeyReleasedInAppletTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/event/KeyEvent/KeyTyped/CtrlASCII.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/KeyEvent/KeyTyped/CtrlASCII.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/event/MouseEvent/AWTPanelSmoothWheel/AWTPanelSmoothWheel.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/MouseEvent/AWTPanelSmoothWheel/AWTPanelSmoothWheel.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/event/MouseEvent/AcceptExtraButton/AcceptExtraButton.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/MouseEvent/AcceptExtraButton/AcceptExtraButton.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/event/MouseEvent/CTORRestrictions/CTORRestrictions.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/MouseEvent/CTORRestrictions/CTORRestrictions.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/event/MouseEvent/CTORRestrictions/CTORRestrictions_Disable.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/MouseEvent/CTORRestrictions/CTORRestrictions_Disable.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/event/MouseEvent/CheckGetMaskForButton/CheckGetMaskForButton.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/MouseEvent/CheckGetMaskForButton/CheckGetMaskForButton.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
@test %I% %E%
@bug 6315717
--- a/jdk/test/java/awt/event/MouseEvent/FrameMouseEventAbsoluteCoordsTest/FrameMouseEventAbsoluteCoordsTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/MouseEvent/FrameMouseEventAbsoluteCoordsTest/FrameMouseEventAbsoluteCoordsTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/event/MouseEvent/MenuDragMouseEventAbsoluteCoordsTest/MenuDragMouseEventAbsoluteCoordsTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/MouseEvent/MenuDragMouseEventAbsoluteCoordsTest/MenuDragMouseEventAbsoluteCoordsTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/event/MouseEvent/MouseClickTest/MouseClickTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/MouseEvent/MouseClickTest/MouseClickTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/event/MouseEvent/MouseWheelEventAbsoluteCoordsTest/MouseWheelEventAbsoluteCoordsTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/MouseEvent/MouseWheelEventAbsoluteCoordsTest/MouseWheelEventAbsoluteCoordsTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/event/MouseEvent/RobotLWTest/RobotLWTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/MouseEvent/RobotLWTest/RobotLWTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_2.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_2.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_3.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_3.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/event/OtherEvents/UngrabID/UngrabID.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/event/OtherEvents/UngrabID/UngrabID.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/im/4490692/bug4490692.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/im/4490692/bug4490692.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/im/4959409/bug4959409.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/im/4959409/bug4959409.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/im/JTextFieldTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/im/JTextFieldTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,4 +1,26 @@
-<!---->
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<p>
Please run this test case under Solaris cjk locale with inputmethod
support, if you could input Chinese/Japanese/Korean in the swing
--- a/jdk/test/java/awt/image/BufferedImage/TinyScale.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/image/BufferedImage/TinyScale.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
* @test %W% %E%
* @bug 7016495
--- a/jdk/test/java/awt/image/DrawImage/EABlitTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/image/DrawImage/EABlitTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/print/PrinterJob/CustomPrintService/PrintServiceStub.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/print/PrinterJob/CustomPrintService/PrintServiceStub.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/print/PrinterJob/CustomPrintService/SetPrintServiceTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/print/PrinterJob/CustomPrintService/SetPrintServiceTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/awt/print/bug8023392/bug8023392.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/print/bug8023392/bug8023392.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/java/awt/print/bug8023392/bug8023392.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/awt/print/bug8023392/bug8023392.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/regtesthelpers/CopyClassFile.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import java.util.Arrays;
+
+/**
+ * A utility to copy the class and all it's inner classes to the specified directory.
+ * <p>
+ * Usage in jtreg:
+ *
+ * @build CopyClassFile
+ * @run main CopyClassFile package.class dest_directory
+ */
+public class CopyClassFile {
+
+ private static final ClassLoader cl = CopyClassFile.class.getClassLoader();
+
+ private static String destinationDir;
+ private static String className;
+ private static String classFile;
+
+ public static void main(String[] args) throws Exception {
+ if (args.length != 2) {
+ throw new IllegalArgumentException("Illegal usage: class name and destination directory should be specified");
+ }
+
+ destinationDir = args[1];
+ className = args[0];
+ classFile = className.replaceAll("\\.", File.separator) + ".class";
+
+ URL url = cl.getResource(classFile);
+ if (url == null) {
+ throw new RuntimeException("Could not find a class: " + classFile);
+ }
+
+ File[] files = new File(url.toURI())
+ .getParentFile()
+ .listFiles((dir, name) -> name.startsWith(cutPackageName(className)) && name.endsWith(".class"));
+
+ Arrays.stream(files).forEach(CopyClassFile::copyFile);
+ }
+
+ private static String cutPackageName(String className) {
+ int dotIndex = className.lastIndexOf(".") + 1;
+ if (dotIndex <= 0) {
+ return className;
+ } else {
+ return className.substring(dotIndex);
+ }
+ }
+
+ private static void copyFile(File f) {
+ try {
+ Path classFilePath = Paths.get(classFile);
+ String packagePath = classFilePath.getParent() == null ? "" : classFilePath.getParent().toString();
+ Path p = Paths.get(destinationDir + packagePath + File.separator + f.getName());
+ Files.createDirectories(p.getParent());
+ try (InputStream is = new FileInputStream(f)) {
+ Files.copy(is, p, StandardCopyOption.REPLACE_EXISTING);
+ }
+ } catch (IOException ex) {
+ throw new RuntimeException("Could not copy file " + f, ex);
+ }
+ }
+}
--- a/jdk/test/java/beans/Introspector/6380849/beans/FirstBean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/beans/Introspector/6380849/beans/FirstBean.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
package beans;
public class FirstBean {
--- a/jdk/test/java/beans/Introspector/6380849/beans/FirstBeanBeanInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/beans/Introspector/6380849/beans/FirstBeanBeanInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
package beans;
import java.beans.BeanDescriptor;
--- a/jdk/test/java/beans/Introspector/6380849/beans/SecondBean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/beans/Introspector/6380849/beans/SecondBean.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
package beans;
public class SecondBean {
--- a/jdk/test/java/beans/Introspector/6380849/beans/ThirdBean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/beans/Introspector/6380849/beans/ThirdBean.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
package beans;
public class ThirdBean {
--- a/jdk/test/java/beans/Introspector/6380849/infos/SecondBeanBeanInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/beans/Introspector/6380849/infos/SecondBeanBeanInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
package infos;
import beans.SecondBean;
--- a/jdk/test/java/beans/Introspector/6380849/infos/ThirdBeanBeanInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/beans/Introspector/6380849/infos/ThirdBeanBeanInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
package infos;
import java.beans.BeanDescriptor;
--- a/jdk/test/java/beans/Introspector/6976577/test/Accessor.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/beans/Introspector/6976577/test/Accessor.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
package test;
import java.beans.PropertyChangeListener;
--- a/jdk/test/java/beans/Introspector/7122138/pack/Sub.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/beans/Introspector/7122138/pack/Sub.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
package pack;
public class Sub<String> extends Super {
--- a/jdk/test/java/beans/Introspector/7122138/pack/Super.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/beans/Introspector/7122138/pack/Super.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
package pack;
class Super<T> {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/beans/Introspector/Test8027648.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.beans.IndexedPropertyDescriptor;
+import java.beans.PropertyDescriptor;
+
+/*
+ * @test
+ * @bug 8027648
+ * @summary Tests overridden getter and overloaded setter
+ * @author Sergey Malenkov
+ */
+
+public class Test8027648 {
+
+ public static void main(String[] args) {
+ test(false);
+ test(true);
+ }
+
+ private static void test(boolean indexed) {
+ Class<?> parent = getPropertyType(BaseBean.class, indexed);
+ Class<?> child = getPropertyType(MyBean.class, indexed);
+ if (parent.equals(child) || !parent.isAssignableFrom(child)) {
+ throw new Error("the child property type is not override the parent property type");
+ }
+ }
+
+ private static Class<?> getPropertyType(Class<?> type, boolean indexed) {
+ PropertyDescriptor pd = BeanUtils.findPropertyDescriptor(type, indexed ? "index" : "value");
+ if (pd instanceof IndexedPropertyDescriptor) {
+ IndexedPropertyDescriptor ipd = (IndexedPropertyDescriptor) pd;
+ return ipd.getIndexedPropertyType();
+ }
+ return pd.getPropertyType();
+ }
+
+ public static class BaseBean {
+ private Object value;
+
+ public Object getValue() {
+ return this.value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+
+ public Object getIndex(int index) {
+ return getValue();
+ }
+
+ public void setIndex(int index, Object value) {
+ setValue(value);
+ }
+ }
+
+ public static class MyBean extends BaseBean {
+ @Override
+ public String getValue() {
+ return (String) super.getValue();
+ }
+
+ public void setValue(String value) {
+ setValue((Object) value);
+ }
+
+ @Override
+ public String getIndex(int index) {
+ return getValue();
+ }
+
+ public void setIndex(int index, String value) {
+ setValue(value);
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/beans/Introspector/Test8027905.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.beans.PropertyDescriptor;
+
+/*
+ * @test
+ * @bug 8027905
+ * @summary Tests that GC does not affect a property type
+ * @author Sergey Malenkov
+ */
+
+public class Test8027905 {
+ public static void main(String[] args) {
+ PropertyDescriptor pd = BeanUtils.getPropertyDescriptor(Sub.class, "foo");
+ Class<?> type = pd.getPropertyType();
+
+ int[] array = new int[10];
+ while (array != null) {
+ try {
+ array = new int[array.length + array.length];
+ }
+ catch (OutOfMemoryError error) {
+ array = null;
+ }
+ }
+ if (type != pd.getPropertyType()) {
+ throw new Error("property type is changed");
+ }
+ }
+
+ public static class Super<T> {
+ public T getFoo() {
+ return null;
+ }
+
+ public void setFoo(T t) {
+ }
+ }
+
+ public static class Sub extends Super<String> {
+ @Override
+ public String getFoo() {
+ return null;
+ }
+
+ @Override
+ public void setFoo(String t) {
+ }
+ }
+}
--- a/jdk/test/java/beans/XMLEncoder/6380849/Bean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/beans/XMLEncoder/6380849/Bean.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,2 +1,25 @@
+/*
+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
public class Bean {
}
--- a/jdk/test/java/beans/XMLEncoder/6380849/BeanPersistenceDelegate.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/beans/XMLEncoder/6380849/BeanPersistenceDelegate.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
import java.beans.DefaultPersistenceDelegate;
public class BeanPersistenceDelegate
--- a/jdk/test/java/io/File/MaxPathLength.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/io/File/MaxPathLength.java Wed Jul 05 19:22:42 2017 +0200
@@ -28,6 +28,8 @@
import java.io.*;
import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.DirectoryNotEmptyException;
public class MaxPathLength {
private static String sep = File.separator;
@@ -182,7 +184,18 @@
} finally {
// Clean up
for (int i = 0; i < max; i++) {
- Files.deleteIfExists((new File(created[i])).toPath());
+ Path p = (new File(created[i])).toPath();
+ try {
+ Files.deleteIfExists(p);
+ // Test if the file is really deleted and wait for 1 second at most
+ for (int j = 0; j < 10 && Files.exists(p); j++) {
+ Thread.sleep(100);
+ }
+ } catch (DirectoryNotEmptyException ex) {
+ // Give up the clean-up, let jtreg handle it.
+ System.err.println("Dir, " + p + ", is not empty");
+ break;
+ }
}
}
}
--- a/jdk/test/java/io/FileInputStream/OpsAfterClose.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/io/FileInputStream/OpsAfterClose.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/**
* @test
* @bug 6359397
--- a/jdk/test/java/io/FileOutputStream/OpsAfterClose.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/io/FileOutputStream/OpsAfterClose.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/**
* @test
* @bug 6359397
--- a/jdk/test/java/io/RandomAccessFile/OpsAfterClose.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/io/RandomAccessFile/OpsAfterClose.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/**
* @test
* @bug 6359397
--- a/jdk/test/java/lang/String/Split.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/String/Split.java Wed Jul 05 19:22:42 2017 +0200
@@ -23,7 +23,7 @@
/**
* @test
- * @bug 6840246
+ * @bug 6840246 6559590
* @summary test String.split()
*/
import java.util.Arrays;
@@ -78,6 +78,7 @@
throw new RuntimeException("String.split failure 7");
}
// Check the case for limit == 0, source = "";
+ // split() now returns 0-length for empty source "" see #6559590
source = "";
String[] result = source.split("e", 0);
if (result.length != 1)
--- a/jdk/test/java/lang/StringBuffer/BufferForwarding.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/StringBuffer/BufferForwarding.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/lang/StringBuilder/BuilderForwarding.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/StringBuilder/BuilderForwarding.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/Thread/ThreadStateController.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,340 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.util.concurrent.Phaser;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.locks.LockSupport;
+
+/**
+ * ThreadStateController allows a thread to request this thread to transition
+ * to a specific thread state. The {@linkplain #transitionTo request} is
+ * a blocking call that the calling thread will wait until this thread is about
+ * going to the new state. Only one request of state transition at a time
+ * is supported (the Phaser expects only parties of 2 to arrive and advance
+ * to next phase).
+ */
+public class ThreadStateController extends Thread {
+ // used to achieve waiting states
+ private final Object lock;
+ public ThreadStateController(String name, Object lock) {
+ super(name);
+ this.lock = lock;
+ }
+
+ public void checkThreadState(Thread.State expected) {
+ // maximum number of retries when checking for thread state.
+ final int MAX_RETRY = 500;
+
+ // wait for the thread to transition to the expected state.
+ // There is a small window between the thread checking the state
+ // and the thread actual entering that state.
+ Thread.State state;
+ int retryCount=0;
+ while ((state = getState()) != expected && retryCount < MAX_RETRY) {
+ pause(10);
+ retryCount++;
+ }
+
+ if (state == null) {
+ throw new RuntimeException(getName() + " expected to have " +
+ expected + " but got null.");
+ }
+
+ if (state != expected) {
+ throw new RuntimeException(String.format("%s expected in %s state but got %s " +
+ "(iterations %d interrupted %d)%n",
+ getName(), expected, state, iterations.get(), interrupted.get()));
+ }
+ }
+
+ public static void pause(long ms) {
+ try {
+ Thread.sleep(ms);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ // Phaser to sync between the main thread putting
+ // this thread into various states
+ private final Phaser phaser = new Phaser(2);
+ private volatile int newState = S_RUNNABLE;
+ private volatile int state = 0;
+ private boolean done = false;
+
+ private static final int S_RUNNABLE = 1;
+ private static final int S_BLOCKED = 2;
+ private static final int S_WAITING = 3;
+ private static final int S_TIMED_WAITING = 4;
+ private static final int S_PARKED = 5;
+ private static final int S_TIMED_PARKED = 6;
+ private static final int S_SLEEPING = 7;
+ private static final int S_TERMINATE = 8;
+
+ // for debugging
+ private AtomicInteger iterations = new AtomicInteger();
+ private AtomicInteger interrupted = new AtomicInteger();
+ public void run() {
+ // this thread has started
+ while (!done) {
+ // state transition
+ int nextState = state;
+ if (newState != state) {
+ nextState = newState;
+ iterations.set(0);
+ interrupted.set(0);
+ }
+ iterations.incrementAndGet();
+ switch (nextState) {
+ case S_RUNNABLE: {
+ stateChange(nextState);
+ double sum = 0;
+ for (int i = 0; i < 1000; i++) {
+ double r = Math.random();
+ double x = Math.pow(3, r);
+ sum += x - r;
+ }
+ break;
+ }
+ case S_BLOCKED: {
+ System.out.format("%d: %s is going to block (interations %d)%n",
+ getId(), getName(), iterations.get());
+ stateChange(nextState);
+ // going to block on lock
+ synchronized (lock) {
+ System.out.format("%d: %s acquired the lock (interations %d)%n",
+ getId(), getName(), iterations.get());
+ try {
+ // this thread has escaped the BLOCKED state
+ // release the lock and a short wait before continue
+ lock.wait(10);
+ } catch (InterruptedException e) {
+ // ignore
+ interrupted.incrementAndGet();
+ }
+ }
+ break;
+ }
+ case S_WAITING: {
+ synchronized (lock) {
+ System.out.format("%d: %s is going to waiting (interations %d interrupted %d)%n",
+ getId(), getName(), iterations.get(), interrupted.get());
+ try {
+ stateChange(nextState);
+ lock.wait();
+ System.out.format("%d: %s wakes up from waiting (interations %d interrupted %d)%n",
+ getId(), getName(), iterations.get(), interrupted.get());
+ } catch (InterruptedException e) {
+ // ignore
+ interrupted.incrementAndGet();
+ }
+ }
+ break;
+ }
+ case S_TIMED_WAITING: {
+ synchronized (lock) {
+ System.out.format("%d: %s is going to timed waiting (interations %d interrupted %d)%n",
+ getId(), getName(), iterations.get(), interrupted.get());
+ try {
+ stateChange(nextState);
+ lock.wait(10000);
+ System.out.format("%d: %s wakes up from timed waiting (interations %d interrupted %d)%n",
+ getId(), getName(), iterations.get(), interrupted.get());
+ } catch (InterruptedException e) {
+ // ignore
+ interrupted.incrementAndGet();
+ }
+ }
+ break;
+ }
+ case S_PARKED: {
+ System.out.format("%d: %s is going to park (interations %d)%n",
+ getId(), getName(), iterations.get());
+ stateChange(nextState);
+ LockSupport.park();
+ break;
+ }
+ case S_TIMED_PARKED: {
+ System.out.format("%d: %s is going to timed park (interations %d)%n",
+ getId(), getName(), iterations.get());
+ long deadline = System.currentTimeMillis() + 10000*1000;
+ stateChange(nextState);
+ LockSupport.parkUntil(deadline);
+ break;
+ }
+ case S_SLEEPING: {
+ System.out.format("%d: %s is going to sleep (interations %d interrupted %d)%n",
+ getId(), getName(), iterations.get(), interrupted.get());
+ try {
+ stateChange(nextState);
+ Thread.sleep(1000000);
+ } catch (InterruptedException e) {
+ // finish sleeping
+ interrupted.incrementAndGet();
+ }
+ break;
+ }
+ case S_TERMINATE: {
+ done = true;
+ stateChange(nextState);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ }
+
+ /**
+ * Change the state if it matches newState.
+ */
+ private void stateChange(int nextState) {
+ // no state change
+ if (state == nextState)
+ return;
+
+ // transition to the new state
+ if (newState == nextState) {
+ state = nextState;
+ phaser.arrive();
+ System.out.format("%d: state change: %s %s%n",
+ getId(), toStateName(nextState), phaserToString(phaser));
+ return;
+ }
+
+ // should never reach here
+ throw new RuntimeException("current " + state + " next " + nextState +
+ " new state " + newState);
+ }
+
+ /**
+ * Blocks until this thread transitions to the given state
+ */
+ public void transitionTo(Thread.State tstate) throws InterruptedException {
+ switch (tstate) {
+ case RUNNABLE:
+ nextState(S_RUNNABLE);
+ break;
+ case BLOCKED:
+ nextState(S_BLOCKED);
+ break;
+ case WAITING:
+ nextState(S_WAITING);
+ break;
+ case TIMED_WAITING:
+ nextState(S_TIMED_WAITING);
+ break;
+ case TERMINATED:
+ nextState(S_TERMINATE);
+ break;
+ default:
+ break;
+ }
+ }
+
+ /**
+ * Blocks until this thread transitions to sleeping
+ */
+ public void transitionToSleep() throws InterruptedException {
+ nextState(S_SLEEPING);
+ }
+
+ /**
+ * Blocks until this thread transitions to park or timed park
+ */
+ public void transitionToPark(boolean timed) throws InterruptedException {
+ nextState(timed ? S_TIMED_PARKED : S_PARKED);
+ }
+
+ private void nextState(int s) throws InterruptedException {
+ final long id = Thread.currentThread().getId();
+ System.out.format("%d: wait until the thread transitions to %s %s%n",
+ id, toStateName(s), phaserToString(phaser));
+ this.newState = s;
+ int phase = phaser.arrive();
+ System.out.format("%d: awaiting party arrive %s %s%n",
+ id, toStateName(s), phaserToString(phaser));
+ for (;;) {
+ // when this thread has changed its state before it waits or parks
+ // on a lock, a potential race might happen if it misses the notify
+ // or unpark. Hence await for the phaser to advance with timeout
+ // to cope with this race condition.
+ switch (state) {
+ case S_WAITING:
+ case S_TIMED_WAITING:
+ synchronized (lock) {
+ lock.notify();
+ }
+ break;
+ case S_PARKED:
+ case S_TIMED_PARKED:
+ LockSupport.unpark(this);
+ break;
+ case S_SLEEPING:
+ this.interrupt();
+ break;
+ case S_BLOCKED:
+ default:
+ break;
+ }
+ try {
+ phaser.awaitAdvanceInterruptibly(phase, 100, TimeUnit.MILLISECONDS);
+ System.out.format("%d: arrived at %s %s%n",
+ id, toStateName(s), phaserToString(phaser));
+ return;
+ } catch (TimeoutException ex) {
+ // this thread hasn't arrived at this phase
+ System.out.format("%d: Timeout: %s%n", id, phaser);
+ }
+ }
+ }
+ private String phaserToString(Phaser p) {
+ return "[phase = " + p.getPhase() +
+ " parties = " + p.getRegisteredParties() +
+ " arrived = " + p.getArrivedParties() + "]";
+ }
+ private String toStateName(int state) {
+ switch (state) {
+ case S_RUNNABLE:
+ return "runnable";
+ case S_WAITING:
+ return "waiting";
+ case S_TIMED_WAITING:
+ return "timed waiting";
+ case S_PARKED:
+ return "parked";
+ case S_TIMED_PARKED:
+ return "timed parked";
+ case S_SLEEPING:
+ return "sleeping";
+ case S_BLOCKED:
+ return "blocked";
+ case S_TERMINATE:
+ return "terminated";
+ default:
+ return "unknown " + state;
+ }
+ }
+}
--- a/jdk/test/java/lang/Thread/ThreadStateTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/Thread/ThreadStateTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -21,77 +21,64 @@
* questions.
*/
+import static java.lang.Thread.State.*;
+
/*
* @test
- * @bug 5014783
+ * @bug 5014783 8022208
* @summary Basic unit test of thread states returned by
* Thread.getState().
*
* @author Mandy Chung
- *
- * @build ThreadStateTest
+ * @build ThreadStateTest ThreadStateController
* @run main/othervm -Xmixed ThreadStateTest
*/
-import java.util.concurrent.locks.LockSupport;
-import java.util.concurrent.Phaser;
-
public class ThreadStateTest {
- // maximum number of retries when checking for thread state.
- static final int MAX_RETRY = 500;
-
private static boolean testFailed = false;
// used to achieve waiting states
- static final Object globalLock = new Object();
+ private static final Object globalLock = new Object();
- public static void main(String[] argv) {
+ public static void main(String[] argv) throws Exception {
// Call Thread.getState to force all initialization done
// before test verification begins.
Thread.currentThread().getState();
- MyThread myThread = new MyThread("MyThread");
+ ThreadStateController thread = new ThreadStateController("StateChanger", globalLock);
+ thread.setDaemon(true);
// before myThread starts
- checkThreadState(myThread, Thread.State.NEW);
+ thread.checkThreadState(NEW);
- myThread.start();
- myThread.waitUntilStarted();
- checkThreadState(myThread, Thread.State.RUNNABLE);
+ thread.start();
+ thread.transitionTo(RUNNABLE);
+ thread.checkThreadState(RUNNABLE);
synchronized (globalLock) {
- myThread.goBlocked();
- checkThreadState(myThread, Thread.State.BLOCKED);
+ thread.transitionTo(BLOCKED);
+ thread.checkThreadState(BLOCKED);
}
- myThread.goWaiting();
- checkThreadState(myThread, Thread.State.WAITING);
-
- myThread.goTimedWaiting();
- checkThreadState(myThread, Thread.State.TIMED_WAITING);
+ thread.transitionTo(WAITING);
+ thread.checkThreadState(WAITING);
+ thread.transitionTo(TIMED_WAITING);
+ thread.checkThreadState(TIMED_WAITING);
- /*
- *********** park and parkUntil seems not working
- * ignore this case for now.
- * Bug ID 5062095
- ***********************************************
+ thread.transitionToPark(true /* timed park*/);
+ thread.checkThreadState(TIMED_WAITING);
- myThread.goParked();
- checkThreadState(myThread, Thread.State.WAITING);
-
- myThread.goTimedParked();
- checkThreadState(myThread, Thread.State.TIMED_WAITING);
- */
+ thread.transitionToPark(false /* indefinite park */);
+ thread.checkThreadState(WAITING);
+ thread.transitionToSleep();
+ thread.checkThreadState(TIMED_WAITING);
- myThread.goSleeping();
- checkThreadState(myThread, Thread.State.TIMED_WAITING);
-
- myThread.terminate();
- checkThreadState(myThread, Thread.State.TERMINATED);
+ thread.transitionTo(TERMINATED);
+ thread.checkThreadState(TERMINATED);
try {
- myThread.join();
+ thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("Unexpected exception.");
@@ -102,241 +89,4 @@
throw new RuntimeException("TEST FAILED.");
System.out.println("Test passed.");
}
-
- private static void checkThreadState(Thread t, Thread.State expected) {
- // wait for the thread to transition to the expected state.
- // There is a small window between the thread checking the state
- // and the thread actual entering that state.
- Thread.State state;
- int retryCount=0;
- while ((state = t.getState()) != expected && retryCount < MAX_RETRY) {
- if (state != Thread.State.RUNNABLE) {
- throw new RuntimeException("Thread not in expected state yet," +
- " but it should at least be RUNNABLE");
- }
- goSleep(10);
- retryCount++;
- }
-
- System.out.println("Checking thread state " + state);
- if (state == null) {
- throw new RuntimeException(t.getName() + " expected to have " +
- expected + " but got null.");
- }
-
- if (state != expected) {
- throw new RuntimeException(t.getName() + " expected to have " +
- expected + " but got " + state);
- }
- }
-
- private static void goSleep(long ms) {
- try {
- Thread.sleep(ms);
- } catch (InterruptedException e) {
- e.printStackTrace();
- System.out.println("Unexpected exception.");
- testFailed = true;
- }
- }
-
- static class MyThread extends Thread {
- // Phaser to sync between the main thread putting
- // this thread into various states
- private Phaser phaser = new Phaser(2);
-
- MyThread(String name) {
- super(name);
- }
-
- private final int RUNNABLE = 0;
- private final int BLOCKED = 1;
- private final int WAITING = 2;
- private final int TIMED_WAITING = 3;
- private final int PARKED = 4;
- private final int TIMED_PARKED = 5;
- private final int SLEEPING = 6;
- private final int TERMINATE = 7;
-
- private volatile int state = RUNNABLE;
-
- private boolean done = false;
- public void run() {
- // Signal main thread to continue.
- phaser.arriveAndAwaitAdvance();
-
- while (!done) {
- switch (state) {
- case RUNNABLE: {
- double sum = 0;
- for (int i = 0; i < 1000; i++) {
- double r = Math.random();
- double x = Math.pow(3, r);
- sum += x - r;
- }
- break;
- }
- case BLOCKED: {
- // signal main thread.
- phaser.arrive();
- System.out.println(" myThread is going to block.");
- synchronized (globalLock) {
- // finish blocking
- state = RUNNABLE;
- }
- break;
- }
- case WAITING: {
- synchronized (globalLock) {
- // signal main thread.
- phaser.arrive();
- System.out.println(" myThread is going to wait.");
- try {
- globalLock.wait();
- } catch (InterruptedException e) {
- // ignore
- }
- }
- break;
- }
- case TIMED_WAITING: {
- synchronized (globalLock) {
- // signal main thread.
- phaser.arrive();
- System.out.println(" myThread is going to timed wait.");
- try {
- globalLock.wait(10000);
- } catch (InterruptedException e) {
- // ignore
- }
- }
- break;
- }
- case PARKED: {
- // signal main thread.
- phaser.arrive();
- System.out.println(" myThread is going to park.");
- LockSupport.park();
- // give a chance for the main thread to block
- goSleep(10);
- break;
- }
- case TIMED_PARKED: {
- // signal main thread.
- phaser.arrive();
- System.out.println(" myThread is going to timed park.");
- long deadline = System.currentTimeMillis() + 10000*1000;
- LockSupport.parkUntil(deadline);
-
- // give a chance for the main thread to block
- goSleep(10);
- break;
- }
- case SLEEPING: {
- // signal main thread.
- phaser.arrive();
- System.out.println(" myThread is going to sleep.");
- try {
- Thread.sleep(1000000);
- } catch (InterruptedException e) {
- // finish sleeping
- }
- break;
- }
- case TERMINATE: {
- done = true;
- // signal main thread.
- phaser.arrive();
- break;
- }
- default:
- break;
- }
- }
- }
-
- public void waitUntilStarted() {
- // wait for MyThread.
- phaser.arriveAndAwaitAdvance();
- }
-
- public void goBlocked() {
- System.out.println("Waiting myThread to go blocked.");
- setState(BLOCKED);
- // wait for MyThread to get to a point just before being blocked
- phaser.arriveAndAwaitAdvance();
- }
-
- public void goWaiting() {
- System.out.println("Waiting myThread to go waiting.");
- setState(WAITING);
- // wait for MyThread to get to just before wait on object.
- phaser.arriveAndAwaitAdvance();
- }
-
- public void goTimedWaiting() {
- System.out.println("Waiting myThread to go timed waiting.");
- setState(TIMED_WAITING);
- // wait for MyThread to get to just before timed wait call.
- phaser.arriveAndAwaitAdvance();
- }
-
- public void goParked() {
- System.out.println("Waiting myThread to go parked.");
- setState(PARKED);
- // wait for MyThread to get to just before parked.
- phaser.arriveAndAwaitAdvance();
- }
-
- public void goTimedParked() {
- System.out.println("Waiting myThread to go timed parked.");
- setState(TIMED_PARKED);
- // wait for MyThread to get to just before timed park.
- phaser.arriveAndAwaitAdvance();
- }
-
- public void goSleeping() {
- System.out.println("Waiting myThread to go sleeping.");
- setState(SLEEPING);
- // wait for MyThread to get to just before sleeping
- phaser.arriveAndAwaitAdvance();
- }
-
- public void terminate() {
- System.out.println("Waiting myThread to terminate.");
- setState(TERMINATE);
- // wait for MyThread to get to just before terminate
- phaser.arriveAndAwaitAdvance();
- }
-
- private void setState(int newState) {
- switch (state) {
- case BLOCKED:
- while (state == BLOCKED) {
- goSleep(10);
- }
- state = newState;
- break;
- case WAITING:
- case TIMED_WAITING:
- state = newState;
- synchronized (globalLock) {
- globalLock.notify();
- }
- break;
- case PARKED:
- case TIMED_PARKED:
- state = newState;
- LockSupport.unpark(this);
- break;
- case SLEEPING:
- state = newState;
- this.interrupt();
- break;
- default:
- state = newState;
- break;
- }
- }
- }
}
--- a/jdk/test/java/lang/instrument/RedefineBigClassApp.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/instrument/RedefineBigClassApp.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2013 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
--- a/jdk/test/java/lang/instrument/RetransformBigClass.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/instrument/RetransformBigClass.sh Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2013 Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
--- a/jdk/test/java/lang/instrument/RetransformBigClassApp.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/instrument/RetransformBigClassApp.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2013 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
--- a/jdk/test/java/lang/invoke/AccessControlTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/invoke/AccessControlTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/lang/invoke/BigArityTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/invoke/BigArityTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/lang/invoke/ClassValueTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/invoke/ClassValueTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/lang/invoke/InvokeGenericTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/invoke/InvokeGenericTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/lang/invoke/JavaDocExamplesTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/invoke/JavaDocExamplesTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/invoke/MethodHandles/TestCatchException.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8027823
+ * @run junit test.java.lang.invoke.TestCatchException
+ */
+package test.java.lang.invoke;
+
+import java.lang.invoke.*;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class TestCatchException {
+ final static MethodHandles.Lookup LOOKUP = MethodHandles.lookup();
+ final static MethodType M_TYPE = MethodType.methodType(int.class, Object.class, Object.class, int.class, int.class, int.class, int.class, int.class, int.class, int.class);
+
+ private static int noThrow(Object o1, Object o2, int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
+ return 42;
+ }
+
+ private static int throwEx(Object o1, Object o2, int i1, int i2, int i3, int i4, int i5, int i6, int i7) throws Exception {
+ throw new Exception();
+ }
+
+ private static int handler(Exception e) {
+ return 17;
+ }
+
+ @Test
+ public void testNoThrowPath() throws Throwable {
+ MethodHandle target = LOOKUP.findStatic(TestCatchException.class, "noThrow", M_TYPE);
+ MethodHandle handler = LOOKUP.findStatic(TestCatchException.class, "handler", MethodType.methodType(int.class, Exception.class));
+
+ MethodHandle h = MethodHandles.catchException(target, Exception.class, handler);
+
+ int x = (int)h.invokeExact(new Object(), new Object(), 1, 2, 3, 4, 5, 6, 7);
+ assertEquals(x, 42);
+ }
+
+ @Test
+ public void testThrowPath() throws Throwable {
+ MethodHandle target = LOOKUP.findStatic(TestCatchException.class, "throwEx", M_TYPE);
+ MethodHandle handler = LOOKUP.findStatic(TestCatchException.class, "handler", MethodType.methodType(int.class, Exception.class));
+
+ MethodHandle h = MethodHandles.catchException(target, Exception.class, handler);
+
+ int x = (int)h.invokeExact(new Object(), new Object(), 1, 2, 3, 4, 5, 6, 7);
+ assertEquals(x, 17);
+ }
+
+ public static void main(String[] args) throws Throwable {
+ TestCatchException test = new TestCatchException();
+ test.testNoThrowPath();
+ test.testThrowPath();
+ System.out.println("TEST PASSED");
+ }
+}
--- a/jdk/test/java/lang/invoke/MethodHandlesTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/invoke/MethodHandlesTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/lang/invoke/PermuteArgsTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/invoke/PermuteArgsTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/lang/invoke/PrivateInvokeTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/invoke/PrivateInvokeTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/lang/invoke/RevealDirectTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/invoke/RevealDirectTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/lang/invoke/RicochetTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/invoke/RicochetTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/lang/invoke/TestCatchExceptionWithVarargs.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/invoke/TestCatchExceptionWithVarargs.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/lang/invoke/ThrowExceptionsTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/invoke/ThrowExceptionsTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/invoke/lambda/LambdaAsm.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,184 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8027232
+ * @summary ensures that j.l.i.InvokerByteCodeGenerator and ASM visitMethodInsn
+ * generate bytecodes with correct constant pool references
+ * @compile -XDignore.symbol.file LambdaAsm.java LUtils.java
+ * @run main/othervm LambdaAsm
+ */
+import com.sun.tools.classfile.Attribute;
+import com.sun.tools.classfile.ClassFile;
+import com.sun.tools.classfile.Code_attribute;
+import com.sun.tools.classfile.ConstantPool;
+import com.sun.tools.classfile.ConstantPool.CPInfo;
+import com.sun.tools.classfile.Instruction;
+import com.sun.tools.classfile.Method;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.util.ArrayList;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Path;
+import jdk.internal.org.objectweb.asm.ClassWriter;
+import jdk.internal.org.objectweb.asm.MethodVisitor;
+
+import static java.nio.file.Files.*;
+import static jdk.internal.org.objectweb.asm.Opcodes.*;
+
+public class LambdaAsm {
+
+ static final File TestFile = new File("A.java");
+
+ static void init() {
+ emitCode();
+ LUtils.compile(TestFile.getName());
+ LUtils.TestResult tr = LUtils.doExec(LUtils.JAVA_CMD.getAbsolutePath(),
+ "-Djdk.internal.lambda.dumpProxyClasses=.",
+ "-cp", ".", "A");
+ if (tr.exitValue != 0) {
+ System.out.println("Error: " + tr.toString());
+ throw new RuntimeException("could not create proxy classes");
+ }
+ }
+
+ static void emitCode() {
+ ArrayList<String> scratch = new ArrayList<>();
+ scratch.add("import java.util.function.*;");
+ scratch.add("class A {");
+ scratch.add(" interface I {");
+ scratch.add(" default Supplier<Integer> a() { return () -> 1; }");
+ scratch.add(" default Supplier<Integer> b(int i) { return () -> i; }");
+ scratch.add(" default Supplier<Integer> c(int i) { return () -> m(i); }");
+ scratch.add(" int m(int i);");
+ scratch.add(" static Integer d() { return 0; }");
+ scratch.add(" }");
+ scratch.add(" static class C implements I {");
+ scratch.add(" public int m(int i) { return i;}");
+ scratch.add(" }");
+ scratch.add(" public static void main(String[] args) {");
+ scratch.add(" I i = new C();");
+ scratch.add(" i.a();");
+ scratch.add(" i.b(1);");
+ scratch.add(" i.c(1);");
+ scratch.add(" I.d();");
+ scratch.add(" }");
+ scratch.add("}");
+ LUtils.createFile(TestFile, scratch);
+ }
+
+ static void checkMethod(String cname, String mname, ConstantPool cp,
+ Code_attribute code) throws ConstantPool.InvalidIndex {
+ for (Instruction i : code.getInstructions()) {
+ String iname = i.getMnemonic();
+ if ("invokespecial".equals(iname)
+ || "invokestatic".equals(iname)) {
+ int idx = i.getByte(2);
+ System.out.println("Verifying " + cname + ":" + mname +
+ " instruction:" + iname + " index @" + idx);
+ CPInfo cpinfo = cp.get(idx);
+ if (cpinfo instanceof ConstantPool.CONSTANT_Methodref_info) {
+ throw new RuntimeException("unexpected CP type expected "
+ + "InterfaceMethodRef, got MethodRef, " + cname
+ + ", " + mname);
+ }
+ }
+ }
+ }
+
+ static int checkMethod(ClassFile cf, String mthd) throws Exception {
+ if (cf.major_version < 52) {
+ throw new RuntimeException("unexpected class file version, in "
+ + cf.getName() + "expected 52, got " + cf.major_version);
+ }
+ int count = 0;
+ for (Method m : cf.methods) {
+ String mname = m.getName(cf.constant_pool);
+ if (mname.equals(mthd)) {
+ for (Attribute a : m.attributes) {
+ if ("Code".equals(a.getName(cf.constant_pool))) {
+ count++;
+ checkMethod(cf.getName(), mname, cf.constant_pool,
+ (Code_attribute) a);
+ }
+ }
+ }
+ }
+ return count;
+ }
+
+ static void verifyInvokerBytecodeGenerator() throws Exception {
+ int count = 0;
+ int mcount = 0;
+ try (DirectoryStream<Path> ds = newDirectoryStream(new File(".").toPath(),
+ // filter in lambda proxy classes
+ "A$I$$Lambda$?.class")) {
+ for (Path p : ds) {
+ System.out.println(p.toFile());
+ ClassFile cf = ClassFile.read(p.toFile());
+ // Check those methods implementing Supplier.get
+ mcount += checkMethod(cf, "get");
+ count++;
+ }
+ }
+ if (count < 3) {
+ throw new RuntimeException("unexpected number of files, "
+ + "expected atleast 3 files, but got only " + count);
+ }
+ if (mcount < 3) {
+ throw new RuntimeException("unexpected number of methods, "
+ + "expected atleast 3 methods, but got only " + mcount);
+ }
+ }
+
+ static void verifyASM() throws Exception {
+ ClassWriter cw = new ClassWriter(0);
+ cw.visit(V1_8, ACC_PUBLIC, "X", null, "java/lang/Object", null);
+ MethodVisitor mv = cw.visitMethod(ACC_STATIC, "foo",
+ "()V", null, null);
+ mv.visitMaxs(2, 1);
+ mv.visitMethodInsn(INVOKESTATIC,
+ "java/util/function/Function.class",
+ "identity", "()Ljava/util/function/Function;", true);
+ mv.visitInsn(RETURN);
+ cw.visitEnd();
+ byte[] carray = cw.toByteArray();
+ // for debugging
+ // write((new File("X.class")).toPath(), carray, CREATE, TRUNCATE_EXISTING);
+
+ // verify using javap/classfile reader
+ ClassFile cf = ClassFile.read(new ByteArrayInputStream(carray));
+ int mcount = checkMethod(cf, "foo");
+ if (mcount < 1) {
+ throw new RuntimeException("unexpected method count, expected 1" +
+ "but got " + mcount);
+ }
+ }
+
+ public static void main(String... args) throws Exception {
+ init();
+ verifyInvokerBytecodeGenerator();
+ verifyASM();
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/invoke/lambda/RepetitiveLambdaSerialization.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8027681
+ * @summary Lambda serialization fails once reflection proxy generation kicks in
+ * @author Robert Field
+ * @run main/othervm RepetitiveLambdaSerialization
+ * @run main/othervm -Dsun.reflect.noInflation=true RepetitiveLambdaSerialization
+ */
+
+import java.io.*;
+
+public class RepetitiveLambdaSerialization {
+
+ static final int REPS = 20;
+
+ public static void main(String[] args) throws Exception {
+ LSI ls = z -> "[" + z + "]";
+ for (int i = 0; i < REPS; ++i) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutput out = new ObjectOutputStream(baos);
+ out.writeObject(ls);
+ out.flush();
+ out.close();
+ }
+ System.out.println("Passed.");
+ }
+}
+
+interface LSI extends Serializable {
+ String convert(String x);
+}
--- a/jdk/test/java/lang/invoke/remote/RemoteExample.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/invoke/remote/RemoteExample.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/lang/management/RuntimeMXBean/UpTime.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/management/RuntimeMXBean/UpTime.java Wed Jul 05 19:22:42 2017 +0200
@@ -33,30 +33,34 @@
public class UpTime {
final static long DELAY = 5; // Seconds
final static long TIMEOUT = 30; // Minutes
- private static RuntimeMXBean metrics
+ final static long MULTIPLIER = 1000; // millisecond ticks
+
+ private static final RuntimeMXBean metrics
= ManagementFactory.getRuntimeMXBean();
public static void main(String argv[]) throws Exception {
long jvmStartTime = metrics.getStartTime();
- long systemStartOuter = System.currentTimeMillis();
+ // this will get an aproximate JVM uptime before starting this test
+ long jvmUptime = System.currentTimeMillis() - jvmStartTime;
+ long systemStartOuter = System_milliTime();
long metricsStart = metrics.getUptime();
- long systemStartInner = System.currentTimeMillis();
+ long systemStartInner = System_milliTime();
// This JVM might have been running for some time if this test runs
// in samevm mode. The sanity check should apply to the test uptime.
- long testUptime = metricsStart - (systemStartOuter - jvmStartTime);
+ long testUptime = metricsStart - jvmUptime;
// If uptime is more than 30 minutes then it looks like a bug in
// the method
- if (testUptime > TIMEOUT * 60 * 1000)
+ if (testUptime > TIMEOUT * 60 * MULTIPLIER)
throw new RuntimeException("Uptime of the JVM is more than 30 "
+ "minutes ("
- + (metricsStart / 60 / 1000)
+ + (metricsStart / 60 / MULTIPLIER)
+ " minutes).");
// Wait for DELAY seconds
Object o = new Object();
- while (System.currentTimeMillis() < systemStartInner + DELAY * 1000) {
+ while (System_milliTime() < systemStartInner + DELAY * MULTIPLIER) {
synchronized (o) {
try {
o.wait(DELAY * 1000);
@@ -67,23 +71,27 @@
}
}
- long systemEndInner = System.currentTimeMillis();
+ long systemEndInner = System_milliTime();
long metricsEnd = metrics.getUptime();
- long systemEndOuter = System.currentTimeMillis();
+ long systemEndOuter = System_milliTime();
long systemDifferenceInner = systemEndInner - systemStartInner;
long systemDifferenceOuter = systemEndOuter - systemStartOuter;
long metricsDifference = metricsEnd - metricsStart;
// Check the flow of time in RuntimeMXBean.getUptime(). See the
- // picture below
- if (metricsDifference < systemDifferenceInner)
+ // picture below.
+ // The measured times can be off by 1 due to conversions from
+ // nanoseconds to milliseconds, using different channels to read the
+ // HR timer and rounding error. Bigger difference will make the test
+ // fail.
+ if (metricsDifference - systemDifferenceInner < -1)
throw new RuntimeException("Flow of the time in "
+ "RuntimeMXBean.getUptime() ("
+ metricsDifference + ") is slower than "
+ " in system (" + systemDifferenceInner
+ ")");
- if (metricsDifference > systemDifferenceOuter)
+ if (metricsDifference - systemDifferenceOuter > 1)
throw new RuntimeException("Flow of the time in "
+ "RuntimeMXBean.getUptime() ("
+ metricsDifference + ") is faster than "
@@ -92,6 +100,10 @@
System.out.println("Test passed.");
}
+
+ private static long System_milliTime() {
+ return System.nanoTime() / 1000000; // nanoseconds / milliseconds;
+ }
}
/*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/management/ThreadMXBean/ThreadMXBeanStateTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,230 @@
+/*
+ * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4967283 5080203 8022208
+ * @summary Basic unit test of thread states returned by
+ * ThreadMXBean.getThreadInfo.getThreadState().
+ * It also tests lock information returned by ThreadInfo.
+ *
+ * @author Mandy Chung
+ *
+ * @library ../../Thread
+ * @build ThreadMXBeanStateTest ThreadStateController
+ * @run main ThreadMXBeanStateTest
+ */
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.ThreadMXBean;
+import java.lang.management.ThreadInfo;
+import static java.lang.Thread.State.*;
+
+public class ThreadMXBeanStateTest {
+ private static final ThreadMXBean tm = ManagementFactory.getThreadMXBean();
+
+ static class Lock {
+ private String name;
+ Lock(String name) {
+ this.name = name;
+ }
+ public String toString() {
+ return name;
+ }
+ }
+ private static Lock globalLock = new Lock("my lock");
+
+ public static void main(String[] argv) throws Exception {
+ // Force thread state initialization now before the test
+ // verification begins.
+ Thread.currentThread().getState();
+ ThreadStateController thread = new ThreadStateController("StateChanger", globalLock);
+ thread.setDaemon(true);
+
+ // before myThread starts
+ thread.checkThreadState(NEW);
+
+ thread.start();
+ thread.transitionTo(RUNNABLE);
+ thread.checkThreadState(RUNNABLE);
+ checkLockInfo(thread, RUNNABLE, null, null);
+
+ thread.suspend();
+ ThreadStateController.pause(10);
+ thread.checkThreadState(RUNNABLE);
+ checkSuspendedThreadState(thread, RUNNABLE);
+ thread.resume();
+
+ synchronized (globalLock) {
+ thread.transitionTo(BLOCKED);
+ thread.checkThreadState(BLOCKED);
+ checkLockInfo(thread, BLOCKED,
+ globalLock, Thread.currentThread());
+ }
+
+ thread.transitionTo(WAITING);
+ thread.checkThreadState(WAITING);
+ checkLockInfo(thread, Thread.State.WAITING,
+ globalLock, null);
+
+ thread.transitionTo(TIMED_WAITING);
+ thread.checkThreadState(TIMED_WAITING);
+ checkLockInfo(thread, TIMED_WAITING,
+ globalLock, null);
+
+
+ thread.transitionToPark(true /* timed park */);
+ thread.checkThreadState(TIMED_WAITING);
+ checkLockInfo(thread, TIMED_WAITING, null, null);
+
+ thread.transitionToPark(false /* indefinite park */);
+ thread.checkThreadState(WAITING);
+ checkLockInfo(thread, WAITING, null, null);
+
+ thread.transitionToSleep();
+ thread.checkThreadState(TIMED_WAITING);
+ checkLockInfo(thread, TIMED_WAITING, null, null);
+
+ thread.transitionTo(TERMINATED);
+ thread.checkThreadState(TERMINATED);
+
+ try {
+ thread.join();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ System.out.println("TEST FAILED: Unexpected exception.");
+ throw new RuntimeException(e);
+ }
+ System.out.println("Test passed.");
+ }
+
+ private static void checkSuspendedThreadState(ThreadStateController t, Thread.State state) {
+ ThreadInfo info = getThreadInfo(t, state);
+ if (info == null) {
+ throw new RuntimeException(t.getName() +
+ " expected to have ThreadInfo " +
+ " but got null.");
+ }
+
+ if (info.getThreadState() != state) {
+ throw new RuntimeException(t.getName() + " expected to be in " +
+ state + " state but got " + info.getThreadState());
+ }
+
+ if (!info.isSuspended()) {
+ throw new RuntimeException(t.getName() + " expected to be suspended " +
+ " but isSuspended() returns " + info.isSuspended());
+ }
+ }
+
+ private static String getLockName(Object lock) {
+ if (lock == null) return null;
+
+ return lock.getClass().getName() + '@' +
+ Integer.toHexString(System.identityHashCode(lock));
+ }
+
+ // maximum number of retries when checking for thread state.
+ private static final int MAX_RETRY = 500;
+ private static ThreadInfo getThreadInfo(ThreadStateController t, Thread.State expected) {
+ // wait for the thread to transition to the expected state.
+ // There is a small window between the thread checking the state
+ // and the thread actual entering that state.
+ int retryCount=0;
+ ThreadInfo info = tm.getThreadInfo(t.getId());
+ while (info.getThreadState() != expected && retryCount < MAX_RETRY) {
+ ThreadStateController.pause(10);
+ retryCount++;
+ info = tm.getThreadInfo(t.getId());
+ }
+ return info;
+ }
+
+ private static void checkLockInfo(ThreadStateController t, Thread.State state,
+ Object lock, Thread owner) {
+ ThreadInfo info = getThreadInfo(t, state);
+ if (info == null) {
+ throw new RuntimeException(t.getName() +
+ " expected to have ThreadInfo " +
+ " but got null.");
+ }
+
+ if (info.getThreadState() != state) {
+ throw new RuntimeException(t.getName() + " expected to be in " +
+ state + " state but got " + info.getThreadState());
+ }
+
+ if (lock == null && info.getLockName() != null) {
+ throw new RuntimeException(t.getName() +
+ " expected not to be blocked on any lock" +
+ " but got " + info.getLockName());
+ }
+ String expectedLockName = getLockName(lock);
+ if (lock != null && info.getLockName() == null) {
+ throw new RuntimeException(t.getName() +
+ " expected to be blocked on lock [" + expectedLockName +
+ "] but got null.");
+ }
+
+ if (lock != null && !expectedLockName.equals(info.getLockName())) {
+ throw new RuntimeException(t.getName() +
+ " expected to be blocked on lock [" + expectedLockName +
+ "] but got [" + info.getLockName() + "].");
+ }
+
+ if (owner == null && info.getLockOwnerName() != null) {
+ throw new RuntimeException("Lock owner is expected " +
+ " to be null but got " + info.getLockOwnerName());
+ }
+
+ if (owner != null && info.getLockOwnerName() == null) {
+ throw new RuntimeException("Lock owner is expected to be " +
+ owner.getName() +
+ " but got null.");
+ }
+ if (owner != null && !info.getLockOwnerName().equals(owner.getName())) {
+ throw new RuntimeException("Lock owner is expected to be " +
+ owner.getName() +
+ " but got " + owner.getName());
+ }
+ if (owner == null && info.getLockOwnerId() != -1) {
+ throw new RuntimeException("Lock owner is expected " +
+ " to be -1 but got " + info.getLockOwnerId());
+ }
+
+ if (owner != null && info.getLockOwnerId() <= 0) {
+ throw new RuntimeException("Lock owner is expected to be " +
+ owner.getName() + "(id = " + owner.getId() +
+ ") but got " + info.getLockOwnerId());
+ }
+ if (owner != null && info.getLockOwnerId() != owner.getId()) {
+ throw new RuntimeException("Lock owner is expected to be " +
+ owner.getName() + "(id = " + owner.getId() +
+ ") but got " + info.getLockOwnerId());
+ }
+ if (info.isSuspended()) {
+ throw new RuntimeException(t.getName() +
+ " isSuspended() returns " + info.isSuspended());
+ }
+ }
+}
--- a/jdk/test/java/lang/management/ThreadMXBean/ThreadStateTest.java Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,424 +0,0 @@
-/*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 4967283 5080203
- * @summary Basic unit test of thread states returned by
- * ThreadMXBean.getThreadInfo.getThreadState().
- * It also tests lock information returned by ThreadInfo.
- *
- * @author Mandy Chung
- *
- * @build ThreadExecutionSynchronizer Utils
- * @run main ThreadStateTest
- */
-
-import java.lang.management.ManagementFactory;
-import java.lang.management.ThreadMXBean;
-import java.lang.management.ThreadInfo;
-
-import java.util.concurrent.locks.LockSupport;
-
-public class ThreadStateTest {
- private static final ThreadMXBean tm = ManagementFactory.getThreadMXBean();
-
- static class Lock {
- private String name;
- Lock(String name) {
- this.name = name;
- }
- public String toString() {
- return name;
- }
- }
- private static Lock globalLock = new Lock("my lock");
-
- public static void main(String[] argv) {
- // Force thread state initialization now before the test
- // verification begins.
- Thread.currentThread().getState();
-
- MyThread myThread = new MyThread("MyThread");
-
- // before myThread starts
- // Utils.checkThreadState(myThread, Thread.State.NEW);
-
- myThread.start();
- myThread.waitUntilStarted();
- Utils.checkThreadState(myThread, Thread.State.RUNNABLE);
- checkLockInfo(myThread, Thread.State.RUNNABLE, null, null);
-
- myThread.suspend();
- Utils.goSleep(10);
- checkSuspendedThreadState(myThread, Thread.State.RUNNABLE);
- myThread.resume();
-
- synchronized (globalLock) {
- myThread.goBlocked();
- Utils.checkThreadState(myThread, Thread.State.BLOCKED);
- checkLockInfo(myThread, Thread.State.BLOCKED,
- globalLock, Thread.currentThread());
- }
-
- myThread.goWaiting();
- Utils.checkThreadState(myThread, Thread.State.WAITING);
- checkLockInfo(myThread, Thread.State.WAITING,
- globalLock, null);
-
- myThread.goTimedWaiting();
- Utils.checkThreadState(myThread, Thread.State.TIMED_WAITING);
- checkLockInfo(myThread, Thread.State.TIMED_WAITING,
- globalLock, null);
-
-
-
- /*
- *********** parkUntil seems not working
- * ignore this park case for now.
-
- Bug ID : 5062095
- ***********************************************
- myThread.goParked();
- Utils.checkThreadState(myThread, Thread.State.WAITING);
- checkLockInfo(myThread, Thread.State.WAITING, null, null);
-
- myThread.goTimedParked();
- Utils.checkThreadState(myThread, Thread.State.TIMED_WAITING);
- checkLockInfo(myThread, Thread.State.TIMED_WAITING, null, null);
-
- */
-
- myThread.goSleeping();
- Utils.checkThreadState(myThread, Thread.State.TIMED_WAITING);
- checkLockInfo(myThread, Thread.State.TIMED_WAITING, null, null);
-
-
- myThread.terminate();
- // Utils.checkThreadState(myThread, ThreadState.TERMINATED);
-
- try {
- myThread.join();
- } catch (InterruptedException e) {
- e.printStackTrace();
- System.out.println("TEST FAILED: Unexpected exception.");
- throw new RuntimeException(e);
- }
- System.out.println("Test passed.");
- }
-
- private static void checkSuspendedThreadState(Thread t, Thread.State state) {
- ThreadInfo info = tm.getThreadInfo(t.getId());
- if (info == null) {
- throw new RuntimeException(t.getName() +
- " expected to have ThreadInfo " +
- " but got null.");
- }
-
- if (info.getThreadState() != state) {
- throw new RuntimeException(t.getName() + " expected to be in " +
- state + " state but got " + info.getThreadState());
- }
-
- if (!info.isSuspended()) {
- throw new RuntimeException(t.getName() + " expected to be suspended " +
- " but isSuspended() returns " + info.isSuspended());
- }
- Utils.checkThreadState(t, state);
- }
-
- private static String getLockName(Object lock) {
- if (lock == null) return null;
-
- return lock.getClass().getName() + '@' +
- Integer.toHexString(System.identityHashCode(lock));
- }
-
- private static void checkLockInfo(Thread t, Thread.State state, Object lock, Thread owner) {
- ThreadInfo info = tm.getThreadInfo(t.getId());
- if (info == null) {
- throw new RuntimeException(t.getName() +
- " expected to have ThreadInfo " +
- " but got null.");
- }
-
- if (info.getThreadState() != state) {
- throw new RuntimeException(t.getName() + " expected to be in " +
- state + " state but got " + info.getThreadState());
- }
-
- if (lock == null && info.getLockName() != null) {
- throw new RuntimeException(t.getName() +
- " expected not to be blocked on any lock" +
- " but got " + info.getLockName());
- }
- String expectedLockName = getLockName(lock);
- if (lock != null && info.getLockName() == null) {
- throw new RuntimeException(t.getName() +
- " expected to be blocked on lock [" + expectedLockName +
- "] but got null.");
- }
-
- if (lock != null && !expectedLockName.equals(info.getLockName())) {
- throw new RuntimeException(t.getName() +
- " expected to be blocked on lock [" + expectedLockName +
- "] but got [" + info.getLockName() + "].");
- }
-
- if (owner == null && info.getLockOwnerName() != null) {
- throw new RuntimeException("Lock owner is expected " +
- " to be null but got " + info.getLockOwnerName());
- }
-
- if (owner != null && info.getLockOwnerName() == null) {
- throw new RuntimeException("Lock owner is expected to be " +
- owner.getName() +
- " but got null.");
- }
- if (owner != null && !info.getLockOwnerName().equals(owner.getName())) {
- throw new RuntimeException("Lock owner is expected to be " +
- owner.getName() +
- " but got " + owner.getName());
- }
- if (owner == null && info.getLockOwnerId() != -1) {
- throw new RuntimeException("Lock owner is expected " +
- " to be -1 but got " + info.getLockOwnerId());
- }
-
- if (owner != null && info.getLockOwnerId() <= 0) {
- throw new RuntimeException("Lock owner is expected to be " +
- owner.getName() + "(id = " + owner.getId() +
- ") but got " + info.getLockOwnerId());
- }
- if (owner != null && info.getLockOwnerId() != owner.getId()) {
- throw new RuntimeException("Lock owner is expected to be " +
- owner.getName() + "(id = " + owner.getId() +
- ") but got " + info.getLockOwnerId());
- }
- if (info.isSuspended()) {
- throw new RuntimeException(t.getName() +
- " isSuspended() returns " + info.isSuspended());
- }
- }
-
- static class MyThread extends Thread {
- private ThreadExecutionSynchronizer thrsync = new ThreadExecutionSynchronizer();
-
- MyThread(String name) {
- super(name);
- }
-
- private final int RUNNABLE = 0;
- private final int BLOCKED = 1;
- private final int WAITING = 2;
- private final int TIMED_WAITING = 3;
- private final int PARKED = 4;
- private final int TIMED_PARKED = 5;
- private final int SLEEPING = 6;
- private final int TERMINATE = 7;
- private int state = RUNNABLE;
-
- private boolean done = false;
- public void run() {
- // Signal main thread to continue.
- thrsync.signal();
- while (!done) {
- switch (state) {
- case RUNNABLE: {
- double sum = 0;
- for (int i = 0; i < 1000; i++) {
- double r = Math.random();
- double x = Math.pow(3, r);
- sum += x - r;
- }
- break;
- }
- case BLOCKED: {
- // signal main thread.
- thrsync.signal();
- System.out.println(" myThread is going to block.");
- synchronized (globalLock) {
- // finish blocking
- state = RUNNABLE;
- }
- break;
- }
- case WAITING: {
- synchronized (globalLock) {
- // signal main thread.
- thrsync.signal();
- System.out.println(" myThread is going to wait.");
- try {
- globalLock.wait();
- } catch (InterruptedException e) {
- // ignore
- }
- }
- break;
- }
- case TIMED_WAITING: {
- synchronized (globalLock) {
- // signal main thread.
- thrsync.signal();
- System.out.println(" myThread is going to timed wait.");
- try {
- globalLock.wait(10000);
- } catch (InterruptedException e) {
- // ignore
- }
- }
- break;
- }
- case PARKED: {
- // signal main thread.
- thrsync.signal();
- System.out.println(" myThread is going to park.");
- LockSupport.park();
- // give a chance for the main thread to block
- System.out.println(" myThread is going to park.");
- Utils.goSleep(10);
- break;
- }
- case TIMED_PARKED: {
- // signal main thread.
- thrsync.signal();
- System.out.println(" myThread is going to timed park.");
- long deadline = System.currentTimeMillis() + 10000*1000;
- LockSupport.parkUntil(deadline);
-
- // give a chance for the main thread to block
- Utils.goSleep(10);
- break;
- }
- case SLEEPING: {
- // signal main thread.
- thrsync.signal();
- System.out.println(" myThread is going to sleep.");
- try {
- Thread.sleep(1000000);
- } catch (InterruptedException e) {
- // finish sleeping
- interrupted();
- }
- break;
- }
- case TERMINATE: {
- done = true;
- // signal main thread.
- thrsync.signal();
- break;
- }
- default:
- break;
- }
- }
- }
- public void waitUntilStarted() {
- // wait for MyThread.
- thrsync.waitForSignal();
- Utils.goSleep(10);
- }
-
- public void goBlocked() {
- System.out.println("Waiting myThread to go blocked.");
- setState(BLOCKED);
- // wait for MyThread to get blocked
- thrsync.waitForSignal();
- Utils.goSleep(20);
- }
-
- public void goWaiting() {
- System.out.println("Waiting myThread to go waiting.");
- setState(WAITING);
- // wait for MyThread to wait on object.
- thrsync.waitForSignal();
- Utils.goSleep(20);
- }
- public void goTimedWaiting() {
- System.out.println("Waiting myThread to go timed waiting.");
- setState(TIMED_WAITING);
- // wait for MyThread timed wait call.
- thrsync.waitForSignal();
- Utils.goSleep(20);
- }
- public void goParked() {
- System.out.println("Waiting myThread to go parked.");
- setState(PARKED);
- // wait for MyThread state change to PARKED.
- thrsync.waitForSignal();
- Utils.goSleep(20);
- }
- public void goTimedParked() {
- System.out.println("Waiting myThread to go timed parked.");
- setState(TIMED_PARKED);
- // wait for MyThread.
- thrsync.waitForSignal();
- Utils.goSleep(20);
- }
-
- public void goSleeping() {
- System.out.println("Waiting myThread to go sleeping.");
- setState(SLEEPING);
- // wait for MyThread.
- thrsync.waitForSignal();
- Utils.goSleep(20);
- }
- public void terminate() {
- System.out.println("Waiting myThread to terminate.");
- setState(TERMINATE);
- // wait for MyThread.
- thrsync.waitForSignal();
- Utils.goSleep(20);
- }
-
- private void setState(int newState) {
- switch (state) {
- case BLOCKED:
- while (state == BLOCKED) {
- Utils.goSleep(20);
- }
- state = newState;
- break;
- case WAITING:
- case TIMED_WAITING:
- state = newState;
- synchronized (globalLock) {
- globalLock.notify();
- }
- break;
- case PARKED:
- case TIMED_PARKED:
- state = newState;
- LockSupport.unpark(this);
- break;
- case SLEEPING:
- state = newState;
- this.interrupt();
- break;
- default:
- state = newState;
- break;
- }
- }
- }
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/ref/FinalizeOverride.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/* @test
+ * @bug 8027351
+ * @summary Basic test of the finalize method
+ */
+
+public class FinalizeOverride {
+ // finalizedCount is incremented when the finalize method is invoked
+ private static AtomicInteger finalizedCount = new AtomicInteger();
+
+ // finalizedSum and privateFinalizedInvoke are used to verify
+ // the right overrided finalize method is invoked
+ private static AtomicInteger finalizedSum = new AtomicInteger();
+ private static volatile boolean privateFinalizeInvoked = false;
+
+ public static void main(String[] argvs) throws IOException {
+ patchPrivateFinalize();
+
+ test(new Base(10), 10);
+ test(new Subclass(20), 0);
+ test(new SubSubclass(30), 30);
+ test(new PublicFinalize(40), 40*100+40);
+ test(new PrivateFinalize(50), 50);
+ test(new NoOverride(60), 60);
+ }
+
+ static void test(Object o, int expected) {
+ int count = finalizedCount.get();
+ int sum = finalizedSum.get();
+ privateFinalizeInvoked = false;
+
+ // force GC and finalization
+ o = null;
+ while (finalizedCount.get() != (count+1)) {
+ System.gc();
+ System.runFinalization();
+ }
+
+ if (privateFinalizeInvoked) {
+ throw new RuntimeException("private finalize method invoked");
+ }
+ if (finalizedCount.get() != (count+1)) {
+ throw new RuntimeException("Unexpected count=" + finalizedCount +
+ " expected=" + (count+1));
+ }
+ if (finalizedSum.get() != (sum+expected)) {
+ throw new RuntimeException("Unexpected sum=" + finalizedSum +
+ " prev=" + sum + " value=" + expected);
+ }
+ }
+
+ static void patchPrivateFinalize() throws IOException {
+ // patch the private f_nal_ze method name to "finalize"
+ String testClasses = System.getProperty("test.classes", ".");
+ Path p = Paths.get(testClasses, "FinalizeOverride$PrivateFinalize.class");
+ byte[] bytes = Files.readAllBytes(p);
+ int len = "f_nal_ze".length();
+ for (int i=0; i < bytes.length-len; i++) {
+ if (bytes[i] == 'f' &&
+ bytes[i+1] == '_' &&
+ bytes[i+2] == 'n' &&
+ bytes[i+3] == 'a' &&
+ bytes[i+4] == 'l' &&
+ bytes[i+5] == '_' &&
+ bytes[i+6] == 'z' &&
+ bytes[i+7] == 'e')
+ {
+ // s%_%i%
+ bytes[i+1] = 'i';
+ bytes[i+5] = 'i';
+ break;
+ }
+ }
+ Files.write(p, bytes);
+ }
+
+ static class Base {
+ protected int value;
+ Base(int v) {
+ this.value = v;
+ }
+ int called() {
+ finalizedSum.addAndGet(value);
+ return value;
+ }
+ protected void finalize() {
+ System.out.println("Base.finalize() sum += " + called());
+ finalizedCount.incrementAndGet();
+ }
+ }
+ static class PublicFinalize extends Base {
+ PublicFinalize(int v) {
+ super(v);
+ }
+ public void finalize() {
+ finalizedSum.addAndGet(value * 100);
+ System.out.println("PublicFinalize.finalize() sum += " + called() +
+ "+"+value+"*100");
+ finalizedCount.incrementAndGet();
+ }
+ }
+ static class Subclass extends Base {
+ Subclass(int v) {
+ super(v);
+ }
+ protected void finalize() {
+ // no value added to sum
+ System.out.println("Subclass.finalize() sum += 0");
+ finalizedCount.incrementAndGet();
+ }
+ }
+ static class SubSubclass extends Subclass {
+ SubSubclass(int v) {
+ super(v);
+ }
+ protected final void finalize() {
+ finalizedSum.addAndGet(value);
+ System.out.println("SubSubclass.finalize() sum +=" +value);
+ finalizedCount.incrementAndGet();
+ }
+ }
+ static class PrivateFinalize extends Base {
+ PrivateFinalize(int v) {
+ super(v);
+ }
+ private void f_nal_ze() {
+ // finalization catches any exception
+ System.out.println("Error: private finalize invoked!!");
+ privateFinalizeInvoked = true;
+ finalizedCount.incrementAndGet();
+ }
+ }
+ static class NoOverride extends PrivateFinalize {
+ NoOverride(int v) {
+ super(v);
+ }
+ }
+}
--- a/jdk/test/java/lang/ref/ReferenceEnqueuePending.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/ref/ReferenceEnqueuePending.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,4 +1,5 @@
-/* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
--- a/jdk/test/java/lang/reflect/Method/DefaultMethodModeling.java Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,253 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 8011590
- * @summary Check modeling of default methods
- * @author Joseph D. Darcy
- */
-
-import java.util.Objects;
-import java.lang.reflect.*;
-import java.lang.annotation.*;
-
-import static java.lang.reflect.Modifier.*;
-
-public class DefaultMethodModeling {
- public static void main(String... args) {
- int failures = 0;
-
- Class<?>[] classes = {SuperC.class, SuperCchild.class,
- SuperI.class, SuperIchild.class,
- SuperIwithDefault.class, SuperIwithDefaultChild.class,
- Base.class, Combo1.class, Combo2.class,
- SonSuperIwithDefault.class, DaughterSuperIwithDefault.class, GrandchildSuperIwithDefault.class, D.class,
- B.class, C.class, B1.class, D1.class
- };
-
- for(Class<?> clazz : classes) {
- System.err.println(clazz.toString());
- for(Method m : clazz.getMethods()) {
- if (m.getDeclaringClass() != java.lang.Object.class)
- failures += testMethod(m);
- }
- }
-
- if (failures > 0)
- throw new RuntimeException();
- }
-
- private static int testMethod(Method m) {
- ExpectedModel em = Objects.requireNonNull(m.getAnnotation(ExpectedModel.class));
- boolean failed = false;
-
- if (m.getModifiers() != em.modifiers()) {
- failed = true;
- System.err.printf("Unexpected modifiers %d; expected %d%n", m.getModifiers(), em.modifiers());
- }
-
- if (m.isDefault() != em.isDefault()) {
- failed = true;
- System.err.printf("Unexpected isDefualt %b; expected b%n", m.isDefault(), em.isDefault());
- }
-
- if (!m.getDeclaringClass().equals(em.declaringClass())) {
- failed = true;
- System.err.printf("Unexpected isDefualt %s; expected %s%n",
- m.getDeclaringClass().toString(), em.declaringClass().toString());
- }
-
- return (!failed) ? 0 :1;
- }
-}
-
-@Retention(RetentionPolicy.RUNTIME)
-@interface ExpectedModel {
- boolean isDefault() default false;
- int modifiers() default PUBLIC;
- Class<?> declaringClass();
-}
-
-abstract class SuperC {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperC.class)
- public abstract void foo();
-
- @ExpectedModel(declaringClass=SuperC.class)
- public void bar() {
- ;
- }
-}
-
-class SuperCchild extends SuperC {
- @ExpectedModel(declaringClass=SuperCchild.class)
- @Override
- public void foo() {;}
-}
-
-// -=-=-=-
-
-interface SuperI {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperI.class)
- void foo();
-
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperI.class)
- void bar();
-}
-
-class SuperIchild implements SuperI {
- @ExpectedModel(declaringClass=SuperIchild.class)
- public void foo() {;}
-
- @ExpectedModel(declaringClass=SuperIchild.class)
- public void bar() {;}
-}
-
-// -=-=-=-
-
-interface SuperIwithDefault {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperIwithDefault.class)
- void foo();
-
- @ExpectedModel(isDefault=true, declaringClass=SuperIwithDefault.class)
- default void bar() {
- ;
- }
-}
-
-class SuperIwithDefaultChild implements SuperIwithDefault {
- @ExpectedModel(declaringClass=SuperIwithDefaultChild.class)
- @Override
- public void foo() {;}
-}
-
-// -=-=-=-
-
-abstract class Base {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=Base.class)
- abstract public void baz();
-
- @ExpectedModel(declaringClass=Base.class)
- public void quux() {;}
-}
-
-abstract class Combo1 extends Base implements SuperI {
- @ExpectedModel(declaringClass=Combo1.class)
- public void wombat() {}
-}
-
-abstract class Combo2 extends Base implements SuperIwithDefault {
- @ExpectedModel(declaringClass=Combo2.class)
- public void wombat() {}
-}
-
-// -=-=-=-
-
-interface SonSuperIwithDefault extends SuperIwithDefault {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SonSuperIwithDefault.class)
- void baz();
-
- @ExpectedModel(isDefault=true, declaringClass=SonSuperIwithDefault.class)
- default void bazD() {;}
-}
-
-interface DaughterSuperIwithDefault extends SuperIwithDefault {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=DaughterSuperIwithDefault.class)
- void quux();
-
- @ExpectedModel(isDefault=true, declaringClass=DaughterSuperIwithDefault.class)
- default void quuxD() {;}
-}
-
-interface GrandchildSuperIwithDefault extends SonSuperIwithDefault, DaughterSuperIwithDefault {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=GrandchildSuperIwithDefault.class)
- void wombat();
-
- @ExpectedModel(isDefault=true, declaringClass=GrandchildSuperIwithDefault.class)
- default void wombatD() {;}
-
-}
-
-class D implements GrandchildSuperIwithDefault {
- @ExpectedModel(declaringClass=D.class)
- public void wombat(){}
-
- @ExpectedModel(declaringClass=D.class)
- public void baz(){}
-
- @ExpectedModel(declaringClass=D.class)
- public void foo(){}
-
- @ExpectedModel(declaringClass=D.class)
- public void quux(){}
-}
-
-class D1 implements SonSuperIwithDefault, DaughterSuperIwithDefault {
- @ExpectedModel(declaringClass=D1.class)
- public void foo(){}
-
- @ExpectedModel(declaringClass=D1.class)
- public void baz(){}
-
- @ExpectedModel(declaringClass=D1.class)
- public void quux(){}
-}
-
-// -=-=-=-
-
-// What does re-abstraction look like?
-
-class A implements SuperIwithDefault {
- @ExpectedModel(declaringClass=A.class)
- @Override
- public void foo(){;}
-}
-
-abstract class B extends A {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=B.class)
- @Override
- public abstract void bar();
-}
-
-class C extends B implements SuperIwithDefault {
- @ExpectedModel(declaringClass=C.class)
- public void bar(){}
-}
-
-abstract class A1 implements SonSuperIwithDefault {
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=A1.class)
- public abstract void baz();
-
- @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=A1.class)
- public abstract void foo();
-}
-
-class B1 extends A1 {
- @ExpectedModel(declaringClass=B1.class)
- @Override
- public void foo(){;}
-
- @ExpectedModel(declaringClass=B1.class)
- @Override
- public void baz(){}
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/reflect/Method/defaultMethodModeling/DefaultMethodModeling.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,253 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8011590
+ * @summary Check modeling of default methods
+ * @author Joseph D. Darcy
+ */
+
+import java.util.Objects;
+import java.lang.reflect.*;
+import java.lang.annotation.*;
+
+import static java.lang.reflect.Modifier.*;
+
+public class DefaultMethodModeling {
+ public static void main(String... args) {
+ int failures = 0;
+
+ Class<?>[] classes = {SuperC.class, SuperCchild.class,
+ SuperI.class, SuperIchild.class,
+ SuperIwithDefault.class, SuperIwithDefaultChild.class,
+ Base.class, Combo1.class, Combo2.class,
+ SonSuperIwithDefault.class, DaughterSuperIwithDefault.class, GrandchildSuperIwithDefault.class, D.class,
+ B.class, C.class, B1.class, D1.class
+ };
+
+ for(Class<?> clazz : classes) {
+ System.err.println(clazz.toString());
+ for(Method m : clazz.getMethods()) {
+ if (m.getDeclaringClass() != java.lang.Object.class)
+ failures += testMethod(m);
+ }
+ }
+
+ if (failures > 0)
+ throw new RuntimeException();
+ }
+
+ private static int testMethod(Method m) {
+ ExpectedModel em = Objects.requireNonNull(m.getAnnotation(ExpectedModel.class));
+ boolean failed = false;
+
+ if (m.getModifiers() != em.modifiers()) {
+ failed = true;
+ System.err.printf("Unexpected modifiers %d; expected %d%n", m.getModifiers(), em.modifiers());
+ }
+
+ if (m.isDefault() != em.isDefault()) {
+ failed = true;
+ System.err.printf("Unexpected isDefualt %b; expected b%n", m.isDefault(), em.isDefault());
+ }
+
+ if (!m.getDeclaringClass().equals(em.declaringClass())) {
+ failed = true;
+ System.err.printf("Unexpected isDefualt %s; expected %s%n",
+ m.getDeclaringClass().toString(), em.declaringClass().toString());
+ }
+
+ return (!failed) ? 0 :1;
+ }
+}
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface ExpectedModel {
+ boolean isDefault() default false;
+ int modifiers() default PUBLIC;
+ Class<?> declaringClass();
+}
+
+abstract class SuperC {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperC.class)
+ public abstract void foo();
+
+ @ExpectedModel(declaringClass=SuperC.class)
+ public void bar() {
+ ;
+ }
+}
+
+class SuperCchild extends SuperC {
+ @ExpectedModel(declaringClass=SuperCchild.class)
+ @Override
+ public void foo() {;}
+}
+
+// -=-=-=-
+
+interface SuperI {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperI.class)
+ void foo();
+
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperI.class)
+ void bar();
+}
+
+class SuperIchild implements SuperI {
+ @ExpectedModel(declaringClass=SuperIchild.class)
+ public void foo() {;}
+
+ @ExpectedModel(declaringClass=SuperIchild.class)
+ public void bar() {;}
+}
+
+// -=-=-=-
+
+interface SuperIwithDefault {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SuperIwithDefault.class)
+ void foo();
+
+ @ExpectedModel(isDefault=true, declaringClass=SuperIwithDefault.class)
+ default void bar() {
+ ;
+ }
+}
+
+class SuperIwithDefaultChild implements SuperIwithDefault {
+ @ExpectedModel(declaringClass=SuperIwithDefaultChild.class)
+ @Override
+ public void foo() {;}
+}
+
+// -=-=-=-
+
+abstract class Base {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=Base.class)
+ abstract public void baz();
+
+ @ExpectedModel(declaringClass=Base.class)
+ public void quux() {;}
+}
+
+abstract class Combo1 extends Base implements SuperI {
+ @ExpectedModel(declaringClass=Combo1.class)
+ public void wombat() {}
+}
+
+abstract class Combo2 extends Base implements SuperIwithDefault {
+ @ExpectedModel(declaringClass=Combo2.class)
+ public void wombat() {}
+}
+
+// -=-=-=-
+
+interface SonSuperIwithDefault extends SuperIwithDefault {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=SonSuperIwithDefault.class)
+ void baz();
+
+ @ExpectedModel(isDefault=true, declaringClass=SonSuperIwithDefault.class)
+ default void bazD() {;}
+}
+
+interface DaughterSuperIwithDefault extends SuperIwithDefault {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=DaughterSuperIwithDefault.class)
+ void quux();
+
+ @ExpectedModel(isDefault=true, declaringClass=DaughterSuperIwithDefault.class)
+ default void quuxD() {;}
+}
+
+interface GrandchildSuperIwithDefault extends SonSuperIwithDefault, DaughterSuperIwithDefault {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=GrandchildSuperIwithDefault.class)
+ void wombat();
+
+ @ExpectedModel(isDefault=true, declaringClass=GrandchildSuperIwithDefault.class)
+ default void wombatD() {;}
+
+}
+
+class D implements GrandchildSuperIwithDefault {
+ @ExpectedModel(declaringClass=D.class)
+ public void wombat(){}
+
+ @ExpectedModel(declaringClass=D.class)
+ public void baz(){}
+
+ @ExpectedModel(declaringClass=D.class)
+ public void foo(){}
+
+ @ExpectedModel(declaringClass=D.class)
+ public void quux(){}
+}
+
+class D1 implements SonSuperIwithDefault, DaughterSuperIwithDefault {
+ @ExpectedModel(declaringClass=D1.class)
+ public void foo(){}
+
+ @ExpectedModel(declaringClass=D1.class)
+ public void baz(){}
+
+ @ExpectedModel(declaringClass=D1.class)
+ public void quux(){}
+}
+
+// -=-=-=-
+
+// What does re-abstraction look like?
+
+class A implements SuperIwithDefault {
+ @ExpectedModel(declaringClass=A.class)
+ @Override
+ public void foo(){;}
+}
+
+abstract class B extends A {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=B.class)
+ @Override
+ public abstract void bar();
+}
+
+class C extends B implements SuperIwithDefault {
+ @ExpectedModel(declaringClass=C.class)
+ public void bar(){}
+}
+
+abstract class A1 implements SonSuperIwithDefault {
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=A1.class)
+ public abstract void baz();
+
+ @ExpectedModel(modifiers=PUBLIC|ABSTRACT, declaringClass=A1.class)
+ public abstract void foo();
+}
+
+class B1 extends A1 {
+ @ExpectedModel(declaringClass=B1.class)
+ @Override
+ public void foo(){;}
+
+ @ExpectedModel(declaringClass=B1.class)
+ @Override
+ public void baz(){}
+}
--- a/jdk/test/java/lang/reflect/Parameter/GetAnnotatedTypeTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/lang/reflect/Parameter/GetAnnotatedTypeTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -23,6 +23,7 @@
/*
* @test
+ * @bug 8021398
* @compile -parameters GetAnnotatedTypeTest.java
* @run main GetAnnotatedTypeTest
* @summary javac should generate method parameters correctly.
--- a/jdk/test/java/math/BigInteger/ExtremeShiftingTests.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/math/BigInteger/ExtremeShiftingTests.java Wed Jul 05 19:22:42 2017 +0200
@@ -25,6 +25,7 @@
* @test
* @bug 6371401
* @summary Tests of shiftLeft and shiftRight on Integer.MIN_VALUE
+ * @run main/othervm -Xmx512m ExtremeShiftingTests
* @author Joseph D. Darcy
*/
import java.math.BigInteger;
--- a/jdk/test/java/net/MulticastSocket/TestInterfaces.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/net/MulticastSocket/TestInterfaces.java Wed Jul 05 19:22:42 2017 +0200
@@ -33,6 +33,8 @@
public class TestInterfaces {
+ static final boolean isWindows = System.getProperty("os.name").startsWith("Windows");
+
public static void main(String args[]) throws Exception {
int failures = 0;
@@ -85,6 +87,10 @@
continue;
}
+ // JDK-8022963, Skip (Windows) Teredo Tunneling seudo-Interface
+ if (isWindows && ni.getDisplayName().contains("Teredo"))
+ continue;
+
NetworkInterface curr = soc.getNetworkInterface();
if (!curr.equals(ni)) {
System.err.println("MulticastSocket.getNetworkInterface returned: " + curr);
--- a/jdk/test/java/net/NetworkInterface/Equals.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/net/NetworkInterface/Equals.java Wed Jul 05 19:22:42 2017 +0200
@@ -38,6 +38,8 @@
public class Equals {
+ static final boolean isWindows = System.getProperty("os.name").startsWith("Windows");
+
public static void main(String args[]) throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream bufferedOut = new PrintStream(baos);
@@ -59,6 +61,11 @@
Enumeration<NetworkInterface> nifs2 = NetworkInterface.getNetworkInterfaces();
while (nifs2.hasMoreElements()) {
NetworkInterface ni = nifs2.nextElement();
+
+ // JDK-8022963, Skip (Windows)Teredo Tunneling seudo-Interface
+ if (isWindows && ni.getDisplayName().contains("Teredo"))
+ continue;
+
NetworkInterface niOrig = nicMap.get(ni.getName());
int h = ni.hashCode();
--- a/jdk/test/java/net/URLClassLoader/closetest/CloseTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/net/URLClassLoader/closetest/CloseTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -25,7 +25,8 @@
* @test
* @bug 4167874
* @library ../../../../com/sun/net/httpserver
- * @build FileServerHandler
+ * @library /lib/testlibrary
+ * @build FileServerHandler jdk.testlibrary.FileUtils
* @run shell build.sh
* @run main/othervm CloseTest
* @summary URL-downloaded jar files can consume all available file descriptors
--- a/jdk/test/java/net/URLClassLoader/closetest/Common.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/net/URLClassLoader/closetest/Common.java Wed Jul 05 19:22:42 2017 +0200
@@ -23,6 +23,9 @@
import java.io.*;
import java.net.*;
+import java.nio.file.Files;
+import jdk.testlibrary.FileUtils;
+import static java.nio.file.StandardCopyOption.*;
public class Common {
@@ -39,42 +42,16 @@
if (!src.isFile()) {
throw new RuntimeException ("File not found: " + src.toString());
}
- dst.delete();
- dst.createNewFile();
- FileInputStream i = new FileInputStream (src);
- FileOutputStream o = new FileOutputStream (dst);
- byte[] buf = new byte [1024];
- int count;
- while ((count=i.read(buf)) >= 0) {
- o.write (buf, 0, count);
- }
- i.close();
- o.close();
+ Files.copy(src.toPath(), dst.toPath(), REPLACE_EXISTING);
} catch (IOException e) {
throw new RuntimeException (e);
}
}
- static void rm_minus_rf (File path) {
- if (!path.exists()) {
+ static void rm_minus_rf (File path) throws IOException, InterruptedException {
+ if (!path.exists())
return;
- }
- if (path.isFile()) {
- if (!path.delete()) {
- throw new RuntimeException ("Could not delete " + path);
- }
- } else if (path.isDirectory ()) {
- String[] names = path.list();
- File[] files = path.listFiles();
- for (int i=0; i<files.length; i++) {
- rm_minus_rf (new File(path, names[i]));
- }
- if (!path.delete()) {
- throw new RuntimeException ("Could not delete " + path);
- }
- } else {
- throw new RuntimeException ("Trying to delete something that isn't a file or a directory");
- }
+ FileUtils.deleteFileTreeWithRetry(path.toPath());
}
static void copyDir (File src, File dst) {
--- a/jdk/test/java/net/URLClassLoader/closetest/GetResourceAsStream.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/net/URLClassLoader/closetest/GetResourceAsStream.java Wed Jul 05 19:22:42 2017 +0200
@@ -24,6 +24,8 @@
/**
* @test
* @bug 6899919
+ * @library /lib/testlibrary
+ * @build jdk.testlibrary.FileUtils
* @run shell build2.sh
* @run main/othervm GetResourceAsStream
*/
--- a/jdk/test/java/net/URLClassLoader/closetest/build.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/net/URLClassLoader/closetest/build.sh Wed Jul 05 19:22:42 2017 +0200
@@ -1,25 +1,25 @@
#!/bin/sh
#
# Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
#
#
#
--- a/jdk/test/java/net/URLPermission/URLPermissionTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/net/URLPermission/URLPermissionTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -26,7 +26,7 @@
/**
* @test
- * @bug 8010464 8027570
+ * @bug 8010464 8027570 8027687
*/
public class URLPermissionTest {
@@ -186,6 +186,14 @@
imtest("http:*", "https://www.foo.com/a/b/c", false),
imtest("http:*", "http://www.foo.com/a/b/c", true),
imtest("http:*", "http://foo/bar", true),
+ imtest("http://WWW.foO.cOM/a/b/*", "http://wwW.foo.com/a/b/c", true),
+ imtest("http://wWw.fOo.cOm/a/b/*", "http://Www.foo.com/a/b/*", true),
+ imtest("http://www.FOO.com/", "http://www.foo.COM/", true),
+ imtest("http://66ww-w.F-O012O.com/", "http://66ww-w.f-o012o.COM/",true),
+ imtest("http://xn--ire-9la.com/", "http://xn--ire-9la.COM/", true),
+ imtest("http://x/", "http://X/", true),
+ imtest("http://x/", "http://x/", true),
+ imtest("http://X/", "http://X/", true),
imtest("http://foo/bar", "https://foo/bar", false)
};
@@ -194,9 +202,12 @@
static Test[] exceptionTests = {
extest("http://1.2.3.4.5/a/b/c"),
extest("http://www.*.com"),
- //extest("http://www.foo.com:1-X"),
extest("http://[foo.com]:99"),
extest("http://[fec0::X]:99"),
+ extest("http:\\www.foo.com"),
+ extest("http://w_09ww.foo.com"),
+ extest("http://w&09ww.foo.com/p"),
+ extest("http://www+foo.com"),
extest("http:")
};
--- a/jdk/test/java/net/URLPermission/nstest/LookupTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/net/URLPermission/nstest/LookupTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -21,12 +21,6 @@
* questions.
*/
-/* @test
- * @compile -XDignore.symbol.file=true SimpleNameService.java
- * SimpleNameServiceDescriptor.java
- * @run main/othervm/timeout=200 -Dsun.net.spi.nameservice.provider.1=simple,sun LookupTest
- */
-
/**
* This is a simple smoke test of the HttpURLPermission mechanism, which
* checks for either IOException (due to unknown host) or SecurityException
@@ -35,6 +29,7 @@
import java.net.*;
import java.io.*;
+import jdk.testlibrary.Utils;
public class LookupTest {
@@ -48,12 +43,12 @@
InputStream is = urlc.getInputStream();
} catch (SecurityException e) {
if (!throwsSecException) {
- throw new RuntimeException ("(1) was not expecting " + e);
+ throw new RuntimeException ("(1) was not expecting ", e);
}
return;
} catch (IOException ioe) {
if (!throwsIOException) {
- throw new RuntimeException ("(2) was not expecting " + ioe);
+ throw new RuntimeException ("(2) was not expecting ", ioe);
}
return;
}
@@ -64,31 +59,41 @@
}
}
- public static void main(String args[]) throws Exception {
- SimpleNameService.put("allowedAndFound.com", "127.0.0.1");
- SimpleNameService.put("notAllowedButFound.com", "99.99.99.99");
- // name "notAllowedAndNotFound.com" is not in map
- // name "allowedButNotfound.com" is not in map
- startServer();
-
- String policyFileName = "file://" + System.getProperty("test.src", ".") + "/policy";
- System.err.println ("policy = " + policyFileName);
+ static int port;
+ static ServerSocket serverSocket;
- System.setProperty("java.security.policy", policyFileName);
-
- System.setSecurityManager(new SecurityManager());
-
- test("http://allowedAndFound.com:50100/foo", false, false);
+ public static void main(String args[]) throws Exception {
+ String cmd = args[0];
+ if (cmd.equals("-getport")) {
+ port = Utils.getFreePort();
+ System.out.print(port);
+ } else if (cmd.equals("-runtest")) {
+ port = Integer.parseInt(args[1]);
+ SimpleNameService.put("allowedAndFound.com", "127.0.0.1");
+ SimpleNameService.put("notAllowedButFound.com", "99.99.99.99");
+ // name "notAllowedAndNotFound.com" is not in map
+ // name "allowedButNotfound.com" is not in map
+ try {
+ startServer();
- test("http://notAllowedButFound.com:50100/foo", true, false);
+ System.setSecurityManager(new SecurityManager());
+
+ test("http://allowedAndFound.com:" + port + "/foo", false, false);
+
+ test("http://notAllowedButFound.com:" + port + "/foo", true, false);
+
+ test("http://allowedButNotfound.com:" + port + "/foo", false, true);
- test("http://allowedButNotfound.com:50100/foo", false, true);
-
- test("http://notAllowedAndNotFound.com:50100/foo", true, false);
+ test("http://notAllowedAndNotFound.com:" + port + "/foo", true, false);
+ } finally {
+ serverSocket.close();
+ }
+ } else {
+ throw new RuntimeException("Bad invocation: " + cmd);
+ }
}
static Thread server;
- static ServerSocket serverSocket;
static class Server extends Thread {
public void run() {
@@ -112,11 +117,11 @@
static void startServer() {
try {
- serverSocket = new ServerSocket(50100);
+ serverSocket = new ServerSocket(port);
server = new Server();
server.start();
} catch (Exception e) {
- throw new RuntimeException ("Test failed to initialize");
+ throw new RuntimeException ("Test failed to initialize", e);
}
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/URLPermission/nstest/lookup.sh Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,59 @@
+#!/bin/sh
+#
+# Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# @test
+# @library /lib/testlibrary
+# @compile -XDignore.symbol.file=true SimpleNameService.java
+# LookupTest.java SimpleNameServiceDescriptor.java
+# @run shell/timeout=50 lookup.sh
+#
+
+OS=`uname -s`
+case ${OS} in
+Windows_* | CYGWIN*)
+ PS=";"
+ FS="\\"
+ ;;
+*)
+ PS=":"
+ FS="/"
+ ;;
+esac
+
+
+port=`${TESTJAVA}/bin/java -cp ${TESTCLASSES} LookupTest -getport`
+
+cat << POLICY > policy
+grant {
+ permission java.net.URLPermission "http://allowedAndFound.com:${port}/-", "*:*";
+ permission java.net.URLPermission "http://allowedButNotfound.com:${port}/-", "*:*";
+ permission java.io.FilePermission "<<ALL FILES>>", "read,write,delete";
+ permission java.util.PropertyPermission "java.io.tmpdir", "read";
+
+ // needed for HttpServer
+ permission "java.net.SocketPermission" "localhost:1024-", "resolve,accept";
+};
+POLICY
+
+${TESTJAVA}/bin/java -Djava.security.policy=file:./policy -Dsun.net.spi.nameservice.provider.1=simple,sun -cp ${TESTCLASSES}${PS}${TESTSRC} LookupTest -runtest ${port}
--- a/jdk/test/java/net/URLPermission/nstest/policy Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-//
-// Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
-// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-//
-// This code is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License version 2 only, as
-// published by the Free Software Foundation.
-//
-// This code is distributed in the hope that it will be useful, but WITHOUT
-// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// version 2 for more details (a copy is included in the LICENSE file that
-// accompanied this code).
-//
-// You should have received a copy of the GNU General Public License version
-// 2 along with this work; if not, write to the Free Software Foundation,
-// Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-//
-// Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-// or visit www.oracle.com if you need additional information or have any
-// questions.
-//
-
-grant {
- permission java.net.URLPermission "http://allowedAndFound.com:50100/-", "*:*";
- permission java.net.URLPermission "http://allowedButNotfound.com:50100/-", "*:*";
-
- // needed for HttpServer
- permission "java.net.SocketPermission" "localhost:1024-", "resolve,accept";
-};
-
-// Normal permissions that aren't granted when run under jtreg
-
-grant codeBase "file:${{java.ext.dirs}}/*" {
- permission java.security.AllPermission;
-};
-
-grant codeBase "file:${{java.home}}/jre/lib/rt.jar" {
- permission java.security.AllPermission;
-};
-
--- a/jdk/test/java/net/ipv6tests/BadIPv6Addresses.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/net/ipv6tests/BadIPv6Addresses.java Wed Jul 05 19:22:42 2017 +0200
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 4742177
+ * @bug 4742177 8019834
* @summary Re-test IPv6 (and specifically MulticastSocket) with latest Linux & USAGI code
*/
import java.net.*;
--- a/jdk/test/java/nio/file/Files/CheckPermissions.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/nio/file/Files/CheckPermissions.java Wed Jul 05 19:22:42 2017 +0200
@@ -22,7 +22,7 @@
*/
/* @test
- * @bug 6866804 7006126
+ * @bug 6866804 7006126 8028270
* @summary Unit test for java.nio.file.Files
* @library ..
* @build CheckPermissions
@@ -73,14 +73,9 @@
myChecks.set(new Checks());
}
- static void assertCheckPermission(Class<? extends Permission> type,
- String name)
- {
- for (Permission perm: myChecks.get().permissionsChecked()) {
- if (type.isInstance(perm) && perm.getName().equals(name))
- return;
- }
- throw new RuntimeException(type.getName() + "(\"" + name + "\") not checked");
+ static void assertCheckPermission(Permission expected) {
+ if (!myChecks.get().permissionsChecked().contains(expected))
+ throw new RuntimeException(expected + " not checked");
}
static void assertCheckPropertyAccess(String key) {
@@ -191,22 +186,22 @@
prepare();
PosixFileAttributes attrs = view.readAttributes();
assertCheckRead(file);
- assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+ assertCheckPermission(new RuntimePermission("accessUserInformation"));
prepare();
view.setPermissions(attrs.permissions());
assertCheckWrite(file);
- assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+ assertCheckPermission(new RuntimePermission("accessUserInformation"));
prepare();
view.setOwner(attrs.owner());
assertCheckWrite(file);
- assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+ assertCheckPermission(new RuntimePermission("accessUserInformation"));
prepare();
view.setOwner(attrs.owner());
assertCheckWrite(file);
- assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+ assertCheckPermission(new RuntimePermission("accessUserInformation"));
}
public static void main(String[] args) throws IOException {
@@ -256,10 +251,14 @@
try {
assertCheckRead(link);
assertCheckWrite(target);
- assertCheckPermission(LinkPermission.class, "symbolic");
+ assertCheckPermission(new LinkPermission("symbolic"));
} finally {
delete(target);
}
+
+ prepare();
+ readSymbolicLink(link);
+ assertCheckPermission(new FilePermission(link.toString(), "readlink"));
} finally {
delete(link);
}
@@ -295,7 +294,7 @@
createSymbolicLink(link, file);
try {
assertCheckWrite(link);
- assertCheckPermission(LinkPermission.class, "symbolic");
+ assertCheckPermission(new LinkPermission("symbolic"));
} finally {
delete(link);
}
@@ -309,7 +308,7 @@
createLink(link, file);
try {
assertCheckWrite(link);
- assertCheckPermission(LinkPermission.class, "hard");
+ assertCheckPermission(new LinkPermission("hard"));
} finally {
delete(link);
}
@@ -382,7 +381,7 @@
prepare();
getFileStore(file);
assertCheckRead(file);
- assertCheckPermission(RuntimePermission.class, "getFileStoreAttributes");
+ assertCheckPermission(new RuntimePermission("getFileStoreAttributes"));
// -- isSameFile --
@@ -620,12 +619,12 @@
prepare();
UserPrincipal owner = view.getOwner();
assertCheckRead(file);
- assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+ assertCheckPermission(new RuntimePermission("accessUserInformation"));
prepare();
view.setOwner(owner);
assertCheckWrite(file);
- assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+ assertCheckPermission(new RuntimePermission("accessUserInformation"));
} else {
System.out.println("FileOwnerAttributeView not tested");
@@ -643,32 +642,27 @@
prepare();
view.write("test", ByteBuffer.wrap(new byte[100]));
assertCheckWrite(file);
- assertCheckPermission(RuntimePermission.class,
- "accessUserDefinedAttributes");
+ assertCheckPermission(new RuntimePermission("accessUserDefinedAttributes"));
prepare();
view.read("test", ByteBuffer.allocate(100));
assertCheckRead(file);
- assertCheckPermission(RuntimePermission.class,
- "accessUserDefinedAttributes");
+ assertCheckPermission(new RuntimePermission("accessUserDefinedAttributes"));
prepare();
view.size("test");
assertCheckRead(file);
- assertCheckPermission(RuntimePermission.class,
- "accessUserDefinedAttributes");
+ assertCheckPermission(new RuntimePermission("accessUserDefinedAttributes"));
prepare();
view.list();
assertCheckRead(file);
- assertCheckPermission(RuntimePermission.class,
- "accessUserDefinedAttributes");
+ assertCheckPermission(new RuntimePermission("accessUserDefinedAttributes"));
prepare();
view.delete("test");
assertCheckWrite(file);
- assertCheckPermission(RuntimePermission.class,
- "accessUserDefinedAttributes");
+ assertCheckPermission(new RuntimePermission("accessUserDefinedAttributes"));
} else {
System.out.println("UserDefinedFileAttributeView not tested");
}
@@ -684,11 +678,11 @@
prepare();
List<AclEntry> acl = view.getAcl();
assertCheckRead(file);
- assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+ assertCheckPermission(new RuntimePermission("accessUserInformation"));
prepare();
view.setAcl(acl);
assertCheckWrite(file);
- assertCheckPermission(RuntimePermission.class, "accessUserInformation");
+ assertCheckPermission(new RuntimePermission("accessUserInformation"));
} else {
System.out.println("AclFileAttributeView not tested");
}
@@ -702,15 +696,13 @@
prepare();
lookupService.lookupPrincipalByName(owner.getName());
- assertCheckPermission(RuntimePermission.class,
- "lookupUserInformation");
+ assertCheckPermission(new RuntimePermission("lookupUserInformation"));
try {
UserPrincipal group = readAttributes(file, PosixFileAttributes.class).group();
prepare();
lookupService.lookupPrincipalByGroupName(group.getName());
- assertCheckPermission(RuntimePermission.class,
- "lookupUserInformation");
+ assertCheckPermission(new RuntimePermission("lookupUserInformation"));
} catch (UnsupportedOperationException ignore) {
System.out.println("lookupPrincipalByGroupName not tested");
}
--- a/jdk/test/java/security/cert/CertPathBuilder/selfIssued/generate.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/security/cert/CertPathBuilder/selfIssued/generate.sh Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
+# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/security/cert/CertPathValidator/indirectCRL/generate.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/indirectCRL/generate.sh Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
+# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/security/cert/CertPathValidator/nameConstraints/generate.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/security/cert/CertPathValidator/nameConstraints/generate.sh Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
+# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/security/cert/CertificateRevokedException/Basic.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/security/cert/CertificateRevokedException/Basic.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/**
* @test
* @bug 4946388
--- a/jdk/test/java/util/Base64/TestBase64.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/Base64/TestBase64.java Wed Jul 05 19:22:42 2017 +0200
@@ -23,7 +23,7 @@
/**
* @test 4235519 8004212 8005394 8007298 8006295 8006315 8006530 8007379 8008925
- * 8014217 8025003
+ * 8014217 8025003 8026330
* @summary tests java.util.Base64
*/
@@ -47,12 +47,9 @@
numBytes = Integer.parseInt(args[1]);
}
- test(Base64.getEncoder(), Base64.getDecoder(),
- numRuns, numBytes);
- test(Base64.getUrlEncoder(), Base64.getUrlDecoder(),
- numRuns, numBytes);
- test(Base64.getMimeEncoder(), Base64.getMimeDecoder(),
- numRuns, numBytes);
+ test(Base64.getEncoder(), Base64.getDecoder(), numRuns, numBytes);
+ test(Base64.getUrlEncoder(), Base64.getUrlDecoder(), numRuns, numBytes);
+ test(Base64.getMimeEncoder(), Base64.getMimeDecoder(), numRuns, numBytes);
Random rnd = new java.util.Random();
byte[] nl_1 = new byte[] {'\n'};
@@ -142,165 +139,175 @@
enc.encode(new byte[0]);
dec.decode(new byte[0]);
- for (int i=0; i<numRuns; i++) {
- for (int j=1; j<numBytes; j++) {
- byte[] orig = new byte[j];
- rnd.nextBytes(orig);
+ for (boolean withoutPadding : new boolean[] { false, true}) {
+ if (withoutPadding) {
+ enc = enc.withoutPadding();
+ }
+ for (int i=0; i<numRuns; i++) {
+ for (int j=1; j<numBytes; j++) {
+ byte[] orig = new byte[j];
+ rnd.nextBytes(orig);
- // --------testing encode/decode(byte[])--------
- byte[] encoded = enc.encode(orig);
- byte[] decoded = dec.decode(encoded);
-
- checkEqual(orig, decoded,
- "Base64 array encoding/decoding failed!");
+ // --------testing encode/decode(byte[])--------
+ byte[] encoded = enc.encode(orig);
+ byte[] decoded = dec.decode(encoded);
- // compare to sun.misc.BASE64Encoder
- byte[] encoded2 = sunmisc.encode(orig).getBytes("ASCII");
- checkEqual(normalize(encoded),
- normalize(encoded2),
- "Base64 enc.encode() does not match sun.misc.base64!");
+ checkEqual(orig, decoded,
+ "Base64 array encoding/decoding failed!");
+ if (withoutPadding) {
+ if (encoded[encoded.length - 1] == '=')
+ throw new RuntimeException(
+ "Base64 enc.encode().withoutPadding() has padding!");
+ }
+ // compare to sun.misc.BASE64Encoder
- // remove padding '=' to test non-padding decoding case
- if (encoded[encoded.length -2] == '=')
- encoded2 = Arrays.copyOf(encoded, encoded.length -2);
- else if (encoded[encoded.length -1] == '=')
- encoded2 = Arrays.copyOf(encoded, encoded.length -1);
- else
- encoded2 = null;
-
- // --------testing encodetoString(byte[])/decode(String)--------
- String str = enc.encodeToString(orig);
- if (!Arrays.equals(str.getBytes("ASCII"), encoded)) {
- throw new RuntimeException(
- "Base64 encodingToString() failed!");
- }
- byte[] buf = dec.decode(new String(encoded, "ASCII"));
- checkEqual(buf, orig, "Base64 decoding(String) failed!");
+ byte[] encoded2 = sunmisc.encode(orig).getBytes("ASCII");
+ if (!withoutPadding) { // don't test for withoutPadding()
+ checkEqual(normalize(encoded), normalize(encoded2),
+ "Base64 enc.encode() does not match sun.misc.base64!");
+ }
+ // remove padding '=' to test non-padding decoding case
+ if (encoded[encoded.length -2] == '=')
+ encoded2 = Arrays.copyOf(encoded, encoded.length -2);
+ else if (encoded[encoded.length -1] == '=')
+ encoded2 = Arrays.copyOf(encoded, encoded.length -1);
+ else
+ encoded2 = null;
- if (encoded2 != null) {
- buf = dec.decode(new String(encoded2, "ASCII"));
+ // --------testing encodetoString(byte[])/decode(String)--------
+ String str = enc.encodeToString(orig);
+ if (!Arrays.equals(str.getBytes("ASCII"), encoded)) {
+ throw new RuntimeException(
+ "Base64 encodingToString() failed!");
+ }
+ byte[] buf = dec.decode(new String(encoded, "ASCII"));
checkEqual(buf, orig, "Base64 decoding(String) failed!");
- }
- //-------- testing encode/decode(Buffer)--------
- testEncode(enc, ByteBuffer.wrap(orig), encoded);
- ByteBuffer bin = ByteBuffer.allocateDirect(orig.length);
- bin.put(orig).flip();
- testEncode(enc, bin, encoded);
+ if (encoded2 != null) {
+ buf = dec.decode(new String(encoded2, "ASCII"));
+ checkEqual(buf, orig, "Base64 decoding(String) failed!");
+ }
- testDecode(dec, ByteBuffer.wrap(encoded), orig);
- bin = ByteBuffer.allocateDirect(encoded.length);
- bin.put(encoded).flip();
- testDecode(dec, bin, orig);
+ //-------- testing encode/decode(Buffer)--------
+ testEncode(enc, ByteBuffer.wrap(orig), encoded);
+ ByteBuffer bin = ByteBuffer.allocateDirect(orig.length);
+ bin.put(orig).flip();
+ testEncode(enc, bin, encoded);
- if (encoded2 != null)
- testDecode(dec, ByteBuffer.wrap(encoded2), orig);
+ testDecode(dec, ByteBuffer.wrap(encoded), orig);
+ bin = ByteBuffer.allocateDirect(encoded.length);
+ bin.put(encoded).flip();
+ testDecode(dec, bin, orig);
- // -------- testing encode(Buffer, Buffer)--------
- testEncode(enc, encoded,
- ByteBuffer.wrap(orig),
- ByteBuffer.allocate(encoded.length + 10));
+ if (encoded2 != null)
+ testDecode(dec, ByteBuffer.wrap(encoded2), orig);
+
+ // -------- testing encode(Buffer, Buffer)--------
+ testEncode(enc, encoded,
+ ByteBuffer.wrap(orig),
+ ByteBuffer.allocate(encoded.length + 10));
- testEncode(enc, encoded,
- ByteBuffer.wrap(orig),
- ByteBuffer.allocateDirect(encoded.length + 10));
+ testEncode(enc, encoded,
+ ByteBuffer.wrap(orig),
+ ByteBuffer.allocateDirect(encoded.length + 10));
- // --------testing decode(Buffer, Buffer);--------
- testDecode(dec, orig,
- ByteBuffer.wrap(encoded),
- ByteBuffer.allocate(orig.length + 10));
+ // --------testing decode(Buffer, Buffer);--------
+ testDecode(dec, orig,
+ ByteBuffer.wrap(encoded),
+ ByteBuffer.allocate(orig.length + 10));
- testDecode(dec, orig,
- ByteBuffer.wrap(encoded),
- ByteBuffer.allocateDirect(orig.length + 10));
+ testDecode(dec, orig,
+ ByteBuffer.wrap(encoded),
+ ByteBuffer.allocateDirect(orig.length + 10));
- // --------testing decode.wrap(input stream)--------
- // 1) random buf length
- ByteArrayInputStream bais = new ByteArrayInputStream(encoded);
- InputStream is = dec.wrap(bais);
- buf = new byte[orig.length + 10];
- int len = orig.length;
- int off = 0;
- while (true) {
- int n = rnd.nextInt(len);
- if (n == 0)
- n = 1;
- n = is.read(buf, off, n);
- if (n == -1) {
- checkEqual(off, orig.length,
- "Base64 stream decoding failed");
- break;
+ // --------testing decode.wrap(input stream)--------
+ // 1) random buf length
+ ByteArrayInputStream bais = new ByteArrayInputStream(encoded);
+ InputStream is = dec.wrap(bais);
+ buf = new byte[orig.length + 10];
+ int len = orig.length;
+ int off = 0;
+ while (true) {
+ int n = rnd.nextInt(len);
+ if (n == 0)
+ n = 1;
+ n = is.read(buf, off, n);
+ if (n == -1) {
+ checkEqual(off, orig.length,
+ "Base64 stream decoding failed");
+ break;
+ }
+ off += n;
+ len -= n;
+ if (len == 0)
+ break;
}
- off += n;
- len -= n;
- if (len == 0)
- break;
- }
- buf = Arrays.copyOf(buf, off);
- checkEqual(buf, orig, "Base64 stream decoding failed!");
+ buf = Arrays.copyOf(buf, off);
+ checkEqual(buf, orig, "Base64 stream decoding failed!");
- // 2) read one byte each
- bais.reset();
- is = dec.wrap(bais);
- buf = new byte[orig.length + 10];
- off = 0;
- int b;
- while ((b = is.read()) != -1) {
- buf[off++] = (byte)b;
- }
- buf = Arrays.copyOf(buf, off);
- checkEqual(buf, orig, "Base64 stream decoding failed!");
+ // 2) read one byte each
+ bais.reset();
+ is = dec.wrap(bais);
+ buf = new byte[orig.length + 10];
+ off = 0;
+ int b;
+ while ((b = is.read()) != -1) {
+ buf[off++] = (byte)b;
+ }
+ buf = Arrays.copyOf(buf, off);
+ checkEqual(buf, orig, "Base64 stream decoding failed!");
- // --------testing encode.wrap(output stream)--------
- ByteArrayOutputStream baos = new ByteArrayOutputStream((orig.length + 2) / 3 * 4 + 10);
- OutputStream os = enc.wrap(baos);
- off = 0;
- len = orig.length;
- for (int k = 0; k < 5; k++) {
- if (len == 0)
- break;
- int n = rnd.nextInt(len);
- if (n == 0)
- n = 1;
- os.write(orig, off, n);
- off += n;
- len -= n;
- }
- if (len != 0)
- os.write(orig, off, len);
- os.close();
- buf = baos.toByteArray();
- checkEqual(buf, encoded, "Base64 stream encoding failed!");
+ // --------testing encode.wrap(output stream)--------
+ ByteArrayOutputStream baos = new ByteArrayOutputStream((orig.length + 2) / 3 * 4 + 10);
+ OutputStream os = enc.wrap(baos);
+ off = 0;
+ len = orig.length;
+ for (int k = 0; k < 5; k++) {
+ if (len == 0)
+ break;
+ int n = rnd.nextInt(len);
+ if (n == 0)
+ n = 1;
+ os.write(orig, off, n);
+ off += n;
+ len -= n;
+ }
+ if (len != 0)
+ os.write(orig, off, len);
+ os.close();
+ buf = baos.toByteArray();
+ checkEqual(buf, encoded, "Base64 stream encoding failed!");
- // 2) write one byte each
- baos.reset();
- os = enc.wrap(baos);
- off = 0;
- while (off < orig.length) {
- os.write(orig[off++]);
- }
- os.close();
- buf = baos.toByteArray();
- checkEqual(buf, encoded, "Base64 stream encoding failed!");
+ // 2) write one byte each
+ baos.reset();
+ os = enc.wrap(baos);
+ off = 0;
+ while (off < orig.length) {
+ os.write(orig[off++]);
+ }
+ os.close();
+ buf = baos.toByteArray();
+ checkEqual(buf, encoded, "Base64 stream encoding failed!");
- // --------testing encode(in, out); -> bigger buf--------
- buf = new byte[encoded.length + rnd.nextInt(100)];
- int ret = enc.encode(orig, buf);
- checkEqual(ret, encoded.length,
- "Base64 enc.encode(src, null) returns wrong size!");
- buf = Arrays.copyOf(buf, ret);
- checkEqual(buf, encoded,
- "Base64 enc.encode(src, dst) failed!");
+ // --------testing encode(in, out); -> bigger buf--------
+ buf = new byte[encoded.length + rnd.nextInt(100)];
+ int ret = enc.encode(orig, buf);
+ checkEqual(ret, encoded.length,
+ "Base64 enc.encode(src, null) returns wrong size!");
+ buf = Arrays.copyOf(buf, ret);
+ checkEqual(buf, encoded,
+ "Base64 enc.encode(src, dst) failed!");
- // --------testing decode(in, out); -> bigger buf--------
- buf = new byte[orig.length + rnd.nextInt(100)];
- ret = dec.decode(encoded, buf);
- checkEqual(ret, orig.length,
- "Base64 enc.encode(src, null) returns wrong size!");
- buf = Arrays.copyOf(buf, ret);
- checkEqual(buf, orig,
- "Base64 dec.decode(src, dst) failed!");
+ // --------testing decode(in, out); -> bigger buf--------
+ buf = new byte[orig.length + rnd.nextInt(100)];
+ ret = dec.decode(encoded, buf);
+ checkEqual(ret, orig.length,
+ "Base64 enc.encode(src, null) returns wrong size!");
+ buf = Arrays.copyOf(buf, ret);
+ checkEqual(buf, orig,
+ "Base64 dec.decode(src, dst) failed!");
+ }
}
}
}
--- a/jdk/test/java/util/Calendar/CldrFormatNamesTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/Calendar/CldrFormatNamesTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/Calendar/GenericTimeZoneNamesTest.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/Calendar/GenericTimeZoneNamesTest.sh Wed Jul 05 19:22:42 2017 +0200
@@ -35,12 +35,12 @@
# TODO: The purpose of ja-JP is to make sure the fallback for generic
# names works. Remove ja-JP when adding generic names to localized
# resources.
-if ! ${TESTJAVA}/bin/java -esa -cp "${TESTCLASSES}" GenericTimeZoneNamesTest en-US ja-JP; then
+if ! ${TESTJAVA}/bin/java -esa ${TESTVMOPTS} -cp "${TESTCLASSES}" GenericTimeZoneNamesTest en-US ja-JP; then
STATUS=1
fi
echo "Locale providers: CLDR"
-if ! ${TESTJAVA}/bin/java -esa -cp "${TESTCLASSES}" -Djava.locale.providers=CLDR GenericTimeZoneNamesTest en-US; then
+if ! ${TESTJAVA}/bin/java -esa ${TESTVMOPTS} -cp "${TESTCLASSES}" -Djava.locale.providers=CLDR GenericTimeZoneNamesTest en-US; then
STATUS=1
fi
exit ${STATUS}
--- a/jdk/test/java/util/Calendar/NarrowNamesTest.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/Calendar/NarrowNamesTest.sh Wed Jul 05 19:22:42 2017 +0200
@@ -34,7 +34,7 @@
for P in "JRE,SPI" "CLDR"
do
echo "Locale providers: $P"
- if ! ${TESTJAVA}/bin/java -esa -cp "${TESTCLASSES}" -Djava.locale.providers="${P}" NarrowNamesTest; then
+ if ! ${TESTJAVA}/bin/java -esa ${TESTVMOPTS} -cp "${TESTCLASSES}" -Djava.locale.providers="${P}" NarrowNamesTest; then
STATUS=1
fi
done
--- a/jdk/test/java/util/Locale/LocaleEnhanceTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/Locale/LocaleEnhanceTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/Locale/LocaleTestFmwk.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/Locale/LocaleTestFmwk.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/Locale/tools/EquivMapsGenerator.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/Locale/tools/EquivMapsGenerator.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/ResourceBundle/ResourceBundleTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/ResourceBundle/ResourceBundleTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -22,7 +22,7 @@
*/
/*
@test
- @bug 4049325 4073127 4083270 4106034 4108126
+ @bug 4049325 4073127 4083270 4106034 4108126 8027930
@summary test Resource Bundle
@build TestResource TestResource_de TestResource_fr TestResource_fr_CH
@build TestResource_it FakeTestResource
@@ -63,6 +63,7 @@
import java.text.*;
import java.util.*;
+import java.util.ResourceBundle.Control;
import java.io.*;
public class ResourceBundleTest extends RBTestFmwk {
@@ -134,7 +135,8 @@
// load up the resource and check to make sure we got the right class
// (we don't define be_BY or be, so we fall back on the root default)
ResourceBundle bundle = ResourceBundle.getBundle("TestResource",
- new Locale("be", "BY"));
+ new Locale("be", "BY"),
+ Control.getNoFallbackControl(Control.FORMAT_DEFAULT));
if (!bundle.getClass().getName().equals("TestResource"))
errln("Expected TestResource, got " + bundle.getClass().getName());
@@ -268,7 +270,8 @@
// try to find TestResource_iw_IL, which doesn't exist. Should get root locale
// as its locale
test = ResourceBundle.getBundle("TestResource",
- new Locale("iw", "IL", ""));
+ new Locale("iw", "IL", ""),
+ Control.getNoFallbackControl(Control.FORMAT_DEFAULT));
locale = test.getLocale();
if (!(locale.getLanguage().equals("")) || !(locale.getCountry().equals("")))
errln("Actual locale for TestResource_iw_IL should have been the root locale, got "
--- a/jdk/test/java/util/ResourceBundle/getBaseBundleName/TestGetBaseBundleName.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/ResourceBundle/getBaseBundleName/TestGetBaseBundleName.java Wed Jul 05 19:22:42 2017 +0200
@@ -29,7 +29,7 @@
/**
* @test
- * @bug 4814565
+ * @bug 4814565 8027930
* @summary tests ResourceBundle.getBaseBundleName();
* @build TestGetBaseBundleName resources.ListBundle resources.ListBundle_fr
* @run main TestGetBaseBundleName
@@ -52,18 +52,20 @@
PROPERTY_BUNDLE_NAME,
LIST_BUNDLE_NAME
}) {
- ResourceBundle bundle = ResourceBundle.getBundle(baseName);
- System.out.println(getBaseName(bundle));
- if (!Locale.ROOT.equals(bundle.getLocale())) {
- throw new RuntimeException("Unexpected locale: "
- + bundle.getLocale());
- }
- if (!baseName.equals(getBaseName(bundle))) {
- throw new RuntimeException("Unexpected base name: "
- + getBaseName(bundle));
- }
- Locale.setDefault(Locale.FRENCH);
try {
+ Locale.setDefault(Locale.US);
+ ResourceBundle bundle = ResourceBundle.getBundle(baseName);
+ System.out.println(getBaseName(bundle));
+ if (!Locale.ROOT.equals(bundle.getLocale())) {
+ throw new RuntimeException("Unexpected locale: "
+ + bundle.getLocale());
+ }
+ if (!baseName.equals(getBaseName(bundle))) {
+ throw new RuntimeException("Unexpected base name: "
+ + getBaseName(bundle));
+ }
+
+ Locale.setDefault(Locale.FRENCH);
ResourceBundle bundle_fr = ResourceBundle.getBundle(baseName);
if (!Locale.FRENCH.equals(bundle_fr.getLocale())) {
throw new RuntimeException("Unexpected locale: "
--- a/jdk/test/java/util/TimeZone/Bug6912560.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/TimeZone/Bug6912560.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/TimeZone/CLDRDisplayNamesTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/TimeZone/CLDRDisplayNamesTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/TimeZone/ListTimeZones.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/TimeZone/ListTimeZones.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/TimeZone/OldIDMappingTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/TimeZone/OldIDMappingTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/TimeZone/OldIDMappingTest.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/TimeZone/OldIDMappingTest.sh Wed Jul 05 19:22:42 2017 +0200
@@ -3,9 +3,7 @@
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. Oracle designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Oracle in the LICENSE file that accompanied this code.
+# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/TimeZone/SetDefaultSecurityTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/TimeZone/SetDefaultSecurityTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/TimeZone/TimeZoneDatePermissionCheck.java Wed Jul 05 19:22:42 2017 +0200
@@ -5,9 +5,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/TimeZone/TzIDOldMapping.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/TimeZone/TzIDOldMapping.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/concurrent/ThreadPoolExecutor/ThrowingTasks.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/concurrent/ThreadPoolExecutor/ThrowingTasks.java Wed Jul 05 19:22:42 2017 +0200
@@ -33,6 +33,7 @@
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.*;
+import java.util.concurrent.locks.ReentrantLock;
public class ThrowingTasks {
static final Random rnd = new Random();
@@ -156,6 +157,7 @@
}
static class CheckingExecutor extends ThreadPoolExecutor {
+ private final ReentrantLock lock = new ReentrantLock();
CheckingExecutor() {
super(10, 10,
1L, TimeUnit.HOURS,
@@ -163,10 +165,20 @@
tf);
}
@Override protected void beforeExecute(Thread t, Runnable r) {
- allStarted.countDown();
- if (allStarted.getCount() < getCorePoolSize())
+ final boolean lessThanCorePoolSize;
+ // Add a lock to sync allStarted.countDown() and
+ // allStarted.getCount() < getCorePoolSize()
+ lock.lock();
+ try {
+ allStarted.countDown();
+ lessThanCorePoolSize = allStarted.getCount() < getCorePoolSize();
+ } finally {
+ lock.unlock();
+ }
+ if (lessThanCorePoolSize) {
try { allContinue.await(); }
catch (InterruptedException x) { unexpected(x); }
+ }
beforeExecuteCount.getAndIncrement();
check(! isTerminated());
((Flaky)r).beforeExecute.run();
--- a/jdk/test/java/util/logging/LogManager/RootLogger/setLevel/TestRootLoggerLevel.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/logging/LogManager/RootLogger/setLevel/TestRootLoggerLevel.java Wed Jul 05 19:22:42 2017 +0200
@@ -33,7 +33,7 @@
/**
* @test
- * @bug 8023163
+ * @bug 8026499
* @summary checks that Logger.getLogger("").setLevel() is working correctly.
* @build TestRootLoggerLevel
* @run main/othervm -Dtest.security=on TestRootLoggerLevel
--- a/jdk/test/java/util/logging/TestAppletLoggerContext.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/logging/TestAppletLoggerContext.java Wed Jul 05 19:22:42 2017 +0200
@@ -113,16 +113,6 @@
@Override
public Object getAppletContext() { return active ? exc : null; }
- @Override
- public Object get(Object o) { return exc.get(o); }
- @Override
- public void put(Object o, Object o1) { exc.put(o, o1); }
- @Override
- public void remove(Object o) { exc.remove(o); }
- @Override
- public boolean isDisposed() { return false; }
- @Override
- public boolean isMainAppContext() { return !active || exc == null; }
}
final static JavaAWTAccessStub javaAwtAccess = new JavaAWTAccessStub();
--- a/jdk/test/java/util/prefs/AddNodeChangeListener.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/prefs/AddNodeChangeListener.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/prefs/CheckUserPrefFirst.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/prefs/CheckUserPrefFirst.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/prefs/CheckUserPrefLater.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/prefs/CheckUserPrefLater.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/regex/RegExTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/regex/RegExTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
@@ -33,7 +31,8 @@
* 5013885 5003322 4988891 5098443 5110268 6173522 4829857 5027748 6376940
* 6358731 6178785 6284152 6231989 6497148 6486934 6233084 6504326 6635133
* 6350801 6676425 6878475 6919132 6931676 6948903 6990617 7014645 7039066
- * 7067045 7014640 7189363 8007395 8013252 8013254 8012646 8023647
+ * 7067045 7014640 7189363 8007395 8013252 8013254 8012646 8023647 6559590
+ * 8027645
*/
import java.util.regex.*;
@@ -148,6 +147,7 @@
groupCurlyNotFoundSuppTest();
groupCurlyBackoffTest();
patternAsPredicate();
+
if (failure) {
throw new
RuntimeException("RegExTest failed, 1st failure: " +
@@ -1776,6 +1776,7 @@
failCount++;
}
// Check the case for limit == 0, source = "";
+ // split() now returns 0-length for empty source "" see #6559590
source = "";
result = source.split("e", 0);
if (result.length != 1)
@@ -1783,6 +1784,66 @@
if (!result[0].equals(source))
failCount++;
+ // Check both split() and splitAsStraem(), especially for zero-lenth
+ // input and zero-lenth match cases
+ String[][] input = new String[][] {
+ { " ", "Abc Efg Hij" }, // normal non-zero-match
+ { " ", " Abc Efg Hij" }, // leading empty str for non-zero-match
+ { " ", "Abc Efg Hij" }, // non-zero-match in the middle
+ { "(?=\\p{Lu})", "AbcEfgHij" }, // no leading empty str for zero-match
+ { "(?=\\p{Lu})", "AbcEfg" },
+ { "(?=\\p{Lu})", "Abc" },
+ { " ", "" }, // zero-length input
+ { ".*", "" },
+
+ // some tests from PatternStreamTest.java
+ { "4", "awgqwefg1fefw4vssv1vvv1" },
+ { "\u00a3a", "afbfq\u00a3abgwgb\u00a3awngnwggw\u00a3a\u00a3ahjrnhneerh" },
+ { "1", "awgqwefg1fefw4vssv1vvv1" },
+ { "1", "a\u4ebafg1fefw\u4eba4\u9f9cvssv\u9f9c1v\u672c\u672cvv" },
+ { "\u56da", "1\u56da23\u56da456\u56da7890" },
+ { "\u56da", "1\u56da23\u9f9c\u672c\u672c\u56da456\u56da\u9f9c\u672c7890" },
+ { "\u56da", "" },
+ { "[ \t,:.]","This is,testing: with\tdifferent separators." }, //multiple septs
+ { "o", "boo:and:foo" },
+ { "o", "booooo:and:fooooo" },
+ { "o", "fooooo:" },
+ };
+
+ String[][] expected = new String[][] {
+ { "Abc", "Efg", "Hij" },
+ { "", "Abc", "Efg", "Hij" },
+ { "Abc", "", "Efg", "Hij" },
+ { "Abc", "Efg", "Hij" },
+ { "Abc", "Efg" },
+ { "Abc" },
+ { "" },
+ { "" },
+
+ { "awgqwefg1fefw", "vssv1vvv1" },
+ { "afbfq", "bgwgb", "wngnwggw", "", "hjrnhneerh" },
+ { "awgqwefg", "fefw4vssv", "vvv" },
+ { "a\u4ebafg", "fefw\u4eba4\u9f9cvssv\u9f9c", "v\u672c\u672cvv" },
+ { "1", "23", "456", "7890" },
+ { "1", "23\u9f9c\u672c\u672c", "456", "\u9f9c\u672c7890" },
+ { "" },
+ { "This", "is", "testing", "", "with", "different", "separators" },
+ { "b", "", ":and:f" },
+ { "b", "", "", "", "", ":and:f" },
+ { "f", "", "", "", "", ":" },
+ };
+ for (int i = 0; i < input.length; i++) {
+ pattern = Pattern.compile(input[i][0]);
+ if (!Arrays.equals(pattern.split(input[i][1]), expected[i])) {
+ failCount++;
+ }
+ if (input[i][1].length() > 0 && // splitAsStream() return empty resulting
+ // array for zero-length input for now
+ !Arrays.equals(pattern.splitAsStream(input[i][1]).toArray(),
+ expected[i])) {
+ failCount++;
+ }
+ }
report("Split");
}
--- a/jdk/test/java/util/spi/ResourceBundleControlProvider/providersrc/UserControlProvider.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/spi/ResourceBundleControlProvider/providersrc/UserControlProvider.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/lang/invoke/SerializedLambdaTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/lang/invoke/SerializedLambdaTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -56,14 +56,18 @@
*/
@Test
public class SerializedLambdaTest {
+ public static final int REPS = 50;
+
@SuppressWarnings("unchecked")
private<T> void assertSerial(T p, Consumer<T> asserter) throws IOException, ClassNotFoundException {
asserter.accept(p);
- byte[] bytes = serialize(p);
- assertTrue(bytes.length > 0);
+ for (int i=0; i<REPS; i++) {
+ byte[] bytes = serialize(p);
+ assertTrue(bytes.length > 0);
- asserter.accept((T) deserialize(bytes));
+ asserter.accept((T) deserialize(bytes));
+ }
}
private void assertNotSerial(Predicate<String> p, Consumer<Predicate<String>> asserter)
--- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/DistinctOpTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/stream/DistinctOpTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -54,10 +54,14 @@
// These tests should short-circuit, otherwise will fail with a time-out
// or an OOME
- Integer one = Stream.iterate(1, i -> i + 1).unordered().parallel().distinct().findAny().get();
- assertEquals(one.intValue(), 1);
+ // Note that since the streams are unordered and any element is requested
+ // (a non-deterministic process) the only assertion that can be made is
+ // that an element should be found
- Optional<Integer> oi = ThreadLocalRandom.current().ints().boxed().parallel().distinct().findAny();
+ Optional<Integer> oi = Stream.iterate(1, i -> i + 1).unordered().parallel().distinct().findAny();
+ assertTrue(oi.isPresent());
+
+ oi = ThreadLocalRandom.current().ints().boxed().parallel().distinct().findAny();
assertTrue(oi.isPresent());
}
--- a/jdk/test/java/util/zip/LargeZip.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/zip/LargeZip.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/java/util/zip/TotalInOut.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/java/util/zip/TotalInOut.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/imageio/plugins/gif/GifTransparencyTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/imageio/plugins/gif/GifTransparencyTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
* @test
* @bug 6276653 6287936
--- a/jdk/test/javax/management/loading/LibraryLoader/LibraryLoaderTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/management/loading/LibraryLoader/LibraryLoaderTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2013 Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,7 @@
* @author Luis-Miguel Alventosa
* @run clean LibraryLoaderTest
* @run build LibraryLoaderTest
- * @run main LibraryLoaderTest
+ * @run main/othervm LibraryLoaderTest
*/
import java.io.File;
@@ -48,7 +48,7 @@
{"testDomain:type=MLet,index=1", "UseNativeLib1.html"}
};
- public static void main (String args[]) {
+ public static void main(String args[]) throws Exception {
String osName = System.getProperty("os.name");
System.out.println("os.name=" + osName);
@@ -83,83 +83,73 @@
"file:/" + testSrc.replace(File.separatorChar, '/') + "/";
}
- try {
- // Create MBeanServer
- //
- MBeanServer server = MBeanServerFactory.newMBeanServer();
+ // Create MBeanServer
+ //
+ MBeanServer server = MBeanServerFactory.newMBeanServer();
- // Create MLet instances and call getRandom on the loaded MBeans
+ // Create MLet instances and call getRandom on the loaded MBeans
+ //
+ for (int i = 0; i < mletInfo.length; i++) {
+ // Create ObjectName for MLet
//
- for (int i = 0; i < mletInfo.length; i++) {
- // Create ObjectName for MLet
- //
- ObjectName mlet = new ObjectName(mletInfo[i][0]);
- server.createMBean("javax.management.loading.MLet", mlet);
- System.out.println("MLet = " + mlet);
+ ObjectName mlet = new ObjectName(mletInfo[i][0]);
+ server.createMBean("javax.management.loading.MLet", mlet);
+ System.out.println("MLet = " + mlet);
- // Display old library directory and set it to test.classes
- //
- String libraryDirectory =
- (String) server.getAttribute(mlet, "LibraryDirectory");
- System.out.println("Old Library Directory = " +
- libraryDirectory);
- Attribute attribute =
- new Attribute("LibraryDirectory", workingDir);
- server.setAttribute(mlet, attribute);
- libraryDirectory =
- (String) server.getAttribute(mlet, "LibraryDirectory");
- System.out.println("New Library Directory = " +
- libraryDirectory);
+ // Display old library directory and set it to test.classes
+ //
+ String libraryDirectory =
+ (String) server.getAttribute(mlet, "LibraryDirectory");
+ System.out.println("Old Library Directory = " +
+ libraryDirectory);
+ Attribute attribute =
+ new Attribute("LibraryDirectory", workingDir);
+ server.setAttribute(mlet, attribute);
+ libraryDirectory =
+ (String) server.getAttribute(mlet, "LibraryDirectory");
+ System.out.println("New Library Directory = " +
+ libraryDirectory);
- // Get MBeans from URL
+ // Get MBeans from URL
+ //
+ String mletURL = urlCodebase + mletInfo[i][1];
+ System.out.println("MLet URL = " + mletURL);
+ Object[] params = new Object[] { mletURL };
+ String[] signature = new String[] {"java.lang.String"};
+ Object res[] = ((Set<?>) server.invoke(mlet,
+ "getMBeansFromURL",
+ params,
+ signature)).toArray();
+
+ // Iterate through all the loaded MBeans
+ //
+ for (int j = 0; j < res.length; j++) {
+ // Now ensure none of the returned objects is a Throwable
//
- String mletURL = urlCodebase + mletInfo[i][1];
- System.out.println("MLet URL = " + mletURL);
- Object[] params = new Object[] { mletURL };
- String[] signature = new String[] {"java.lang.String"};
- Object res[] = ((Set) server.invoke(mlet,
- "getMBeansFromURL",
- params,
- signature)).toArray();
+ if (res[j] instanceof Throwable) {
+ ((Throwable) res[j]).printStackTrace(System.out);
+ throw new Exception("Failed to load the MBean #" + j
+ ,(Throwable)res[j]);
+ }
- // Iterate through all the loaded MBeans
+ // On each of the loaded MBeans, try to invoke their
+ // native operation
//
- for (int j = 0; j < res.length; j++) {
- // Now ensure none of the returned objects is a Throwable
- //
- if (res[j] instanceof Throwable) {
- ((Throwable) res[j]).printStackTrace(System.out);
- System.out.println("Failed to load the MBean #" + j +
- ". The shown Throwable was caught.");
- System.exit(1);
- }
-
- // On each of the loaded MBeans, try to invoke their
- // native operation
- //
- Object result = null;
- try {
- ObjectName mbean =
- ((ObjectInstance) res[j]).getObjectName();
- result = server.getAttribute(mbean, "Random");
- System.out.println("MBean #" + j + " = " + mbean);
- System.out.println("Random number = " + result);
- } catch (ReflectionException e) {
- e.getTargetException().printStackTrace(System.out);
- System.out.println("A ReflectionException, wrapping " +
- "the shown exception, occured when" +
- " attempting to invoke a native " +
- "library based operation.");
- System.exit(1);
- }
+ Object result = null;
+ try {
+ ObjectName mbean =
+ ((ObjectInstance) res[j]).getObjectName();
+ result = server.getAttribute(mbean, "Random");
+ System.out.println("MBean #" + j + " = " + mbean);
+ System.out.println("Random number = " + result);
+ } catch (ReflectionException e) {
+ e.getTargetException().printStackTrace(System.out);
+ throw new Exception ("A ReflectionException "
+ + "occured when attempting to invoke "
+ + "a native library based operation.",
+ e.getTargetException());
}
}
- } catch (Exception e) {
- e.printStackTrace(System.out);
- System.out.println(e.getMessage());
- System.out.println("Unexpected error");
- System.exit(1);
}
- System.out.println("Bye! Bye!");
}
}
--- a/jdk/test/javax/management/modelmbean/LoggingExceptionTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/management/modelmbean/LoggingExceptionTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
* @test
* @bug 6471865 6675768
--- a/jdk/test/javax/management/monitor/ThreadPoolAccTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/management/monitor/ThreadPoolAccTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2013 Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,8 +33,8 @@
*/
import java.security.AccessController;
-import java.security.Principal;
import java.security.PrivilegedAction;
+import java.util.Date;
import java.util.Set;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
@@ -49,8 +49,8 @@
public class ThreadPoolAccTest {
// MBean class
- public class ObservedObject implements ObservedObjectMBean {
- public String principal;
+ public static class ObservedObject implements ObservedObjectMBean {
+ public volatile String principal;
public Integer getInteger() {
setPrincipal();
return 0;
@@ -65,8 +65,8 @@
}
private void setPrincipal() {
Subject subject = Subject.getSubject(AccessController.getContext());
- Set principals = subject.getPrincipals(JMXPrincipal.class);
- principal = ((Principal) principals.iterator().next()).getName();
+ Set<JMXPrincipal> principals = subject.getPrincipals(JMXPrincipal.class);
+ principal = principals.iterator().next().getName();
}
}
@@ -77,10 +77,7 @@
public String getString();
}
- /**
- * Run test
- */
- public int runTest() throws Exception {
+ public static void main (String args[]) throws Exception {
ObjectName[] mbeanNames = new ObjectName[6];
ObservedObject[] monitored = new ObservedObject[6];
@@ -93,8 +90,6 @@
echo(">>> CREATE MBeanServer");
MBeanServer server = MBeanServerFactory.newMBeanServer();
- String domain = server.getDefaultDomain();
-
for (int i = 0; i < 6; i++) {
mbeanNames[i] =
new ObjectName(":type=ObservedObject,instance=" + i);
@@ -132,8 +127,8 @@
Subject subject = new Subject();
echo(">>> RUN Principal = " + principals[i / 3]);
subject.getPrincipals().add(new JMXPrincipal(principals[i / 3]));
- PrivilegedAction action = new PrivilegedAction() {
- public Object run() {
+ PrivilegedAction<Void> action = new PrivilegedAction<Void>() {
+ public Void run() {
m.start();
return null;
}
@@ -141,61 +136,39 @@
Subject.doAs(subject, action);
}
- // Wait for all tasks to be submitted
- //
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- echo("I fell asleep but someone woke me up");
- return 1;
- }
+ while(!testPrincipals(monitored, monitorNames, monitor, principals));
- // Check if task principal is correct
- //
- for (int i = 0; i < 6; i++) {
- echo(">>> Monitor = " + monitorNames[i]);
- echo(">>> ObservedObject = " +
- monitor[i].getObservedObject());
- echo(">>> ObservedAttribute = " +
- monitor[i].getObservedAttribute());
- echo(">>> Principal = " + monitored[i].principal);
- if (monitored[i].principal.equals(principals[i / 3])) {
- echo("\tOK: Got Expected Principal");
- } else {
- echo("\tKO: Got Unexpected Principal");
- return 1;
- }
- }
} finally {
for (int i = 0; i < 6; i++)
if (monitor[i] != null)
monitor[i].stop();
}
-
- return 0;
}
- /*
- * Print message
- */
+ private static boolean testPrincipals(ObservedObject[] monitored, ObjectName[] monitorNames,
+ Monitor[] monitor, String[] principals) throws Exception {
+ for (int i = 0; i < 6; i++) {
+ String principal = monitored[i].principal;
+ String expected = principals[i / 3];
+ if (principal == null) {
+ echo("Task not submitted " + new Date() + ". RETRY");
+ return false;
+ }
+ echo(">>> Monitor = " + monitorNames[i]);
+ echo(">>> ObservedObject = " + monitor[i].getObservedObject());
+ echo(">>> ObservedAttribute = " + monitor[i].getObservedAttribute());
+ echo(">>> Principal = " + principal);
+
+ if (expected.equals(principal)) {
+ echo("\tOK: Got Expected principal");
+ } else {
+ throw new Exception("Unexpected principal. Got: " + principal + " Expected: " + expected);
+ }
+ }
+ return true;
+ }
+
private static void echo(String message) {
System.out.println(message);
}
-
- /*
- * Standalone entry point.
- *
- * Run the test and report to stdout.
- */
- public static void main (String args[]) throws Exception {
- ThreadPoolAccTest test = new ThreadPoolAccTest();
- int error = test.runTest();
- if (error > 0) {
- echo(">>> Unhappy Bye, Bye!");
- throw new IllegalStateException(
- "Test FAILED: Monitor task ran on wrong security context!");
- } else {
- echo(">>> Happy Bye, Bye!");
- }
- }
}
--- a/jdk/test/javax/management/remote/mandatory/connection/MultiThreadDeadLockTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/management/remote/mandatory/connection/MultiThreadDeadLockTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,8 +1,27 @@
/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
+ * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
*/
+
import java.io.IOException;
import java.io.Serializable;
import java.net.Socket;
--- a/jdk/test/javax/print/DialogMargins.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/print/DialogMargins.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/print/StreamPrintingOrientation.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/print/StreamPrintingOrientation.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/print/applet/AppletPrintLookup.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/print/applet/AppletPrintLookup.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<head>
<title> APL </title>
--- a/jdk/test/javax/sound/midi/File/SMPTESequence.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/File/SMPTESequence.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/**
* @test
* @bug 6835393
--- a/jdk/test/javax/sound/midi/Gervill/AudioFloatConverter/GetFormat.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatConverter/GetFormat.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/AudioFloatConverter/ToFloatArray.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatConverter/ToFloatArray.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/AudioFloatFormatConverter/SkipTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatFormatConverter/SkipTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Available.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Available.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Close.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Close.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/GetFormat.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/GetFormat.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/GetFrameLength.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/GetFrameLength.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/MarkSupported.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/MarkSupported.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Read.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Read.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/ReadFloatArray.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/ReadFloatArray.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/ReadFloatArrayIntInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/ReadFloatArrayIntInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Reset.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Reset.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Skip.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/AudioFloatInputStream/Skip.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankFile.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankFile.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankInputStream.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankInputStream.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankInputStream2.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankInputStream2.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankUrl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/DLSSoundbankReader/TestGetSoundbankUrl.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/EmergencySoundbank/TestCreateSoundbank.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/EmergencySoundbank/TestCreateSoundbank.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/GetInputStream.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/GetInputStream.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/GetRoot.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/GetRoot.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/Load.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/Load.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/LoadAll.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/LoadAll.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferByteArray.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferByteArray.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferByteArrayIntInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferByteArrayIntInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferFile.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferFile.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferFileLongLong.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/NewModelByteBufferFileLongLong.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Available.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Available.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Close.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Close.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkReset.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkReset.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkSupported.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/MarkSupported.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Read.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Read.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByte.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByte.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByteIntInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/ReadByteIntInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Skip.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/RandomFileInputStream/Skip.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLong.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLong.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLongLong.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLongLong.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLongLongBoolean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/SubbufferLongLongBoolean.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/Unload.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/Unload.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/WriteTo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBuffer/WriteTo.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetAttenuation.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetAttenuation.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetChannels.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetChannels.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetLoopLength.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetLoopLength.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetLoopStart.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetLoopStart.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetPitchCorrection.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/GetPitchCorrection.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBuffer.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBuffer.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormat.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormat.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormatFloat.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormatFloat.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferFloat.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferFloat.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/Open.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/Open.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/OpenStream.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/OpenStream.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/Set8BitExtensionBuffer.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/Set8BitExtensionBuffer.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/SetLoopType.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelByteBufferWavetable/SetLoopType.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelDestination/NewModelDestination.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelDestination/NewModelDestination.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelDestination/NewModelDestinationModelIdentifier.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelDestination/NewModelDestinationModelIdentifier.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelDestination/SetIdentifier.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelDestination/SetIdentifier.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelDestination/SetTransform.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelDestination/SetTransform.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/EqualsObject.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/EqualsObject.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierString.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierString.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringString.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringString.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringStringInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/NewModelIdentifierStringStringInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetInstance.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetInstance.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetObject.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetObject.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetVariable.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelIdentifier/SetVariable.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/GetOscillators.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/GetOscillators.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetConnectionBlocks.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetConnectionBlocks.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetDefaultConnectionsEnabled.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetDefaultConnectionsEnabled.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetExclusiveClass.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetExclusiveClass.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetKeyFrom.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetKeyFrom.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetKeyTo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetKeyTo.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetName.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetName.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetSelfNonExclusive.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetSelfNonExclusive.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetVelFrom.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetVelFrom.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetVelTo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelPerformer/SetVelTo.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSource.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSource.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifier.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifier.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBoolean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBoolean.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBooleanBoolean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBooleanBoolean.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBooleanBooleanInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierBooleanBooleanInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierModelTransform.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/NewModelSourceModelIdentifierModelTransform.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelSource/SetIdentifier.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/SetIdentifier.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelSource/SetTransform.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelSource/SetTransform.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelStandardIndexedDirector/ModelStandardIndexedDirectorTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardIndexedDirector/ModelStandardIndexedDirectorTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransform.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransform.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBoolean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBoolean.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBooleanBoolean.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBooleanBoolean.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBooleanBooleanInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/NewModelStandardTransformBooleanBooleanInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetDirection.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetDirection.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetPolarity.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetPolarity.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetTransform.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/SetTransform.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformAbsolute.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformAbsolute.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformConcave.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformConcave.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformConvex.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformConvex.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformLinear.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformLinear.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformSwitch.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/ModelStandardTransform/TransformSwitch.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Available.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Available.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Close.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Close.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/GetFilePointer.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/GetFilePointer.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/GetSize.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/GetSize.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/HasNextChunk.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/HasNextChunk.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Read.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Read.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadByte.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadByte.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadByteArrayIntInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadByteArrayIntInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadLong.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadLong.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadShort.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadShort.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadString.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadString.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedByte.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedByte.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedShort.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/ReadUnsignedShort.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Skip.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/Skip.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/WriteOutputStream.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/RiffReaderWriter/WriteOutputStream.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankFile.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankFile.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankInputStream.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankInputStream.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankInputStream2.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankInputStream2.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankUrl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SF2SoundbankReader/TestGetSoundbankUrl.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrument.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrument.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntIntIntInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntIntIntInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntIntIntIntInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelInstrumentIntIntIntIntInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformer.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformer.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArray.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArray.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntIntIntInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntIntIntInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntIntIntIntInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerArrayIntIntIntIntInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntIntIntInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntIntIntInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntIntIntIntInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/AddModelPerformerIntIntIntIntInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/Clear.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/Clear.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/SetName.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/SetName.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/SetPatch.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleInstrument/SetPatch.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/AddInstrument.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/AddInstrument.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/AddResource.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/AddResource.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/GetInstrument.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/GetInstrument.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/RemoveInstrument.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/RemoveInstrument.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetDescription.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetDescription.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetName.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetName.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetVendor.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetVendor.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetVersion.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SimpleSoundbank/SetVersion.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Array.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Array.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Clear.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Clear.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Get.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/Get.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/NewSoftAudioBuffer.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioBuffer/NewSoftAudioBuffer.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/DummySourceDataLine.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/DummySourceDataLine.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/GetFormat.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/GetFormat.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/GetPropertyInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/GetPropertyInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/Open.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/Open.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/OpenStream.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftAudioSynthesizer/OpenStream.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/AllNotesOff.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/AllNotesOff.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/AllSoundOff.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/AllSoundOff.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/ChannelPressure.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/ChannelPressure.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Controller.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Controller.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/LocalControl.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/LocalControl.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Mono.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Mono.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Mute.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Mute.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOff.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOff.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOff2.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOff2.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOn.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOn.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest2.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/NoteOverFlowTest2.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Omni.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Omni.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/PitchBend.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/PitchBend.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/PolyPressure.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/PolyPressure.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/ProgramAndBankChange.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/ProgramAndBankChange.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/ProgramChange.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/ProgramChange.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/ResetAllControllers.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/ResetAllControllers.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/SoftTestUtils.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/SoftTestUtils.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftChannel/Solo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftChannel/Solo.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftCubicResampler/Interpolate.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftCubicResampler/Interpolate.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftFilter/TestProcessAudio.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftFilter/TestProcessAudio.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftLanczosResampler/Interpolate.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftLanczosResampler/Interpolate.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_mono.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_mono.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_mono_overdrive.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_mono_overdrive.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_overdrive.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_mix_overdrive.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_normal.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_normal.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_normal_mono.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_normal_mono.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_overdrive.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_overdrive.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_overdrive_mono.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftLimiter/ProcessAudio_replace_overdrive_mono.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftLinearResampler/Interpolate.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftLinearResampler/Interpolate.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftLinearResampler2/Interpolate.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftLinearResampler2/Interpolate.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftLowFrequencyOscillator/TestProcessControlLogic.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftLowFrequencyOscillator/TestProcessControlLogic.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftPointResampler/Interpolate.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftPointResampler/Interpolate.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftProvider/GetDevice.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftProvider/GetDevice.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Close.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Close.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/GetMidiDevice.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/GetMidiDevice.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ActiveSense.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ActiveSense.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_AllNotesOff.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_AllNotesOff.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_AllSoundOff.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_AllSoundOff.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ChannelPressure.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ChannelPressure.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Controller.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Controller.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Mono.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Mono.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOff.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOff.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_AllChannels.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_AllChannels.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_Delayed.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_Delayed.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_Multiple.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_NoteOn_Multiple.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Omni.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_Omni.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_PitchBend.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_PitchBend.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_PolyPressure.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_PolyPressure.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ProgramChange.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ProgramChange.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ResetAllControllers.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/Send_ResetAllControllers.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftReceiver/SoftTestUtils.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftReceiver/SoftTestUtils.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSincResampler/Interpolate.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSincResampler/Interpolate.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/Close.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/Close.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/DummySourceDataLine.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/DummySourceDataLine.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetAvailableInstruments.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetAvailableInstruments.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetAvailableInstruments2.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetAvailableInstruments2.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetChannels.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetChannels.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetDefaultSoundbank.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetDefaultSoundbank.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetDeviceInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetDeviceInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLatency.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLatency.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLoadedInstruments.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLoadedInstruments.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLoadedInstruments2.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetLoadedInstruments2.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxPolyphony.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxPolyphony.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxReceivers.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxReceivers.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxTransmitters.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMaxTransmitters.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMicrosecondPosition.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetMicrosecondPosition.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetPropertyInfo.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetPropertyInfo.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver2.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceiver2.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceivers.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetReceivers.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitter.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitter.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitters.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetTransmitters.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetVoiceStatus.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/GetVoiceStatus.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/ImplicitOpenClose.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/ImplicitOpenClose.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/IsOpen.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/IsOpen.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/IsSoundbankSupported.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/IsSoundbankSupported.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadAllInstruments.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadAllInstruments.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadInstrument.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadInstrument.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadInstruments.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/LoadInstruments.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/Open.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/Open.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/OpenStream.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/OpenStream.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/RemapInstrument.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/RemapInstrument.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestDisableLoadDefaultSoundbank.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestDisableLoadDefaultSoundbank.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestPreciseTimestampRendering.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestPreciseTimestampRendering.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestRender1.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/TestRender1.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadAllInstruments.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadAllInstruments.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadInstrument.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadInstrument.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadInstruments.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftSynthesizer/UnloadInstruments.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetName.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetName.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetTuning.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetTuning.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetTuningInt.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/GetTuningInt.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load1.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load1.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load2.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load2.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load4.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load4.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load5.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load5.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load6.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load6.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load7.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load7.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load8.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load8.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load9.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/Load9.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuning.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuning.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningByteArray.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningByteArray.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningPatch.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningPatch.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningPatchByteArray.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/NewSoftTuningPatchByteArray.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Gervill/SoftTuning/RealTimeTuning.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Gervill/SoftTuning/RealTimeTuning.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/MidiDeviceConnectors/TestAllDevices.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/MidiDeviceConnectors/TestAllDevices.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/midi/Sequencer/SequencerImplicitSynthOpen.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/midi/Sequencer/SequencerImplicitSynthOpen.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/**
* @test
* @bug 6660470
--- a/jdk/test/javax/sound/sampled/AudioFormat/Matches_NOT_SPECIFIED.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/sampled/AudioFormat/Matches_NOT_SPECIFIED.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/sampled/AudioFormat/PCM_FLOAT_support.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/sampled/AudioFormat/PCM_FLOAT_support.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/sampled/Clip/ClipSetPos.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/sampled/Clip/ClipSetPos.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/sampled/DataLine/DataLine_ArrayIndexOutOfBounds.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/sampled/DataLine/DataLine_ArrayIndexOutOfBounds.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/**
* @test
* @bug 7088367
--- a/jdk/test/javax/sound/sampled/DirectAudio/bug6400879.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/sampled/DirectAudio/bug6400879.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/sampled/FileWriter/AlawEncoderSync.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/sampled/FileWriter/AlawEncoderSync.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/sound/sampled/FileWriter/WriterCloseInput.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/sound/sampled/FileWriter/WriterCloseInput.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/**
* @test
* @bug 7013521
--- a/jdk/test/javax/swing/JCheckBox/4449413/bug4449413.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JCheckBox/4449413/bug4449413.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
When the applet starts, you'll see eight controls with black backgrounds.
--- a/jdk/test/javax/swing/JColorChooser/Test4222508.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JColorChooser/Test4222508.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
Use the check box above the color chooser to disable it.
--- a/jdk/test/javax/swing/JColorChooser/Test4759306.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JColorChooser/Test4759306.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
If you see the preview panel, then test failed, otherwise it passed.
--- a/jdk/test/javax/swing/JColorChooser/Test4759934.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JColorChooser/Test4759934.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
1. Press button "Show Dialog" at the frame "Test" and
--- a/jdk/test/javax/swing/JColorChooser/Test4887836.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JColorChooser/Test4887836.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
If you do not see white area under swatches,
--- a/jdk/test/javax/swing/JColorChooser/Test6348456.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JColorChooser/Test6348456.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
When applet starts, you'll see that the preview is white.
--- a/jdk/test/javax/swing/JColorChooser/Test6977726.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JColorChooser/Test6977726.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
If you don't see the preview panel, then test failed, otherwise it passed.
--- a/jdk/test/javax/swing/JComponent/4337267/bug4337267.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JComponent/4337267/bug4337267.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
* @test
* @bug 4337267
--- a/jdk/test/javax/swing/JComponent/6683775/bug6683775.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JComponent/6683775/bug6683775.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/* @test
@bug 6683775 6794764
@summary Painting artifacts is seen when panel is made setOpaque(false) for a translucent window
--- a/jdk/test/javax/swing/JEditorPane/4492274/test.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JEditorPane/4492274/test.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
<a name="top">top</a>
--- a/jdk/test/javax/swing/JEditorPane/6917744/test.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JEditorPane/6917744/test.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body bgcolor="#ffffff">
<table border="0">
--- a/jdk/test/javax/swing/JEditorPane/bug4714674.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JEditorPane/bug4714674.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/* @test
@bug 4714674
@summary Tests that JEditorPane opens HTTP connection asynchronously
--- a/jdk/test/javax/swing/JFileChooser/6570445/bug6570445.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JFileChooser/6570445/bug6570445.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/*
* @test
* @bug 6570445
--- a/jdk/test/javax/swing/JFileChooser/6698013/bug6698013.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JFileChooser/6698013/bug6698013.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
<applet code="bug6698013.class" width=200 height=200></applet>
--- a/jdk/test/javax/swing/JFileChooser/6698013/bug6698013.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JFileChooser/6698013/bug6698013.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/* @test %W% %E%
@bug 6698013
@summary JFileChooser can no longer navigate non-local file systems.
--- a/jdk/test/javax/swing/JFileChooser/6798062/bug6798062.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JFileChooser/6798062/bug6798062.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
<applet code="bug6798062.class" width=400 height=300></applet>
--- a/jdk/test/javax/swing/JInternalFrame/6726866/bug6726866.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JInternalFrame/6726866/bug6726866.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
<applet code="bug6726866.class" width=400 height=100></applet>
--- a/jdk/test/javax/swing/JInternalFrame/6726866/bug6726866.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JInternalFrame/6726866/bug6726866.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/* @test
@bug 6726866
@summary Repainting artifacts when resizing or dragging JInternalFrames in non-opaque toplevel
--- a/jdk/test/javax/swing/JSlider/4987336/bug4987336.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JSlider/4987336/bug4987336.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
<applet code="bug4987336.class" width=600 height=400></applet>
--- a/jdk/test/javax/swing/JSlider/6524424/bug6524424.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JSlider/6524424/bug6524424.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
<applet code="bug6524424.class" width=200 height=200></applet>
--- a/jdk/test/javax/swing/JSlider/6587742/bug6587742.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JSlider/6587742/bug6587742.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
<applet code="bug6587742.class" width=800 height=600></applet>
--- a/jdk/test/javax/swing/JSlider/6742358/bug6742358.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JSlider/6742358/bug6742358.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
<applet code="bug6742358.class" width=400 height=300></applet>
--- a/jdk/test/javax/swing/JTabbedPane/4310381/bug4310381.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JTabbedPane/4310381/bug4310381.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
<applet code="bug4310381.class" width=150 height=150></applet>
--- a/jdk/test/javax/swing/JTree/4314199/bug4314199.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/JTree/4314199/bug4314199.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
Select the last tree node (marked "Here") and click on the menu.
--- a/jdk/test/javax/swing/SwingUtilities/7170657/bug7170657.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/SwingUtilities/7170657/bug7170657.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/swing/border/Test4129681.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/border/Test4129681.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
When applet starts, you'll see a checkbox and a label with a titled border.
--- a/jdk/test/javax/swing/border/Test4243289.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/border/Test4243289.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
When applet starts, you'll see a panel with a TitledBorder with title "Panel Title".
--- a/jdk/test/javax/swing/border/Test4247606.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/border/Test4247606.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
If the button do not fit into the titled border bounds
--- a/jdk/test/javax/swing/border/Test4252164.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/border/Test4252164.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
Please, ensure that rounded border is filled completely.
--- a/jdk/test/javax/swing/border/Test4760089.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/border/Test4760089.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
When applet starts, you'll see a panel with a compound titled border.
--- a/jdk/test/javax/swing/border/Test6910490.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/border/Test6910490.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
If the border is painted over scroll bars then test fails.
--- a/jdk/test/javax/swing/border/Test7022041.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/border/Test7022041.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/javax/swing/text/html/TableView/7030332/bug7030332.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/swing/text/html/TableView/7030332/bug7030332.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<body>
<applet code="bug7030332.class" width=600 height=400></applet>
--- a/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -22,7 +22,8 @@
*/
/**
- * @test @bug 8022548
+ * @test
+ * @bug 8022548
* @summary test that a parser can use DTDConfiguration
* @run main XOMParserTest
*/
@@ -60,30 +61,27 @@
}
public final void testTransform() {
-
- try {
+ String inFilename = filePath + "/JDK8022548.xml";
+ String xslFilename = filePath + "/JDK8022548.xsl";
+ String outFilename = "JDK8022548.out";
- String inFilename = filePath + "/JDK8022548.xml";
- String xslFilename = filePath + "/JDK8022548.xsl";
- String outFilename = "JDK8022548.out";
+ try (InputStream xslInput = new FileInputStream(xslFilename);
+ InputStream xmlInput = new FileInputStream(inFilename);
+ OutputStream out = new FileOutputStream(outFilename);
+ ) {
+
StringWriter sw = new StringWriter();
// Create transformer factory
TransformerFactory factory = TransformerFactory.newInstance();
- // set the translet name
-// factory.setAttribute("translet-name", "myTranslet");
-
- // set the destination directory
-// factory.setAttribute("destination-directory", "c:\\temp");
-// factory.setAttribute("generate-translet", Boolean.TRUE);
// Use the factory to create a template containing the xsl file
- Templates template = factory.newTemplates(new StreamSource(new FileInputStream(xslFilename)));
+ Templates template = factory.newTemplates(new StreamSource(xslInput));
// Use the template to create a transformer
Transformer xformer = template.newTransformer();
// Prepare the input and output files
- Source source = new StreamSource(new FileInputStream(inFilename));
- Result result = new StreamResult(new FileOutputStream(outFilename));
+ Source source = new StreamSource(xmlInput);
+ Result result = new StreamResult(outFilename);
//Result result = new StreamResult(sw);
// Apply the xsl file to the source file and write the result to the output file
xformer.transform(source, result);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/lib/testlibrary/AssertsTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,237 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import static jdk.testlibrary.Asserts.*;
+
+/* @test
+ * @summary Tests the different assertions in the Assert class
+ * @library /testlibrary
+ */
+public class AssertsTest {
+ private static class Foo implements Comparable<Foo> {
+ final int id;
+ public Foo(int id) {
+ this.id = id;
+ }
+
+ public int compareTo(Foo f) {
+ return new Integer(id).compareTo(new Integer(f.id));
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+ testLessThan();
+ testLessThanOrEqual();
+ testEquals();
+ testGreaterThanOrEqual();
+ testGreaterThan();
+ testNotEquals();
+ testNull();
+ testNotNull();
+ testTrue();
+ testFalse();
+ }
+
+ private static void testLessThan() throws Exception {
+ expectPass(Assertion.LT, 1, 2);
+
+ expectFail(Assertion.LT, 2, 2);
+ expectFail(Assertion.LT, 2, 1);
+ expectFail(Assertion.LT, null, 2);
+ expectFail(Assertion.LT, 2, null);
+ }
+
+ private static void testLessThanOrEqual() throws Exception {
+ expectPass(Assertion.LTE, 1, 2);
+ expectPass(Assertion.LTE, 2, 2);
+
+ expectFail(Assertion.LTE, 3, 2);
+ expectFail(Assertion.LTE, null, 2);
+ expectFail(Assertion.LTE, 2, null);
+ }
+
+ private static void testEquals() throws Exception {
+ expectPass(Assertion.EQ, 1, 1);
+ expectPass(Assertion.EQ, null, null);
+
+ Foo f1 = new Foo(1);
+ expectPass(Assertion.EQ, f1, f1);
+
+ Foo f2 = new Foo(1);
+ expectFail(Assertion.EQ, f1, f2);
+ expectFail(Assertion.LTE, null, 2);
+ expectFail(Assertion.LTE, 2, null);
+ }
+
+ private static void testGreaterThanOrEqual() throws Exception {
+ expectPass(Assertion.GTE, 1, 1);
+ expectPass(Assertion.GTE, 2, 1);
+
+ expectFail(Assertion.GTE, 1, 2);
+ expectFail(Assertion.GTE, null, 2);
+ expectFail(Assertion.GTE, 2, null);
+ }
+
+ private static void testGreaterThan() throws Exception {
+ expectPass(Assertion.GT, 2, 1);
+
+ expectFail(Assertion.GT, 1, 1);
+ expectFail(Assertion.GT, 1, 2);
+ expectFail(Assertion.GT, null, 2);
+ expectFail(Assertion.GT, 2, null);
+ }
+
+ private static void testNotEquals() throws Exception {
+ expectPass(Assertion.NE, null, 1);
+ expectPass(Assertion.NE, 1, null);
+
+ Foo f1 = new Foo(1);
+ Foo f2 = new Foo(1);
+ expectPass(Assertion.NE, f1, f2);
+
+ expectFail(Assertion.NE, null, null);
+ expectFail(Assertion.NE, f1, f1);
+ expectFail(Assertion.NE, 1, 1);
+ }
+
+ private static void testNull() throws Exception {
+ expectPass(Assertion.NULL, null);
+
+ expectFail(Assertion.NULL, 1);
+ }
+
+ private static void testNotNull() throws Exception {
+ expectPass(Assertion.NOTNULL, 1);
+
+ expectFail(Assertion.NOTNULL, null);
+ }
+
+ private static void testTrue() throws Exception {
+ expectPass(Assertion.TRUE, true);
+
+ expectFail(Assertion.TRUE, false);
+ }
+
+ private static void testFalse() throws Exception {
+ expectPass(Assertion.FALSE, false);
+
+ expectFail(Assertion.FALSE, true);
+ }
+
+ private static <T extends Comparable<T>> void expectPass(Assertion assertion, T ... args)
+ throws Exception {
+ Assertion.run(assertion, args);
+ }
+
+ private static <T extends Comparable<T>> void expectFail(Assertion assertion, T ... args)
+ throws Exception {
+ try {
+ Assertion.run(assertion, args);
+ } catch (RuntimeException e) {
+ return;
+ }
+ throw new Exception("Expected " + Assertion.format(assertion, (Object[]) args) +
+ " to throw a RuntimeException");
+ }
+
+}
+
+enum Assertion {
+ LT, LTE, EQ, GTE, GT, NE, NULL, NOTNULL, FALSE, TRUE;
+
+ public static <T extends Comparable<T>> void run(Assertion assertion, T ... args) {
+ String msg = "Expected " + format(assertion, args) + " to pass";
+ switch (assertion) {
+ case LT:
+ assertLessThan(args[0], args[1], msg);
+ break;
+ case LTE:
+ assertLessThanOrEqual(args[0], args[1], msg);
+ break;
+ case EQ:
+ assertEquals(args[0], args[1], msg);
+ break;
+ case GTE:
+ assertGreaterThanOrEqual(args[0], args[1], msg);
+ break;
+ case GT:
+ assertGreaterThan(args[0], args[1], msg);
+ break;
+ case NE:
+ assertNotEquals(args[0], args[1], msg);
+ break;
+ case NULL:
+ assertNull(args == null ? args : args[0], msg);
+ break;
+ case NOTNULL:
+ assertNotNull(args == null ? args : args[0], msg);
+ break;
+ case FALSE:
+ assertFalse((Boolean) args[0], msg);
+ break;
+ case TRUE:
+ assertTrue((Boolean) args[0], msg);
+ break;
+ default:
+ // do nothing
+ }
+ }
+
+ public static String format(Assertion assertion, Object ... args) {
+ switch (assertion) {
+ case LT:
+ return asString("assertLessThan", args);
+ case LTE:
+ return asString("assertLessThanOrEqual", args);
+ case EQ:
+ return asString("assertEquals", args);
+ case GTE:
+ return asString("assertGreaterThanOrEquals", args);
+ case GT:
+ return asString("assertGreaterThan", args);
+ case NE:
+ return asString("assertNotEquals", args);
+ case NULL:
+ return asString("assertNull", args);
+ case NOTNULL:
+ return asString("assertNotNull", args);
+ case FALSE:
+ return asString("assertFalse", args);
+ case TRUE:
+ return asString("assertTrue", args);
+ default:
+ return "";
+ }
+ }
+
+ private static String asString(String assertion, Object ... args) {
+ if (args == null) {
+ return String.format("%s(null)", assertion);
+ }
+ if (args.length == 1) {
+ return String.format("%s(%s)", assertion, args[0]);
+ } else {
+ return String.format("%s(%s, %s)", assertion, args[0], args[1]);
+ }
+ }
+}
--- a/jdk/test/lib/testlibrary/ClassFileInstaller.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/lib/testlibrary/ClassFileInstaller.java Wed Jul 05 19:22:42 2017 +0200
@@ -45,7 +45,10 @@
// Create the class file's package directory
Path p = Paths.get(pathName);
- Files.createDirectories(p.getParent());
+ Path parent = p.getParent();
+ if (parent != null) {
+ Files.createDirectories(parent);
+ }
// Create the class file
Files.copy(is, p, StandardCopyOption.REPLACE_EXISTING);
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/lib/testlibrary/OutputAnalyzerReportingTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+/*
+ * @test
+ * @summary Test the OutputAnalyzer reporting functionality,
+ * such as printing additional diagnostic info
+ * (exit code, stdout, stderr, command line, etc.)
+ * @library /testlibrary
+ */
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
+import jdk.testlibrary.OutputAnalyzer;
+
+public class OutputAnalyzerReportingTest {
+
+ public static void main(String[] args) throws Exception {
+ // Create the output analyzer under test
+ String stdout = "aaaaaa";
+ String stderr = "bbbbbb";
+ OutputAnalyzer output = new OutputAnalyzer(stdout, stderr);
+
+ // Expected summary values should be the same for all cases,
+ // since the outputAnalyzer object is the same
+ String expectedExitValue = "-1";
+ String expectedSummary =
+ " stdout: [" + stdout + "];\n" +
+ " stderr: [" + stderr + "]\n" +
+ " exitValue = " + expectedExitValue + "\n";
+
+
+ DiagnosticSummaryTestRunner testRunner =
+ new DiagnosticSummaryTestRunner();
+
+ // should have exit value
+ testRunner.init(expectedSummary);
+ int unexpectedExitValue = 2;
+ try {
+ output.shouldHaveExitValue(unexpectedExitValue);
+ } catch (RuntimeException e) { }
+ testRunner.closeAndCheckResults();
+
+ // should not contain
+ testRunner.init(expectedSummary);
+ try {
+ output.shouldNotContain(stdout);
+ } catch (RuntimeException e) { }
+ testRunner.closeAndCheckResults();
+
+ // should contain
+ testRunner.init(expectedSummary);
+ try {
+ output.shouldContain("unexpected-stuff");
+ } catch (RuntimeException e) { }
+ testRunner.closeAndCheckResults();
+
+ // should not match
+ testRunner.init(expectedSummary);
+ try {
+ output.shouldNotMatch("[a]");
+ } catch (RuntimeException e) { }
+ testRunner.closeAndCheckResults();
+
+ // should match
+ testRunner.init(expectedSummary);
+ try {
+ output.shouldMatch("[qwerty]");
+ } catch (RuntimeException e) { }
+ testRunner.closeAndCheckResults();
+
+ }
+
+ private static class DiagnosticSummaryTestRunner {
+ private ByteArrayOutputStream byteStream =
+ new ByteArrayOutputStream(10000);
+
+ private String expectedSummary = "";
+ private PrintStream errStream;
+
+
+ public void init(String expectedSummary) {
+ this.expectedSummary = expectedSummary;
+ byteStream.reset();
+ errStream = new PrintStream(byteStream);
+ System.setErr(errStream);
+ }
+
+ public void closeAndCheckResults() {
+ // check results
+ errStream.close();
+ String stdErrStr = byteStream.toString();
+ if (!stdErrStr.contains(expectedSummary)) {
+ throw new RuntimeException("The output does not contain "
+ + "the diagnostic message, or the message is incorrect");
+ }
+ }
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/FileUtils.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.testlibrary;
+
+import java.io.IOException;
+import java.nio.file.DirectoryNotEmptyException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * Common library for various test file utility functions.
+ */
+public final class FileUtils {
+
+ private static final boolean isWindows =
+ System.getProperty("os.name").startsWith("Windows");
+ private static final int RETRY_DELETE_MILLIS = isWindows ? 500 : 0;
+ private static final int MAX_RETRY_DELETE_TIMES = isWindows ? 15 : 0;
+
+ /**
+ * Deletes a file, retrying if necessary.
+ *
+ * @param path the file to delete
+ *
+ * @throws NoSuchFileException
+ * if the file does not exist (optional specific exception)
+ * @throws DirectoryNotEmptyException
+ * if the file is a directory and could not otherwise be deleted
+ * because the directory is not empty (optional specific exception)
+ * @throws IOException
+ * if an I/O error occurs
+ */
+ public static void deleteFileWithRetry(Path path)
+ throws IOException
+ {
+ try {
+ deleteFileWithRetry0(path);
+ } catch (InterruptedException x) {
+ throw new IOException("Interrupted while deleting.", x);
+ }
+ }
+
+ private static void deleteFileWithRetry0(Path path)
+ throws IOException, InterruptedException
+ {
+ int times = 0;
+ IOException ioe = null;
+ while (true) {
+ try {
+ Files.delete(path);
+ while (Files.exists(path)) {
+ times++;
+ if (times > MAX_RETRY_DELETE_TIMES)
+ throw new IOException("File still exists after " + times + " waits.");
+ Thread.sleep(RETRY_DELETE_MILLIS);
+ }
+ break;
+ } catch (NoSuchFileException | DirectoryNotEmptyException x) {
+ throw x;
+ } catch (IOException x) {
+ // Backoff/retry in case another process is accessing the file
+ times++;
+ if (ioe == null)
+ ioe = x;
+ else
+ ioe.addSuppressed(x);
+
+ if (times > MAX_RETRY_DELETE_TIMES)
+ throw ioe;
+ Thread.sleep(RETRY_DELETE_MILLIS);
+ }
+ }
+ }
+
+ /**
+ * Deletes a directory and its subdirectories, retrying if necessary.
+ *
+ * @param dir the directory to delete
+ *
+ * @throws IOException
+ * If an I/O error occurs. Any such exceptions are caught
+ * internally. If only one is caught, then it is re-thrown.
+ * If more than one exception is caught, then the second and
+ * following exceptions are added as suppressed exceptions of the
+ * first one caught, which is then re-thrown.
+ */
+ public static void deleteFileTreeWithRetry(Path dir)
+ throws IOException
+ {
+ IOException ioe = null;
+ final List<IOException> excs = deleteFileTreeUnchecked(dir);
+ if (!excs.isEmpty()) {
+ ioe = excs.remove(0);
+ for (IOException x : excs)
+ ioe.addSuppressed(x);
+ }
+ if (ioe != null)
+ throw ioe;
+ }
+
+ public static List<IOException> deleteFileTreeUnchecked(Path dir) {
+ final List<IOException> excs = new ArrayList<>();
+ try {
+ java.nio.file.Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
+ @Override
+ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
+ try {
+ deleteFileWithRetry0(file);
+ } catch (IOException x) {
+ excs.add(x);
+ } catch (InterruptedException x) {
+ excs.add(new IOException("Interrupted while deleting.", x));
+ return FileVisitResult.TERMINATE;
+ }
+ return FileVisitResult.CONTINUE;
+ }
+ @Override
+ public FileVisitResult postVisitDirectory(Path dir, IOException exc) {
+ try {
+ deleteFileWithRetry0(dir);
+ } catch (IOException x) {
+ excs.add(x);
+ } catch (InterruptedException x) {
+ excs.add(new IOException("Interrupted while deleting.", x));
+ return FileVisitResult.TERMINATE;
+ }
+ return FileVisitResult.CONTINUE;
+ }
+ @Override
+ public FileVisitResult visitFileFailed(Path file, IOException exc) {
+ excs.add(exc);
+ return FileVisitResult.CONTINUE;
+ }
+ });
+ } catch (IOException x) {
+ excs.add(x);
+ }
+ return excs;
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/InputArguments.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.testlibrary;
+
+import java.lang.management.RuntimeMXBean;
+import java.lang.management.ManagementFactory;
+import java.util.List;
+
+/**
+ * This class provides access to the input arguments to the VM.
+ */
+public class InputArguments {
+ private static final List<String> args;
+
+ static {
+ RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
+ args = runtimeMxBean.getInputArguments();
+ }
+
+ /**
+ * Returns true if {@code arg} is an input argument to the VM.
+ *
+ * This is useful for checking boolean flags such as -XX:+UseSerialGC or
+ * -XX:-UsePerfData.
+ *
+ * @param arg The name of the argument.
+ * @return {@code true} if the given argument is an input argument,
+ * otherwise {@code false}.
+ */
+ public static boolean contains(String arg) {
+ return args.contains(arg);
+ }
+
+ /**
+ * Returns true if {@code prefix} is the start of an input argument to the
+ * VM.
+ *
+ * This is useful for checking if flags describing a quantity, such as
+ * -XX:+MaxMetaspaceSize=100m, is set without having to know the quantity.
+ * To check if the flag -XX:MaxMetaspaceSize is set, use
+ * {@code InputArguments.containsPrefix("-XX:MaxMetaspaceSize")}.
+ *
+ * @param prefix The start of the argument.
+ * @return {@code true} if the given argument is the start of an input
+ * argument, otherwise {@code false}.
+ */
+ public static boolean containsPrefix(String prefix) {
+ for (String arg : args) {
+ if (arg.startsWith(prefix)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Get the string containing input arguments passed to the VM
+ */
+ public static String getInputArguments() {
+ StringBuilder result = new StringBuilder();
+ for (String arg : args)
+ result.append(arg).append(' ');
+
+ return result.toString();
+ }
+
+}
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/JcmdBase.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/JcmdBase.java Wed Jul 05 19:22:42 2017 +0200
@@ -23,8 +23,11 @@
package jdk.testlibrary;
-import java.util.ArrayList;
+import java.util.Arrays;
+/**
+ * Super class for tests which need to attach jcmd to the current process.
+ */
public class JcmdBase {
private static ProcessBuilder processBuilder = new ProcessBuilder();
@@ -32,46 +35,24 @@
/**
* Attach jcmd to the current process
*
- * @param commandArgs
- * jcmd command line parameters, e.g. JFR.start
+ * @param toolArgs
+ * jcmd command line parameters, e.g. VM.flags
* @return jcmd output
* @throws Exception
*/
- public final static OutputAnalyzer jcmd(String... commandArgs)
+ public final static OutputAnalyzer jcmd(String... toolArgs)
throws Exception {
- ArrayList<String> cmd = new ArrayList<String>();
- String cmdString = "";
-
- // jcmd from the jdk to be tested
- String jcmdPath = JdkFinder.getTool("jcmd", false);
- cmd.add(jcmdPath);
- cmdString += jcmdPath;
-
- String pid = Integer.toString(ProcessTools.getProcessId());
- cmd.add(pid);
- cmdString += " " + pid;
-
- for (int i = 0; i < commandArgs.length; i++) {
- cmd.add(commandArgs[i]);
- cmdString += " " + commandArgs[i];
+ JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jcmd");
+ launcher.addToolArg(Integer.toString(ProcessTools.getProcessId()));
+ for (String toolArg : toolArgs) {
+ launcher.addToolArg(toolArg);
}
-
- // Log command line for debugging purpose
- System.out.println("Command line:");
- System.out.println(cmdString);
-
- processBuilder.command(cmd);
+ processBuilder.command(launcher.getCommand());
+ System.out.println(Arrays.toString(processBuilder.command().toArray()).replace(",", ""));
OutputAnalyzer output = new OutputAnalyzer(processBuilder.start());
-
- // Log output for debugging purpose
- System.out.println("Command output:");
System.out.println(output.getOutput());
- if (output.getExitValue() != 0) {
- throw new Exception(processBuilder.command()
- + " resulted in exit value " + output.getExitValue()
- + " , expected to get 0");
- }
+ output.shouldHaveExitValue(0);
return output;
}
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/JdkFinder.java Thu Nov 14 23:33:06 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package jdk.testlibrary;
-
-import java.io.File;
-
-public final class JdkFinder {
-
- private JdkFinder() {
- }
-
- private static String getExecutable(String executable, String property) {
- String binPath = System.getProperty(property);
- if (binPath == null) {
- throw new RuntimeException(
- "System property '" + property + "' not set");
- }
-
- binPath += File.separatorChar + "bin" + File.separatorChar + executable;
-
- return binPath;
- }
-
- /**
- * Returns the full path to a java launcher in jdk/bin based on system
- * property.
- *
- * @param stableJdk
- * see {@link #getTool(String, boolean)}
- * @return Full path to a java launcher in jdk/bin.
- */
- public static String getJavaLauncher(boolean stableJdk) {
- return getTool("java", stableJdk);
- }
-
- /**
- * Returns the full path to an executable in jdk/bin based on system
- * property. Depending on value of {@code stableJdk} the method will look for
- * either 'compile.jdk' or 'test.jdk' system properties.
- * 'test.jdk' is normally set by jtreg. When running test separately,
- * set this property using '-Dtest.jdk=/path/to/jdk'.
- *
- * @param stableJdk
- * If {@code true} the {@code tool} will be retrieved
- * from the compile (stable) JDK.
- * If {@code false} the {@code tool} will be retrieved
- * from the test JDK.
- * @return Full path to an executable in jdk/bin.
- */
- public static String getTool(String tool, boolean stableJdk) {
- if (stableJdk) {
- return getExecutable(tool, "compile.jdk");
- } else {
- return getExecutable(tool, "test.jdk");
- }
- }
-}
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/OutputAnalyzer.java Wed Jul 05 19:22:42 2017 +0200
@@ -27,6 +27,9 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+/**
+ * Utility class for verifying output and exit value from a {@code Process}.
+ */
public final class OutputAnalyzer {
private final String stdout;
@@ -85,9 +88,9 @@
public void shouldContain(String expectedString) {
if (!stdout.contains(expectedString)
&& !stderr.contains(expectedString)) {
+ reportDiagnosticSummary();
throw new RuntimeException("'" + expectedString
- + "' missing from stdout/stderr: [" + stdout + stderr
- + "]\n");
+ + "' missing from stdout/stderr \n");
}
}
@@ -101,8 +104,9 @@
*/
public void stdoutShouldContain(String expectedString) {
if (!stdout.contains(expectedString)) {
+ reportDiagnosticSummary();
throw new RuntimeException("'" + expectedString
- + "' missing from stdout: [" + stdout + "]\n");
+ + "' missing from stdout \n");
}
}
@@ -116,8 +120,9 @@
*/
public void stderrShouldContain(String expectedString) {
if (!stderr.contains(expectedString)) {
+ reportDiagnosticSummary();
throw new RuntimeException("'" + expectedString
- + "' missing from stderr: [" + stderr + "]\n");
+ + "' missing from stderr \n");
}
}
@@ -132,12 +137,14 @@
*/
public void shouldNotContain(String notExpectedString) {
if (stdout.contains(notExpectedString)) {
+ reportDiagnosticSummary();
throw new RuntimeException("'" + notExpectedString
- + "' found in stdout: [" + stdout + "]\n");
+ + "' found in stdout \n");
}
if (stderr.contains(notExpectedString)) {
+ reportDiagnosticSummary();
throw new RuntimeException("'" + notExpectedString
- + "' found in stderr: [" + stderr + "]\n");
+ + "' found in stderr \n");
}
}
@@ -152,8 +159,9 @@
*/
public void stdoutShouldNotContain(String notExpectedString) {
if (stdout.contains(notExpectedString)) {
+ reportDiagnosticSummary();
throw new RuntimeException("'" + notExpectedString
- + "' found in stdout: [" + stdout + "]\n");
+ + "' found in stdout \n");
}
}
@@ -168,55 +176,63 @@
*/
public void stderrShouldNotContain(String notExpectedString) {
if (stderr.contains(notExpectedString)) {
+ reportDiagnosticSummary();
throw new RuntimeException("'" + notExpectedString
- + "' found in stderr: [" + stderr + "]\n");
+ + "' found in stderr \n");
}
}
/**
- * Verify that the stdout and stderr contents of output buffer matches
- * the pattern
+ * Verify that the stdout and stderr contents of output buffer matches the
+ * pattern
*
* @param pattern
- * @throws RuntimeException If the pattern was not found
+ * @throws RuntimeException
+ * If the pattern was not found
*/
public void shouldMatch(String pattern) {
- Matcher stdoutMatcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout);
- Matcher stderrMatcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr);
+ Matcher stdoutMatcher = Pattern.compile(pattern, Pattern.MULTILINE)
+ .matcher(stdout);
+ Matcher stderrMatcher = Pattern.compile(pattern, Pattern.MULTILINE)
+ .matcher(stderr);
if (!stdoutMatcher.find() && !stderrMatcher.find()) {
+ reportDiagnosticSummary();
throw new RuntimeException("'" + pattern
- + "' missing from stdout/stderr: [" + stdout + stderr
- + "]\n");
+ + "' missing from stdout/stderr \n");
}
}
/**
- * Verify that the stdout contents of output buffer matches the
- * pattern
+ * Verify that the stdout contents of output buffer matches the pattern
*
* @param pattern
- * @throws RuntimeException If the pattern was not found
+ * @throws RuntimeException
+ * If the pattern was not found
*/
public void stdoutShouldMatch(String pattern) {
- Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout);
+ Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(
+ stdout);
if (!matcher.find()) {
+ reportDiagnosticSummary();
throw new RuntimeException("'" + pattern
- + "' missing from stdout: [" + stdout + "]\n");
+ + "' missing from stdout \n");
}
}
/**
- * Verify that the stderr contents of output buffer matches the
- * pattern
+ * Verify that the stderr contents of output buffer matches the pattern
*
* @param pattern
- * @throws RuntimeException If the pattern was not found
+ * @throws RuntimeException
+ * If the pattern was not found
*/
public void stderrShouldMatch(String pattern) {
- Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr);
+ Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(
+ stderr);
if (!matcher.find()) {
+ reportDiagnosticSummary();
throw new RuntimeException("'" + pattern
- + "' missing from stderr: [" + stderr + "]\n");
+ + "' missing from stderr \n");
}
}
@@ -225,18 +241,22 @@
* match the pattern
*
* @param pattern
- * @throws RuntimeException If the pattern was found
+ * @throws RuntimeException
+ * If the pattern was found
*/
public void shouldNotMatch(String pattern) {
- Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout);
+ Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(
+ stdout);
if (matcher.find()) {
- throw new RuntimeException("'" + pattern
- + "' found in stdout: [" + stdout + "]\n");
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + pattern + "' found in stdout: '"
+ + matcher.group() + "' \n");
}
matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr);
if (matcher.find()) {
- throw new RuntimeException("'" + pattern
- + "' found in stderr: [" + stderr + "]\n");
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + pattern + "' found in stderr: '"
+ + matcher.group() + "' \n");
}
}
@@ -245,13 +265,15 @@
* pattern
*
* @param pattern
- * @throws RuntimeException If the pattern was found
+ * @throws RuntimeException
+ * If the pattern was found
*/
public void stdoutShouldNotMatch(String pattern) {
- Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout);
+ Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(
+ stdout);
if (matcher.find()) {
- throw new RuntimeException("'" + pattern
- + "' found in stdout: [" + stdout + "]\n");
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + pattern + "' found in stdout \n");
}
}
@@ -260,18 +282,56 @@
* pattern
*
* @param pattern
- * @throws RuntimeException If the pattern was found
+ * @throws RuntimeException
+ * If the pattern was found
*/
public void stderrShouldNotMatch(String pattern) {
- Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr);
+ Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(
+ stderr);
if (matcher.find()) {
- throw new RuntimeException("'" + pattern
- + "' found in stderr: [" + stderr + "]\n");
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + pattern + "' found in stderr \n");
}
}
/**
- * Verifiy the exit value of the process
+ * Get the captured group of the first string matching the pattern. stderr
+ * is searched before stdout.
+ *
+ * @param pattern
+ * The multi-line pattern to match
+ * @param group
+ * The group to capture
+ * @return The matched string or null if no match was found
+ */
+ public String firstMatch(String pattern, int group) {
+ Matcher stderrMatcher = Pattern.compile(pattern, Pattern.MULTILINE)
+ .matcher(stderr);
+ Matcher stdoutMatcher = Pattern.compile(pattern, Pattern.MULTILINE)
+ .matcher(stdout);
+ if (stderrMatcher.find()) {
+ return stderrMatcher.group(group);
+ }
+ if (stdoutMatcher.find()) {
+ return stdoutMatcher.group(group);
+ }
+ return null;
+ }
+
+ /**
+ * Get the first string matching the pattern. stderr is searched before
+ * stdout.
+ *
+ * @param pattern
+ * The multi-line pattern to match
+ * @return The matched string or null if no match was found
+ */
+ public String firstMatch(String pattern) {
+ return firstMatch(pattern, 0);
+ }
+
+ /**
+ * Verify the exit value of the process
*
* @param expectedExitValue
* Expected exit value from process
@@ -281,12 +341,25 @@
*/
public void shouldHaveExitValue(int expectedExitValue) {
if (getExitValue() != expectedExitValue) {
- throw new RuntimeException("Exit value " + getExitValue()
- + " , expected to get " + expectedExitValue);
+ reportDiagnosticSummary();
+ throw new RuntimeException("Expected to get exit value of ["
+ + expectedExitValue + "]\n");
}
}
/**
+ * Report summary that will help to diagnose the problem Currently includes:
+ * - standard input produced by the process under test - standard output -
+ * exit code Note: the command line is printed by the ProcessTools
+ */
+ private void reportDiagnosticSummary() {
+ String msg = " stdout: [" + stdout + "];\n" + " stderr: [" + stderr
+ + "]\n" + " exitValue = " + getExitValue() + "\n";
+
+ System.err.println(msg);
+ }
+
+ /**
* Get the contents of the output buffer (stdout and stderr)
*
* @return Content of the output buffer
--- a/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java Wed Jul 05 19:22:42 2017 +0200
@@ -25,10 +25,7 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
import java.io.PrintStream;
-import java.io.PrintWriter;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.lang.reflect.Field;
@@ -237,15 +234,20 @@
*/
public static ProcessBuilder createJavaProcessBuilder(String... command)
throws Exception {
- String javapath = JdkFinder.getJavaLauncher(false);
+ String javapath = JDKToolFinder.getJDKTool("java");
ArrayList<String> args = new ArrayList<>();
args.add(javapath);
Collections.addAll(args, getPlatformSpecificVMArgs());
Collections.addAll(args, command);
+ // Reporting
+ StringBuilder cmdLine = new StringBuilder();
+ for (String cmd : args)
+ cmdLine.append(cmd).append(' ');
+ System.out.println("Command line: [" + cmdLine.toString() + "]");
+
return new ProcessBuilder(args.toArray(new String[args.size()]));
-
}
}
--- a/jdk/test/sun/java2d/cmm/ColorConvertOp/ConstructorsNullTest/ConstructorsNullTest.html Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/java2d/cmm/ColorConvertOp/ConstructorsNullTest/ConstructorsNullTest.html Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+<!--
+ Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ This code is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License version 2 only, as
+ published by the Free Software Foundation.
+
+ This code is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ version 2 for more details (a copy is included in the LICENSE file that
+ accompanied this code).
+
+ You should have received a copy of the GNU General Public License version
+ 2 along with this work; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ or visit www.oracle.com if you need additional information or have any
+ questions.
+-->
+
<html>
<!--
@test
--- a/jdk/test/sun/java2d/cmm/ProfileOp/SetDataTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/java2d/cmm/ProfileOp/SetDataTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -23,7 +23,7 @@
/**
* @test
- * @bug 7042594
+ * @bug 7042594 8028206
* @summary Test verifies that ICC_Profile.setData() conforms the spec.
*
* @run main SetDataTest
--- a/jdk/test/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java Wed Jul 05 19:22:42 2017 +0200
@@ -21,6 +21,7 @@
* questions.
*/
+import java.util.concurrent.CountDownLatch;
import java.util.regex.*;
import java.util.*;
import java.net.URISyntaxException;
@@ -33,8 +34,6 @@
private static final int SLEEPERS = 10;
private static final int SLEEPTIME = 5000; // sleep time for a sleeper
private static final int EXECINTERVAL = 3000; // wait time between exec's
- private static final int JOINTIME = (SLEEPERS * EXECINTERVAL)
- + SLEEPTIME * 2;
public static void main(String args[]) throws Exception {
@@ -46,7 +45,8 @@
MonitoredHost host = MonitoredHost.getMonitoredHost("localhost");
host.setInterval(200);
- SleeperListener listener = new SleeperListener(host, sleeperPattern);
+ Matcher matcher = Pattern.compile(sleeperPattern).matcher("");
+ SleeperListener listener = new SleeperListener(host, matcher, SLEEPERS);
host.addHostListener(listener);
SleeperStarter ss = new SleeperStarter(SLEEPERS, EXECINTERVAL,
@@ -56,212 +56,193 @@
System.out.println("Waiting for "
+ SLEEPERS + " sleepers to terminate");
try {
- ss.join(JOINTIME);
+ ss.join();
} catch (InterruptedException e) {
- System.err.println("Timed out waiting for sleepers");
- }
-
- if (listener.getStarted() != SLEEPERS) {
- throw new RuntimeException(
- "Too few sleepers started: "
- + " started = " + listener.getStarted()
- + " SLEEPERS = " + SLEEPERS);
- }
-
- if (listener.getStarted() != listener.getTerminated()) {
- throw new RuntimeException(
- "Started count != terminated count: "
- + " started = " + listener.getStarted()
- + " terminated = " + listener.getTerminated());
+ throw new Exception("Timed out waiting for sleepers");
}
- }
-}
-
-class SleeperListener implements HostListener {
- private static final boolean DEBUG = false;
-
- int started;
- int terminated;
- MonitoredHost host;
- Matcher patternMatcher;
- ArrayList targets;
-
- public SleeperListener(MonitoredHost host, String sleeperPattern) {
- this.host = host;
- Pattern pattern = Pattern.compile(sleeperPattern);
- patternMatcher = pattern.matcher("");
- targets = new ArrayList();
+ listener.waitForSleepersToStart();
+ listener.waitForSleepersToTerminate();
}
- private void printList(Iterator i, String msg) {
- System.out.println(msg + ":");
- while (i.hasNext()) {
- Integer lvmid = (Integer)i.next();
- try {
- VmIdentifier vmid = new VmIdentifier("//" + lvmid.intValue());
- MonitoredVm target = host.getMonitoredVm(vmid);
+ public static class SleeperListener implements HostListener {
+
+ private final List<Integer> targets = new ArrayList<>();
+ private final CountDownLatch terminateLatch;
+ private final CountDownLatch startLatch;
+ private final MonitoredHost host;
+ private final Matcher patternMatcher;
+
+ public SleeperListener(MonitoredHost host, Matcher matcher, int count) {
+ this.host = host;
+ this.patternMatcher = matcher;
+ this.terminateLatch = new CountDownLatch(count);
+ this.startLatch = new CountDownLatch(count);
+ }
+
+ public void waitForSleepersToTerminate() throws InterruptedException {
+ terminateLatch.await();
+ }
- StringMonitor cmdMonitor =
- (StringMonitor)target.findByName("sun.rt.javaCommand");
- String cmd = cmdMonitor.stringValue();
+ public void waitForSleepersToStart() throws InterruptedException {
+ startLatch.await();
+ }
+
+ private void printList(Set<Integer> list, String msg) {
+ System.out.println(msg + ":");
+ for (Integer lvmid : list) {
+ try {
+ VmIdentifier vmid = new VmIdentifier("//" + lvmid.intValue());
+ MonitoredVm target = host.getMonitoredVm(vmid);
- System.out.println("\t" + lvmid.intValue() + ": "
- + "\"" + cmd + "\"" + ": ");
- } catch (URISyntaxException e) {
- System.err.println("Unexpected URISyntaxException: "
- + e.getMessage());
- } catch (MonitorException e) {
- System.out.println("\t" + lvmid.intValue()
- + ": error reading monitoring data: "
- + " target possibly terminated?");
+ StringMonitor cmdMonitor =
+ (StringMonitor)target.findByName("sun.rt.javaCommand");
+ String cmd = cmdMonitor.stringValue();
+
+ System.out.println("\t" + lvmid.intValue() + ": "
+ + "\"" + cmd + "\"" + ": ");
+ } catch (URISyntaxException e) {
+ System.err.println("Unexpected URISyntaxException: "
+ + e.getMessage());
+ } catch (MonitorException e) {
+ System.out.println("\t" + lvmid.intValue()
+ + ": error reading monitoring data: "
+ + " target possibly terminated?");
+ }
}
}
- }
- private int addStarted(Iterator i) {
- int found = 0;
- while (i.hasNext()) {
- try {
- Integer lvmid = (Integer)i.next();
- VmIdentifier vmid = new VmIdentifier("//" + lvmid.intValue());
- MonitoredVm target = host.getMonitoredVm(vmid);
+ private int addStarted(Set<Integer> started) {
+ int found = 0;
+ for (Integer lvmid : started) {
+ try {
+ VmIdentifier vmid = new VmIdentifier("//" + lvmid.intValue());
+ MonitoredVm target = host.getMonitoredVm(vmid);
+
+ StringMonitor cmdMonitor =
+ (StringMonitor)target.findByName("sun.rt.javaCommand");
+ String cmd = cmdMonitor.stringValue();
+
+ patternMatcher.reset(cmd);
+ System.out.print("Started: " + lvmid.intValue()
+ + ": " + "\"" + cmd + "\"" + ": ");
- StringMonitor cmdMonitor =
- (StringMonitor)target.findByName("sun.rt.javaCommand");
- String cmd = cmdMonitor.stringValue();
+ if (patternMatcher.matches()) {
+ System.out.println("matches pattern - recorded");
+ targets.add(lvmid);
+ found++;
+ }
+ else {
+ System.out.println("does not match pattern - ignored");
+ }
+ } catch (URISyntaxException e) {
+ System.err.println("Unexpected URISyntaxException: "
+ + e.getMessage());
+ } catch (MonitorException e) {
+ System.err.println("Unexpected MonitorException: "
+ + e.getMessage());
+ }
+ }
+ return found;
+ }
- patternMatcher.reset(cmd);
- System.out.print("Started: " + lvmid.intValue()
- + ": " + "\"" + cmd + "\"" + ": ");
-
- if (patternMatcher.matches()) {
- System.out.println("matches pattern - recorded");
- targets.add(lvmid);
+ private int removeTerminated(Set<Integer> terminated) {
+ int found = 0;
+ for (Integer lvmid : terminated) {
+ /*
+ * we don't attempt to attach to the target here as it's
+ * now dead and has no jvmstat share memory file. Just see
+ * if the process id is among those that we saved when we
+ * started the targets (note - duplicated allowed and somewhat
+ * expected on windows);
+ */
+ System.out.print("Terminated: " + lvmid.intValue() + ": ");
+ if (targets.contains(lvmid)) {
+ System.out.println("matches pattern - termination recorded");
+ targets.remove(lvmid);
found++;
}
else {
System.out.println("does not match pattern - ignored");
}
- } catch (URISyntaxException e) {
- System.err.println("Unexpected URISyntaxException: "
- + e.getMessage());
- } catch (MonitorException e) {
- System.err.println("Unexpected MonitorException: "
- + e.getMessage());
+ }
+ return found;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void vmStatusChanged(VmStatusChangeEvent ev) {
+ printList(ev.getActive(), "Active");
+ printList(ev.getStarted(), "Started");
+ printList(ev.getTerminated(), "Terminated");
+
+ int recentlyStarted = addStarted(ev.getStarted());
+ int recentlyTerminated = removeTerminated(ev.getTerminated());
+
+ for (int i = 0; i < recentlyTerminated; i++) {
+ terminateLatch.countDown();
+ }
+ for (int i = 0; i < recentlyStarted; i++) {
+ startLatch.countDown();
}
}
- return found;
- }
- private int removeTerminated(Iterator i) {
- int found = 0;
- while (i.hasNext()) {
- Integer lvmid = (Integer)i.next();
- /*
- * we don't attempt to attach to the target here as it's
- * now dead and has no jvmstat share memory file. Just see
- * if the process id is among those that we saved when we
- * started the targets (note - duplicated allowed and somewhat
- * expected on windows);
- */
- System.out.print("Terminated: " + lvmid.intValue() + ": ");
- if (targets.contains(lvmid)) {
- System.out.println("matches pattern - termination recorded");
- targets.remove(lvmid);
- found++;
- }
- else {
- System.out.println("does not match pattern - ignored");
- }
- }
- return found;
- }
-
- public synchronized int getStarted() {
- return started;
- }
-
- public synchronized int getTerminated() {
- return terminated;
- }
-
- public void vmStatusChanged(VmStatusChangeEvent ev) {
- if (DEBUG) {
- printList(ev.getActive().iterator(), "Active");
- printList(ev.getStarted().iterator(), "Started");
- printList(ev.getTerminated().iterator(), "Terminated");
- }
-
- int recentlyStarted = addStarted(ev.getStarted().iterator());
- int recentlyTerminated = removeTerminated(
- ev.getTerminated().iterator());
-
- synchronized (this) {
- started += recentlyStarted;
- terminated += recentlyTerminated;
+ public void disconnected(HostEvent ev) {
}
}
- public void disconnected(HostEvent ev) {
+ public static class SleeperStarter extends Thread {
+
+ private final JavaProcess[] processes;
+ private final int execInterval;
+ private final String args;
+
+ public SleeperStarter(int sleepers, int execInterval, String args) {
+ this.execInterval = execInterval;
+ this.args = args;
+ this.processes = new JavaProcess[sleepers];
+ }
+
+ private synchronized int active() {
+ int active = processes.length;
+ for(JavaProcess jp : processes) {
+ try {
+ jp.exitValue();
+ active--;
+ } catch (IllegalThreadStateException e) {
+ // process hasn't exited yet
+ }
+ }
+ return active;
+ }
+
+ public void run() {
+ System.out.println("Starting " + processes.length + " sleepers");
+
+ String[] classpath = {
+ "-classpath",
+ System.getProperty("java.class.path")
+ };
+
+ for (int i = 0; i < processes.length; i++) {
+ try {
+ System.out.println("Starting Sleeper " + i);
+ synchronized(this) {
+ processes[i] = new JavaProcess("Sleeper", args + " " + i);
+ processes[i].addOptions(classpath);
+ }
+ processes[i].start();
+ Thread.sleep(execInterval);
+ } catch (InterruptedException ignore) {
+ } catch (IOException e) {
+ System.err.println(
+ "IOException trying to start Sleeper " + i + ": "
+ + e.getMessage());
+ }
+ }
+
+ // spin waiting for the processes to terminate
+ while (active() > 0) ;
+ }
}
}
-class SleeperStarter extends Thread {
-
- JavaProcess[] processes;
- int execInterval;
- String args;
-
- public SleeperStarter(int sleepers, int execInterval, String args) {
- this.execInterval = execInterval;
- this.args = args;
- this.processes = new JavaProcess[sleepers];
- }
-
- private synchronized int active() {
- int active = processes.length;
- for(int i = 0; i < processes.length; i++) {
- try {
- int exitValue = processes[i].exitValue();
- active--;
- } catch (IllegalThreadStateException e) {
- // process hasn't exited yet
- }
- }
- return active;
- }
-
- public void run() {
- System.out.println("Starting " + processes.length + " sleepers");
-
- String[] classpath = {
- "-classpath",
- System.getProperty("java.class.path")
- };
-
- for (int i = 0; i < processes.length; i++) {
- try {
- System.out.println("Starting Sleeper " + i);
- synchronized(this) {
- processes[i] = new JavaProcess("Sleeper", args + " " + i);
- processes[i].addOptions(classpath);
- }
- processes[i].start();
- Thread.sleep(execInterval);
- } catch (InterruptedException ignore) {
- } catch (IOException e) {
- System.err.println(
- "IOException trying to start Sleeper " + i + ": "
- + e.getMessage());
- }
- }
-
- // spin waiting for the processes to terminate
- while (active() > 0) ;
-
- // give final termination event a change to propogate to
- // the HostListener
- try { Thread.sleep(2000); } catch (InterruptedException ignore) { }
- }
-}
--- a/jdk/test/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.sh Wed Jul 05 19:22:42 2017 +0200
@@ -23,7 +23,6 @@
#
# @test
-# @ignore until 6543856 is fixed
# @bug 4990825
# @summary attach to external but local JVM processes
# @library ../../testlibrary
@@ -39,6 +38,6 @@
verify_os
JAVA="${TESTJAVA}/bin/java"
-CP=${TESTJAVA}${FS}lib${FS}tools.jar${PS}${TESTCLASSES}
+CP=${TESTJAVA}${FS}lib${FS}tools.jar${PS}${TESTCLASSES}${PS}${TESTCLASSES}${FS}..${FS}..${FS}testlibrary
${JAVA} ${TESTVMOPTS} -classpath ${CP} MonitorVmStartTerminate
--- a/jdk/test/sun/jvmstat/testlibrary/JavaProcess.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/jvmstat/testlibrary/JavaProcess.java Wed Jul 05 19:22:42 2017 +0200
@@ -26,7 +26,6 @@
*/
import java.io.*;
-import java.util.Properties;
public class JavaProcess {
--- a/jdk/test/sun/management/HotspotThreadMBean/GetInternalThreads.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/management/HotspotThreadMBean/GetInternalThreads.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -35,7 +35,7 @@
import java.lang.management.ManagementFactory;
public class GetInternalThreads {
- private static HotspotThreadMBean mbean =
+ private final static HotspotThreadMBean mbean =
ManagementFactoryHelper.getHotspotThreadMBean();
// Minimum number of VM internal threads
@@ -43,7 +43,7 @@
private static final long MIN_VALUE_FOR_PASS = 4;
private static final long MAX_VALUE_FOR_PASS = Long.MAX_VALUE;
- public static void main(String[] args) {
+ public static void main(String[] args) throws Exception {
long value = mbean.getInternalThreadCount();
if (value < MIN_VALUE_FOR_PASS || value > MAX_VALUE_FOR_PASS) {
@@ -62,17 +62,28 @@
return;
}
- Map times = mbean.getInternalThreadCpuTimes();
- Iterator iter = times.entrySet().iterator();
- for (; iter.hasNext(); ) {
- Map.Entry entry = (Map.Entry) iter.next();
- System.out.println(entry.getKey() +
- " CPU time = " + entry.getValue() + "ns");
- if (((Long) entry.getValue()).longValue() < 0) {
- throw new RuntimeException("Thread CPU time" +
- "illegal value: " + entry.getValue());
+ while(!testCPUTime()) {
+ Thread.sleep(100);
+ }
+ }
+
+ private static boolean testCPUTime() {
+ Map<String, Long> times = mbean.getInternalThreadCpuTimes();
+ for(Map.Entry<String, Long> entry : times.entrySet()) {
+ String threadName = entry.getKey();
+ long cpuTime = entry.getValue();
+ System.out.println("CPU time = " + cpuTime + " for " + threadName);
+ if (cpuTime == -1) {
+ // Can happen when there is a race between a thread being created
+ // and the request to get its CPU time. The "/proc/..." structure might
+ // not be ready at that time and the routine will return -1.
+ System.out.println("Retry, proc structure might not be ready (-1)");
+ return false;
+ }
+ if (cpuTime < 0) {
+ throw new RuntimeException("Illegal CPU time: " + cpuTime);
}
}
- System.out.println("Test passed.");
+ return true;
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jdp/ClientConnection.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.MulticastSocket;
+import java.net.UnknownHostException;
+
+public class ClientConnection {
+
+ public final String IANA_JDP_ADDRESS = "224.0.23.178";
+ public final String IANA_JDP_PORT = "7095";
+ public final String UNDEFINED_NAME = "TheVMwithNoName";
+
+ public final int port;
+ public final InetAddress address;
+ public final int pauseInSeconds;
+ public final String instanceName;
+
+ public ClientConnection()
+ throws UnknownHostException {
+
+ String discoveryAddress = System.getProperty("com.sun.management.jdp.address", IANA_JDP_ADDRESS);
+ address = InetAddress.getByName(discoveryAddress);
+
+ String discoveryPort = System.getProperty("com.sun.management.jdp.port", IANA_JDP_PORT);
+ port = Integer.parseInt(discoveryPort);
+
+ String pause = System.getProperty("com.sun.management.jdp.pause", "1");
+ pauseInSeconds = Integer.parseUnsignedInt(pause);
+
+ instanceName = System.getProperty("com.sun.management.jdp.name", UNDEFINED_NAME);
+
+ }
+
+ public MulticastSocket connectWithTimeout(int msTimeOut) throws IOException {
+ MulticastSocket socket = new MulticastSocket(port);
+ socket.joinGroup(address);
+ socket.setSoTimeout(msTimeOut);
+ return socket;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jdp/DynamicLauncher.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+import jdk.testlibrary.OutputAnalyzer;
+import jdk.testlibrary.ProcessTools;
+import jdk.testlibrary.Utils;
+
+import java.util.UUID;
+
+
+/**
+ * This class will try to find an unused port and run a JdpTestCase using it.
+ * The unused port is needed for jmxremote.port.
+ * The problem with busy ports arises when running many automated tests on the same host.
+ * Note that jdp.port is a multicast port and thus it can be binded by different processes at the same time.
+ */
+public abstract class DynamicLauncher {
+
+ final String jdpName = UUID.randomUUID().toString();
+ int jmxPort;
+
+ protected void run() throws Exception {
+ OutputAnalyzer out;
+ int retries = 1;
+ boolean tryAgain;
+
+ do {
+ tryAgain = false;
+ jmxPort = Utils.getFreePort();
+ out = runVM();
+ try {
+ out.shouldNotContain("Port already in use");
+ } catch (RuntimeException e) {
+ if (retries < 3) {
+ retries++;
+ tryAgain = true;
+ }
+ }
+ } while (tryAgain);
+ }
+
+ protected OutputAnalyzer runVM() throws Exception {
+ String[] options = this.options();
+ ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(options);
+ OutputAnalyzer out = new OutputAnalyzer(pb.start());
+ System.out.println(out.getStdout());
+ System.err.println(out.getStderr());
+ return out;
+ }
+
+ protected abstract String[] options();
+
+}
--- a/jdk/test/sun/management/jdp/JdpClient.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/management/jdp/JdpClient.java Wed Jul 05 19:22:42 2017 +0200
@@ -36,6 +36,7 @@
import java.util.Collections;
import java.util.Enumeration;
import java.util.Map;
+
import sun.management.jdp.JdpException;
import sun.management.jdp.JdpJmxPacket;
import sun.management.jdp.JdpPacketReader;
@@ -49,21 +50,21 @@
private static int maxPacketCount = 1;
private static int maxEmptyPacketCount = 10;
- private void get(Map<?,?> map, String key)
- throws JdpException {
+ private void get(Map<?, ?> map, String key)
+ throws JdpException {
if (map.get(key) == null) {
- throw new JdpException("Test failed, packet field " + key + " missed");
+ throw new JdpException("Test failed, packet field " + key + " missed");
}
}
private void checkFieldPresence(JdpJmxPacket p)
- throws IOException, JdpException {
+ throws IOException, JdpException {
byte[] b = p.getPacketData();
JdpPacketReader reader = new JdpPacketReader(b);
- Map<String,String> pMap = reader.getDiscoveryDataAsMap();
+ Map<String, String> pMap = reader.getDiscoveryDataAsMap();
get(pMap, JdpJmxPacket.UUID_KEY);
get(pMap, JdpJmxPacket.MAIN_CLASS_KEY);
@@ -102,11 +103,11 @@
sel.select(10 * 1000);
channel.receive(buf);
- if (buf.position() == 0 ){
- if (JdpDoSomething.getVerbose()){
+ if (buf.position() == 0) {
+ if (JdpDoSomething.getVerbose()) {
System.err.println("Empty packet received");
}
- if (++emptyPacketsCount > maxEmptyPacketCount){
+ if (++emptyPacketsCount > maxEmptyPacketCount) {
throw new RuntimeException("Test failed, maxEmptyPacketCount reached");
}
@@ -120,8 +121,8 @@
JdpJmxPacket packet = new JdpJmxPacket(dgramData);
JdpDoSomething.printJdpPacket(packet);
checkFieldPresence(packet);
- if(++count > maxPacketCount){
- break;
+ if (++count > maxPacketCount) {
+ break;
}
} catch (JdpException e) {
e.printStackTrace();
@@ -179,7 +180,7 @@
PacketListener listener = new PacketListener(channel);
new Thread(listener, "Jdp Client").start();
- } catch (RuntimeException e){
+ } catch (RuntimeException e) {
System.out.println("Test failed.");
} catch (Exception e) {
e.printStackTrace();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jdp/JdpDefaultsTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * A JVM with JDP on should send multicast JDP packets regularly.
+ *
+ * @author Alex Schenkman
+ * @test JdpDefaultsTest
+ * @summary Assert that we can read JDP packets from a multicast socket connection, on default IP and port.
+ * @library /lib/testlibrary
+ * @build ClientConnection JdpTestUtil JdpTestCase JdpOnTestCase DynamicLauncher
+ * @run main JdpDefaultsTest
+ */
+
+public class JdpDefaultsTest extends DynamicLauncher {
+
+ final String testName = "JdpOnTestCase";
+
+ public static void main(String[] args) throws Exception {
+ DynamicLauncher launcher = new JdpDefaultsTest();
+ launcher.run();
+ }
+
+ /**
+ * Send Jdp multicast packets to the default IP and port, 224.0.23.178:7095
+ */
+ protected String[] options() {
+ String[] options = {
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=false",
+ "-Dcom.sun.management.jmxremote=true",
+ "-Dcom.sun.management.jmxremote.port=" + String.valueOf(jmxPort),
+ "-Dcom.sun.management.jmxremote.autodiscovery=true",
+ "-Dcom.sun.management.jdp.pause=1",
+ "-Dcom.sun.management.jdp.name=" + jdpName,
+ "-Dcom.sun.management.jdp.address=224.0.23.178",
+ "-Djava.util.logging.SimpleFormatter.format='%1$tF %1$tT %4$-7s %5$s %n'",
+ testName
+ };
+ return options;
+ }
+}
--- a/jdk/test/sun/management/jdp/JdpDoSomething.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/management/jdp/JdpDoSomething.java Wed Jul 05 19:22:42 2017 +0200
@@ -34,7 +34,7 @@
private static final String lockFileName = "JdpDoSomething.lck";
private static final boolean verbose = false;
- public static boolean getVerbose(){
+ public static boolean getVerbose() {
return verbose;
}
@@ -61,7 +61,7 @@
}
public static void compaireJdpPacketEx(JdpJmxPacket p1, JdpJmxPacket p2)
- throws JdpException {
+ throws JdpException {
if (!Objects.equals(p1, p1)) {
throw new JdpException("Packet mismatch error");
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jdp/JdpOffTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * A JVM with JDP off should not send multicast JDP packets at all.
+ * com.sun.management.jmxremote.autodiscovery=false should be respected.
+ *
+ * @author Alex Schenkman
+ * @test JdpOffTest.java
+ * @summary Assert that no JDP packets are sent to the default address and port.
+ * @library /lib/testlibrary
+ * @build ClientConnection JdpTestUtil JdpTestCase JdpOffTestCase DynamicLauncher
+ * @run main JdpOffTest
+ */
+
+
+public class JdpOffTest extends DynamicLauncher {
+
+ final String testName = "JdpOffTestCase";
+
+ public static void main(String[] args) throws Exception {
+ DynamicLauncher launcher = new JdpOffTest();
+ launcher.run();
+ }
+
+ /**
+ * Send Jdp multicast packets to the specified IP and port, 224.0.1.2:1234
+ */
+ protected String[] options() {
+ String[] options = {
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=false",
+ "-Dcom.sun.management.jmxremote=true",
+ "-Dcom.sun.management.jmxremote.port=" + String.valueOf(jmxPort),
+ "-Dcom.sun.management.jmxremote.autodiscovery=false",
+ "-Dcom.sun.management.jdp.pause=1",
+ "-Dcom.sun.management.jdp.name=" + jdpName,
+ "-Djava.util.logging.SimpleFormatter.format='%1$tF %1$tT %4$-7s %5$s %n'",
+ testName
+ };
+ return options;
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jdp/JdpOffTestCase.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * A JVM with JDP off should not send multicast JDP packets at all.
+ * com.sun.management.jmxremote.autodiscovery=false should be respected.
+ */
+
+import java.net.SocketTimeoutException;
+import java.util.Map;
+
+public class JdpOffTestCase extends JdpTestCase {
+
+ private boolean testPassed = false;
+
+ public JdpOffTestCase(ClientConnection connection) {
+ super(connection);
+ }
+
+ /**
+ * Subclasses: JdpOnTestCase and JdpOffTestCase have different messages.
+ */
+ @Override
+ protected String initialLogMessage() {
+ return "Expecting NOT to receive any packets with jdp.name=" + connection.instanceName;
+ }
+
+ /**
+ * The socket has not received anything, and this is the expected behavior.
+ */
+ @Override
+ protected void onSocketTimeOut(SocketTimeoutException e) throws Exception {
+ log.fine("No packages received. Test passed!");
+ testPassed = true;
+ }
+
+
+ /**
+ * This method is executed after a correct Jdp packet, coming from this VM has been received.
+ *
+ * @param payload A dictionary containing the data if the received Jdp packet.
+ */
+ @Override
+ protected void packetFromThisVMReceived(Map<String, String> payload) throws Exception {
+ String message = "Jdp packet from this VM received. This should not happen!";
+ log.severe(message);
+ throw new Exception(message);
+ }
+
+
+ /**
+ * The test should stop after the socket has timed out. See onSocketTimeOut {@link}.
+ */
+ @Override
+ protected boolean shouldContinue() {
+ return !testPassed;
+ }
+
+ public static void main(String[] args) throws Exception {
+ JdpTestCase client = new JdpOffTestCase(new ClientConnection());
+ client.run();
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jdp/JdpOnTestCase.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * A JVM with JDP on should send multicast JDP packets regularly.
+ *
+ * See main for more information on running this test manually.
+ * See Launcher classes for automated runs.
+ *
+ */
+
+import java.net.SocketTimeoutException;
+import java.util.Map;
+
+public class JdpOnTestCase extends JdpTestCase {
+
+ private int receivedJDPpackets = 0;
+
+ public JdpOnTestCase(ClientConnection connection) {
+ super(connection);
+ }
+
+ /**
+ * Subclasses: JdpOnTestCase and JdpOffTestCase have different messages.
+ */
+ @Override
+ protected String initialLogMessage() {
+ return "Waiting for 3 packets with jdp.name=" + connection.instanceName;
+ }
+
+ /**
+ * This method is executed after a correct Jdp packet (coming from this VM) has been received.
+ *
+ * @param payload A dictionary containing the data if the received Jdp packet.
+ */
+ protected void packetFromThisVMReceived(Map<String, String> payload) {
+ receivedJDPpackets++;
+ final String jdpName = payload.get("INSTANCE_NAME");
+ log.fine("Received correct JDP packet #" + String.valueOf(receivedJDPpackets) +
+ ", jdp.name=" + jdpName);
+ }
+
+ /**
+ * The socket should not timeout.
+ * It is set to wait for 10 times the defined pause between Jdp packet. See JdpOnTestCase.TIME_OUT_FACTOR.
+ */
+ @Override
+ protected void onSocketTimeOut(SocketTimeoutException e) throws Exception {
+ String message = "Timed out waiting for JDP packet. Should arrive within " +
+ connection.pauseInSeconds + " seconds, but waited for " +
+ timeOut + " seconds.";
+ log.severe(message);
+ throw new Exception(message, e);
+ }
+
+ /**
+ * After receiving three Jdp packets the test should end.
+ */
+ @Override
+ protected boolean shouldContinue() {
+ return receivedJDPpackets < 3;
+ }
+
+ /**
+ * To run this test manually you might need the following VM options:
+ * <p/>
+ * -Dcom.sun.management.jmxremote.authenticate=false
+ * -Dcom.sun.management.jmxremote.ssl=false
+ * -Dcom.sun.management.jmxremote.port=4711 (or some other port number)
+ * -Dcom.sun.management.jmxremote=true
+ * -Dcom.sun.management.jmxremote.autodiscovery=true
+ * -Dcom.sun.management.jdp.pause=1
+ * -Dcom.sun.management.jdp.name=alex (or some other string to identify this VM)
+ * <p/>
+ * Recommended for nice output:
+ * -Djava.util.logging.SimpleFormatter.format="%1$tF %1$tT %4$-7s %5$s %n"
+ *
+ * @param args
+ * @throws Exception
+ */
+ public static void main(String[] args) throws Exception {
+ JdpTestCase client = new JdpOnTestCase(new ClientConnection());
+ client.run();
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jdp/JdpSpecificAddressTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * A JVM with JDP on should send multicast JDP packets regularly.
+ *
+ * @author Alex Schenkman
+ * @test JdpSpecificAddressTest
+ * @summary Assert that we can read JDP packets from a multicast socket connection, on specific IP and port.
+ * @library /lib/testlibrary
+ * @build ClientConnection JdpTestUtil JdpTestCase JdpOnTestCase DynamicLauncher
+ * @run main JdpSpecificAddressTest
+ */
+
+
+public class JdpSpecificAddressTest extends DynamicLauncher {
+
+ final String testName = "JdpOnTestCase";
+
+ public static void main(String[] args) throws Exception {
+ DynamicLauncher launcher = new JdpSpecificAddressTest();
+ launcher.run();
+ }
+
+ /**
+ * Send Jdp multicast packets to the specified IP and port, 224.0.1.2:1234
+ */
+ protected String[] options() {
+ String[] options = {
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=false",
+ "-Dcom.sun.management.jmxremote=true",
+ "-Dcom.sun.management.jmxremote.port=" + String.valueOf(jmxPort),
+ "-Dcom.sun.management.jmxremote.autodiscovery=true",
+ "-Dcom.sun.management.jdp.pause=1",
+ "-Dcom.sun.management.jdp.name=" + jdpName,
+ "-Dcom.sun.management.jdp.address=224.0.1.2",
+ "-Dcom.sun.management.jdp.port=1234",
+ "-Djava.util.logging.SimpleFormatter.format='%1$tF %1$tT %4$-7s %5$s %n'",
+ testName
+ };
+ return options;
+ }
+
+}
--- a/jdk/test/sun/management/jdp/JdpTest.sh Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/management/jdp/JdpTest.sh Wed Jul 05 19:22:42 2017 +0200
@@ -33,7 +33,7 @@
# temporary disable jcmd related tests
# _testsuite="01,02,03,04,05"
-_testsuite="01,02,04"
+_testsuite="01"
_pwd=`pwd`
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jdp/JdpTestCase.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,220 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * A JVM with JDP on should send multicast JDP packets regularly.
+ * Look at JdpOnTestCase.java and JdpOffTestCase.java
+ */
+
+
+import sun.management.jdp.JdpJmxPacket;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.DatagramPacket;
+import java.net.MulticastSocket;
+import java.net.SocketTimeoutException;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+public abstract class JdpTestCase {
+ final Logger log = Logger.getLogger("sun.management.jdp");
+ final int MAGIC = 0xC0FFEE42; // Jdp magic number.
+ private static final int BUFFER_LENGTH = 64 * 1024; // max UDP size, except for IPv6 jumbograms.
+ private final int TIME_OUT_FACTOR = 10; // Socket times out after 10 times the jdp pause.
+ protected int timeOut;
+ private long startTime;
+ protected ClientConnection connection;
+
+ public JdpTestCase(ClientConnection connection) {
+ this.connection = connection;
+ JdpTestUtil.enableConsoleLogging(log, Level.ALL);
+ }
+
+ public void run() throws Exception {
+ log.fine("Test started.");
+ log.fine("Listening for multicast packets at " + connection.address.getHostAddress()
+ + ":" + String.valueOf(connection.port));
+ log.fine(initialLogMessage());
+ log.fine("Pause in between packets is: " + connection.pauseInSeconds + " seconds.");
+
+ startTime = System.currentTimeMillis();
+ timeOut = connection.pauseInSeconds * TIME_OUT_FACTOR;
+ log.fine("Timeout set to " + String.valueOf(timeOut) + " seconds.");
+
+ MulticastSocket socket = connection.connectWithTimeout(timeOut * 1000);
+
+ byte[] buffer = new byte[BUFFER_LENGTH];
+ DatagramPacket datagram = new DatagramPacket(buffer, buffer.length);
+
+ do {
+ try {
+ socket.receive(datagram);
+ onReceived(extractUDPpayload(datagram));
+ } catch (SocketTimeoutException e) {
+ onSocketTimeOut(e);
+ }
+
+ if (hasTestLivedLongEnough()) {
+ shutdown();
+ }
+
+ } while (shouldContinue());
+ log.fine("Test ended successfully.");
+ }
+
+ /**
+ * Subclasses: JdpOnTestCase and JdpOffTestCase have different messages.
+ */
+ protected abstract String initialLogMessage();
+
+
+ /**
+ * Executed when the socket receives a UDP packet.
+ */
+ private void onReceived(byte[] packet) throws Exception {
+ if (isJDP(packet)) {
+ Map<String, String> payload = checkStructure(packet);
+ jdpPacketReceived(payload);
+ } else {
+ log.fine("Non JDP packet received, ignoring it.");
+ }
+ }
+
+ /**
+ * Determine whether the test should end.
+ *
+ * @return
+ */
+ abstract protected boolean shouldContinue();
+
+ /**
+ * This method is executed when the socket has not received any packet for timeOut seconds.
+ */
+ abstract protected void onSocketTimeOut(SocketTimeoutException e) throws Exception;
+
+ /**
+ * This method is executed after a correct Jdp packet has been received.
+ *
+ * @param payload A dictionary containing the data if the received Jdp packet.
+ */
+ private void jdpPacketReceived(Map<String, String> payload) throws Exception {
+ final String instanceName = payload.get("INSTANCE_NAME");
+ if (instanceName.equals(connection.instanceName)) {
+ packetFromThisVMReceived(payload);
+ } else {
+ packetFromOtherVMReceived(payload);
+ }
+ }
+
+ /**
+ * This method is executed after a correct Jdp packet, coming from this VM has been received.
+ *
+ * @param payload A dictionary containing the data if the received Jdp packet.
+ */
+ protected abstract void packetFromThisVMReceived(Map<String, String> payload) throws Exception;
+
+
+ /**
+ * This method is executed after a correct Jdp packet, coming from another VM has been received.
+ *
+ * @param payload A dictionary containing the data if the received Jdp packet.
+ */
+ protected void packetFromOtherVMReceived(Map<String, String> payload) {
+ final String jdpName = payload.get("INSTANCE_NAME");
+ log.fine("Ignoring JDP packet sent by other VM, jdp.name=" + jdpName);
+ }
+
+
+ /**
+ * The test should stop if it has been 12 times the jdp.pause.
+ * jdp.pause is how many seconds in between packets.
+ * <p/>
+ * This timeout (12 times)is slightly longer than the socket timeout (10 times) on purpose.
+ * In the off test case, the socket should time out first.
+ *
+ * @return
+ */
+ protected boolean hasTestLivedLongEnough() {
+ long now = System.currentTimeMillis();
+ boolean haslivedLongEnough = (now - startTime) > (timeOut * 1.2 * 1000);
+ return haslivedLongEnough;
+ }
+
+ /**
+ * This exit condition arises when we receive UDP packets but they are not valid Jdp.
+ */
+ protected void shutdown() throws Exception {
+ log.severe("Shutting down the test.");
+ throw new Exception("Not enough JDP packets received before timeout!");
+ }
+
+ /**
+ * Assert that this Jdp packet contains the required two keys.
+ * <p/>
+ * We expect zero packet corruption and thus fail on the first corrupted packet.
+ * This might need revision.
+ */
+ protected Map<String, String> checkStructure(byte[] packet) throws UnsupportedEncodingException {
+ Map<String, String> payload = JdpTestUtil.readPayload(packet);
+ assertTrue(payload.size() >= 2, "JDP should have minimun 2 entries.");
+ assertTrue(payload.get(JdpJmxPacket.UUID_KEY).length() > 0);
+ assertTrue(payload.get(JdpJmxPacket.JMX_SERVICE_URL_KEY).length() > 0);
+ return payload;
+ }
+
+
+ /**
+ * Check if packet has correct JDP magic number.
+ *
+ * @param packet
+ * @return
+ * @throws IOException
+ */
+ private boolean isJDP(byte[] packet) throws IOException {
+ int magic = JdpTestUtil.decode4ByteInt(packet, 0);
+ return (magic == MAGIC);
+ }
+
+ private byte[] extractUDPpayload(DatagramPacket datagram) {
+ byte[] data = Arrays.copyOf(datagram.getData(), datagram.getLength());
+ return data;
+ }
+
+ /**
+ * Hack until I find a way to use TestNG's assertions.
+ */
+ private void assertTrue(boolean assertion, String message) {
+ if (assertion == false) {
+ log.severe(message);
+ assert (false);
+ }
+ }
+
+ private void assertTrue(boolean assertion) {
+ assertTrue(assertion, "");
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jdp/JdpTestUtil.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.ConsoleHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Utility methods for parsing raw JDP packets.
+ *
+ * @author Alex Schenkman
+ */
+public class JdpTestUtil {
+
+ static final int HEADER_SIZE = 4 + 2; // magic + protocol version
+
+ /**
+ * Reads two bytes, starting at the given position,
+ * and converts them into an int.
+ *
+ * @param data
+ * @param pos
+ * @return
+ */
+ static int decode2ByteInt(byte[] data, int pos) {
+ return (((data[pos] & 0xFF) << 8) | (data[pos + 1] & 0xFF));
+ }
+
+ /**
+ * Reads four bytes, starting at the given position,
+ * and converts them into an int.
+ *
+ * @param data
+ * @param pos
+ * @return
+ */
+ static int decode4ByteInt(byte[] data, int pos) {
+ int result = data[pos + 3] & 0xFF;
+ result = result | ((data[pos + 2] & 0xFF) << 8);
+ result = result | ((data[pos + 1] & 0xFF) << 16);
+ result = result | ((data[pos] & 0xFF) << 24);
+ return result;
+ }
+
+ /**
+ * Reads an entry from the given byte array, starting at the given position.
+ * This is an internal function used by @see readRawPayload(byte[] rawPayload, int size).
+ * <p/>
+ * The format of an entry is:
+ * 2 bytes with the size of the following string.
+ * n bytes of characters.
+ *
+ * @param data
+ * @param pos
+ * @return
+ * @throws UnsupportedEncodingException
+ */
+ static String decodeEntry(byte[] data, int pos)
+ throws UnsupportedEncodingException {
+
+ int size = JdpTestUtil.decode2ByteInt(data, pos);
+ pos = pos + 2;
+ byte[] raw = Arrays.copyOfRange(data, pos, pos + size);
+ return new String(raw, "UTF-8");
+ }
+
+ /**
+ * Builds a Map with the payload, from the raw data.
+ *
+ * @param rawData
+ * @return
+ * @throws UnsupportedEncodingException
+ */
+ static Map<String, String> readPayload(byte[] rawData)
+ throws UnsupportedEncodingException {
+
+ int totalSize = rawData.length;
+ int payloadSize = totalSize - HEADER_SIZE;
+ byte[] rawPayload = Arrays.copyOfRange(rawData, HEADER_SIZE, HEADER_SIZE + payloadSize);
+ Map<String, String> payload = readRawPayload(rawPayload, payloadSize);
+ return payload;
+ }
+
+ /**
+ * Builds a map from the payload's raw data.
+ * This is an internal function used by @see readPayload(byte[] rawData)
+ *
+ * @param rawPayload
+ * @param size
+ * @return
+ * @throws UnsupportedEncodingException
+ */
+ static Map<String, String> readRawPayload(byte[] rawPayload, int size)
+ throws UnsupportedEncodingException {
+
+ String key, value;
+ Map<String, String> payload = new HashMap<String, String>();
+
+ for (int pos = 0; pos < size; ) {
+ key = decodeEntry(rawPayload, pos);
+ pos = pos + 2 + key.length();
+ value = decodeEntry(rawPayload, pos);
+ pos = pos + 2 + value.length();
+
+ payload.put(key, value);
+ }
+ return payload;
+ }
+
+ static void enableConsoleLogging(Logger log, Level level) throws SecurityException {
+ ConsoleHandler handler = new ConsoleHandler();
+ handler.setLevel(level);
+ log.addHandler(handler);
+ log.setLevel(level);
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jdp/JdpTestUtilTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+import org.testng.annotations.Test;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Map;
+
+import static jdk.testlibrary.Asserts.assertEquals;
+
+
+/*
+ Unit test for the utility functions in JdpTestUtil.
+ These are not meant to be by automatically run by JTREG.
+ They exists to support test development and should be run by the test developer.
+*/
+
+public class JdpTestUtilTest {
+
+ @Test
+ public void testDecodeEntry() throws UnsupportedEncodingException {
+ byte[] data = {'x', 0, 4, 'a', 'l', 'e', 'x'};
+ String result = JdpTestUtil.decodeEntry(data, 1);
+ assertEquals("alex", result);
+ }
+
+ @Test
+ public void testDecode2ByteInt() {
+ byte[] data = {'x', (byte) 0xff, (byte) 0xff};
+ int value = JdpTestUtil.decode2ByteInt(data, 1);
+ assertEquals(65535, value);
+ }
+
+ @Test
+ public void testDecode4ByteInt() {
+ byte[] data = {'x', (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff};
+ int value = JdpTestUtil.decode4ByteInt(data, 1);
+ assertEquals(0xffffffff, value);
+
+ }
+
+ @Test
+ public void testReadRawPayload() throws UnsupportedEncodingException {
+ byte[] data = {0, 3, 'f', 'o', 'o', 0, 4, 'b', 'a', 'r', 's'};
+ Map<String, String> payload = JdpTestUtil.readRawPayload(data, data.length);
+
+ assertEquals(1, payload.size());
+ assertEquals("bars", payload.get("foo"));
+ }
+
+ @Test
+ public void testReadPayload() throws UnsupportedEncodingException {
+ byte[] data = {1, 2, 3, 4, 1, 2, 0, 3, 'f', 'o', 'o', 0, 4, 'b', 'a', 'r', 's'};
+ Map<String, String> payload = JdpTestUtil.readPayload(data);
+
+ assertEquals(1, payload.size());
+ assertEquals("bars", payload.get("foo"));
+ }
+
+}
--- a/jdk/test/sun/management/jdp/JdpUnitTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/management/jdp/JdpUnitTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -33,22 +33,22 @@
public class JdpUnitTest {
- static byte[] russian_name = {(byte)0xd0,(byte)0xbf,(byte)0xd1,(byte)0x80,(byte)0xd0,(byte)0xbe,(byte)0xd0,(byte)0xb2,
- (byte)0xd0,(byte)0xb5,(byte)0xd1,(byte)0x80,(byte)0xd0,(byte)0xba,(byte)0xd0,(byte)0xb0,
- (byte)0x20,(byte)0xd1,(byte)0x81,(byte)0xd0,(byte)0xb2,(byte)0xd1,(byte)0x8f,(byte)0xd0,
- (byte)0xb7,(byte)0xd0,(byte)0xb8,(byte)0x0a};
+ static byte[] russian_name = {(byte) 0xd0, (byte) 0xbf, (byte) 0xd1, (byte) 0x80, (byte) 0xd0, (byte) 0xbe, (byte) 0xd0, (byte) 0xb2,
+ (byte) 0xd0, (byte) 0xb5, (byte) 0xd1, (byte) 0x80, (byte) 0xd0, (byte) 0xba, (byte) 0xd0, (byte) 0xb0,
+ (byte) 0x20, (byte) 0xd1, (byte) 0x81, (byte) 0xd0, (byte) 0xb2, (byte) 0xd1, (byte) 0x8f, (byte) 0xd0,
+ (byte) 0xb7, (byte) 0xd0, (byte) 0xb8, (byte) 0x0a};
/**
* This test tests that complete packet is build correctly
*/
public static void PacketBuilderTest()
- throws IOException, JdpException {
+ throws IOException, JdpException {
/* Complete packet test */
{
JdpJmxPacket p1 = new JdpJmxPacket(UUID.randomUUID(), "fake://unit-test");
p1.setMainClass("FakeUnitTest");
- p1.setInstanceName( new String(russian_name,"UTF-8"));
+ p1.setInstanceName(new String(russian_name, "UTF-8"));
byte[] b = p1.getPacketData();
JdpJmxPacket p2 = new JdpJmxPacket(b);
@@ -68,7 +68,7 @@
JdpDoSomething.compaireJdpPacketEx(p1, p2);
}
- System.out.println("OK: Test passed");
+ System.out.println("OK: Test passed");
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jdp/PacketTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.UUID;
+
+import org.testng.annotations.Test;
+import sun.management.jdp.JdpJmxPacket;
+
+import static org.testng.Assert.assertEquals;
+
+
+/**
+ * These tests are unit tests used for test development.
+ * These are not meant to be by automatically run by JTREG.
+ * They exists to support test development and should be run by the test developer.
+ * <p/>
+ * <p/>
+ * The JDP packet format:
+ * <p/>
+ * packet = header + payload
+ * <p/>
+ * header = magic + version
+ * magic = 4 bytes: 0xCOFFEE42
+ * version = 2 bytes: 01 (As of 2013-05-01)
+ * <p/>
+ * payload = list key/value pairs
+ * keySize = 2 bytes
+ * key = (keySize) bytes
+ * valueSize = 2 bytes
+ * value = (valueSize) bytes
+ * <p/>
+ * <p/>
+ * Two entries are mandatory in the payload:
+ * UUID (JdpJmxPacket.UUID_KEY)
+ * JMX service URL (JdpJmxPacket.JMX_SERVICE_URL_KEY)
+ * <p/>
+ * These two entries are optional:
+ * Main Class (JdpJmxPacket.MAIN_CLASS_KEY)
+ * Instance name (JdpJmxPacket.INSTANCE_NAME_KEY)
+ *
+ * @author Alex Schenkman
+ * <p/>
+ * Using TestNG framework.
+ */
+public class PacketTest {
+
+ final int MAGIC = 0xC0FFEE42;
+ final UUID id = UUID.randomUUID();
+ final String mainClass = "org.happy.Feet";
+ final String jmxServiceUrl = "fake://jmxUrl";
+ final String instanceName = "Joe";
+
+ private JdpJmxPacket createDefaultPacket() {
+ JdpJmxPacket packet = new JdpJmxPacket(id, jmxServiceUrl);
+ return packet;
+ }
+
+ private JdpJmxPacket createFullPacket() {
+ JdpJmxPacket packet = new JdpJmxPacket(id, jmxServiceUrl);
+ packet.setMainClass(mainClass);
+ packet.setInstanceName("Joe");
+ return packet;
+ }
+
+ @Test
+ public void testMagic() throws IOException {
+ byte[] rawData = createFullPacket().getPacketData();
+ int magic = JdpTestUtil.decode4ByteInt(rawData, 0);
+ assertEquals(MAGIC, magic, "MAGIC does not match!");
+ }
+
+ @Test
+ public void testVersion() throws IOException {
+ byte[] rawData = createFullPacket().getPacketData();
+ assertEquals(1, JdpTestUtil.decode2ByteInt(rawData, 4));
+ }
+
+ @Test
+ public void testAllEntries() throws IOException {
+ byte[] rawData = createFullPacket().getPacketData();
+ Map<String, String> payload = JdpTestUtil.readPayload(rawData);
+
+ assertEquals(4, payload.size());
+ assertEquals(mainClass, payload.get(JdpJmxPacket.MAIN_CLASS_KEY));
+ assertEquals(id.toString(), payload.get(JdpJmxPacket.UUID_KEY));
+ assertEquals(jmxServiceUrl, payload.get(JdpJmxPacket.JMX_SERVICE_URL_KEY));
+ assertEquals(instanceName, payload.get(JdpJmxPacket.INSTANCE_NAME_KEY));
+ }
+
+ public void testDefaultEntries() throws IOException {
+ byte[] rawData = createDefaultPacket().getPacketData();
+ Map<String, String> payload = JdpTestUtil.readPayload(rawData);
+
+ assertEquals(2, payload.size());
+ assertEquals(id.toString(), payload.get(JdpJmxPacket.UUID_KEY));
+ assertEquals(jmxServiceUrl, payload.get(JdpJmxPacket.JMX_SERVICE_URL_KEY));
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jdp/PortAlreadyInUseTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+import jdk.testlibrary.OutputAnalyzer;
+import jdk.testlibrary.Utils;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.util.logging.Logger;
+
+/**
+ * This test used for test development and it is not meant to be run by JTReg.
+ * <p/>
+ * This test exercises a retry mechanism to avoid a test failure because of
+ * starting the VM on a busy jmxremote.port.
+ * <p/>
+ * To run this test you'll need to add this VM option: -Dtest.jdk=<path-to-jdk>
+ */
+public class PortAlreadyInUseTest extends DynamicLauncher {
+
+ ServerSocket socket;
+ final Logger log = Logger.getLogger("PortAlreadyInUse");
+
+ protected void go() throws Exception {
+ jmxPort = Utils.getFreePort();
+ occupyPort();
+
+ log.info("Attempting to start a VM using the same port.");
+ OutputAnalyzer out = this.runVM();
+ out.shouldContain("Port already in use");
+ log.info("Failed as expected.");
+
+ log.info("Trying again using retries.");
+ this.run();
+ }
+
+ private void occupyPort() throws IOException {
+ socket = new ServerSocket(jmxPort);
+ log.info("Occupying port " + String.valueOf(jmxPort));
+ }
+
+ protected String[] options() {
+ String[] options = {
+ "-Dcom.sun.management.jmxremote.authenticate=false",
+ "-Dcom.sun.management.jmxremote.ssl=false",
+ "-Dcom.sun.management.jmxremote=true",
+ "-Dcom.sun.management.jmxremote.port=" + String.valueOf(jmxPort),
+ "-version"
+ };
+ return options;
+ }
+
+ public static void main(String[] args) throws Exception {
+ PortAlreadyInUseTest test = new PortAlreadyInUseTest();
+ test.go();
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/management/jdp/README Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,74 @@
+The following test were contributed by dmitry.samersoff@oracle.com and will be ported in the near future:
+JdpClient.java
+JdpDoSomething.java
+JdpTest.sh
+JdpUnitTest.java
+
+
+JdpTest.sh:
+-------------------------------------
+test_01 - basic test, check if JDP packet assembler and other
+ parts of JDP is not broken
+
+test_02 - test if JDP starts with custom parameters. (disabled)
+
+test_03 - test if jcmd is able to start jdp with
+ custom parameters (disabled)
+
+test_04 - test if JDP starts with default parameters (disabled)
+
+test_05 - test if jcmd is able to start jdp with default
+ parameters (disabled)
+
+Only test_01 is enabled at the moment.
+
+JdpUnitTest.java: contains unit tests used under development.
+
+
+==========================================================================
+The other Java-based tests in this folder are contributed by alex.schenkman@oracle.com
+
+There are three Jdp test cases in this folder:
+ 1) Jdp is turned off.
+ 2) Jdp is turned on, using default values
+ 3) Jdp is turned on, using a specific IP and port
+
+For the test cases above, the actual tests are:
+ 1) JdpOffTestCase.java
+ 2) JdpOnTestCase.java
+ 3) JdpOnTestCase.java, using different parameters.
+All these three test are implemented as subclasses of JdpTestCase.java.
+
+For all of these three tests, the VM sending the Jdp packets is also catching them.
+That is, while the VM itself is sending Jdp multicast packets, the program executed by
+that same VM is listening for those packets.
+
+These tests above work as follows:
+ 1) Start a VM with Jdp off, make sure that no Jdp packets arrive at the default IP/port.
+ 2) Start a VM with Jdp on, make sure three packets arrive at the default IP/port.
+ 3) Start a VM with Jdp on a specific IP/port, make sure three packets arrive.
+
+To make sure that we are not catching Jdp packets from some other VM, the INSTANCE_NAME
+attribute is set to a unique id. The setting of this unique id is done by a launcher.
+There are three launchers, one for each of the tests above:
+ 1) JdpOffTest.java
+ 2) JdpDefaultsTest.java
+ 3) JdpSpecificAddressTest.java
+All these three tests are implemented as subclasses of DynamicLauncher.java.
+
+So, JdpOffTest.class will execute JdpOffTestCase.class (using ProcessTools),
+and that will exercise test case nr.1; and so on for the other cases.
+
+These launchers are also the entry points for JTreg.
+This means that JTreg will only see these launchers as tests.
+You might run the tests without JTreg, as long as you specify all the VM optiones needed.
+Look at the launcher to determine what is needed. Do not forget -Dtest.jdk, that is set by JTreg.
+
+JMX must be enabled in order to enable Jdp. This requires a free port (com.sun.management.jmxremote.port).
+To avoid port-busy conflicts, DynamicLauncher.java will try to find a free port up to three times.
+
+There are some other tests used for test development, and not meant to be run automatically by JTreg.
+ 1) PortAlreadyInUse.java, used to test the retry mechanism to find a free port.
+ 2) PacketTest.java, Jdp packet sanity.
+ 3) JdpTestUtil.java, Utility functions to read a Jdp packet.
+ 4) JdpTestUtilTest.java, Unit tests for JdpTestUtil.java
--- a/jdk/test/sun/management/jmxremote/bootstrap/CustomLauncherTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/management/jmxremote/bootstrap/CustomLauncherTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -29,7 +29,6 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
-import jdk.testlibrary.JdkFinder;
import jdk.testlibrary.ProcessTools;
/**
--- a/jdk/test/sun/nio/cs/EUC_TW_OLD.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/nio/cs/EUC_TW_OLD.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/sun/nio/cs/TestStringCoding.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/nio/cs/TestStringCoding.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/sun/nio/cs/X11CNS11643.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/nio/cs/X11CNS11643.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/sun/nio/cs/X11CNS11643P1.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/nio/cs/X11CNS11643P1.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/sun/nio/cs/X11CNS11643P2.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/nio/cs/X11CNS11643P2.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/sun/nio/cs/X11CNS11643P3.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/nio/cs/X11CNS11643P3.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/reflect/AnonymousNewInstance/ManyNewInstanceAnonTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7194897
+ * @summary JSR 292: Cannot create more than 16 instances of an anonymous class
+ * @author Robert Field
+ * @library /lib/testlibrary
+ * @compile -XDignore.symbol.file ManyNewInstanceAnonTest.java
+ * @run main ClassFileInstaller ManyNewInstanceAnonTest
+ * @run main/othervm -Xbootclasspath/a:. -Xverify:all ManyNewInstanceAnonTest
+ * @run main/othervm -Xbootclasspath/a:. -Xverify:all -Dsun.reflection.noInflation=true ManyNewInstanceAnonTest
+ */
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import sun.misc.Unsafe;
+
+public class ManyNewInstanceAnonTest {
+
+ static final int REPS = 20;
+ static final Class<?> klass = ManyNewInstanceAnonTest.class;
+
+ public static void main(String[] args) throws Exception {
+ Class<?> c = Unsafe.getUnsafe().defineAnonymousClass(klass, readClassFile(), null);
+ for (int i = 0; i < REPS; ++i) {
+ System.out.printf("%d: %s\n", i, c.newInstance());
+ }
+ System.out.println("Passed.");
+ }
+
+ private static byte[] readClassFile() throws Exception {
+ try (InputStream in = klass.getResourceAsStream(klass.getSimpleName() + ".class");
+ ByteArrayOutputStream out = new ByteArrayOutputStream())
+ {
+ int b;
+ while ((b = in.read()) != -1) {
+ out.write(b);
+ }
+ return out.toByteArray();
+ }
+ }
+}
--- a/jdk/test/sun/security/pkcs11/KeyStore/SecretKeysBasic.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/security/pkcs11/KeyStore/SecretKeysBasic.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2013 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
--- a/jdk/test/sun/security/pkcs11/ec/TestECGenSpec.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/security/pkcs11/ec/TestECGenSpec.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
--- a/jdk/test/sun/security/pkcs11/ec/TestKeyFactory.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/security/pkcs11/ec/TestKeyFactory.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2013 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/AsyncSSLSocketClose.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/AsyncSSLSocketClose.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,15 +21,21 @@
* questions.
*/
+//
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+//
+// The test may timeout occasionally on heavy loaded system because
+// there are lot of TLS transactions involved. Frequent timeout(s) should
+// be analyzed further.
+//
+
/*
* @test
* @bug 6447412
* @summary Issue with socket.close() for ssl sockets when poweroff on
* other system
* @run main/othervm AsyncSSLSocketClose
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
*/
import javax.net.ssl.*;
--- a/jdk/test/sun/security/ssl/javax/net/ssl/TLSv12/DisabledShortRSAKeys.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/security/ssl/javax/net/ssl/TLSv12/DisabledShortRSAKeys.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -152,12 +152,9 @@
serverReady = true;
try (SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept()) {
- InputStream sslIS = sslSocket.getInputStream();
- OutputStream sslOS = sslSocket.getOutputStream();
-
- sslIS.read();
- sslOS.write('A');
- sslOS.flush();
+ try (InputStream sslIS = sslSocket.getInputStream()) {
+ sslIS.read();
+ }
throw new Exception(
"RSA keys shorter than 1024 bits should be disabled");
@@ -194,12 +191,10 @@
sslSocket.setEnabledCipherSuites(
new String[] {"TLS_DHE_RSA_WITH_AES_128_CBC_SHA"});
- InputStream sslIS = sslSocket.getInputStream();
- OutputStream sslOS = sslSocket.getOutputStream();
-
- sslOS.write('B');
- sslOS.flush();
- sslIS.read();
+ try (OutputStream sslOS = sslSocket.getOutputStream()) {
+ sslOS.write('B');
+ sslOS.flush();
+ }
throw new Exception(
"RSA keys shorter than 1024 bits should be disabled");
@@ -317,6 +312,7 @@
* Fork off the other side, then do your work.
*/
DisabledShortRSAKeys() throws Exception {
+ Exception startException = null;
try {
if (separateServerThread) {
startServer(true);
@@ -326,16 +322,20 @@
startServer(false);
}
} catch (Exception e) {
- // swallow for now. Show later
+ startException = e;
}
/*
* Wait for other side to close down.
*/
if (separateServerThread) {
- serverThread.join();
+ if (serverThread != null) {
+ serverThread.join();
+ }
} else {
- clientThread.join();
+ if (clientThread != null) {
+ clientThread.join();
+ }
}
/*
@@ -344,36 +344,44 @@
*/
Exception local;
Exception remote;
- String whichRemote;
if (separateServerThread) {
remote = serverException;
local = clientException;
- whichRemote = "server";
} else {
remote = clientException;
local = serverException;
- whichRemote = "client";
+ }
+
+ Exception exception = null;
+
+ /*
+ * Check various exception conditions.
+ */
+ if ((local != null) && (remote != null)) {
+ // If both failed, return the curthread's exception.
+ local.initCause(remote);
+ exception = local;
+ } else if (local != null) {
+ exception = local;
+ } else if (remote != null) {
+ exception = remote;
+ } else if (startException != null) {
+ exception = startException;
}
/*
- * If both failed, return the curthread's exception, but also
- * print the remote side Exception
+ * If there was an exception *AND* a startException,
+ * output it.
*/
- if ((local != null) && (remote != null)) {
- System.out.println(whichRemote + " also threw:");
- remote.printStackTrace();
- System.out.println();
- throw local;
+ if (exception != null) {
+ if (exception != startException && startException != null) {
+ exception.addSuppressed(startException);
+ }
+ throw exception;
}
- if (remote != null) {
- throw remote;
- }
-
- if (local != null) {
- throw local;
- }
+ // Fall-through: no exception to throw!
}
void startServer(boolean newThread) throws Exception {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/tools/jarsigner/CertChainUnclosed.java Wed Jul 05 19:22:42 2017 +0200
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8027991
+ * @summary InputStream should be closed in sun.security.tools.jarsigner.Main
+ * @run main/othervm CertChainUnclosed
+ */
+
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Locale;
+
+public class CertChainUnclosed {
+
+ public static void main(String[] args) throws Exception {
+ String os = java.security.AccessController.doPrivileged(
+ new sun.security.action.GetPropertyAction("os.name"));
+ if (!os.toUpperCase(Locale.US).contains("WINDOWS")) {
+ System.out.println("Not Windows. Skip test.");
+ return;
+ }
+
+ kt("-genkeypair -alias a -dname CN=A");
+ kt("-exportcert -file a.crt -alias a");
+ Files.copy(Paths.get(System.getProperty("test.src"), "AlgOptions.jar"),
+ Paths.get("test.jar"));
+ sun.security.tools.jarsigner.Main.main(
+ "-storepass changeit -keystore jks -certchain a.crt test.jar a"
+ .split(" "));
+
+ // On Windows, if the file is still opened (or not if GC was
+ // performed) and the next line would fail
+ Files.delete(Paths.get("a.crt"));
+ }
+
+ static void kt(String args) throws Exception {
+ sun.security.tools.keytool.Main.main(
+ ("-keystore jks -storepass changeit -keypass changeit -keyalg rsa "
+ + args).split(" "));
+ }
+}
--- a/jdk/test/sun/text/resources/LocaleData Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/text/resources/LocaleData Wed Jul 05 19:22:42 2017 +0200
@@ -7687,3 +7687,6 @@
# bug 6931564
LocaleNames/sv/ZA=Sydafrika
+
+# bug 8027695
+FormatData/sv_SE/NumberPatterns/2=#,##0 %
--- a/jdk/test/sun/text/resources/LocaleDataTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/text/resources/LocaleDataTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -35,7 +35,7 @@
* 6645405 6650730 6910489 6573250 6870908 6585666 6716626 6914413 6916787
* 6919624 6998391 7019267 7020960 7025837 7020583 7036905 7066203 7101495
* 7003124 7085757 7028073 7171028 7189611 8000983 7195759 8004489 8006509
- * 7114053 7074882 7040556 8013836 8021121 6192407 6931564
+ * 7114053 7074882 7040556 8013836 8021121 6192407 6931564 8027695
* @summary Verify locale data
*
*/
--- a/jdk/test/sun/tools/jstatd/JstatdTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/tools/jstatd/JstatdTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -291,6 +291,8 @@
launcher.addVMArg("-XX:+UsePerfData");
String testSrc = System.getProperty("test.src");
File policy = new File(testSrc, "all.policy");
+ assertTrue(policy.exists() && policy.isFile(),
+ "Security policy " + policy.getAbsolutePath() + " does not exist or not a file");
launcher.addVMArg("-Djava.security.policy=" + policy.getAbsolutePath());
if (port != null) {
launcher.addToolArg("-p");
--- a/jdk/test/sun/util/resources/Locale/Bug6275682.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/sun/util/resources/Locale/Bug6275682.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,3 +1,26 @@
+/*
+ * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
/**
@test
@summary Verifying that the language names starts with lowercase in spanish
--- a/jdk/test/tools/launcher/DiacriticTest.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/tools/launcher/DiacriticTest.java Wed Jul 05 19:22:42 2017 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
--- a/jdk/test/vm/verifier/defaultMethods/DefaultMethodRegressionTests.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/vm/verifier/defaultMethods/DefaultMethodRegressionTests.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- a/jdk/test/vm/verifier/defaultMethods/DefaultMethodRegressionTestsRun.java Thu Nov 14 23:33:06 2013 -0800
+++ b/jdk/test/vm/verifier/defaultMethods/DefaultMethodRegressionTestsRun.java Wed Jul 05 19:22:42 2017 +0200
@@ -4,9 +4,7 @@
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or